/// <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(); } }
/// <summary> /// 验证奥硕是否支持上门取件 /// </summary> /// <param name="areaSysNo">申请地区编号</param> //void ValidOZZOFetchToHome(RMARequestInfo request) //{ // //根据行政区划判断是否可以上门取件,如不支持进行提示,且不能保存。 // int? areaSysNo = request.AreaSysNo; // bool isFetch = true; // var ozzoShipTypeAreasSysNo = new int[] { 21, 65, 370 }; // //获取不支持的地区的列表 // var unFetchAreaList = ObjectFactory<IBizInteract.ICommonBizInteract>.Instance.QueryShipAreaUnByAreaSysNo(ozzoShipTypeAreasSysNo, areaSysNo.Value); // // QueryModelProxy.CommonDataQueryProvider.QueryShipAreaUnByAreaSysNo(ozzoShipTypeAreasSysNo, areaSysNo.Value); // if (unFetchAreaList.Count > 0) // { // isFetch = false; // //判断逻辑为:如果有一种配送点可支持上门取件,那判断将终止 // foreach (int shipTypeAreaSysNo in ozzoShipTypeAreasSysNo) // { // //可配送的终止条件为配送点没有在不支持地区中配置 // if (unFetchAreaList.Count(p => p.ShipTypeSysNo == shipTypeAreaSysNo) == 0) // { // isFetch = true; // break; // } // } // } // //不支持抛出异常 // if (!isFetch) // { // throw new BizException("本地区不支持上门取件服务!"); // } //} /// <summary> /// 更新申请单(包括单件信息) /// </summary> /// <param name="request">申请单信息</param> public virtual void Update(RMARequestInfo request) { if (request == null) { throw new ArgumentNullException("request"); } if (!request.SysNo.HasValue) { throw new ArgumentNullException("request.SysNo"); } request.VerifyUpdate(LoadBySysNo(request.SysNo.Value)); if (request.ShipViaCode.Trim() == ozzShip) { //ValidOZZOFetchToHome(request); #region [时间限制] //if (!request.ETakeDate.HasValue) //{ // request.ETakeDate = request.CustomerSendTime; //} //else //{ // request.CustomerSendTime = request.ETakeDate; //} //DateTime minReceiveDate = DateTime.Now; //DateTime tmpDate = DateTime.Now; ////周一四点后 //if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Monday && request.CreateDate.Value.Hour >= 16) //{ // tmpDate = request.CreateDate.Value.AddDays(2); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周一下午四点之后至周二下午四点前申请,预约取货时间最早可选周三取件!"); // } //} ////周二四点前 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Tuesday && request.CreateDate.Value.Hour < 16) //{ // tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周一下午四点之后至周二下午四点前申请,预约取货时间最早可选周三取件!"); // } //} ////周二四点后 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Tuesday && request.CreateDate.Value.Hour >= 16) //{ // tmpDate = request.CreateDate.Value.AddDays(2); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周二下午四点后至周三下午四点前申请,预约取货时间最早可选周四取件!"); // } //} ////周三四点前 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Wednesday && request.CreateDate.Value.Hour < 16) //{ // tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周二下午四点后至周三下午四点前申请,预约取货时间最早可选周四取件!"); // } //} ////周三四点后 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Wednesday && request.CreateDate.Value.Hour >= 16) //{ // tmpDate = request.CreateDate.Value.AddDays(2); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周三下午四点后至周四下午四点前申请,预约取货时间最早可选周五取件!"); // } //} ////周四四点前Thursday //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Thursday && request.CreateDate.Value.Hour < 16) //{ // tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周三下午四点后至周四下午四点前申请,预约取货时间最早可选周五取件!"); // } //} ////周四四点后 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Thursday && request.CreateDate.Value.Hour >= 16) //{ // tmpDate = request.CreateDate.Value.AddDays(2); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周四下午四点后至周五下午四点前申请,预约取货时间最早可选周六取件!"); // } //} ////周五四点前 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Friday && request.CreateDate.Value.Hour < 16) //{ // tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周四下午四点后至周五下午四点前申请,预约取货时间最早可选周六取件!"); // } //} ////周五四点后 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Friday && request.CreateDate.Value.Hour >= 16) //{ // tmpDate = request.CreateDate.Value.AddDays(4); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!"); // } //} ////周六全天 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Saturday) //{ // tmpDate = request.CreateDate.Value.AddDays(3); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!"); // } //} ////周日全天 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Sunday) //{ // tmpDate = request.CreateDate.Value.AddDays(2); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!"); // } //} ////周一四点前 //else if (request.CreateDate.Value.DayOfWeek == DayOfWeek.Monday && request.CreateDate.Value.Hour < 16) //{ // tmpDate = request.CreateDate.Value.AddHours(25 - request.CreateDate.Value.Hour); // minReceiveDate = new DateTime(tmpDate.Year, tmpDate.Month, tmpDate.Day, 0, 0, 0); // if (request.CustomerSendTime.Value < minReceiveDate) // { // throw new BizException("周五下午四点之后至周一下午四点前申请,预约取货时间最早可选下周二取件!"); // } //} #endregion } if (request.CreateDate.Value.Year > request.CustomerSendTime.Value.Year || (request.CreateDate.Value.Year == request.CustomerSendTime.Value.Year && (request.CreateDate.Value.DayOfYear - request.CustomerSendTime.Value.DayOfYear) > 7)) { throw new BizException(ResouceManager.GetMessageString("RMA.Request", "OrderTimeNotPreviousWeek")); } request.Registers = registerProcessor.LoadByRequestSysNo(request.SysNo.Value); CustomerContactInfo customerContactInfo = GetCustomerContactInfo(request); TransactionOptions options = new TransactionOptions(); options.IsolationLevel = IsolationLevel.ReadCommitted; options.Timeout = TransactionManager.DefaultTimeout; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, options)) { customerContactDA.UpdateByRequestSysNo(customerContactInfo); bool?isWithin7Days = null; if (request.CustomerSendTime.HasValue) { isWithin7Days = IsWithin7Days(request.SOSysNo.Value, request.CustomerSendTime.Value); } request.Registers.ForEach(reg => { reg.BasicInfo.IsWithin7Days = isWithin7Days; }); UpdateWithRegisters(request); scope.Complete(); } ExternalDomainBroker.CreateOperationLog("RMA_Request_Update", BizLogType.RMA_Request_Update, request.SysNo.Value, request.CompanyCode); }