refactor(FE-208,212): update PurchaseRequestForm validation for area and location fields, enhance error handling and conditional checks

This commit is contained in:
rstubryan
2025-11-03 14:29:24 +07:00
parent ae5a57277b
commit 4149c51a7b
2 changed files with 10 additions and 5 deletions
@@ -106,7 +106,10 @@ export const PurchaseRequestFormSchema: Yup.ObjectSchema<PurchaseRequestFormSche
}).nullable(),
area_id: Yup.number()
.required('Area wajib diisi!')
.min(1, 'Area wajib diisi!')
.test('is-valid-area', 'Area wajib diisi!', function (value) {
if (!this.parent.area) return true;
return Boolean(value && value > 0);
})
.typeError('Area wajib diisi!'),
location: Yup.object({
value: Yup.number().min(1).required(),
@@ -114,7 +117,10 @@ export const PurchaseRequestFormSchema: Yup.ObjectSchema<PurchaseRequestFormSche
}).nullable(),
location_id: Yup.number()
.required('Lokasi wajib diisi!')
.min(1, 'Lokasi wajib diisi!')
.test('is-valid-location', 'Lokasi wajib diisi!', function (value) {
if (!this.parent.location) return true;
return Boolean(value && value > 0);
})
.typeError('Lokasi wajib diisi!'),
credit_term: Yup.number()
.required('Termin kredit wajib diisi!')
@@ -543,7 +543,7 @@ const PurchaseRequestForm = ({
onInputChange={setAreaSelectInputValue}
isLoading={isLoadingAreas}
isError={
formik.touched.area_id && Boolean(formik.errors.area_id)
formik.touched.area && Boolean(formik.errors.area_id)
}
errorMessage={formik.errors.area_id as string}
isDisabled={type === 'detail'}
@@ -564,8 +564,7 @@ const PurchaseRequestForm = ({
onInputChange={setLocationSelectInputValue}
isLoading={isLoadingLocations}
isError={
formik.touched.location_id &&
Boolean(formik.errors.location_id)
formik.touched.location && Boolean(formik.errors.location_id)
}
errorMessage={formik.errors.location_id as string}
isDisabled={type === 'detail' || !formik.values.area_id}