Add functionality to create a new sales order shipment

- From the "New Shipment" button
- As a secondary modal from the stock allocation dialgo
This commit is contained in:
Oliver 2021-10-27 00:57:47 +11:00
parent 4d0f905afc
commit 2eb93b5a49
3 changed files with 50 additions and 1 deletions

View File

@ -913,7 +913,6 @@ class SalesOrderShipment(models.Model):
Attributes:
order: SalesOrder reference
status: Status of this shipment (see SalesOrderStatus)
shipment_date: Date this shipment was "shipped" (or null)
checked_by: User reference field indicating who checked this order
reference: Custom reference text for this shipment (e.g. consignment number?)

View File

@ -113,6 +113,16 @@
order: {{ order.pk }},
shipped: false,
});
$('#new-shipment').click(function() {
createSalesOrderShipment({
order: {{ order.pk }},
onSuccess: function(data) {
$('#pending-shipments-table').bootstrapTable('refresh');
}
});
});
{% endif %}
loadSalesOrderShipmentTable('#completed-shipments-table', {

View File

@ -35,6 +35,38 @@
removePurchaseOrderLineItem,
*/
function salesOrderShipmentFields(options={}) {
var fields = {
order: {},
reference: {},
};
// If order is specified, hide the order field
if (options.order) {
fields.order.value = options.order;
fields.order.hidden = true;
}
return fields;
}
// Open a dialog to create a new sales order shipment
function createSalesOrderShipment(options={}) {
constructForm('{% url "api-so-shipment-list" %}', {
method: 'POST',
fields: salesOrderShipmentFields(options),
title: '{% trans "Create New Shipment" %}',
onSuccess: function(data) {
if (options.onSuccess) {
options.onSuccess(data);
}
}
});
}
// Create a new SalesOrder
function createSalesOrder(options={}) {
@ -1351,6 +1383,14 @@ function allocateStockToSalesOrder(order_id, line_items, options={}) {
},
value: options.shipment || null,
auto_fill: true,
secondary: {
title: '{% trans "New Shipment" %}',
fields: function() {
return salesOrderShipmentFields({
order: order_id
});
}
}
}
},
preFormContent: html,