feat(FE-337): slicing ui form add finance

This commit is contained in:
randy-ar
2025-12-24 18:45:33 +07:00
parent 8c95dc8327
commit 4ddd1dc8e3
12 changed files with 499 additions and 29 deletions
@@ -0,0 +1,75 @@
import * as Yup from 'yup';
import { OptionType } from '@/components/input/SelectInput';
/**
* API Payload format:
* {
"party_id": 1,
"party_type": "CUSTOMER",
"payment_date": "2025-11-21",
"payment_method": "Transfer",
"bank_id": 1,
"reference_number": "DO.MBU.123",
"nominal": 25000000,
"notes": "Pembayaran piutang penjualan telur"
}
*/
// Type for API payload (what gets sent to the server)
export type FinancePayload = {
party_id: number;
party_type: string;
payment_date: string;
payment_method: string;
bank_id: number;
reference_number: string;
nominal: number;
notes: string;
};
// Type for form values (includes option objects for SelectInput)
export type FinanceFormValues = {
party_type_option: OptionType | null;
party_id_option: OptionType | null;
party_account_number: string;
payment_date: string;
payment_method_option: OptionType | null;
bank_id_option: OptionType | null;
reference_number: string;
nominal: string;
notes: string;
};
export const FinanceFormSchema = Yup.object().shape({
party_type_option: Yup.object({
label: Yup.string().required('Wajib Diisi'),
value: Yup.string().required('Wajib Diisi'),
})
.nullable()
.required('Jenis transaksi wajib diisi'),
party_id_option: Yup.object({
label: Yup.string().required('Wajib Diisi'),
value: Yup.number().required('Wajib Diisi'),
})
.nullable()
.required('Pihak wajib diisi'),
party_account_number: Yup.string().required('Nomor rekening wajib diisi'),
payment_date: Yup.string().required('Tanggal pembayaran wajib diisi'),
payment_method_option: Yup.object({
label: Yup.string().required('Wajib Diisi'),
value: Yup.string().required('Wajib Diisi'),
})
.nullable()
.required('Metode pembayaran wajib diisi'),
bank_id_option: Yup.object({
label: Yup.string().required('Wajib Diisi'),
value: Yup.number().required('Wajib Diisi'),
})
.nullable()
.required('Bank wajib diisi'),
reference_number: Yup.string().required('Nomor referensi wajib diisi'),
nominal: Yup.string().required('Nominal wajib diisi'),
notes: Yup.string().required('Catatan wajib diisi'),
});
export const UpdateFinanceFormSchema = FinanceFormSchema;