refactor(FE-212): add quantity field handling in PurchaseOrderStaffApprovalForm for improved item updates

This commit is contained in:
rstubryan
2025-11-22 13:36:38 +07:00
parent 01b9595606
commit 62c3d2af53
@@ -579,7 +579,7 @@ const PurchaseOrderStaffApprovalForm = ({
const handlePurchaseItemChange = ( const handlePurchaseItemChange = (
idx: number, idx: number,
field: 'price' | 'total_price', field: 'price' | 'total_price' | 'qty',
value: string | number value: string | number
) => { ) => {
const formItem = formik.values.items?.[idx]; const formItem = formik.values.items?.[idx];
@@ -588,6 +588,16 @@ const PurchaseOrderStaffApprovalForm = ({
return; return;
} }
if (field === 'qty') {
const numValue =
typeof value === 'string' ? parseFloat(value) || 0 : value;
formik.setFieldValue(`items.${idx}.qty`, numValue);
formik.setFieldValue(`items.${idx}.price`, '');
formik.setFieldValue(`items.${idx}.total_price`, '');
}
if (field === 'price' || field === 'total_price') { if (field === 'price' || field === 'total_price') {
const numValue = const numValue =
typeof value === 'string' ? parseFloat(value) || 0 : value; typeof value === 'string' ? parseFloat(value) || 0 : value;
@@ -715,17 +725,18 @@ const PurchaseOrderStaffApprovalForm = ({
{type === 'edit' ? ( {type === 'edit' ? (
<NumberInput <NumberInput
name={`items.${formItemIndex}.qty`} name={`items.${formItemIndex}.qty`}
value={formItem?.qty || purchaseItem?.quantity || ''} value={
onChange={(e) => { formItem?.qty ||
const numValue = purchaseItem?.quantity ||
typeof e.target.value === 'string' ''
? parseFloat(e.target.value) || 0 }
: e.target.value; onChange={(e) =>
formik.setFieldValue( handlePurchaseItemChange(
`items.${formItemIndex}.qty`, formItemIndex,
numValue 'qty',
); e.target.value
}} )
}
onBlur={formik.handleBlur} onBlur={formik.handleBlur}
placeholder='Masukkan jumlah' placeholder='Masukkan jumlah'
allowNegative={false} allowNegative={false}
@@ -916,16 +927,13 @@ const PurchaseOrderStaffApprovalForm = ({
required required
name={`items.${idx}.qty`} name={`items.${idx}.qty`}
value={formItem?.qty || ''} value={formItem?.qty || ''}
onChange={(e) => { onChange={(e) =>
const numValue = handlePurchaseItemChange(
typeof e.target.value === 'string' idx,
? parseFloat(e.target.value) || 0 'qty',
: e.target.value; e.target.value
formik.setFieldValue( )
`items.${idx}.qty`, }
numValue
);
}}
onBlur={formik.handleBlur} onBlur={formik.handleBlur}
placeholder='Masukkan jumlah' placeholder='Masukkan jumlah'
allowNegative={false} allowNegative={false}