public ActionResult SettlementSummary(SettlementSummaryModelFilterModel filterModel)
        {
            var param = new SettlementSummaryParam();

            filterModel.CopyTo(param);
            var model = new SettlementSummaryModelViewModel()
            {
                FilterModel = filterModel,
                PagedList   = _settlementService.GetSettlementSummaryExtPagedList(param),
            };

            return(View(model));
        }
Example #2
0
        public IPagedList <SettlementSummaryExt> GetSettlementSummaryExtPagedList(SettlementSummaryParam param)
        {
            var ctx = this.UnitOfWork as LMS_DbContext;

            Check.Argument.IsNotNull(ctx, "数据库对象");

            var query = from w in ctx.WayBillInfos
                        join c in ctx.Customers on w.CustomerCode equals c.CustomerCode
                        join cb in ctx.CustomerBalances on w.CustomerCode equals cb.CustomerCode
                        where
                        w.Status == (int)WayBill.StatusEnum.Have && (c.PaymentTypeID == 3 || c.PaymentTypeID == 4)
                        select new
            {
                w.CustomerCode,
                c.Name,
                SalesMan = c.CustomerManager,
                cb.Balance,
            };



            var querySummary = from w in
                               (from rx in ctx.ReceivingExpenses
                                join wb in ctx.WayBillInfos on rx.WayBillNumber equals wb.WayBillNumber
                                where wb.Status == (int)WayBill.StatusEnum.Have
                                select new
            {
                wb.CustomerCode,
                ShippingMethodName = wb.InShippingMethodName,
                wb.Weight,
                wb.SettleWeight,
                Fee =
                    ctx.ReceivingExpenseInfos.Where(
                        e => e.OperationType == 1 && e.ReceivingExpenseID == rx.ReceivingExpenseID)
                    .Sum(e => e.Amount),
            })
                               group w by new { w.CustomerCode, w.ShippingMethodName } into g
                select new SettlementShippingMethodSummaryExt
            {
                CustomerCode       = g.Key.CustomerCode,
                ShippingMethodName = g.Key.ShippingMethodName,
                HaveWaybillCount   = g.Count(),
                TotalWeight        = g.Sum(s => s.Weight),
                TotalSettleWeight  = g.Sum(s => s.SettleWeight),
                TotalFee           = g.Sum(s => s.Fee),
            };


            var list = query.GroupBy(g => new { g.Balance, g.CustomerCode, g.Name, g.SalesMan })
                       .WhereIf(g => g.Key.Balance >= 0, param.Status == 2)
                       .WhereIf(g => g.Key.Balance < 0, param.Status == 1)
                       .WhereIf(g => g.Key.CustomerCode == param.CustomerCode,
                                !string.IsNullOrWhiteSpace(param.CustomerCode))
                       .OrderBy(g => g.Key.CustomerCode)
                       .Select(g => new SettlementSummaryExt
            {
                Balance          = g.Key.Balance,
                CustomerCode     = g.Key.CustomerCode,
                CustomerName     = g.Key.Name,
                HaveWaybillCount = g.Count(),
                SalesMan         = g.Key.SalesMan,
            }).ToPagedList(param.Page, param.PageSize);

            list.InnerList.ForEach(p =>
            {
                p.SettlementShippingMethodSummaryExts =
                    querySummary.Where(s => s.CustomerCode == p.CustomerCode).ToList();
            });

            return(list);
        }
Example #3
0
 public IPagedList <SettlementSummaryExt> GetSettlementSummaryExtPagedList(SettlementSummaryParam param)
 {
     return(_settlementInfoRepository.GetSettlementSummaryExtPagedList(param));
 }