diff --git a/modules/purchase_trade/purchase.py b/modules/purchase_trade/purchase.py index e610c8c..a8da140 100755 --- a/modules/purchase_trade/purchase.py +++ b/modules/purchase_trade/purchase.py @@ -296,30 +296,38 @@ class Purchase(metaclass=PoolMeta): lc_date = fields.Date("LC date") product_origin = fields.Char("Origin") - def get_company_info(self,name): - return (self.company.party.name == 'MELYA') - - @fields.depends('party', '_parent_party.bank_accounts') - def on_change_with_bank_accounts(self, name=None): - if self.party and self.party.bank_accounts: - return [account.id for account in self.party.bank_accounts] - return [] + def get_company_info(self,name): + return (self.company.party.name == 'MELYA') + + def _get_default_bank_account(self): + if not self.party or not self.party.bank_accounts: + return None + party_bank_accounts = list(self.party.bank_accounts) + if self.currency: + for account in party_bank_accounts: + if account.currency == self.currency: + return account + return party_bank_accounts[0] + + @fields.depends('party', '_parent_party.bank_accounts') + def on_change_with_bank_accounts(self, name=None): + if self.party and self.party.bank_accounts: + return [account.id for account in self.party.bank_accounts] + return [] @fields.depends( 'company', 'party', 'invoice_party', 'payment_term', 'lines', - 'bank_account', '_parent_party.bank_accounts') - def on_change_party(self): - super().on_change_party() - if self.party and self.party.bank_accounts: - party_bank_accounts = list(self.party.bank_accounts) - if (not self.bank_account - or self.bank_account not in party_bank_accounts): - self.bank_account = party_bank_accounts[0] - else: - self.bank_account = None - - @classmethod - def default_wb(cls): + 'bank_account', '_parent_party.bank_accounts') + def on_change_party(self): + super().on_change_party() + self.bank_account = self._get_default_bank_account() + + @fields.depends('party', 'currency', '_parent_party.bank_accounts') + def on_change_currency(self): + self.bank_account = self._get_default_bank_account() + + @classmethod + def default_wb(cls): WB = Pool().get('purchase.weight.basis') wb = WB.search(['id','>',0]) if wb: diff --git a/modules/purchase_trade/sale.py b/modules/purchase_trade/sale.py index c6044f9..8671094 100755 --- a/modules/purchase_trade/sale.py +++ b/modules/purchase_trade/sale.py @@ -263,6 +263,16 @@ class Sale(metaclass=PoolMeta): def get_company_info(self,name): return (self.company.party.name == 'MELYA') + def _get_default_bank_account(self): + if not self.party or not self.party.bank_accounts: + return None + party_bank_accounts = list(self.party.bank_accounts) + if self.currency: + for account in party_bank_accounts: + if account.currency == self.currency: + return account + return party_bank_accounts[0] + @fields.depends('party', '_parent_party.bank_accounts') def on_change_with_bank_accounts(self, name=None): if self.party and self.party.bank_accounts: @@ -274,13 +284,11 @@ class Sale(metaclass=PoolMeta): 'payment_term', 'lines', 'bank_account', '_parent_party.bank_accounts') def on_change_party(self): super().on_change_party() - if self.party and self.party.bank_accounts: - party_bank_accounts = list(self.party.bank_accounts) - if (not self.bank_account - or self.bank_account not in party_bank_accounts): - self.bank_account = party_bank_accounts[0] - else: - self.bank_account = None + self.bank_account = self._get_default_bank_account() + + @fields.depends('party', 'currency', '_parent_party.bank_accounts') + def on_change_currency(self): + self.bank_account = self._get_default_bank_account() @classmethod def default_wb(cls):