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,
|
purchase_item_id: formItem.purchase_item_id || 0,
|
||||||
received_date: formItem.received_date || '',
|
received_date: formItem.received_date || '',
|
||||||
travel_number: formItem.travel_number || '',
|
travel_number: formItem.travel_number || '',
|
||||||
vehicle_number: formItem.vehicle_number || '',
|
vehicle_number: formItem.vehicle_number || null,
|
||||||
expedition_vendor_id: formItem.expedition_vendor_id || 0,
|
expedition_vendor_id: formItem.expedition_vendor_id || null,
|
||||||
received_qty:
|
received_qty:
|
||||||
typeof formItem.received_qty === 'string'
|
typeof formItem.received_qty === 'string'
|
||||||
? parseFloat(formItem.received_qty) || 0
|
? parseFloat(formItem.received_qty) || 0
|
||||||
@@ -194,10 +194,13 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
transport_per_item:
|
transport_per_item:
|
||||||
typeof formItem.transport_per_item === 'string'
|
typeof formItem.transport_per_item === 'string'
|
||||||
? parseFloat(formItem.transport_per_item) || 0
|
? 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) {
|
switch (type) {
|
||||||
@@ -405,22 +408,13 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
Dokumen Surat Jalan
|
Dokumen Surat Jalan
|
||||||
<span className='text-error'>*</span>
|
<span className='text-error'>*</span>
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>Nomor Kendaraan</th>
|
||||||
Nomor Kendaraan
|
<th>Vendor Ekspedisi</th>
|
||||||
<span className='text-error'>*</span>
|
|
||||||
</th>
|
|
||||||
<th>
|
|
||||||
Vendor Ekspedisi
|
|
||||||
<span className='text-error'>*</span>
|
|
||||||
</th>
|
|
||||||
<th>
|
<th>
|
||||||
Jumlah Diterima
|
Jumlah Diterima
|
||||||
<span className='text-error'>*</span>
|
<span className='text-error'>*</span>
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>Transport/Item</th>
|
||||||
Transport/Item
|
|
||||||
<span className='text-error'>*</span>
|
|
||||||
</th>
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -538,7 +532,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<TextInput
|
<TextInput
|
||||||
required
|
|
||||||
name={`items.${idx}.vehicle_number`}
|
name={`items.${idx}.vehicle_number`}
|
||||||
type='text'
|
type='text'
|
||||||
value={formItem?.vehicle_number || ''}
|
value={formItem?.vehicle_number || ''}
|
||||||
@@ -564,7 +557,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<SelectInput
|
<SelectInput
|
||||||
required
|
|
||||||
isClearable={true}
|
isClearable={true}
|
||||||
value={formItem?.expedition_vendor}
|
value={formItem?.expedition_vendor}
|
||||||
key={`expedition-vendor-${idx}`}
|
key={`expedition-vendor-${idx}`}
|
||||||
@@ -633,7 +625,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<NumberInput
|
<NumberInput
|
||||||
required
|
|
||||||
name={`items.${idx}.transport_per_item`}
|
name={`items.${idx}.transport_per_item`}
|
||||||
value={formItem?.transport_per_item || ''}
|
value={formItem?.transport_per_item || ''}
|
||||||
onChange={(e) =>
|
onChange={(e) =>
|
||||||
@@ -684,7 +675,6 @@ const PurchaseOrderAcceptApprovalForm = ({
|
|||||||
|
|
||||||
<div className={'col-span-2 my-2'}>
|
<div className={'col-span-2 my-2'}>
|
||||||
<FileInput
|
<FileInput
|
||||||
required
|
|
||||||
name='travel_documents'
|
name='travel_documents'
|
||||||
label='Dokumen Surat Jalan'
|
label='Dokumen Surat Jalan'
|
||||||
accept='.pdf,.jpg,.jpeg,.png'
|
accept='.pdf,.jpg,.jpeg,.png'
|
||||||
|
|||||||
@@ -38,16 +38,16 @@ type PurchaseRequestAcceptApprovalFormSchemaType = {
|
|||||||
purchase_item_id: number;
|
purchase_item_id: number;
|
||||||
received_date: string;
|
received_date: string;
|
||||||
travel_number: string;
|
travel_number: string;
|
||||||
vehicle_number: string;
|
vehicle_number?: string | null;
|
||||||
expedition_vendor?: {
|
expedition_vendor?: {
|
||||||
value: number;
|
value: number;
|
||||||
label: string;
|
label: string;
|
||||||
} | null;
|
} | null;
|
||||||
expedition_vendor_id: number;
|
expedition_vendor_id?: number | null;
|
||||||
received_qty: number | string;
|
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 = {
|
export type PurchaseStaffApprovalItemSchema = {
|
||||||
@@ -75,14 +75,14 @@ export type PurchaseAcceptApprovalItemSchema = {
|
|||||||
purchase_item_id: number;
|
purchase_item_id: number;
|
||||||
received_date: string;
|
received_date: string;
|
||||||
travel_number: string;
|
travel_number: string;
|
||||||
vehicle_number: string;
|
vehicle_number?: string | null;
|
||||||
expedition_vendor?: {
|
expedition_vendor?: {
|
||||||
value: number;
|
value: number;
|
||||||
label: string;
|
label: string;
|
||||||
} | null;
|
} | null;
|
||||||
expedition_vendor_id: number;
|
expedition_vendor_id?: number | null;
|
||||||
received_qty: number | string;
|
received_qty: number | string;
|
||||||
transport_per_item: number | string;
|
transport_per_item?: number | string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type PurchaseDeleteItemsSchema = {
|
export type PurchaseDeleteItemsSchema = {
|
||||||
@@ -184,15 +184,20 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
|||||||
.required('No. Surat jalan wajib diisi!')
|
.required('No. Surat jalan wajib diisi!')
|
||||||
.typeError('No. Surat jalan wajib diisi!'),
|
.typeError('No. Surat jalan wajib diisi!'),
|
||||||
vehicle_number: Yup.string()
|
vehicle_number: Yup.string()
|
||||||
.required('Nomor kendaraan wajib diisi!')
|
.nullable()
|
||||||
.typeError('Nomor kendaraan wajib diisi!'),
|
.optional()
|
||||||
|
.typeError('Nomor kendaraan harus berupa string!'),
|
||||||
expedition_vendor: Yup.object({
|
expedition_vendor: Yup.object({
|
||||||
value: Yup.number().min(1).required(),
|
value: Yup.number().min(1).required(),
|
||||||
label: Yup.string().required(),
|
label: Yup.string().required(),
|
||||||
}).nullable(),
|
})
|
||||||
|
.nullable()
|
||||||
|
.optional(),
|
||||||
expedition_vendor_id: Yup.number()
|
expedition_vendor_id: Yup.number()
|
||||||
.min(1, 'Vendor ekspedisi wajib diisi!')
|
.nullable()
|
||||||
.required('Vendor ekspedisi wajib diisi!')
|
.optional()
|
||||||
|
.min(1, 'Vendor ekspedisi tidak valid!')
|
||||||
|
.typeError('Vendor ekspedisi harus berupa angka!')
|
||||||
.test(
|
.test(
|
||||||
'is-valid-expedition-vendor',
|
'is-valid-expedition-vendor',
|
||||||
'Vendor ekspedisi harus dipilih!',
|
'Vendor ekspedisi harus dipilih!',
|
||||||
@@ -200,8 +205,7 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
|||||||
if (!this.parent.expedition_vendor) return true;
|
if (!this.parent.expedition_vendor) return true;
|
||||||
return Boolean(value && value > 0);
|
return Boolean(value && value > 0);
|
||||||
}
|
}
|
||||||
)
|
),
|
||||||
.typeError('Vendor ekspedisi harus dipilih!'),
|
|
||||||
received_qty: Yup.mixed<string | number>()
|
received_qty: Yup.mixed<string | number>()
|
||||||
.required('Jumlah diterima wajib diisi!')
|
.required('Jumlah diterima wajib diisi!')
|
||||||
.test(
|
.test(
|
||||||
@@ -217,13 +221,14 @@ const PurchaseAcceptApprovalItemObjectSchema: Yup.ObjectSchema<PurchaseAcceptApp
|
|||||||
)
|
)
|
||||||
.typeError('Jumlah diterima harus berupa angka!'),
|
.typeError('Jumlah diterima harus berupa angka!'),
|
||||||
transport_per_item: Yup.mixed<string | number>()
|
transport_per_item: Yup.mixed<string | number>()
|
||||||
.required('Biaya transport per item wajib diisi!')
|
.nullable()
|
||||||
|
.optional()
|
||||||
.test(
|
.test(
|
||||||
'is-valid-transport-per-item',
|
'is-valid-transport-per-item',
|
||||||
'Biaya transport per item harus berupa angka lebih dari atau sama dengan 0!',
|
'Biaya transport per item harus berupa angka lebih dari atau sama dengan 0!',
|
||||||
function (value) {
|
function (value) {
|
||||||
if (value === '' || value === null || value === undefined)
|
if (value === '' || value === null || value === undefined)
|
||||||
return false;
|
return true;
|
||||||
const numValue =
|
const numValue =
|
||||||
typeof value === 'string' ? parseFloat(value) : value;
|
typeof value === 'string' ? parseFloat(value) : value;
|
||||||
return !isNaN(numValue) && numValue >= 0;
|
return !isNaN(numValue) && numValue >= 0;
|
||||||
@@ -389,16 +394,17 @@ export const PurchaseRequestAcceptApprovalFormSchema: Yup.ObjectSchema<PurchaseR
|
|||||||
travel_documents: Yup.array()
|
travel_documents: Yup.array()
|
||||||
.of(
|
.of(
|
||||||
Yup.mixed<File>()
|
Yup.mixed<File>()
|
||||||
.required('Dokumen surat jalan wajib diupload!')
|
.nullable()
|
||||||
|
.optional()
|
||||||
.test('fileSize', 'Ukuran dokumen maksimal 5 MB', (value) => {
|
.test('fileSize', 'Ukuran dokumen maksimal 5 MB', (value) => {
|
||||||
if (!value) return true;
|
if (!value) return true;
|
||||||
if (value instanceof File) return value.size <= 5 * 1024 * 1024;
|
if (value instanceof File) return value.size <= 5 * 1024 * 1024;
|
||||||
return true;
|
return true;
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
.required('Dokumen surat jalan wajib diupload!')
|
.nullable()
|
||||||
.min(1, 'Minimal upload 1 dokumen surat jalan!')
|
.optional()
|
||||||
.typeError('Dokumen surat jalan wajib diupload!'),
|
.typeError('Dokumen surat jalan harus berupa array!'),
|
||||||
});
|
});
|
||||||
|
|
||||||
export const PurchaseRequestAcceptApprovalFormInitialValues: PurchaseRequestAcceptApprovalFormSchemaType =
|
export const PurchaseRequestAcceptApprovalFormInitialValues: PurchaseRequestAcceptApprovalFormSchemaType =
|
||||||
|
|||||||
Vendored
+4
-4
@@ -120,12 +120,12 @@ export type CreateAcceptApprovalRequestPayload = {
|
|||||||
purchase_item_id: number;
|
purchase_item_id: number;
|
||||||
received_date: string;
|
received_date: string;
|
||||||
travel_number: string;
|
travel_number: string;
|
||||||
vehicle_number: string;
|
vehicle_number?: string | null;
|
||||||
expedition_vendor_id: number;
|
expedition_vendor_id?: number | null;
|
||||||
received_qty: number;
|
received_qty: number;
|
||||||
transport_per_item: number;
|
transport_per_item?: number | null;
|
||||||
}[];
|
}[];
|
||||||
travel_documents?: File[];
|
travel_documents?: File[] | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type DeletePurchaseRequestItemPayload = {
|
export type DeletePurchaseRequestItemPayload = {
|
||||||
|
|||||||
Reference in New Issue
Block a user