UnAuthorized Leave Salary Deduction Issue As Per Setup Parameter has been Fixed
This commit is contained in:
parent
87ec71597d
commit
37b693e361
|
|
@ -1437,6 +1437,11 @@ namespace Payroll.BO
|
||||||
item.BasicCurrentDeduct = nTotalUnAuthorizedLeave - item.BasicPaidDays;
|
item.BasicCurrentDeduct = nTotalUnAuthorizedLeave - item.BasicPaidDays;
|
||||||
item.BasicPaidDays += item.BasicCurrentDeduct;
|
item.BasicPaidDays += item.BasicCurrentDeduct;
|
||||||
item.BasicUnpaidDays = 0;
|
item.BasicUnpaidDays = 0;
|
||||||
|
|
||||||
|
// Allowances set in the parameter are cut for the same days as Basic
|
||||||
|
item.OtherCurrentDeduct = nTotalUnAuthorizedLeave - item.OtherPaidDays;
|
||||||
|
item.OtherPaidDays += item.OtherCurrentDeduct;
|
||||||
|
item.OtherUnpaidDays = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (UnAuthorizeLeaveParamDetail detail in Param.Details)
|
foreach (UnAuthorizeLeaveParamDetail detail in Param.Details)
|
||||||
|
|
@ -1497,13 +1502,51 @@ namespace Payroll.BO
|
||||||
detail.Type == EnumSalaryComponent.Basic ? (int)EnumSalaryItemCode.Basic_Salary : detail.AllowanceID.Integer,
|
detail.Type == EnumSalaryComponent.Basic ? (int)EnumSalaryItemCode.Basic_Salary : detail.AllowanceID.Integer,
|
||||||
salaryDetail.SupportID.Integer, salaryDetail.Description, GlobalFunctions.Round(nAmount));
|
salaryDetail.SupportID.Integer, salaryDetail.Description, GlobalFunctions.Round(nAmount));
|
||||||
|
|
||||||
this.AddDetail(salary, EnumSalaryGroup.Miscellaneous, EnumSalaryItemCode.Tot_UnauthLeave_Days, Param.UnAhuthorizeLeaveID.Integer, 0, "UnAuthorized Leave Days", nThisMonthUnAuthorizedLeave);
|
|
||||||
//if(nUnpaidDays>0)
|
//if(nUnpaidDays>0)
|
||||||
//{
|
//{
|
||||||
|
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Days deducted this month, added once (not per parameter item); used by salary sheet, payslip and arrear
|
||||||
|
if (Param.Details.Count > 0)
|
||||||
|
this.AddDetail(salary, EnumSalaryGroup.Miscellaneous, EnumSalaryItemCode.Tot_UnauthLeave_Days, Param.UnAhuthorizeLeaveID.Integer, 0, "UnAuthorized Leave Days", item.BasicCurrentDeduct);
|
||||||
|
|
||||||
|
#region Deduct all allowances for unauthorized leave
|
||||||
|
// Same days and daily-rate formula as Basic; allowances already set in the parameter are skipped to avoid double deduction
|
||||||
|
if (item.BasicCurrentDeduct > 0)
|
||||||
|
{
|
||||||
|
List<SalaryMonthlyDetail> allowances = salary.Details.FindAll(delegate(SalaryMonthlyDetail dtl)
|
||||||
|
{
|
||||||
|
return dtl.itemGroupCode == EnumSalaryGroup.Gross && dtl.ItemCode == EnumSalaryItemCode.Allowance;
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach (SalaryMonthlyDetail allowance in allowances)
|
||||||
|
{
|
||||||
|
bool isInParam = Param.Details.Exists(delegate(UnAuthorizeLeaveParamDetail pd)
|
||||||
|
{
|
||||||
|
return pd.Type == EnumSalaryComponent.Allowance && pd.AllowanceID.Integer == allowance.ItemID;
|
||||||
|
});
|
||||||
|
if (isInParam) continue;
|
||||||
|
|
||||||
|
nAmount = allowance.CalculatedAmount;
|
||||||
|
if (salary.Employee.JoiningDate > GlobalFunctions.FirstDateOfMonth(_processMonth))
|
||||||
|
{
|
||||||
|
double ndays = Ease.CoreV35.Utility.Global.DateFunctions.DateDiff("d", salary.Employee.JoiningDate, _processMonth) + 1;
|
||||||
|
nAmount = nAmount / ndays;
|
||||||
|
nAmount = nAmount * _processMonth.Day;
|
||||||
|
}
|
||||||
|
|
||||||
|
nAmount = GlobalFunctions.ConevrtToDlyRateofMonth(nAmount, _processMonth) * item.BasicCurrentDeduct;
|
||||||
|
nAmount = GlobalFunctions.Round(nAmount);
|
||||||
|
if (nAmount <= 0) continue;
|
||||||
|
|
||||||
|
this.AddDetail(salary, EnumSalaryGroup.UnauthLeave, EnumSalaryItemCode.Allowance,
|
||||||
|
allowance.ItemID, allowance.SupportID.Integer, allowance.Description, nAmount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//item.currentDeduct = nUnpaidDays;
|
//item.currentDeduct = nUnpaidDays;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user