Exemple #1
0
        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));
        }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
 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);
     }
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        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)
 {
 }
Exemple #9
0
        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);
                }
            }
        }
Exemple #10
0
 protected AbstractRMANotificationEntity(OPC_RMA saleRMA)
 {
     this._saleRMA = saleRMA;
 }
Exemple #11
0
        private void ProcessSaleRMAStatus(OPC_RMA saleRMA, OrderStatusResultDto saleStatus)
        {
            var processor = RMAStatusProcessorFactory.Create(int.Parse(saleStatus.Status));

            processor.Process(saleRMA.RMANo, saleStatus);
        }