fix(FE): fixing issue form not reset after success submit

This commit is contained in:
randy-ar
2026-02-05 06:05:01 +07:00
parent 43dcbf73ee
commit 2f1c4e3c87
4 changed files with 22 additions and 6 deletions
@@ -296,6 +296,7 @@ const SalesOrderFormModal = ({
// ================== HANDLER ================== // ================== HANDLER ==================
const nextButtonHandler = () => { const nextButtonHandler = () => {
setSelectedMarketingProduct(null);
setStep(step + 1); setStep(step + 1);
}; };
const prevButtonHandler = () => { const prevButtonHandler = () => {
@@ -667,6 +668,7 @@ const SalesOrderFormModal = ({
</div> </div>
<div className='flex flex-1 flex-col'> <div className='flex flex-1 flex-col'>
<MemoizedSalesOrderProductForm <MemoizedSalesOrderProductForm
key={selectedMarketingProduct?.id ?? 'new'}
onSubmitForm={handleAddSubmitSO} onSubmitForm={handleAddSubmitSO}
initialValues={selectedMarketingProduct ?? undefined} initialValues={selectedMarketingProduct ?? undefined}
exisitingValues={memoSalesOrder} exisitingValues={memoSalesOrder}
@@ -109,6 +109,7 @@ export const SalesProductToFieldValues = (
value: product.product_warehouse.id, value: product.product_warehouse.id,
label: product.product_warehouse.product.name, label: product.product_warehouse.product.name,
}, },
product_warehouse_data: product.product_warehouse,
product_warehouse_id: product.product_warehouse.id, product_warehouse_id: product.product_warehouse.id,
unit_price: product.unit_price, unit_price: product.unit_price,
total_weight: product.total_weight, total_weight: product.total_weight,
@@ -135,6 +136,7 @@ export const SalesProductToFieldValues = (
: null, : null,
total_peti: product.total_peti, total_peti: product.total_peti,
weight_per_convertion: product.weight_per_convertion, weight_per_convertion: product.weight_per_convertion,
uom: product.product_warehouse.product.uom.name,
}; };
}; };
export const DeliveryProductToFieldValues = ( export const DeliveryProductToFieldValues = (
@@ -1,3 +1,4 @@
import { ProductWarehouse } from '@/types/api/inventory/product-warehouse';
import * as Yup from 'yup'; import * as Yup from 'yup';
type SalesOrderProductSchemaType = { type SalesOrderProductSchemaType = {
@@ -11,6 +12,7 @@ type SalesOrderProductSchemaType = {
value: number; value: number;
label: string; label: string;
} | null; } | null;
product_warehouse_data?: ProductWarehouse | null | undefined;
product_warehouse_id?: number; product_warehouse_id?: number;
unit_price: string | number | undefined; unit_price: string | number | undefined;
total_weight: string | number | undefined; total_weight: string | number | undefined;
@@ -63,6 +65,10 @@ export const SalesOrderProductSchema: Yup.ObjectSchema<SalesOrderProductSchemaTy
.required('Produk wajib diisi!'), .required('Produk wajib diisi!'),
label: Yup.string().required('Produk wajib diisi!'), label: Yup.string().required('Produk wajib diisi!'),
}).nullable(), }).nullable(),
product_warehouse_data: Yup.mixed<ProductWarehouse>()
.nullable()
.optional()
.notRequired(),
product_warehouse_id: Yup.number() product_warehouse_id: Yup.number()
.min(1, 'Produk wajib diisi!') .min(1, 'Produk wajib diisi!')
.required('Produk wajib diisi!'), .required('Produk wajib diisi!'),
@@ -179,14 +179,18 @@ const SalesOrderProductForm = ({
); );
setSelectedProductWarehouse(productWarehouse || null); setSelectedProductWarehouse(productWarehouse || null);
formik.setFieldValue('qty', productWarehouse?.quantity); formik.setFieldValue('qty', productWarehouse?.quantity);
formik.setFieldValue('uom', productWarehouse?.product?.uom?.name || '');
handleBlurField('qty'); handleBlurField('qty');
} else { } else {
formik.setFieldValue('qty', ''); formik.setFieldValue('qty', '');
formik.setFieldValue('uom', '');
} }
}; };
const handleResetForm = () => { const handleResetForm = () => {
setFormErrorMessage(''); setFormErrorMessage('');
setHasSisaBerat(false);
setSelectedProductWarehouse(null);
formik.resetForm({ formik.resetForm({
values: { values: {
vehicle_number: '', vehicle_number: '',
@@ -569,11 +573,13 @@ const SalesOrderProductForm = ({
errorMessage={formik.errors.qty} errorMessage={formik.errors.qty}
placeholder='Masukan Kuantitas' placeholder='Masukan Kuantitas'
endAdornment={ endAdornment={
<div className='flex items-center gap-2'> formik.values.uom ? (
<span className='text-sm text-base-content/50'> <div className='flex items-center gap-2'>
{selectedProductWarehouse?.product?.uom?.name} <span className='text-sm text-base-content/50'>
</span> {formik.values.uom}
</div> </span>
</div>
) : undefined
} }
bottomLabel={ bottomLabel={
isResponseSuccess(warehouseSourceRawData) && isResponseSuccess(warehouseSourceRawData) &&
@@ -582,7 +588,7 @@ const SalesOrderProductForm = ({
warehouseSourceRawData?.data?.find( warehouseSourceRawData?.data?.find(
(item) => item.id === formik.values.product_warehouse_id (item) => item.id === formik.values.product_warehouse_id
)?.quantity ?? 0 )?.quantity ?? 0
)} ${selectedProductWarehouse?.product?.uom?.name}` )} ${formik.values.uom}`
: '' : ''
} }
/> />