update penjagaan limit level plan

This commit is contained in:
2024-07-01 10:52:58 +07:00
parent 4ceaf41a7d
commit 97b1b841d3
6 changed files with 208 additions and 59 deletions

View File

@@ -41,7 +41,10 @@ type BenefitSelected = {
description: string,
benefit_id: number,
family_plan: string,
family_plan_plans: string,
limit_amount: number,
limit_amount_plan: number,
max_frequency_period: number,
}
@@ -189,30 +192,52 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
}
const handleOnChangeNominal = (key) => {
if (benefitSelected[key].family_plan == 'S' || benefitSelected[key].family_plan == 'F'){
if (requestLog?.member_usage && benefitSelected[key] && benefitData[key]) {
// Konversi nilai ke angka dengan aman
let memberUsage = Number(requestLog.member_usage[benefitSelected[key].id]) || 0;
let amountApproved = Number(benefitData[key].amount_approved) || 0;
if (requestLog?.member_usage_benefit && benefitSelected[key] && benefitData[key]) {
let limitAmount = Number(benefitSelected[key].limit_amount) || 0;
// Hitung penggunaan waktu nyata
let realTimeUsage = memberUsage + amountApproved;
// Periksa apakah limitAmount lebih besar dari realTimeUsage
if (limitAmount < realTimeUsage) {
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' });
let limitAmountPlan = Number(benefitSelected[key].limit_amount_plan) || 0;
// Periksa apakah limitAmount Benefit lebih besar dari realTimeUsage
if (limitAmountPlan != 999999999){
let realTimeUsage = 0;
for (let key in requestLog?.member_usage_benefit) {
if (requestLog?.member_usage_benefit.hasOwnProperty(key)) {
realTimeUsage += requestLog?.member_usage_benefit[key];
}
}
let amountApproved = Number(benefitData[key].amount_approved) || 0;
// Hitung penggunaan waktu nyata
realTimeUsage += amountApproved;
if (limitAmountPlan < realTimeUsage) {
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' });
} else {
clearErrors(`benefit_data.${key}.amount_approved`);
}
} else if (limitAmount != 999999999) { // Periksa apakah limitAmount Benefit lebih besar dari realTimeUsage
// Konversi nilai ke angka dengan aman
let memberUsage = Number(requestLog.member_usage_benefit[benefitSelected[key].id]) || 0;
let amountApproved = Number(benefitData[key].amount_approved) || 0;
// Hitung penggunaan waktu nyata
let realTimeUsage = memberUsage + amountApproved;
if (limitAmount < realTimeUsage) {
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' });
} else {
clearErrors(`benefit_data.${key}.amount_approved`);
}
} else {
clearErrors(`benefit_data.${key}.amount_approved`);
if (totalAll().totalAmountApproved > totalAll().totalAmountIncurred) {
setError(`benefit_data.${key}.amount_approved`, { message: 'Total Amount Approve tidak boleh lebih dari Total Amount Incurred' });
} else {
clearErrors(`benefit_data.${key}.amount_approved`);
}
}
}
} else {
if (totalAll().totalAmountApproved > totalAll().totalAmountIncurred){
// setValue(`benefit_data.${key}.amount_approved`, 0);
setError(`benefit_data.${key}.amount_approved`, {message: 'Amount Approve tidak boleh lebih dari Amount Incurred'});
} else {
clearErrors(`benefit_data.${key}.amount_approved`);
@@ -220,6 +245,13 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
}
}
const handleOnChangeNotApprove = (key, value) => {
setValue(`benefit_data.${key}.excess_paid`, value);
if (totalAll().totalAmountApproved + totalAll().totalAmountNotApproved === totalAll().totalAmountIncurred) {
clearErrors(`benefit_data.${key}.amount_approved`);
}
};
// Submit Form
// =====================================
const submitHandler = async (data: BenefitConfigurationListType) => {
@@ -363,6 +395,10 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
name={`benefit_data.${index}.amount_not_approved`}
placeholder='Amount Not Approved'
required
onChange={(event) => {
setValue(`benefit_data.${index}.amount_not_approved`, event.target.value)
handleOnChangeNotApprove(index, event.target.value)}
}
/>
</Grid>
</Grid>