Ejemplo n.º 1
0
        /// <summary>
        /// 待发货
        /// </summary>
        /// <param name="register"></param>
        /// <returns></returns>
        public virtual RMARegisterInfo SetWaitingRevert(RMARegisterInfo register)
        {
            register.VerifyWaitingRevert();

            RMARegisterInfo original = LoadBySysNo(register.RevertInfo.SysNo.Value);

            original.RevertInfo.NewProductStatus     = register.RevertInfo.NewProductStatus;
            original.RevertInfo.SetWaitingRevertTime = DateTime.Now;
            // 非换货时 RevertStockSysNo 留空
            original.RevertInfo.RevertStockSysNo = register.RevertInfo.NewProductStatus == RMANewProductStatus.Origin
                ? null
                : register.RevertInfo.RevertStockSysNo;
            // 非换货或者调新品时,直接将原始 ProductSysNo 设置到 RevertProductSysNo
            original.RevertInfo.RevertProductSysNo = (register.RevertInfo.NewProductStatus == RMANewProductStatus.Origin || register.RevertInfo.NewProductStatus == RMANewProductStatus.NewProduct)
                ? register.BasicInfo.ProductSysNo
                : register.RevertInfo.RevertProductSysNo;
            // 非当前 Case 产品需要进行审批
            original.RevertInfo.RevertStatus = register.RevertInfo.NewProductStatus == RMANewProductStatus.OtherProduct
                ? RMARevertStatus.WaitingAudit
                : RMARevertStatus.WaitingRevert;
            //同步到ERP
            SyncERPAction(original);

            TransactionOptions options = new TransactionOptions();

            options.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
            options.Timeout        = TimeSpan.FromMinutes(2);
            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, options))
            {
                registerDA.UpdateRevertStatus(original);

                ExternalDomainBroker.CreateOperationLog("RMA_Register_Revert", BizLogType.RMA_Register_Revert, register.SysNo.Value, original.CompanyCode);

                ts.Complete();
            }

            return(LoadBySysNo(register.SysNo.Value));
        }