diff --git a/src/components/pages/finance/FinanceDetail.tsx b/src/components/pages/finance/FinanceDetail.tsx index 12d513d7..622fff6f 100644 --- a/src/components/pages/finance/FinanceDetail.tsx +++ b/src/components/pages/finance/FinanceDetail.tsx @@ -66,7 +66,11 @@ const FinanceDetail = ({ finance }: { finance: Finance }) => { }, { label: 'Nominal', - value: formatCurrency(Math.abs(finance.nominal)), + value: formatCurrency( + finance.transaction_type === 'INJECTION' + ? finance.nominal + : Math.abs(finance.nominal) + ), }, ].filter((item) => { // Hide party account number row if transaction type is INJECTION diff --git a/src/components/pages/finance/FinanceTable.tsx b/src/components/pages/finance/FinanceTable.tsx index d189195a..c1c7f079 100644 --- a/src/components/pages/finance/FinanceTable.tsx +++ b/src/components/pages/finance/FinanceTable.tsx @@ -416,7 +416,8 @@ const FinanceTable = () => { }, { header: 'Pemasukan (Rp)', - accessorFn: (finance: Finance) => formatCurrency(finance.income_amount), + accessorFn: (finance: Finance) => + formatCurrency(Math.abs(finance.income_amount)), }, { header: 'Aksi', diff --git a/src/components/pages/finance/add/injection/FormFinanceInjection.schema.ts b/src/components/pages/finance/add/injection/FormFinanceInjection.schema.ts index c6118af6..304bac18 100644 --- a/src/components/pages/finance/add/injection/FormFinanceInjection.schema.ts +++ b/src/components/pages/finance/add/injection/FormFinanceInjection.schema.ts @@ -5,6 +5,7 @@ import * as Yup from 'yup'; export type InjectionFormValues = { bank_id_option: OptionType | null; adjustment_date: string; + injection_type?: OptionType | null | undefined; nominal: string; note: string; }; @@ -18,6 +19,7 @@ export const InjectionFormSchema = Yup.object({ (value) => value !== null && value !== undefined ), adjustment_date: Yup.string().required('Tanggal penyesuaian wajib diisi'), + injection_type: Yup.mixed().nullable().required('Tipe injeksi wajib diisi'), nominal: Yup.string().required('Nominal wajib diisi'), note: Yup.string().required('Catatan wajib diisi'), }); diff --git a/src/components/pages/finance/add/injection/FormFinanceInjection.tsx b/src/components/pages/finance/add/injection/FormFinanceInjection.tsx index 07c8e61e..a4b77baf 100644 --- a/src/components/pages/finance/add/injection/FormFinanceInjection.tsx +++ b/src/components/pages/finance/add/injection/FormFinanceInjection.tsx @@ -28,6 +28,10 @@ import { useCallback, useMemo, useState } from 'react'; import toast from 'react-hot-toast'; import Alert from '@/components/Alert'; import { Icon } from '@iconify/react'; +import { + FINANCE_INJECTION_STATUS, + FINANCE_INJECTION_TYPE_OPTIONS, +} from '@/config/constant'; interface FormFinanceInjectionProps { type?: 'add' | 'edit'; @@ -51,6 +55,11 @@ const FormFinanceInjection = ({ } : null, adjustment_date: initialValues?.payment_date || '', + injection_type: initialValues?.nominal + ? initialValues.nominal < 0 + ? FINANCE_INJECTION_TYPE_OPTIONS[1] + : FINANCE_INJECTION_TYPE_OPTIONS[0] + : FINANCE_INJECTION_TYPE_OPTIONS[0], nominal: initialValues?.nominal?.toString() || '', note: initialValues?.notes || '', }; @@ -94,7 +103,10 @@ const FormFinanceInjection = ({ return { bank_id: Number(values.bank_id_option?.value) || 0, adjustment_date: formatDate(values.adjustment_date, 'YYYY-MM-DD'), - nominal: isNaN(Number(values.nominal)) ? 0 : Number(values.nominal), + nominal: + values.injection_type?.value == 'POSITIVE' + ? Math.abs(Number(values.nominal)) + : -Math.abs(Number(values.nominal)), notes: values.note, }; }; @@ -203,6 +215,24 @@ const FormFinanceInjection = ({ } required /> + { + formik.setFieldValue('injection_type', value); + }} + isError={Boolean( + formik.touched.injection_type && formik.errors.injection_type + )} + errorMessage={ + formik.touched.injection_type && formik.errors.injection_type + ? formik.errors.injection_type + : '' + } + required + /> + ) : formik.values.injection_type?.value === 'NEGATIVE' ? ( + + ) : ( + '' + ) + } />