using Ease.Core.Model; using System; using System.Collections.Generic; using System.Data; namespace HRM.BO { public class MonthEnd:BasicBaseObject { private DateTime _month; private DateTime _dPaymentDate; private List _salaryMonthlys; private List _pfTransactions; private List _loanShedules; //private List _incometaxes; private List _oESBDefinitions = null; private List _oESBProvisions = null; List _oSProcess = null; public MonthEnd() { } private bool Validation() { return false; } //public void DoMonthEnd(DateTime month, List salaries,DateTime dPaymentDate) //{ // _dPaymentDate = dPaymentDate; // _salaryMonthlys = salaries; // _loanShedules = new List(); // _month = month; // _oSProcess = SalaryProcess.Get(month); // Process(); // SalaryProcess sprocess = new SalaryProcess(); // SalaryProcess.Service.MonthEnd(month,_pfTransactions,_loanShedules,_oESBProvisions); //} //private void Process() //{ // _oESBDefinitions = new List(); // _oESBProvisions = new List(); // List oPfExceptions = PFException.Get(); // List oEmployees = Employee.GetAllEmps(); // ESBProvision oESBProvision = null; // ESBDefinition oESBDefinition = null; // DataSet oDS=null; // bool doProvision = ConfigurationManager.GetBoolValue("gratuity", "doprovision", EnumConfigurationType.Logic); // if (doProvision) // { // oDS = new DataSet(); // //oDS = ESBProvision.GetCumulativeProv(_month); // _oESBDefinitions = ESBDefinition.Get(); // } // _pfTransactions = new List(); // foreach(SalaryProcess oSP in _oSProcess) // { // oSP.PaymentDate = _dPaymentDate; // oSP.MonthEndDate = Payroll.BO.SystemInformation.CurrentSysInfo.NextPayProcessDate; // oSP.Update(oSP); // } // foreach (SalaryMonthly item in _salaryMonthlys) // { // Employee oEmp = oEmployees.FirstOrDefault(x => x.int == item.EmployeeID); // if (oEmp != null && oEmp.PFMemberType == EnumPFMembershipType.Live) // { // //_pfTransactions = new List(); // #region PF transaction // #region EPF // PFTransaction epf = new PFTransaction(); // epf.EmployeeID = item.EmployeeID; // epf.MonthDate = _month; // epf.TranAmount = item.GetDeductAmount(EnumSalaryItemCode.PF_Contribution, (int)EnumSalaryItemCode.PF_Contribution); // epf.TranType = EnumPFTranType.PFAmount; // epf.SetAuditTrail(); // _pfTransactions.Add(epf); // #endregion // #region CPF // PFException oEmpPFException = oPfExceptions.FirstOrDefault(x => x.EmployeeID == item.Employee.ID); // PFTransaction cpf = new PFTransaction(); // cpf.EmployeeID = item.EmployeeID; // cpf.MonthDate = _month; // if (oEmpPFException != null) // && oEmpPFException.StartDate <= item.SalaryMonth) // Dont open this // { // cpf.TranAmount = oEmpPFException.CPFPercent == 0 ? oEmpPFException.CPFAmount : PayrollPayrollGlobalFunctions.Round(item.ThisMonthBasic * (oEmpPFException.CPFPercent / 100)); // } // else // { // cpf.TranAmount = item.GetDeductAmount(EnumSalaryItemCode.PF_Contribution, (int)EnumSalaryItemCode.PF_Contribution); // } // cpf.TranType = EnumPFTranType.CPFAmount; // cpf.SetAuditTrail(); // _pfTransactions.Add(cpf); // #endregion // #endregion PF transaction // } // #region Loan Installment payment update // List loans = item.Details.FindAll(delegate(SalaryMonthlyDetail detail) // { // return detail.ItemCode == EnumSalaryItemCode.Loan_Monthly_Installment; // }); // if (loans != null) // { // foreach (SalaryMonthlyDetail loan in loans) // { // LoanSchedule laonshedule = new LoanSchedule(); // laonshedule.PaymentDate = _month; // laonshedule.setId(loan.SupportID); // _loanShedules.Add(laonshedule); // } // } // #endregion Loan Installment payment update // #region Gratuity Provision // if (doProvision) // { // oESBDefinition = ESBDefinition.Get(_oESBDefinitions, item.Employee); // if (oESBDefinition == null) throw new ServiceException("gratuity rule not found for the employee " + item.Employee.EmployeeNo); // add employee NO and Name // oESBProvision = new ESBProvision(); // oESBDefinition.CalculateProvisionAmount(item.Employee, item.Details, oESBProvision, oDS); // oESBProvision.EmployeeID = item.EmployeeID; // oESBProvision.SalaryMonthlyID = item.ID; // oESBProvision.ProcessMonthDate = item.SalaryMonth; // oESBProvision.UserID = Payroll.BO.User.CurrentUser.UserAccessTypes[0].PayrollTypeObj.ID; // _oESBProvisions.Add(oESBProvision); // } // #endregion // } // #region PF Exception // foreach (PFException oEmpPFException in oPfExceptions) // { // Employee oEmp = oEmployees.FirstOrDefault(x => x.int == oEmpPFException.EmployeeID); // if (oEmp == null) // continue; // if (_salaryMonthlys.Any(x => x.EmployeeID == oEmpPFException.EmployeeID)) // { // if (oEmp.PFMemberType == EnumPFMembershipType.Live) // continue; // } // //if (oEmpPFException.StartDate > _month) // // continue; // #region EPF // PFTransaction epf = new PFTransaction(); // epf.EmployeeID = oEmpPFException.EmployeeID; // epf.MonthDate = _month; // epf.TranAmount = oEmpPFException.EPFPercent == 0 ? oEmpPFException.EPFAmount : PayrollPayrollGlobalFunctions.Round(oEmp.BasicSalary * (oEmpPFException.EPFPercent / 100)); // epf.TranType = EnumPFTranType.PFAmount; // epf.SetAuditTrail(); // _pfTransactions.Add(epf); // #endregion // #region CPF // PFTransaction cpf = new PFTransaction(); // cpf.EmployeeID = oEmpPFException.EmployeeID; // cpf.MonthDate = _month; // cpf.TranAmount = oEmpPFException.CPFPercent == 0 ? oEmpPFException.CPFAmount : PayrollPayrollGlobalFunctions.Round(oEmp.BasicSalary * (oEmpPFException.CPFPercent / 100)); // cpf.TranType = EnumPFTranType.CPFAmount; // cpf.SetAuditTrail(); // _pfTransactions.Add(cpf); // #endregion // } // #endregion //} } }