mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-24 15:25:46 +00:00
refactor(FE): Add week field handling for marketing and sales order
forms
This commit is contained in:
+31
-4
@@ -180,6 +180,25 @@ const DeliveryOrderProductForm = ({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const hasWeekField = useMemo(() => {
|
||||||
|
const marketingType = formik.values.marketing_type?.value?.toLowerCase();
|
||||||
|
if (marketingType === 'ayam_pullet') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (formik.values.marketing_product?.product_warehouse_data) {
|
||||||
|
return Boolean(
|
||||||
|
formik.values.marketing_product?.product_warehouse_data?.week !==
|
||||||
|
undefined &&
|
||||||
|
formik.values.marketing_product?.product_warehouse_data?.week !==
|
||||||
|
null &&
|
||||||
|
formik.values.marketing_product?.product_warehouse_data?.week > 0
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}, [formik.values.marketing_product, formik.values.marketing_type]);
|
||||||
|
|
||||||
const handleResetForm = () => {
|
const handleResetForm = () => {
|
||||||
setFormErrorMessage('');
|
setFormErrorMessage('');
|
||||||
formik.resetForm({
|
formik.resetForm({
|
||||||
@@ -364,20 +383,24 @@ const DeliveryOrderProductForm = ({
|
|||||||
avg_weight: '',
|
avg_weight: '',
|
||||||
total_weight: '',
|
total_weight: '',
|
||||||
vehicle_number: '',
|
vehicle_number: '',
|
||||||
|
week: null,
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const soFieldValues = SalesProductToFieldValues(so);
|
||||||
|
|
||||||
formik.setValues({
|
formik.setValues({
|
||||||
...formik.values,
|
...formik.values,
|
||||||
marketing_product_id: selected.value as number,
|
marketing_product_id: selected.value as number,
|
||||||
marketing_product: SalesProductToFieldValues(so),
|
marketing_product: soFieldValues,
|
||||||
qty: so.qty,
|
qty: so.qty,
|
||||||
unit_price: so.unit_price,
|
unit_price: so.unit_price,
|
||||||
total_price: so.total_price,
|
total_price: so.total_price,
|
||||||
avg_weight: so.avg_weight,
|
avg_weight: so.avg_weight,
|
||||||
total_weight: so.total_weight,
|
total_weight: so.total_weight,
|
||||||
vehicle_number: so.vehicle_number,
|
vehicle_number: so.vehicle_number,
|
||||||
|
week: soFieldValues.week ?? null,
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
startAdornment={
|
startAdornment={
|
||||||
@@ -511,10 +534,14 @@ const DeliveryOrderProductForm = ({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Konversi Satuan Week Pullet */}
|
{/* Konversi Satuan Week Pullet */}
|
||||||
{formik.values.marketing_type?.value.toLowerCase() ===
|
{(formik.values.marketing_type?.value.toLowerCase() ===
|
||||||
'ayam_pullet' && (
|
'ayam_pullet' ||
|
||||||
|
hasWeekField) && (
|
||||||
<NumberInput
|
<NumberInput
|
||||||
required
|
required={
|
||||||
|
formik.values.marketing_type?.value.toLowerCase() ===
|
||||||
|
'ayam_pullet'
|
||||||
|
}
|
||||||
label='Minggu'
|
label='Minggu'
|
||||||
name='week'
|
name='week'
|
||||||
value={formik.values.week ?? undefined}
|
value={formik.values.week ?? undefined}
|
||||||
|
|||||||
@@ -117,6 +117,19 @@ const SalesOrderProductForm = ({
|
|||||||
isInitialValid: false,
|
isInitialValid: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const hasWeekField = useMemo(() => {
|
||||||
|
const marketingType = formik.values.marketing_type?.value?.toLowerCase();
|
||||||
|
if (marketingType === 'ayam_pullet') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Boolean(
|
||||||
|
selectedProductWarehouse?.week !== undefined &&
|
||||||
|
selectedProductWarehouse?.week !== null &&
|
||||||
|
selectedProductWarehouse?.week > 0
|
||||||
|
);
|
||||||
|
}, [selectedProductWarehouse, formik.values.marketing_type]);
|
||||||
|
|
||||||
// ===== Options =====
|
// ===== Options =====
|
||||||
const {
|
const {
|
||||||
options: kandangSourceOptions,
|
options: kandangSourceOptions,
|
||||||
@@ -180,10 +193,20 @@ const SalesOrderProductForm = ({
|
|||||||
setSelectedProductWarehouse(productWarehouse || null);
|
setSelectedProductWarehouse(productWarehouse || null);
|
||||||
formik.setFieldValue('qty', productWarehouse?.quantity);
|
formik.setFieldValue('qty', productWarehouse?.quantity);
|
||||||
formik.setFieldValue('uom', productWarehouse?.product?.uom?.name || '');
|
formik.setFieldValue('uom', productWarehouse?.product?.uom?.name || '');
|
||||||
|
if (
|
||||||
|
productWarehouse?.week !== undefined &&
|
||||||
|
productWarehouse?.week !== null &&
|
||||||
|
productWarehouse?.week > 0
|
||||||
|
) {
|
||||||
|
formik.setFieldValue('week', productWarehouse.week);
|
||||||
|
} else {
|
||||||
|
formik.setFieldValue('week', null);
|
||||||
|
}
|
||||||
handleBlurField('qty');
|
handleBlurField('qty');
|
||||||
} else {
|
} else {
|
||||||
formik.setFieldValue('qty', '');
|
formik.setFieldValue('qty', '');
|
||||||
formik.setFieldValue('uom', '');
|
formik.setFieldValue('uom', '');
|
||||||
|
formik.setFieldValue('week', null);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -465,10 +488,14 @@ const SalesOrderProductForm = ({
|
|||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Konversi Satuan Week Pullet */}
|
{/* Konversi Satuan Week Pullet */}
|
||||||
{formik.values.marketing_type?.value.toLowerCase() ===
|
{(formik.values.marketing_type?.value.toLowerCase() ===
|
||||||
'ayam_pullet' && (
|
'ayam_pullet' ||
|
||||||
|
hasWeekField) && (
|
||||||
<NumberInput
|
<NumberInput
|
||||||
required
|
required={
|
||||||
|
formik.values.marketing_type?.value.toLowerCase() ===
|
||||||
|
'ayam_pullet'
|
||||||
|
}
|
||||||
label='Minggu'
|
label='Minggu'
|
||||||
name='week'
|
name='week'
|
||||||
value={formik.values.week ?? undefined}
|
value={formik.values.week ?? undefined}
|
||||||
|
|||||||
@@ -512,13 +512,9 @@ export const FILTER_TYPE_OPTIONS = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const MARKETING_TYPE_OPTIONS = [
|
export const MARKETING_TYPE_OPTIONS = [
|
||||||
{
|
|
||||||
label: 'Ayam Pullet',
|
|
||||||
value: 'AYAM_PULLET',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: 'Ayam',
|
label: 'Ayam',
|
||||||
value: 'AYAM',
|
value: 'AYAM,AYAM_PULLET',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Trading',
|
label: 'Trading',
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ export type BaseProductWarehouse = {
|
|||||||
quantity: number;
|
quantity: number;
|
||||||
product: Product;
|
product: Product;
|
||||||
warehouse: Warehouse;
|
warehouse: Warehouse;
|
||||||
|
week?: number | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type ProductWarehouse = BaseMetadata & BaseProductWarehouse;
|
export type ProductWarehouse = BaseMetadata & BaseProductWarehouse;
|
||||||
|
|||||||
Reference in New Issue
Block a user