mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 05:22:02 +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(),
|
||||
destination_warehouse_id: Yup.number()
|
||||
.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()
|
||||
.of(ProductObjectSchema)
|
||||
.min(1, 'Minimal harus ada 1 produk!')
|
||||
|
||||
@@ -745,6 +745,31 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
||||
}
|
||||
}, [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 (
|
||||
<>
|
||||
<section className='w-full'>
|
||||
@@ -828,10 +853,33 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
||||
formik.setFieldTouched('source_warehouse', true);
|
||||
formik.setFieldValue('source_warehouse', val);
|
||||
formik.setFieldTouched('source_warehouse_id', true);
|
||||
const newSourceWarehouseId = (val as WarehouseOptionType)
|
||||
?.value;
|
||||
formik.setFieldValue(
|
||||
'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}
|
||||
onInputChange={setWarehouseSelectInputValue}
|
||||
@@ -899,10 +947,33 @@ const MovementForm = ({ type = 'add', initialValues }: MovementFormProps) => {
|
||||
formik.setFieldTouched('destination_warehouse', true);
|
||||
formik.setFieldValue('destination_warehouse', val);
|
||||
formik.setFieldTouched('destination_warehouse_id', true);
|
||||
const newDestinationWarehouseId = (val as WarehouseOptionType)
|
||||
?.value;
|
||||
formik.setFieldValue(
|
||||
'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}
|
||||
onInputChange={setWarehouseSelectInputValue}
|
||||
|
||||
Reference in New Issue
Block a user