コード例 #1
0
        //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);
        }
コード例 #2
0
        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);
        }