diff --git a/src/components/pages/production/recording/grading/form/GradingForm.tsx b/src/components/pages/production/recording/grading/form/GradingForm.tsx
index 1cc418ee..c7e2aa26 100644
--- a/src/components/pages/production/recording/grading/form/GradingForm.tsx
+++ b/src/components/pages/production/recording/grading/form/GradingForm.tsx
@@ -256,6 +256,8 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
}, [formik.values.eggs_grading]);
const isGradingExceedsAvailable = currentGradingTotal > totalKonsumsiBaikEggs;
+ const isGradingIncomplete = currentGradingTotal < totalKonsumsiBaikEggs && totalKonsumsiBaikEggs > 0;
+ const hasUserStartedGrading = currentGradingTotal > 0;
// GRADING HANDLERS
const addGrading = () => {
@@ -355,10 +357,21 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
duration: 3000,
}
);
+ toast.dismiss('grading-incomplete');
+ } else if (isGradingIncomplete && hasUserStartedGrading) {
+ toast.error(
+ `Total grading (${currentGradingTotal}) tidak sama dengan total telur konsumsi baik yang tersedia (${totalKonsumsiBaikEggs})! Semua telur harus digrading.`,
+ {
+ id: 'grading-incomplete',
+ duration: 3000,
+ }
+ );
+ toast.dismiss('grading-exceeds');
} else {
toast.dismiss('grading-exceeds');
+ toast.dismiss('grading-incomplete');
}
- }, [isGradingExceedsAvailable, currentGradingTotal, totalKonsumsiBaikEggs]);
+ }, [isGradingExceedsAvailable, isGradingIncomplete, hasUserStartedGrading, currentGradingTotal, totalKonsumsiBaikEggs]);
useEffect(() => {
if (
@@ -559,7 +572,9 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
className={`rounded-lg p-4 border-2 ${
isGradingExceedsAvailable
? 'bg-red-50 border-red-200'
- : 'bg-green-50 border-green-200'
+ : isGradingIncomplete && hasUserStartedGrading
+ ? 'bg-yellow-50 border-yellow-200'
+ : 'bg-green-50 border-green-200'
}`}
>
@@ -578,21 +593,29 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
@@ -606,7 +629,9 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
className={`font-semibold ${
isGradingExceedsAvailable
? 'text-red-600'
- : 'text-green-600'
+ : isGradingIncomplete && hasUserStartedGrading
+ ? 'text-yellow-600'
+ : 'text-green-600'
}`}
>
{currentGradingTotal} / {totalKonsumsiBaikEggs}
@@ -617,7 +642,9 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
className={`h-full transition-all duration-300 ${
isGradingExceedsAvailable
? 'bg-red-500'
- : 'bg-green-500'
+ : isGradingIncomplete && hasUserStartedGrading
+ ? 'bg-yellow-500'
+ : 'bg-green-500'
}`}
style={{
width: `${Math.min((currentGradingTotal / totalKonsumsiBaikEggs) * 100, 100)}%`,
@@ -634,6 +661,16 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
Melebihi batas tersedia
)}
+ {isGradingIncomplete && hasUserStartedGrading && (
+
+
+ Grading belum lengkap, semua telur harus digrading
+
+ )}
@@ -775,14 +812,17 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
decimalSeparator='.'
isError={
isRepeaterInputError('eggs_grading', 'qty', idx)
- .isError || isGradingExceedsAvailable
+ .isError ||
+ (isGradingExceedsAvailable || (isGradingIncomplete && hasUserStartedGrading))
}
errorMessage={
isRepeaterInputError('eggs_grading', 'qty', idx)
.errorMessage ||
(isGradingExceedsAvailable
? `Total grading melebihi telur yang tersedia (${totalKonsumsiBaikEggs})`
- : undefined)
+ : isGradingIncomplete && hasUserStartedGrading
+ ? `Total grading (${currentGradingTotal}) harus sama dengan total telur konsumsi baik (${totalKonsumsiBaikEggs})`
+ : undefined)
}
readOnly={type === 'detail'}
className={{
@@ -903,7 +943,8 @@ const GradingForm = ({ type = 'add', initialValues }: GradingFormProps) => {
disabled={
!formik.isValid ||
formik.isSubmitting ||
- isGradingExceedsAvailable
+ isGradingExceedsAvailable ||
+ (isGradingIncomplete && hasUserStartedGrading)
}
>
Submit