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 = (
idx: number,
field: 'price' | 'total_price',
field: 'price' | 'total_price' | 'qty',
value: string | number
) => {
const formItem = formik.values.items?.[idx];
@@ -588,6 +588,16 @@ const PurchaseOrderStaffApprovalForm = ({
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') {
const numValue =
typeof value === 'string' ? parseFloat(value) || 0 : value;
@@ -715,17 +725,18 @@ const PurchaseOrderStaffApprovalForm = ({
{type === 'edit' ? (
<NumberInput
name={`items.${formItemIndex}.qty`}
value={formItem?.qty || purchaseItem?.quantity || ''}
onChange={(e) => {
const numValue =
typeof e.target.value === 'string'
? parseFloat(e.target.value) || 0
: e.target.value;
formik.setFieldValue(
`items.${formItemIndex}.qty`,
numValue
);
}}
value={
formItem?.qty ||
purchaseItem?.quantity ||
''
}
onChange={(e) =>
handlePurchaseItemChange(
formItemIndex,
'qty',
e.target.value
)
}
onBlur={formik.handleBlur}
placeholder='Masukkan jumlah'
allowNegative={false}
@@ -916,16 +927,13 @@ const PurchaseOrderStaffApprovalForm = ({
required
name={`items.${idx}.qty`}
value={formItem?.qty || ''}
onChange={(e) => {
const numValue =
typeof e.target.value === 'string'
? parseFloat(e.target.value) || 0
: e.target.value;
formik.setFieldValue(
`items.${idx}.qty`,
numValue
);
}}
onChange={(e) =>
handlePurchaseItemChange(
idx,
'qty',
e.target.value
)
}
onBlur={formik.handleBlur}
placeholder='Masukkan jumlah'
allowNegative={false}