diff --git a/addons/purchase/models/account_invoice.py b/addons/purchase/models/account_invoice.py index 0d8d9ec9bf1..99d51b28b7d 100644 --- a/addons/purchase/models/account_invoice.py +++ b/addons/purchase/models/account_invoice.py @@ -67,6 +67,27 @@ class AccountMove(models.Model): self._onchange_currency() self.invoice_partner_bank_id = self.bank_partner_id.bank_ids and self.bank_partner_id.bank_ids[0] + @api.onchange('partner_id', 'company_id') + def _onchange_partner_id(self): + res = super(AccountMove, self)._onchange_partner_id() + if not self.env.context.get('default_journal_id') and self.partner_id and\ + self.move_type in ['in_invoice', 'in_refund'] and\ + self.currency_id != self.partner_id.property_purchase_currency_id and\ + self.partner_id.property_purchase_currency_id.id: + journal_domain = [ + ('type', '=', 'purchase'), + ('company_id', '=', self.company_id.id), + ('currency_id', '=', self.partner_id.property_purchase_currency_id.id), + ] + default_journal_id = self.env['account.journal'].search(journal_domain, limit=1) + if default_journal_id: + self.journal_id = default_journal_id + if self.env.context.get('default_currency_id'): + self.currency_id = self.env.context['default_currency_id'] + if self.partner_id.property_purchase_currency_id: + self.currency_id = self.partner_id.property_purchase_currency_id + return res + @api.model_create_multi def create(self, vals_list): # OVERRIDE