feat(FE-113): create Transfer to Laying Create Form Schema

This commit is contained in:
ValdiANS
2025-10-21 15:09:33 +07:00
parent d9fa685ae6
commit 4127075b13
@@ -0,0 +1,83 @@
import * as Yup from 'yup';
type TransferToLayingFormSchemaType = {
transfer_date?: string;
flockSource?: {
value: number;
label: string;
};
flockDestination?: {
value: number;
label: string;
};
totalQuantity?: number;
maxTotalQuantity?: number; // original cap (hidden), helper
kandangs: {
kandang: {
value: number;
label: string;
};
quantity: number | string; // editable
maxQuantity?: number; // original cap (hidden), helper
}[];
reason?: string;
};
export const TransferToLayingFormSchema: Yup.ObjectSchema<TransferToLayingFormSchemaType> =
Yup.object({
transfer_date: Yup.string().required('Tanggal transfer wajib diisi!'),
flockSource: Yup.object({
value: Yup.number().min(1).required(),
label: Yup.string().required(),
}).required('Flock asal wajib diisi!'),
flockDestination: Yup.object({
value: Yup.number().min(1).required(),
label: Yup.string().required(),
}).required('Flock tujuan wajib diisi!'),
totalQuantity: Yup.number()
.min(1, 'Jumlah transfer minimal 1')
.max(
Yup.ref('maxTotalQuantity'),
({ max }) => `Kuantitas maksimal ${max}!`
)
.required('Jumlah transfer wajib diisi!'),
maxTotalQuantity: Yup.number()
.min(1, 'Jumlah transfer minimal 1')
.required('Jumlah transfer wajib diisi!'),
kandangs: Yup.array()
.of(
Yup.object({
kandang: Yup.object({
value: Yup.number().min(1).required(),
label: Yup.string().required(),
}).required('Kandang wajib diisi!'),
quantity: Yup.number()
.min(0, 'Kuantitas minimal 0!')
.max(
Yup.ref('maxQuantity'),
({ max }) => `Kuantitas maksimal ${max}!`
)
.required('Kuantitas wajib diisi!'),
maxQuantity: Yup.number().min(1).required(), // internal helper field
})
)
.min(1, 'Minimal 1 kandang terisi!')
.required('Kandang wajib diisi!'),
reason: Yup.string().required('Alasan transfer wajib diisi!'),
});
export const UpdateTransferToLayingFormSchema = TransferToLayingFormSchema;
export type TransferToLayingFormValues = Yup.InferType<
typeof TransferToLayingFormSchema
>;