diff --git a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx index 2f619778..8585a091 100644 --- a/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx +++ b/src/components/pages/purchase/form/order/PurchaseOrderAcceptApprovalForm.tsx @@ -185,8 +185,8 @@ const PurchaseOrderAcceptApprovalForm = ({ purchase_item_id: formItem.purchase_item_id || 0, received_date: formItem.received_date || '', travel_number: formItem.travel_number || '', - vehicle_number: formItem.vehicle_number || '', - expedition_vendor_id: formItem.expedition_vendor_id || 0, + vehicle_number: formItem.vehicle_number || null, + expedition_vendor_id: formItem.expedition_vendor_id || null, received_qty: typeof formItem.received_qty === 'string' ? parseFloat(formItem.received_qty) || 0 @@ -194,10 +194,13 @@ const PurchaseOrderAcceptApprovalForm = ({ transport_per_item: typeof formItem.transport_per_item === 'string' ? parseFloat(formItem.transport_per_item) || 0 - : formItem.transport_per_item || 0, + : formItem.transport_per_item || null, }; }) || [], - travel_documents: values.travel_documents || [], + travel_documents: + values.travel_documents + ?.filter((file): file is File => file instanceof File) + .filter(Boolean) || undefined, }; switch (type) { @@ -405,22 +408,13 @@ const PurchaseOrderAcceptApprovalForm = ({ Dokumen Surat Jalan * - - Nomor Kendaraan - * - - - Vendor Ekspedisi - * - + Nomor Kendaraan + Vendor Ekspedisi Jumlah Diterima * - - Transport/Item - * - + Transport/Item @@ -538,7 +532,6 @@ const PurchaseOrderAcceptApprovalForm = ({ @@ -684,7 +675,6 @@ const PurchaseOrderAcceptApprovalForm = ({
0); } - ) - .typeError('Vendor ekspedisi harus dipilih!'), + ), received_qty: Yup.mixed() .required('Jumlah diterima wajib diisi!') .test( @@ -217,13 +221,14 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema() - .required('Biaya transport per item wajib diisi!') + .nullable() + .optional() .test( 'is-valid-transport-per-item', 'Biaya transport per item harus berupa angka lebih dari atau sama dengan 0!', function (value) { if (value === '' || value === null || value === undefined) - return false; + return true; const numValue = typeof value === 'string' ? parseFloat(value) : value; return !isNaN(numValue) && numValue >= 0; @@ -389,16 +394,17 @@ export const PurchaseRequestAcceptApprovalFormSchema: Yup.ObjectSchema() - .required('Dokumen surat jalan wajib diupload!') + .nullable() + .optional() .test('fileSize', 'Ukuran dokumen maksimal 5 MB', (value) => { if (!value) return true; if (value instanceof File) return value.size <= 5 * 1024 * 1024; return true; }) ) - .required('Dokumen surat jalan wajib diupload!') - .min(1, 'Minimal upload 1 dokumen surat jalan!') - .typeError('Dokumen surat jalan wajib diupload!'), + .nullable() + .optional() + .typeError('Dokumen surat jalan harus berupa array!'), }); export const PurchaseRequestAcceptApprovalFormInitialValues: PurchaseRequestAcceptApprovalFormSchemaType = diff --git a/src/types/api/purchase/purchase.d.ts b/src/types/api/purchase/purchase.d.ts index 34798ac3..9ad59f8b 100644 --- a/src/types/api/purchase/purchase.d.ts +++ b/src/types/api/purchase/purchase.d.ts @@ -120,12 +120,12 @@ export type CreateAcceptApprovalRequestPayload = { purchase_item_id: number; received_date: string; travel_number: string; - vehicle_number: string; - expedition_vendor_id: number; + vehicle_number?: string | null; + expedition_vendor_id?: number | null; received_qty: number; - transport_per_item: number; + transport_per_item?: number | null; }[]; - travel_documents?: File[]; + travel_documents?: File[] | null; }; export type DeletePurchaseRequestItemPayload = {