From dd627b9698d18fe8a0bbf56e07edcc30f8af0117 Mon Sep 17 00:00:00 2001 From: Samuel Degueldre Date: Tue, 17 Sep 2019 12:45:11 +0000 Subject: [PATCH] [FIX] account_analytic_default: fix ocr not using default analytic account PURPOSE: Default analytic account should be used wherever possible. This wasn't the case because the module didn't implement a default_get and only filled the fields on product_id change, which isn't set by the OCR task-2067097 opw-2068110 closes odoo/odoo#37389 X-original-commit: 2c450015154f8ba2384fb1f0ad1d4075785009c0 Signed-off-by: Nicolas Martinelli (nim) --- .../models/account_analytic_default.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/addons/account_analytic_default/models/account_analytic_default.py b/addons/account_analytic_default/models/account_analytic_default.py index 707e9920ac0..8f6fb108ca3 100644 --- a/addons/account_analytic_default/models/account_analytic_default.py +++ b/addons/account_analytic_default/models/account_analytic_default.py @@ -63,6 +63,28 @@ class AccountAnalyticDefault(models.Model): class AccountInvoiceLine(models.Model): _inherit = "account.invoice.line" + @api.model + def default_get(self, fields_list): + defaults = super(AccountInvoiceLine, self).default_get(fields_list) + if set(['account_analytic_id', 'analytic_tag_ids']) & set(fields_list): + rec = self.env['account.analytic.default'].account_get( + self.product_id.id, + self.invoice_id.commercial_partner_id.id, + self.invoice_id.user_id.id or self.env.uid, + fields.Date.today(), + company_id=self.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') def _onchange_product_id(self): res = super(AccountInvoiceLine, self)._onchange_product_id()