changeset d33d24beec5b in modules/purchase:6.0
details: https://hg.tryton.org/modules/purchase?cmd=changeset&node=d33d24beec5b
description:
Round actual quantity after the sum
The sum of rounded quantity is not always a rounded value.
issue11503
review431141003
(grafted from d5fed246f6bf950bd04acf97628c7ec96c71adf8)
diffstat:
purchase.py | 15 ++++++++++-----
1 files changed, 10 insertions(+), 5 deletions(-)
diffs (32 lines):
diff -r 27a6f299f457 -r d33d24beec5b purchase.py
--- a/purchase.py Tue Mar 01 19:45:16 2022 +0100
+++ b/purchase.py Tue May 31 23:57:32 2022 +0200
@@ -1700,18 +1700,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