ปรับการคำนวนยอดวันลาสะสม ของปีก่อนหน้า

This commit is contained in:
Suphonchai Phoonsawat 2025-01-24 10:27:22 +07:00
parent 6afb95fe1b
commit 2852615d62

View file

@ -711,42 +711,25 @@ namespace BMA.EHR.Leave.Service.Controllers
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
}
var leaveLimit = 0;
var leaveLimit = 0.0;
if (leaveType.Code.Trim().ToUpper() == "LV-005")
{
if (govAge >= 180)
{
if (govAge >= 3650) leaveLimit = 30;
else leaveLimit = 20;
var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
if (govAge >= 3650)
{
leaveLimit = 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
}
else
{
leaveLimit = 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay);
}
}
else
{
leaveLimit = 0;
}
//var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
//var leavePrevYearRemain = 0;
////var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
//if (govAge >= 180)
// if (govAge >= 3650)
// {
// // ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (20 + leavePrevYearRemain);
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
// }
// else
// {
// isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (10 + leavePrevYearRemain);
// if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
// }
//else
//{
// leavePrevYearRemain
//}
}
else
leaveLimit = leaveType.Limit;
@ -901,17 +884,23 @@ namespace BMA.EHR.Leave.Service.Controllers
case "LV-005":
// fix issue : ระบบลา (ขรก.) >> ลาพักผ่อน (กรณีรับราชการไม่ถึง 6 เดือน) #838
var leavePrevYear = (await _leaveRequestRepository.GetSumApproveLeaveAsync(thisYear)).Where(x => x.LeaveTypeCode == "LV-005" && x.KeycloakUserId == userId).FirstOrDefault();
var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
//var leavePrevYearRemain = 10 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
if (govAge >= 180)
if (govAge >= 3650)
{
// ถ้าอายุราชการเกิน 10 ปี ได้บวกเพิ่มอีก 10 วัน
isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (20 + leavePrevYearRemain);
var leavePrevYearRemain = 30 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
if (leavePrevYearRemain >= 20) leavePrevYearRemain = 20;
isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (10 + leavePrevYearRemain);
if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
}
else
{
var leavePrevYearRemain = 20 - (leavePrevYear == null ? 0 : leavePrevYear.SumLeaveDay); // หายอดวันลาที่เหลือของปีก่อน
if (leavePrevYearRemain >= 10) leavePrevYearRemain = 10;
isLeave = (totalDay - (sumWorkDay + sumWeekend) + sumApproveLeave) <= (10 + leavePrevYearRemain);
if (!isLeave) message = "จำนวนวันลาเกินที่กำหนด";
}
@ -1926,7 +1915,7 @@ namespace BMA.EHR.Leave.Service.Controllers
// OrganizationName = profile.Oc ?? "",
// เปลี่ยนมาอ่านจากฐานข้อมูลแทน read_db
Dear = rawData.Dear ?? "",
PositionName = rawData.PositionName ?? "",
PositionLevelName = rawData.PositionLevelName ?? "",