From 75bd62aeceba898e4bb4a4f9a699b9322e6f167d Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Wed, 19 Dec 2018 14:42:22 +0100 Subject: [PATCH] [account_banking_mandate] fixes to support multicompany --- .../models/account_banking_mandate.py | 22 ++++++++++++++++--- .../models/account_invoice.py | 3 ++- account_banking_mandate/tests/test_mandate.py | 3 +++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/account_banking_mandate/models/account_banking_mandate.py b/account_banking_mandate/models/account_banking_mandate.py index d45a98633..05e51dac5 100644 --- a/account_banking_mandate/models/account_banking_mandate.py +++ b/account_banking_mandate/models/account_banking_mandate.py @@ -157,11 +157,27 @@ class AccountBankingMandate(models.Model): 'account.banking.mandate') or 'New' return super(AccountBankingMandate, self).create(vals) - @api.multi + @api.onchange('company_id') + def _onchange_company_id(self): + res = {} + partner_domain = self._get_default_partner_bank_id_domain() + if self.company_id: + if self.partner_bank_id and \ + self.company_id and \ + self.partner_bank_id.company_id and \ + self.partner_bank_id.company_id != self.company_id: + self.partner_bank_id = False + partner_domain.append(('company_id', '=', self.company_id.id)) + domain = {'partner_bank_id': partner_domain} + else: + domain = { + 'partner_bank_id': partner_domain} + res['domain'] = domain + return res + @api.onchange('partner_bank_id') def mandate_partner_bank_change(self): - for mandate in self: - mandate.partner_id = mandate.partner_bank_id.partner_id + self.partner_id = self.partner_bank_id.partner_id @api.multi def validate(self): diff --git a/account_banking_mandate/models/account_invoice.py b/account_banking_mandate/models/account_invoice.py index 6d67848dc..d5f4b8a0c 100644 --- a/account_banking_mandate/models/account_invoice.py +++ b/account_banking_mandate/models/account_invoice.py @@ -66,7 +66,8 @@ class AccountInvoice(models.Model): def set_mandate(self): if self.payment_mode_id.payment_method_id.mandate_required: - self.mandate_id = self.partner_id.valid_mandate_id + self.mandate_id = self.partner_id.with_context( + force_company=self.company_id.id).valid_mandate_id else: self.mandate_id = False diff --git a/account_banking_mandate/tests/test_mandate.py b/account_banking_mandate/tests/test_mandate.py index 74d0b6dae..b20c44cd1 100644 --- a/account_banking_mandate/tests/test_mandate.py +++ b/account_banking_mandate/tests/test_mandate.py @@ -72,6 +72,9 @@ class TestMandate(TransactionCase): mandate.partner_bank_id = bank_account_2 mandate.mandate_partner_bank_change() self.assertEquals(mandate.partner_id, bank_account_2.partner_id) + mandate.company_id = self.company_2 + mandate._onchange_company_id() + self.assertFalse(mandate.partner_bank_id) def test_constrains_01(self): bank_account = self.env.ref('account_payment_mode.res_partner_12_iban')