changeset 1b32de9c57ce in modules/sale:6.2 details: https://hg.tryton.org/modules/sale?cmd=changeset&node=1b32de9c57ce description: Round actual quantity after the sum
The sum of rounded quantity is not always a rounded value. issue11503 review431141003 (grafted from 4d7d93d2d54634a7419bc12719115e7573ff152e) diffstat: sale.py | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-) diffs (32 lines): diff -r 409519631313 -r 1b32de9c57ce sale.py --- a/sale.py Tue Mar 01 19:29:11 2022 +0100 +++ b/sale.py Tue May 31 23:57:32 2022 +0200 @@ -1687,18 +1687,23 @@ return moved_quantity = 0 for move in self.moves: - if move.state != 'cancelled': + if move.state != 'cancelled' and self.unit: moved_quantity += Uom.compute_qty( - move.uom, move.quantity, self.unit) + move.uom, move.quantity, self.unit, round=False) if self.quantity < 0: moved_quantity *= -1 invoiced_quantity = 0 for invoice_line in self.invoice_lines: - if (not invoice_line.invoice - or invoice_line.invoice.state != 'cancelled'): + if ( + (not invoice_line.invoice + or invoice_line.invoice.state != 'cancelled') + and self.unit and invoice_line.unit): invoiced_quantity += Uom.compute_qty( - invoice_line.unit, invoice_line.quantity, self.unit) + invoice_line.unit, invoice_line.quantity, self.unit, + round=False) actual_quantity = max(moved_quantity, invoiced_quantity, key=abs) + if self.unit: + actual_quantity = self.unit.round(actual_quantity) if self.actual_quantity != actual_quantity: self.actual_quantity = actual_quantity