[FIX] membership: change partner on invoice
- Go to a contact C1 > Membership tab > Buy membership - Create an invoice with the membership => It creates a membership line on C1 - Change the partner on the invoice to C2 The membership line and the membership status is not transfered to C2. We first need to recompute on C1, and we also need to explicitly write the new partner C2 on the membership lines. opw-1875673
This commit is contained in:
committed by
Nicolas Martinelli
parent
b8161ec806
commit
f46761caa8
@@ -22,6 +22,15 @@ class Invoice(models.Model):
|
||||
]).write({'date_cancel': fields.Date.today()})
|
||||
return super(Invoice, self).action_cancel()
|
||||
|
||||
@api.multi
|
||||
def write(self, vals):
|
||||
'''Change the partner on related membership_line'''
|
||||
if 'partner_id' in vals:
|
||||
self.env['membership.membership_line'].search([
|
||||
('account_invoice_line', 'in', self.mapped('invoice_line_ids').ids)
|
||||
]).write({'partner': vals['partner_id']})
|
||||
return super(Invoice, self).write(vals)
|
||||
|
||||
|
||||
class AccountInvoiceLine(models.Model):
|
||||
_inherit = 'account.invoice.line'
|
||||
|
||||
@@ -40,6 +40,7 @@ class Partner(models.Model):
|
||||
'member_lines.account_invoice_line.invoice_id.invoice_line_ids',
|
||||
'member_lines.account_invoice_line.invoice_id.payment_ids',
|
||||
'member_lines.account_invoice_line.invoice_id.payment_move_line_ids',
|
||||
'member_lines.account_invoice_line.invoice_id.partner_id',
|
||||
'free_member',
|
||||
'member_lines.date_to', 'member_lines.date_from',
|
||||
'associate_member.membership_state')
|
||||
@@ -105,12 +106,16 @@ class Partner(models.Model):
|
||||
if partner.membership_stop and today > partner.membership_stop:
|
||||
res[partner.id] = 'free' if partner.free_member else 'old'
|
||||
continue
|
||||
if partner.associate_member:
|
||||
res_state = partner.associate_member._membership_state()
|
||||
res[partner.id] = res_state[partner.associate_member.id]
|
||||
continue
|
||||
|
||||
s = 4
|
||||
if partner.member_lines:
|
||||
for mline in partner.member_lines:
|
||||
if (mline.date_to or '0000-00-00') >= today and (mline.date_from or '0000-00-00') <= today:
|
||||
if mline.account_invoice_line.invoice_id:
|
||||
if mline.account_invoice_line.invoice_id.partner_id == partner:
|
||||
mstate = mline.account_invoice_line.invoice_id.state
|
||||
if mstate == 'paid':
|
||||
s = 0
|
||||
@@ -145,9 +150,6 @@ class Partner(models.Model):
|
||||
res[partner.id] = 'none'
|
||||
if partner.free_member and s != 0:
|
||||
res[partner.id] = 'free'
|
||||
if partner.associate_member:
|
||||
res_state = partner.associate_member._membership_state()
|
||||
res[partner.id] = res_state[partner.associate_member.id]
|
||||
return res
|
||||
|
||||
@api.one
|
||||
|
||||
Reference in New Issue
Block a user