From a81a61135ff97c14a592b9c16ed74f9d6f2fa913 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Tue, 30 Dec 2025 19:03:26 +0700 Subject: [PATCH] refactor(FE-435,436): Exclude null kandang_id from expense payload --- .../pages/expense/form/ExpenseRequestForm.tsx | 46 +++++++++++-------- src/types/api/expense.d.ts | 4 +- 2 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/components/pages/expense/form/ExpenseRequestForm.tsx b/src/components/pages/expense/form/ExpenseRequestForm.tsx index e8ad0843..78646e37 100644 --- a/src/components/pages/expense/form/ExpenseRequestForm.tsx +++ b/src/components/pages/expense/form/ExpenseRequestForm.tsx @@ -112,15 +112,20 @@ const ExpenseRequestForm = ({ transaction_date: values?.transaction_date as string, supplier_id: values.supplier?.value as number, documents: values.documents as File[], - expense_nonstocks: values.expense_nonstocks.map((expenseNonstock) => ({ - kandang_id: expenseNonstock.kandang_id ?? null, - cost_items: expenseNonstock.cost_items.map((costItem) => ({ - nonstock_id: costItem.nonstock?.value as number, - quantity: parseFloat(String(costItem.quantity)) as number, - price: parseFloat(String(costItem.price)) as number, - notes: costItem.notes ?? '', - })), - })), + expense_nonstocks: values.expense_nonstocks.map((expenseNonstock) => { + const basePayload = { + cost_items: expenseNonstock.cost_items.map((costItem) => ({ + nonstock_id: costItem.nonstock?.value as number, + quantity: parseFloat(String(costItem.quantity)) as number, + price: parseFloat(String(costItem.price)) as number, + notes: costItem.notes ?? '', + })), + }; + + return expenseNonstock.kandang_id !== null + ? { ...basePayload, kandang_id: expenseNonstock.kandang_id } + : basePayload; + }), }; switch (type) { @@ -136,15 +141,20 @@ const ExpenseRequestForm = ({ supplier_id: values.supplier?.value as number, documents: values.documents as File[], expense_nonstocks: values.expense_nonstocks.map( - (expenseNonstock) => ({ - kandang_id: expenseNonstock.kandang_id ?? null, - cost_items: expenseNonstock.cost_items.map((costItem) => ({ - nonstock_id: costItem.nonstock?.value as number, - quantity: parseFloat(String(costItem.quantity)) as number, - price: parseFloat(String(costItem.price)) as number, - notes: costItem.notes ?? '', - })), - }) + (expenseNonstock) => { + const basePayload = { + cost_items: expenseNonstock.cost_items.map((costItem) => ({ + nonstock_id: costItem.nonstock?.value as number, + quantity: parseFloat(String(costItem.quantity)) as number, + price: parseFloat(String(costItem.price)) as number, + notes: costItem.notes ?? '', + })), + }; + + return expenseNonstock.kandang_id !== null + ? { ...basePayload, kandang_id: expenseNonstock.kandang_id } + : basePayload; + } ), }; diff --git a/src/types/api/expense.d.ts b/src/types/api/expense.d.ts index 36657d90..12455cc8 100644 --- a/src/types/api/expense.d.ts +++ b/src/types/api/expense.d.ts @@ -62,7 +62,7 @@ export type CreateExpensePayload = { supplier_id: number; documents: File[]; expense_nonstocks: { - kandang_id: number | null; + kandang_id?: number; cost_items: { nonstock_id: number; quantity: number; @@ -79,7 +79,7 @@ export type UpdateExpensePayload = { supplier_id: number; documents: File[]; expense_nonstocks: { - kandang_id: number | null; + kandang_id?: number; cost_items: { nonstock_id: number; quantity: number;