mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-208,212): improve credit term handling and validation in PurchaseRequestForm
This commit is contained in:
@@ -338,7 +338,7 @@ const PurchaseRequestForm = ({
|
|||||||
(s: Supplier) => s.id === supplierId
|
(s: Supplier) => s.id === supplierId
|
||||||
);
|
);
|
||||||
if (supplierData?.due_date) {
|
if (supplierData?.due_date) {
|
||||||
formik.setFieldTouched('credit_term', true);
|
formik.setFieldTouched('credit_term', false);
|
||||||
formik.setFieldValue('credit_term', supplierData.due_date.toString());
|
formik.setFieldValue('credit_term', supplierData.due_date.toString());
|
||||||
} else {
|
} else {
|
||||||
formik.setFieldTouched('credit_term', false);
|
formik.setFieldTouched('credit_term', false);
|
||||||
@@ -364,9 +364,13 @@ const PurchaseRequestForm = ({
|
|||||||
|
|
||||||
// ===== SIDE EFFECTS =====
|
// ===== SIDE EFFECTS =====
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (formik.values.supplier_id) {
|
if (formik.values.supplier_id && Number(formik.values.supplier_id) > 0) {
|
||||||
updateCreditTermBasedOnSupplier(Number(formik.values.supplier_id));
|
updateCreditTermBasedOnSupplier(Number(formik.values.supplier_id));
|
||||||
resetPurchaseItems();
|
resetPurchaseItems();
|
||||||
|
} else {
|
||||||
|
formik.setFieldTouched('credit_term', false);
|
||||||
|
formik.setFieldValue('credit_term', '');
|
||||||
|
resetPurchaseItems();
|
||||||
}
|
}
|
||||||
}, [formik.values.supplier_id]);
|
}, [formik.values.supplier_id]);
|
||||||
|
|
||||||
@@ -384,6 +388,23 @@ const PurchaseRequestForm = ({
|
|||||||
[]
|
[]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const handleCreditTermChange = useCallback(
|
||||||
|
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
const value = e.target.value;
|
||||||
|
|
||||||
|
formik.setFieldTouched('credit_term', true);
|
||||||
|
formik.setFieldValue('credit_term', value);
|
||||||
|
},
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
const handleCreditTermBlur = useCallback(
|
||||||
|
(e: React.FocusEvent<HTMLInputElement>) => {
|
||||||
|
formik.handleBlur(e);
|
||||||
|
},
|
||||||
|
[formik]
|
||||||
|
);
|
||||||
|
|
||||||
const handleAreaChange = useCallback(
|
const handleAreaChange = useCallback(
|
||||||
(val: OptionType | OptionType[] | null) => {
|
(val: OptionType | OptionType[] | null) => {
|
||||||
const area = val as OptionType | null;
|
const area = val as OptionType | null;
|
||||||
@@ -488,8 +509,8 @@ const PurchaseRequestForm = ({
|
|||||||
label='Jatuh tempo (hari)'
|
label='Jatuh tempo (hari)'
|
||||||
name='credit_term'
|
name='credit_term'
|
||||||
value={formik.values.credit_term || ''}
|
value={formik.values.credit_term || ''}
|
||||||
onChange={formik.handleChange}
|
onChange={handleCreditTermChange}
|
||||||
onBlur={formik.handleBlur}
|
onBlur={handleCreditTermBlur}
|
||||||
isError={
|
isError={
|
||||||
formik.touched.credit_term &&
|
formik.touched.credit_term &&
|
||||||
Boolean(formik.errors.credit_term)
|
Boolean(formik.errors.credit_term)
|
||||||
|
|||||||
Reference in New Issue
Block a user