[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) <nim@odoo.com>
Signed-off-by: bon-odoo <nboulif@users.noreply.github.com>
This commit is contained in:
Nasreddin (bon)
2020-07-13 15:46:45 +00:00
parent 099291d117
commit e00361997b
+5 -2
View File
@@ -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()