Add 'fromType' and 'toType' fields to Invoice model; update NewInvoice component to handle new properties and enhance data handling.

This commit is contained in:
Tom Butcher 2026-06-21 18:36:19 +01:00
parent 6fd375b4c9
commit 08890bd5bf
2 changed files with 71 additions and 30 deletions

View File

@ -34,6 +34,8 @@ const NewInvoice = ({ onOk, reset, defaultValues }) => {
order: true, order: true,
to: true, to: true,
from: true, from: true,
toType: true,
fromType: true,
issuedAt: true, issuedAt: true,
dueAt: true dueAt: true
}} }}
@ -64,7 +66,9 @@ const NewInvoice = ({ onOk, reset, defaultValues }) => {
sentAt: false, sentAt: false,
paidAt: false, paidAt: false,
cancelledAt: false, cancelledAt: false,
overdueAt: false overdueAt: false,
acknowledgedAt: false,
postedAt: false
}} }}
isEditing={false} isEditing={false}
objectData={objectData} objectData={objectData}

View File

@ -233,23 +233,21 @@ export const Invoice = {
columnWidth: 175 columnWidth: 175
}, },
{ {
name: 'from', name: 'fromType',
label: 'From', label: 'From Type',
required: true, type: 'objectType',
type: 'object',
objectType: 'vendor',
showHyperlink: true,
readOnly: true,
columnWidth: 200,
value: (objectData) => { value: (objectData) => {
if (objectData?.orderType == 'purchaseOrder') { return objectData?.orderType == 'purchaseOrder'
return objectData?.order?.vendor ? 'vendor'
} else { : objectData?.fromType
return null },
} masterFilter: ['client', 'vendor'],
} readOnly: (objectData) => {
return objectData?.orderType == 'purchaseOrder' ? true : false
},
columnWidth: 150,
required: true
}, },
{ {
name: 'acknowledgedAt', name: 'acknowledgedAt',
label: 'Acknowledged At', label: 'Acknowledged At',
@ -257,24 +255,28 @@ export const Invoice = {
readOnly: true, readOnly: true,
columnWidth: 175 columnWidth: 175
}, },
{ {
name: 'to', name: 'from',
label: 'To', label: 'From',
required: true, required: true,
type: 'object', type: 'object',
objectType: 'client', objectType: (objectData) => {
return objectData?.fromType
},
showHyperlink: true, showHyperlink: true,
readOnly: true, readOnly: (objectData) => {
return objectData?.orderType == 'purchaseOrder' ? true : false
},
columnWidth: 200, columnWidth: 200,
value: (objectData) => { value: (objectData) => {
if (objectData?.orderType == 'salesOrder') { if (objectData?.orderType == 'purchaseOrder') {
return objectData?.to return objectData?.order?.vendor
} else { } else {
return null return objectData?.from
} }
} }
}, },
{ {
name: 'cancelledAt', name: 'cancelledAt',
label: 'Cancelled At', label: 'Cancelled At',
@ -283,6 +285,45 @@ export const Invoice = {
columnWidth: 175 columnWidth: 175
}, },
{
name: 'toType',
label: 'To Type',
type: 'objectType',
masterFilter: ['vendor', 'client'],
value: (objectData) => {
return objectData?.orderType == 'salesOrder'
? 'client'
: objectData?.toType
},
readOnly: (objectData) => {
return objectData?.orderType == 'salesOrder' ? true : false
},
columnWidth: 150,
required: true
},
{
name: 'to',
label: 'To',
required: true,
type: 'object',
objectType: (objectData) => {
return objectData?.toType
},
showHyperlink: true,
readOnly: (objectData) => {
return objectData?.orderType == 'salesOrder' ? true : false
},
columnWidth: 200,
value: (objectData) => {
if (objectData?.orderType == 'salesOrder') {
return objectData?.order?.client
} else {
return objectData?.to
}
}
},
{ {
name: 'totalTaxAmount', name: 'totalTaxAmount',
label: 'Total Tax Amount', label: 'Total Tax Amount',
@ -403,9 +444,7 @@ export const Invoice = {
) || 0 ) || 0
) )
} else if (objectData?.taxRate?.rateType == 'amount') { } else if (objectData?.taxRate?.rateType == 'amount') {
return ( return (invoiceAmount + objectData?.taxRate?.rate).toFixed(2) || 0
(invoiceAmount + objectData?.taxRate?.rate).toFixed(2) || 0
)
} }
return invoiceAmount return invoiceAmount
} }
@ -512,9 +551,7 @@ export const Invoice = {
) || 0 ) || 0
) )
} else if (objectData?.taxRate?.rateType == 'amount') { } else if (objectData?.taxRate?.rateType == 'amount') {
return ( return (invoiceAmount + objectData?.taxRate?.rate).toFixed(2) || 0
(invoiceAmount + objectData?.taxRate?.rate).toFixed(2) || 0
)
} }
return invoiceAmount return invoiceAmount
} }