From e00361997ba79639a2c5701bd6c2191400732028 Mon Sep 17 00:00:00 2001 From: "Nasreddin (bon)" Date: Mon, 6 Jul 2020 13:31:51 +0000 Subject: [PATCH] [FIX] account: disable default analytic on receivable/payable Issue - Install "Accounting" and "Account Analytic Defaults". - Create an Analytic Tag and use the distribution (eg.: 60/40) - Create an Analytic Defaults for a specific partner. with the Analytc tag just created. - Create a bill, select the the same partner as the Analytic Defaults and add a new Invoice Line with a price (eg.: 1000). The tag is applied to the payable account, which is wrong and it leads to an analytic inconsistency. Solution Apply analytic tags only on move lines not excluded from invoice tab. opw-2269757 closes odoo/odoo#54410 X-original-commit: 6e0bb7a24cad46891c80ddc384311dd81eca1e82 Signed-off-by: Nicolas Martinelli (nim) Signed-off-by: bon-odoo --- addons/account/models/account_move.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index d9936688739..b7a706ab0ab 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -2988,6 +2988,8 @@ class AccountMoveLine(models.Model): @api.depends('product_id', 'account_id', 'partner_id', 'date_maturity') def _compute_analytic_account(self): for record in self: + record.analytic_account_id = (record._origin or record).analytic_account_id + record.analytic_tag_ids = (record._origin or record).analytic_tag_ids rec = self.env['account.analytic.default'].account_get( 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, @@ -2996,8 +2998,9 @@ class AccountMoveLine(models.Model): date=record.date_maturity, company_id=record.move_id.company_id.id ) - record.analytic_account_id = (record._origin or record).analytic_account_id or rec.analytic_id - record.analytic_tag_ids = (record._origin or record).analytic_tag_ids or rec.analytic_tag_ids + if rec and not record.exclude_from_invoice_tab: + record.analytic_account_id = rec.analytic_id + record.analytic_tag_ids = rec.analytic_tag_ids def _get_price_total_and_subtotal(self, price_unit=None, quantity=None, discount=None, currency=None, product=None, partner=None, taxes=None, move_type=None): self.ensure_one()