//Report public IList GetDepositHistories(IList searchCriteria, bool headerOnly) { var depositReportList = new List <DepositReport>(); var depositList = _depositDataAccess.GetDepositHistories(searchCriteria); var depositId = 0; foreach (Object[] anObject in depositList) { if (anObject == null) { continue; } var deposit = anObject[0] as Model.Deposit.Deposit; var customer = anObject[1] as Model.Customer.Customer; var user = anObject[2] as Model.User.User; var depositItem = anObject[3] as DepositItem; var product = anObject[4] as Model.Product.Product; if ((deposit == null) || (customer == null) || (user == null)) { continue; } var unitPriceOut = 0f; if (depositItem != null) { unitPriceOut = depositItem.UnitPriceOut - ((depositItem.UnitPriceOut * depositItem.Discount) / 100); } var depositReport = new DepositReport { DepositId = deposit.DepositId, DepositNumber = deposit.DepositNumber, DepositDate = deposit.DepositDate, CustomerName = deposit.CustomerName, CashierName = deposit.CashierName, ExchangeRate = deposit.ExchangeRate, CardNumber = deposit.CardNumber, ReferenceNum = deposit.ReferenceNum, UpdateDate = deposit.UpdateDate, ProductId = depositItem != null ? depositItem.ProductId : 0, ProductName = product != null ? (product.ProductName + " (" + product.ForeignCode + ")") : string.Empty, UnitPriceIn = depositItem != null ? depositItem.UnitPriceIn : 0, UnitPriceOut = unitPriceOut, Discount = depositItem != null ? depositItem.Discount : 0, QtySold = depositItem != null ? depositItem.QtySold : 0, SubTotal = depositItem != null ? (depositItem.QtySold * unitPriceOut) : 0, DepositItemId = depositItem != null ? depositItem.DepositItemId : 0 }; if (!string.IsNullOrEmpty(deposit.ReferenceNum)) { depositReport.DepositNumber += " (" + deposit.ReferenceNum + ")"; } if (depositId != deposit.DepositId) { depositId = deposit.DepositId; depositReport.ReportHeader = 1; depositReport.AmountSoldInt = deposit.AmountSoldInt; depositReport.AmountPaidInt = deposit.AmountPaidInt; depositReport.AmountPaidRiel = deposit.AmountPaidRiel; depositReport.AmountReturnInt = (-1) * deposit.AmountReturnInt; depositReport.AmountReturnRiel = (-1) * deposit.AmountReturnRiel; depositReport.TotalDiscount = deposit.Discount; } if (headerOnly) { if (depositReport.ReportHeader == 1) { depositReportList.Add(depositReport); } } else { depositReportList.Add(depositReport); } } return(depositReportList); }
public List <DepositReport> GetInvestmentReport(List <Person> users) { List <DepositReport> lstDepositReports = new List <DepositReport>(); var dateTimeNow = DateTime.Now; //var transactionFor = db.TransactionFor.FirstOrDefault(x => x.TranscationFor.Equals(transactionForStr)); DepositReport month = new DepositReport(); month.MonthStartDate = new DateTime(2000, 1, 1); month.MonthEndDate = new DateTime(dateTimeNow.Year - 1, 12, 31); month.MonthDesc = "Till Dec-" + (dateTimeNow.Year - 1); month.Users = new List <User>(); users.ForEach(x => { User user = new User(); user.Person = new Person(); user.Person.PersonName = x.PersonName; var items = db.Investments.Where(y => y.InvestmentName == x.PersonName && y.InvestmentDate >= month.MonthStartDate && y.InvestmentDate <= month.MonthEndDate).ToList(); if (items == null || items.Count == 0) { user.Amount = 0; } else { user.Amount = items.Select(y => y.Amount).Sum(); } month.Users.Add(user); }); month.TotalOfMonth = month.Users.Select(z => z.Amount).Sum(); lstDepositReports.Add(month); for (int i = 1; i <= 12; i++) { month = new DepositReport(); month.MonthStartDate = new DateTime(dateTimeNow.Year, i, 1); month.MonthEndDate = month.MonthStartDate.AddMonths(1).AddDays(-1); month.MonthDesc = month.MonthStartDate.ToString("MMM"); month.Users = new List <User>(); users.ForEach(x => { User user = new User(); user.Person = new Person(); user.Person.PersonName = x.PersonName; var items = db.Investments.Where(y => y.InvestmentName == x.PersonName && y.InvestmentDate >= month.MonthStartDate && y.InvestmentDate <= month.MonthEndDate).ToList(); if (items == null || items.Count == 0) { user.Amount = 0; } else { user.Amount = items.Select(y => y.Amount).Sum(); } month.Users.Add(user); }); month.TotalOfMonth = month.Users.Select(z => z.Amount).Sum(); lstDepositReports.Add(month); } month = new DepositReport(); month.MonthStartDate = new DateTime(dateTimeNow.Year, 1, 1); month.MonthEndDate = new DateTime(dateTimeNow.Year, 12, 31); month.MonthDesc = "Total Of " + (dateTimeNow.Year); month.Users = new List <User>(); users.ForEach(x => { User user = new User(); user.Person = new Person(); user.Person.PersonName = x.PersonName; var items = db.Investments.Where(y => y.InvestmentName == x.PersonName && y.InvestmentDate >= month.MonthStartDate && y.InvestmentDate <= month.MonthEndDate).ToList(); if (items == null || items.Count == 0) { user.Amount = 0; } else { user.Amount = items.Select(y => y.Amount).Sum(); } month.Users.Add(user); }); month.TotalOfMonth = month.Users.Select(z => z.Amount).Sum(); lstDepositReports.Add(month); month = new DepositReport(); month.MonthStartDate = new DateTime(2000, 1, 1); month.MonthEndDate = new DateTime(dateTimeNow.Year, 12, 31); month.MonthDesc = "Grand Total"; month.Users = new List <User>(); users.ToList().ForEach(x => { User user = new User(); user.Person = new Person(); user.Person.PersonName = x.PersonName; var items = db.Investments.Where(y => y.InvestmentName == x.PersonName && y.InvestmentDate >= month.MonthStartDate && y.InvestmentDate <= month.MonthEndDate).ToList(); if (items == null || items.Count == 0) { user.Amount = 0; } else { user.Amount = items.Select(y => y.Amount).Sum(); } month.Users.Add(user); }); month.TotalOfMonth = month.Users.Select(z => z.Amount).Sum(); lstDepositReports.Add(month); return(lstDepositReports); }