[FIX] l10n_ke_edi_tremol: currency rate zero division error

When posting an invoice to the fiscal device, the currency rate is
calculated from an invoice line by dividing its balance by the lines
subtotal. This is because the balance in the database will be in
KES (Kenyan shillings), whereas the currency on the line can differ.

From v16.0 onwards the way that a line is retrieved in order to
calculate the currency rate incorrect. When (for example) an invoice has
'Section' lines, then a division by zero is attempted (resulting in a
zero division error).

This commit amends the line so that the first line of the previously
assigned 'lines' variable is used instead. This variable contains only
valid invoice lines (non-zero, non-display type etc). It is already done
this way from v15.0 onwards (up to v16.0).

closes odoo/odoo#110210

X-original-commit: 4e0374fd095ea5e65e8ce311d133fca066e3ee6a
Signed-off-by: Josse Colpaert <jco@odoo.com>
This commit is contained in:
Daniel Kosky (dako)
2023-01-18 01:01:45 +01:00
parent a7f08f0b4c
commit d6dc5d0fbb
@@ -142,7 +142,7 @@ class AccountMove(models.Model):
if self.currency_id == self.company_id.currency_id:
currency_rate = 1
else:
currency_rate = abs(self.invoice_line_ids[0].balance / self.invoice_line_ids[0].price_subtotal)
currency_rate = abs(lines[0].balance / lines[0].price_subtotal)
discount_dict = {line.id: line.discount for line in lines if line.price_total > 0}
for line in lines: