Example #1
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);
             }
                 );
         }
     }
 }
Example #2
0
 public static RMARequestInfo LoadWithRequestSysNo(int rmaRequestSysNo, int sellerSysNo)
 {
     if (rmaRequestSysNo > 0 && sellerSysNo > 0)
     {
         RMARequestInfo info = RMARequestDA.LoadWithRequestSysNo(rmaRequestSysNo, sellerSysNo);
         return(info);
     }
     return(null);
 }
Example #3
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);
                }
            }
        }
Example #4
0
        /// <summary>
        /// 退款
        /// </summary>
        /// <param name="rmaRequestSysNo">退换货申请单编号</param>
        /// <param name="refundInfo">退款信息</param>
        /// <param name="userSysNo">操作人用户</param>
        /// <returns></returns>
        public static RMARequestInfo Refund(int rmaRequestSysNo, RMARefundInfo refundInfo, LoginUser operateUser)
        {
            RMARequestInfo requestInfo = LoadWithRequestSysNo(rmaRequestSysNo, operateUser.SellerSysNo);

            if (requestInfo == null)
            {
                throw new BusinessException(L("未找到编号为【{0}】的退换货申请单", rmaRequestSysNo));
            }
            if (requestInfo.Status != RMARequestStatus.Handling)
            {
                throw new BusinessException(L("不是“处理中”的申请单不能退款"));
            }
            if (refundInfo == null || !refundInfo.RefundPayType.HasValue)
            {
                throw new ArgumentException(L("退款信息为空"));
            }

            requestInfo.Registers = requestInfo.Registers.Where(g => g.RequestType == RMARequestType.Return &&
                                                                g.Status == RMARequestStatus.Handling).ToList();
            if (requestInfo.Registers.Count <= 0)
            {
                throw new ArgumentException(L("没有“待处理”的退货商品"));
            }

            refundInfo.SOSysNo       = requestInfo.SOSysNo;
            refundInfo.CustomerSysNo = requestInfo.CustomerSysNo;
            //计算退款金额
            CalcRefundAmount(refundInfo, requestInfo);

            using (ITransaction trans = TransactionManager.Create())
            {
                //创建退款单
                RMARefundService.Create(refundInfo, operateUser);
                //设置单件的退款状态为退款中
                foreach (var registerInfo in requestInfo.Registers)
                {
                    registerInfo.RefundStatus = RMARefundStatus.WaitingAudit;
                    RMARequestDA.UpdateRegisterStatus(registerInfo);
                }

                trans.Complete();
            }

            return(requestInfo);
        }
Example #5
0
        /// <summary>
        /// 换货
        /// </summary>
        /// <param name="rmaRequestSysNo"></param>
        /// <param name="userSysNo"></param>
        /// <returns></returns>
        public static RMARequestInfo Revert(int rmaRequestSysNo, LoginUser operateUser)
        {
            RMARequestInfo request = LoadWithRequestSysNo(rmaRequestSysNo, operateUser.SellerSysNo);

            if (request == null)
            {
                throw new BusinessException(L("未找到编号为【{0}】的退换货申请单", rmaRequestSysNo));
            }
            if (request.Status != RMARequestStatus.Handling)
            {
                throw new BusinessException(L("不是“处理中”的申请单不能退货"));
            }

            var rmaRevertRegister = request.Registers.Where(g => g.RequestType == RMARequestType.Exchange &&
                                                            g.Status == RMARequestStatus.Handling);

            if (rmaRevertRegister.Count() <= 0)
            {
                throw new BusinessException(L("没有“待处理”的换货商品"));
            }

            using (ITransaction trans = TransactionManager.Create())
            {
                //如果所有的单件都处理完毕,自动关闭退款申请
                if (request.Registers.Count(g => g.RequestType == RMARequestType.Exchange)
                    == request.Registers.Count(g => g.Status == RMARequestStatus.Handling))
                {
                    request.Status = RMARequestStatus.Complete;
                    RMARequestDA.Update(request);
                }
                //关闭单件, 更新单件发还状态为已发还
                foreach (var registerInfo in rmaRevertRegister)
                {
                    registerInfo.RevertStatus = RMARevertStatus.Reverted;
                    registerInfo.Status       = RMARequestStatus.Complete;
                    RMARequestDA.UpdateRegisterStatus(registerInfo);
                }

                trans.Complete();
            }

            return(request);
        }
Example #6
0
        /// <summary>
        /// 审核通过退换货申请单
        /// </summary>
        /// <param name="rmaRequestSysNo">退换货申请单编号</param>
        /// <param name="userSysNo">操作人用户</param>
        /// <returns></returns>
        public static RMARequestInfo Valid(int rmaRequestSysNo, LoginUser operateUser)
        {
            string serviceCode = RMARequestDA.CreateServiceCode();

            if (string.IsNullOrEmpty(serviceCode) || serviceCode.Length != 6)
            {
                throw new ArgumentNullException("生成服务编号时发生异常");
            }
            RMARequestInfo request = LoadWithRequestSysNo(rmaRequestSysNo, operateUser.SellerSysNo);

            if (request == null)
            {
                throw new BusinessException(L("未找到编号为【{0}】的退换货申请单", rmaRequestSysNo));
            }
            if (request.Status != RMARequestStatus.WaitingAudit)
            {
                throw new BusinessException(L("申请单不是“待审核”,不能审核通过"));
            }

            request.ServiceCode = serviceCode;
            //审核通过后状态变成“待处理”,这个时候可以进行收货操作
            request.Status         = RMARequestStatus.Origin;
            request.AuditTime      = DateTime.Now;
            request.AuditUserSysNo = operateUser.UserSysNo;
            request.AuditUserName  = operateUser.UserDisplayName;

            using (ITransaction trans = TransactionManager.Create())
            {
                UpdateWithRegisters(request);
                trans.Complete();
            }

            if (request.IsReceiveMsg == true && StringUtility.IsPhoneNo(request.Phone))
            {
                string message = L("您好!您的售后单号{0}已审核通过,服务编号:{1},请在快递面单上备注清楚您的售后单号及编号,谢谢您的配合!", request.RequestID, request.ServiceCode);
                SMSService.SendSMS(request.Phone, message);
            }
            return(request);
        }
Example #7
0
 public static QueryResult <RMARequestQueryResultInfo> RMARequestOrderQuery(RMARequestQueryFilter filter)
 {
     return(RMARequestDA.QueryList(filter));
 }