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