diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index f0cc8b6535..b8a66a825d 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -96,23 +96,6 @@ class ReceivePurchaseOrderForm(HelperForm): ] -class EditSalesOrderLineItemForm(HelperForm): - """ Form for editing a SalesOrderLineItem object """ - - quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5, label=_('Quantity')) - - class Meta: - model = SalesOrderLineItem - fields = [ - 'order', - 'part', - 'quantity', - 'reference', - 'sale_price', - 'notes' - ] - - class AllocateSerialsToSalesOrderForm(forms.Form): """ Form for assigning stock to a sales order, diff --git a/InvenTree/order/templates/order/sales_order_detail.html b/InvenTree/order/templates/order/sales_order_detail.html index fcd352ca28..4af0e219d6 100644 --- a/InvenTree/order/templates/order/sales_order_detail.html +++ b/InvenTree/order/templates/order/sales_order_detail.html @@ -38,13 +38,23 @@ function reloadTable() { } $("#new-so-line").click(function() { - launchModalForm("{% url 'so-line-item-create' %}", { - success: reloadTable, - data: { - order: {{ order.id }}, + + constructForm('{% url "api-so-line-list" %}', { + fields: { + order: { + value: {{ order.pk }}, + hidden: true, + }, + part: {}, + quantity: {}, + reference: {}, + sale_price: {}, + sale_price_currency: {}, + notes: {}, }, - secondary: [ - ] + method: 'POST', + title: '{% trans "Add Line Item" %}', + onSuccess: reloadTable, }); }); diff --git a/InvenTree/order/urls.py b/InvenTree/order/urls.py index 18174b5ba9..16be6e77ce 100644 --- a/InvenTree/order/urls.py +++ b/InvenTree/order/urls.py @@ -50,11 +50,6 @@ sales_order_detail_urls = [ ] sales_order_urls = [ - - url(r'^line/', include([ - url(r'^new/', views.SOLineItemCreate.as_view(), name='so-line-item-create'), - ])), - # URLs for sales order allocations url(r'^allocation/', include([ url(r'^new/', views.SalesOrderAllocationCreate.as_view(), name='so-allocation-create'), diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index a8fbcf23f1..2ec06e600e 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -1049,70 +1049,6 @@ class OrderParts(AjaxView): order.add_line_item(supplier_part, quantity, purchase_price=purchase_price) -class SOLineItemCreate(AjaxCreateView): - """ Ajax view for creating a new SalesOrderLineItem object """ - - model = SalesOrderLineItem - context_order_name = 'line' - form_class = order_forms.EditSalesOrderLineItemForm - ajax_form_title = _('Add Line Item') - - def get_form(self, *args, **kwargs): - - form = super().get_form(*args, **kwargs) - - # If the order is specified, hide the widget - order_id = form['order'].value() - - if SalesOrder.objects.filter(id=order_id).exists(): - form.fields['order'].widget = HiddenInput() - - return form - - def get_initial(self): - """ - Extract initial data for this line item: - - Options: - order: The SalesOrder object - part: The Part object - """ - - initials = super().get_initial().copy() - - order_id = self.request.GET.get('order', None) - part_id = self.request.GET.get('part', None) - - if order_id: - try: - order = SalesOrder.objects.get(id=order_id) - initials['order'] = order - except (SalesOrder.DoesNotExist, ValueError): - pass - - if part_id: - try: - part = Part.objects.get(id=part_id) - if part.salable: - initials['part'] = part - except (Part.DoesNotExist, ValueError): - pass - - return initials - - def save(self, form): - ret = form.save() - # check if price s set in form - else autoset - if not ret.sale_price: - price = ret.part.get_price(ret.quantity) - # only if price is avail - if price: - ret.sale_price = price / ret.quantity - ret.save() - self.object = ret - return ret - - class SalesOrderAssignSerials(AjaxView, FormMixin): """ View for assigning stock items to a sales order,