{createdUniformity ? (
) : selectedRowIds.length === 1 ? (
{
const files = Array.from(e.target.files || []);
+ const invalidFiles = files.filter(
+ (file) => file.size > 2 * 1024 * 1024
+ );
+
+ if (invalidFiles.length > 0) {
+ toast.error('Ukuran dokumen maksimal 2 MB!');
+ e.target.value = '';
+ return;
+ }
+
formik.setFieldValue('travel_documents', files);
}}
onBlur={formik.handleBlur}
diff --git a/src/components/pages/purchase/form/order/PurchaseOrderForm.schema.ts b/src/components/pages/purchase/form/order/PurchaseOrderForm.schema.ts
index bb70053f..07a868a3 100644
--- a/src/components/pages/purchase/form/order/PurchaseOrderForm.schema.ts
+++ b/src/components/pages/purchase/form/order/PurchaseOrderForm.schema.ts
@@ -312,7 +312,8 @@ export const PurchaseRequestStaffApprovalFormInitialValues: PurchaseRequestStaff
};
export const PurchaseRequestStaffApprovalFormDefaultValues = (
- purchase?: Purchase
+ purchase?: Purchase,
+ type?: 'add' | 'edit'
): PurchaseRequestStaffApprovalFormSchemaType => {
return {
action: 'APPROVED',
@@ -331,8 +332,18 @@ export const PurchaseRequestStaffApprovalFormDefaultValues = (
label: item.warehouse?.name || '',
},
qty: item.sub_qty || item.qty || 0,
- price: item.price,
- total_price: item.total_price,
+ price:
+ type === 'add'
+ ? 'ProductPrice' in item.product
+ ? item.product.ProductPrice || item.price || ''
+ : item.price
+ : item.price,
+ total_price:
+ type === 'add'
+ ? ('ProductPrice' in item.product
+ ? item.product.ProductPrice || item.price || 0
+ : item.price) * (item.sub_qty || item.qty || 0)
+ : item.total_price,
}))
: [
{
@@ -381,7 +392,15 @@ export const PurchaseRequestAcceptApprovalFormSchema: Yup.ObjectSchema().required())
+ .of(
+ Yup.mixed()
+ .required('Dokumen surat jalan wajib diupload!')
+ .test('fileSize', 'Ukuran dokumen maksimal 2 MB', (value) => {
+ if (!value) return true;
+ if (value instanceof File) return value.size <= 2 * 1024 * 1024;
+ return true;
+ })
+ )
.required('Dokumen surat jalan wajib diupload!')
.min(1, 'Minimal upload 1 dokumen surat jalan!')
.typeError('Dokumen surat jalan wajib diupload!'),
diff --git a/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx b/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx
index 76d9c11d..6a08e53b 100644
--- a/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx
+++ b/src/components/pages/purchase/form/order/PurchaseOrderStaffApprovalForm.tsx
@@ -294,9 +294,9 @@ const PurchaseOrderStaffApprovalForm = ({
// ===== FORM CONFIGURATION =====
const formikInitialValues = useMemo(() => {
return initialValues
- ? PurchaseRequestStaffApprovalFormDefaultValues(initialValues)
+ ? PurchaseRequestStaffApprovalFormDefaultValues(initialValues, type)
: PurchaseRequestStaffApprovalFormInitialValues;
- }, [initialValues]);
+ }, [initialValues, type]);
const formik = useFormik({
initialValues: formikInitialValues,
@@ -485,9 +485,18 @@ const PurchaseOrderStaffApprovalForm = ({
},
warehouse_id: purchaseItem.warehouse_id || 0,
qty: originalItem?.qty || purchaseItem.quantity || 0,
- price: type === 'edit' && originalItem ? originalItem.price : '',
+ price:
+ type === 'edit' && originalItem
+ ? originalItem.price
+ : originalItem?.product && 'ProductPrice' in originalItem.product
+ ? originalItem.product.ProductPrice || ''
+ : '',
total_price:
- type === 'edit' && originalItem ? originalItem.total_price : '',
+ type === 'edit' && originalItem
+ ? originalItem.total_price
+ : (originalItem?.product && 'ProductPrice' in originalItem.product
+ ? originalItem.product.ProductPrice || 0
+ : 0) * (originalItem?.qty || purchaseItem.quantity || 0),
};
return itemData;
});
@@ -1140,6 +1149,7 @@ const PurchaseOrderStaffApprovalForm = ({
color='warning'
className='px-4'
onClick={() => {
+ formik.setValues(formikInitialValues);
formik.resetForm();
setPurchaseOrderFormErrorMessage('');
onCancel?.();
diff --git a/src/types/api/inventory/product.d.ts b/src/types/api/inventory/product.d.ts
index cb8f98a1..f75e4060 100644
--- a/src/types/api/inventory/product.d.ts
+++ b/src/types/api/inventory/product.d.ts
@@ -10,6 +10,8 @@ export type BaseInventoryProduct = {
name: string;
brand: string;
sku: string;
+ ProductPrice: number;
+ SellingPrice?: number;
product_price: number;
selling_price?: number;
tax?: number;
diff --git a/src/types/api/production/uniformity.d.ts b/src/types/api/production/uniformity.d.ts
index 0ebc7ea9..0863c08a 100644
--- a/src/types/api/production/uniformity.d.ts
+++ b/src/types/api/production/uniformity.d.ts
@@ -1,7 +1,4 @@
import { BaseMetadata } from '@/types/api/api-general';
-import { Location } from '@/types/api/location/location';
-import { ProjectFlock } from '@/types/api/project-flock/project-flock';
-import { Kandang } from '@/types/api/kandang/kandang';
import { BaseApproval } from '@/types/api/approval/approval';
// ==================== GET ALL RESPONSE ====================
@@ -11,6 +8,7 @@ export type Uniformity = BaseMetadata & {
location_name: string;
flock_name: string;
kandang_name: string;
+ file_name: string;
applied_at: string;
week: number;
status: string;
diff --git a/src/types/api/purchase/purchase.d.ts b/src/types/api/purchase/purchase.d.ts
index 4e717f15..d355c2f8 100644
--- a/src/types/api/purchase/purchase.d.ts
+++ b/src/types/api/purchase/purchase.d.ts
@@ -10,6 +10,8 @@ export type PurchaseItemProduct = {
id: number;
name: string;
flags?: string[];
+ ProductPrice?: number;
+ SellingPrice?: number;
uom?: {
name: string;
};