update dialog isi otomatis not approve dan excess
This commit is contained in:
@@ -59,6 +59,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
|
|||||||
const [valBenefitNameError, setValBenefitNameError] = useState('');
|
const [valBenefitNameError, setValBenefitNameError] = useState('');
|
||||||
const benefitNameData = requestLog?.benefit;
|
const benefitNameData = requestLog?.benefit;
|
||||||
const [benefitSelected, setBenefitSelected] = useState<BenefitSelected[]>([]);
|
const [benefitSelected, setBenefitSelected] = useState<BenefitSelected[]>([]);
|
||||||
|
const [isDisabled, setisDisable] = useState(false);
|
||||||
|
|
||||||
const handleConditionChangeService = (event) => {
|
const handleConditionChangeService = (event) => {
|
||||||
const selectedItem = event.target.value;
|
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) => {
|
const handleOnChangeNominal = (key) => {
|
||||||
if (benefitSelected[key].family_plan == 'S' || benefitSelected[key].family_plan == 'F'){
|
if (benefitSelected[key].family_plan == 'S' || benefitSelected[key].family_plan == 'F'){
|
||||||
if (requestLog?.member_usage_benefit && benefitSelected[key] && benefitData[key]) {
|
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
|
// Hitung penggunaan waktu nyata
|
||||||
realTimeUsage += totalAmount;
|
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) {
|
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` });
|
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) {
|
} else if (totalAll().totalAmountApproved > totalAll().totalAmountIncurred) {
|
||||||
setError(`benefit_data.${key}.amount_approved`, { message: 'Total Amount Approve tidak boleh lebih dari Total Amount Incurred' });
|
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;
|
let amountApproved = Number(benefitData[key].amount_approved) || 0;
|
||||||
// Hitung penggunaan waktu nyata
|
// Hitung penggunaan waktu nyata
|
||||||
let realTimeUsage = memberUsage + amountApproved;
|
let realTimeUsage = memberUsage + amountApproved;
|
||||||
|
let value = realTimeUsage - limitAmount
|
||||||
|
|
||||||
if (limitAmount < realTimeUsage) {
|
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` });
|
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) {
|
} else if (totalAll().totalAmountApproved > totalAll().totalAmountIncurred) {
|
||||||
setError(`benefit_data.${key}.amount_approved`, { message: 'Total Amount Approve tidak boleh lebih dari Total Amount Incurred' });
|
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)
|
setValue(`benefit_data.${index}.amount_approved`, event.target.value)
|
||||||
handleOnChangeNominal(index)}
|
handleOnChangeNominal(index)}
|
||||||
}
|
}
|
||||||
|
disabled={isDisabled}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
@@ -516,7 +553,7 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
|
|||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
<Grid item xs={6}>
|
<Grid item xs={6}>
|
||||||
<Typography variant="body2" sx={{ fontWeight: 'bold'}}>
|
<Typography variant="body2" sx={{ fontWeight: 'bold'}}>
|
||||||
Total Benefit
|
Total Benefit
|
||||||
</Typography>
|
</Typography>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
@@ -591,7 +628,21 @@ export default function DialogBenefit({requestLog, setOpenDialog, openDialog, cl
|
|||||||
</Grid>
|
</Grid>
|
||||||
</Box>
|
</Box>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<Grid item xs={12}>
|
||||||
|
<Grid container spacing={2}>
|
||||||
|
<Grid item xs={3}>
|
||||||
|
<Typography variant="body2" sx={{ fontWeight: 'bold'}}>
|
||||||
|
Total Usage / Limit
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<Typography variant="body2" sx={{ fontWeight: 'bold'}}>
|
||||||
|
{fNumber(totalUsage())} / {fNumber(benefitSelected[0].limit_amount_plan) }
|
||||||
|
</Typography>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user