diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index 4a9dbfa2ac..6b8a3c81e0 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -266,6 +266,17 @@ class SOList(generics.ListCreateAPIView): else: queryset = queryset.exclude(status__in=SalesOrderStatus.OPEN) + # Filter by 'overdue' status + overdue = params.get('overdue', None) + + if overdue is not None: + overdue = str2bool(overdue) + + if overdue: + queryset = queryset.filter(SalesOrder.OVERDUE_FILTER) + else: + queryset = queryset.exclude(SalesOrder.OVERDUE_FILTER) + status = params.get('status', None) if status is not None: diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index aa0c897c8a..d797a4e42d 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -128,6 +128,13 @@ class EditSalesOrderForm(HelperForm): super().__init__(*args, **kwargs) + # TODO: Improve this using a better date picker + target_date = forms.DateField( + widget=forms.DateInput( + attrs={'type': 'date'}, + ) + ) + class Meta: model = SalesOrder fields = [ @@ -135,6 +142,7 @@ class EditSalesOrderForm(HelperForm): 'customer', 'customer_reference', 'description', + 'target_date', 'link' ] diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 84327e19b8..f0505728f6 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -188,7 +188,6 @@ class SalesOrderSerializer(InvenTreeModelSerializer): fields = [ 'pk', - 'shipment_date', 'creation_date', 'customer', 'customer_detail', @@ -202,6 +201,7 @@ class SalesOrderSerializer(InvenTreeModelSerializer): 'status', 'status_text', 'shipment_date', + 'target_date', ] read_only_fields = [ diff --git a/InvenTree/order/templates/order/sales_order_base.html b/InvenTree/order/templates/order/sales_order_base.html index 59ff0eeda8..378020850b 100644 --- a/InvenTree/order/templates/order/sales_order_base.html +++ b/InvenTree/order/templates/order/sales_order_base.html @@ -37,6 +37,9 @@ src="{% static 'img/blank_image.png' %}"

{% sales_order_status_label order.status large=True %} + {% if order.is_overdue %} + {% trans "Overdue" %} + {% endif %}


{{ order.description }}

@@ -74,7 +77,12 @@ src="{% static 'img/blank_image.png' %}" {% trans "Order Status" %} - {% sales_order_status_label order.status %} + + {% sales_order_status_label order.status %} + {% if order.is_overdue %} + {% trans "Overdue" %} + {% endif %} + @@ -100,6 +108,13 @@ src="{% static 'img/blank_image.png' %}" {% trans "Created" %} {{ order.creation_date }}{{ order.created_by }} + {% if order.target_date %} + + + {% trans "Target Date" %} + {{ order.target_date }} + + {% endif %} {% if order.shipment_date %} diff --git a/InvenTree/templates/js/order.js b/InvenTree/templates/js/order.js index 027347e37c..18c315d17e 100644 --- a/InvenTree/templates/js/order.js +++ b/InvenTree/templates/js/order.js @@ -275,6 +275,11 @@ function loadSalesOrderTable(table, options) { field: 'creation_date', title: '{% trans "Creation Date" %}', }, + { + sortable: true, + field: 'target_date', + title: '{% trans "Target Date" %}', + }, { sortable: true, field: 'shipment_date',