From 1e1e511cea3ce2488df5a7334f4a09dd3dae14c5 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Tue, 10 Dec 2019 12:41:26 +0000 Subject: [PATCH] [FIX] call _get_product_accounts() everywhere closes odoo/odoo#41632 Signed-off-by: Laurent Smet --- addons/account/models/product.py | 7 +++++++ addons/point_of_sale/models/pos_session.py | 6 +++--- addons/sale/wizard/sale_make_invoice_advance.py | 2 +- addons/stock_account/models/product.py | 4 ++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/addons/account/models/product.py b/addons/account/models/product.py index 52697f4e8aa..974bd0acb7c 100644 --- a/addons/account/models/product.py +++ b/addons/account/models/product.py @@ -52,3 +52,10 @@ class ProductTemplate(models.Model): if not fiscal_pos: fiscal_pos = self.env['account.fiscal.position'] return fiscal_pos.map_accounts(accounts) + + +class ProductProduct(models.Model): + _inherit = "product.product" + + def _get_product_accounts(self): + return self.product_tmpl_id._get_product_accounts() diff --git a/addons/point_of_sale/models/pos_session.py b/addons/point_of_sale/models/pos_session.py index ed6c4d23932..d5f61191214 100644 --- a/addons/point_of_sale/models/pos_session.py +++ b/addons/point_of_sale/models/pos_session.py @@ -445,7 +445,7 @@ class PosSession(models.Model): ('product_id.categ_id.property_valuation', '=', 'real_time') ]) for move in stock_moves: - exp_key = move.product_id.property_account_expense_id or move.product_id.categ_id.property_account_expense_categ_id + exp_key = move.product_id._get_product_accounts()['expense'] out_key = move.product_id.categ_id.property_stock_account_output_categ_id amount = -sum(move.stock_valuation_layer_ids.mapped('value')) stock_expense[exp_key] = self._update_amounts(stock_expense[exp_key], {'amount': amount}, move.picking_id.date) @@ -467,7 +467,7 @@ class PosSession(models.Model): ('product_id.categ_id.property_valuation', '=', 'real_time'), ]) for move in stock_moves: - exp_key = move.product_id.property_account_expense_id or move.product_id.categ_id.property_account_expense_categ_id + exp_key = move.product_id._get_product_accounts()['expense'] out_key = move.product_id.categ_id.property_stock_account_output_categ_id amount = -sum(move.stock_valuation_layer_ids.mapped('value')) stock_expense[exp_key] = self._update_amounts(stock_expense[exp_key], {'amount': amount}, move.picking_id.date) @@ -600,7 +600,7 @@ class PosSession(models.Model): """ def get_income_account(order_line): product = order_line.product_id - income_account = product.with_company(order_line.company_id).property_account_income_id or product.categ_id.with_company(order_line.company_id).property_account_income_categ_id + income_account = product.with_company(order_line.company_id)._get_product_accounts()['income'] if not income_account: raise UserError(_('Please define income account for this product: "%s" (id:%d).') % (product.name, product.id)) diff --git a/addons/sale/wizard/sale_make_invoice_advance.py b/addons/sale/wizard/sale_make_invoice_advance.py index 515366581a1..ba2937c884b 100644 --- a/addons/sale/wizard/sale_make_invoice_advance.py +++ b/addons/sale/wizard/sale_make_invoice_advance.py @@ -22,7 +22,7 @@ class SaleAdvancePaymentInv(models.TransientModel): @api.model def _default_deposit_account_id(self): - return self._default_product_id().property_account_income_id + return self._default_product_id()._get_product_accounts()['income'] @api.model def _default_deposit_taxes_id(self): diff --git a/addons/stock_account/models/product.py b/addons/stock_account/models/product.py index e9888e6b49b..be1048319a2 100644 --- a/addons/stock_account/models/product.py +++ b/addons/stock_account/models/product.py @@ -101,7 +101,7 @@ class ProductProduct(models.Model): if 'standard_price' in vals and not self.env.context.get('disable_auto_svl'): for product_product in self: if product_product.cost_method != 'fifo': - counterpart_account_id = product_product.property_account_expense_id.id or product_product.categ_id.property_account_expense_categ_id.id + counterpart_account_id = product_product._get_product_accounts()['expense'].id product_product._change_standard_price(vals['standard_price'], counterpart_account_id) return super(ProductProduct, self).write(vals) @@ -460,7 +460,7 @@ class ProductProduct(models.Model): product_accounts = {product.id: product.product_tmpl_id.get_product_accounts() for product in stock_valuation_layers.mapped('product_id')} for out_stock_valuation_layer in stock_valuation_layers: product = out_stock_valuation_layer.product_id - expense_account = product.property_account_expense_id or product.categ_id.property_account_expense_categ_id + expense_account = product._get_product_accounts()['expense'] if not expense_account: raise UserError(_('Please define an expense account for this product: "%s" (id:%d) - or for its category: "%s".') % (product.name, product.id, self.name)) if not product_accounts[product.id].get('stock_valuation'):