From 50eb81f495fa9c5a850ff2ebfb95fb3ac0d2d69e Mon Sep 17 00:00:00 2001 From: Oliver Date: Sun, 29 Jan 2023 14:24:38 +1100 Subject: [PATCH] Do not auto-fill target_date for line items (#4275) * Improve help_text for target_date field on lineitem model(s) * Don't auto-fill target_date for purchase order line item(s) * Refactor function to create new sales order line item * Add migration file * JS linting --- .../migrations/0077_auto_20230129_0154.py | 33 +++++++++++++++++++ InvenTree/order/models.py | 2 +- .../order/purchase_order_detail.html | 3 -- .../templates/order/sales_order_detail.html | 19 ++++------- InvenTree/templates/js/translated/order.js | 23 ++++++++++++- 5 files changed, 63 insertions(+), 17 deletions(-) create mode 100644 InvenTree/order/migrations/0077_auto_20230129_0154.py diff --git a/InvenTree/order/migrations/0077_auto_20230129_0154.py b/InvenTree/order/migrations/0077_auto_20230129_0154.py new file mode 100644 index 0000000000..122e6248fb --- /dev/null +++ b/InvenTree/order/migrations/0077_auto_20230129_0154.py @@ -0,0 +1,33 @@ +# Generated by Django 3.2.16 on 2023-01-29 01:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('order', '0076_auto_20221111_0153'), + ] + + operations = [ + migrations.AlterField( + model_name='purchaseorderextraline', + name='target_date', + field=models.DateField(blank=True, help_text='Target date for this line item (leave blank to use the target date from the order)', null=True, verbose_name='Target Date'), + ), + migrations.AlterField( + model_name='purchaseorderlineitem', + name='target_date', + field=models.DateField(blank=True, help_text='Target date for this line item (leave blank to use the target date from the order)', null=True, verbose_name='Target Date'), + ), + migrations.AlterField( + model_name='salesorderextraline', + name='target_date', + field=models.DateField(blank=True, help_text='Target date for this line item (leave blank to use the target date from the order)', null=True, verbose_name='Target Date'), + ), + migrations.AlterField( + model_name='salesorderlineitem', + name='target_date', + field=models.DateField(blank=True, help_text='Target date for this line item (leave blank to use the target date from the order)', null=True, verbose_name='Target Date'), + ), + ] diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index c3f66d74a6..430632f9b6 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -945,7 +945,7 @@ class OrderLineItem(models.Model): target_date = models.DateField( blank=True, null=True, verbose_name=_('Target Date'), - help_text=_('Target shipping date for this line item'), + help_text=_('Target date for this line item (leave blank to use the target date from the order)'), ) diff --git a/InvenTree/order/templates/order/purchase_order_detail.html b/InvenTree/order/templates/order/purchase_order_detail.html index 36b5eb87c1..914c97d6ab 100644 --- a/InvenTree/order/templates/order/purchase_order_detail.html +++ b/InvenTree/order/templates/order/purchase_order_detail.html @@ -179,9 +179,6 @@ $('#new-po-line').click(function() { currency: '{{ order.supplier.currency }}', {% endif %} {% endif %} - {% if order.target_date %} - target_date: '{{ order.target_date|date:'Y-m-d' }}', - {% endif %} onSuccess: function() { $('#po-line-table').bootstrapTable('refresh'); } diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index 2d4f23c1e7..a3c25391f9 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -249,21 +249,16 @@ }); $("#new-so-line").click(function() { - - var fields = soLineItemFields({ + createSalesOrderLineItem({ order: {{ order.pk }}, - {% if order.target_date %} - target_date: '{{ order.target_date|date:'Y-m-d' }}', - {% endif %} - }); - - constructForm('{% url "api-so-line-list" %}', { - fields: fields, - method: 'POST', - title: '{% trans "Add Line Item" %}', onSuccess: function() { $("#so-lines-table").bootstrapTable("refresh"); - }, + } + }); + + // Create a new SalesOrderLine item + var fields = soLineItemFields({ + order: {{ order.pk }}, }); }); diff --git a/InvenTree/templates/js/translated/order.js b/InvenTree/templates/js/translated/order.js index f8977f5996..493b96f789 100644 --- a/InvenTree/templates/js/translated/order.js +++ b/InvenTree/templates/js/translated/order.js @@ -30,6 +30,7 @@ createPurchaseOrder, createPurchaseOrderLineItem, createSalesOrder, + createSalesOrderLineItem, createSalesOrderShipment, duplicatePurchaseOrder, editPurchaseOrder, @@ -519,7 +520,9 @@ function createSalesOrderShipment(options={}) { } -// Create a new SalesOrder +/* + * Create a new SalesOrder + */ function createSalesOrder(options={}) { constructForm('{% url "api-so-list" %}', { @@ -561,6 +564,24 @@ function createSalesOrder(options={}) { } +/* + * Launch a modal form to create a new SalesOrderLineItem + */ +function createSalesOrderLineItem(options={}) { + + var fields = soLineItemFields(options); + + constructForm('{% url "api-so-line-list" %}', { + fields: fields, + method: 'POST', + title: '{% trans "Add Line Item" %}', + onSuccess: function(response) { + handleFormSuccess(response, options); + }, + }); +} + + /* * Construct a set of fields for a purchase order form */