public ActionResult CreateRMA(string orderNo) { string errorMsg = string.Empty; var orderEntity = _orderRepo.Get(o => o.OrderNo == orderNo && o.Status == (int)OrderStatus.Convert2Sales).FirstOrDefault(); if (orderEntity == null) errorMsg = "订单状态不能创建退货单!"; var rmaEntity = _rmaRepo.Get(r => r.OrderNo == orderNo && (r.Status == (int)RMAStatus.Created || r.Status == (int)RMAStatus.PackageReceived)) .FirstOrDefault(); if (rmaEntity != null) errorMsg += "订单已经创建了退货单,请将已有退货单作废,然后再创建!"; if (!string.IsNullOrEmpty(errorMsg)) { return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError, errorMsg); } if (!OrderViewModel.IsAuthorized(orderEntity.StoreId, orderEntity.BrandId, out errorMsg)) { return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError, errorMsg); } var orderItemEntity = _orderItemRepo.Get(o => o.Status != (int)DataStatus.Deleted && o.OrderNo == orderNo).FirstOrDefault(); using (var ts = new TransactionScope()) { var newEntity = _rmaRepo.Insert(new RMAEntity() { RMAAmount = orderEntity.TotalAmount, Status = (int)RMAStatus.Created, OrderNo = orderEntity.OrderNo, CreateDate = DateTime.Now, CreateUser = CurrentUser.CustomerId, Reason = "现场退货", RMANo = OrderRule.CreateRMACode(), RMAType = (int)RMAType.FromOffline, UpdateDate = DateTime.Now, UpdateUser = CurrentUser.CustomerId }); _rmaitemRepo.Insert(new RMAItemEntity() { ItemPrice = orderItemEntity.ItemPrice, ProductDesc = orderItemEntity.ProductDesc, ProductId = orderItemEntity.ProductId, Quantity = orderItemEntity.Quantity, RMANo = newEntity.RMANo, Status = (int)DataStatus.Normal, UnitPrice = orderItemEntity.UnitPrice, ExtendPrice = orderItemEntity.ExtendPrice, CreateDate = DateTime.Now, StoreDesc = orderItemEntity.StoreItemDesc, StoreItem = orderItemEntity.StoreItemNo, UpdateDate = DateTime.Now }); _rmalogRepo.Insert(new RMALogEntity() { CreateDate = DateTime.Now, CreateUser = CurrentUser.CustomerId, Operation = "创建线下退货单", RMANo = newEntity.RMANo }); ts.Complete(); } var model = new OrderViewModel().FromEntity<OrderViewModel>(orderEntity, o => { o.RMAs = _rmaRepo.Get(r => r.OrderNo == o.OrderNo) .GroupJoin(_rmaitemRepo.GetAll(), ou => ou.RMANo, i => i.RMANo, (ou, i) => new { R = ou, RI = i.FirstOrDefault() }) .OrderByDescending(r => r.R.CreateDate) .ToList() .Select(r => new RMAViewModel().FromEntity<RMAViewModel>(r.R, rm => { rm.Item = new RMAItemViewModel().FromEntity<RMAItemViewModel>(r.RI); })); }); return PartialView("_RMAList", model); }
public ActionResult Void(OrderViewModel orderIn) { ExcludeModelFieldsFromValidate(new string[] { "Items", "Customer." }); if (string.IsNullOrEmpty(orderIn.VoidReason)) { ModelState.AddModelError("", "必须填写作废原因"); return View(orderIn); } var order = _orderRepo.Get(o => o.OrderNo == orderIn.OrderNo).First(); string errorMsg; if (!OrderViewModel.IsAuthorized(order.StoreId, order.BrandId, out errorMsg)) { ViewBag.Message = errorMsg; return View(orderIn); } using (var ts = new TransactionScope()) { order.Status = (int)OrderStatus.Void; order.UpdateDate = DateTime.Now; order.UpdateUser = CurrentUser.CustomerId; _orderRepo.Update(order); _orderLogRepo.Insert(new OrderLogEntity() { OrderNo = orderIn.OrderNo, CreateDate = DateTime.Now, CreateUser = CurrentUser.CustomerId, CustomerId = CurrentUser.CustomerId, Operation = string.Format("作废订单:{0}",orderIn.VoidReason), Type = (int)OrderOpera.FromOperator }); ts.Complete(); } return RedirectToAction("Details", new { OrderNo = orderIn.OrderNo }); }
public ActionResult VoidRMA(string rmano) { var rmaEntity = _rmaRepo.Get(o => o.RMANo == rmano).FirstOrDefault(); if (rmaEntity == null) return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError, "数据异常"); if (rmaEntity.Status != (int)RMAStatus.Created) return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError, "退货单状态不能取消。"); string errorMsg; var orderEntity = _orderRepo.Get(o => o.OrderNo == rmaEntity.OrderNo).First(); if (!OrderViewModel.IsAuthorized(orderEntity.StoreId, orderEntity.BrandId, out errorMsg)) { return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError, errorMsg); } using (var ts = new TransactionScope()) { rmaEntity.UpdateDate = DateTime.Now; rmaEntity.Status = (int)RMAStatus.Void; rmaEntity.UpdateUser = CurrentUser.CustomerId; _rmaRepo.Update(rmaEntity); _rmalogRepo.Insert(new RMALogEntity() { CreateDate = DateTime.Now, CreateUser = CurrentUser.CustomerId, Operation = "作废订单!", RMANo = rmano }); ts.Complete(); } var model = new OrderViewModel().FromEntity<OrderViewModel>(orderEntity, o => { o.RMAs = _rmaRepo.Get(r => r.OrderNo == o.OrderNo) .GroupJoin(_rmaitemRepo.GetAll(), ou => ou.RMANo, i => i.RMANo, (ou, i) => new { R = ou, RI = i.FirstOrDefault() }) .OrderByDescending(r => r.R.CreateDate) .ToList() .Select(r => new RMAViewModel().FromEntity<RMAViewModel>(r.R, rm => { rm.Item = new RMAItemViewModel().FromEntity<RMAItemViewModel>(r.RI); })); }); return PartialView("_RMAList", model); }
public ActionResult Void(string orderNo) { var linq = _orderRepo.Get(o => o.OrderNo == orderNo); linq = _userAuthRepo.AuthFilter(linq, CurrentUser.CustomerId, CurrentUser.Role) as IQueryable<OrderEntity>; var order = linq.FirstOrDefault(); if (order == null) { throw new ArgumentNullException("orderNo"); } var model = new OrderViewModel().FromEntity<OrderViewModel>(order); return View(model); }
public ActionResult Shipping(OrderViewModel item, string orderNo) { item.Status = (int)OrderStatus.Shipped; if (!ModelState.IsValid) { var order = _orderRepo.Context.Set<OrderItemEntity>().Where(o => o.OrderNo == orderNo).FirstOrDefault(); ViewBag.OrderNo = orderNo; return View(new OrderViewModel().FromEntity<OrderViewModel>(order)); } var itemEntity = _orderRepo.Get(o => o.OrderNo == orderNo).First(); string errorMsg; if (!OrderViewModel.IsAuthorized(itemEntity.StoreId, itemEntity.BrandId, out errorMsg)) { ViewBag.OrderNo = orderNo; ModelState.AddModelError(string.Empty, errorMsg); ViewBag.OrderNo = orderNo; return View(new OrderViewModel().FromEntity<OrderViewModel>(itemEntity)); } if (itemEntity.Status != (int)OrderStatus.PreparePack) { ViewBag.OrderNo = orderNo; ViewBag.Message = "订单状态无法发货"; return RedirectToAction("Details", new { OrderNo = orderNo }); } using (var ts = new TransactionScope()) { var outboundEntity = _outboundRepo.Get(o => o.SourceNo == orderNo && o.SourceType == (int)OutboundType.Order).FirstOrDefault(); outboundEntity.Status = (int)OutboundStatus.Shipped; outboundEntity.UpdateDate = DateTime.Now; outboundEntity.UpdateUser = CurrentUser.CustomerId; _outboundRepo.Update(outboundEntity); itemEntity.ShippingVia = item.ShippingVia; itemEntity.ShippingNo = item.ShippingNo; itemEntity.Status = (int)OrderStatus.Shipped; itemEntity.UpdateDate = DateTime.Now; itemEntity.UpdateUser = CurrentUser.CustomerId; _orderRepo.Update(itemEntity); _orderLogRepo.Insert(new OrderLogEntity() { OrderNo = orderNo, CreateDate = DateTime.Now, CreateUser = CurrentUser.CustomerId, CustomerId = CurrentUser.CustomerId, Operation = "填写快递信息并发货。", Type = (int)OrderOpera.FromOperator }); ts.Complete(); } return RedirectToAction("Details", new { OrderNo = orderNo }); }
public ActionResult Shipping(string orderNo) { var order = _orderRepo.Context.Set<OrderItemEntity>().Where(o => o.OrderNo == orderNo).FirstOrDefault(); if (order == null) { throw new ArgumentNullException("orderNo"); } var model = new OrderViewModel().FromEntity<OrderViewModel>(order); ViewBag.OrderNo = orderNo; return View(model); }
public ActionResult Edit(OrderViewModel model) { ExcludeModelFieldsFromValidate(new string[] {"Items","Customer." }); if (!ModelState.IsValid) { return View(model); } var linq = Context.Set<OrderEntity>().Where(o => o.OrderNo == model.OrderNo); linq = _userAuthRepo.AuthFilter(linq, CurrentUser.CustomerId, CurrentUser.Role) as IQueryable<OrderEntity>; var orderEntity = linq.FirstOrDefault(); if (orderEntity == null) { ViewBag.Message = "订单不存在"; return View(model); } var sb = new StringBuilder(); sb.Append("修改订单:"); using (var ts = new TransactionScope()) { if (orderEntity.ShippingAddress != model.ShippingAddress) { sb.AppendFormat("原送货地址:{0}", orderEntity.ShippingAddress); orderEntity.ShippingAddress = model.ShippingAddress; } if (orderEntity.ShippingContactPerson != model.ShippingContactPerson) { sb.AppendFormat(",原送货联系人:{0}", orderEntity.ShippingContactPerson); orderEntity.ShippingContactPerson = model.ShippingContactPerson; } if (orderEntity.ShippingContactPhone != model.ShippingContactPhone) { sb.AppendFormat(",原联系电话:{0}", orderEntity.ShippingContactPhone); orderEntity.ShippingContactPhone = model.ShippingContactPhone; } if (orderEntity.ShippingZipCode != model.ShippingZipCode) { sb.AppendFormat(",原送货地址邮编:{0}", orderEntity.ShippingZipCode); orderEntity.ShippingZipCode = model.ShippingZipCode; } if (orderEntity.NeedInvoice != model.NeedInvoice) { sb.AppendFormat(",原是否需要发票:{0}", orderEntity.NeedInvoice); orderEntity.NeedInvoice = model.NeedInvoice; } if (orderEntity.InvoiceSubject != model.InvoiceSubject) { sb.AppendFormat(",原发票抬头:{0}", orderEntity.InvoiceSubject); orderEntity.InvoiceSubject = model.InvoiceSubject; } if (orderEntity.InvoiceDetail != model.InvoiceDetail) { sb.AppendFormat(",原发票明细:{0}", orderEntity.InvoiceDetail); orderEntity.InvoiceDetail = model.InvoiceDetail; } _orderRepo.Update(orderEntity); _orderLogRepo.Insert(new OrderLogEntity() { CreateDate = DateTime.Now, CreateUser = CurrentUser.CustomerId, CustomerId =CurrentUser.CustomerId, Operation = sb.ToString(), OrderNo = orderEntity.OrderNo, Type = (int)OrderOpera.EditOrder }); ts.Complete(); } return RedirectToAction("Details", new { OrderNo = model.OrderNo}); }
public ActionResult Details(string orderNo) { var linq = _orderRepo.Get(o => o.OrderNo == orderNo); linq = _userAuthRepo.AuthFilter(linq, CurrentUser.CustomerId, CurrentUser.Role) as IQueryable<OrderEntity>; var order = linq.FirstOrDefault(); if (order == null) { throw new ArgumentNullException("orderNo"); } var model = new OrderViewModel().FromEntity<OrderViewModel>(order, o => { o.Customer = new CustomerViewModel().FromEntity<CustomerViewModel>(_customerRepo.Find(o.CustomerId)); o.Logs = _orderLogRepo.Get(l => l.OrderNo == o.OrderNo).OrderByDescending(ol=>ol.CreateDate).ToList().Select(l => new OrderLogViewModel().FromEntity<OrderLogViewModel>(l)); o.Items = _orderRepo.Context.Set<OrderItemEntity>().Where(oi => oi.OrderNo == o.OrderNo && oi.Status != (int)DataStatus.Deleted) .ToList() .Select(oi => new OrderItemViewModel().FromEntity<OrderItemViewModel>(oi, item => { item.ProductResource = new ResourceViewModel().FromEntity<ResourceViewModel>(Context.Set<ResourceEntity>().Where(r => r.SourceId == item.ProductId && r.SourceType == (int)SourceType.Product && r.Status != (int)DataStatus.Deleted).OrderByDescending(r => r.SortOrder).OrderBy(r => r.CreatedDate).FirstOrDefault()); item.Brand = new BrandViewModel().FromEntity<BrandViewModel>(Context.Set<BrandEntity>().Find(item.BrandId)); })); o.ShippingViaMethod = _orderRepo.Context.Set<ShipViaEntity>().Where(s => s.Id == o.ShippingVia).FirstOrDefault(); o.RMAs = _rmaRepo.Get(r => r.OrderNo == o.OrderNo) .GroupJoin(_rmaitemRepo.GetAll(), ou => ou.RMANo, i => i.RMANo, (ou, i) => new { R = ou, RI = i.FirstOrDefault() }) .OrderByDescending(r=>r.R.CreateDate) .ToList() .Select(r => new RMAViewModel().FromEntity<RMAViewModel>(r.R, rm => { rm.Item = new RMAItemViewModel().FromEntity<RMAItemViewModel>(r.RI); })); }); return View(model); }