Ejemplo n.º 1
0
        /// <summary>
        /// 作废申请单
        /// </summary>
        /// <param name="sysNo">申请单编号</param>
        /// <returns>是否成功</returns>
        public virtual bool Abandon(int sysNo)
        {
            RMARequestInfo request = LoadBySysNo(sysNo);

            request.VerifyAbandon(request);

            request.Status    = RMARequestStatus.Abandon;
            request.Registers = registerProcessor.LoadByRequestSysNo(sysNo);
            request.Registers.ForEach(reg => { reg.BasicInfo.Status = request.Status; });

            bool result;

            TransactionOptions options = new TransactionOptions();

            options.IsolationLevel = IsolationLevel.ReadCommitted;
            options.Timeout        = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                result = UpdateWithRegisters(request);

                scope.Complete();
            }

            ExternalDomainBroker.CreateOperationLog("RMA_Request_Abandon", BizLogType.RMA_Request_Abandon, request.SysNo.Value, request.CompanyCode);

            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 更新申请单主信息(不包括单件)
        /// </summary>
        /// <param name="request">申请单信息</param>
        public virtual void UpdateWithoutRegisters(RMARequestInfo request)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }
            if (!request.SysNo.HasValue)
            {
                throw new ArgumentNullException("request.SysNo");
            }

            request.VerifyUpdate(LoadBySysNo(request.SysNo.Value));

            var customerContactInfo = GetCustomerContactInfo(request);

            TransactionOptions options = new TransactionOptions();

            options.IsolationLevel = IsolationLevel.ReadCommitted;
            options.Timeout        = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                ObjectFactory <ICustomerContactDA> .Instance.UpdateByRequestSysNo(customerContactInfo);

                requestDA.Update(request);

                scope.Complete();
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 更新Request和Register信息
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        private bool UpdateWithRegisters(RMARequestInfo request)
        {
            requestDA.Update(request);

            if (request.Registers != null)
            {
                if (request.Status == RMARequestStatus.AuditRefuesed)
                {
                    request.Registers.ForEach(
                        reg =>
                    {
                        reg.BasicInfo.Status = RMARequestStatus.Abandon;
                        registerProcessor.Update(reg);
                    }
                        );
                }
                else
                {
                    request.Registers.ForEach(
                        reg =>
                    {
                        reg.BasicInfo.Status = request.Status;
                        registerProcessor.Update(reg);
                    }
                        );
                }
            }

            return(true);
        }
Ejemplo n.º 4
0
        public virtual RefundInfo LoadBySysNo(int sysNo, out string customerName,
                                              out CustomerContactInfo contactInfo,
                                              out PromotionCode_Customer_Log promotionCodeLog)
        {
            RefundInfo refund = ObjectFactory <RefundProcessor> .Instance.LoadWithItemsBySysNo(sysNo);

            CustomerInfo customer = ExternalDomainBroker.GetCustomerInfo(refund.CustomerSysNo.Value);

            customerName          = customer.BasicInfo.CustomerName;
            refund.IncomeBankInfo = ExternalDomainBroker.GetSOIncomeRefundInfo(sysNo, RefundOrderType.RO);
            contactInfo           = null;
            if (refund.RefundPayType == RefundPayType.BankRefund && refund.IncomeBankInfo != null &&
                string.IsNullOrEmpty(refund.IncomeBankInfo.CardNumber))
            {
                if (refund.RefundItems != null && refund.RefundItems.Count > 0)
                {
                    RMARequestInfo request = ObjectFactory <RequestProcessor> .Instance.LoadByRegisterSysNo(refund.RefundItems[0].RegisterSysNo.Value);

                    contactInfo = ObjectFactory <CustomerContactProcessor> .Instance.LoadByRequestSysNo(request.SysNo.Value);
                }
            }
            promotionCodeLog = ExternalDomainBroker.GetPromotionCodeLog(refund.SOSysNo.Value);
            if (promotionCodeLog != null)
            {
                promotionCodeLog.UsedOrderSysNo = ExternalDomainBroker.GetSOSysNoByCouponSysNo(promotionCodeLog.CouponCodeSysNo.Value);
            }
            return(refund);
        }
Ejemplo n.º 5
0
        public virtual RMARequestInfo Adjust(int sysNo)
        {
            string ServiceCode = requestDA.CreateServiceCode();

            if (string.IsNullOrEmpty(ServiceCode) || ServiceCode.Length != 6)
            {
                throw new ArgumentNullException(ResouceManager.GetMessageString("RMA.Request", "ServiceCodeError"));
            }
            else
            {
                RMARequestInfo request = LoadBySysNo(sysNo);
                request.VerifyAuditPassed(request);
                request.ServiceCode    = ServiceCode;
                request.Status         = RMARequestStatus.Origin;
                request.Registers      = registerProcessor.LoadByRequestSysNo(request.SysNo.Value);
                request.AuditTime      = DateTime.Now;
                request.AuditUserSysNo = ServiceContext.Current.UserSysNo;
                bool result = UpdateWithRegisters(request);

                if (request.IsReceiveMsg == true && !string.IsNullOrEmpty(request.Phone) &&
                    request.ShippingType == BizEntity.Invoice.DeliveryType.SELF && request.StockType == StockType.SELF && request.InvoiceType == InvoiceType.SELF)
                {
                    string message = string.Format(ResouceManager.GetMessageString("RMA.Request", "SMSAuditRMARequest"), request.RequestID, request.ServiceCode);
                    ExternalDomainBroker.SendSMS(request.Phone, message);
                }

                if (result)
                {
                    ExternalDomainBroker.CreateOperationLog("RMA_Request_Audit", BizLogType.RMA_Request_Audit, request.SysNo.Value, request.CompanyCode);
                }
                return(request);
            }
        }
Ejemplo n.º 6
0
        public ActionResult AjaxRefundRequest()
        {
            var sysnoData = Request["SysNo"];
            int sysno;

            if (!int.TryParse(sysnoData, out sysno) || sysno <= 0)
            {
                throw new BusinessException(L("退换货申请单编号不正确"));
            }
            var           refundData = Request["RefundInfo"];
            RMARefundInfo refundInfo = SerializationUtility.JsonDeserialize <RMARefundInfo>(refundData);

            if (string.IsNullOrWhiteSpace(refundData) || refundInfo == null)
            {
                throw new BusinessException(L("退款信息为空"));
            }
            //退款方式为“网关直接退款”
            refundInfo.RefundPayType = RefundPayType.NetWorkRefund;

            LoginUser user = EntityConverter <UserAuthVM, LoginUser> .Convert(UserAuthHelper.GetCurrentUser());

            RMARequestInfo data = RMARequestService.Refund(sysno, refundInfo, user);

            return(Json(data));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 关闭申请单
        /// </summary>
        /// <param name="sysNo">系统编号</param>
        /// <returns>是否成功</returns>
        public virtual bool Close(int sysNo)
        {
            RMARequestInfo request = LoadBySysNo(sysNo);

            request.Status    = RMARequestStatus.Complete;
            request.Registers = registerProcessor.LoadByRequestSysNo(request.SysNo.Value);

            request.Registers.ForEach(register =>
            {
                register.BasicInfo.CloseTime      = DateTime.Now;
                register.BasicInfo.CloseUserSysNo = ServiceContext.Current.UserSysNo;
            });

            bool result;
            TransactionOptions options = new TransactionOptions();

            options.IsolationLevel = IsolationLevel.ReadCommitted;
            options.Timeout        = TransactionManager.DefaultTimeout;

            using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                result = UpdateWithRegisters(request);

                scope.Complete();
            }

            ExternalDomainBroker.CreateOperationLog("RMA_Request_Close", BizLogType.RMA_Request_Close, request.SysNo.Value, request.CompanyCode);

            return(result);
        }
Ejemplo n.º 8
0
        public static bool VerifyForCreate(this RMARequestInfo request)
        {
            // verify required fields
            CommonCheck.VerifyNotNull("销售单号", request.SOSysNo);
            CommonCheck.VerifyNotNull("顾客编号", request.CustomerSysNo);
            CommonCheck.VerifyNotNull("联系电话", request.Phone);
            CommonCheck.VerifyNotNull("联系人", request.Contact);
            CommonCheck.VerifyNotNull("送货方式", request.ShipViaCode);
            CommonCheck.VerifyNotNull("收货地址区域编号", request.AreaSysNo);
            CommonCheck.VerifyNotNull("收货地址", request.Address);
            // verify all fields' length
            request.VerifyFieldsLength();

            VerifyGiftCardRMA(request);

            // tracking# is required withou OZZO ship via
            if ((!request.ShipViaCode.ToLower().Contains("ozzo") &&
                 !request.ShipViaCode.ToLower().Contains("奥硕")) &&
                StringUtility.IsNullOrEmpty(request.TrackingNumber))
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "ObjectIsRequired");
                msg = string.Format(msg, "邮包编号");
                throw new BizException(msg);
            }

            return(request.VerifyDuplicate());
        }
Ejemplo n.º 9
0
        public static RMARequestInfo Create(RMARequestInfo entity)
        {
            DataCommand insertCommand = DataCommandManager.GetDataCommand("InsertRequestMaster");

            //insertCommand.SetParameterValue<RMARequestInfo>(entity);
            insertCommand.SetParameterValue("@SysNo", entity.SysNo);
            insertCommand.SetParameterValue("@RequestID", entity.RequestID);
            insertCommand.SetParameterValue("@SOSysNo", entity.SOSysNo);
            insertCommand.SetParameterValue("@CustomerSysNo", entity.CustomerSysNo);
            insertCommand.SetParameterValue("@Address", entity.Address);
            insertCommand.SetParameterValue("@Contact", entity.Contact);
            insertCommand.SetParameterValue("@Phone", entity.Phone);
            insertCommand.SetParameterValue("@Status", entity.Status);
            insertCommand.SetParameterValue("@AreaSysNo", entity.AreaSysNo);
            insertCommand.SetParameterValue("@ShipViaCode", entity.ShipViaCode);
            insertCommand.SetParameterValue("@IsSubmit", entity.IsSubmit);
            insertCommand.SetParameterValue("@TrackingNumber", entity.TrackingNumber);
            insertCommand.SetParameterValue("@StockType", entity.StockType.ToString());
            insertCommand.SetParameterValue("@ShippingType", entity.ShippingType.ToString());
            insertCommand.SetParameterValue("@InvoiceType", entity.InvoiceType.ToString());
            insertCommand.SetParameterValue("@MerchantSysno", entity.MerchantSysNo);
            insertCommand.ExecuteNonQuery();

            return(entity);
        }
Ejemplo n.º 10
0
        public virtual CustomerContactInfo LoadByRequestSysNo(int sysNo)
        {
            CustomerContactInfo entity = null;

            entity = da.Load(sysNo);
            if (entity == null)
            {
                RMARequestInfo request = ObjectFactory <IRequestDA> .Instance.LoadBySysNo(sysNo);

                if (request != null)
                {
                    entity = new CustomerContactInfo();
                    entity.ReceiveAddress   = request.Address;
                    entity.ReceiveAreaSysNo = request.AreaSysNo;
                    entity.ReceiveContact   = request.Contact;
                    entity.ReceiveName      = request.Contact;
                    entity.ReceivePhone     = request.Phone;
                    if (request.SOSysNo.HasValue)
                    {
                        SOInfo so = ExternalDomainBroker.GetSOInfo(request.SOSysNo.Value);
                        if (so != null)
                        {
                            entity.ReceiveCellPhone = so.ReceiverInfo.MobilePhone;
                            entity.ReceiveZip       = so.ReceiverInfo.Zip;
                        }
                    }
                }
            }
            return(entity);
        }
Ejemplo n.º 11
0
 private static void UpdateWithRegisters(RMARequestInfo request)
 {
     RMARequestDA.Update(request);
     if (request.Registers != null)
     {
         if (request.Status == RMARequestStatus.AuditRefuesed)
         {
             request.Registers.ForEach(
                 reg =>
             {
                 reg.Status = RMARequestStatus.Abandon;
                 RMARequestDA.UpdateRegisterStatus(reg);
             }
                 );
         }
         else
         {
             request.Registers.ForEach(
                 reg =>
             {
                 reg.Status = request.Status;
                 RMARequestDA.UpdateRegisterStatus(reg);
             }
                 );
         }
     }
 }
Ejemplo n.º 12
0
        public void Update(RMARequestInfo entity)
        {
            DataCommand updateCommand = DataCommandManager.GetDataCommand("PurelyUpdateRequestMaster");

            updateCommand.SetParameterValue <RMARequestInfo>(entity);

            updateCommand.ExecuteNonQuery();
        }
Ejemplo n.º 13
0
 public static RMARequestInfo LoadWithRequestSysNo(int rmaRequestSysNo, int sellerSysNo)
 {
     if (rmaRequestSysNo > 0 && sellerSysNo > 0)
     {
         RMARequestInfo info = RMARequestDA.LoadWithRequestSysNo(rmaRequestSysNo, sellerSysNo);
         return(info);
     }
     return(null);
 }
Ejemplo n.º 14
0
        public RMARequestInfo Create(RMARequestInfo entity)
        {
            DataCommand insertCommand = DataCommandManager.GetDataCommand("InsertRequestMaster");

            insertCommand.SetParameterValue <RMARequestInfo>(entity);

            insertCommand.ExecuteNonQuery();

            return(entity);
        }
Ejemplo n.º 15
0
        /// <summary>
        /// 更新申请单Lable打印信息
        /// </summary>
        /// <param name="sysNo">系统编号</param>
        /// <returns>是否成功</returns>
        public virtual bool PrintLables(int sysNo)
        {
            bool result = requestDA.PrintLabels(sysNo);

            RMARequestInfo request = LoadBySysNo(sysNo);

            ExternalDomainBroker.CreateOperationLog("RMA_Request_PrintLabels", BizLogType.RMA_Request_PrintLabels, sysNo, request.CompanyCode);

            return(result);
        }
Ejemplo n.º 16
0
        public static bool VerifyReceive(this RMARequestInfo request, RMARequestInfo requestInDb)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }

            // verify required fields
            CommonCheck.VerifyNotNull("申请单ID", request.SysNo);
            CommonCheck.VerifyNotNull("仓库", request.ReceiveWarehouse);
            CommonCheck.VerifyNotNull("接收日期", request.CustomerSendTime);
            CommonCheck.VerifyNotNull("订单号", request.SOSysNo);
            //if (!(request.ShipViaCode.ToLower().Contains("ozzo") ||
            //      request.ShipViaCode.ToLower().Contains("奥硕")))
            if (!request.ShipViaCode.ToLower().Contains(AppSettingManager.GetSetting("RMA", "PushShipTypeName")))
            {
                CommonCheck.VerifyNotNull("邮包编号", request.TrackingNumber);
            }

            // verify request fields' max length
            request.VerifyFieldsLength();

            if (requestInDb.Status.HasValue && requestInDb.Status.Value != RMARequestStatus.Origin)
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "CannotReceiveWithoutOriginRequest");
                throw new BizException(msg);
            }
            if (request.Registers == null || request.Registers.Count < 1)
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "ObjectIsRequired");
                msg = string.Format(msg, "订单列表");
                throw new BizException(msg);
            }
            request.Registers.ForEach(
                reg =>
            {
                if (!reg.BasicInfo.IsHaveInvoice.HasValue ||
                    !reg.BasicInfo.IsFullAccessory.HasValue ||
                    !reg.BasicInfo.IsFullPackage.HasValue)
                {
                    string msg = ResouceManager.GetMessageString("RMA.Request", "LostRegisterReceiveInformations");
                    throw new BizException(msg);
                }
            }
                );
            if (request.ShipViaCode == RMAConst.ShipVia_PostOffice)
            {
                if (request.PostageToPoint.HasValue && request.PostageToPoint.Value > 50)
                {
                    string msg = ResouceManager.GetMessageString("RMA.Request", "PostageToPointShouldLessThan50");
                    throw new BizException(msg);
                }
            }
            return(true);
        }
Ejemplo n.º 17
0
        /// <summary>
        /// 接收退货
        /// </summary>
        /// <param name="rmaRequestSysNo">退换货申请单编号</param>
        /// <param name="userSysNo">操作人用户</param>
        /// <returns></returns>
        public static RMARequestInfo Receive(int rmaRequestSysNo, LoginUser operateUser)
        {
            RMARequestInfo request = LoadWithRequestSysNo(rmaRequestSysNo, operateUser.SellerSysNo);

            if (request == null)
            {
                throw new BusinessException(L("未找到编号为【{0}】的退换货申请单", rmaRequestSysNo));
            }
            if (request.Status != RMARequestStatus.Origin)
            {
                throw new BusinessException(L("不能接收非“待处理”状态的申请单"));
            }
            if (request.Registers == null || request.Registers.Count <= 0)
            {
                throw new BusinessException(L("没有需要退换货的商品"));
            }
            //TODO: 虚拟仓库编码
            request.ReceiveWarehouse = "90";
            request.RecvTime         = DateTime.Now;
            request.RecvUserSysNo    = operateUser.UserSysNo;
            request.RecvUserName     = operateUser.UserDisplayName;
            //收货后状态变成“处理中”,这个时候可以进行退货或退款操作
            request.Status = RMARequestStatus.Handling;

            bool isWithin7Days = false;

            if (request.CustomerSendTime.HasValue)
            {
                isWithin7Days = request.CustomerSendTime.Value.AddDays(-7) < DateTime.Now;
            }
            List <SOItemInfo> soItems = SOService.GetSOItemInfoList(request.SOSysNo.Value);
            SOItemInfo        soItem  = null;

            foreach (var reg in request.Registers)
            {
                reg.OwnBy             = RMAOwnBy.Customer;
                reg.Location          = RMALocation.Self;
                reg.LocationWarehouse = request.ReceiveWarehouse;
                reg.IsWithin7Days     = isWithin7Days;
                reg.Status            = request.Status;

                soItem = soItems.Find(x => x.ProductSysNo == reg.ProductSysNo.Value &&
                                      x.ProductType == reg.SoItemType.Value);
                if (soItem == null)
                {
                    throw new BusinessException(L("订单中不存在申请退换货的商品:{0}【1】", reg.ProductName, reg.ProductID));
                }
                reg.Cost = soItem.Cost;
            }
            ;

            UpdateWithRegisters(request);
            return(request);
        }
Ejemplo n.º 18
0
        /// <summary>
        /// 根据系统编号获取申请单以及对应的单件详细信息
        /// </summary>
        /// <param name="sysNo">系统编号</param>
        /// <returns>申请单详细信息</returns>
        public virtual RMARequestInfo LoadWithRegistersBySysNo(int sysNo)
        {
            RMARequestInfo result = ObjectFactory <IRequestDA> .Instance.LoadWithRegistersBySysNo(sysNo);

            if (result == null)
            {
                string msg = ResouceManager.GetMessageString("RMA.Request", "RequestNotExists");
                msg = string.Format(msg, sysNo);
                throw new BizException(msg);
            }
            return(result);
        }
Ejemplo n.º 19
0
        public static string SubmitRMARequest(RMARequestInfo request)
        {
            DataCommand dataCommand = DataCommandManager.GetDataCommand("SubmitRMARequest");

            dataCommand.SetParameterValue("@SysNo", request.SysNo);
            dataCommand.SetParameterValue("@Address", request.Address);
            dataCommand.SetParameterValue("@Contact", request.Contact);
            dataCommand.SetParameterValue("@Phone", request.Phone);
            dataCommand.SetParameterValue("@AreaSysNo", request.AreaSysNo);
            dataCommand.SetParameterValue("@IsSubmit", request.IsSubmit);
            dataCommand.ExecuteNonQuery();
            return(dataCommand.GetParameterValue("@RequestID").ToString());
        }
Ejemplo n.º 20
0
        public static void RefreshRequestStatus(int rmaRequestSysNo, int sellerSysNo)
        {
            RMARequestInfo requestInfo = LoadWithRequestSysNo(rmaRequestSysNo, sellerSysNo);

            if (requestInfo != null)
            {
                if (requestInfo.Status == RMARequestStatus.Handling &&
                    requestInfo.Registers.Count(x => x.Status == RMARequestStatus.Handling) <= 0)
                {
                    requestInfo.Status = RMARequestStatus.Complete;
                    RMARequestDA.Update(requestInfo);
                }
            }
        }
Ejemplo n.º 21
0
        public ActionResult SubmitRMARequestInfo(FormCollection form)
        {
            string Data = Request["Data"].ToString();

            Data = System.Web.HttpUtility.UrlDecode(Data);

            JavaScriptSerializer jss         = new JavaScriptSerializer();
            RMARequestInfo       requestInfo = jss.Deserialize <RMARequestInfo>(Data);

            requestInfo.IsSubmit = true;
            string requestrSysno = RMARequestFacade.SubmitRMARequest(requestInfo);

            return(Json(new { Result = "s", RequestrSysno = requestrSysno }, JsonRequestBehavior.AllowGet));
        }
Ejemplo n.º 22
0
        /// <summary>
        /// 取消接收申请单
        /// </summary>
        /// <param name="sysNo">系统编号</param>
        /// <returns>是否成功</returns>
        public virtual bool CancelReceive(int sysNo)
        {
            RMARequestInfo request = LoadWithRegistersBySysNo(sysNo);

            request.VerifyCancelReceive();

            using (TransactionScope tran = new TransactionScope())
            {
                //[Jay]:OZZO奥硕物流上门取返修件或返还50点积分 2010-01-28
                //VoidTransferPostage2Point(request);

                request.Status           = RMARequestStatus.Origin;
                request.ReceiveWarehouse = null;
                request.ReceiveTime      = null;
                request.ReceiveUserSysNo = null;
                request.IsViaPostOffice  = null;
                request.PostageToPoint   = null;
                request.ReturnPoint      = null;
                request.Registers        = registerProcessor.LoadByRequestSysNo(request.SysNo.Value);

                // 先更新 RMA Inventory
                // 更新后再重置 LocationWarehouse
                UpdateInventory(request.Registers, false);

                request.Registers.ForEach(reg =>
                {
                    reg.BasicInfo.OwnBy             = RMAOwnBy.Origin;
                    reg.BasicInfo.Location          = RMALocation.Origin;
                    reg.BasicInfo.Cost              = null;
                    reg.BasicInfo.Status            = request.Status;
                    reg.BasicInfo.LocationWarehouse = ((int)RMALocation.Origin).ToString();
                    reg.BasicInfo.RefundStatus      = null;
                    reg.RevertInfo.RevertStatus     = null;
                    reg.BasicInfo.OutBoundStatus    = null;
                    reg.BasicInfo.ReturnStatus      = null;
                });

                requestDA.Update(request);

                request.Registers.ForEach(reg =>
                {
                    registerProcessor.Update(reg);
                });

                tran.Complete();
            }

            ExternalDomainBroker.CreateOperationLog("RMA_Request_CancelRecieve", BizLogType.RMA_Request_CancelReceive, request.SysNo.Value, request.CompanyCode);
            return(true);
        }
Ejemplo n.º 23
0
        public ActionResult AjaxRejectRequest()
        {
            var sysnoData = Request["SysNo"];
            int sysno;

            if (!int.TryParse(sysnoData, out sysno) || sysno <= 0)
            {
                throw new BusinessException(L("退换货申请单编号不正确"));
            }
            LoginUser user = EntityConverter <UserAuthVM, LoginUser> .Convert(UserAuthHelper.GetCurrentUser());

            RMARequestInfo data = RMARequestService.Reject(sysno, user);

            return(Json(data));
        }
Ejemplo n.º 24
0
        public static RMARequestInfo LoadWithRequestSysNo(int rmaRequestSysNo, int sellerSysNo)
        {
            DataCommand command = DataCommandManager.GetDataCommand("LoadRMARequestWithRequestSysNo");

            command.SetParameterValue("@SysNo", rmaRequestSysNo);
            command.SetParameterValue("@SellerSysNo", sellerSysNo);

            RMARequestInfo info = command.ExecuteEntity <RMARequestInfo>();

            if (info != null)
            {
                info.Registers = LoadRegisterWithRequestSysNo(rmaRequestSysNo);
            }
            return(info);
        }
Ejemplo n.º 25
0
 public static bool VerifyFieldsLength(this RMARequestInfo request)
 {
     if (request != null)
     {
         CommonCheck.VerifyLength("RequestID", request.RequestID, 20);
         CommonCheck.VerifyLength("Address", request.Address, 200);
         CommonCheck.VerifyLength("Contact", request.Contact, 50);
         CommonCheck.VerifyLength("Phone", request.Phone, 50);
         CommonCheck.VerifyLength("Note", request.Note, 200);
         CommonCheck.VerifyLength("Memo", request.Memo, 200);
         CommonCheck.VerifyLength("ShipViaCode", request.ShipViaCode, 50);
         CommonCheck.VerifyLength("TrackingNumber", request.TrackingNumber, 50);
         CommonCheck.VerifyLength("ReceiveWarehouse", request.ReceiveWarehouse, 4);
     }
     return(true);
 }
Ejemplo n.º 26
0
        public RMARequestInfo LoadWithRegistersBySysNo(int sysNo)
        {
            DataCommand selectCommand = DataCommandManager.GetDataCommand("LoadRequestBySysNo");

            selectCommand.SetParameterValue("@SysNo", sysNo);

            RMARequestInfo requestView = selectCommand.ExecuteEntity <RMARequestInfo>();

            if (requestView == null)
            {
                return(requestView);
            }
            requestView.Registers = ObjectFactory <IRegisterDA> .Instance.QueryByRequestSysNo(requestView.SysNo.Value);

            return(requestView);
        }
Ejemplo n.º 27
0
        /// <summary>
        /// 获取申请单的业务模式
        /// </summary>
        /// <param name="request">申请单信息</param>
        /// <returns>业务模式描述信息,比如:(泰隆优选销售,泰隆优选仓储,泰隆优选配送,商家:泰隆优选网)</returns>
        public virtual string GetBusinessModel(RMARequestInfo request)
        {
            string businessType = string.Empty;

            if (!string.IsNullOrEmpty(GetBusinessTypeString(request.InvoiceType)))
            {
                //{0}销售
                businessType += string.Format(ResouceManager.GetMessageString("RMA.Request", "InvoiceTypeFormat"), GetBusinessTypeString(request.InvoiceType));
            }
            if (!string.IsNullOrEmpty(GetBusinessTypeString(request.StockType)))
            {
                //{0}仓储
                businessType += string.Format(ResouceManager.GetMessageString("RMA.Request", "StockTypeFormat"), GetBusinessTypeString(request.StockType));
            }

            if (!string.IsNullOrEmpty(GetBusinessTypeString(request.ShippingType)))
            {
                //{0}配送
                businessType += string.Format(ResouceManager.GetMessageString("RMA.Request", "ShippingTypeFormat"), GetBusinessTypeString(request.ShippingType));
            }

            string vendorName = string.Empty;

            ///为符合IPP逻辑而改
            ///ipp中 NEG订单时MerchantSysNo=0, 不用加载商家信息
            ///改之前代码:if (request.MerchantSysNo.HasValue)
            ///改之后代码如下:
            if (request.MerchantSysNo.HasValue && request.MerchantSysNo != 0)
            {
                //获取Merchant的信息
                var merchantInfo = ExternalDomainBroker.GetVendorFinanceInfoByVendorSysNo(request.MerchantSysNo.Value);
                if (!string.IsNullOrEmpty(merchantInfo.VendorBasicInfo.VendorBriefName))
                {
                    //商家:{0}
                    vendorName = string.Format(ResouceManager.GetMessageString("RMA.Request", "SellerTypeFormat"), merchantInfo.VendorBasicInfo.VendorBriefName);
                }
            }
            if (request.InvoiceType.HasValue && request.StockType.HasValue && request.ShippingType.HasValue)
            {
                if (request.InvoiceType == InvoiceType.SELF && request.StockType == BizEntity.Invoice.StockType.SELF && request.ShippingType == BizEntity.Invoice.DeliveryType.SELF)
                {
                    //商家:{0}
                    vendorName = string.Format(ResouceManager.GetMessageString("RMA.Request", "SellerTypeFormat"), ResouceManager.GetMessageString("RMA.Request", "SellerType_Self"));
                }
            }
            return(businessType + vendorName);
        }
Ejemplo n.º 28
0
        public virtual RMARequestInfo Refused(int sysNo)
        {
            RMARequestInfo request = LoadBySysNo(sysNo);

            request.VerifyAuditRefuesed(request);

            request.Status    = RMARequestStatus.AuditRefuesed;
            request.Registers = registerProcessor.LoadByRequestSysNo(request.SysNo.Value);

            bool result = UpdateWithRegisters(request);

            if (result)
            {
                ExternalDomainBroker.CreateOperationLog("RMA_Request_Refused", BizLogType.RMA_Request_Refused, request.SysNo.Value, request.CompanyCode);
            }
            return(request);
        }
Ejemplo n.º 29
0
        /// <summary>
        /// 关闭单件
        /// </summary>
        /// <param name="register"></param>
        /// <returns></returns>
        public virtual RMARegisterInfo Close(int sysNo)
        {
            RMARegisterInfo original = LoadBySysNo(sysNo);

            original.VerifyClose(original);

            original.BasicInfo.Status = RMARequestStatus.Complete;

            TransactionOptions options = new TransactionOptions
            {
                IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted,
                Timeout        = TransactionManager.DefaultTimeout
            };

            //using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options))
            {
                //先关闭单件
                registerDA.Close(original);

                RMARequestInfo request = ObjectFactory <RequestProcessor> .Instance.LoadByRegisterSysNo(sysNo);

                request.Registers = LoadByRequestSysNo(request.SysNo.Value);
                //判断所有单件是否都已关闭
                bool allClosed = true;
                request.Registers.ForEach(reg =>
                {
                    if (reg.BasicInfo.Status == RMARequestStatus.Handling)
                    {
                        allClosed = false;
                    }
                });
                //关闭申请单
                if (allClosed && request.Status != RMARequestStatus.Complete)
                {
                    request.Status = RMARequestStatus.Complete;

                    ObjectFactory <RequestProcessor> .Instance.UpdateWithoutRegisters(request);
                }

                //scope.Complete();
            }

            ExternalDomainBroker.CreateOperationLog("RMA_Register_Close", BizLogType.RMA_Register_Close, sysNo, original.CompanyCode);

            return(LoadForEditBySysNo(sysNo));
        }
Ejemplo n.º 30
0
        public static void Update(RMARequestInfo request)
        {
            DataCommand command = DataCommandManager.GetDataCommand("UpdateRMARequest");

            command.SetParameterValue("@SysNo", request.SysNo);
            command.SetParameterValue("@RecvTime", request.RecvTime);
            command.SetParameterValue("@RecvUserSysNo", request.RecvUserSysNo);
            command.SetParameterValue("@RecvUserName", request.RecvUserName);
            command.SetParameterValue("@Status", request.Status);
            command.SetParameterValue("@ReceiveWarehouse", request.ReceiveWarehouse);
            command.SetParameterValue("@ServiceCode", request.ServiceCode);
            command.SetParameterValue("@AuditUserSysNo", request.AuditUserSysNo);
            command.SetParameterValue("@AuditUserName", request.AuditUserName);
            command.SetParameterValue("@AuditTime", request.AuditTime);

            command.ExecuteNonQuery();
        }