mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-208): add validation to ensure destination warehouse is different from source warehouse in MovementForm
This commit is contained in:
@@ -171,7 +171,15 @@ export const MovementFormSchema: Yup.ObjectSchema<MovementFormSchemaType> =
|
|||||||
}).nullable(),
|
}).nullable(),
|
||||||
destination_warehouse_id: Yup.number()
|
destination_warehouse_id: Yup.number()
|
||||||
.required('Gudang tujuan wajib diisi!')
|
.required('Gudang tujuan wajib diisi!')
|
||||||
.typeError('Gudang tujuan wajib diisi!'),
|
.typeError('Gudang tujuan wajib diisi!')
|
||||||
|
.test(
|
||||||
|
'different-warehouse',
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!',
|
||||||
|
function (value) {
|
||||||
|
const { source_warehouse_id } = this.parent;
|
||||||
|
return !value || !source_warehouse_id || value !== source_warehouse_id;
|
||||||
|
}
|
||||||
|
),
|
||||||
products: Yup.array()
|
products: Yup.array()
|
||||||
.of(ProductObjectSchema)
|
.of(ProductObjectSchema)
|
||||||
.min(1, 'Minimal harus ada 1 produk!')
|
.min(1, 'Minimal harus ada 1 produk!')
|
||||||
|
|||||||
@@ -745,6 +745,31 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
}
|
}
|
||||||
}, [formik.values.source_warehouse_id]);
|
}, [formik.values.source_warehouse_id]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (
|
||||||
|
formik.values.source_warehouse_id &&
|
||||||
|
formik.values.destination_warehouse_id &&
|
||||||
|
formik.values.source_warehouse_id ===
|
||||||
|
formik.values.destination_warehouse_id
|
||||||
|
) {
|
||||||
|
formik.setFieldError(
|
||||||
|
'destination_warehouse_id',
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (
|
||||||
|
formik.errors.destination_warehouse_id ===
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
||||||
|
) {
|
||||||
|
formik.setFieldError('destination_warehouse_id', undefined);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [
|
||||||
|
formik.values.source_warehouse_id,
|
||||||
|
formik.values.destination_warehouse_id,
|
||||||
|
formik.errors.destination_warehouse_id,
|
||||||
|
]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<section className='w-full'>
|
<section className='w-full'>
|
||||||
@@ -828,10 +853,33 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
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);
|
||||||
|
const newSourceWarehouseId = (val as WarehouseOptionType)
|
||||||
|
?.value;
|
||||||
formik.setFieldValue(
|
formik.setFieldValue(
|
||||||
'source_warehouse_id',
|
'source_warehouse_id',
|
||||||
(val as WarehouseOptionType)?.value
|
newSourceWarehouseId
|
||||||
);
|
);
|
||||||
|
if (
|
||||||
|
newSourceWarehouseId &&
|
||||||
|
formik.values.destination_warehouse_id &&
|
||||||
|
newSourceWarehouseId ===
|
||||||
|
formik.values.destination_warehouse_id
|
||||||
|
) {
|
||||||
|
formik.setFieldError(
|
||||||
|
'destination_warehouse_id',
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (
|
||||||
|
formik.errors.destination_warehouse_id ===
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
||||||
|
) {
|
||||||
|
formik.setFieldError(
|
||||||
|
'destination_warehouse_id',
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
options={warehouseOptions}
|
options={warehouseOptions}
|
||||||
onInputChange={setWarehouseSelectInputValue}
|
onInputChange={setWarehouseSelectInputValue}
|
||||||
@@ -899,10 +947,33 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
|||||||
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);
|
||||||
|
const newDestinationWarehouseId = (val as WarehouseOptionType)
|
||||||
|
?.value;
|
||||||
formik.setFieldValue(
|
formik.setFieldValue(
|
||||||
'destination_warehouse_id',
|
'destination_warehouse_id',
|
||||||
(val as WarehouseOptionType)?.value
|
newDestinationWarehouseId
|
||||||
);
|
);
|
||||||
|
if (
|
||||||
|
newDestinationWarehouseId &&
|
||||||
|
formik.values.source_warehouse_id &&
|
||||||
|
newDestinationWarehouseId ===
|
||||||
|
formik.values.source_warehouse_id
|
||||||
|
) {
|
||||||
|
formik.setFieldError(
|
||||||
|
'destination_warehouse_id',
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
if (
|
||||||
|
formik.errors.destination_warehouse_id ===
|
||||||
|
'Gudang tujuan tidak boleh sama dengan gudang asal!'
|
||||||
|
) {
|
||||||
|
formik.setFieldError(
|
||||||
|
'destination_warehouse_id',
|
||||||
|
undefined
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
options={warehouseOptions}
|
options={warehouseOptions}
|
||||||
onInputChange={setWarehouseSelectInputValue}
|
onInputChange={setWarehouseSelectInputValue}
|
||||||
|
|||||||
Reference in New Issue
Block a user