public OrderStatusResultDto GetRMAStatusById(OPC_RMA saleRMA) { OPC_Stock opcStock;; using (var db = new YintaiHZhouContext()) { opcStock = db.OPC_Stock.FirstOrDefault(a => a.SectionId == saleRMA.SectionId); } if (opcStock == null) { throw new StockNotExistsException(string.Format("")); } var result = _apiClient.Post(new GetOrderStatusByIdRequest() { Data = new { id = saleRMA.RMANo, storeno = opcStock.StoreCode } }); if (!result.Status) { Log.ErrorFormat("查询订单信息失败,message:{0}", result.Message); return(null); } return(AutoMapper.Mapper.Map <OrderStatusResult, OrderStatusResultDto>(result.Data)); }
private void SaleRMAPaidNotified(OPC_RMA rma) { using (var db = new YintaiHZhouContext()) { var opcRMA = db.OPC_RMA.FirstOrDefault(x => x.Id == rma.Id); if (opcRMA == null) { Logger.Error(string.Format("Invalid RMA ({0})", rma.RMANo)); return; } if (rma.Status != (int)EnumRMAStatus.NotifyProduct) { Logger.ErrorFormat("invalid rma status {0}", rma.Status); return; } opcRMA.UpdatedDate = DateTime.Now; opcRMA.RMACashStatus = 5;//5表示已送收银 opcRMA.UpdatedUser = -10000; db.SaveChanges(); db.OPC_RMANotificationLog.Add(new OPC_RMANotificationLog { CreateDate = DateTime.Now, CreateUser = -10000, RMANo = rma.RMANo, Status = (int)NotificationStatus.Paid, Message = string.Empty, }); db.SaveChanges(); } }
private void Process(OPC_RMA opc_SaleRMA) { try { OrderStatusResultDto saleStatus = _remoteRepository.GetRMAStatusById(opc_SaleRMA); if (saleStatus != null) { ProcessSaleRMAStatus(opc_SaleRMA, saleStatus); } } catch (Exception e) { Log.Error(e); } }
public void NotifyPaid(OPC_RMA saleRMA) { var apiClient = new DefaultApiClient(); var rsp = apiClient.Post(new OrderNotifyRequest { Data = new PaidRMANotificationEntity(saleRMA).CreateNotifiedEntity() }); if (!rsp.Status) { Logger.Error(rsp.Data); Logger.Error(rsp.Message); return; } SaleRMAPaidNotified(saleRMA); }
/// <summary> /// </summary> /// <param name="userId">The user identifier.</param> /// <returns>OPC_RMA.</returns> private OPC_RMA CreateOpcRma(int userId) { var fee = ComputeAccount(); var rma = new OPC_RMA { UserId = userId, CreatedDate = DateTime.Now, RMANo = this.RmaNo, CreatedUser = userId, UpdatedUser = userId, StoreId = StoreID, SaleOrderNo = SaleOrderNo, OrderNo = OpcSale.OrderNo, RMAType = 1, RefundAmount = RefundAmount, RMAAmount = fee, UpdatedDate = DateTime.Now, StoreFee = StoreFee, CustomFee = CustomFee, SaleRMASource = SaleRmaSource, RealRMASumMoney = RefundAmount, Reason = Reason, CompensationFee = fee, //BackDate = DateTime.Now, RecoverableSumMoney = RefundAmount - fee, RMACashStatus = EnumRMACashStatus.NoCash.AsId(), SectionId = OpcSale.SectionId, Count = this.Details.Sum(x => x.ReturnCount), RMAStatus = RefundAmount - fee > 0 ? EnumReturnGoodsStatus.CompensateVerify.AsId() : EnumReturnGoodsStatus.ServiceApprove.AsId(), Status = RefundAmount - fee > 0 ? EnumRMAStatus.NoDelivery.AsId() : EnumRMAStatus.ShipNoReceive.AsId() }; return(rma); }
private SaleRmaDto CreateSaleRmaDto(Order order, OrderTransaction trans, OPC_RMA rma) { var o = new SaleRmaDto { Id = order.Id, OrderChannelNo = trans.TransNo, CustomerAddress = order.ShippingAddress, CustomerName = order.ShippingContactPerson, CustomerPhone = order.ShippingContactPhone, IfReceipt = order.NeedInvoice.HasValue && order.NeedInvoice.Value, MustPayTotal = (double)order.TotalAmount, OrderNo = order.OrderNo, PaymentMethodName = order.PaymentMethodName, ReceiptContent = order.InvoiceDetail, ReceiptHead = order.InvoiceSubject, OrderSource = order.OrderSource, OrderTransFee = order.ShippingFee, BuyDate = order.CreateDate }; if (rma != null) { o.CustomFee = rma.CustomFee; o.RealRMASumMoney = rma.RealRMASumMoney; o.RecoverableSumMoney = rma.RecoverableSumMoney; o.RealRMASumMoney = rma.RealRMASumMoney; o.SaleOrderNo = rma.SaleOrderNo; o.StoreFee = rma.StoreFee; o.ServiceAgreeDate = rma.CreatedDate; o.CustomerRemark = rma.Reason; o.RmaNo = rma.RMANo; o.CreateDate = rma.CreatedDate; o.RMACount = rma.Count.HasValue ? rma.Count.Value :0; o.CompensationFee = rma.CompensationFee; } return(o); }
public CreateRMANotificationEntity(OPC_RMA saleRMA) : base(saleRMA) { }
public PaidRMANotificationEntity(OPC_RMA saleRMA) : base(saleRMA) { }
private void Notify2Yintai(OPC_RMA rma) { Logger.ErrorFormat("Notify to yintai: {0}", rma.RMANo); using (var context = new YintaiHZhouContext()) { var linq = from detail in context.OPC_RMADetail from item in context.OrderItems from stock in context.Inventories where detail.OrderItemId == item.Id && item.ProductId == stock.ProductId && item.ColorValueId == stock.PColorId && item.SizeValueId == stock.PSizeId && detail.RMANo == rma.RMANo select new { ItemCode = stock.Id, RMAQuantity = detail.BackCount, rma.Reason }; dynamic data = new { OPCSONumber = rma.OrderNo, Status = rma.Status == (int)EnumRMAStatus.ShipVerifyNotPass ? 300 : 800, RMAType = 1, OperaterFrom = 5, OPCRMATrancaction = linq, CacelReason = rma.Status == (int)EnumRMAStatus.ShipVerifyNotPass ? "物流审核未通过" : "退货", rma.Reason, }; var parameter = JsonConvert.SerializeObject(data); var rmaInfos = new Dictionary <string, string> { { "Data", parameter }, }; var client = new YintaiApiClient(); var rsp = client.Post(rmaInfos, "Yintai.OpenApi.Vendor.AddRMAByOPC"); if (rsp == null) { Logger.ErrorFormat("调用银泰网接口返回NULL 退货单号: {0} 参数明细 {1}", rma.RMANo, parameter); return; } if (rsp.IsSuccessful) { context.OPC_RMANotificationLog.Add(new OPC_RMANotificationLog { CreateDate = DateTime.Now, CreateUser = -10000, RMANo = rma.RMANo, Status = (int)NotificationStatus.Sync2Yintai, Message = "Success" }); context.SaveChanges(); Logger.ErrorFormat("通知银泰网RMA订单成功,RMANO {0}", rma.RMANo); } else { Logger.ErrorFormat("推送退货单至RMA失败:RMANO:{0},银泰网返回错误:{1}", rma.RMAReason, rsp.Description); } } }
protected AbstractRMANotificationEntity(OPC_RMA saleRMA) { this._saleRMA = saleRMA; }
private void ProcessSaleRMAStatus(OPC_RMA saleRMA, OrderStatusResultDto saleStatus) { var processor = RMAStatusProcessorFactory.Create(int.Parse(saleStatus.Status)); processor.Process(saleRMA.RMANo, saleStatus); }