コード例 #1
0
        /// <summary>
        /// Order 筛选
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        private static Expression <Func <Order, bool> > OrderFilter(RmaQueryRequest filter)
        {
            var query = PredicateBuilder.True <Order>();

            if (filter != null)
            {
                if (filter.OrderProductType != null)
                {
                    query = PredicateBuilder.And(query, v => v.OrderProductType == filter.OrderProductType);
                }

                //购买时间
                if (filter.BuyStartDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.CreateDate >= filter.BuyStartDate.Value);
                }

                if (filter.BuyEndDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.CreateDate < filter.BuyEndDate.Value);
                }

                if (!String.IsNullOrEmpty(filter.PayType))
                {
                    query = PredicateBuilder.And(query, v => v.PaymentMethodCode == filter.PayType);
                }
            }

            return(query);
        }
コード例 #2
0
ファイル: RmaService.cs プロジェクト: huoxudong125/intime.opc
        public PagerInfo <RMADto> GetPagedList(RmaQueryRequest request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            return(_rmaRepository.GetPagedList(request));
        }
コード例 #3
0
        private IHttpActionResult GetPagedList4RmaPagedInfo(RmaQueryRequest request, UserProfile userProfile)
        {
            IHttpActionResult httpActionResult;
            var result = CheckDataRoleAndArrangeParams(request, userProfile, out httpActionResult);

            if (!result)
            {
                return(httpActionResult);
            }
            var dto = _rmaService.GetPagedList(request);

            return(RetrunHttpActionResult(dto));
        }
コード例 #4
0
        public IHttpActionResult GetList([FromUri] RmaQueryRequest request, [UserProfile] UserProfile userProfile)
        {
            IHttpActionResult httpActionResult;
            var result = CheckDataRoleAndArrangeParams(request, userProfile, out httpActionResult);

            if (!result)
            {
                return(httpActionResult);
            }

            var dto = _rmaService.GetPagedList(request);

            return(RetrunHttpActionResult(dto));
        }
コード例 #5
0
        /// <summary>
        /// 销售单 筛选
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        private static Expression <Func <OPC_Sale, bool> > SalesOrderFilter(RmaQueryRequest filter)
        {
            var query = PredicateBuilder.True <OPC_Sale>();

            if (filter != null)
            {
                if (!String.IsNullOrEmpty(filter.SalesOrderNo))
                {
                    query = PredicateBuilder.And(query, v => v.SaleOrderNo == filter.SalesOrderNo);
                }
            }

            return(query);
        }
コード例 #6
0
        private IHttpActionResult GetPagedList4RmaPagedResult(RmaQueryRequest request, UserProfile userProfile)
        {
            IHttpActionResult httpActionResult;
            var result = CheckDataRoleAndArrangeParams(request, userProfile, out httpActionResult);

            if (!result)
            {
                return(httpActionResult);
            }

            var dto = _rmaService.GetPagedList(request);

            var restResult = new PageResult <RMADto>(dto.Datas, dto.TotalCount);

            return(RetrunHttpActionResult(restResult));
        }
コード例 #7
0
        /// <summary>
        /// RMA 筛选
        /// </summary>
        /// <param name="filter"></param>
        /// <returns></returns>
        private static Expression <Func <OPC_RMA, bool> > RMAFilter(RmaQueryRequest filter)
        {
            var query = PredicateBuilder.True <OPC_RMA>();

            if (filter != null)
            {
                if (filter.StoreId != null)
                {
                    query = PredicateBuilder.And(query, v => v.StoreId == filter.StoreId.Value);
                }

                if (filter.DataRoleStores != null && filter.StoreId == null)
                {
                    query = PredicateBuilder.And(query, v => filter.DataRoleStores.Contains(v.StoreId));
                }

                if (filter.Status != null)
                {
                    query = PredicateBuilder.And(query, v => v.Status == filter.Status.Value);
                }

                if (filter.Statuses != null && filter.Statuses.Count > 0)
                {
                    query = PredicateBuilder.And(query, v => filter.Statuses.Contains(v.Status));
                }

                if (filter.ReturnGoodsStatus != null)
                {
                    query = PredicateBuilder.And(query, v => v.RMAStatus == filter.ReturnGoodsStatus.AsId());
                }


                //根据业务 Orderno 与以下互斥
                if (!String.IsNullOrWhiteSpace(filter.OrderNo))
                {
                    query = PredicateBuilder.And(query, v => v.OrderNo == filter.OrderNo);
                    return(query);
                }

                if (!String.IsNullOrEmpty(filter.Telephone))
                {
                    query = PredicateBuilder.And(query, v => v.ContactPhone == filter.Telephone);
                    return(query);
                }

                if (!String.IsNullOrEmpty(filter.RMANo))
                {
                    query = PredicateBuilder.And(query, v => v.RMANo == filter.RMANo);
                    return(query);
                }


                if (filter.StartDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.CreatedDate >= filter.StartDate.Value);
                }

                if (filter.EndDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.CreatedDate < filter.EndDate.Value);
                }

                //退货时间
                if (filter.ReturnStartDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.BackDate >= filter.ReturnStartDate.Value);
                }

                if (filter.ReturnEndDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.BackDate < filter.ReturnEndDate.Value);
                }

                //收货时间
                if (filter.ReceiptStartDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.BackDate >= filter.ReceiptStartDate.Value);
                }

                if (filter.ReceiptEndDate != null)
                {
                    query = PredicateBuilder.And(query, v => v.BackDate < filter.ReceiptEndDate.Value);
                }
            }

            return(query);
        }
コード例 #8
0
        ///// <summary>
        ///// dynamic to dto
        ///// </summary>
        ///// <param name="t"></param>
        ///// <returns></returns>
        //private static RMADto ConvertRMADto(dynamic t)
        //{
        //    if (t == null)
        //    {
        //        throw new ArgumentNullException("t");
        //    }

        //    var o = new RMADto
        //    {
        //        Id = t.rma.Id,
        //        OrderNo = t.rma.OrderNo,
        //        SaleOrderNo = t.rma.SaleOrderNo,
        //        CashDate = t.sale.CashDate,
        //        CashNum = t.sale.CashNum,
        //        Count = t.rma.Count,
        //        CreatedDate = t.rma.CreatedDate,
        //        RMAAmount = t.rma.RMAAmount,
        //        RMANo = t.rma.RMANo,
        //        BackDate = t.rma.BackDate ?? DateTime.MinValue.AddYears(1),
        //        CompensationFee = t.rma.CompensationFee,
        //        RecoverableSumMoney = t.rma.RecoverableSumMoney,
        //        RMAReason = t.rma.Reason,
        //        RMAType = t.rma.RMAType,
        //        RefundAmount = t.rma.RefundAmount,
        //        RmaCashDate = t.rma.RmaCashDate,
        //        RmaCashNum = t.rma.RmaCashNum,
        //        PayType = t.order.PaymentMethodName,
        //        BuyDate = t.order.CreateDate,
        //        PaymentMethodName = t.order.PaymentMethodName,
        //        RmaCashStatusName = ((EnumRMACashStatus)(t.rma.RMACashStatus ?? 0)).GetDescription(),
        //        Status = t.rma.Status,
        //        StatusName = ((EnumRMAStatus)t.rma.Status).GetDescription(),
        //        SourceDesc = t.rma.SaleRMASource,
        //        RmaStatusName = ((EnumReturnGoodsStatus)(t.rma.RMAStatus ?? 0)).GetDescription(),
        //        StoreName = t.store.Name,
        //        SectionCode = t.section.SectionCode,
        //        SectionName = t.section.Name,
        //        StoreFee = t.rma.StoreFee,
        //        CustomFee = t.rma.CustomFee,
        //        ServiceAgreeDate = t.rma.CreatedDate,
        //        OrderProductType = t.order.OrderProductType ?? 1
        //    };
        //    return o;
        //}

        #endregion

        /// <summary>
        /// rma pagelist
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public PagerInfo <RMADto> GetPagedList(RmaQueryRequest request)
        {
            var rmafilter        = RMAFilter(request);
            var orderfilter      = OrderFilter(request);
            var salesOrderFilter = SalesOrderFilter(request);

            using (var db = new YintaiHZhouContext())
            {
                var rmas           = db.OPC_RMAs;
                var orders         = db.Orders;
                var sales          = db.OPC_Sales;
                var stores         = db.Stores;
                var sections       = db.Sections;
                var ordertrans     = db.OrderTransactions;
                var paymentMethods = db.PaymentMethods;


                var otps = from tran in ordertrans
                           join payment in paymentMethods on tran.PaymentCode equals payment.Code
                           select new
                {
                    tran,
                    payment
                };

                //var storesections = sections.Join(stores, s => s.StoreId,
                //       x => x.Id, (section, store) => new { section, store });


                var q = from rma in rmas.AsExpandable().Where(rmafilter)
                        join order in orders.AsExpandable().Where(orderfilter) on rma.OrderNo equals order.OrderNo
                        join sale in sales.AsExpandable().Where(salesOrderFilter) on rma.SaleOrderNo equals sale.SaleOrderNo
                        //join ss in storesections on rma.StoreId equals ss.store.Id
                        join section in sections on rma.SectionId equals section.Id
                        join store in stores on rma.StoreId equals store.Id
                        let otpss = (from otp in otps
                                     where rma.OrderNo == otp.tran.OrderNo
                                     select otp
                                     )
                                    //where
                                    //        rma.StoreId == ss.store.Id
                                    //select new
                                    //{
                                    //    rma,
                                    //    order,
                                    //    sale,
                                    //    store = ss.store,
                                    //    section = ss.section,
                                    //    trans
                                    //};
                                    select new RMADto
                {
                    Id                  = rma.Id,
                    OrderNo             = rma.OrderNo,
                    SaleOrderNo         = rma.SaleOrderNo,
                    CashDate            = sale.CashDate,
                    CashNum             = sale.CashNum,
                    Count               = rma.Count,
                    CreatedDate         = rma.CreatedDate,
                    RMAAmount           = rma.RMAAmount,
                    RMANo               = rma.RMANo,
                    BackDate            = rma.BackDate,
                    CompensationFee     = rma.CompensationFee,
                    RecoverableSumMoney = rma.RecoverableSumMoney,
                    RMAReason           = rma.Reason,
                    RMAType             = rma.RMAType,
                    RefundAmount        = rma.RefundAmount,
                    RmaCashDate         = rma.RmaCashDate,
                    RmaCashNum          = rma.RmaCashNum,

                    BuyDate = order.CreateDate,

                    // RmaCashStatusName = ((EnumRMACashStatus)(rma.RMACashStatus ?? 0)).GetDescription(),
                    RmaCashStatus = rma.RMACashStatus ?? 0,
                    Status        = rma.Status,
                    //StatusName = ((EnumRMAStatus)rma.Status).GetDescription(),
                    SourceDesc = rma.SaleRMASource,
                    //RmaStatusName = ((EnumReturnGoodsStatus)(rma.RMAStatus ?? 0)).GetDescription(),
                    RmaStatus         = rma.RMAStatus ?? 0,
                    StoreName         = store.Name,
                    SectionCode       = section.SectionCode,
                    SectionName       = section.Name,
                    StoreFee          = rma.StoreFee,
                    CustomFee         = rma.CustomFee,
                    ServiceAgreeDate  = rma.CreatedDate,
                    RMACount          = rma.Count ?? 0,
                    OrderProductType  = order.OrderProductType ?? 1,
                    OrderTransactions = otpss.Select(s => new OrderTransactionDto
                    {
                        PaymentCode = s.payment.Code,
                        PaymentName = s.payment.Name,
                        TransNo     = s.tran.TransNo,
                        Amount      = s.tran.Amount
                    })
                };

                var total = q.Count();
                var datas = q.OrderByDescending(v => v.Id).Skip(request.PagerRequest.SkipCount).Take(request.PagerRequest.PageSize).ToList();

                return(new PagerInfo <RMADto>(request.PagerRequest, total, datas));
            }
        }