private static BO_BalanceSheet GetRetainedEarning(DateTime dtStart, DateTime dtEnd, AprosysAccountingEntities db) { var TotalExpense = 0m; var TotalIncome = 0m; BO_BalanceSheet RetainedEarning = null; var iSList = db.Report_IncomeStatement(dtStart, dtEnd).ToList(); foreach (var item in iSList) { TotalExpense += item.EXPAMOUNT.Value; TotalIncome += item.REVAMOUNT.Value; } if (TotalIncome > 0m) { RetainedEarning = new BO_BalanceSheet() { HeadAccount = 3, MainAccount = "Equity", TreeName = "Retained Earning", Credit = TotalIncome - TotalExpense, DEBIT = 0 }; } return(RetainedEarning); }
private List <BO_BalanceSheet> GetBalanceSheetByDate(DateTime dtStart, DateTime dtEnd) { using (AprosysAccountingEntities db = new AprosysAccountingEntities()) { List <int?> headAccounts = new List <int?>() { 1, 2, 3 }; List <BO_BalanceSheet> obj = new List <BO_BalanceSheet>(); BO_BalanceSheet bs; var exp = (from GL in db.Acc_GL join CA in db.Acc_COA on GL.CoaId equals CA.CoaId where headAccounts.Contains(CA.HeadAccount) && GL.IsActive == true && GL.ActivityTimestamp >= dtStart && GL.ActivityTimestamp <= dtEnd select new { HeadAccount = CA.HeadAccount, Debit = GL.Debit, Credit = GL.Credit, TreeName = CA.TreeName }).GroupBy(x => x.HeadAccount).ToList(); for (int i = 0; i < exp.Count; i++) { var exp1 = exp[i].ToList(); var accountName = exp1.Select(x => new { TreeName = x.TreeName }).ToList(); decimal?debit = 0m; decimal?credit = 0m; string treeName; int headAccount = 0; foreach (var item in accountName.Distinct()) { var dum = exp[i].Where(x => x.TreeName == item.TreeName); debit = dum.Select(x => x.Debit).Sum(); credit = dum.Select(x => x.Credit).Sum(); headAccount = dum.FirstOrDefault(x => x.TreeName == item.TreeName).HeadAccount.Value; treeName = item.TreeName; bs = new BO_BalanceSheet() { HeadAccount = headAccount, TreeName = treeName, DEBIT = debit.Value, Credit = credit.Value }; obj.Add(bs); } } return(obj); } }
public string DownloadBalanceSheet(DateTime dtStart, DateTime dtEnd) { using (AprosysAccountingEntities db = new AprosysAccountingEntities()) { try { BO_BalanceSheet RetainedEarning = GetRetainedEarning(dtStart, dtEnd, db); List <BO_BalanceSheet> exp = GetBalanceSheetByDate(dtStart, dtEnd); //var exp = db.GetBalanceSheetByDate(dtStart, dtEnd).ToList(); if (RetainedEarning != null) { exp.Add(RetainedEarning); } Microsoft.Reporting.WebForms.ReportViewer rv = new Microsoft.Reporting.WebForms.ReportViewer(); rv.LocalReport.ReportPath = "Reports/Definitions/BalanceSheet.rdlc"; ReportDataSource rd = new ReportDataSource(); string rptName = db.ReportConfigs.First(x => x.active == true && x.repoConfigID == 12).title; ReportParameter[] parameters = new ReportParameter[6]; parameters[0] = new ReportParameter("TitleParam", rptName != "" ? rptName : "MOMAND ENTERPRISES"); parameters[1] = new ReportParameter("StartDate", dtStart.ToString("yyyy-MM-dd")); parameters[2] = new ReportParameter("EndDate", dtEnd.ToString("yyyy-MM-dd")); parameters[3] = new ReportParameter("TotalAssetsAmount", exp.Where(x => x.HeadAccount == 1).Sum(x => (x.DEBIT - x.Credit)).ToString()); parameters[4] = new ReportParameter("TotalLiabilities", exp.Where(x => x.HeadAccount == 2).Sum(x => (x.Credit - x.DEBIT)).ToString()); parameters[5] = new ReportParameter("TotalEquity", exp.Where(x => x.HeadAccount == 3).Sum(x => (x.Credit - x.DEBIT)).ToString()); rd.Value = exp; rd.Name = "DataSet1"; rv.LocalReport.SetParameters(parameters); rv.LocalReport.DataSources.Add(rd); byte[] bt = rv.LocalReport.Render("PDF"); return(WriteBytesToTempFile(bt, ".pdf")); } catch (Exception ex) { //Logger.Write("DownloadAuthReportByDate", ex.Message, ex.StackTrace, Logger.LogType.ErrorLog); throw; } } }