diff --git a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogBenefit.tsx b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogBenefit.tsx index d4735d9f..a4176042 100644 --- a/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogBenefit.tsx +++ b/frontend/dashboard/src/pages/CustomerService/FinalLog/Components/DialogBenefit.tsx @@ -59,6 +59,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl const [valBenefitNameError, setValBenefitNameError] = useState(''); const benefitNameData = requestLog?.benefit; const [benefitSelected, setBenefitSelected] = useState([]); + const [isDisabled, setisDisable] = useState(false); const handleConditionChangeService = (event) => { const selectedItem = event.target.value; @@ -191,6 +192,29 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl } } + const totalUsage = () => { + let realTimeUsageMember = 0 + for (let key in requestLog?.member_usage_benefit) { + if (requestLog?.member_usage_benefit.hasOwnProperty(key)) { + let value = requestLog?.member_usage_benefit[key]; + // Menggunakan parseFloat() untuk mengonversi nilai menjadi angka + let numericValue = parseFloat(value); + // Memeriksa apakah numericValue adalah angka yang valid + if (!isNaN(numericValue)) { + realTimeUsageMember += numericValue; + } + } + } + + let totalAmountMember = 0 + for (let key in benefitData) { + // Menambahkan nilai amount_approved ke totalAmount + totalAmountMember += Number(benefitData[key].amount_approved); + } + + return realTimeUsageMember+totalAmountMember + } + const handleOnChangeNominal = (key) => { if (benefitSelected[key].family_plan == 'S' || benefitSelected[key].family_plan == 'F'){ if (requestLog?.member_usage_benefit && benefitSelected[key] && benefitData[key]) { @@ -221,8 +245,18 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl // Hitung penggunaan waktu nyata realTimeUsage += totalAmount; - console.log(realTimeUsage, 'test') + let excess = realTimeUsage - limitAmountPlan + let incurred = Number(benefitData[key].amount_incurred); + + if (realTimeUsage === limitAmountPlan){ + setisDisable(true) + setValue(`benefit_data.${key}.amount_not_approved`, incurred); + } else { + setisDisable(false) + } if (limitAmountPlan < realTimeUsage) { + setValue(`benefit_data.${key}.amount_not_approved`, excess); + setValue(`benefit_data.${key}.amount_approved`, incurred - excess); setError(`benefit_data.${key}.amount_approved`, { message: `Total Amount Approve sudah melebihi limit ${ fNumber(limitAmountPlan) } , silakan isikan di Amount Excess` }); } else if (totalAll().totalAmountApproved > totalAll().totalAmountIncurred) { setError(`benefit_data.${key}.amount_approved`, { message: 'Total Amount Approve tidak boleh lebih dari Total Amount Incurred' }); @@ -235,8 +269,10 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl let amountApproved = Number(benefitData[key].amount_approved) || 0; // Hitung penggunaan waktu nyata let realTimeUsage = memberUsage + amountApproved; - + let value = realTimeUsage - limitAmount + if (limitAmount < realTimeUsage) { + setValue(`benefit_data.${key}.amount_not_approved`, value); setError(`benefit_data.${key}.amount_approved`, { message: `Total Amount Approve sudah melebihi limit ${ fNumber(limitAmount) } , silakan isikan di Amount Excess` }); } else if (totalAll().totalAmountApproved > totalAll().totalAmountIncurred) { setError(`benefit_data.${key}.amount_approved`, { message: 'Total Amount Approve tidak boleh lebih dari Total Amount Incurred' }); @@ -398,6 +434,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl setValue(`benefit_data.${index}.amount_approved`, event.target.value) handleOnChangeNominal(index)} } + disabled={isDisabled} /> @@ -516,7 +553,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl - Total Benefit + Total Benefit @@ -591,7 +628,21 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl - + + + + + Total Usage / Limit + + + + + {fNumber(totalUsage())} / {fNumber(benefitSelected[0].limit_amount_plan) } + + + + +