From 7e462ffe52bfba9eca9dcfc846c84dbf1b5e1076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 28 Jul 2026 19:27:57 +0200 Subject: [PATCH] Normalize the quantity before calculating the number of digits when parsing UBL Trailing zero in the quantity should not require a bigger precision for the unit. Closes #14973 --- modules/edocument_ubl/edocument.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/edocument_ubl/edocument.py b/modules/edocument_ubl/edocument.py index ddd3f190a9..17b103c088 100644 --- a/modules/edocument_ubl/edocument.py +++ b/modules/edocument_ubl/edocument.py @@ -460,7 +460,9 @@ class Invoice(Model): if (invoiced_quantity := invoice_line.find('./{*}InvoicedQuantity') ) is not None: line.quantity = float(invoiced_quantity.text) - digits = -Decimal(invoiced_quantity.text).as_tuple().exponent + digits = ( + -Decimal(invoiced_quantity.text) + .normalize().as_tuple().exponent) if (unit_code := invoiced_quantity.get('unitCode')) not in { None, 'ZZ', 'XZZ'}: try: @@ -771,7 +773,9 @@ class Invoice(Model): if (credited_quantity := credit_note_line.find('./{*}CreditedQuantity') ) is not None: line.quantity = -float(credited_quantity.text) - digits = -Decimal(credited_quantity.text).as_tuple().exponent + digits = ( + -Decimal(credited_quantity.text) + .normalize().as_tuple().exponent) if (unit_code := credited_quantity.get('unitCode')) not in { None, 'ZZ', 'XZZ'}: try: