コード例 #1
0
ファイル: RequestProcessor.cs プロジェクト: sanlonezhang/ql
        /// <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();
            }
        }
コード例 #2
0
ファイル: RequestProcessor.cs プロジェクト: sanlonezhang/ql
        /// <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);
        }