public ActionResult ViewRMA(string rmaNo)
 {
     var rmaEntity = _rmaRepo.Get(r => r.RMANo == rmaNo)
                  .GroupJoin(_rmaitemRepo.Get(ri => ri.RMANo == rmaNo),
                           o => o.RMANo,
                           i => i.RMANo,
                           (o, i) => new { R = o, RI = i.FirstOrDefault() })
                   .FirstOrDefault();
     string errorMsg;
     var orderEntity = _orderRepo.Get(o => o.OrderNo == rmaEntity.R.OrderNo).First();
     if (!OrderViewModel.IsAuthorized(orderEntity.StoreId, orderEntity.BrandId, out errorMsg))
     {
         throw new ArgumentException(errorMsg);
     }
     var model = new RMAViewModel().FromEntity<RMAViewModel>(rmaEntity.R, p =>
     {
         p.Item = new RMAItemViewModel().FromEntity<RMAItemViewModel>(rmaEntity.RI);
         p.Logs = Context.Set<RMALogEntity>().Where(rl => rl.RMANo == rmaNo).OrderByDescending(rl => rl.CreateDate)
                  .ToList()
                  .Select(rl => new RMALogViewModel().FromEntity<RMALogViewModel>(rl));
     });
     return View(model);
 }
 public ActionResult PrintRMA(string rmaNo)
 {
     var rmaEntity = _rmaRepo.Get(r=>r.RMANo == rmaNo)
                    .GroupJoin(_rmaitemRepo.Get(ri=>ri.RMANo == rmaNo),
                             o=>o.RMANo,
                             i=>i.RMANo,
                             (o,i)=>new {R=o,RI=i.FirstOrDefault()})
                     .FirstOrDefault();
     string errorMsg;
     var orderEntity = _orderRepo.Get(o => o.OrderNo == rmaEntity.R.OrderNo).First();
     if (!OrderViewModel.IsAuthorized(orderEntity.StoreId, orderEntity.BrandId, out errorMsg))
     {
         throw new ArgumentException(errorMsg);
     }
     var model = new RMAViewModel().FromEntity<RMAViewModel>(rmaEntity.R, p => {
         p.Item = new RMAItemViewModel().FromEntity<RMAItemViewModel>(rmaEntity.RI,pi=>{
             pi.SalesPerson = Context.Set<OrderItemEntity>().Where(o => o.OrderNo == rmaEntity.R.OrderNo)
                             .Select(o => o.SalesPerson).FirstOrDefault();
         });
     });
     return View(model);
 }
        public JsonResult PrintRMA(RMAViewModel model)
        {
            string errorMsg;
            var confirmModel = _orderRepo.Get(o => o.OrderNo == model.OrderNo).FirstOrDefault();
            if (!OrderViewModel.IsAuthorized(confirmModel.StoreId, confirmModel.BrandId, out errorMsg))
            {
                return FailResponse(errorMsg);
            }
            using (var ts = new TransactionScope())
            {
                var entity = _rmaRepo.Get(r => r.RMANo == model.RMANo).First();
                entity.GiftReason = model.GiftReason;
                entity.PostalFeeReason = model.PostalFeeReason;
                entity.InvoiceReason = model.InvoiceReason;
                entity.RebatePointReason = model.RebatePointReason;
                entity.rebatepostfee = model.rebatepostfee;
                entity.chargepostfee = model.chargepostfee;
                entity.ChargeGiftFee = model.ChargeGiftFee;
                entity.ActualAmount = entity.RMAAmount - (entity.chargepostfee ?? 0) + (entity.rebatepostfee ?? 0) - (entity.ChargeGiftFee ?? 0);
                entity.Status = (int)RMAStatus.PrintRMA;
                entity.UpdateDate = DateTime.Now;
                entity.UpdateUser = CurrentUser.CustomerId;
                _rmaRepo.Update(entity);

                _rmalogRepo.Insert(new RMALogEntity()
                {
                    CreateDate = DateTime.Now,
                    CreateUser = CurrentUser.CustomerId,
                    Operation = "打印退货单",
                    RMANo = model.RMANo
                });

                ts.Complete();

            }
            return SuccessResponse();
        }
        public ActionResult Reject2Customer(RMAViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(new RMAViewModel().FromEntity<RMAViewModel>(_rmaRepo.Get(o => o.RMANo == model.RMANo).FirstOrDefault()));
            }
            var rmaEntity = _rmaRepo.Get(o => o.RMANo == model.RMANo).FirstOrDefault();
            if (rmaEntity == null)
                throw new ArgumentException("rmano");
            string errorMsg;
            var orderEntity = _orderRepo.Get(o => o.OrderNo == rmaEntity.OrderNo).First();
            if (!OrderViewModel.IsAuthorized(orderEntity.StoreId, orderEntity.BrandId, out errorMsg))
            {
                ModelState.AddModelError(string.Empty, errorMsg);
                return View(model);
            }
            using (var ts = new TransactionScope())
            {
                rmaEntity.RejectReason = model.RejectReason;
                rmaEntity.UpdateDate = DateTime.Now;
                rmaEntity.Status = (int)RMAStatus.Reject2Customer;
                rmaEntity.UpdateUser = CurrentUser.CustomerId;
                _rmaRepo.Update(rmaEntity);

                _rmalogRepo.Insert(new RMALogEntity()
                {
                    CreateDate = DateTime.Now,
                    CreateUser = CurrentUser.CustomerId,
                    Operation = "不符合退货要求,退回客户!",
                    RMANo = model.RMANo
                });
                ts.Complete();
            }
            return RedirectToAction("details", new { orderNo = model.OrderNo });

        }