diff --git a/src/app/production/recording/grading/add/page.tsx b/src/app/production/recording/grading/add/page.tsx index 2c1859cb..828930b3 100644 --- a/src/app/production/recording/grading/add/page.tsx +++ b/src/app/production/recording/grading/add/page.tsx @@ -35,7 +35,7 @@ const AddGrading = () => { {(!recordingId || recordingId === 'new' || (!isLoadingRecording && recording && isResponseSuccess(recording))) && ( - + )} ); diff --git a/src/app/production/recording/grading/detail/edit/page.tsx b/src/app/production/recording/grading/detail/edit/page.tsx index 4403e04a..0a65f528 100644 --- a/src/app/production/recording/grading/detail/edit/page.tsx +++ b/src/app/production/recording/grading/detail/edit/page.tsx @@ -41,7 +41,7 @@ const EditGrading = () => { {!isLoadingRecording && recording && isResponseSuccess(recording) && ( egg.id === parseInt(gradingId || '0') )} /> diff --git a/src/app/production/recording/grading/detail/page.tsx b/src/app/production/recording/grading/detail/page.tsx index afe1a5bc..6a5fbcba 100644 --- a/src/app/production/recording/grading/detail/page.tsx +++ b/src/app/production/recording/grading/detail/page.tsx @@ -4,7 +4,7 @@ import { useRouter, useSearchParams } from 'next/navigation'; import useSWR from 'swr'; import GradingForm from '@/components/pages/production/recording/grading/form/GradingForm'; import { RecordingApi } from '@/services/api/production'; -import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; +import { isResponseSuccess } from '@/lib/api-helper'; const DetailGrading = () => { const router = useRouter(); @@ -40,7 +40,7 @@ const DetailGrading = () => { {!isLoadingGrading && grading && isResponseSuccess(grading) && ( egg.id === parseInt(gradingId) )} /> diff --git a/src/components/pages/production/recording/form/RecordingForm.tsx b/src/components/pages/production/recording/form/RecordingForm.tsx index 23eb5a1e..85b3d78e 100644 --- a/src/components/pages/production/recording/form/RecordingForm.tsx +++ b/src/components/pages/production/recording/form/RecordingForm.tsx @@ -640,6 +640,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { RecordingGrowingFormValues | RecordingLayingFormValues >({ initialValues: formikInitialValues, + enableReinitialize: true, validationSchema: (() => { if (isLayingCategory) { return type === 'edit' @@ -915,14 +916,16 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { return; } - formik.setFieldValue('project_flock_kandang_id', projectFlockKandangId); + if (formik.values.project_flock_kandang_id !== projectFlockKandangId) { + formik.setFieldValue('project_flock_kandang_id', projectFlockKandangId); - formik.setFieldValue('project_flock_kandang', { - value: projectFlockKandangId, - label: projectFlockKandangLookup - ? `${projectFlockKandangLookup.project_flock.flock_name} - ${projectFlockKandangLookup.kandang.name}` - : `${selectedProjectFlock?.label || ''} - ${selectedKandang?.label || ''}`, - }); + formik.setFieldValue('project_flock_kandang', { + value: projectFlockKandangId, + label: projectFlockKandangLookup + ? `${projectFlockKandangLookup.project_flock.flock_name} - ${projectFlockKandangLookup.kandang.name}` + : `${selectedProjectFlock?.label || ''} - ${selectedKandang?.label || ''}`, + }); + } } }, [ projectFlockKandangLookup, @@ -930,6 +933,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { selectedKandang, type, recordedProjectFlockKandangIds, + formik.values.project_flock_kandang_id, ]); useEffect(() => { @@ -959,19 +963,29 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { }; setSelectedKandang(kandangOption); - formik.setFieldValue( - 'project_flock_kandang_id', + if ( + formik.values.project_flock_kandang_id !== projectFlockKandangDetail.id - ); - formik.setFieldValue('project_flock_kandang', { - value: projectFlockKandangDetail.id, - label: `${projectFlock.flock_name} - ${kandang.name}`, - }); + ) { + formik.setFieldValue( + 'project_flock_kandang_id', + projectFlockKandangDetail.id + ); + formik.setFieldValue('project_flock_kandang', { + value: projectFlockKandangDetail.id, + label: `${projectFlock.flock_name} - ${kandang.name}`, + }); + } } } } } - }, [projectFlockKandangDetail, type, projectFlockOptions]); + }, [ + projectFlockKandangDetail, + type, + projectFlockOptions, + formik.values.project_flock_kandang_id, + ]); const approveHandler = async () => { setIsApproveLoading(true); @@ -1345,31 +1359,41 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { Kembali - {type === 'detail' && !isRecordingApproved(initialValues) && (!isLayingCategory || hasGradingData(initialValues)) && ( - - approveModal.openModal()} - isLoading={isApproveLoading} - className='w-full sm:w-fit' - > - - Approve - + {type === 'detail' && + !isRecordingApproved(initialValues) && + (!isLayingCategory || hasGradingData(initialValues)) && ( + + approveModal.openModal()} + isLoading={isApproveLoading} + className='w-full sm:w-fit' + > + + Approve + - rejectModal.openModal()} - isLoading={isRejectLoading} - className='w-full sm:w-fit' - > - - Reject - - - )} + rejectModal.openModal()} + isLoading={isRejectLoading} + className='w-full sm:w-fit' + > + + Reject + + + )} @@ -2681,7 +2705,8 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => { {/* Approve Confirmation Modal */} {(type as 'add' | 'edit' | 'detail') === 'detail' && - !isRecordingApproved(initialValues) && (!isLayingCategory || hasGradingData(initialValues)) && ( + !isRecordingApproved(initialValues) && + (!isLayingCategory || hasGradingData(initialValues)) && ( { {/* Reject Confirmation Modal */} {(type as 'add' | 'edit' | 'detail') === 'detail' && - !isRecordingApproved(initialValues) && (!isLayingCategory || hasGradingData(initialValues)) && ( + !isRecordingApproved(initialValues) && + (!isLayingCategory || hasGradingData(initialValues)) && ( { @@ -190,19 +193,37 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => { recordingEggId = parseInt(recordingId || '0') || 0; } - return getRecordingGradingFormInitialValues({ - recording_egg_id: recordingEggId, - eggs_grading: - initialValues?.grading_eggs?.map((grading: GradingEgg) => ({ + let gradingData: { + recording_egg_id: number; + grade: string; + qty: number; + }[] = []; + + if (initialValues?.grading_eggs && initialValues.grading_eggs.length > 0) { + gradingData = initialValues.grading_eggs.map((grading: GradingEgg) => ({ + recording_egg_id: recordingEggId, + grade: grading.grade, + qty: grading.qty, + })); + } else if (initialValues?.gradings && initialValues.gradings.length > 0) { + gradingData = initialValues.gradings.map( + (grading: { grade: string; qty: number }) => ({ recording_egg_id: recordingEggId, grade: grading.grade, qty: grading.qty, - })) || [], + }) + ); + } + + return getRecordingGradingFormInitialValues({ + recording_egg_id: recordingEggId, + eggs_grading: gradingData, }); }, [initialValues, recordingId, konsumsiBaikEggId]); const formik = useFormik({ initialValues: formikInitialValues, + enableReinitialize: true, validationSchema: (() => { return type === 'edit' ? UpdateRecordingGradingFormSchema @@ -370,7 +391,7 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => { { recording_egg_id: konsumsiBaikEggId, grade: '', qty: '' }, ]); } - }, [konsumsiBaikEggId, formik.values.eggs_grading]); + }, [konsumsiBaikEggId, formik.values.eggs_grading.length]); return ( <>