mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +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 = () => {
|
||||
setFormErrorMessage('');
|
||||
formik.resetForm({
|
||||
@@ -364,20 +383,24 @@ const DeliveryOrderProductForm = ({
|
||||
avg_weight: '',
|
||||
total_weight: '',
|
||||
vehicle_number: '',
|
||||
week: null,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const soFieldValues = SalesProductToFieldValues(so);
|
||||
|
||||
formik.setValues({
|
||||
...formik.values,
|
||||
marketing_product_id: selected.value as number,
|
||||
marketing_product: SalesProductToFieldValues(so),
|
||||
marketing_product: soFieldValues,
|
||||
qty: so.qty,
|
||||
unit_price: so.unit_price,
|
||||
total_price: so.total_price,
|
||||
avg_weight: so.avg_weight,
|
||||
total_weight: so.total_weight,
|
||||
vehicle_number: so.vehicle_number,
|
||||
week: soFieldValues.week ?? null,
|
||||
});
|
||||
}}
|
||||
startAdornment={
|
||||
@@ -511,10 +534,14 @@ const DeliveryOrderProductForm = ({
|
||||
)}
|
||||
|
||||
{/* Konversi Satuan Week Pullet */}
|
||||
{formik.values.marketing_type?.value.toLowerCase() ===
|
||||
'ayam_pullet' && (
|
||||
{(formik.values.marketing_type?.value.toLowerCase() ===
|
||||
'ayam_pullet' ||
|
||||
hasWeekField) && (
|
||||
<NumberInput
|
||||
required
|
||||
required={
|
||||
formik.values.marketing_type?.value.toLowerCase() ===
|
||||
'ayam_pullet'
|
||||
}
|
||||
label='Minggu'
|
||||
name='week'
|
||||
value={formik.values.week ?? undefined}
|
||||
|
||||
@@ -117,6 +117,19 @@ const SalesOrderProductForm = ({
|
||||
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 =====
|
||||
const {
|
||||
options: kandangSourceOptions,
|
||||
@@ -180,10 +193,20 @@ const SalesOrderProductForm = ({
|
||||
setSelectedProductWarehouse(productWarehouse || null);
|
||||
formik.setFieldValue('qty', productWarehouse?.quantity);
|
||||
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');
|
||||
} else {
|
||||
formik.setFieldValue('qty', '');
|
||||
formik.setFieldValue('uom', '');
|
||||
formik.setFieldValue('week', null);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -465,10 +488,14 @@ const SalesOrderProductForm = ({
|
||||
)}
|
||||
|
||||
{/* Konversi Satuan Week Pullet */}
|
||||
{formik.values.marketing_type?.value.toLowerCase() ===
|
||||
'ayam_pullet' && (
|
||||
{(formik.values.marketing_type?.value.toLowerCase() ===
|
||||
'ayam_pullet' ||
|
||||
hasWeekField) && (
|
||||
<NumberInput
|
||||
required
|
||||
required={
|
||||
formik.values.marketing_type?.value.toLowerCase() ===
|
||||
'ayam_pullet'
|
||||
}
|
||||
label='Minggu'
|
||||
name='week'
|
||||
value={formik.values.week ?? undefined}
|
||||
|
||||
@@ -512,13 +512,9 @@ export const FILTER_TYPE_OPTIONS = [
|
||||
];
|
||||
|
||||
export const MARKETING_TYPE_OPTIONS = [
|
||||
{
|
||||
label: 'Ayam Pullet',
|
||||
value: 'AYAM_PULLET',
|
||||
},
|
||||
{
|
||||
label: 'Ayam',
|
||||
value: 'AYAM',
|
||||
value: 'AYAM,AYAM_PULLET',
|
||||
},
|
||||
{
|
||||
label: 'Trading',
|
||||
|
||||
@@ -11,6 +11,7 @@ export type BaseProductWarehouse = {
|
||||
quantity: number;
|
||||
product: Product;
|
||||
warehouse: Warehouse;
|
||||
week?: number | null;
|
||||
};
|
||||
|
||||
export type ProductWarehouse = BaseMetadata & BaseProductWarehouse;
|
||||
|
||||
Reference in New Issue
Block a user