refactor(FE): Toast warehouse duplicate error on validation

This commit is contained in:
rstubryan
2026-01-19 10:42:20 +07:00
parent dc2c2228a8
commit fb980c38c9
@@ -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);
}
}, },
[] []
); );