diff --git a/InvenTree/order/forms.py b/InvenTree/order/forms.py index c7942e3549..ba2707133f 100644 --- a/InvenTree/order/forms.py +++ b/InvenTree/order/forms.py @@ -49,3 +49,4 @@ class EditPurchaseOrderLineItemForm(HelperForm): 'reference', 'notes', ] + diff --git a/InvenTree/order/templates/order/po_lineitem_delete.html b/InvenTree/order/templates/order/po_lineitem_delete.html new file mode 100644 index 0000000000..3264fea625 --- /dev/null +++ b/InvenTree/order/templates/order/po_lineitem_delete.html @@ -0,0 +1,5 @@ +{% extends "modal_delete_form.html" %} + +{% block pre_form_content %} +Are you sure you wish to delete this line item? +{% endblock %} \ No newline at end of file diff --git a/InvenTree/order/templates/order/purchase_order_detail.html b/InvenTree/order/templates/order/purchase_order_detail.html index 16bf09f7e1..7028f96a8b 100644 --- a/InvenTree/order/templates/order/purchase_order_detail.html +++ b/InvenTree/order/templates/order/purchase_order_detail.html @@ -110,10 +110,10 @@ InvenTree | {{ order }}
diff --git a/InvenTree/order/urls.py b/InvenTree/order/urls.py index 410efb8129..0c064ee9ee 100644 --- a/InvenTree/order/urls.py +++ b/InvenTree/order/urls.py @@ -17,9 +17,17 @@ purchase_order_detail_urls = [ url(r'^.*$', views.PurchaseOrderDetail.as_view(), name='purchase-order-detail'), ] +po_line_item_detail_urls = [ + + url(r'^edit/', views.POLineItemEdit.as_view(), name='po-line-item-edit'), + url(r'^delete/', views.POLineItemDelete.as_view(), name='po-line-item-delete'), +] + po_line_urls = [ url(r'^new/', views.POLineItemCreate.as_view(), name='po-line-item-create'), + + url(r'^(?P\d+)/', include(po_line_item_detail_urls)), ] purchase_order_urls = [ diff --git a/InvenTree/order/views.py b/InvenTree/order/views.py index 450a4c87a4..3b789301de 100644 --- a/InvenTree/order/views.py +++ b/InvenTree/order/views.py @@ -19,7 +19,7 @@ from part.models import Part from . import forms as order_forms -from InvenTree.views import AjaxView, AjaxCreateView, AjaxUpdateView +from InvenTree.views import AjaxView, AjaxCreateView, AjaxUpdateView, AjaxDeleteView from InvenTree.helpers import str2bool from InvenTree.status_codes import OrderStatus @@ -539,8 +539,32 @@ class POLineItemCreate(AjaxCreateView): class POLineItemEdit(AjaxUpdateView): + """ View for editing a PurchaseOrderLineItem object in a modal form. + """ model = PurchaseOrderLineItem form_class = order_forms.EditPurchaseOrderLineItemForm ajax_template_name = 'modal_form.html' - ajax_form_action = 'Edit Line Item' + ajax_form_title = 'Edit Line Item' + + def get_form(self): + form = super().get_form() + + # Prevent user from editing order once line item is assigned + form.fields.pop('order') + + return form + + +class POLineItemDelete(AjaxDeleteView): + """ View for deleting a PurchaseOrderLineItem object in a modal form + """ + + model = PurchaseOrderLineItem + ajax_form_title = 'Delete Line Item' + ajax_template_name = 'order/po_lineitem_delete.html' + + def get_data(self): + return { + 'danger': 'Deleted line item', + } \ No newline at end of file diff --git a/InvenTree/static/script/inventree/order.js b/InvenTree/static/script/inventree/order.js index 82e14532d6..818596f7c9 100644 --- a/InvenTree/static/script/inventree/order.js +++ b/InvenTree/static/script/inventree/order.js @@ -66,4 +66,36 @@ function newPurchaseOrderFromOrderWizard(e) { $('#modal-form').find(dropdown).append(option).trigger('change'); }, }); +} + +function editPurchaseOrderLineItem(e) { + + /* Edit a purchase order line item in a modal form. + */ + + e = e || window.event; + + var src = e.target || e.srcElement; + + var url = $(src).attr('url'); + + launchModalForm(url, { + reload: true, + }); +} + +function removePurchaseOrderLineItem(e) { + + /* Delete a purchase order line item in a modal form + */ + + e = e || window.event; + + var src = e.target || e.srcElement; + + var url = $(src).attr('url'); + + launchModalForm(url, { + reload: true, + }); } \ No newline at end of file