From 9ea183bc39d5cdfb7f8e9f16f35da89bffe1fdb4 Mon Sep 17 00:00:00 2001 From: MerlinGuillaume Date: Fri, 3 Mar 2023 12:30:54 +0000 Subject: [PATCH] [FIX] account: use currency to format tax An error is thrown when trying to edit the tax in a vendor bill Steps to reproduce: 1. Install Accounting 2. Go to Accounting and create a new Vendor Bill 3. Add product 'Large Cabinet' to the bill 4. Click on the pencil icon next to the tax in the total amount 5. An error is thrown Solution: Partially revert the erroneous fix in TaxTotalsComponent by adding the currency getter. If there is no currency, floatFormat will fallback on a decimal precision of 2. Problem: https://github.com/odoo/odoo/pull/108412 removed `currency` from TaxTotalsComponent. This value was passed in the props of TaxGroupComponent so it was undefined. opw-3212170 closes odoo/odoo#114362 X-original-commit: 59a1d1f825cfbc1f720cccb80de212f6ee6d5404 Signed-off-by: Brice Bartoletti (bib) --- .../static/src/components/tax_totals/tax_totals.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/account/static/src/components/tax_totals/tax_totals.js b/addons/account/static/src/components/tax_totals/tax_totals.js index ea45af337fe..cf1053ed746 100644 --- a/addons/account/static/src/components/tax_totals/tax_totals.js +++ b/addons/account/static/src/components/tax_totals/tax_totals.js @@ -4,6 +4,7 @@ import { formatFloat, formatMonetary } from "@web/views/fields/formatters"; import { parseFloat } from "@web/views/fields/parsers"; import { standardFieldProps } from "@web/views/fields/standard_field_props"; import { registry } from "@web/core/registry"; +import { session } from "@web/session"; const { Component, onPatched, onWillUpdateProps, useRef, useState } = owl; @@ -17,7 +18,7 @@ class TaxGroupComponent extends Component { onPatched(() => { if (this.state.value === "edit") { const { taxGroup, currency } = this.props; - const newVal = formatFloat(taxGroup.tax_group_amount, { digits: currency.digits }); + const newVal = formatFloat(taxGroup.tax_group_amount, { digits: (currency && currency.digits) }); this.inputTax.el.value = newVal; this.inputTax.el.focus(); // Focus the input } @@ -117,7 +118,12 @@ export class TaxTotalsComponent extends Component { } get currencyId() { - return this.props.record.data.currency_id; + const recordCurrency = this.props.record.data.currency_id; + return recordCurrency && recordCurrency[0]; + } + + get currency() { + return session.currencies[this.currencyId]; } invalidate() {