From 57f71fa2666af591a8d3d28af65fcfab8a7d3785 Mon Sep 17 00:00:00 2001 From: Florent de Labarre <florent.mirieu@gmail.com> Date: Thu, 21 Jul 2022 06:42:06 +0000 Subject: [PATCH] [FIX] account: fpo map account is not used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Before this commit, the fiscal position is not used to determine account. closes odoo/odoo#135289 X-original-commit: 4a4477593b3cecc3078315fca5a4b9f2daa83add Signed-off-by: Cedric Snauwaert <csn@odoo.com> Co-authored-by: Miquel Raïch <miquel.raich@forgeflow.com> --- addons/account/wizard/accrued_orders.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addons/account/wizard/accrued_orders.py b/addons/account/wizard/accrued_orders.py index c81470b13c97..7b5e1a8a31c2 100644 --- a/addons/account/wizard/accrued_orders.py +++ b/addons/account/wizard/accrued_orders.py @@ -109,6 +109,13 @@ class AccruedExpenseRevenue(models.TransientModel): }, }) + def _get_computed_account(self, order, product, is_purchase): + accounts = product.with_company(order.company_id).product_tmpl_id.get_product_accounts(fiscal_pos=order.fiscal_position_id) + if is_purchase: + return accounts['expense'] + else: + return accounts['income'] + def _compute_move_vals(self): def _get_aml_vals(order, balance, amount_currency, account_id, label="", analytic_distribution=None): if not is_purchase: @@ -151,10 +158,7 @@ class AccruedExpenseRevenue(models.TransientModel): if len(orders) == 1 and self.amount and order.order_line: total_balance = self.amount order_line = order.order_line[0] - if is_purchase: - account = order_line.product_id.property_account_expense_id or order_line.product_id.categ_id.property_account_expense_categ_id - else: - account = order_line.product_id.property_account_income_id or order_line.product_id.categ_id.property_account_income_categ_id + account = self._get_computed_account(order, order_line.product_id, is_purchase) distribution = order_line.analytic_distribution if order_line.analytic_distribution else {} if not is_purchase and order.analytic_account_id: analytic_account_id = str(order.analytic_account_id.id) @@ -185,13 +189,13 @@ class AccruedExpenseRevenue(models.TransientModel): ) for order_line in lines: if is_purchase: - account = order_line.product_id.property_account_expense_id or order_line.product_id.categ_id.property_account_expense_categ_id + account = self._get_computed_account(order, order_line.product_id, is_purchase) amount = self.company_id.currency_id.round(order_line.qty_to_invoice * order_line.price_unit / rate) amount_currency = order_line.currency_id.round(order_line.qty_to_invoice * order_line.price_unit) fnames = ['qty_to_invoice', 'qty_received', 'qty_invoiced', 'invoice_lines'] label = _('%s - %s; %s Billed, %s Received at %s each', order.name, _ellipsis(order_line.name, 20), order_line.qty_invoiced, order_line.qty_received, formatLang(self.env, order_line.price_unit, currency_obj=order.currency_id)) else: - account = order_line.product_id.property_account_income_id or order_line.product_id.categ_id.property_account_income_categ_id + account = self._get_computed_account(order, order_line.product_id, is_purchase) amount = self.company_id.currency_id.round(order_line.untaxed_amount_to_invoice / rate) amount_currency = order_line.untaxed_amount_to_invoice fnames = ['qty_to_invoice', 'untaxed_amount_to_invoice', 'qty_invoiced', 'qty_delivered', 'invoice_lines'] -- GitLab