using System; using System.Collections.Generic; using System.Linq; using System.Text; using Payroll.BO; using System.Data; using Ease.CoreV35.Model; using System.IO; namespace Payroll.Report { public class rptJV { DateTime _dEffectDate; private ReportSetup _selectedParameter; public ReportSetup SelectedParameter { set { _selectedParameter = value; } } public rptJV() { } public DataTable JVSalaryDetail(ID JVTypeID, DateTime dEffectDate) { int count = 1; _dEffectDate = dEffectDate; DataRow dr = null; PayrollDataSet.PayrollDataSet.JVSalaryDetailDataTable dTJVSDetail = new Payroll.Report.PayrollDataSet.PayrollDataSet.JVSalaryDetailDataTable(); JVSetup osetp = new JVSetup(); DateTime maxdate = osetp.GetMaxDate(_dEffectDate); ObjectsTemplate oJVSetups = new ObjectsTemplate(); oJVSetups = JVSetup.GetByJVTypeAndEffectDate(JVTypeID, maxdate); int nLocationTire = ConfigurationManager.GetIntValue("Location", "tier", EnumConfigurationType.Logic); ObjectsTemplate oLocations = new ObjectsTemplate(); oLocations = Location.GetByTier(2); // get the last tier data and last tier is defined in Logic configuration file int nCCTire = ConfigurationManager.GetIntValue("costcenter", "tier", EnumConfigurationType.Logic); ObjectsTemplate oCostCenters = new ObjectsTemplate(); oCostCenters = Costcenter.GetByTire(nCCTire); // get the last tier data and last tier is defined in Logic configuration file ObjectsTemplate salaries = SalaryMonthly.Get(GlobalFunctions.LastDateOfMonth(dEffectDate)); foreach (SalaryMonthly item in salaries) { foreach (JVSetup osetup in oJVSetups) { dr = dTJVSDetail.NewRow(); dr["SLNo"] = count; dr["EmpNo"] = item.Employee.EmployeeNo; dr["Name"] = item.Employee.Name; dr["Description"] = osetup.Description; dr["Amount"] = osetup.GetAmount(item); dr["JVMonth"] = dEffectDate; dTJVSDetail.Rows.Add(dr); } count++; } return dTJVSDetail; } public DataSet MemorandumSalaryDetail(ID JVTypeID, DateTime dEffectDate, int nEmpID) { DataSet oDS = new DataSet(); _dEffectDate = dEffectDate; DataRow drDebit = null; DataRow drCredit = null; PayrollDataSet.PayrollDataSet.MemoDebitDataTable dTMemoDebit = new Payroll.Report.PayrollDataSet.PayrollDataSet.MemoDebitDataTable(); PayrollDataSet.PayrollDataSet.MemoCreditDataTable dTMemoCredit = new Payroll.Report.PayrollDataSet.PayrollDataSet.MemoCreditDataTable(); string sEmpID = Convert.ToString(nEmpID); JVSetup osetp = new JVSetup(); DateTime maxdate = osetp.GetMaxDate(_dEffectDate); ObjectsTemplate oJVSetups = new ObjectsTemplate(); oJVSetups = JVSetup.GetByJVTypeAndEffectDate(JVTypeID, maxdate); //sEmpID, ObjectsTemplate salaries = SalaryMonthly.Get(GlobalFunctions.LastDateOfMonth(dEffectDate)); string sFGLCode = ""; double dFAmount = 0.0; ObjectsTemplate oJVSetupDebits = new ObjectsTemplate(); ObjectsTemplate oJVSetupCredits = new ObjectsTemplate(); foreach (JVSetup oJVItem in oJVSetups) { if (oJVItem.Side == (int)EnumTranSide.Debit) { oJVSetupDebits.Add(oJVItem); } else if (oJVItem.Side == (int)EnumTranSide.Credit) { oJVSetupCredits.Add(oJVItem); } } double ItemDebitHeadAmount = 0.0; foreach (JVSetup oJVDebit in oJVSetupDebits) { ItemDebitHeadAmount = 0.0; if (oJVDebit.ID.Integer == 1) { sFGLCode = oJVDebit.GLCode; } drDebit = dTMemoDebit.NewRow(); drDebit["DDescription"] = oJVDebit.Description; drDebit["DAccount"] = oJVDebit.GLCode; drDebit["FGLDes"] = sFGLCode; foreach (SalaryMonthly oSM in salaries) { //if (oJVDebit.ID.Integer == 1) // dFAmount = oJVDebit.GetAmount(oSM); ItemDebitHeadAmount += oJVDebit.GetAmount(oSM, oJVDebit.JVSetupDetails); } if (oJVDebit.ID.Integer == 1) drDebit["FGLAmount"] = Convert.ToString(ItemDebitHeadAmount); drDebit["DAmount"] = ItemDebitHeadAmount; dTMemoDebit.Rows.Add(drDebit); } double ItemCreditHeadAmount = 0.0; foreach (JVSetup oJVCredit in oJVSetupCredits) { ItemCreditHeadAmount = 0.0; drCredit = dTMemoCredit.NewRow(); //drCredit = dTMemoCredit.NewRow(); drCredit["CDescription"] = oJVCredit.Description; drCredit["CAccount"] = oJVCredit.GLCode; foreach (SalaryMonthly oSM in salaries) { ItemCreditHeadAmount += oJVCredit.GetAmount(oSM, oJVCredit.JVSetupDetails); } drCredit["CAmount"] = ItemCreditHeadAmount; dTMemoCredit.Rows.Add(drCredit); } //foreach (SalaryMonthly item in salaries) //{ // foreach (JVSetup osetup in oJVSetups) // { // if(osetup.ID.Integer==1) // { // sFGLCode = osetup.GLCode; // dFAmount = osetup.GetAmount(item); // } // if(osetup.Side==(int)EnumTranSide.Debit) // { // drDebit = dTMemoDebit.NewRow(); // drDebit["DDescription"] = osetup.Description; // drDebit["DAccount"] = osetup.GLCode; // drDebit["DAmount"] = osetup.GetAmount(item); // drDebit["FGLDes"] = sFGLCode; // drDebit["FGLAmount"] = Convert.ToString(dFAmount); // dTMemoDebit.Rows.Add(drDebit); // } // else if (osetup.Side == (int)EnumTranSide.Credit) // { // drCredit = dTMemoCredit.NewRow(); // drCredit["CDescription"] = osetup.Description; // drCredit["CAccount"] = osetup.GLCode; // drCredit["CAmount"] = osetup.GetAmount(item); // dTMemoCredit.Rows.Add(drCredit); // } // } // count++; //} DolarRate oDRate = new DolarRate(); oDRate = oDRate.Get(GlobalFunctions.LastDateOfMonth(_dEffectDate)); if (oDRate != null) { drDebit = dTMemoDebit.NewRow(); drDebit["DDescription"] = oDRate.DDescription; drDebit["DAccount"] = oDRate.DAccountNo; drDebit["DAmount"] = (oDRate.Amount * oDRate.Rate); dTMemoDebit.Rows.Add(drDebit); drCredit = dTMemoCredit.NewRow(); drCredit["CDescription"] = oDRate.DDescription; drCredit["CAccount"] = oDRate.DAccountNo; drCredit["CAmount"] = (oDRate.Amount * oDRate.Rate); dTMemoCredit.Rows.Add(drCredit); } dTMemoDebit.TableName = "PayrollDataSet_MemoDebit"; dTMemoCredit.TableName = "PayrollDataSet_MemoCredit"; oDS.Tables.Add(dTMemoDebit); oDS.Tables.Add(dTMemoCredit); return oDS; } //public DataTable JVReport(ID JVTypeID,DateTime dEffectDate) //{ // _dEffectDate = dEffectDate; // DataRow dr = null; // double nAmount = 0.0; // PayrollDataSet.PayrollDataSet.JVReportDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.PayrollDataSet.JVReportDataTable(); // JVSetup osetp = new JVSetup(); // DateTime maxdate = osetp.GetMaxDate(_dEffectDate); // ObjectsTemplate oJVSetups = new ObjectsTemplate(); // oJVSetups = JVSetup.GetByJVTypeAndEffectDate(JVTypeID, maxdate); // ObjectsTemplate oJVSetupDetails = new ObjectsTemplate(); // int nLocationTire = ConfigurationManager.GetIntValue("Location", "tier", EnumConfigurationType.Logic); // ObjectsTemplate oLocations = new ObjectsTemplate(); // oLocations = Location.GetByTier(2); // get the last tier data and last tier is defined in Logic configuration file // int nCCTire = ConfigurationManager.GetIntValue("costcenter", "tier", EnumConfigurationType.Logic); // ObjectsTemplate oCostCenters = new ObjectsTemplate(); // oCostCenters = Costcenter.GetByTire(nCCTire); // get the last tier data and last tier is defined in Logic configuration file // ObjectsTemplate salaries = SalaryMonthly.Get(dEffectDate); // foreach (JVSetup oJVSetup in oJVSetups) // { // foreach (Costcenter oCC in oCostCenters) // { // foreach (Location oLocation in oLocations) // { // nAmount = 0.0; // nAmount = GetSalaries(oLocation.ID, oCC.ID, salaries, oJVSetup); // if (nAmount == 0) continue; // oJVSetupDetails = JVSetupDetail.GetByJVSetup(oJVSetup.ID); // dr = dTJVInfo.NewRow(); // dr["GLCode"] = oJVSetup.GLCode; // dr["GLDescription"] = oJVSetup.Description; // dr["JType"] = "GJ"; // dr["JSource"] = "MA"; // dr["Reference"] = "110001"; // dr["JVDate"] = dEffectDate.ToString("dd MMM yyyy"); // if (oJVSetup.Side == (int)EnumTranSide.Debit) // { // dr["JVTranType"] = "D"; // } // else if(oJVSetup.Side==(int)EnumTranSide.Credit) // { // dr["JVTranType"] = "C"; // } // dr["Amount"] = GlobalFunctions.Round(nAmount); // dr["Period"] = dEffectDate.ToString("dd MMM yyyy"); // if (oCC.Parent.Code == "106X") // { // dr["T5"] = oCC.Code; // } // else // { // dr["T5"] = "XX"; // } // dr["CostCenter"] = oCC.Parent.Code; // dr["Location"] = oLocation.Code; // dTJVInfo.Rows.Add(dr); // } // } // } // return dTJVInfo; //} public DataTable JVReport(ID JVTypeID, DateTime dEffectDate) { double totalBankAmount = 0; _dEffectDate = Payroll.BO.SystemInformation.CurrentSysInfo.NextPayProcessDate;// dEffectDate; //dEffectDate = _dEffectDate; DataRow dr = null; double nSAmount = 0; double nOAmount = 0; double totalDebitAmount = 0; string rCCode = string.Empty; PayrollDataSet.PayrollDataSet.JVReportDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.PayrollDataSet.JVReportDataTable(); JVSetup osetp = new JVSetup(); DateTime maxdate = osetp.GetMaxDate(_dEffectDate); ObjectsTemplate oJVSetups = JVSetup.GetByJVTypeAndMonth(JVTypeID, maxdate); ObjectsTemplate oJVSetupsDr = oJVSetups.Where(o => o.Side == (int)1).ToObjectsTemplate(); ObjectsTemplate oJVSetupsCr = oJVSetups.Where(o => o.Side == (int)2).ToObjectsTemplate(); ObjectsTemplate oJVSetupDetails = JVSetupDetail.Get(); ObjectsTemplate sMonthlys = new ObjectsTemplate(); ObjectsTemplate oSalaryMonthlys = SalaryMonthly.Get(dEffectDate); ObjectsTemplate oOPIProcessDetails = OPIProcess.GetProcessDetails(dEffectDate); ObjectsTemplate oOPIPDetails = new ObjectsTemplate(); ObjectsTemplate oDepartments = Department.Get(); JVType jType = JVType.Get(JVTypeID); List groupRC = oDepartments.Select(d => d.RCCode ?? d.RCCode).Distinct().ToList(); if (oJVSetups.Count > 0) { foreach (JVSetup jvstp in oJVSetups) { JVSetupDetail jVSetupDetail = oJVSetupDetails.Where(j => j.JVSetupID == jvstp.ID).FirstOrDefault(); if (jvstp.BookToCC) { foreach (JVSetupCC dep in jvstp.JVSetupCC) { //foreach (Department dp in deptRc) //{ sMonthlys = oSalaryMonthlys.Where(s => s.DepartmentID == dep.CCID).ToObjectsTemplate(); oOPIPDetails = oOPIProcessDetails.Where(s => s.DepartmentID == dep.CCID).ToObjectsTemplate(); if (sMonthlys != null && sMonthlys.Count > 0) { foreach (SalaryMonthly slrmntl in sMonthlys) { nSAmount += jvstp.GetAmount(slrmntl); } } if (oOPIPDetails != null && oOPIPDetails.Count > 0) { foreach (OPIProcessDetail oPPDtl in oOPIPDetails) { nOAmount += GetOPIAmount(jVSetupDetail.ItemID.Integer, oPPDtl.ID); } } //} if (nSAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = ""; dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; totalDebitAmount += nSAmount; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nSAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nSAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nSAmount = 0; } if (nOAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = ""; dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); totalDebitAmount += nOAmount; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nOAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nOAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nOAmount = 0; } }//dept end } else if(jvstp.ShowCC) { foreach (SalaryMonthly slrmntl in oSalaryMonthlys) { nSAmount += jvstp.GetAmount(slrmntl); } if (nSAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = ""; dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; totalDebitAmount += nSAmount; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nSAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nSAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nSAmount = 0; } if (nOAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = ""; dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); totalDebitAmount += nOAmount; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nOAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nOAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nOAmount = 0; } } else if (jvstp.EmployeeID != null) { SalaryMonthly oItem = oSalaryMonthlys.Find(x => x.EmployeeID == jvstp.EmployeeID); if (oItem != null) { nSAmount = jvstp.GetAmount(oItem); if (nSAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = ""; dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; if (!jvstp.Description.ToLower().Contains("loan")) dr["Reference"] = oItem.RCCode; totalDebitAmount += nSAmount; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nSAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nSAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nSAmount = 0; } if (nOAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = ""; dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; dr["Reference"] = oItem.RCCode; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); totalDebitAmount += nOAmount; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nOAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nOAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nOAmount = 0; } } } } } return dTJVInfo; } //public DataTable PNLReport(ID JVTypeID, DateTime dEffectDate) //{ // _dEffectDate = dEffectDate; // DataRow dr = null; // PayrollDataSet.PayrollDataSet.PNLReportDataTable dTPNLReport = new Payroll.Report.PayrollDataSet.PayrollDataSet.PNLReportDataTable(); // JVSetup osetp = new JVSetup(); // DateTime maxdate = osetp.GetMaxDate(dEffectDate); // SalaryMonthly salaryMonthly = null; // ObjectsTemplate jVSetupDetails = null; // OPIProcessDetail opiProcessDetail = null; // ObjectsTemplate oJVSetups = JVSetup.GetByJVTypeAndMonth(JVTypeID,maxdate); // ObjectsTemplate oJVSetupsForFS = JVSetup.GetByJVTypeAndMonth(ID.FromInteger(2), maxdate); // ObjectsTemplate oJVSetupDetails = JVSetupDetail.Get(); // ObjectsTemplate sMonthlys = SalaryMonthly.Get(GlobalFunctions.LastDateOfMonth(dEffectDate)); // ObjectsTemplate oSalaryMonthlys = SalaryMonthly.Get(dEffectDate); // ObjectsTemplate oOPIProcessDetails = OPIProcess.GetProcessDetails(dEffectDate); // ObjectsTemplate oOPIPDetails = new ObjectsTemplate(); // ObjectsTemplate oDepartments = Department.Get(); // Department dept = null; // ObjectsTemplate childDepts = new ObjectsTemplate(); // ObjectsTemplate bonusprocesss = BonusProcess.GetBonusDetails(GlobalFunctions.LastDateOfMonth(dEffectDate)); // ObjectsTemplate _employees = Employee.Get(); // ObjectsTemplate bonuspr = null; // double salaryAndOthers = 0; // double sumOfBonus = 0; // double sumOfEarnLeave = 0; // double sumOfGroupInsurance = 0; // double sumOfMedicalInsurance = 0; // double sumOfPFGPContrb = 0; // double sumOfGratuity = 0; // double jvItemAmount = 0; double fsItemAmount = 0; double provisionItemAmount = 0; // foreach (Employee item in _employees) // { // salaryAndOthers = sumOfBonus = sumOfEarnLeave = sumOfGroupInsurance = sumOfMedicalInsurance = sumOfPFGPContrb = sumOfGratuity = 0; // foreach (JVSetup jvstp in oJVSetups) // { // jvItemAmount = provisionItemAmount = fsItemAmount = 0; // jVSetupDetails = oJVSetupDetails.Where(j => j.JVSetupID == jvstp.ID).ToObjectsTemplate(); // if (jvstp.Description.ToString() == "Salary & Others") // { // salaryMonthly = sMonthlys.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // opiProcessDetail = oOPIProcessDetails.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // if (salaryMonthly != null) // { // jvItemAmount = jvstp.GetAmount(salaryMonthly); // } // if (opiProcessDetail != null) // { // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // foreach (OPIProcessDetailItem opiItem in opiProcessDetail.OPIProcessDetailItems) // { // if (jVSetupDetail.JVItemType == enumJvItemType.OPI && jVSetupDetail.ItemID == opiItem.OPIItemID) // { // provisionItemAmount = provisionItemAmount + opiItem.NetAmount; // } // } // } // } // JVSetup jvSetupFS = oJVSetupsForFS.Where(o => o.Description == "Salary & Others").FirstOrDefault(); // if (jvSetupFS != null) // { // if (salaryMonthly != null) // { // fsItemAmount = jvSetupFS.GetAmount(salaryMonthly); // } // } // salaryAndOthers = jvItemAmount + provisionItemAmount + fsItemAmount; // } // if (jvstp.Description.ToString() == "Bonus") // { // bonuspr = bonusprocesss.Where(o => o.EmployeeID == item.ID).ToObjectsTemplate(); // opiProcessDetail = oOPIProcessDetails.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // jvItemAmount += (GetBonuses(jVSetupDetail.ItemID.Integer, bonuspr)); // } // if (opiProcessDetail != null) // { // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // foreach (OPIProcessDetailItem opiItem in opiProcessDetail.OPIProcessDetailItems) // { // if (jVSetupDetail.JVItemType == enumJvItemType.OPI && jVSetupDetail.ItemID == opiItem.OPIItemID) // { // provisionItemAmount = provisionItemAmount + opiItem.NetAmount; // } // } // } // } // sumOfBonus = jvItemAmount + provisionItemAmount; // } // if (jvstp.Description.ToString() == "Earn Leave") // { // opiProcessDetail = oOPIProcessDetails.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // if (opiProcessDetail != null) // { // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // foreach (OPIProcessDetailItem opiItem in opiProcessDetail.OPIProcessDetailItems) // { // if (jVSetupDetail.JVItemType == enumJvItemType.OPI && jVSetupDetail.ItemID == opiItem.OPIItemID) // { // provisionItemAmount = provisionItemAmount + opiItem.NetAmount; // } // } // } // } // sumOfEarnLeave = provisionItemAmount; // } // if (jvstp.Description.ToString() == "Group Insurance") // { // opiProcessDetail = oOPIProcessDetails.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // if (opiProcessDetail != null) // { // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // foreach (OPIProcessDetailItem opiItem in opiProcessDetail.OPIProcessDetailItems) // { // if (jVSetupDetail.JVItemType == enumJvItemType.OPI && jVSetupDetail.ItemID == opiItem.OPIItemID) // { // provisionItemAmount = provisionItemAmount + opiItem.NetAmount; // } // } // } // } // sumOfGroupInsurance = provisionItemAmount; // } // if (jvstp.Description.ToString() == "Medical Insurance") // { // opiProcessDetail = oOPIProcessDetails.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // if (opiProcessDetail != null) // { // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // foreach (OPIProcessDetailItem opiItem in opiProcessDetail.OPIProcessDetailItems) // { // if (jVSetupDetail.JVItemType == enumJvItemType.OPI && jVSetupDetail.ItemID == opiItem.OPIItemID) // { // provisionItemAmount = provisionItemAmount + opiItem.NetAmount; // } // } // } // } // sumOfMedicalInsurance = provisionItemAmount; // } // if (jvstp.Description.ToString() == "PF GP Contrb.") // { // salaryMonthly = sMonthlys.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // opiProcessDetail = oOPIProcessDetails.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // if (salaryMonthly != null) // { // jvItemAmount = jvstp.GetAmount(salaryMonthly); // } // if (opiProcessDetail != null) // { // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // foreach (OPIProcessDetailItem opiItem in opiProcessDetail.OPIProcessDetailItems) // { // if (jVSetupDetail.JVItemType == enumJvItemType.OPI && jVSetupDetail.ItemID == opiItem.OPIItemID) // { // provisionItemAmount = provisionItemAmount + opiItem.NetAmount; // } // } // } // } // sumOfPFGPContrb = jvItemAmount + provisionItemAmount; // } // if (jvstp.Description.ToString() == "Sum of Gratuity") // { // opiProcessDetail = oOPIProcessDetails.Where(o => o.EmployeeID == item.ID).FirstOrDefault(); // if (opiProcessDetail != null) // { // foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) // { // foreach (OPIProcessDetailItem opiItem in opiProcessDetail.OPIProcessDetailItems) // { // if (jVSetupDetail.JVItemType == enumJvItemType.OPI && jVSetupDetail.ItemID == opiItem.OPIItemID) // { // provisionItemAmount = provisionItemAmount + opiItem.NetAmount; // } // } // } // } // sumOfGratuity = provisionItemAmount; // } // } // dr = dTPNLReport.NewRow(); // dr["EmployeeNo"] = item.EmployeeNo; // dept = oDepartments.Where(o => o.ID == item.DepartmentID).FirstOrDefault(); // string[] sDes = GlobalFunctions.FindDivisionDeparmentUnit(dept, oDepartments); // dr["Department"] = dept == null ? "" : dept.Name; // dr["Division"] = sDes[1]; // dr["RCCode"] = GlobalFunctions.FindRCCode(dept, oDepartments); // dr["SalaryAmount"] = Math.Round(salaryAndOthers); // dr["BonusAmount"] = Math.Round(sumOfBonus); // dr["EarnLeaveAmount"] = Math.Round(sumOfEarnLeave); // dr["GroupInsurance"] = Math.Round(sumOfGroupInsurance); // dr["MedicalInsurance"] = Math.Round(sumOfMedicalInsurance); // dr["PF"] = Math.Round(sumOfPFGPContrb); // dr["Gratuity"] = Math.Round(sumOfGratuity); // dr["BeforeCapitalization"] = Math.Round(salaryAndOthers + sumOfBonus + sumOfEarnLeave + sumOfGroupInsurance + sumOfMedicalInsurance + sumOfPFGPContrb + sumOfGratuity); // dr["Capitalization"] = 0; // dr["AfterCapitalization"] = Math.Round(salaryAndOthers + sumOfBonus + sumOfEarnLeave + sumOfGroupInsurance + sumOfMedicalInsurance + sumOfPFGPContrb + sumOfGratuity); // dTPNLReport.Rows.Add(dr); // } // return dTPNLReport; //} private ObjectsTemplate GetChilds(ObjectsTemplate departments, ID deptParentID) { ObjectsTemplate _childs = new ObjectsTemplate(); foreach (Department dept in departments) { if (dept.ParentID == deptParentID) _childs.Add(dept); } return _childs; } public DataTable JVReportNew(ID JVTypeID, DateTime dEffectDate) { DataSet dSetAllChilds = new DataSet(); DataSet dSetTemp = new DataSet(); DataTable dtChild = null; _dEffectDate = dEffectDate; DataRow dr = null; double nSAmount = 0; double nOAmount = 0; string rCCode = string.Empty; PayrollDataSet.PayrollDataSet.JVReportDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.PayrollDataSet.JVReportDataTable(); JVSetup osetp = new JVSetup(); DateTime maxdate = osetp.GetMaxDate(dEffectDate); ObjectsTemplate oJVSetups = JVSetup.GetByJVTypeAndMonth(JVTypeID, maxdate); ObjectsTemplate oJVSetupsDr = oJVSetups.Where(o => o.Side == (int)1).ToObjectsTemplate(); ObjectsTemplate oJVSetupsCr = oJVSetups.Where(o => o.Side == (int)2).ToObjectsTemplate(); ObjectsTemplate oJVSetupDetails = JVSetupDetail.Get(); ObjectsTemplate sMonthlys = new ObjectsTemplate(); ObjectsTemplate oSalaryMonthlys = SalaryMonthly.Get(GlobalFunctions.LastDateOfMonth(dEffectDate)); ObjectsTemplate oOPIProcessDetails = OPIProcess.GetProcessDetails(dEffectDate); ObjectsTemplate oOPIPDetails = new ObjectsTemplate(); //ObjectsTemplate oDepartments = Department.Get(); ObjectsTemplate childDepts = new ObjectsTemplate(); //ObjectsTemplate rcDepartments = Department.GetBySalaryMonthAndRCCode(GlobalFunctions.LastDateOfMonth(dEffectDate)); //oDepartments.Where(o => !string.IsNullOrWhiteSpace(o.RCCode)).ToObjectsTemplate(); JVType jType = JVType.Get(JVTypeID); DataSet dSetRcCode = Department.GetRCCodeBySalaryMonth(GlobalFunctions.LastDateOfMonth(dEffectDate)); //foreach (Department dept in rcDepartments) //{ // dSetTemp = Department.GetAllChilds(dept.ID); // dSetAllChilds.Merge(dSetTemp); //} if (oJVSetups.Count > 0 && dSetRcCode != null && dSetRcCode.Tables[0].Rows.Count>0) { foreach (JVSetup jvstp in oJVSetups) { JVSetupDetail jVSetupDetail = oJVSetupDetails.Where(j => j.JVSetupID == jvstp.ID).FirstOrDefault(); foreach (DataRow rcDept in dSetRcCode.Tables[0].Rows) { sMonthlys = new ObjectsTemplate(); oOPIPDetails = new ObjectsTemplate(); //dtChild = dSetAllChilds.Tables[0].AsEnumerable().Where(x => x["DeptParent"].ToString() == rcDept.ID.ToString()).CopyToDataTable(); //foreach (DataRow drow in dtChild.Rows) //{ // sMonthlys.AddRange(oSalaryMonthlys.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); // oOPIPDetails.AddRange(oOPIProcessDetails.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); //} sMonthlys = oSalaryMonthlys.Where(o => o.RCCode == rcDept["Rccode"].ToString().Trim()).ToObjectsTemplate(); if (sMonthlys != null && sMonthlys.Count > 0) { foreach (SalaryMonthly slrmntl in sMonthlys) { nSAmount += jvstp.GetAmount(slrmntl); } } if (nSAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = rcDept["Rccode"].ToString().Trim(); dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nSAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nSAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nSAmount = 0; } if (nOAmount > 0) { dr = dTJVInfo.NewRow(); dr["GroupCode"] = jvstp.GroupCode; dr["GLCode"] = jvstp.GLCode; dr["CostCenter"] = rcDept["Rccode"].ToString().Trim(); dr["GLDescription"] = jvstp.Description; dr["JType"] = jType.Name; dr["JVDate"] = DateTime.Today.ToString("dd MMM yyyy"); if (jvstp.Side == (int)EnumTranSide.Debit) { dr["DrAmount"] = nOAmount.ToString("#,###"); dr["CrAmount"] = "0"; dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["DrAmount"] = "0"; dr["CrAmount"] = nOAmount.ToString("#,###"); dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nOAmount = 0; } } } } return dTJVInfo; } public DataTable ADINew(ID JVTypeID, DateTime dEffectDate) { DataSet dSetAllChilds = new DataSet(); DataSet dSetTemp = new DataSet(); DataTable dtChild = null; _dEffectDate = dEffectDate; DataRow dr = null; double nSAmount = 0; double nOAmount = 0; string rCCode = string.Empty; PayrollDataSet.dsCompany.dtCapitalizationDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.dsCompany.dtCapitalizationDataTable(); JVSetup osetp = new JVSetup(); DateTime maxdate = osetp.GetMaxDate(dEffectDate); ObjectsTemplate oJVSetups = JVSetup.GetByJVTypeAndMonth(JVTypeID, maxdate); ObjectsTemplate oJVSetupsDr = oJVSetups.Where(o => o.Side == (int)1).ToObjectsTemplate(); ObjectsTemplate oJVSetupsCr = oJVSetups.Where(o => o.Side == (int)2).ToObjectsTemplate(); ObjectsTemplate oJVSetupDetails = JVSetupDetail.Get(); ObjectsTemplate sMonthlys = new ObjectsTemplate(); ObjectsTemplate oSalaryMonthlys = SalaryMonthly.Get(GlobalFunctions.LastDateOfMonth(dEffectDate)); ObjectsTemplate oOPIProcessDetails = OPIProcess.GetProcessDetails(dEffectDate); ObjectsTemplate oOPIPDetails = new ObjectsTemplate(); //ObjectsTemplate oDepartments = Department.Get(); ObjectsTemplate childDepts = new ObjectsTemplate(); //ObjectsTemplate rcDepartments = Department.GetBySalaryMonthAndRCCode(GlobalFunctions.LastDateOfMonth(dEffectDate)); //oDepartments.Where(o => !string.IsNullOrWhiteSpace(o.RCCode)).ToObjectsTemplate(); JVType jType = JVType.Get(JVTypeID); DataSet dSetRcCode = Department.GetRCCodeBySalaryMonth(GlobalFunctions.LastDateOfMonth(dEffectDate)); //foreach (Department dept in rcDepartments) //{ // dSetTemp = Department.GetAllChilds(dept.ID); // dSetAllChilds.Merge(dSetTemp); //} if (oJVSetups.Count > 0 && dSetRcCode != null && dSetRcCode.Tables[0].Rows.Count > 0) { foreach (JVSetup jvstp in oJVSetups) { JVSetupDetail jVSetupDetail = oJVSetupDetails.Where(j => j.JVSetupID == jvstp.ID).FirstOrDefault(); foreach (DataRow rcDept in dSetRcCode.Tables[0].Rows) { sMonthlys = new ObjectsTemplate(); oOPIPDetails = new ObjectsTemplate(); //dtChild = dSetAllChilds.Tables[0].AsEnumerable().Where(x => x["DeptParent"].ToString() == rcDept.ID.ToString()).CopyToDataTable(); //foreach (DataRow drow in dtChild.Rows) //{ // sMonthlys.AddRange(oSalaryMonthlys.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); // oOPIPDetails.AddRange(oOPIProcessDetails.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); //} sMonthlys = oSalaryMonthlys.Where(o => o.RCCode == rcDept["Rccode"].ToString().Trim()).ToObjectsTemplate(); if (sMonthlys != null && sMonthlys.Count > 0) { foreach (SalaryMonthly slrmntl in sMonthlys) { nSAmount += jvstp.GetAmount(slrmntl); } } if (nSAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept["Rccode"].ToString().Trim(); ; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nSAmount.ToString("#,###"); dr["Credit"] = "0"; //dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = "0"; dr["Credit"] = nSAmount.ToString("#,###"); //dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nSAmount = 0; } if (nOAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept["Rccode"].ToString().Trim(); ; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nOAmount.ToString("#,###"); dr["Credit"] = "0"; //dr["JVTranType"] = "Debit"; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = "0"; dr["Credit"] = nOAmount.ToString("#,###"); //dr["JVTranType"] = "Credit"; } dTJVInfo.Rows.Add(dr); nOAmount = 0; } } } } return dTJVInfo; } public DataTable CapitalizationReport(ID JVTypeID, DateTime dEffectDate) { _dEffectDate = dEffectDate; DataRow dr = null; double nSAmount = 0; double nOAmount = 0; double nBAmount = 0; string rCCode = string.Empty; DataSet dSetAllChilds = new DataSet(); DataSet dSetTemp = new DataSet(); DataTable dtChild = null; PayrollDataSet.dsCompany.dtCapitalizationDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.dsCompany.dtCapitalizationDataTable(); JVSetup osetp = new JVSetup(); ObjectsTemplate oJVSetups = JVSetup.GetByJVTypeAndMonth(JVTypeID, dEffectDate); ObjectsTemplate oJVSetupDetails = JVSetupDetail.Get(); ObjectsTemplate oSalaryMonthlys = SalaryMonthly.Get(dEffectDate); ObjectsTemplate oOPIProcessDetails = OPIProcess.GetProcessDetails(dEffectDate); double percent = 0; ObjectsTemplate oSMonthlys = new ObjectsTemplate(); ObjectsTemplate oOPIPDetails = new ObjectsTemplate(); ObjectsTemplate oDepartments = Department.Get(); ObjectsTemplate oCapitalizations = Capitalization.Get(); ObjectsTemplate emps = Employee.Get(); ObjectsTemplate bonusprocesss = BonusProcess.GetBonusDetails(GlobalFunctions.LastDateOfMonth(dEffectDate)); Capitalization oCapitalization = null; ObjectsTemplate childDepts = new ObjectsTemplate(); ObjectsTemplate rcDepartments = oDepartments.Where(o => !string.IsNullOrWhiteSpace(o.RCCode)).ToObjectsTemplate(); List groupRC = oDepartments.Select(d => d.RCCode ?? d.RCCode).Distinct().ToList(); ObjectsTemplate jVSetupDetails = null; ObjectsTemplate bonuspr = null; foreach (Department dept in rcDepartments) { dSetTemp = Department.GetAllChilds(dept.ID); dSetAllChilds.Merge(dSetTemp); } if (oJVSetups.Count > 0 && oCapitalizations != null) { foreach (JVSetup jvstp in oJVSetups) { jVSetupDetails = oJVSetupDetails.Where(j => j.JVSetupID == jvstp.ID).ToObjectsTemplate(); foreach (Department rcDept in rcDepartments) { oCapitalization = oCapitalizations.FirstOrDefault(o => o.DepartmentID == rcDept.ID); percent = oCapitalization == null ? 0 : oCapitalization.Percent; oSMonthlys = new ObjectsTemplate(); oOPIPDetails = new ObjectsTemplate(); bonuspr = new ObjectsTemplate(); dtChild = dSetAllChilds.Tables[0].AsEnumerable().Where(x => x["DeptParent"].ToString() == rcDept.ID.ToString()).CopyToDataTable(); foreach (DataRow drow in dtChild.Rows) { oSMonthlys.AddRange(oSalaryMonthlys.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); oOPIPDetails.AddRange(oOPIProcessDetails.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); bonuspr.AddRange(bonusprocesss.Join(emps, b => b.EmployeeID, e => e.ID, (b, e) => new { BusinessP = b, DeptID = e.DepartmentID }) .Where(x => x.DeptID.Integer == Convert.ToInt32(drow["DepartmentID"])).Select(x => x.BusinessP).ToObjectsTemplate()); } if (oSMonthlys != null && oSMonthlys.Count > 0) { foreach (SalaryMonthly slrmntl in oSMonthlys) { nSAmount += (jvstp.GetAmount(slrmntl) * percent / 100); } } if (oOPIPDetails != null && oOPIPDetails.Count > 0) { foreach (OPIProcessDetail oPPDtl in oOPIPDetails) { foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) { nOAmount += (GetOPIAmount(jVSetupDetail.ItemID.Integer, oPPDtl.ID) * percent / 100); } } } if (bonuspr.Count > 0 && oCapitalization != null) { foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) { nBAmount += (GetBonuses(jVSetupDetail.ItemID.Integer, bonuspr) * oCapitalization.Percent / 100); } } if (nSAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept.Code; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nSAmount.ToString("#,###"); dr["Credit"] = ""; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = ""; dr["Credit"] = nSAmount.ToString("#,###"); } dTJVInfo.Rows.Add(dr); nSAmount = 0; } if (nOAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept.Code; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nOAmount.ToString("#,###"); dr["Credit"] = ""; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = ""; dr["Credit"] = nOAmount.ToString("#,###"); } dTJVInfo.Rows.Add(dr); nOAmount = 0; } if (nBAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept.Code; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nBAmount.ToString("#,###"); dr["Credit"] = ""; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = ""; dr["Credit"] = nBAmount.ToString("#,###"); } dTJVInfo.Rows.Add(dr); nBAmount = 0; } } } } return dTJVInfo; } public DataTable ADIReport(ID JVTypeID, DateTime dEffectDate) { _dEffectDate = dEffectDate; DataRow dr = null; double nSAmount = 0; double nOAmount = 0; double nBAmount = 0; string rCCode = string.Empty; DataSet dSetAllChilds = new DataSet(); DataSet dSetTemp = new DataSet(); DataTable dtChild = null; PayrollDataSet.dsCompany.dtCapitalizationDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.dsCompany.dtCapitalizationDataTable(); JVSetup osetp = new JVSetup(); ObjectsTemplate oJVSetups = JVSetup.GetByJVTypeAndMonth(JVTypeID, dEffectDate); ObjectsTemplate oJVSetupDetails = JVSetupDetail.Get(); ObjectsTemplate oSalaryMonthlys = SalaryMonthly.Get(dEffectDate); ObjectsTemplate oOPIProcessDetails = OPIProcess.GetProcessDetails(dEffectDate); double percent = 0; ObjectsTemplate oSMonthlys = new ObjectsTemplate(); ObjectsTemplate oOPIPDetails = new ObjectsTemplate(); ObjectsTemplate oDepartments = Department.Get(); ObjectsTemplate emps = Employee.Get(); ObjectsTemplate bonusprocesss = BonusProcess.GetBonusDetails(GlobalFunctions.LastDateOfMonth(dEffectDate)); Capitalization oCapitalization = null; ObjectsTemplate childDepts = new ObjectsTemplate(); ObjectsTemplate rcDepartments = oDepartments.Where(o => !string.IsNullOrWhiteSpace(o.RCCode)).ToObjectsTemplate(); List groupRC = oDepartments.Select(d => d.RCCode ?? d.RCCode).Distinct().ToList(); ObjectsTemplate jVSetupDetails = null; ObjectsTemplate bonuspr = null; foreach (Department dept in rcDepartments) { dSetTemp = Department.GetAllChilds(dept.ID); dSetAllChilds.Merge(dSetTemp); } if (oJVSetups.Count > 0) { foreach (JVSetup jvstp in oJVSetups) { jVSetupDetails = oJVSetupDetails.Where(j => j.JVSetupID == jvstp.ID).ToObjectsTemplate(); foreach (Department rcDept in rcDepartments) { oSMonthlys = new ObjectsTemplate(); oOPIPDetails = new ObjectsTemplate(); bonuspr = new ObjectsTemplate(); dtChild = dSetAllChilds.Tables[0].AsEnumerable().Where(x => x["DeptParent"].ToString() == rcDept.ID.ToString()).CopyToDataTable(); foreach (DataRow drow in dtChild.Rows) { oSMonthlys.AddRange(oSalaryMonthlys.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); oOPIPDetails.AddRange(oOPIProcessDetails.Where(s => s.DepartmentID.Integer == Convert.ToInt32(drow["DepartmentID"])).ToObjectsTemplate()); bonuspr.AddRange(bonusprocesss.Join(emps, b => b.EmployeeID, e => e.ID, (b, e) => new { BusinessP = b, DeptID = e.DepartmentID }) .Where(x => x.DeptID.Integer == Convert.ToInt32(drow["DepartmentID"])).Select(x => x.BusinessP).ToObjectsTemplate()); } if (oSMonthlys != null && oSMonthlys.Count > 0) { foreach (SalaryMonthly slrmntl in oSMonthlys) { nSAmount += (jvstp.GetAmount(slrmntl)); } } if (oOPIPDetails != null && oOPIPDetails.Count > 0) { foreach (OPIProcessDetail oPPDtl in oOPIPDetails) { foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) { nOAmount += (GetOPIAmount(jVSetupDetail.ItemID.Integer, oPPDtl.ID)); } } } if (bonuspr.Count > 0 && oCapitalization != null) { foreach (JVSetupDetail jVSetupDetail in jVSetupDetails) { nBAmount += (GetBonuses(jVSetupDetail.ItemID.Integer, bonuspr)); } } if (nSAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept.Code; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nSAmount.ToString("#,###"); dr["Credit"] = ""; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = ""; dr["Credit"] = nSAmount.ToString("#,###"); } dTJVInfo.Rows.Add(dr); nSAmount = 0; } if (nOAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept.Code; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nOAmount.ToString("#,###"); dr["Credit"] = ""; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = ""; dr["Credit"] = nOAmount.ToString("#,###"); } dTJVInfo.Rows.Add(dr); nOAmount = 0; } if (nBAmount > 0) { dr = dTJVInfo.NewRow(); dr["GLCode"] = jvstp.GLCode; dr["RC"] = rcDept.Code; dr["Description"] = jvstp.Description; dr["Product"] = "00000"; dr["Project"] = "00"; dr["Motpart"] = "000"; dr["System"] = "0000000"; dr["FUNKSJON"] = "00000"; dr["Reserve"] = "00000"; if (jvstp.Side == (int)EnumTranSide.Debit) { dr["Debit"] = nBAmount.ToString("#,###"); dr["Credit"] = ""; } if (jvstp.Side == (int)EnumTranSide.Credit) { dr["Debit"] = ""; dr["Credit"] = nBAmount.ToString("#,###"); } dTJVInfo.Rows.Add(dr); nBAmount = 0; } } } } return dTJVInfo; } public DataTable JVLoactionWReport(ID JVTypeID, DateTime dEffectDate) { _dEffectDate = dEffectDate; DataRow dr = null; PayrollDataSet.PayrollDataSet.JVLoactionWReportDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.PayrollDataSet.JVLoactionWReportDataTable(); JVSetup osetp = new JVSetup(); DateTime maxdate = osetp.GetMaxDate(_dEffectDate); ObjectsTemplate oJVSetups = new ObjectsTemplate(); oJVSetups = JVSetup.GetByJVTypeAndEffectDate(JVTypeID, maxdate); int nLocationTire = ConfigurationManager.GetIntValue("Location", "tier", EnumConfigurationType.Logic); ObjectsTemplate oLocations = new ObjectsTemplate(); oLocations = Location.GetByTier(2); // get the last tier data and last tier is defined in Logic configuration file int nCCTire = ConfigurationManager.GetIntValue("costcenter", "tier", EnumConfigurationType.Logic); ObjectsTemplate oCostCenters = new ObjectsTemplate(); oCostCenters = Costcenter.GetByTire(nCCTire); // get the last tier data and last tier is defined in Logic configuration file ObjectsTemplate salaries = SalaryMonthly.Get(GlobalFunctions.LastDateOfMonth(dEffectDate)); foreach (Location oLocation in oLocations) { foreach (Costcenter oCC in oCostCenters) { foreach (JVSetup osetup in oJVSetups) { foreach (SalaryMonthly osalary in salaries) { if (osalary.LocationID == oLocation.ID) { double percent = SalaryEmpCostCenter.InvolvedPercent(osalary.CostCentersInvolments, oCC.ID); if (percent == 0) continue; dr = dTJVInfo.NewRow(); dr["Location"] = oLocation.Name; dr["CostCenter"] = oCC.Name; dr["EmpNo"] = osalary.Employee.EmployeeNo; dr["Name"] = osalary.Employee.Name; dr["Description"] = osetup.Description; dr["Amount"] = osetup.GetAmount(osalary) * percent / 100; dr["JVMonth"] = dEffectDate; dTJVInfo.Rows.Add(dr); } } } } } return dTJVInfo; } public DataTable JVSummaryReport(ID JVTypeID, DateTime dEffectDate) { _dEffectDate = dEffectDate; DataRow dr = null; PayrollDataSet.PayrollDataSet.JVSummaryReportDataTable dTJVInfo = new Payroll.Report.PayrollDataSet.PayrollDataSet.JVSummaryReportDataTable(); ObjectsTemplate oJVSetups = new ObjectsTemplate(); oJVSetups = JVSetup.GetByJVType(JVTypeID); int nLocationTire = ConfigurationManager.GetIntValue("Location", "tier", EnumConfigurationType.Logic); ObjectsTemplate oLocations = new ObjectsTemplate(); oLocations = Location.GetByTier(2); // get the last tier data and last tier is defined in Logic configuration file int nCCTire = ConfigurationManager.GetIntValue("costcenter", "tier", EnumConfigurationType.Logic); ObjectsTemplate oCostCenters = new ObjectsTemplate(); oCostCenters = Costcenter.GetByTire(nCCTire); // get the last tier data and last tier is defined in Logic configuration file ObjectsTemplate salaries = SalaryMonthly.Get(GlobalFunctions.LastDateOfMonth(dEffectDate)); foreach (Costcenter oCC in oCostCenters) { foreach (Location oLocation in oLocations) { foreach (JVSetup osetup in oJVSetups) { double amount = GetSalaries(oLocation.ID, oCC.ID, salaries, osetup); if (amount == 0) continue; dr = dTJVInfo.NewRow(); dr["Location"] = oLocation.Name; dr["CostCenter"] = oCC.Name; dr["Description"] = osetup.Description; dr["Amount"] = amount;// GetSalaries(oLocation.ID, oCC.ID, salaries, osetup); dr["JVMonth"] = dEffectDate; dTJVInfo.Rows.Add(dr); } } } return dTJVInfo; } public double GetSalaries(ID LocationID, ID CrgID, ObjectsTemplate SalaryOfMonth, JVSetup oJvSetup) { ObjectsTemplate salaries = new ObjectsTemplate(); double nAmount = 0; double Percent = 0; foreach (SalaryMonthly item in SalaryOfMonth) { if (item.LocationID == LocationID) { Percent = SalaryEmpCostCenter.InvolvedPercent(item.CostCentersInvolments, CrgID); if (Percent == 0) continue; nAmount = nAmount + oJvSetup.GetAmount(item) * Percent / 100; } } return nAmount; } public int GetEmp(ID LocationID, ID CrgID, ObjectsTemplate SalaryOfMonth, JVSetup oJvSetup) { ObjectsTemplate salaries = new ObjectsTemplate(); double Percent; foreach (SalaryMonthly item in SalaryOfMonth) { if (item.LocationID == LocationID) { Percent = SalaryEmpCostCenter.InvolvedPercent(item.CostCentersInvolments, CrgID); if (Percent > 0) return item.EmployeeID.Integer; } } return 0; } public static string WriteToTxtFile(string sStringToWrite, string sFilePath, string sFileName) { string sSuccess = string.Empty; try { DirectoryInfo oFileDirectory = new DirectoryInfo(sFilePath); if (!oFileDirectory.Exists) { oFileDirectory.Create(); } StreamWriter oSWriter = new StreamWriter(sFilePath + "/" + sFileName + ".txt", false); oSWriter.WriteLine(sStringToWrite); sSuccess = "You can find a file named - " + sFileName + " at " + sFilePath; oSWriter.Flush(); oSWriter.Close(); } catch (Exception ex) { throw new ServiceException(ex.Message); } return sSuccess; } public double GetOPIAmount(int itemId, ID oPPDetailID) { double amount = 0; ObjectsTemplate oPIProcessDetailItems = OPIProcess.GetProcessDetailItems(oPPDetailID); oPIProcessDetailItems = oPIProcessDetailItems.Where(p => p.OPIProcessDetailID == oPPDetailID).ToObjectsTemplate(); foreach (OPIProcessDetailItem oItem in oPIProcessDetailItems) { if (oItem.OPIItemID.Integer == itemId && oItem.OPIProcessDetailID.Integer == oPPDetailID.Integer) amount = amount + Math.Round(oItem.NetAmount); } return amount; } public double GetOPIAmount(ObjectsTemplate oPIProcessDetailItems, int itemId, ID oPPDetailID) { double amount = 0; foreach (OPIProcessDetailItem oItem in oPIProcessDetailItems) { if (oItem.OPIItemID.Integer == itemId && oItem.OPIProcessDetailID.Integer == oPPDetailID.Integer) amount = amount + Math.Round(oItem.NetAmount); } return amount; } public double GetBonuses(int itemId, ObjectsTemplate oBProcessDetails) { ObjectsTemplate salaries = new ObjectsTemplate(); double nAmount = 0; // OPIProcessDetail foreach (BonusProcess.BonusProcessDetail item in oBProcessDetails) { if (item.BonusID.Integer == itemId) { nAmount = nAmount + item.BonusAmount; } } return nAmount; } } }