mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE): Toast warehouse duplicate error on validation
This commit is contained in:
@@ -263,6 +263,25 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ===== WAREHOUSE VALIDATION TOAST =====
|
||||||
|
useEffect(() => {
|
||||||
|
const destinationWarehouseError = formik.errors
|
||||||
|
.destination_warehouse_id as string;
|
||||||
|
|
||||||
|
if (
|
||||||
|
destinationWarehouseError ===
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
||||||
|
) {
|
||||||
|
const sourceWarehouseName =
|
||||||
|
(formik.values.source_warehouse as WarehouseOptionType)?.label ||
|
||||||
|
'gudang asal';
|
||||||
|
|
||||||
|
toast.error(
|
||||||
|
`Tidak bisa memilih gudang yang sama. Gudang tujuan tidak boleh sama dengan ${sourceWarehouseName}.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, [formik.errors.destination_warehouse_id, formik.values.source_warehouse]);
|
||||||
|
|
||||||
// ===== PRODUCT WAREHOUSE FETCHING (after form initialization) =====
|
// ===== PRODUCT WAREHOUSE FETCHING (after form initialization) =====
|
||||||
const {
|
const {
|
||||||
setInputValue: setProductWarehouseSelectInputValue,
|
setInputValue: setProductWarehouseSelectInputValue,
|
||||||
@@ -361,59 +380,10 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
(val: OptionType | OptionType[] | null) => {
|
(val: OptionType | OptionType[] | null) => {
|
||||||
const newSourceWarehouseId = (val as WarehouseOptionType)?.value;
|
const newSourceWarehouseId = (val as WarehouseOptionType)?.value;
|
||||||
|
|
||||||
if (newSourceWarehouseId) {
|
|
||||||
if (newSourceWarehouseId === formik.values.destination_warehouse_id) {
|
|
||||||
const destinationWarehouseName =
|
|
||||||
(formik.values.destination_warehouse as WarehouseOptionType)
|
|
||||||
?.label || 'gudang tujuan';
|
|
||||||
|
|
||||||
toast.error(
|
|
||||||
`Tidak bisa memilih gudang yang sama. Gudang asal tidak boleh sama dengan ${destinationWarehouseName}.`
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
formik.setFieldTouched('source_warehouse', true);
|
formik.setFieldTouched('source_warehouse', true);
|
||||||
formik.setFieldValue('source_warehouse', val);
|
formik.setFieldValue('source_warehouse', val);
|
||||||
formik.setFieldTouched('source_warehouse_id', true);
|
formik.setFieldTouched('source_warehouse_id', true);
|
||||||
formik.setFieldValue('source_warehouse_id', newSourceWarehouseId);
|
formik.setFieldValue('source_warehouse_id', newSourceWarehouseId);
|
||||||
|
|
||||||
if (
|
|
||||||
formik.errors.destination_warehouse_id ===
|
|
||||||
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
|
||||||
) {
|
|
||||||
formik.setFieldError('destination_warehouse_id', undefined);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
newSourceWarehouseId &&
|
|
||||||
newSourceWarehouseId !== formik.values.source_warehouse_id
|
|
||||||
) {
|
|
||||||
formik.setFieldValue('products', [
|
|
||||||
{
|
|
||||||
product: null,
|
|
||||||
product_id: 0,
|
|
||||||
product_qty: '',
|
|
||||||
},
|
|
||||||
]);
|
|
||||||
formik.setFieldTouched('products', false);
|
|
||||||
|
|
||||||
const updatedDeliveries = formik.values.deliveries.map(
|
|
||||||
(delivery: DeliverySchema) => ({
|
|
||||||
...delivery,
|
|
||||||
products: [
|
|
||||||
{
|
|
||||||
product: null,
|
|
||||||
product_id: 0,
|
|
||||||
product_qty: '',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
);
|
|
||||||
formik.setFieldValue('deliveries', updatedDeliveries);
|
|
||||||
formik.setFieldTouched('deliveries', false);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
@@ -422,19 +392,6 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
(val: OptionType | OptionType[] | null) => {
|
(val: OptionType | OptionType[] | null) => {
|
||||||
const newDestinationWarehouseId = (val as WarehouseOptionType)?.value;
|
const newDestinationWarehouseId = (val as WarehouseOptionType)?.value;
|
||||||
|
|
||||||
if (newDestinationWarehouseId) {
|
|
||||||
if (newDestinationWarehouseId === formik.values.source_warehouse_id) {
|
|
||||||
const sourceWarehouseName =
|
|
||||||
(formik.values.source_warehouse as WarehouseOptionType)?.label ||
|
|
||||||
'gudang asal';
|
|
||||||
|
|
||||||
toast.error(
|
|
||||||
`Tidak bisa memilih gudang yang sama. Gudang tujuan tidak boleh sama dengan ${sourceWarehouseName}.`
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
formik.setFieldTouched('destination_warehouse', true);
|
formik.setFieldTouched('destination_warehouse', true);
|
||||||
formik.setFieldValue('destination_warehouse', val);
|
formik.setFieldValue('destination_warehouse', val);
|
||||||
formik.setFieldTouched('destination_warehouse_id', true);
|
formik.setFieldTouched('destination_warehouse_id', true);
|
||||||
@@ -442,13 +399,6 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
'destination_warehouse_id',
|
'destination_warehouse_id',
|
||||||
newDestinationWarehouseId
|
newDestinationWarehouseId
|
||||||
);
|
);
|
||||||
|
|
||||||
if (
|
|
||||||
formik.errors.destination_warehouse_id ===
|
|
||||||
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
|
||||||
) {
|
|
||||||
formik.setFieldError('destination_warehouse_id', undefined);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user