Пример #1
0
        private static YearlySales GetYearSales_bySalesDate(IEnumerable <Sales> sales, int lastyear, string HCOId, string productGroupId)
        {
            YearlySales sale = new YearlySales();

            sale.LastYear       = lastyear;
            sale.HCOId          = HCOId;
            sale.ProductGroupId = productGroupId;

            sale.LastYearTotalCredit = 0;

            //Get last year's data
            for (int i = 1; i <= 12; i++)
            {
                DateTime month = new DateTime(lastyear, i, 1);

                MonthlySales monthlySales = new MonthlySales()
                {
                    Month = month, MonthInt = Int32.Parse(month.ToString("yyyyMM"))
                };

                var filteredList = from Sales s in sales
                                   where s.HCOId == HCOId
                                   //&& s.ProductGroupId == productGroupId && s.Month == monthlySales.MonthInt  //用bonus_in来计算起销月
                                   && s.ProductGroupId == productGroupId && DateTimeUtility.GetMonthInt(s.SalesDate) == monthlySales.MonthInt && //用sales date来计算起销月
                                   s.Year == lastyear
                                   select s.Credit;
                double credit = filteredList.Sum();
                //double credit = sales.Where(s => s.ProductGroupId == productGroupId && s.HCOId == HCOId &&
                //               s.Month == monthlySales.MonthString &&  s.TerritoryId == territoryId && s.Year == year).
                //                Select(x => x.Credit).Sum();
                monthlySales.Credit = credit;
                if (filteredList.Count() > 0)
                {
                    sale.lastYearMonthlySales.Add(monthlySales);
                }


                sale.LastYearTotalCredit += credit;
            }

            int startSalesMonth = GetStartSalesMonth(sale.lastYearMonthlySales);

            if (startSalesMonth > 0)
            {
                sale.LastYearStartSalesMonth      = lastyear.ToString() + startSalesMonth.ToString("0#");
                sale.LastYearSalesMonthNumber     = 12 - startSalesMonth + 1;
                sale.LastYearMonthlyAverageCredit = sale.LastYearTotalCredit / sale.LastYearSalesMonthNumber;

                sale.iLastYearStartSalesMonth = startSalesMonth;
            }

            int thisYear = lastyear + 1;

            //Get this year's data
            for (int i = 1; i <= 12; i++)
            {
                DateTime month = new DateTime(thisYear, i, 1);

                MonthlySales monthlySales = new MonthlySales()
                {
                    Month = month, MonthInt = Int32.Parse(month.ToString("yyyyMM"))
                };

                var filteredList = from Sales s in sales
                                   where s.HCOId == HCOId &&
                                   s.ProductGroupId == productGroupId && DateTimeUtility.GetMonthInt(s.SalesDate) == monthlySales.MonthInt &&
                                   s.Year == thisYear
                                   select s.Credit;
                double credit = filteredList.Sum();
                monthlySales.Credit = credit;
                //double credit = sales.Where(s => s.ProductGroupId == productGroupId && s.HCOId == HCOId &&
                //               s.Month == monthlySales.MonthString &&  s.TerritoryId == territoryId && s.Year == year).
                //                Select(x => x.Credit).Sum();
                if (filteredList.Count() > 0)
                {
                    sale.thisYearMonthlySales.Add(monthlySales);
                }

                sale.ThisYearYTDCredit += credit;
            }

            startSalesMonth = GetStartSalesMonth(sale.thisYearMonthlySales);

            if (startSalesMonth > 0)
            {
                sale.ThisYearStartSalesMonth  = lastyear.ToString() + startSalesMonth.ToString("0#");
                sale.iThisYearStartSalesMonth = startSalesMonth;
            }

            return(sale);
        }