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); } ); } } }
public static RMARequestInfo LoadWithRequestSysNo(int rmaRequestSysNo, int sellerSysNo) { if (rmaRequestSysNo > 0 && sellerSysNo > 0) { RMARequestInfo info = RMARequestDA.LoadWithRequestSysNo(rmaRequestSysNo, sellerSysNo); return(info); } return(null); }
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); } } }
/// <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); }
/// <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); }
/// <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); }
public static QueryResult <RMARequestQueryResultInfo> RMARequestOrderQuery(RMARequestQueryFilter filter) { return(RMARequestDA.QueryList(filter)); }