diff --git a/addons/account_analytic_default/models/account_analytic_default.py b/addons/account_analytic_default/models/account_analytic_default.py index 862d228fcdd..5e340ab468a 100644 --- a/addons/account_analytic_default/models/account_analytic_default.py +++ b/addons/account_analytic_default/models/account_analytic_default.py @@ -68,38 +68,23 @@ class AccountAnalyticDefault(models.Model): class AccountMoveLine(models.Model): _inherit = 'account.move.line' - @api.model - def default_get(self, fields_list): - defaults = super().default_get(fields_list) - if {'account_analytic_id', 'analytic_tag_ids'} & set(fields_list): + # Overload of fields defined in account + analytic_account_id = fields.Many2one(compute="_compute_analytic_account", store=True, readonly=False) + analytic_tag_ids = fields.Many2many(compute="_compute_analytic_account", store=True, readonly=False) + + @api.depends('product_id', 'account_id', 'partner_id', 'date_maturity') + def _compute_analytic_account(self): + for record in self: + record.analytic_account_id = record.analytic_account_id or False + record.analytic_tag_ids = record.analytic_tag_ids or False rec = self.env['account.analytic.default'].account_get( - product_id=self.product_id.id, - partner_id=self.move_id.commercial_partner_id.id, - user_id=self.move_id.user_id.id or self.env.uid, - date=fields.Date.today(), - company_id=self.company_id.id, + product_id=record.product_id.id, + partner_id=record.partner_id.commercial_partner_id.id or record.move_id.partner_id.commercial_partner_id.id, + account_id=record.account_id.id, + user_id=record.env.uid, + date=record.date_maturity, + company_id=record.move_id.company_id.id ) if rec: - if 'account_analytic_id' in fields_list: - defaults.update({ - 'account_analytic_id': rec.analytic_id.id, - }) - if 'analytic_tag_ids' in fields_list: - defaults.update({ - 'analytic_tag_ids': rec.analytic_tag_ids.ids, - }) - return defaults - - @api.onchange('product_id', 'account_id') - def _onchange_product_id_account_id(self): - rec = self.env['account.analytic.default'].account_get( - product_id=self.product_id.id, - partner_id=self.partner_id.id, - account_id=self.account_id.id, - user_id=self.env.uid, - date=self.date_maturity, - company_id=self.move_id.company_id.id - ) - if rec: - self.analytic_account_id = rec.analytic_id.id - self.analytic_tag_ids = rec.analytic_tag_ids.ids + record.analytic_account_id = rec.analytic_id + record.analytic_tag_ids = rec.analytic_tag_ids