Duplicate orders via API (#8145)

* Refactor API endpoint for duplicating line items from a purchase order

- Previously was "hidden" (undocumented)
- Cleanup / refactor code
- Now matches part duplication options
- Generic implementation supports all order types

* Update forms

* Refactor line item duplication

* Implement front-end support for return orders

* Enable duplication of sales orders from PUI

* Bump API version
This commit is contained in:
Oliver
2024-09-19 13:17:50 +10:00
committed by GitHub
parent 461317c5c5
commit 6a8875a4a6
15 changed files with 292 additions and 150 deletions
+24 -3
View File
@@ -138,14 +138,19 @@ export function usePurchaseOrderLineItemFields({
/**
* Construct a set of fields for creating / editing a PurchaseOrder instance
*/
export function usePurchaseOrderFields(): ApiFormFieldSet {
export function usePurchaseOrderFields({
duplicateOrderId
}: {
duplicateOrderId?: number;
}): ApiFormFieldSet {
return useMemo(() => {
return {
let fields: ApiFormFieldSet = {
reference: {
icon: <IconHash />
},
description: {},
supplier: {
disabled: duplicateOrderId !== undefined,
filters: {
is_supplier: true,
active: true
@@ -187,7 +192,23 @@ export function usePurchaseOrderFields(): ApiFormFieldSet {
icon: <IconUsers />
}
};
}, []);
// Order duplication fields
if (!!duplicateOrderId) {
fields.duplicate = {
children: {
order_id: {
hidden: true,
value: duplicateOrderId
},
copy_lines: {},
copy_extra_lines: {}
}
};
}
return fields;
}, [duplicateOrderId]);
}
/**