EchoTex_Payroll/HRM.BO/Process/BonusCalculation.cs
2024-10-14 10:01:49 +06:00

137 lines
5.4 KiB
C#

using Ease.Core.Model;
using System;
using System.Collections.Generic;
using System.Data;
namespace HRM.BO
{
public class BonusCalculation
{
public BonusCalculation()
{
}
public void BCalculate(List<Employee> oEmployees,int BonusID,DateTime payDate)
{
}
public double ConvertToDailyRate(double nBasic, DateTime dMonthDate)
{
double amount = 0;
amount = nBasic / Convert.ToDouble(DateTime.DaysInMonth(dMonthDate.Year, dMonthDate.Month));
return amount;
}
public double GeneralAmount(Employee oEmp,BonusParameter oBParameter,DateTime SalaryMonthDate)
{
double nTotalBonus = 0.0;
nTotalBonus = oBParameter.FlatAmount +(oEmp.GrossSalary*oBParameter.NoOfGross) + (oEmp.BasicSalary * oBParameter.NoOfBasic) + (oEmp.GrossSalary * oBParameter.PercentOfGross / 100) + (oEmp.BasicSalary * oBParameter.NoOfEarnedBasic);
nTotalBonus = nTotalBonus + ConvertToDailyRate(oEmp.BasicSalary, SalaryMonthDate) * oBParameter.NoOfDays + ConvertToDailyRate(oEmp.GrossSalary, SalaryMonthDate) * oBParameter.GrossOfDays;
return nTotalBonus;
}
//public double CaculatedSalaryComponentAmount( BonusParameter.BonusParamSalaryItem oBonusPSalaryItem,Employee oEmp,DateTime dSalaryMonth)
//{
// List<SalaryComponent> _SalaryComponents = SalaryComponent.Benefits();
// double BonusSalaryComponentAmount = 0.0;
// foreach(SalaryComponent oSComponent in _SalaryComponents)
// {
// if (oBonusPSalaryItem.AllowDeductID == oSComponent.ObjectID.Integer)
// {
// BonusSalaryComponentAmount = ((oEmp.BasicSalary * oBonusPSalaryItem.NoOfSalary) * oBonusPSalaryItem.Percent) / 100;
// break;
// }
// }
// return BonusSalaryComponentAmount;
//}
public double CaculatedServiceLengthAmount(BonusParameter oBonusParameter,Employee oEmp,double TotalBonusAmount,DateTime dCuttOffDate)
{
DateTime toDate = DateTime.Now;
DateTime joiningDate = oEmp.JoiningDate;
double BonusSLengthAmount = 0.0;
int ServiceLength = 0;
int Counter = 0;
//while (joiningDate.ToString("MMMM yyyy") != toDate.ToString("MMMM yyyy"))
//{
// Counter++;
// joiningDate = joiningDate.AddMonths(1);
//}
//while (joiningDate.ToString("dd") != toDate.ToString("dd"))
//{
// Counter++;
// joiningDate = joiningDate.AddDays(1);
//}
Counter = (dCuttOffDate - joiningDate).Days + 1;
//countDays = DateTime.Compare(DateTime.Now, joiningDate);
if (oBonusParameter.BonusServiceLengths != null)
{
for (int i = oBonusParameter.BonusServiceLengths.Count; i >=1 ; i--)
{
ServiceLength = oBonusParameter.BonusServiceLengths[i-1].LengthOfService;
if (oBonusParameter.BonusServiceLengths[i-1].LengthOfService < Counter)
{
ServiceLength = oBonusParameter.BonusServiceLengths[i-1].EntitlePercent;
break;
}
}
BonusSLengthAmount = (TotalBonusAmount * ServiceLength)/100;
}
return BonusSLengthAmount;
}
//public double CalculationBDearnessAmount(BonusParameter oBonusParameter, Employee oEmp)
//{
// double BonusDearnessAmount=0.0;
// if (oBonusParameter.BonusSlabs != null)
// {
// for (int i = oBonusParameter.BonusSlabs.Count; i >= 1; i--)
// {
// if (oBonusParameter.BonusSlabs[i - 1].SlabAmount < oEmp.BasicSalary)
// {
// if(oBonusParameter.BonusSlabs[i - 1].AmountType==EnumSlabAmountType.ActualBasic)
// {
// BonusDearnessAmount = oEmp.BasicSalary;//oBonusParameter.BonusSlabs[i - 1].Amount;
// break;
// }
// else if (oBonusParameter.BonusSlabs[i - 1].AmountType == EnumSlabAmountType.FlatAmount)
// {
// BonusDearnessAmount = oBonusParameter.BonusSlabs[i - 1].Amount;
// break;
// }
// }
// }
// }
// return BonusDearnessAmount;
//}
//public double CaculatedBonusAdjustAmount(BonusParameter.BonusParamAdjustItem oBonusPAdjustAmount)
//{
// double BonusAdjustAmount = 0.0;
// if (oBonusParameter.BonusParamAdjustItems != null)
// {
// foreach (BonusParameter.BonusParamAdjustItem oBAdjustAmount in oBonusParameter.BonusParamAdjustItems)
// {
// BonusAdjustAmount += oBAdjustAmount.Amount;
// }
// }
// return BonusAdjustAmount;
//}
}
}