public IHttpActionResult CreateSaleRMA([FromBody] RMARequest request, [UserId] int uid) { return(DoAction(() => { _saleRmaService.UserId = uid; _saleRmaService.CreateSaleRMA(uid, request); }, "生成销售退货单失败")); }
public void TestCreateSaleRma() { RMARequest request = new RMARequest(); request.CustomFee = 123123; request.StoreFee = 123; request.ReturnProducts.Add(new KeyValuePair <int, int>(7, 1)); request.ReturnProducts.Add(new KeyValuePair <int, int>(6, 13)); request.RealRMASumMoney = 123123; request.OrderNo = "11420140507925"; //OrderNo= request.Remark = "unitTest"; Service.CreateSaleRMA(1, request); }
public async Task <IActionResult> OnGetAsync(string id) { if (id == null) { return(NotFound()); } RMARequest = await _context.RMARequests.Include(x => x.RMACases).FirstOrDefaultAsync(m => m.Id == id); if (RMARequest == null) { return(NotFound()); } return(Page()); }
public async Task <IActionResult> OnPostAsync(string id) { if (id == null) { return(NotFound()); } RMARequest = await _context.RMARequests.FindAsync(id); if (RMARequest != null) { _context.RMARequests.Remove(RMARequest); await _context.SaveChangesAsync(); } return(RedirectToPage("./RMARequestsIndex").WithSuccess("You are redirected!", string.Format("RMA Number: {0} with Id: {1} deleted.", RMARequest.RMANumber, RMARequest.Id))); }
public async Task <IActionResult> OnPostSaveRequestAsync([FromBody] RMARequestViewModel data) { if (!ModelState.IsValid) { return(Page()); } var user = await _userManager.FindByNameAsync(User.Identity.Name); var rmaRequest = new RMARequest { CustomerERPId = data.CustomerERPId, CustomerName = data.CustomerName, CustomerContactEmail = data.CustomerContactEmail, CustomerContact = data.CustomerContact, DefectPhenomenon = data.DefectPhenomenon, Remark = data.Remark, InvoiceNumber = data.InvoiceNumber, SalesPersonUserId = data.SalesPersonUserId, Status = data.Status, RMAReport = data.RMAReport, RMANumber = data.RMANumber, Attachments = new List <FileAttachment>(), SubmittedByUserId = user.Id, SubmittedDate = DateTime.UtcNow, RMACases = new List <RMACase>(), }; // prepare partnumbers & serialnumbers foreach (var item in data.RMARequestItems) { if (!string.IsNullOrEmpty(item.PartNumber) && !string.IsNullOrEmpty(item.SerialNumber)) { rmaRequest.PartSerialNumbers += item.PartNumber + "," + item.SerialNumber + ";"; } } if (data.RMANumber != null) { if (data.RMAIssueDate == null) { rmaRequest.RMAIssueDate = DateTime.UtcNow; } } _context.RMARequests.Add(rmaRequest); _context.SaveChangesAsync().Wait(); // Set TempData for notification manually AlertViewModel alert = new AlertViewModel { AlertType = "success", AlertTitle = "You are redirected!", AlertBody = string.Format("RMAId: {0} created.", rmaRequest.Id) }; TempData.Put <AlertViewModel>("alert", alert); return(new JsonResult(string.Format("RMAId: {0} created.", rmaRequest.Id))); //return RedirectToPage("./RMARequestsIndex") // .WithSuccess("You are redirected!", // string.Format("RMAId: {0} created.", rmaRequest.Id)); }
public void CreateSaleRmaAuto(int user, RMARequest request) { CreateSaleRmaSub(user, request, "网络自助退货"); }
private void CreateSaleRmaSub(int userId, RMARequest rma, string saleSource) { if (string.Empty == rma.Remark) { throw new RmaException(string.Format("没有退货备注,订单明细号:{0}", rma.OrderNo)); } List <OPC_SaleDetail> saleDetails = _saleDetailRepository.GetByOrderNo(rma.OrderNo, 1, 1000).Result.Where(t => !t.BackNumber.HasValue || t.BackNumber.Value < t.SaleCount).OrderByDescending(t => t.SaleCount).ToList(); List <OPC_Sale> sales = _saleRepository.GetByOrderNo(rma.OrderNo, -1).OrderByDescending(t => t.SalesCount).ToList(); IList <OrderItem> orderItems = _orderItemRepository.GetByIDs(rma.ReturnProducts.Select(t => t.Key)); using (var db = new YintaiHZhouContext()) using (var ts = new TransactionScope()) { IList <RmaConfig> rmaInfos = new List <RmaConfig>(); foreach (var kv in rma.ReturnProducts) { var orderItemId = kv.Key; var rmaCount = kv.Value; var item = db.Set <OrderItem>().FirstOrDefault(x => x.Id == orderItemId); if (item == null) { throw new RmaException(string.Format("无效的商品明细记录({0})或商品ID({1})", kv.Key, kv.Value)); } var items = from i in db.Set <RMAItem>() from r in db.Set <RMA>() from o in db.Set <Order>() where i.RMANo == r.RMANo && r.OrderNo == o.OrderNo && i.ProductId == item.ProductId && o.OrderNo == rma.OrderNo && !InvalidRmaStatus.Contains(r.Status) select i; int countOfItems = items.Any() ? items.Sum(i => i.Quantity) : 0; if (item.Quantity - countOfItems < rmaCount) { throw new RmaException("退货数量大于可退货数量"); } OrderItem oItem = orderItems.FirstOrDefault(t => t.Id == kv.Key); List <OPC_SaleDetail> details = saleDetails.Where(t => t.OrderItemId == kv.Key).OrderByDescending(t => t.SaleCount).ToList(); int returnCount = kv.Value; OPC_SaleDetail detail = details.FirstOrDefault(); if (detail == null) { //没有销售明细 throw new RmaException(string.Format("没有销售明细不存在,订单明细号:{0}", kv.Key)); } while (detail != null && returnCount > CalculateRmaCount(detail)) { RmaConfig opcRma = rmaInfos.FirstOrDefault(t => t.SaleOrderNo == detail.SaleOrderNo); if (opcRma == null) { opcRma = new RmaConfig(userId) { SaleRmaSource = saleSource, RmaNo = CreateRmaNo(), SaleOrderNo = detail.SaleOrderNo, RefundAmount = rma.RealRMASumMoney, StoreFee = rma.StoreFee, CustomFee = rma.CustomFee }; rma.RealRMASumMoney = 0; rma.StoreFee = 0; rma.CustomFee = 0; opcRma.OpcSale = sales.FirstOrDefault(t => t.SaleOrderNo == opcRma.SaleOrderNo); opcRma.StoreID = _sectionRepository.GetByID(opcRma.OpcSale.SectionId.Value).StoreId.Value; rmaInfos.Add(opcRma); } int countCanRMA = CalculateRmaCount(detail); var opcRmaDetail = new SubRmaConfig { OpcSaleDetail = detail, OrderItem = oItem, OrderDetailId = kv.Key, ReturnCount = countCanRMA }; opcRma.Details.Add(opcRmaDetail); rmaInfos.Add(opcRma); //更新退货数量 UpdateSaleDetailOfBackNum(detail, countCanRMA, db); returnCount = returnCount - countCanRMA; details.Remove(detail); detail = details.FirstOrDefault(); } if (returnCount > 0) { RmaConfig config = rmaInfos.FirstOrDefault(t => t.SaleOrderNo == detail.SaleOrderNo); if (config == null) { config = new RmaConfig(userId) { SaleRmaSource = saleSource, Reason = rma.Remark, SaleOrderNo = detail.SaleOrderNo, RefundAmount = rma.RealRMASumMoney, StoreFee = rma.StoreFee, CustomFee = rma.CustomFee }; config.OpcSale = sales.FirstOrDefault(t => t.SaleOrderNo == config.SaleOrderNo); config.StoreID = _sectionRepository.GetByID(config.OpcSale.SectionId.Value).StoreId.Value; config.RmaNo = CreateRmaNo(); rmaInfos.Add(config); } var subConfig = new SubRmaConfig { OpcSaleDetail = detail, OrderItem = oItem, OrderDetailId = kv.Key, ReturnCount = returnCount }; config.Details.Add(subConfig); //更新退货数量 UpdateSaleDetailOfBackNum(detail, returnCount, db); } } Save(rmaInfos); ts.Complete(); } }
public void CreateSaleRMA(int userId, RMARequest rma) { CreateSaleRmaSub(userId, rma, "客服退货"); }