From c7ca9a3d8f6fa53a6285ed80da8d55193ff858b2 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Sat, 15 Jun 2019 17:29:33 +1000 Subject: [PATCH] Display table of outstanding line items --- InvenTree/order/models.py | 12 +++++++ .../order/templates/order/receive_parts.html | 34 +++++++++++++++++++ InvenTree/order/views.py | 3 ++ 3 files changed, 49 insertions(+) diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index e2a0efc36d..4cb58f401b 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -195,6 +195,13 @@ class PurchaseOrder(Order): line.save() + def pending_line_items(self): + """ Return a list of pending line items for this order. + Any line item where 'received' < 'quantity' will be returned. + """ + + return [line for line in self.lines.all() if line.quantity > line.received] + class OrderLineItem(models.Model): """ Abstract model for an order line item @@ -251,3 +258,8 @@ class PurchaseOrderLineItem(OrderLineItem): ) received = models.PositiveIntegerField(default=0, help_text=_('Number of items received')) + + def remaining(self): + """ Calculate the number of items remaining to be received """ + r = self.quantity - self.received + return max(r, 0) \ No newline at end of file diff --git a/InvenTree/order/templates/order/receive_parts.html b/InvenTree/order/templates/order/receive_parts.html index c81a016fd7..42c104e274 100644 --- a/InvenTree/order/templates/order/receive_parts.html +++ b/InvenTree/order/templates/order/receive_parts.html @@ -2,9 +2,43 @@ {% block form %} +

Receive parts for {{ order }}

+
{% csrf_token %} {% load crispy_forms_tags %} + + + + + + + + + + {% for line in lines %} + + {% if line.part %} + + + {% else %} + + {% endif %} + + + + + {% endfor %} +
PartOrder CodeOn OrderReceivedReceive
+ {% include "hover_image.html" with image=line.part.part.image hover=False %} + {{ line.part.part.full_name }} + {{ line.part.SKU }}Referenced part has been removed{{ line.quantity }}{{ line.received }} +
+
+ +
+
+
{% endblock %} \ No newline at end of file diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 0281564474..48fb466367 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -180,6 +180,7 @@ class PurchaseOrderReceive(AjaxView): ctx = { 'order': self.order, + 'lines': self.lines, } return ctx @@ -189,6 +190,8 @@ class PurchaseOrderReceive(AjaxView): self.request = request self.order = get_object_or_404(PurchaseOrder, pk=self.kwargs['pk']) + self.lines = self.order.pending_line_items() + return self.renderJsonResponse(request)