Use 0 as fallback for missing debit or credit in on_change functions

Closes #12823
This commit is contained in:
Cédric Krier
2023-12-12 17:02:31 +01:00
parent 2b0d50afc4
commit e9f90b7944
+7 -4
View File
@@ -1106,7 +1106,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView):
def on_change_move(self):
if self.move:
if not self.debit and not self.credit:
total = sum(l.debit - l.credit
total = sum((l.debit or 0) - (l.credit or 0)
for l in getattr(self.move, 'lines', []))
self.debit = -total if total < 0 else Decimal(0)
self.credit = total if total > 0 else Decimal(0)
@@ -1177,7 +1177,8 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView):
'Set correct sign to amount_second_currency'
if self.amount_second_currency:
self.amount_second_currency = \
self.amount_second_currency.copy_sign(self.debit - self.credit)
self.amount_second_currency.copy_sign(
(self.debit or 0) - (self.credit or 0))
@fields.depends('account')
def on_change_account(self):
@@ -2455,9 +2456,11 @@ class ReconcileShow(ModelView):
if self.currency:
for line in self.lines:
if line.second_currency == self.currency:
amount += line.amount_second_currency
amount += (
line.amount_second_currency or 0)
elif line.currency == self.currency:
amount += line.debit - line.credit
amount += (
(line.debit or 0) - (line.credit or 0))
amount = self.currency.round(amount)
self.write_off_amount = amount