From 713d7960a80cde40c03fd6e04cd417247ac70d75 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Thu, 26 Mar 2020 17:56:44 +1100 Subject: [PATCH] Fix on_order calculation - Take into account the number "received" - Also fix unit tests --- InvenTree/order/tests.py | 5 +++-- InvenTree/part/models.py | 10 ++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/InvenTree/order/tests.py b/InvenTree/order/tests.py index 351c152472..35cf8909be 100644 --- a/InvenTree/order/tests.py +++ b/InvenTree/order/tests.py @@ -130,9 +130,10 @@ class OrderTest(TestCase): order.receive_line_item(line, loc, 50, user=None) line = PurchaseOrderLineItem.objects.get(id=2) - order.receive_line_item(line, loc, 2 * line.quantity, user=None) - self.assertEqual(part.on_order, 1100) + order.receive_line_item(line, loc, 500, user=None) + + self.assertEqual(part.on_order, 800) self.assertEqual(order.status, OrderStatus.PLACED) for line in order.pending_line_items(): diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index 16d6e30b9f..58ee8bbd2c 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -925,14 +925,20 @@ class Part(models.Model): """ Return the total number of items on order for this part. """ orders = self.supplier_parts.filter(purchase_order_line_items__order__status__in=OrderStatus.OPEN).aggregate( - quantity=Sum('purchase_order_line_items__quantity')) + quantity=Sum('purchase_order_line_items__quantity'), + received=Sum('purchase_order_line_items__received') + ) quantity = orders['quantity'] + received = orders['received'] if quantity is None: quantity = 0 - return quantity + if received is None: + received = 0 + + return quantity - received def get_parameters(self): """ Return all parameters for this part, ordered by name """