summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwan <wan@odoo.com>2019-10-09 12:19:21 +0000
committerfw-bot <otis@odoo.com>2019-11-20 17:36:09 +0000
commit0ca97ae3d6499b36b6fcb34bbe560d445e8f0350 (patch)
treecf939675a3a976782951a3a27d2bafc95234cd4d
parent730309caa5b0b47ca30af15a2632e18f34e44482 (diff)
[FIX] account_analytic_default: compute instead of default_get + onchange
Task 2075249 The commit dd627b9 added a default_get to retrieve the default analytic values. However, it was depending on self, which cannot be done in a api.model In this commit, we use an editable compute in order to update the analytic values in all the cases, and to reduce the duplication of the code. X-original-commit: 69bf61bbc991eee96e673316ae8c37e98e1b8a1d
-rw-r--r--addons/account_analytic_default/models/account_analytic_default.py49
1 files changed, 17 insertions, 32 deletions
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