mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-31 13:15:43 +00:00 
			
		
		
		
	Adds basic "index" page for Return Order model
This commit is contained in:
		| @@ -29,6 +29,7 @@ | ||||
|     completePendingShipments, | ||||
|     createPurchaseOrder, | ||||
|     createPurchaseOrderLineItem, | ||||
|     createReturnOrder, | ||||
|     createSalesOrder, | ||||
|     createSalesOrderLineItem, | ||||
|     createSalesOrderShipment, | ||||
| @@ -41,6 +42,7 @@ | ||||
|     loadPurchaseOrderLineItemTable, | ||||
|     loadPurchaseOrderExtraLineTable | ||||
|     loadPurchaseOrderTable, | ||||
|     loadReturnOrderTable, | ||||
|     loadSalesOrderAllocationTable, | ||||
|     loadSalesOrderLineItemTable, | ||||
|     loadSalesOrderExtraLineTable | ||||
| @@ -536,9 +538,7 @@ function salesOrderFields(options={}) { | ||||
|                 title: '{% trans "Add Customer" %}', | ||||
|                 fields: function() { | ||||
|                     var fields = companyFormFields(); | ||||
|  | ||||
|                     fields.is_customer.value = true; | ||||
|  | ||||
|                     return fields; | ||||
|                 } | ||||
|             } | ||||
| @@ -573,10 +573,10 @@ function createSalesOrder(options={}) { | ||||
|     constructForm('{% url "api-so-list" %}', { | ||||
|         method: 'POST', | ||||
|         fields: fields, | ||||
|         title: '{% trans "Create Sales Order" %}', | ||||
|         onSuccess: function(data) { | ||||
|             location.href = `/order/sales-order/${data.pk}/`; | ||||
|         }, | ||||
|         title: '{% trans "Create Sales Order" %}', | ||||
|     }); | ||||
| } | ||||
|  | ||||
| @@ -4662,3 +4662,163 @@ function loadSalesOrderExtraLineTable(table, options={}) { | ||||
|         columns: columns, | ||||
|     }); | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Construct a set of fields for a ReturnOrder form | ||||
|  */ | ||||
| function returnOrderFields(options={}) { | ||||
|  | ||||
|     let fields = { | ||||
|         reference: { | ||||
|             icon: 'fa-hashtag', | ||||
|         }, | ||||
|         description: {}, | ||||
|         customer: { | ||||
|             icon: 'fa-user-tie', | ||||
|             secondary: { | ||||
|                 title: '{% trans "Add Customer" %}', | ||||
|                 fields: function() { | ||||
|                     var fields = companyFormFields(); | ||||
|                     fields.is_customer.value = true; | ||||
|                     return fields; | ||||
|                 } | ||||
|             } | ||||
|         }, | ||||
|         customer_reference: {}, | ||||
|         link: { | ||||
|             icon: 'fa-link', | ||||
|         }, | ||||
|         responsible: { | ||||
|             icon: 'fa-user', | ||||
|         } | ||||
|     }; | ||||
|  | ||||
|     return fields; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Create a new Return Order | ||||
|  */ | ||||
| function createReturnOrder(options={}) { | ||||
|     let fields = returnOrderFields(options); | ||||
|  | ||||
|     if (options.customer) { | ||||
|         fields.customer.value = options.customer; | ||||
|     } | ||||
|  | ||||
|     constructForm('{% url "api-return-order-list" %}', { | ||||
|         method: 'POST', | ||||
|         fields: fields, | ||||
|         title: '{% trans "Create Return Order" %}', | ||||
|         onSuccess: function(data) { | ||||
|             location.href = `/order/return-order/${data.pk}/`; | ||||
|         }, | ||||
|     }); | ||||
| } | ||||
|  | ||||
|  | ||||
| /* | ||||
|  * Load a table of return orders | ||||
|  */ | ||||
| function loadReturnOrderTable(table, options={}) { | ||||
|  | ||||
|     // Ensure the table starts in a known state | ||||
|     $(table).bootstrapTable('destroy'); | ||||
|  | ||||
|     options.params = options.params || {}; | ||||
|     options.params['customer_detail'] = true; | ||||
|  | ||||
|     var filters = loadTableFilters('returnorder'); | ||||
|  | ||||
|     for (var key in options.params) { | ||||
|         filters[key] = options.params[key]; | ||||
|     } | ||||
|  | ||||
|     setupFilterList('returnorder', $(table), '#filter-list-returnorder', {download: true}); | ||||
|  | ||||
|     let display_mode = inventreeLoad('returnorder-table-display-mode', 'list'); | ||||
|  | ||||
|     let is_calendar = display_mode == 'calendar'; | ||||
|  | ||||
|     $(table).inventreeTable({ | ||||
|         url: '{% url "api-return-order-list" %}', | ||||
|         queryParams: filters, | ||||
|         name: 'returnorder', | ||||
|         sidePagination: 'server', | ||||
|         original: options.params, | ||||
|         showColumns: !is_calendar, | ||||
|         search: !is_calendar, | ||||
|         showCustomViewButton: false, | ||||
|         showCustomView: is_calendar, | ||||
|         disablePagination: is_calendar, | ||||
|         formatNoMatches: function() { | ||||
|             return '{% trans "No return orders found" %}'; | ||||
|         }, | ||||
|         onRefresh: function() { | ||||
|             loadReturnOrderTable(table, options); | ||||
|         }, | ||||
|         onLoadSuccess: function() { | ||||
|             // TODO | ||||
|         }, | ||||
|         columns: [ | ||||
|             { | ||||
|                 title: '', | ||||
|                 checkbox: true, | ||||
|                 visible: true, | ||||
|                 switchable: false, | ||||
|             }, | ||||
|             { | ||||
|                 sortable: true, | ||||
|                 field: 'reference', | ||||
|                 title: '{% trans "Return Order" %}', | ||||
|                 formatter: function(value, row) { | ||||
|                     var html = renderLink(value, `/order/return-order/${row.pk}/`); | ||||
|                     return html; | ||||
|                 }, | ||||
|             }, | ||||
|             { | ||||
|                 sortable: true, | ||||
|                 sortName: 'customer__name', | ||||
|                 field: 'customer_detail', | ||||
|                 title: '{% trans "Customer" %}', | ||||
|                 formatter: function(value, row) { | ||||
|  | ||||
|                     if (!row.customer_detail) { | ||||
|                         return '{% trans "Invalid Customer" %}'; | ||||
|                     } | ||||
|  | ||||
|                     return imageHoverIcon(row.customer_detail.image) + renderLink(row.customer_detail.name, `/company/${row.customer}/sales-orders/`); | ||||
|                 } | ||||
|             }, | ||||
|             { | ||||
|                 sortable: true, | ||||
|                 field: 'customer_reference', | ||||
|                 title: '{% trans "Customer Reference" %}', | ||||
|             }, | ||||
|             { | ||||
|                 sortable: false, | ||||
|                 field: 'description', | ||||
|                 title: '{% trans "Description" %}', | ||||
|             }, | ||||
|             { | ||||
|                 sortable: true, | ||||
|                 field: 'status', | ||||
|                 title: '{% trans "Status" %}', | ||||
|                 formatter: function(value, row) { | ||||
|                     return 'todo'; | ||||
|                     return salesOrderStatusDisplay(row.status); | ||||
|                 } | ||||
|             }, | ||||
|             { | ||||
|                 sortable: true, | ||||
|                 field: 'creation_date', | ||||
|                 title: '{% trans "Creation Date" %}', | ||||
|                 formatter: function(value) { | ||||
|                     return renderDate(value); | ||||
|                 } | ||||
|             }, | ||||
|         ] | ||||
|     }); | ||||
| } | ||||
|   | ||||
| @@ -47,18 +47,23 @@ | ||||
|           <ul class='dropdown-menu' aria-labelledby="buyMenuDropdown"> | ||||
|             <li><a class='dropdown-item' href="{% url 'supplier-index' %}"><span class='fas fa-building icon-header'></span>{% trans "Suppliers" %}</a></li> | ||||
|             <li><a class='dropdown-item' href="{% url 'manufacturer-index' %}"><span class='fas fa-industry icon-header'></span>{% trans "Manufacturers" %}</a></li> | ||||
|             <li><a class='dropdown-item' href="{% url 'po-index' %}"><span class='fas fa-list icon-header'></span>{% trans "Purchase Orders" %}</a></li> | ||||
|             <li><a class='dropdown-item' href="{% url 'purchase-order-index' %}"><span class='fas fa-list icon-header'></span>{% trans "Purchase Orders" %}</a></li> | ||||
|           </ul> | ||||
|         </li> | ||||
|         {% endif %} | ||||
|         {% if roles.sales_order.view %} | ||||
|         {% if roles.sales_order.view or roles.returns.view %} | ||||
|         <li class='nav-item dropdown'> | ||||
|           <a class='nav-link dropdown-toggle' href='#' id='sellMenuDropdown' role='button' data-bs-toggle='dropdown'> | ||||
|             <span class='fas fa-truck icon-header'></span>{% trans "Sell" %} | ||||
|           </a> | ||||
|           <ul class='dropdown-menu'> | ||||
|             <li><a class='dropdown-item' href="{% url 'customer-index' %}"><span class='fas fa-user-tie icon-header'></span>{% trans "Customers" %}</a> | ||||
|             <li><a class='dropdown-item' href="{% url 'so-index' %}"><span class='fas fa-list icon-header'></span>{% trans "Sales Orders" %}</a></li> | ||||
|             {% if roles.sales_order.view %} | ||||
|             <li><a class='dropdown-item' href="{% url 'sales-order-index' %}"><span class='fas fa-list icon-header'></span>{% trans "Sales Orders" %}</a></li> | ||||
|             {% endif %} | ||||
|             {% if roles.returns.view %} | ||||
|             <li><a class='dropdown-item' href="{% url 'return-order-index' %}"><span class='fas fa-undo icon-header'></span>{% trans "Returns" %}</a></li> | ||||
|             {% endif %} | ||||
|           </ul> | ||||
|         </li> | ||||
|         {% endif %} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user