refactor(FE): Refactor transaction type handling with useEffect

This commit is contained in:
rstubryan
2026-02-26 13:58:21 +07:00
parent a991150262
commit da1cdfb59e
@@ -360,6 +360,40 @@ const InventoryAdjustmentForm = ({
setSelectedProduct(product); setSelectedProduct(product);
}; };
useEffect(() => {
const transactionType = formik.values.transaction_type;
if (!transactionType) {
setSelectedTransactionSubtype(null);
formik.setFieldValue('transaction_subtype', '');
return;
}
setSelectedTransactionSubtype(null);
formik.setFieldValue('transaction_subtype', '');
formik.setFieldTouched('transaction_subtype', true);
if (transactionType === 'PEMBELIAN') {
formik.setFieldValue(
'transaction_subtype',
TRANSACTION_SUBTYPE_OPTIONS.PEMBELIAN.value
);
setSelectedTransactionSubtype({
value: TRANSACTION_SUBTYPE_OPTIONS.PEMBELIAN.value,
label: TRANSACTION_SUBTYPE_OPTIONS.PEMBELIAN.label,
});
} else if (transactionType === 'PENJUALAN') {
formik.setFieldValue(
'transaction_subtype',
TRANSACTION_SUBTYPE_OPTIONS.PENJUALAN.value
);
setSelectedTransactionSubtype({
value: TRANSACTION_SUBTYPE_OPTIONS.PENJUALAN.value,
label: TRANSACTION_SUBTYPE_OPTIONS.PENJUALAN.label,
});
}
}, [formik.values.transaction_type]);
const transactionTypeChangeHandler = ( const transactionTypeChangeHandler = (
val: OptionType | OptionType[] | null val: OptionType | OptionType[] | null
) => { ) => {
@@ -370,29 +404,6 @@ const InventoryAdjustmentForm = ({
formik.setFieldTouched('transaction_type', true); formik.setFieldTouched('transaction_type', true);
setSelectedTransactionType(typeOption); setSelectedTransactionType(typeOption);
setSelectedTransactionSubtype(null);
formik.setFieldValue('transaction_subtype', '');
if (selectedType === 'PEMBELIAN') {
formik.setFieldValue(
'transaction_subtype',
TRANSACTION_SUBTYPE_OPTIONS.PEMBELIAN.value
);
setSelectedTransactionSubtype({
value: TRANSACTION_SUBTYPE_OPTIONS.PEMBELIAN.value,
label: TRANSACTION_SUBTYPE_OPTIONS.PEMBELIAN.label,
});
} else if (selectedType === 'PENJUALAN') {
formik.setFieldValue(
'transaction_subtype',
TRANSACTION_SUBTYPE_OPTIONS.PENJUALAN.value
);
setSelectedTransactionSubtype({
value: TRANSACTION_SUBTYPE_OPTIONS.PENJUALAN.value,
label: TRANSACTION_SUBTYPE_OPTIONS.PENJUALAN.label,
});
}
}; };
const transactionSubtypeChangeHandler = ( const transactionSubtypeChangeHandler = (
@@ -527,7 +538,6 @@ const InventoryAdjustmentForm = ({
// ===== Formik Error List ===== // ===== Formik Error List =====
const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik); const { formErrorList, close, handleFormSubmit } = useFormikErrorList(formik);
// Render
return ( return (
<> <>
<section className='w-full'> <section className='w-full'>