chore: adjust getFilledTransferToLayingFormInitialValues function to set max quantity for flock destination kandang

This commit is contained in:
ValdiANS
2026-01-24 11:21:31 +07:00
parent 4991b1160f
commit 42ebf1015f
@@ -1,7 +1,10 @@
import * as Yup from 'yup'; import * as Yup from 'yup';
import { TransferToLaying } from '@/types/api/production/transfer-to-laying'; import { TransferToLaying } from '@/types/api/production/transfer-to-laying';
import { TransferToLayingApi } from '@/services/api/production/transfer-to-laying'; import { TransferToLayingApi } from '@/services/api/production/transfer-to-laying';
import { formatDate } from '@/lib/helper'; import { formatDate, formatNumber } from '@/lib/helper';
import { ProjectFlock } from '@/types/api/production/project-flock';
import { ProjectFlockApi } from '@/services/api/production/project-flock';
import { isResponseSuccess } from '@/lib/api-helper';
type TransferToLayingFormSchemaType = { type TransferToLayingFormSchemaType = {
transfer_date?: string; transfer_date?: string;
@@ -14,7 +17,7 @@ type TransferToLayingFormSchemaType = {
label: string; label: string;
}; };
totalQuantity?: number; totalQuantity?: number | string;
maxTotalQuantity?: number; // original cap (hidden), helper maxTotalQuantity?: number; // original cap (hidden), helper
flockSourceKandangs: { flockSourceKandangs: {
@@ -53,15 +56,15 @@ export const TransferToLayingFormSchema: Yup.ObjectSchema<TransferToLayingFormSc
}).required('Flock tujuan wajib diisi!'), }).required('Flock tujuan wajib diisi!'),
totalQuantity: Yup.number() totalQuantity: Yup.number()
.min(1, 'Jumlah transfer minimal 1') .min(0, 'Jumlah transfer minimal 0')
.max( .max(
Yup.ref('maxTotalQuantity'), Yup.ref('maxTotalQuantity'),
({ max }) => `Kuantitas maksimal ${max}!` ({ max }) => `Kuantitas maksimal ${formatNumber(max)}!`
) )
.required('Jumlah transfer wajib diisi!'), .required('Jumlah transfer wajib diisi!'),
maxTotalQuantity: Yup.number() maxTotalQuantity: Yup.number()
.min(1, 'Jumlah transfer minimal 1') .min(0, 'Jumlah transfer minimal 0')
.required('Jumlah transfer wajib diisi!'), .required('Jumlah transfer wajib diisi!'),
flockSourceKandangs: Yup.array() flockSourceKandangs: Yup.array()
@@ -76,7 +79,7 @@ export const TransferToLayingFormSchema: Yup.ObjectSchema<TransferToLayingFormSc
.min(0, 'Kuantitas minimal 0!') .min(0, 'Kuantitas minimal 0!')
.max( .max(
Yup.ref('maxQuantity'), Yup.ref('maxQuantity'),
({ max }) => `Kuantitas maksimal ${max}!` ({ max }) => `Kuantitas maksimal ${formatNumber(max)}!`
) )
.required('Kuantitas wajib diisi!'), .required('Kuantitas wajib diisi!'),
@@ -98,7 +101,7 @@ export const TransferToLayingFormSchema: Yup.ObjectSchema<TransferToLayingFormSc
.min(0, 'Kuantitas minimal 0!') .min(0, 'Kuantitas minimal 0!')
.max( .max(
Yup.ref('maxQuantity'), Yup.ref('maxQuantity'),
({ max }) => `Kuantitas maksimal ${max}!` ({ max }) => `Kuantitas maksimal ${formatNumber(max)}!`
) )
.required('Kuantitas wajib diisi!'), .required('Kuantitas wajib diisi!'),
@@ -137,12 +140,12 @@ export const getTransferToLayingFormInitialValues = (
} }
: undefined, : undefined,
totalQuantity: totalQuantity:
initialValues?.usage_qty ?? initialValues?.pending_usage_qty ?? undefined, initialValues?.usage_qty ?? initialValues?.pending_usage_qty ?? '',
flockSourceKandangs: initialValues?.sources flockSourceKandangs: initialValues?.sources
? initialValues.sources.map((sourceKandang) => ({ ? initialValues.sources.map((sourceKandang) => ({
kandang: { kandang: {
value: sourceKandang.source_project_flock_kandang.kandang.id, value: sourceKandang.source_project_flock_kandang.id,
label: sourceKandang.source_project_flock_kandang.kandang.name, label: sourceKandang.source_project_flock_kandang.kandang.name,
}, },
quantity: sourceKandang.qty, quantity: sourceKandang.qty,
@@ -152,7 +155,7 @@ export const getTransferToLayingFormInitialValues = (
flockDestinationKandangs: initialValues?.targets flockDestinationKandangs: initialValues?.targets
? initialValues.targets.map((targetKandang) => ({ ? initialValues.targets.map((targetKandang) => ({
kandang: { kandang: {
value: targetKandang.target_project_flock_kandang.kandang.id, value: targetKandang.target_project_flock_kandang.id,
label: targetKandang.target_project_flock_kandang.kandang.name, label: targetKandang.target_project_flock_kandang.kandang.name,
}, },
quantity: targetKandang.qty, quantity: targetKandang.qty,
@@ -174,7 +177,7 @@ export const getFilledTransferToLayingFormInitialValues = async (
const formattedFlockSourceKandangs = initialValues?.sources const formattedFlockSourceKandangs = initialValues?.sources
? initialValues.sources.map((sourceKandang) => ({ ? initialValues.sources.map((sourceKandang) => ({
kandang: { kandang: {
value: sourceKandang.source_project_flock_kandang.kandang.id, value: sourceKandang.source_project_flock_kandang.id,
label: sourceKandang.source_project_flock_kandang.kandang.name, label: sourceKandang.source_project_flock_kandang.kandang.name,
}, },
quantity: sourceKandang.qty, quantity: sourceKandang.qty,
@@ -189,9 +192,35 @@ export const getFilledTransferToLayingFormInitialValues = async (
let maxTotalQuantity = 0; let maxTotalQuantity = 0;
formattedFlockSourceKandangs.forEach((item) => { formattedFlockSourceKandangs.forEach((item) => {
maxTotalQuantity += item.maxQuantity; maxTotalQuantity += item.quantity;
}); });
const flockDestination = await ProjectFlockApi.getSingle(
initialValues?.to_project_flock.id as number
);
const formattedFlockDestinationKandangs = initialValues?.targets
? initialValues.targets.map((targetKandang) => {
const kandang = isResponseSuccess(flockDestination)
? flockDestination?.data?.kandangs.find(
(kandang) =>
String(kandang.project_flock_kandang_id) ===
String(targetKandang.target_project_flock_kandang.id)
)
: undefined;
return {
kandang: {
value: targetKandang.target_project_flock_kandang.id,
label: targetKandang.target_project_flock_kandang.kandang.name,
},
quantity: targetKandang.qty,
maxQuantity: kandang?.capacity ?? 0,
};
})
: [];
return { return {
transfer_date: initialValues?.transfer_date transfer_date: initialValues?.transfer_date
? formatDate(initialValues.transfer_date, 'YYYY-MM-DD') ? formatDate(initialValues.transfer_date, 'YYYY-MM-DD')
@@ -214,21 +243,7 @@ export const getFilledTransferToLayingFormInitialValues = async (
flockSourceKandangs: formattedFlockSourceKandangs, flockSourceKandangs: formattedFlockSourceKandangs,
flockDestinationKandangs: initialValues?.targets flockDestinationKandangs: formattedFlockDestinationKandangs,
? initialValues.targets.map((targetKandang) => ({
kandang: {
value: targetKandang.target_project_flock_kandang.kandang.id,
label: targetKandang.target_project_flock_kandang.kandang.name,
},
quantity: targetKandang.qty,
// maxQuantity:
// targetKandang.target_project_flock_kandang.kandang.capacity,
// TODO: integrate this to real API kandang capacity
maxQuantity: Infinity,
}))
: [],
reason: initialValues?.notes ?? undefined, reason: initialValues?.notes ?? undefined,
}; };