diff --git a/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx b/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx index a1d4fae1..5717f4c1 100644 --- a/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx +++ b/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx @@ -252,7 +252,7 @@ const PurchaseOrderStaffApprovalForm = ({ (item) => item.id === purchaseItem.id ); return { - purchase_item_id: type === 'edit' ? purchaseItem.value : undefined, + purchase_item_id: purchaseItem.id, product_id: purchaseItem.product_id || 0, warehouse_id: purchaseItem.warehouse_id || 0, qty: purchaseItem.quantity || 0, @@ -266,36 +266,27 @@ const PurchaseOrderStaffApprovalForm = ({ }, [purchaseItems, type, initialValues]); // ===== PURCHASE ITEM OPERATIONS ===== - const findItemIndex = (purchaseItemId: number) => { - return purchaseItems.findIndex((item) => item.id === purchaseItemId); - }; - const handlePurchaseItemChange = ( purchaseItemId: number, field: 'price' | 'total_price', value: string | number ) => { - const itemIndex = findItemIndex(purchaseItemId); const formItemIndex = formik.values.items?.findIndex( (item) => item.purchase_item_id === purchaseItemId ); + const purchaseItem = purchaseItems.find( + (item) => item.id === purchaseItemId + ); - if (itemIndex === -1 || formItemIndex === -1) return; + if (formItemIndex === -1 || !purchaseItem) return; if (field === 'price' || field === 'total_price') { const numValue = typeof value === 'string' ? parseFloat(value) || 0 : value; formik.setFieldValue(`items.${formItemIndex}.${field}`, numValue); - const selectedItem = purchaseItems[itemIndex]; - - if ( - field === 'price' && - selectedItem && - selectedItem.quantity > 0 && - numValue >= 0 - ) { - const calculatedTotal = numValue * selectedItem.quantity; + if (field === 'price' && purchaseItem.quantity > 0 && numValue >= 0) { + const calculatedTotal = numValue * purchaseItem.quantity; formik.setFieldValue( `items.${formItemIndex}.total_price`, calculatedTotal @@ -304,11 +295,10 @@ const PurchaseOrderStaffApprovalForm = ({ if ( field === 'total_price' && - selectedItem && - selectedItem.quantity > 0 && + purchaseItem.quantity > 0 && numValue >= 0 ) { - const calculatedPrice = numValue / selectedItem.quantity; + const calculatedPrice = numValue / purchaseItem.quantity; formik.setFieldValue(`items.${formItemIndex}.price`, calculatedPrice); } } @@ -362,6 +352,11 @@ const PurchaseOrderStaffApprovalForm = ({ (item) => item.purchase_item_id === purchaseItem.id ); + const formItemIndex = + formik.values.items?.findIndex( + (item) => + item.purchase_item_id === purchaseItem.id + ); return (