Skip to content

Commit f48afa7

Browse files
committed
[FIX] l10n_it_edi: fix for line with ScontoMaggiorazione and price 0.00
This PR fixes the Error "division by zero" raised when importing a XML invoice with price_unit == 0 and ScontoMaggiorazione == 0 introduced by PR odoo#206238 closes odoo#219638 X-original-commit: cdd7939 Signed-off-by: Paolo Gatti (pgi) <pgi@odoo.com>
1 parent 827b126 commit f48afa7

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

addons/l10n_it_edi/models/account_move.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1473,7 +1473,7 @@ def _l10n_it_edi_import_line(self, element, move_line, extra_info=None):
14731473
move_line.tax_ids = [Command.set(fitting_taxes)]
14741474

14751475
# Discounts
1476-
if discounts := element.xpath('.//ScontoMaggiorazione'):
1476+
if (discounts := element.xpath('.//ScontoMaggiorazione')) and not float_is_zero(move_line.price_unit, precision_rounding=move_line.currency_id.rounding):
14771477
current_unit_price = move_line.price_unit
14781478
# We apply the discounts in the order they are found in the XML.
14791479
# The first discount is applied to the unit price, the second to the result of the first, etc.
@@ -1483,7 +1483,7 @@ def _l10n_it_edi_import_line(self, element, move_line, extra_info=None):
14831483
for discount in discounts:
14841484
discount_type = get_text(discount, './/Tipo')
14851485
discount_sign = -1 if discount_type == 'MG' else 1
1486-
if discount_percentage := get_float(discount, './/Percentuale'):
1486+
if (discount_percentage := get_float(discount, './/Percentuale')) and not float_is_zero(discount_percentage, precision_rounding=move_line.currency_id.rounding):
14871487
current_unit_price *= discount_sign * (100 - discount_percentage) / 100
14881488
elif discount_amount := get_float(discount, './/Importo'):
14891489
current_unit_price -= discount_sign * discount_amount

addons/l10n_it_edi/tests/import_xmls/IT01234567890_DISC1.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,18 @@
113113
<PrezzoTotale>23.75</PrezzoTotale>
114114
<AliquotaIVA>22</AliquotaIVA>
115115
</DettaglioLinee>
116+
<DettaglioLinee>
117+
<NumeroLinea>3</NumeroLinea>
118+
<Descrizione>RIGA DESCRITTIVA A 0</Descrizione>
119+
<Quantita>1.00</Quantita>
120+
<PrezzoUnitario>0.00</PrezzoUnitario>
121+
<ScontoMaggiorazione>
122+
<Tipo>SC</Tipo>
123+
<Importo>0.00</Importo>
124+
</ScontoMaggiorazione>
125+
<PrezzoTotale>0.00</PrezzoTotale>
126+
<AliquotaIVA>22</AliquotaIVA>
127+
</DettaglioLinee>
116128
<DatiRiepilogo>
117129
<AliquotaIVA>22.00</AliquotaIVA>
118130
<ImponibileImporto>28.75</ImponibileImporto>

addons/l10n_it_edi/tests/test_edi_import.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ def test_receive_vendor_bill_sconto_maggiorazione(self):
8282
'price_unit': 10.0,
8383
'discount': 52.5,
8484
'debit': 23.75,
85+
},
86+
{
87+
'quantity': 1.0,
88+
'price_unit': 0.0,
89+
'discount': 0.0,
90+
'debit': 0.0,
8591
}],
8692
}])
8793

0 commit comments

Comments
 (0)