Updated NewOrderItem component to set default state to 'draft' and added an optional section for shipment details.

New actions for editing, canceling edits, finishing edits, and deleting items, along with visibility and disabled states based on item status.
This commit is contained in:
Tom Butcher 2025-12-27 13:54:14 +00:00
parent 4a605ddc09
commit 769229aacb
2 changed files with 100 additions and 5 deletions

View File

@ -8,7 +8,12 @@ const NewOrderItem = ({ onOk, reset, defaultValues }) => {
<NewObjectForm <NewObjectForm
type={'orderItem'} type={'orderItem'}
reset={reset} reset={reset}
defaultValues={{ syncAmount: null, quantity: 1, ...defaultValues }} defaultValues={{
state: { type: 'draft' },
syncAmount: null,
quantity: 1,
...defaultValues
}}
> >
{({ handleSubmit, submitLoading, objectData, formValid }) => { {({ handleSubmit, submitLoading, objectData, formValid }) => {
const steps = [ const steps = [
@ -54,6 +59,23 @@ const NewOrderItem = ({ onOk, reset, defaultValues }) => {
/> />
) )
}, },
{
title: 'Optional',
key: 'optional',
content: (
<ObjectInfo
type='orderItem'
column={1}
bordered={false}
isEditing={true}
required={false}
objectData={objectData}
visibleProperties={{
shipment: true
}}
/>
)
},
{ {
title: 'Summary', title: 'Summary',
key: 'summary', key: 'summary',
@ -65,7 +87,8 @@ const NewOrderItem = ({ onOk, reset, defaultValues }) => {
visibleProperties={{ visibleProperties={{
_id: false, _id: false,
createdAt: false, createdAt: false,
updatedAt: false updatedAt: false,
_reference: false
}} }}
isEditing={false} isEditing={false}
objectData={objectData} objectData={objectData}

View File

@ -1,5 +1,9 @@
import OrderItemIcon from '../../components/Icons/OrderItemIcon' import OrderItemIcon from '../../components/Icons/OrderItemIcon'
import InfoCircleIcon from '../../components/Icons/InfoCircleIcon' import InfoCircleIcon from '../../components/Icons/InfoCircleIcon'
import EditIcon from '../../components/Icons/EditIcon'
import BinIcon from '../../components/Icons/BinIcon'
import CheckIcon from '../../components/Icons/CheckIcon'
import XMarkIcon from '../../components/Icons/XMarkIcon'
export const OrderItem = { export const OrderItem = {
name: 'orderItem', name: 'orderItem',
@ -14,6 +18,63 @@ export const OrderItem = {
row: true, row: true,
icon: InfoCircleIcon, icon: InfoCircleIcon,
url: (_id) => `/dashboard/inventory/orderitems/info?orderItemId=${_id}` url: (_id) => `/dashboard/inventory/orderitems/info?orderItemId=${_id}`
},
{
name: 'edit',
label: 'Edit',
type: 'button',
icon: EditIcon,
url: (_id) =>
`/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=edit`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
}
},
{
name: 'cancelEdit',
label: 'Cancel Edit',
type: 'button',
icon: XMarkIcon,
url: (_id) =>
`/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=cancelEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
},
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
}
},
{
name: 'finishEdit',
label: 'Finish Edit',
type: 'button',
icon: CheckIcon,
url: (_id) =>
`/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=finishEdit`,
visible: (objectData) => {
return objectData?._isEditing && objectData?._isEditing == true
},
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
}
},
{
name: 'delete',
label: 'Delete',
type: 'button',
icon: BinIcon,
danger: true,
url: (_id) =>
`/dashboard/inventory/orderitems/info?orderItemId=${_id}&action=delete`,
visible: (objectData) => {
return !(objectData?._isEditing && objectData?._isEditing == true)
},
disabled: (objectData) => {
return objectData?.state?.type != 'draft'
}
} }
], ],
group: [], group: [],
@ -21,7 +82,8 @@ export const OrderItem = {
sorters: ['createdAt', 'updatedAt', 'itemAmount', 'quantity'], sorters: ['createdAt', 'updatedAt', 'itemAmount', 'quantity'],
columns: [ columns: [
'_id', '_id',
'_reference',
'state',
'itemType', 'itemType',
'item', 'item',
'itemAmount', 'itemAmount',
@ -30,6 +92,7 @@ export const OrderItem = {
'taxRate', 'taxRate',
'totalAmountWithTax', 'totalAmountWithTax',
'order', 'order',
'shipment',
'createdAt', 'createdAt',
'updatedAt' 'updatedAt'
], ],
@ -88,7 +151,16 @@ export const OrderItem = {
type: 'object', type: 'object',
objectType: 'shipment', objectType: 'shipment',
showHyperlink: true, showHyperlink: true,
required: true required: false,
columnWidth: 250,
readOnly: (objectData) => {
return objectData?.state?.type != 'draft'
},
masterFilter: (objectData) => {
return {
order: objectData?.order?._id
}
}
}, },
{ {
name: 'itemType', name: 'itemType',
@ -96,7 +168,7 @@ export const OrderItem = {
type: 'objectType', type: 'objectType',
masterFilter: ['part', 'packaging', 'filament'], masterFilter: ['part', 'packaging', 'filament'],
required: true, required: true,
columnWidth: 125 columnWidth: 175
}, },
{ {
name: 'item', name: 'item',