From 910456b3974e1eb9a0ef087a44be8e4ac00d2e4f Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Mon, 12 Jun 2023 07:45:36 +0000 Subject: [PATCH] [FIX] account: onchange2() for account.move closes odoo/odoo#127400 Related: odoo/enterprise#43681 Signed-off-by: Raphael Collet --- addons/account/models/account_move.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 754d2f42de3..c455b585874 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -2417,6 +2417,18 @@ class AccountMove(models.Model): with self.env.protecting([self._fields[fname] for fname in field_name or []], self): return super().onchange(values, field_name, field_onchange) + def onchange2(self, values, field_names, fields_spec): + # Since only one field can be changed at the same time (the record is + # saved when changing tabs) we can avoid building the snapshots for the + # other field + if 'line_ids' in field_names: + values = {key: val for key, val in values.items() if key != 'invoice_line_ids'} + fields_spec = {key: val for key, val in fields_spec.items() if key != 'invoice_line_ids'} + elif 'invoice_line_ids' in field_names: + values = {key: val for key, val in values.items() if key != 'line_ids'} + fields_spec = {key: val for key, val in fields_spec.items() if key != 'line_ids'} + return super().onchange2(values, field_names, fields_spec) + # ------------------------------------------------------------------------- # RECONCILIATION METHODS # -------------------------------------------------------------------------