Add ability to edit and delete a purchase order line item

This commit is contained in:
Oliver Walters 2019-06-13 22:13:22 +10:00
parent fe5bb23d13
commit c9cddd2a19
6 changed files with 74 additions and 4 deletions

View File

@ -49,3 +49,4 @@ class EditPurchaseOrderLineItemForm(HelperForm):
'reference',
'notes',
]

View File

@ -0,0 +1,5 @@
{% extends "modal_delete_form.html" %}
{% block pre_form_content %}
Are you sure you wish to delete this line item?
{% endblock %}

View File

@ -110,10 +110,10 @@ InvenTree | {{ order }}
<td>
<div class='btn-group'>
<button class='btn btn-default btn-edit' id='edit-line-item-{{ line.id }} title='Edit line item' onclick='editPurchaseOrderLineItem()'>
<span line='{{ line.id }}' class='glyphicon glyphicon-small glyphicon-edit'></span>
<span url="{% url 'po-line-item-edit' line.id %}" line='{{ line.id }}' class='glyphicon glyphicon-small glyphicon-edit'></span>
</button>
<button class='btn btn-default btn-remove' id='remove-line-item-{{ line.id }' title='Remove line item' type='button' onclick='removePurchaseOrderLineItem()'>
<span line='{{ line.id }}' class='glyphicon glyphicon-small glyphicon-remove'></span>
<span url="{% url 'po-line-item-delete' line.id %}" line='{{ line.id }}' class='glyphicon glyphicon-small glyphicon-remove'></span>
</button>
</div>
</td>

View File

@ -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<pk>\d+)/', include(po_line_item_detail_urls)),
]
purchase_order_urls = [

View File

@ -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',
}

View File

@ -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,
});
}