diff --git a/issue12823.diff b/issue12823.diff new file mode 100644 index 0000000..97d5508 --- /dev/null +++ b/issue12823.diff @@ -0,0 +1,36 @@ +diff --git a/tryton/modules/account/move.py b/tryton/modules/account/move.py +index b827237af4..ddbca0ae19 100644 +--- a/tryton/modules/account/move.py ++++ b/tryton/modules/account/move.py +@@ -1098,7 +1098,7 @@ class Line(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) +@@ -1169,7 +1169,8 @@ class Line(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): +@@ -2402,9 +2403,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 diff --git a/series b/series index 8e2a78d..7669a03 100644 --- a/series +++ b/series @@ -65,3 +65,5 @@ sao_document_field.diff # [sao] fix issue with loading of 'document' fields in s issue12799.diff # [sao] Convert negative id value as None when set by the client issue12547.diff # [stock_lot] Check lot required only when changing move to done + +issue12823.diff # [account] Use 0 as fallback for missing debit or credit in on_change functions