2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 12:35:46 +00:00

Adds basic "index" page for Return Order model

This commit is contained in:
Oliver
2023-03-14 17:29:44 +11:00
parent ab1ed84636
commit 718ad037cf
8 changed files with 260 additions and 13 deletions

View File

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

View File

@ -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 %}