mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE): Make vehicle/expedition/transport fields optional
This commit is contained in:
@@ -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
|
||||
<span className='text-error'>*</span>
|
||||
</th>
|
||||
<th>
|
||||
Nomor Kendaraan
|
||||
<span className='text-error'>*</span>
|
||||
</th>
|
||||
<th>
|
||||
Vendor Ekspedisi
|
||||
<span className='text-error'>*</span>
|
||||
</th>
|
||||
<th>Nomor Kendaraan</th>
|
||||
<th>Vendor Ekspedisi</th>
|
||||
<th>
|
||||
Jumlah Diterima
|
||||
<span className='text-error'>*</span>
|
||||
</th>
|
||||
<th>
|
||||
Transport/Item
|
||||
<span className='text-error'>*</span>
|
||||
</th>
|
||||
<th>Transport/Item</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -538,7 +532,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
||||
</td>
|
||||
<td>
|
||||
<TextInput
|
||||
required
|
||||
name={`items.${idx}.vehicle_number`}
|
||||
type='text'
|
||||
value={formItem?.vehicle_number || ''}
|
||||
@@ -564,7 +557,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
||||
</td>
|
||||
<td>
|
||||
<SelectInput
|
||||
required
|
||||
isClearable={true}
|
||||
value={formItem?.expedition_vendor}
|
||||
key={`expedition-vendor-${idx}`}
|
||||
@@ -633,7 +625,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
||||
</td>
|
||||
<td>
|
||||
<NumberInput
|
||||
required
|
||||
name={`items.${idx}.transport_per_item`}
|
||||
value={formItem?.transport_per_item || ''}
|
||||
onChange={(e) =>
|
||||
@@ -684,7 +675,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
||||
|
||||
<div className={'col-span-2 my-2'}>
|
||||
<FileInput
|
||||
required
|
||||
name='travel_documents'
|
||||
label='Dokumen Surat Jalan'
|
||||
accept='.pdf,.jpg,.jpeg,.png'
|
||||
|
||||
@@ -38,16 +38,16 @@ type PurchaseRequestAcceptApprovalFormSchemaType = {
|
||||
purchase_item_id: number;
|
||||
received_date: string;
|
||||
travel_number: string;
|
||||
vehicle_number: string;
|
||||
vehicle_number?: string | null;
|
||||
expedition_vendor?: {
|
||||
value: number;
|
||||
label: string;
|
||||
} | null;
|
||||
expedition_vendor_id: number;
|
||||
expedition_vendor_id?: number | null;
|
||||
received_qty: number | string;
|
||||
transport_per_item: number | string;
|
||||
transport_per_item?: number | string | null;
|
||||
}[];
|
||||
travel_documents: File[];
|
||||
travel_documents?: (File | null | undefined)[] | null;
|
||||
};
|
||||
|
||||
export type PurchaseStaffApprovalItemSchema = {
|
||||
@@ -75,14 +75,14 @@ export type PurchaseAcceptApprovalItemSchema = {
|
||||
purchase_item_id: number;
|
||||
received_date: string;
|
||||
travel_number: string;
|
||||
vehicle_number: string;
|
||||
vehicle_number?: string | null;
|
||||
expedition_vendor?: {
|
||||
value: number;
|
||||
label: string;
|
||||
} | null;
|
||||
expedition_vendor_id: number;
|
||||
expedition_vendor_id?: number | null;
|
||||
received_qty: number | string;
|
||||
transport_per_item: number | string;
|
||||
transport_per_item?: number | string | null;
|
||||
};
|
||||
|
||||
export type PurchaseDeleteItemsSchema = {
|
||||
@@ -184,15 +184,20 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
||||
.required('No. Surat jalan wajib diisi!')
|
||||
.typeError('No. Surat jalan wajib diisi!'),
|
||||
vehicle_number: Yup.string()
|
||||
.required('Nomor kendaraan wajib diisi!')
|
||||
.typeError('Nomor kendaraan wajib diisi!'),
|
||||
.nullable()
|
||||
.optional()
|
||||
.typeError('Nomor kendaraan harus berupa string!'),
|
||||
expedition_vendor: Yup.object({
|
||||
value: Yup.number().min(1).required(),
|
||||
label: Yup.string().required(),
|
||||
}).nullable(),
|
||||
})
|
||||
.nullable()
|
||||
.optional(),
|
||||
expedition_vendor_id: Yup.number()
|
||||
.min(1, 'Vendor ekspedisi wajib diisi!')
|
||||
.required('Vendor ekspedisi wajib diisi!')
|
||||
.nullable()
|
||||
.optional()
|
||||
.min(1, 'Vendor ekspedisi tidak valid!')
|
||||
.typeError('Vendor ekspedisi harus berupa angka!')
|
||||
.test(
|
||||
'is-valid-expedition-vendor',
|
||||
'Vendor ekspedisi harus dipilih!',
|
||||
@@ -200,8 +205,7 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
||||
if (!this.parent.expedition_vendor) return true;
|
||||
return Boolean(value && value > 0);
|
||||
}
|
||||
)
|
||||
.typeError('Vendor ekspedisi harus dipilih!'),
|
||||
),
|
||||
received_qty: Yup.mixed<string | number>()
|
||||
.required('Jumlah diterima wajib diisi!')
|
||||
.test(
|
||||
@@ -217,13 +221,14 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
||||
)
|
||||
.typeError('Jumlah diterima harus berupa angka!'),
|
||||
transport_per_item: Yup.mixed<string | number>()
|
||||
.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<PurchaseR
|
||||
travel_documents: Yup.array()
|
||||
.of(
|
||||
Yup.mixed<File>()
|
||||
.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 =
|
||||
|
||||
Vendored
+4
-4
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user