Tom Butcher 4a605ddc09 Enhance Purchase Order management with new actions and UI updates
- Updated NewPurchaseOrder component to set default state to 'draft'.
- Removed unnecessary item property display and added new properties for total amounts and shipping details.
- Introduced new PurchaseOrderInfo component to manage order items and shipments, including modals for creating new items and shipments, posting, acknowledging, and canceling orders.
- Enhanced PurchaseOrder model with new actions for editing, canceling edits, finishing edits, and deleting orders, along with updated visibility and disabled states based on order status.
- Added new properties to the PurchaseOrder model for better tracking of order states and financial details.
2025-12-27 13:52:50 +00:00

90 lines
2.4 KiB
JavaScript

import PropTypes from 'prop-types'
import ObjectInfo from '../../common/ObjectInfo'
import NewObjectForm from '../../common/NewObjectForm'
import WizardView from '../../common/WizardView'
const NewPurchaseOrder = ({ onOk, reset, defaultValues }) => {
return (
<NewObjectForm
type={'purchaseOrder'}
reset={reset}
defaultValues={{
state: { type: 'draft' },
...defaultValues
}}
>
{({ handleSubmit, submitLoading, objectData, formValid }) => {
const steps = [
{
title: 'Required',
key: 'required',
content: (
<ObjectInfo
type='purchaseOrder'
column={1}
bordered={false}
isEditing={true}
required={true}
objectData={objectData}
visibleProperties={{
_reference: false,
items: false,
cost: false
}}
/>
)
},
{
title: 'Summary',
key: 'summary',
content: (
<ObjectInfo
type='purchaseOrder'
column={1}
bordered={false}
visibleProperties={{
_id: false,
createdAt: false,
updatedAt: false,
_reference: false,
totalAmount: false,
totalAmountWithTax: false,
totalTaxAmount: false,
postedAt: false,
acknowledgedAt: false,
shippingAmount: false,
shippingAmountWithTax: false,
grandTotalAmount: false
}}
isEditing={false}
objectData={objectData}
/>
)
}
]
return (
<WizardView
steps={steps}
loading={submitLoading}
formValid={formValid}
title='New Purchase Order'
onSubmit={async () => {
const result = await handleSubmit()
if (result) {
onOk()
}
}}
/>
)
}}
</NewObjectForm>
)
}
NewPurchaseOrder.propTypes = {
onOk: PropTypes.func.isRequired,
reset: PropTypes.bool,
defaultValues: PropTypes.object
}
export default NewPurchaseOrder