From c24cf7ed1a63fa804fd629c95d8b667b808cb9aa Mon Sep 17 00:00:00 2001 From: randy-ar Date: Tue, 3 Feb 2026 14:39:34 +0700 Subject: [PATCH] fix(FE): adding standard fcr to growing production standard --- .../form/ProductionStandardForm.schema.ts | 2 +- .../form/ProductionStandardForm.tsx | 104 +++++++++++------- 2 files changed, 63 insertions(+), 43 deletions(-) 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' + ) + } + />