using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using Payroll.BO; using Ease.CoreV35.Model; using System.ComponentModel; using System.Data; using System.Drawing; namespace Payroll.Report { public class rptGratuity { DataSet dSet = new DataSet(); private ReportSetup _selectedParameter; private ObjectsTemplate _oESBDefinitions = null; ObjectsTemplate oEmployees = null; string tempEmpID = string.Empty; int count = 1; DateTime dtFirst = DateTime.MinValue; double openingBalance = 0.0; public rptGratuity() { } public ReportSetup SelectedParameter { set { _selectedParameter = value; } } public void ShowAllDataForTheEmployees(ObjectsTemplate _Employees, DateTime dateTime) { ESBDefinition oESBDefinition = null; fReportViewer form = new fReportViewer(); PayrollDataSet.PayrollDataSet.GratuityProvisionDataTable dTEmpGratuity = new Payroll.Report.PayrollDataSet.PayrollDataSet.GratuityProvisionDataTable(); DataRow oDR = null; string EmpiD = string.Empty; int count = 1; int rowCount = 0; double nRetirementAge = 0.0; int serviceYear = 0; int serviceMonth = 0; int serviceDay = 0; string Month = Convert.ToString(dateTime.ToString("MMM yyyy")); double nServiceYear = 0.0; double nNoOfPeyable = 0.0; foreach (Employee oemp in _Employees) { if (EmpiD == "" || count == _Employees.Count) { EmpiD = oemp.ID.ToString(); } else if (count < _Employees.Count) { EmpiD = EmpiD + "," + oemp.ID.ToString(); count++; } } string sEmpID = EmpiD; DateTime GratuityMonth = GlobalFunctions.LastDateOfMonth(dateTime); ObjectsTemplate oDesignations = Designation.Get(EnumStatus.Active); ObjectsTemplate oRetirements = EmployeeRetirement.Get(); //dTEmpGratuity = ESBProvision.GetEmpProvision(sEmpID, GratuityMonth); try { ObjectsTemplate oProvisions = ESBProvision.GetProvision(sEmpID, GratuityMonth); if (oProvisions != null && oProvisions.Count > 0) { foreach (ESBProvision provision in oProvisions) { Employee oEmp = _Employees.Find(delegate(Employee emp) { return emp.ID == provision.EmployeeID; }); oEmp = Employee.Get(provision.EmployeeID); oDR = dTEmpGratuity.NewRow(); rowCount++; oDR["SL"] = rowCount; oDR["EmpNo"] = oEmp.EmployeeNo; oDR["EmpName"] = oEmp.Name; Designation oDesig = oDesignations.Find(delegate(Designation desig) { return desig.ID == oEmp.DesignationID; }); oDR["Designation"] = oDesig.Name; oDR["DateOfBirth"] = oEmp.BirthDate.ToString("dd MMM yyyy"); oDR["JoiningDate"] = oEmp.JoiningDate.ToString("dd MMM yyyy"); oDR["Basic"] = oEmp.BasicSalary; EmployeeRetirement retire = oRetirements.Find(delegate(EmployeeRetirement ret) { return ret.employeeID == oEmp.ID; }); nRetirementAge = EmployeeRetirement.GetById(oEmp.ID); oDR["RetirementAge"] = nRetirementAge; nServiceYear = oEmp.ServiceYears(Ease.CoreV35.Utility.Global.DateFunctions.LastDateOfYear(Payroll.BO.SystemInformation.CurrentSysInfo.NextPayProcessDate)); DateDifferenceInYearsMonthDays dts = DateDifferenceInYearsMonthDays.CompareDates(oEmp.JoiningDate, Payroll.BO.SystemInformation.CurrentSysInfo.NextPayProcessDate); oDR["ServiceLength"] = dts.Years + " Year(s) " + dts.Months + " Month(s) " + dts.Days + " Day(s)"; _oESBDefinitions = ESBDefinition.Get(); oESBDefinition = ESBDefinition.Get(_oESBDefinitions, oEmp); nNoOfPeyable = ESBSlab.GetCalcualateNo(nServiceYear, oESBDefinition); oDR["NoOfBasicPayable"] = GlobalFunctions.Round(nNoOfPeyable * nServiceYear); oDR["GrPeyableProvision"] = provision.Provision; dTEmpGratuity.Rows.Add(oDR); } } } catch (Exception Ex) { throw new Exception(Ex.Message); } if (dTEmpGratuity.Rows.Count > 0) { form.ShowEmpGratuityProvision(dTEmpGratuity, Month); } else { MessageBox.Show("No Data Found!!!"); } } public struct DateDifferenceInYearsMonthDays { private readonly int years; private readonly int months; private readonly int days; private readonly int hours; private readonly int minutes; private readonly int seconds; private readonly int milliseconds; public DateDifferenceInYearsMonthDays(int years, int months, int days, int hours, int minutes, int seconds, int milliseconds) { this.years = years; this.months = months; this.days = days; this.hours = hours; this.minutes = minutes; this.seconds = seconds; this.milliseconds = milliseconds; } public int Years { get { return years; } } public int Months { get { return months; } } public int Days { get { return days; } } public int Hours { get { return hours; } } public int Minutes { get { return minutes; } } public int Seconds { get { return seconds; } } public int Milliseconds { get { return milliseconds; } } enum Phase { Years, Months, Days, Done } public static DateDifferenceInYearsMonthDays CompareDates(DateTime date1, DateTime date2) { if (date2 < date1) { DateTime sub = date1; date1 = date2; date2 = sub; } DateTime current = date2; int years = 0; int months = 0; int days = 0; Phase phase = Phase.Years; DateDifferenceInYearsMonthDays span = new DateDifferenceInYearsMonthDays(); while (phase != Phase.Done) { switch (phase) { case Phase.Years: if (current.Year == 1 || current.AddYears(-1) < date1) { phase = Phase.Months; } else { current = current.AddYears(-1); years++; } break; case Phase.Months: if (current.AddMonths(-1) < date1) { phase = Phase.Days; } else { current = current.AddMonths(-1); months++; } break; case Phase.Days: if (current.AddDays(-1) < date1) { days++; TimeSpan timespan = current - date1; span = new DateDifferenceInYearsMonthDays(years, months, days, timespan.Hours, timespan.Minutes, timespan.Seconds, timespan.Milliseconds); phase = Phase.Done; } else { current = current.AddDays(-1); days++; } break; } } return span; } } public void ShowAllGRLedgerData(ID employeeID, string Name, string EmployeeNo, DateTime Firstdate, DateTime Lastdate) { fReportViewer form = new fReportViewer(); //DateTime OpeningMonth = GlobalFunctions.LastDateOfMonth(Firstdate.AddMonths(-1)); //DateTime openingDate = GlobalFunctions.LastDateOfMonth(OpeningMonth); string DateRange = Convert.ToString(Firstdate.ToString("MMM yyyy ")) + " To " + Convert.ToString(Lastdate.ToString("MMM yyyy")); string OpeningDate = Convert.ToString(Firstdate.ToString("MMM yyyy ")); string Employee = Name + "(" + EmployeeNo + ")"; PayrollDataSet.PayrollDataSet.GratuityLedgerDataTable oGratuityLedger = new Payroll.Report.PayrollDataSet.PayrollDataSet.GratuityLedgerDataTable(); DataRow oDR = null; double openingBalance = 0.0; int rowCount = 0; DateTime dtFirst = GlobalFunctions.LastDateOfMonth(Firstdate); DateTime dtLast = GlobalFunctions.LastDateOfMonth(Lastdate); oDR = oGratuityLedger.NewRow(); openingBalance = ESBProvision.GetOpeningBalance(employeeID.Integer, dtFirst); oDR["OpeningBalance"] = GlobalFunctions.Round(openingBalance); ObjectsTemplate oProvisions = ESBProvision.GetProvision(employeeID.Integer, dtFirst, dtLast); if (oProvisions != null && oProvisions.Count > 0) { foreach (ESBProvision opro in oProvisions) { oDR["Description"] = opro.ProcessMonthDate.ToString("MMM-yy"); oDR["Amount"] = GlobalFunctions.Round(Convert.ToDouble(opro.Provision)); } } oGratuityLedger.Rows.Add(oDR); if (oGratuityLedger.Rows.Count > 0) { form.ShowGratuityLedgerData(oGratuityLedger, DateRange, OpeningDate, Employee); } else { MessageBox.Show("No Data Found!!!"); } } public void ShowAllGRRegisterData(DateTime firstdate, DateTime lastdate) { fReportViewer form = new fReportViewer(); oEmployees = Employee.Get(); PayrollDataSet.PayrollDataSet.GratuityRegisterDataTable registryDataTable = new Payroll.Report.PayrollDataSet.PayrollDataSet.GratuityRegisterDataTable(); DataRow oDR = null; int rowCount = 0; string sEmpNo = string.Empty; DateTime dtFirstDate = GlobalFunctions.LastDateOfMonth(firstdate); DateTime dtLast = GlobalFunctions.LastDateOfMonth(lastdate); string FirstDate = dtFirstDate.ToString("MMM yyyy"); string LastDate = dtLast.ToString("MMM yyyy"); dtFirst = dtFirstDate; ObjectsTemplate oProvisions = ESBProvision.GetProvision(dtFirstDate, dtLast); if (oProvisions != null && oProvisions.Count > 0) { foreach (ESBProvision opro in oProvisions) { oDR = registryDataTable.NewRow(); this.Copy(oDR, opro); registryDataTable.Rows.Add(oDR); } } if (registryDataTable.Rows.Count > 0) { form.ShowGRRegistryData(registryDataTable, FirstDate, LastDate); } else { MessageBox.Show("No Data Found!!!"); } } private void Copy(DataRow oDR, ESBProvision opro) { if (tempEmpID == string.Empty) { tempEmpID = Convert.ToString(opro.EmployeeID.ToString()); // oDR["SL"] = count; // count++; } if (tempEmpID != Convert.ToString(opro.EmployeeID.ToString())) { tempEmpID = Convert.ToString(opro.EmployeeID.ToString()); // oDR["SL"] = count; // count++; } Employee oEmp = oEmployees.Find(delegate(Employee emp) { return emp.ID == opro.EmployeeID; }); oDR["EmpNo"] = oEmp.EmployeeNo; oDR["EmpName"] = oEmp.Name; openingBalance = ESBProvision.GetOpeningBalance(opro.EmployeeID.Integer, dtFirst); oDR["OpeningBalance"] = GlobalFunctions.Round(Convert.ToDouble(openingBalance)); oDR["Description"] = opro.ProcessMonthDate.ToString("MMM yy"); oDR["Amount"] = GlobalFunctions.Round(Convert.ToDouble(opro.Provision)); } public void ShowAllDataForTheEmployeesBalance(ObjectsTemplate _Employees, DateTime dateTime) { ESBDefinition oESBDefinition = null; fReportViewer form = new fReportViewer(); PayrollDataSet.PayrollDataSet.GratuityProvisionDataTable dTEmpGratuity = new Payroll.Report.PayrollDataSet.PayrollDataSet.GratuityProvisionDataTable(); DataRow oDR = null; string EmpiD = string.Empty; int count = 1; int rowCount = 0; double nRetirementAge = 0.0; int serviceYear = 0; int serviceMonth = 0; int serviceDay = 0; string Month = Convert.ToString(dateTime.ToString("MMM yyyy")); double nServiceYear = 0.0; double nNoOfPeyable = 0.0; DateTime BalanceMonth = GlobalFunctions.LastDateOfMonth(dateTime); ObjectsTemplate oDesignations = Designation.Get(EnumStatus.Active); ObjectsTemplate oRetirements = EmployeeRetirement.Get(); try { foreach (Employee oEmp in _Employees) { oDR = dTEmpGratuity.NewRow(); rowCount++; oDR["SL"] = rowCount; oDR["EmpNo"] = oEmp.EmployeeNo; oDR["EmpName"] = oEmp.Name; Designation oDesig = oDesignations.Find(delegate(Designation desig) { return desig.ID == oEmp.DesignationID; }); oDR["Designation"] = oDesig.Name; oDR["DateOfBirth"] = oEmp.BirthDate.ToString("dd MMM yyyy"); oDR["JoiningDate"] = oEmp.JoiningDate.ToString("dd MMM yyyy"); oDR["Basic"] = oEmp.BasicSalary; EmployeeRetirement retire = oRetirements.Find(delegate(EmployeeRetirement ret) { return ret.employeeID == oEmp.ID; }); nRetirementAge = EmployeeRetirement.GetById(oEmp.ID); oDR["RetirementAge"] = nRetirementAge; nServiceYear = oEmp.ServiceYears(dateTime); DateDifferenceInYearsMonthDays dts = DateDifferenceInYearsMonthDays.CompareDates(oEmp.JoiningDate, dateTime); oDR["ServiceLength"] = dts.Years + " Year(s) " + dts.Months + " Month(s) " + dts.Days + " Day(s)"; _oESBDefinitions = ESBDefinition.Get(); oESBDefinition = ESBDefinition.Get(_oESBDefinitions, oEmp); nNoOfPeyable = ESBSlab.GetCalcualateNo(nServiceYear, oESBDefinition); oDR["NoOfBasicPayable"] = GlobalFunctions.Round(nNoOfPeyable * nServiceYear); oDR["GrPeyableProvision"] = GlobalFunctions.Round((nNoOfPeyable * nServiceYear) * oEmp.BasicSalary); dTEmpGratuity.Rows.Add(oDR); } } catch (Exception Ex) { throw new Exception(Ex.Message); } if (dTEmpGratuity.Rows.Count > 0) { form.ShowEmpGratuityBalance(dTEmpGratuity, Month); } else { MessageBox.Show("No Data Found!!!"); } } } }