diff --git a/src/components/pages/master-data/production-standard/form/ProductionStandardForm.schema.ts b/src/components/pages/master-data/production-standard/form/ProductionStandardForm.schema.ts
index eb59a9c0..86951db9 100644
--- a/src/components/pages/master-data/production-standard/form/ProductionStandardForm.schema.ts
+++ b/src/components/pages/master-data/production-standard/form/ProductionStandardForm.schema.ts
@@ -32,7 +32,7 @@ const GrowingRepeaterFormSchema = Yup.object({
target_hen_house_production: Yup.number().optional(),
target_egg_weight: Yup.number().optional(),
target_egg_mass: Yup.number().optional(),
- standard_fcr: Yup.number().optional(),
+ standard_fcr: Yup.number().required('Wajib diisi!'),
}).optional(),
});
diff --git a/src/components/pages/master-data/production-standard/form/ProductionStandardForm.tsx b/src/components/pages/master-data/production-standard/form/ProductionStandardForm.tsx
index c445a840..1b490fbb 100644
--- a/src/components/pages/master-data/production-standard/form/ProductionStandardForm.tsx
+++ b/src/components/pages/master-data/production-standard/form/ProductionStandardForm.tsx
@@ -386,14 +386,6 @@ const ProductionStandardForm = ({
`${row.original.production_standard_details?.target_egg_mass} kg`,
enableSorting: false,
},
- {
- header: 'FCR',
- accessorFn: (row) =>
- row.production_standard_details?.standard_fcr,
- cell: ({ row }) =>
- `${row.original.production_standard_details?.standard_fcr} g`,
- enableSorting: false,
- },
]
: [];
@@ -468,6 +460,13 @@ const ProductionStandardForm = ({
return [
...baseColumns,
...productionColumns,
+ {
+ header: 'FCR',
+ accessorFn: (row) => row.production_standard_details?.standard_fcr,
+ cell: ({ row }) =>
+ `${row.original.production_standard_details?.standard_fcr} g`,
+ enableSorting: false,
+ },
...uniformityColumns,
...(formType !== 'detail' ? [actionColumn] : []),
];
@@ -753,24 +752,46 @@ const ProductionStandardForm = ({
e.preventDefault();
// For GROWING category, clear production_standard_details errors and set default values
+ // but preserve standard_fcr since it's used for both LAYING and GROWING
if (formik.values.project_category === 'GROWING') {
- // Set default values for production_standard_details
+ // Set default values for production_standard_details, preserving standard_fcr
formik.values.details?.forEach((detail) => {
detail.production_standard_details = {
target_hen_day_production: 0,
target_hen_house_production: 0,
target_egg_weight: 0,
target_egg_mass: 0,
- standard_fcr: 0,
+ standard_fcr:
+ detail.production_standard_details?.standard_fcr || 0,
};
});
- // Clear any errors related to production_standard_details
+ // Clear errors only for LAYING-specific fields in production_standard_details
+ // Preserve standard_fcr error since it's required for both categories
const currentErrors = { ...formik.errors };
if (currentErrors.details && Array.isArray(currentErrors.details)) {
const cleanedDetails = currentErrors.details
.map((detailError) => {
if (detailError && typeof detailError === 'object') {
+ const prodDetails = (
+ detailError as {
+ production_standard_details?: ProductionDetailsErrors;
+ }
+ ).production_standard_details;
+
+ // If there's standard_fcr error, preserve it
+ if (prodDetails && prodDetails.standard_fcr) {
+ const { production_standard_details, ...rest } =
+ detailError;
+ return {
+ ...rest,
+ production_standard_details: {
+ standard_fcr: prodDetails.standard_fcr,
+ },
+ };
+ }
+
+ // Otherwise, remove entire production_standard_details errors
const { production_standard_details, ...rest } = detailError;
return Object.keys(rest).length > 0 ? rest : undefined;
}
@@ -896,7 +917,7 @@ const ProductionStandardForm = ({
gridTemplateColumns:
formik.values.project_category === 'LAYING'
? 'repeat(10, minmax(auto, 1fr)) minmax(auto, auto)'
- : 'repeat(4, minmax(auto, 1fr)) minmax(auto, auto)',
+ : 'repeat(5, minmax(auto, 1fr)) minmax(auto, auto)',
}}
>
-
+ )}
+
- >
- )}
+ )
+ ) &&
+ getProductionDetailsTouched(
+ repeaterFormik.touched
+ .production_standard_details,
+ 'standard_fcr'
+ )
+ }
+ />