Merge branch 'fix/marketing' into 'development'

[FIX/FE] Fixing Edit Product Sales Order per Row

See merge request mbugroup/lti-web-client!217
This commit is contained in:
Rivaldi A N S
2026-01-20 08:51:42 +00:00
3 changed files with 12 additions and 14 deletions
@@ -89,7 +89,6 @@ const MarketingDetail = ({
deleteModal.closeModal(); deleteModal.closeModal();
router.push('/marketing'); router.push('/marketing');
toast.success(res?.message as string); toast.success(res?.message as string);
refresh?.();
setIsLoading(false); setIsLoading(false);
}; };
@@ -507,7 +507,7 @@ const MarketingForm = ({
addSOModal.openModal(); addSOModal.openModal();
}, [addSOModal]); }, [addSOModal]);
const handleAddSubmitSO = useCallback( const handleAddSubmitSO = useCallback(
async (values: SalesOrderProductFormValues) => { async (values: SalesOrderProductFormValues, id?: number) => {
const currentProducts = formik.values.sales_order; const currentProducts = formik.values.sales_order;
const newValues = { const newValues = {
@@ -515,18 +515,12 @@ const MarketingForm = ({
id: values.id ?? Date.now(), id: values.id ?? Date.now(),
}; };
const existingIndex = currentProducts.findIndex(
(item) =>
item.kandang_id === newValues.kandang_id &&
item.product_warehouse_id === newValues.product_warehouse_id
);
let updatedProducts = []; let updatedProducts = [];
if (existingIndex !== -1) { if (id) {
// Overwrite // Overwrite
updatedProducts = currentProducts.map((item, index) => updatedProducts = currentProducts.map((item) =>
index === existingIndex ? newValues : item item.id === id ? newValues : item
); );
} else { } else {
// Add new item // Add new item
@@ -39,7 +39,10 @@ const SalesOrderProductForm = ({
initialValues?: SalesOrderProductFormValues; initialValues?: SalesOrderProductFormValues;
exisitingValues?: SalesOrderProductFormValues[]; exisitingValues?: SalesOrderProductFormValues[];
modalRef?: RefObject<HTMLDialogElement | null>; modalRef?: RefObject<HTMLDialogElement | null>;
onSubmitForm?: (value: SalesOrderProductFormValues) => Promise<void>; onSubmitForm?: (
value: SalesOrderProductFormValues,
id?: number
) => Promise<void>;
}) => { }) => {
const [formErrorMessage, setFormErrorMessage] = useState(''); const [formErrorMessage, setFormErrorMessage] = useState('');
const [currentInput, setCurrentInput] = useState<string>(''); const [currentInput, setCurrentInput] = useState<string>('');
@@ -76,7 +79,7 @@ const SalesOrderProductForm = ({
validationSchema: SalesOrderProductSchema, validationSchema: SalesOrderProductSchema,
onSubmit: async (values) => { onSubmit: async (values) => {
setFormErrorMessage(''); setFormErrorMessage('');
onSubmitForm?.(values); onSubmitForm?.(values, initialValues?.id);
handleResetForm(); handleResetForm();
}, },
validateOnBlur: true, validateOnBlur: true,
@@ -414,7 +417,9 @@ const SalesOrderProductForm = ({
/> />
</div> </div>
<AlertErrorList formErrorList={formErrorList} onClose={close} /> <div className='mt-4'>
<AlertErrorList formErrorList={formErrorList} onClose={close} />
</div>
<div className='flex flex-row justify-end gap-3 mt-4'> <div className='flex flex-row justify-end gap-3 mt-4'>
<Button type='reset' color='warning' onClick={handleResetForm}> <Button type='reset' color='warning' onClick={handleResetForm}>