using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using Payroll.BO; using Ease.CoreV35; using Ease.Core.Model; using Ease.Core.Utility; using System.Windows.Forms; using HRM.BO; using HRM.DA; using HRM.Report; using System.IO; using HRM.Service; using Microsoft.Reporting.NETCore; using static HRM.Report.PayrollDataSet.dsEmpLeaveLedger; namespace HRM.Report { public class rptLeave { //ReportParameter rParam = null; private List reportParameters = new List(); public byte[] ShowEmployeeWiseLeaveLedger(string sEmpID, /*DateTime fromDate, DateTime toDate,*/ int leaveYearId, int payrollTypeId, string reportType) { if (!string.IsNullOrEmpty(sEmpID)) { List oEmployees = new EmployeeService().GetByEmpIDs(sEmpID); //return AllLeaveLedger(oEmployees, fromDate, toDate, leaveId, payrollTypeId, reportType); return AllLeaveLedger(oEmployees, leaveYearId, payrollTypeId, reportType); } return null; } public byte[] ShowCCWiseLeaveEncashmentReturn(int leaveYearId, int payrollTypeId, string reportType) { DataRow dr = null; PayrollDataSet.dsEmpLeaveLedger.CCWiseLeaveEncashDataTable mulLeaveBalance = new PayrollDataSet.dsEmpLeaveLedger.CCWiseLeaveEncashDataTable(); DataTable dt = new LeaveEncashmentService().GetData(leaveYearId); foreach (DataRow dr1 in dt.Rows) { dr = mulLeaveBalance.NewRow(); dr["Name"] = dr1[0].ToString(); dr["Amount"] = Convert.ToDouble(dr1[1].ToString()); mulLeaveBalance.Rows.Add(dr); } DataSet dSet = new DataSet(); mulLeaveBalance.TableName = "dsEmpLeaveLedger_CCWiseLeaveEncash"; dSet.Tables.Add(mulLeaveBalance); string RDLC = "HRM.Report.RDLC.rptCCWiseEncashSummary.rdlc"; return new ReportProcessor().CommonReportView(null, RDLC, dSet, null, null, true, payrollTypeId, reportType); return null; } public byte[] ShowLeaveEncashmentReports(string sEmpIDs, int leaveYearId, string selectedReport, int payrollTypeId, string reportType) { DataRow dr = null; List employees = new List(); EmployeeService employeeService = new EmployeeService(); LeaveYearService leaveYearService = new LeaveYearService(); LeaveYear oLeaveYear = leaveYearService.Get(leaveYearId); employees = employeeService.GetByEmpIDs(sEmpIDs); if (selectedReport == "EmployeeWise Encashment") { DataSet oEmpDetails = employeeService.GetEncashmentReport(sEmpIDs, oLeaveYear.Name); if (oEmpDetails.Tables.Count > 0) { LeaveEntry le = null; List statuses = new LeaveProcessService().GetLeaveBalance(oLeaveYear.ID, payrollTypeId, sEmpIDs); List les = new LeaveEntryService().Get(sEmpIDs, oLeaveYear.ID, EnumLeaveStatus.OnApproval); les = les.Where(x => x.LeaveID == 1).ToList(); GlobalFunctions.bDataFound = true; PayrollDataSet.PayrollDataSet.dtEncashmentReportDataTable dTEmpDetail = new PayrollDataSet.PayrollDataSet.dtEncashmentReportDataTable(); int i = 0; foreach (DataRow oDRow in oEmpDetails.Tables[0].Rows) { EmpLeaveStatus status = statuses.FirstOrDefault(x => x.EmpId.ToString() == oDRow["EMPLOYEEID"].ToString()); le = les.FirstOrDefault(x => x.EmpID.ToString() == oDRow["EMPLOYEEID"].ToString()); int appliedLeave = (int) les.FindAll (x => x.EmpID.ToString() == oDRow["EMPLOYEEID"].ToString() && x.LeaveID == 1) .Sum(x => x.ApprovedTotalDays); // 1 for annual leave dr = dTEmpDetail.NewRow(); dr["EmpID"] = oDRow["EMPLOYEENO"]; dr["Name"] = oDRow["Name"]; dr["EncashmentDays"] = oDRow["ENCASHDAYS"]; dr["EncashmentAmount"] = oDRow["ENCASHAMOUNT"]; dr["DailyAmount"] = Convert.ToDouble(oDRow["ENCASHAMOUNT"]) / Convert.ToDouble(oDRow["ENCASHDAYS"]); dr["LeaveType"] = oDRow["LeaveType"]; dr["grossSalary"] = Convert.ToDouble(oDRow["GROSSSALARY"].ToString()); dr["Department"] = oDRow["Department"]; dr["Designation"] = oDRow["Designation"]; dr["Location"] = oDRow["Location"]; dr["JOININGDATE"] = Convert.ToDateTime(oDRow["JOININGDATE"]).ToString("dd MMM yyyy"); dr["CC"] = oDRow["CC"]; dr["LeaveBalance"] = oDRow["LeaveBalance"]; dr["Grade"] = oDRow["Grade"]; dr["Category"] = oDRow["Category"].ToString() == "Expats" ? "Expats" : "Local"; if (status != null) { dr["Opening"] = status.OpeningBalance; dr["Availed"] = status.LeaveAvailed; // - Convert.ToDouble(oDRow["ENCASHDAYS"]) } if (le != null) { //dr["OnApprovedLeave"] = le.AppliedTotalDays; dr["OnApprovedLeave"] = appliedLeave; } else { dr["OnApprovedLeave"] = 0; } i++; dr["Sl"] = i.ToString(); dTEmpDetail.Rows.Add(dr); } //form.ShowDlgForTrainingSummaryReport(dTEmpDetail); DataSet dSet = new DataSet(); dTEmpDetail.TableName = "PayrollDataSet_dtEncashmentReport"; dSet.Tables.Add(dTEmpDetail); List parameters = new List(); ReportParameter rParam = new ReportParameter("LeaveYear", oLeaveYear.Name); parameters.Add(rParam); string RDLC = "HRM.Report.RDLC.EncashmentReport.rdlc"; return new ReportProcessor().CommonReportView(null, RDLC, dSet, null, parameters, true, payrollTypeId, reportType); } } else if (selectedReport == "Bank Advice") { DataSet oEmpDetails = employeeService.GetBankAdviceReport(sEmpIDs, oLeaveYear.Name); if (oEmpDetails.Tables.Count > 0) { GlobalFunctions.bDataFound = true; PayrollDataSet.PayrollDataSet.dtBankAdviceDataTable dTEmpDetail = new PayrollDataSet.PayrollDataSet.dtBankAdviceDataTable(); int i = 0; foreach (DataRow oDRow in oEmpDetails.Tables[0].Rows) { dr = dTEmpDetail.NewRow(); dr["ID"] = oDRow["EMPLOYEENO"]; dr["Name"] = oDRow["Name"]; dr["ACNo"] = oDRow["ACCOUNTNO"]; dr["Amount"] = GlobalFunctions.TakaFormat(Convert.ToDouble(oDRow["ENCASHAMOUNT"].ToString())); i++; dr["Sl"] = i.ToString(); dr["Remarks"] = "Leave Encashment"; dTEmpDetail.Rows.Add(dr); } //form.ShowDlgForTrainingSummaryReport(dTEmpDetail); DataSet dSet = new DataSet(); dTEmpDetail.TableName = "PayrollDataSet_dtBankAdvice"; dSet.Tables.Add(dTEmpDetail); string RDLC = "HRM.Report.RDLC.Advice.rdlc"; return new ReportProcessor().CommonReportView(null, RDLC, dSet, null, null, true, payrollTypeId, reportType); } } else if (selectedReport == "Payslip") { DataSet oEmpDetails = employeeService.GetEncashPayslip(sEmpIDs, oLeaveYear.Name); DataSet tempDataSet = new DataSet(); if (oEmpDetails.Tables.Count > 0) { GlobalFunctions.bDataFound = true; PayrollDataSet.dsEmpLeaveLedger.BonusPaySlipDataTable dPaySlipData = new PayrollDataSet.dsEmpLeaveLedger.BonusPaySlipDataTable(); int i = 0; foreach (DataRow oDRow in oEmpDetails.Tables[0].Rows) { dr = dPaySlipData.NewRow(); dr["EmpNo"] = oDRow["EMPLOYEENO"]; dr["Name"] = oDRow["NAME"]; dr["Basic"] = oDRow["BasicSalary"]; dr["BonusAmount"] = oDRow["ENCASHAMOUNT"]; dr["TaxAmount"] = oDRow["TaxAmount"]; dr["Department"] = oDRow["Department"]; dr["Designation"] = oDRow["Designation"]; //dr["BonusMonth"] = cboLeaveYear.Text; dr["GrossSalary"] = oDRow["GROSSSALARY"]; //oDR["NetBonus"]=oDRow["PAYMENTMODE"]; dr["PAYMENTMODE"] = oLeaveYear.Name; //oDR["SLNo"] = count; dPaySlipData.Rows.Add(dr); i++; } //form.ShowDlgForTrainingSummaryReport(dTEmpDetail); dPaySlipData.TableName = "PayrollDataSet_BonusPaySlip"; tempDataSet.Tables.Add(dPaySlipData); string RDLC = "HRM.Report.RDLC.EncashPaySlip.rdlc"; return new ReportProcessor().CommonReportView(null, RDLC, tempDataSet, null, null, true, payrollTypeId, reportType); } else GlobalFunctions.bDataFound = false; } else if (selectedReport == "Cash Advice") { DataSet leaveCashAdvice = employeeService.GetLeaveCashAdvice(sEmpIDs, oLeaveYear.Name); if (leaveCashAdvice.Tables.Count > 0) { GlobalFunctions.bDataFound = true; PayrollDataSet.dsEmpLeaveLedger.LeaveCashAdviceDataTable dTEmpDetail = new PayrollDataSet.dsEmpLeaveLedger.LeaveCashAdviceDataTable(); foreach (DataRow oDRow in leaveCashAdvice.Tables[0].Rows) { dr = dTEmpDetail.NewRow(); dr["EmpNo"] = oDRow["EMPLOYEENO"].ToString(); dr["Name"] = oDRow["NAME"].ToString(); dr["grossSalary"] = Convert.ToDouble(oDRow["GROSSSALARY"].ToString()); dr["EncashmentAmount"] = Convert.ToDouble(oDRow["ENCASHAMOUNT"].ToString()); dTEmpDetail.Rows.Add(dr); } DataSet dSet = new DataSet(); dTEmpDetail.TableName = "dsEmpLeaveLedger_LeaveCashAdvice"; dSet.Tables.Add(dTEmpDetail); List paramList = new List(); ReportParameter tempParam = new ReportParameter("LeaveYear", oLeaveYear.Name); paramList.Add(tempParam); string RDLC = "HRM.Report.RDLC.LeaveCashAdvice.rdlc"; return new ReportProcessor().CommonReportView(null, RDLC, dSet, null, paramList, true, payrollTypeId, reportType); } else { GlobalFunctions.bDataFound = false; } } return null; } public static byte[] AllLeaveLedger(List employees, int leaveYearId, /*DateTime fromDate, DateTime toDate, int leaveType,*/ int payrollTypeId, string reportType) { DataSet rptDS = new DataSet(); DataSet rptSubDS = new DataSet(); PayrollDataSet.dsEmpLeaveLedger.TeamLeaveEmpInfoDataTable dt1 = new PayrollDataSet.dsEmpLeaveLedger.TeamLeaveEmpInfoDataTable(); PayrollDataSet.dsEmpLeaveLedger.TeamLeaveTypeDataTable dt2 = new PayrollDataSet.dsEmpLeaveLedger.TeamLeaveTypeDataTable(); PayrollDataSet.dsEmpLeaveLedger.TeamLeaveDetailsDataTable dt3 = new PayrollDataSet.dsEmpLeaveLedger.TeamLeaveDetailsDataTable(); DataTable dt = new DataTable(); List leaveYear = new LeaveYearService().Get(); //LeaveYear curLeaveYear = LeaveYear.GetCurrentYear(); //LeaveYear curLeaveYear = leaveYear.Find(x => fromDate.Date >= x.StartDate.Date && toDate.Date <= x.EndDate.Date); LeaveYear curLeaveYear = leaveYear.Find(x => x.ID == leaveYearId); List oLeaveEntrys = new List(); List oOrgBasics = new OrganogramService().Get(EnumStatus.Regardless); List oOrgAuthorities = new OrganogramService().GetAllOrganAuthority(); List oOrgEmployees = new OrganogramEmployeeService().Get(); List oEmployees = new EmployeeService().Get(); string sEmpIDs = employees.CommaSeparatedIDs(); //oLeaveEntrys = new LeaveEntryService().GetEmployeeWiseLeaveDetailReport(sEmpIDs, fromDate, toDate); oLeaveEntrys = new LeaveEntryService().GetEmployeeWiseLeaveDetailReport(sEmpIDs, curLeaveYear.StartDate, curLeaveYear.EndDate); List leaveEncashments = new LeaveEncashmentService().Get(curLeaveYear.ID); LeaveEntry leaveEntry = null; //if (leaveType != 0) // oLeaveEntrys = oLeaveEntrys.Where(x => x.LeaveID == leaveType).ToList(); DataRow oRow = null; DataRow odr1 = null; DataRow odr2 = null; DataRow odr3 = null; DataTable dtBasic = new EmployeeService().GetBasic(sEmpIDs); List _oLeaves = new LeaveService().Get(EnumStatus.Active, payrollTypeId); List designations = new DesignationService().GetAll(); List departments = new DepartmentService().GetAll(); #region Basic foreach (Employee empTemp in employees) { //string query = string.Format(@"SELECT Employee.Name FROM Employee, // (SELECT EmployeeID FROM OrganEmployee oe WHERE oe.NodeID = // ( // SELECT ParentID FROM Organogram o WHERE o.OrganogramID= // (SELECT NodeID FROM OrganEmployee oe WHERE EmployeeID={0}))) tab1 // WHERE Employee.EMPLOYEEID=tab1.EmployeeID", empTemp.ID); DataTable orgEmpDT = null; try { orgEmpDT = dtBasic.AsEnumerable().Where(x => x["employeeid"].ToString() == empTemp.ID.ToString()).CopyToDataTable(); //GlobalFunctions.GetDataTable(query); } catch (Exception) { } odr1 = dt1.NewRow(); odr1["EmpNo"] = empTemp.EmployeeNo; odr1["EmpName"] = empTemp.Name; Designation dsg = designations.Find(des => des.ID == empTemp.DesignationID); odr1["Designation"] = dsg != null ? dsg.Name : string.Empty; Department dpt = departments.Find(dept => dept.ID == empTemp.DepartmentID); odr1["Department"] = dpt != null ? dpt.Name : string.Empty; odr1["LeavePeriod"] = curLeaveYear.Name; odr1["LeaveApprover"] = (orgEmpDT != null && orgEmpDT.Rows.Count > 0) ? orgEmpDT.Rows[0]["approverName"] : string.Empty; List oNotifierEmpoloyees = new OrganogramService().GetOrganogramAutoriyEmployee(oEmployees, oOrgEmployees, oOrgBasics, oOrgAuthorities, EnumAuthorityType.Doted, empTemp); string notifierNames = oNotifierEmpoloyees.Aggregate(new StringBuilder(), (acc, x) => acc.AppendFormat("{0},", x.Name), acc => acc.ToString().Trim(',')); odr1["LeaveNotifier"] = notifierNames; dt1.Rows.Add(odr1); } dt1.TableName = "TeamLeaveEmpInfo"; rptDS.Tables.Add(dt1); #endregion #region Status List oEmpLeaveStatus = new LeaveProcessService().CurrentYearStatus(employees, curLeaveYear, payrollTypeId); foreach (EmpLeaveStatus eLStatus in oEmpLeaveStatus) { Employee emp = oEmployees.FirstOrDefault(x => x.ID == eLStatus.EmpId); //emp = new EmployeeService().Get(eLStatus.EmpId); LeaveYear lYear = leaveYear.Where(x => x.ID == eLStatus.LeaveYearID).FirstOrDefault(); odr2 = dt2.NewRow(); odr2["EmpNo"] = emp.EmployeeNo; Leave lv = _oLeaves.Where(x => x.ID == eLStatus.LeaveId).FirstOrDefault(); odr2["LeaveType"] = lv != null ? lv.Description : string.Empty; odr2["OpeningBalance"] = eLStatus.OpeningBalance - eLStatus.CFDays; odr2["CFdays"] = eLStatus.CFDays; odr2["Consumed"] = eLStatus.LeaveAvailed; odr2["ClosingBalance"] = eLStatus.ClosingBalance; odr2["Applied"] = eLStatus.ApplyDays; dt2.Rows.Add(odr2); } dt2.TableName = "TeamLeaveType"; rptSubDS.Tables.Add(dt2); #endregion #region Leave Encashment foreach (LeaveEncashment leaveEncashment in leaveEncashments) { if (leaveEncashment != null && employees.Any(x => x.ID == leaveEncashment.EmployeeID)) { leaveEntry = new LeaveEntry(); leaveEntry.EmpID = leaveEncashment.EmployeeID; leaveEntry.LeaveID = leaveEncashment.LeaveID; leaveEntry.ApprovedFromDate = leaveEncashment.CreatedDate; leaveEntry.ApprovedToDate = leaveEncashment.CreatedDate; leaveEntry.ApprovedTotalDays = leaveEncashment.EncashmentDays; leaveEntry.Remarks = "Leave Encashment"; leaveEntry.AppliedLeaveDate = leaveEncashment.CreatedDate; leaveEntry.ApprovedLeaveDate = leaveEncashment.CreatedDate; leaveEntry.LeaveStatus = EnumLeaveStatus.Approved; oLeaveEntrys.Add(leaveEntry); } } #endregion #region Leave Details foreach (LeaveEntry le in oLeaveEntrys) { Employee emp = employees.Where(x => x.ID == le.EmpID).FirstOrDefault(); if (emp == null) { continue; } odr3 = dt3.NewRow(); odr3["EmpNo"] = emp.EmployeeNo; odr3["LeaveFrom"] = le.ApprovedFromDate.ToString("dd MMM yyyy"); odr3["LeaveTo"] = le.ApprovedToDate.ToString("dd MMM yyyy"); odr3["TotalDays"] = le.ApprovedTotalDays; Leave lv = _oLeaves.Where(x => x.ID == le.LeaveID).FirstOrDefault(); odr3["LeaveType"] = lv != null ? lv.Description : string.Empty; odr3["DateApplied"] = le.AppliedLeaveDate.ToString("dd MMM yyyy"); odr3["DateApproved"] = le.LeaveStatus == EnumLeaveStatus.Approved ? le.ApprovedLeaveDate.ToString("dd MMM yyyy") : ""; odr3["LeaveStatus"] = le.LeaveStatus.GetFriendlyNames(); odr3["LeaveReason"] = le.Remarks; dt3.Rows.Add(odr3); } dt3.TableName = "TeamLeaveDetails"; rptSubDS.Tables.Add(dt3); #endregion //_employee = SessionManager.CurrentEmployee; //leaveYear = LeaveYear.Get(); //curLeaveYear = LeaveYear.GetCurrentYear(); List _parameters = new List(); _parameters.Add(new ReportParameter("FromDate", curLeaveYear.StartDate.ToString("dd MMM yyyy"))); _parameters.Add(new ReportParameter("ToDate", curLeaveYear.EndDate.ToString("dd MMM yyyy"))); string RDLC = "LeaveLedgers.rdlc"; return new ReportProcessor().CommonReportView(null, rptDS, rptSubDS, RDLC, _parameters, true, payrollTypeId, reportType); } public byte[] ShowLeaveRegister(string sEmpID, int leaveYearId, int leaveId, int payrollTypeId, string reportType) { List designations = new DesignationService().Get(EnumStatus.Active, payrollTypeId); List departments = new DepartmentService().Get(EnumStatus.Active, payrollTypeId); DataRow dr = null; DataSet leaveApprover = new DataSet(); List _oLeaves = new LeaveService().Get(EnumStatus.Active, payrollTypeId); Leave _oLeave; _oLeave = _oLeaves.FirstOrDefault(x => x.ID == leaveId); string sDatecheck = string.Empty; List leaveYear = new LeaveYearService().Get(); LeaveYear lyy = new LeaveYear(); lyy = leaveYear.FirstOrDefault(x => x.ID == leaveYearId); List oEmployees = new EmployeeService().GetAllEmps(); List oemps = new EmployeeService().GetByEmpIDs(sEmpID); List oOrgBasics = new OrganogramService().Get(EnumStatus.Regardless); List oOrgAuthorities = new OrganogramService().GetAllOrganAuthority(); List oOrgEmployees = new OrganogramEmployeeService().Get(); //List> obalance = EmpLeaveStatus.CurrentYearStatusForReport(oemps, lyy);+ List obalance = new LeaveProcessService().CurrentYearStatus(oemps, lyy, payrollTypeId); sDatecheck = lyy.Name; if (_oLeave != null) { obalance = obalance.Where(x => x.LeaveId == _oLeave.ID).ToList(); } string empID = string.Empty; int count = 1; DataTable appliedLeavs = new LeaveEntryService().GetTotalLeaveAmountInYear(lyy.ID, EnumLeaveStatus.OnApproval); PayrollDataSet.dsEmpLeaveLedger.MultipleEmployeeLeaveDataTable mulLeaveBalance = new PayrollDataSet.dsEmpLeaveLedger.MultipleEmployeeLeaveDataTable(); PayrollDataSet.dsEmpLeaveLedger.MultipleEmployeeLeaveDataTable dTLeaveBalance = new PayrollDataSet.dsEmpLeaveLedger.MultipleEmployeeLeaveDataTable(); PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable dtBalance = new PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable(); //foreach (ObjectsTemplate oempList in obalance) //{ foreach (EmpLeaveStatus olevestatus in obalance) { Employee oemp = oemps.Find(delegate (Employee oem) { return oem.ID == olevestatus.EmpId; }); Designation designation = designations.FirstOrDefault(x => x.ID == oemp.DesignationID); Department department = departments.FirstOrDefault(x => x.ID == oemp.DepartmentID); dr = mulLeaveBalance.NewRow(); leaveApprover = new DataSet();//new EmployeeService().GetLineManagerFromOrg(oemp.ID); dr["EmpNo"] = oemp.EmployeeNo; dr["Name"] = oemp.Name; dr["JoiningDate"] = oemp.JoiningDate.ToString("dd-MMM-yy"); dr["Designation"] = designation != null ? designation.Name : string.Empty; dr["Department"] = department != null ? department.Name : string.Empty; dr["LeaveName"] = olevestatus.Leave.Description; dr["OpeningBalance"] = olevestatus.OpeningBalance - olevestatus.CFDays; dr["CFDays"] = olevestatus.CFDays; dr["Consumed"] = olevestatus.LeaveAvailed; dr["ClosingBalance"] = olevestatus.ClosingBalance; DataRow[] foundRows = appliedLeavs.Select("Empid=" + oemp.ID + " AND LeaveId=" +olevestatus.LeaveId); if(foundRows!=null && foundRows.Count() >0) { dr["Applied"] = Convert.ToDouble(foundRows[0]["Days"]); } // dr["Applied"] = olevestatus.ApplyDays; dr["RowSequence"] = count++; //if (leaveApprover.Tables[0].Rows.Count != 0) //{ // dr["LeaveApprover"] = leaveApprover.Tables[0].Rows[0]["Name"]; //} //else //{ // dr["LeaveApprover"] = ""; //} //List oNotifierEmpoloyees = new OrganogramService().GetOrganogramAutoriyEmployee(oEmployees, oOrgEmployees, oOrgBasics, oOrgAuthorities, EnumAuthorityType.Doted, oemp); string notifierNames = ""; // oNotifierEmpoloyees.Aggregate(new StringBuilder(), (acc, x) => acc.AppendFormat("{0},", x.Name), //acc => acc.ToString().Trim(',')); dr["LeaveNotifier"] = notifierNames; dr["LeaveYear"] = lyy.Name; mulLeaveBalance.Rows.Add(dr); } //} var sortedData = from DataRow odr in mulLeaveBalance.Rows orderby dr["EmpNo"], dr["RowSequence"] ascending select odr; foreach (DataRow odr in sortedData) { DataRow nDr = dTLeaveBalance.NewRow(); nDr.ItemArray = odr.ItemArray; dTLeaveBalance.Rows.Add(nDr); } DataSet dSet = new DataSet(); dSet.Tables.Add(dTLeaveBalance); ReportParameter parameter = new ReportParameter("LeaveYear", sDatecheck); reportParameters.Add(parameter); //dTLeaveBalance.TableName = "dsEmpLeaveLedger_LeaveBalance"; dTLeaveBalance.TableName = "dsEmpLeaveLedger_MultipleEmployeeLeave"; //form.ShowMultipleEmpLeaveBalance(null, dSet, "Payroll.Report.RDLC.MultipleLeaveEmp.rdlc", sDatecheck); string RDLCName = "HRM.Report.RDLC.LeaveRegisterNew.rdlc"; // return new ReportProcessor().ShowMultipleEmpLeaveRegister(null, dSet, RDLC, sDatecheck, payrollTypeId, reportType); return new ReportProcessor().CommonReportView(null, RDLCName, dSet, null, reportParameters, true, payrollTypeId, reportType); } private DataSet RefreshPreviousDayApprovedLeaveReportDataSetForMailSender(string toEmail, DateTime leaveApprovedDate, EnumLeaveStatus leaveStatus) { PayrollDataSet.dsEmpLeaveLedger.LeaveEntrysForSchedularDataTable leaveEntryData = new PayrollDataSet.dsEmpLeaveLedger.LeaveEntrysForSchedularDataTable(); List leaveEntrys = new LeaveEntryService().GetPreviousDateApprovedLeaveEntry(leaveApprovedDate, toEmail, leaveStatus); foreach (LeaveEntryDetailsMailSenderReport item in leaveEntrys) { DataRow dRow = leaveEntryData.NewRow(); dRow["EMPLOYEEID"] = item.EmployeeId; dRow["EMPLOYEENO"] = item.EmployeeNo; dRow["NAME"] = item.Name; dRow["DESIGNATION"] = item.Designation; dRow["DEPARTMENT"] = item.Department; dRow["LeaveEntryID"] = item.LeaveEntryID; dRow["LEAVESTATUS"] = item.LeaveStatus; dRow["APPFROMDATE"] = item.FromDate.ToString("dd MMM yyyy"); dRow["APPTODATE"] = item.ToDate.ToString("dd MMM yyyy"); dRow["Reason"] = item.Reason; dRow["LOCATION"] = item.LocationName; dRow["LeaveName"] = item.LeaveName; leaveEntryData.Rows.Add(dRow); } DataSet LeaveentryMailSenderReportDs = new DataSet(); leaveEntryData.TableName = "dsEmpLeaveLedger_LeaveEntrysForSchedular"; LeaveentryMailSenderReportDs.Tables.Add(leaveEntryData); return LeaveentryMailSenderReportDs; } public byte[] getLeaveApplication(int sEmpIDs, int payrolltypeid, DateTime NextPayProcessDate) { Employee employee = new EmployeeService().Get(sEmpIDs); LeaveYear lyy = new LeaveYearService().GetCurrentYear(payrolltypeid); DateTime operationDate = new GlobalFunctionService().GetOperationDate(); if (operationDate.Date > lyy.EndDate.Date) { operationDate = lyy.EndDate.Date; } List dcurrentStatus = new EmpLeaveStatusService().CurrentYearStatus(new List { employee }, lyy, operationDate, EnumLeaveStatus.Approved, NextPayProcessDate); DataTable dEmpLeaveApplication = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.LeaveApplicationDataTable(); if (dcurrentStatus.Count() > 0) { DataSet ds = new DataSet(); DataRow dr = dEmpLeaveApplication.NewRow(); DataTable dtEmpBasicInfo = new EmployeeService().GetAllEmpBasicInfo(employee.ID.ToString()) .Tables[0] .AsEnumerable() .CopyToDataTable(); foreach (DataRow drBasic in dtEmpBasicInfo.Rows) { dr["Name"] = drBasic["BanglaName"]; dr["Designation"] = drBasic["BanglaDesignation"]; AccessCard acc = new AccessCardService().Get(drBasic["CardID"] is DBNull ? 0 : Convert.ToInt32(drBasic["CardID"].ToString())); if (acc != null) { dr["CardNo"] = acc.CardNumber; } dr["Department"] = drBasic["DepartmentBangla"]; dr["Section"] = drBasic["SectionBangla"]; dr["Unit"] = drBasic["FloorBangla"]; } foreach (EmpLeaveStatus item in dcurrentStatus) { item.Leave = new LeaveService().Get(item.LeaveId); switch (item.Leave.Code) { case "CL": dr["CLOpen"] = (int)item.OpeningBalance; dr["CLAvailed"] = (int)item.LeaveAvailed; dr["CLClose"] = (int)item.ClosingBalance; break; case "SL": dr["MLOpen"] = (int)item.OpeningBalance; dr["MLAvailed"] = (int)item.LeaveAvailed; dr["MLClosing"] = (int)item.ClosingBalance; break; case "EL": dr["ELOpen"] = (int)item.OpeningBalance; dr["ELAvailed"] = (int)item.LeaveAvailed; dr["ELClosing"] = (int)item.ClosingBalance; break; case "ML": dr["MatLOpen"] = (int)item.OpeningBalance; dr["MatLAvailed"] = (int)item.LeaveAvailed; dr["MatLClosing"] = (int)item.ClosingBalance; break; case "PL": dr["PatLOpen"] = (int)item.OpeningBalance; dr["PatLAvailed"] = (int)item.LeaveAvailed; dr["PatLClosing"] = (int)item.ClosingBalance; break; default: break; } } dEmpLeaveApplication.Rows.Add(dr); dEmpLeaveApplication.TableName = "dsEmpLeaveLedger_LeaveApplication"; ds.Tables.Add(dEmpLeaveApplication); List oParameters = new List(); ReportParameter rParam = new ReportParameter("LeaveYear", string.Format("{0} - {1}", lyy.StartDate.ToString("dd MMM yyyy"), lyy.EndDate.ToString("dd MMM yyyy"))); oParameters.Add(rParam); string RDLCName = "HRM.Report.RDLC.LeaveApplication.rdlc"; return new ReportProcessor().CommonReportView(null, RDLCName, ds, null, oParameters, true, payrolltypeid, "PDF"); //fViewer.CommonReportView(null, ds, "Payroll.Report.RDLC.LeaveApplication.rdlc", oParameters); } return null; } public byte[] GetPreviousDayApprovedLeaveReport(string toEmail, DateTime leaveApprovedDate, EnumLeaveStatus leaveStatus, string fileFormate) { ReportProcessor reportProcessor = new ReportProcessor(); string rdlcName = "HRM.Report.RDLC.PreviousDayApprovedLeaveReportForMailSender.rdlc"; // build action of this rdlc has to be embedded resource string reportTitle = "Approved Leave Report of Sales : (" + leaveApprovedDate.ToString("dd MMM yyyy") + ")"; DataSet tempDataSet = RefreshPreviousDayApprovedLeaveReportDataSetForMailSender(toEmail, leaveApprovedDate, leaveStatus); return reportProcessor.ShowReportForSchedular(null, rdlcName, tempDataSet, null, true, reportTitle, fileFormate); } public byte[] GetMaternityLeaveReport(MaternityLeave oMaternityLeave, int payrollTypeId) { ReportProcessor reportProcessor = new ReportProcessor(); string RDLC = "MaternityLeaveAfter.rdlc"; //string rdlcName = "HRM.Report.RDLC.PreviousDayApprovedLeaveReportForMailSender.rdlc"; // build action of this rdlc has to be embedded resource //string reportTitle = "Approved Leave Report of Sales : (" + leaveApprovedDate.ToString("dd MMM yyyy") + ")"; //DataSet tempDataSet = RefreshPreviousDayApprovedLeaveReportDataSetForMailSender(toEmail, leaveApprovedDate, leaveStatus); HRM.Report.PayrollDataSet.dsEmpLeaveLedger.MaternityLeaveDataTable oMaternityLeaveDataTable = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.MaternityLeaveDataTable(); HRM.Report.PayrollDataSet.dsEmpLeaveLedger.MaternityStatusDetailDataTable oMaternityStatusDetailDataTable = new HRM.Report.PayrollDataSet.dsEmpLeaveLedger.MaternityStatusDetailDataTable(); try { int counter = 0; MaternityLeave maternityLeave = oMaternityLeave; DataTable dt = null; MaternityLeaveService maternityLeaveService = new MaternityLeaveService(); if (maternityLeave != null) { maternityLeave.MaternityItemDetailColl = maternityLeaveService.GetMItemDetail(maternityLeave.ID); maternityLeave.MaternityStatusDetailColl = maternityLeaveService.GetMStatusDetail(maternityLeave.ID); List MaternityItemDetailOut = new List(); //RefreshGridAllowance(maternityLeave); dt = maternityLeaveService.RefreshGridAllowanceMaternityLeave(maternityLeave, GlobalFunctions.LastDateOfMonth(maternityLeave.LeaveFromDate), out MaternityItemDetailOut); Employee employee = new EmployeeService().Get(maternityLeave.EmployeeID); employee.Designation = new DesignationService().Get((int)employee.DesignationID); employee.Department = new DepartmentService().Get((int)employee.DepartmentID); //RefreshGridAllowance(maternityLeave); string serviceLength = Global.DateFunctions.DateDiff(employee.JoiningDate, (DateTime)maternityLeave.DateOfApproval); string status = string.Empty; double paidAmount = 0; int totalPaidDays = 0; DateTime? lastPaidDate = null; bool IsSameDate = false; DateTime dtDateCheck = new DateTime(); if (maternityLeave.MaternityStatusDetailColl.Count == 2) dtDateCheck = (DateTime)maternityLeave.MaternityStatusDetailColl[0].PaymentDate; foreach (MaternityLeave.MaternityStatusDetail statusDetail in maternityLeave.MaternityStatusDetailColl) { if (dtDateCheck == statusDetail.PaymentDate) { IsSameDate = true; } else { dtDateCheck = (DateTime)statusDetail.PaymentDate; IsSameDate = false; } } foreach (MaternityLeave.MaternityStatusDetail statusDetail in maternityLeave.MaternityStatusDetailColl) { if (maternityLeave.NetAmount == maternityLeave.PaidAmount) status = Enum.GetName(typeof(EnumMaternityLeaveStatus), EnumMaternityLeaveStatus.FullPayment); else status = Enum.GetName(typeof(EnumMaternityLeaveStatus), statusDetail.Status); lastPaidDate = (DateTime)statusDetail.PaymentDate; totalPaidDays += statusDetail.PaymentDays; paidAmount += statusDetail.Amount; if (IsSameDate) { totalPaidDays = statusDetail.PaymentDays * 2; paidAmount = statusDetail.Amount * 2; status = Enum.GetName(typeof(EnumMaternityLeaveStatus), EnumMaternityLeaveStatus.FullPayment); string strStatus2 = "Net Amount payable to the Employee"; //oMaternityStatusDetailDataTable.Rows.Add(statusDetail.Status, statusDetail.PaymentDate.ToString("dd MMM yyyy"), statusDetail.PaymentDays, statusDetail.Amount.ToString("N2")); oMaternityStatusDetailDataTable.Rows.Add(strStatus2, statusDetail.PaymentDate.Value.ToString("dd MMM yyyy") , statusDetail.PaymentDays, (statusDetail.Amount * 2).ToString("N2")); break; } else { if (maternityLeave.MaternityStatusDetailColl.Count == 1) { counter++; string strStatus = ""; if (maternityLeave.NetAmount == maternityLeave.PaidAmount) strStatus = "Less: Already paid as on " + statusDetail.PaymentDate.Value.ToString("dd MMM yyyy"); else strStatus = "Net Maternity Benefit(50%) Payable to The Employee"; //oMaternityStatusDetailDataTable.Rows.Add(statusDetail.Status, statusDetail.PaymentDate.ToString("dd MMM yyyy"), statusDetail.PaymentDays, statusDetail.Amount.ToString("N2")); oMaternityStatusDetailDataTable.Rows.Add(strStatus, statusDetail.PaymentDate.Value.ToString("dd MMM yyyy"), statusDetail.PaymentDays, statusDetail.Amount.ToString("N2")); } else if (maternityLeave.MaternityStatusDetailColl.Count == 2) { if (counter == 0) { string strStatus1 = "Less: Already paid as on " + statusDetail.PaymentDate.Value.ToString("dd MMM yyyy"); //oMaternityStatusDetailDataTable.Rows.Add(statusDetail.Status, statusDetail.PaymentDate.ToString("dd MMM yyyy"), statusDetail.PaymentDays, statusDetail.Amount.ToString("N2")); oMaternityStatusDetailDataTable.Rows.Add(strStatus1, statusDetail.PaymentDate.Value.ToString("dd MMM yyyy"), statusDetail.PaymentDays, statusDetail.Amount.ToString("N2")); } else if (counter == 1) { string strStatus2 = "Net Amount payable to the Employee"; //oMaternityStatusDetailDataTable.Rows.Add(statusDetail.Status, statusDetail.PaymentDate.ToString("dd MMM yyyy"), statusDetail.PaymentDays, statusDetail.Amount.ToString("N2")); oMaternityStatusDetailDataTable.Rows.Add(strStatus2, statusDetail.PaymentDate.Value.ToString("dd MMM yyyy"), statusDetail.PaymentDays, statusDetail.Amount.ToString("N2")); } counter++; } } } string Before3Month = null, Before2Month = null, Before1Month = null; for (int threeMonth = 3; threeMonth >= 1; threeMonth--) { DateTime month = GlobalFunctions.LastDateOfMonth(maternityLeave.LeaveFromDate).AddMonths(-1 * threeMonth); switch (threeMonth) { case 3: Before3Month = month.ToString("MMM yyyy"); break; case 2: Before2Month = month.ToString("MMM yyyy"); break; case 1: Before1Month = month.ToString("MMM yyyy"); break; default: break; } } oMaternityLeaveDataTable.Rows.Add(employee.Name, employee.EmployeeNo, employee.Designation.Name, employee.Department.Name, "N/A", employee.JoiningDate.ToString("dd MMM yyyy"), serviceLength, maternityLeave.ApproveDays, maternityLeave.DateOfApproval.Value.ToString("dd MMM yyyy"), totalPaidDays, dt.Columns[0].ColumnName, Before3Month, Before2Month, Before1Month, dt.Columns[4].ColumnName, maternityLeave.DailyAvgEarning.ToString("N2"), status, maternityLeave.NetAmount.ToString("N2"), maternityLeave.LeaveToDate.ToString("dd MMM yyyy"), maternityLeave.LeaveFromDate.ToString("dd MMM yyyy"), lastPaidDate != null ? lastPaidDate.Value.ToString("dd MMM yyyy") : "", totalPaidDays, paidAmount.ToString("N2"), maternityLeave.TaxAmount.ToString("N2"), maternityLeave.MaternityBenifit.ToString("N2")); foreach (DataRow row in dt.Rows) { oMaternityLeaveDataTable.Rows.Add(employee.Name, employee.EmployeeNo, employee.Designation.Name, employee.Department.Name, "N/A", employee.JoiningDate.ToString("dd MMM yyyy"), serviceLength, maternityLeave.ApproveDays, maternityLeave.DateOfApproval.Value.ToString("dd MMM yyyy"), totalPaidDays, row["Particulars"], Convert.ToInt32(row["Before3Month"]).ToString("N2"), Convert.ToInt32(row["Before2Month"]).ToString("N2"), Convert.ToInt32(row["Before1Month"]).ToString("N2"), Convert.ToInt32(row["Total"]).ToString("N2"), maternityLeave.DailyAvgEarning.ToString("N2"), status, maternityLeave.NetAmount.ToString("N2"), maternityLeave.LeaveToDate.ToString("dd MMM yyyy"), maternityLeave.LeaveFromDate.ToString("dd MMM yyyy"), lastPaidDate.Value.ToString("dd MMM yyyy"), totalPaidDays, paidAmount.ToString("N2"), maternityLeave.TaxAmount.ToString("N2"), maternityLeave.MaternityBenifit.ToString("N2")); } } //else //{ // //MessageBox.Show("Not available data for this search.", "Data Not Found", MessageBoxButtons.OK, MessageBoxIcon.Information); // return ; //} //Payroll.Report.fReportViewer fViewer = new Payroll.Report.fReportViewer(); //fViewer.ShowDlg("Payroll.Report.MaternityLeave.RDLC.MaternityLeave.rdlc", "dsEmpLeaveLedger_MaternityLeave", oMaternityLeaveDataTable, "dsEmpLeaveLedger_MaternityStatusDetail", oMaternityStatusDetailDataTable); //if (counter == 1) //{ // fViewer.ShowDlg("Payroll.Report.MaternityLeave.RDLC.MaternityLeaveBefore.rdlc", "dsEmpLeaveLedger_MaternityLeave", oMaternityLeaveDataTable, "dsEmpLeaveLedger_MaternityStatusDetail", oMaternityStatusDetailDataTable); //} //else if (counter == 2) //{ //fViewer.ShowDlg("Payroll.Report.MaternityLeave.RDLC.MaternityLeaveAfter.rdlc", "dsEmpLeaveLedger_MaternityLeave", oMaternityLeaveDataTable, "dsEmpLeaveLedger_MaternityStatusDetail", oMaternityStatusDetailDataTable); //} } catch (Exception e) { if (e.InnerException == null) { throw new Exception(e.Message); } else { throw new Exception(e.Message, e.InnerException); } } DataSet dSet = new DataSet(); oMaternityLeaveDataTable.TableName = "dsEmpLeaveLedger_MaternityLeave"; oMaternityStatusDetailDataTable.TableName = "dsEmpLeaveLedger_MaternityStatusDetail"; dSet.Tables.Add(oMaternityLeaveDataTable); dSet.Tables.Add(oMaternityStatusDetailDataTable); return reportProcessor.CommonReportViewForReports(null, dSet, null, RDLC, null, true, payrollTypeId, "PDF"); } } }