refactor(FE-212): enhance approval step logic in PurchaseOrderStaffApprovalForm for better item management

This commit is contained in:
rstubryan
2025-11-22 13:23:23 +07:00
parent ad79f29494
commit 09065f59cf
2 changed files with 27 additions and 10 deletions
@@ -891,7 +891,7 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
toast.error( toast.error(
`Tidak bisa memilih gudang yang sama. Gudang asal tidak boleh sama dengan ${destinationWarehouseName}.` `Tidak bisa memilih gudang yang sama. Gudang asal tidak boleh sama dengan ${destinationWarehouseName}.`
); );
return; // Prevent setting the value return;
} }
} }
@@ -60,14 +60,23 @@ const PurchaseOrderStaffApprovalForm = ({
return 'add'; return 'add';
} }
const firstApproval = rawDataApprovals[0]; const currentStep = initialValues?.approval?.step_number || 1;
const hasOnlyInitialStep =
rawDataApprovals.length === 1 &&
firstApproval?.step_number === 1 &&
('action' in firstApproval ? firstApproval.action === 'CREATED' : false);
return hasOnlyInitialStep ? 'add' : 'edit'; switch (currentStep) {
}, [rawDataApprovals, propType]); case 1:
// Step 1 (Pengajuan) - Ini dari @PurchaseRequestForm
return 'add';
case 2:
// Step 2 (Staff Purchase) - Staff approval pertama kali
return 'add';
case 3:
// Step 3 (Manager Purchase) - Manager approval, boleh edit/delete/add items
return 'edit';
default:
// Step 4+ (Penerimaan Barang dan selesai), tidak boleh edit kalau sudah disetujui
return 'edit';
}
}, [rawDataApprovals, propType, initialValues?.approval?.step_number]);
const router = useRouter(); const router = useRouter();
const searchParams = useSearchParams(); const searchParams = useSearchParams();
@@ -93,8 +102,16 @@ const PurchaseOrderStaffApprovalForm = ({
if (!initialValues?.approval) return false; if (!initialValues?.approval) return false;
const currentStep = initialValues.approval.step_number; const currentStep = initialValues.approval.step_number;
return currentStep < 4;
}, [initialValues?.approval]); // Step 2 (Staff Purchase) dengan mode 'add' tidak boleh add/delete items
// User hanya boleh input harga dan total harga untuk items yang sudah ada
if (currentStep === 2 && type === 'add') {
return false;
}
// Step 3 (Manager Purchase) boleh add/delete items
return currentStep === 3;
}, [initialValues?.approval, type]);
const isRepeaterInputError = ( const isRepeaterInputError = (
idx: number, idx: number,