diff --git a/membership_delegated_partner/models/account_invoice.py b/membership_delegated_partner/models/account_invoice.py index 89e465b2..07f5f8a3 100644 --- a/membership_delegated_partner/models/account_invoice.py +++ b/membership_delegated_partner/models/account_invoice.py @@ -1,5 +1,6 @@ # Copyright 2017 Tecnativa - David Vidal # Copyright 2018 Tecnativa - Pedro M. Baeza +# Copyright 2019 Onestein - Andrea Stirpe # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, fields, models @@ -24,8 +25,14 @@ def write(self, vals): member_line = self.env['membership.membership_line'].search( [('account_invoice_line', '=', line.id)]) if member_line: - member_line.partner = self.env['res.partner'].browse( - vals['delegated_member_id']) + if vals['delegated_member_id']: + member_line.partner = self.env['res.partner'].browse( + vals['delegated_member_id']) + else: + ctx = self.env.context.copy() + ctx['force_reassign_partner'] = True + partner = line.invoice_id.partner_id + member_line.with_context(ctx).partner = partner return super(AccountInvoice, self).write(vals) @api.model diff --git a/membership_delegated_partner/models/membership_line.py b/membership_delegated_partner/models/membership_line.py index 1509b335..56239b67 100644 --- a/membership_delegated_partner/models/membership_line.py +++ b/membership_delegated_partner/models/membership_line.py @@ -1,4 +1,5 @@ # Copyright 2017 Tecnativa - David Vidal +# Copyright 2019 Onestein - Andrea Stirpe # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import api, models @@ -29,5 +30,8 @@ def write(self, vals): else: inv_line = self.account_invoice_line if inv_line and inv_line.invoice_id.delegated_member_id: - vals['partner'] = inv_line.invoice_id.delegated_member_id.id + if self.env.context.get('force_reassign_partner'): + vals['partner'] = inv_line.invoice_id.partner_id.id + else: + vals['partner'] = inv_line.invoice_id.delegated_member_id.id return super(MembershipLine, self).write(vals) diff --git a/membership_delegated_partner/readme/CONTRIBUTORS.rst b/membership_delegated_partner/readme/CONTRIBUTORS.rst index fe799507..29633fe6 100644 --- a/membership_delegated_partner/readme/CONTRIBUTORS.rst +++ b/membership_delegated_partner/readme/CONTRIBUTORS.rst @@ -3,3 +3,7 @@ * Pedro M. Baeza * Rafael Blasco * David Vidal + +* `Onestein `__: + + * Andrea Stirpe diff --git a/membership_delegated_partner/tests/test_membership_delegate.py b/membership_delegated_partner/tests/test_membership_delegate.py index 7a760ba8..b9f58b3e 100644 --- a/membership_delegated_partner/tests/test_membership_delegate.py +++ b/membership_delegated_partner/tests/test_membership_delegate.py @@ -1,4 +1,5 @@ # Copyright 2017 Tecnativa - David Vidal +# Copyright 2019 Onestein - Andrea Stirpe # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo.tests import common @@ -84,6 +85,10 @@ def test_02_change_delegated_member(self): self.assertTrue(self.partner2.member_lines, 'Delegate gets the line') self.assertFalse(self.partner1.member_lines, 'Partner drops the line') + invoice.delegated_member_id = False + self.assertFalse(self.partner2.member_lines, 'Delegate drops the line') + self.assertTrue(self.partner1.member_lines, 'Partner gets the line') + def test_03_refund_invoice_delegated_partner(self): """ A refund should inherit the delegated partner in the invoice """ invoice = self.env['account.invoice'].create({