Refactor PurchaseOrderEdit form

This commit is contained in:
Oliver 2021-07-02 23:04:53 +10:00
parent 5e9372f2d6
commit 7e5c9aa043
6 changed files with 51 additions and 33 deletions

View File

@ -164,11 +164,30 @@ $('#print-order-report').click(function() {
});
$("#edit-order").click(function() {
launchModalForm("{% url 'po-edit' order.id %}",
{
reload: true,
}
);
constructForm('{% url "api-po-detail" order.pk %}', {
fields: {
reference: {
prefix: "{% settings_value 'PURCHASEORDER_REFERENCE_PREFIX' %}",
},
{% if order.lines.count == 0 and order.status == PurchaseOrderStatus.PENDING %}
supplier: {
},
{% endif %}
description: {},
target_date: {
icon: 'fa-calendar-alt',
},
link: {
icon: 'fa-link',
},
responsible: {
icon: 'fa-user',
},
},
title: '{% trans "Edit Purchase Order" %}',
reload: true,
});
});
$("#receive-order").click(function() {

View File

@ -168,12 +168,6 @@ class POTests(OrderViewTestCase):
response = self.client.get(url, {'supplier': 'goat'}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
def test_po_edit(self):
""" Launch form to edit a PurchaseOrder """
response = self.client.get(reverse('po-edit', args=(1,)), HTTP_X_REQUESTED_WITH='XMLHttpRequest')
self.assertEqual(response.status_code, 200)
def test_po_export(self):
""" Export PurchaseOrder """

View File

@ -12,7 +12,6 @@ from . import views
purchase_order_detail_urls = [
url(r'^cancel/', views.PurchaseOrderCancel.as_view(), name='po-cancel'),
url(r'^edit/', views.PurchaseOrderEdit.as_view(), name='po-edit'),
url(r'^issue/', views.PurchaseOrderIssue.as_view(), name='po-issue'),
url(r'^receive/', views.PurchaseOrderReceive.as_view(), name='po-receive'),
url(r'^complete/', views.PurchaseOrderComplete.as_view(), name='po-complete'),

View File

@ -215,26 +215,6 @@ class SalesOrderCreate(AjaxCreateView):
return super().save(form)
class PurchaseOrderEdit(AjaxUpdateView):
""" View for editing a PurchaseOrder using a modal form """
model = PurchaseOrder
ajax_form_title = _('Edit Purchase Order')
form_class = order_forms.EditPurchaseOrderForm
def get_form(self):
form = super(AjaxUpdateView, self).get_form()
order = self.get_object()
# Prevent user from editing supplier if there are already lines in the order
if order.lines.count() > 0 or not order.status == PurchaseOrderStatus.PENDING:
form.fields['supplier'].widget = HiddenInput()
return form
class SalesOrderEdit(AjaxUpdateView):
""" View for editing a SalesOrder """

View File

@ -383,6 +383,10 @@ function constructFormBody(fields, options) {
}
fields[field].hidden = field_options.hidden;
if (field_options.read_only != null) {
fields[field].read_only = field_options.read_only;
}
}
}
@ -982,7 +986,6 @@ function initializeRelatedField(name, field, options) {
select.select2({
placeholder: '',
allowClear: !field.required,
dropdownParent: $(options.modal),
dropdownAutoWidth: false,
ajax: {
@ -1201,6 +1204,8 @@ function renderModelData(name, model, data, parameters, options) {
case 'supplierpart':
renderer = renderSupplierPart;
break;
case 'owner':
renderer = renderOwner;
default:
break;
}

View File

@ -93,6 +93,27 @@ function renderPart(name, data, parameters, options) {
}
// Renderer for "Owner" model
function renderOwner(name, data, parameters, options) {
var html = `<span>${data.name}</span>`;
switch (data.label) {
case 'user':
html += `<span class='float-right fas fa-user'></span>`;
break;
case 'group':
html += `<span class='float-right fas fa-users'></span>`;
break;
default:
break;
}
return html;
}
// Renderer for "PartCategory" model
function renderPartCategory(name, data, parameters, options) {