예제 #1
0
        /// <summary>
        /// 根据SysNo获取虚库申请单信息
        /// </summary>
        /// <param name="requestSysNo"></param>
        /// <returns></returns>
        public virtual VirtualRequestInfo GetVirtualRequestInfoBySysNo(int requestSysNo)
        {
            VirtualRequestInfo virtualRequest = virtualRequestDA.GetVirtualRequestInfoBySysNo(requestSysNo);

            if (virtualRequest != null && virtualRequest.VirtualProduct != null && virtualRequest.VirtualProduct.SysNo > 0)
            {
                virtualRequest.VirtualProduct = ExternalDomainBroker.GetProductInfoByProductSysNo(virtualRequest.VirtualProduct.SysNo);
            }

            return(virtualRequest);
        }
예제 #2
0
        public bool Verify(VirtualRequestInfo entity)
        {
            var command = DataCommandManager.GetDataCommand("VerifyVirtualRequest");

            command.SetParameterValue("@SysNo", entity.SysNo);
            command.SetParameterValue("@AuditNote", entity.AuditNote);
            command.SetParameterValue("@AuditTime", DateTime.Now);
            command.SetParameterValueAsCurrentUserSysNo("@AuditUserSysNo");
            command.SetParameterValue("@Status", (int)entity.RequestStatus);
            command.SetParameterValue("@CompanyCode", "8601");//[Mark][Alan.X.Luo 硬编码]

            return(command.ExecuteNonQuery() > 0);
        }
예제 #3
0
        /// <summary>
        /// 审核 - 拒绝
        /// </summary>
        public virtual void RejectRequest(VirtualRequestInfo info)
        {
            VirtualRequestInfo oldInfo = ObjectFactory <IVirtualRequestDA> .Instance.GetVirtualRequestInfoBySysNo(info.SysNo.Value);

            if (oldInfo.RequestStatus != VirtualRequestStatus.Origin)
            {
                throw new BizException("该单据不是原始状态的单据,不能进行审核操作!");
            }
            oldInfo.AuditNote  = info.AuditNote;
            info.RequestStatus = VirtualRequestStatus.Rejected;
            using (TransactionScope scope = new TransactionScope())
            {
                ObjectFactory <IVirtualRequestDA> .Instance.CheckVirtualQty(oldInfo.VirtualProduct.SysNo, oldInfo.VirtualQuantity, oldInfo.Stock.SysNo.Value, oldInfo.CompanyCode);

                ObjectFactory <IVirtualRequestDA> .Instance.UpdateProductExtension((int)oldInfo.VirtualType, oldInfo.VirtualProduct.SysNo, info.CompanyCode);

                bool Verify = ObjectFactory <IVirtualRequestDA> .Instance.Verify(info);

                #region (2011年6月20日新需求)审核通过后关闭之前的虚库申请单据
                if (Verify && info.RequestStatus == VirtualRequestStatus.Approved)
                {
                    List <VirtualRequestInfo> applySysNumberList = ObjectFactory <IVirtualRequestDA> .Instance.ExistNeedCloseRequestByStockAndItem(oldInfo.Stock.SysNo.Value, oldInfo.VirtualProduct.SysNo, oldInfo.CompanyCode);

                    if (applySysNumberList != null && applySysNumberList.Count > 0)
                    {
                        int closeResult        = 0;
                        int IsAdjustVirtualQty = 1;//是否调整库存
                        foreach (VirtualRequestInfo item in applySysNumberList)
                        {
                            if (item.SysNo == info.SysNo)//除过前申请单外,其他申请单据 全部进行关闭。
                            {
                                continue;
                            }
                            VirtualRequestStatus currentStatus = item.RequestStatus;

                            if (currentStatus == VirtualRequestStatus.Running || currentStatus == VirtualRequestStatus.Closing)
                            {
                                IsAdjustVirtualQty = 1;//运行中或关闭中的单据需要调整库存
                            }
                            else if (currentStatus == VirtualRequestStatus.Origin || currentStatus == VirtualRequestStatus.Approved)
                            {
                                IsAdjustVirtualQty = 0;//待审核或已审核单据不需要调整库存
                            }
                            closeResult = ObjectFactory <IVirtualRequestDA> .Instance.CloseRequest(item.SysNo.Value, currentStatus, IsAdjustVirtualQty, info.CompanyCode);
                        }
                    }
                }
                #endregion
                scope.Complete();
            }
        }
예제 #4
0
        private void PreCheckOriginVirtualRequestInfo(VirtualRequestInfo entity, InventoryAdjustSourceAction actionType)
        {
            if (entity == null)
            {
                throw new BizException("WarningMessage.VirtualRequestd_cannotFindOriginalVirtualRequestValue");
            }

            //借货单当前状态检查
            if ((actionType == InventoryAdjustSourceAction.Update || actionType == InventoryAdjustSourceAction.Audit) &&
                entity.RequestStatus != VirtualRequestStatus.Origin)
            {
                throw new BizException("WarningMessage.VirtualRequest_CanNotVerifyCode, WarningMessage.VirtualRequest_CanNotVerifyValue");
            }
        }
예제 #5
0
        public int Create(VirtualRequestInfo entity)
        {
            var command = DataCommandManager.GetDataCommand("CreateVirtualInentory");

            command.SetParameterValue("@ProductSysNo", entity.VirtualProduct.SysNo);
            command.SetParameterValue("@VirtualQty", entity.VirtualQuantity);
            command.SetParameterValue("@CreateTime", entity.CreateDate);
            command.SetParameterValue("@CreateUserSysNo", entity.CreateUser.SysNo);
            command.SetParameterValue("@Note", entity.RequestNote);
            command.SetParameterValue("@StockSysNo", entity.Stock.SysNo);
            command.SetParameterValue("@VirtualType", entity.VirtualType);
            command.SetParameterValue("@CompanyCode", "8601");//[Mark][Alan.X.Luo 硬编码]

            return(Convert.ToInt32(command.ExecuteScalar <decimal>()));
        }
예제 #6
0
 private VirtualRequestVM VirtualRequestInfoToVM(VirtualRequestInfo requestInfo)
 {
     return(requestInfo.Convert <VirtualRequestInfo, VirtualRequestVM>((info, vm) =>
     {
         if (info.Stock != null)
         {
             vm.StockName = info.Stock.StockName;
             vm.StockSysNo = info.Stock.SysNo;
         }
         if (info.VirtualProduct != null)
         {
             vm.ProductID = info.VirtualProduct.ProductID;
             vm.ProductName = info.VirtualProduct.ProductName;
             vm.ProductSysNo = info.VirtualProduct.SysNo;
         }
     }));
 }
예제 #7
0
        public int Apply(VirtualRequestInfo entity)
        {
            var command = DataCommandManager.GetDataCommand("InsertVirtualRequest");

            command.SetParameterValue("@ProductSysNo", entity.VirtualProduct.SysNo);
            command.SetParameterValue("@StockSysNo", entity.Stock.SysNo);
            command.SetParameterValue("@VirtualQty", entity.VirtualQuantity);
            command.SetParameterValue("@CreateTime", entity.CreateDate);
            command.SetParameterValue("@CreateUserSysNo", entity.CreateUser.SysNo);
            command.SetParameterValue("@PMRequestNote", entity.RequestNote);
            command.SetParameterValue("@Status", (int)entity.RequestStatus);
            command.SetParameterValue("@VirtualType", entity.VirtualType);
            command.SetParameterValue("@StartTime", entity.StartDate);
            command.SetParameterValue("@EndTime", entity.EndDate);
            command.SetParameterValue("@CompanyCode", "8601");//[Mark][Alan.X.Luo 硬编码]
            entity.SysNo = command.ExecuteScalar <int>();
            return(entity.SysNo.Value);
        }
예제 #8
0
 public virtual void RejectVirtualRequest(VirtualRequestInfo info)
 {
     VirtualRequestProcessor.RejectRequest(info);
 }
예제 #9
0
 public virtual void ApproveVirtualRequest(VirtualRequestInfo info)
 {
     VirtualRequestProcessor.ApproveRequest(info);
 }
예제 #10
0
 /// <summary>
 /// 更新虚库申请单
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 public VirtualRequestInfo UpdateVirtualRequestStatus(VirtualRequestInfo entityToUpdate)
 {
     return(null);
 }
예제 #11
0
 /// <summary>
 /// 创建虚库申请单
 /// </summary>
 /// <param name="entity"></param>
 /// <returns></returns>
 public VirtualRequestInfo CreateVirtualRequest(VirtualRequestInfo entityToCreate)
 {
     return(null);
 }
예제 #12
0
 public void RejectVirtualRequest(VirtualRequestInfo info)
 {
     ObjectFactory <VirtualRequestAppService> .Instance.RejectVirtualRequest(info);
 }
예제 #13
0
        public virtual void AuditRequest(VirtualRequestInfo entityToUpdate)
        {
            VirtualRequestInfo originEntity = GetVirtualRequestInfoBySysNo((int)entityToUpdate.SysNo);

            PreCheckOriginVirtualRequestInfo(originEntity, InventoryAdjustSourceAction.Audit);
        }
예제 #14
0
 private void PreCheckVirtualRequestInfoForApply(VirtualRequestInfo entityToUpdate)
 {
 }
예제 #15
0
 private void PreCheckVirtualRequestInfoForCreate(VirtualRequestInfo entityToCreate)
 {
 }
예제 #16
0
        /// <summary>
        /// 审核  - 同意
        /// </summary>
        public virtual void ApproveRequest(VirtualRequestInfo info)
        {
            VirtualRequestInfo oldInfo = ObjectFactory <IVirtualRequestDA> .Instance.GetVirtualRequestInfoBySysNo(info.SysNo.Value);

            if (oldInfo.RequestStatus != VirtualRequestStatus.Origin)
            {
                throw new BizException("该单据不是原始状态的单据,不能进行审核操作!");
            }

            //if (oldInfo.CreateUser.SysNo == ServiceContext.Current.UserSysNo)
            //{
            //    throw new BizException("创建人和审核人不能相同");
            //}

            oldInfo.AuditNote  = info.AuditNote;
            info.RequestStatus = VirtualRequestStatus.Approved;
            using (TransactionScope scope = new TransactionScope())
            {
                int checkVirtualResult = ObjectFactory <IVirtualRequestDA> .Instance.CheckVirtualQty(oldInfo.VirtualProduct.SysNo, oldInfo.VirtualQuantity, oldInfo.Stock.SysNo.Value, oldInfo.CompanyCode);

                switch (checkVirtualResult)
                {
                case 1:
                    throw new BizException("审核失败!调整可用库存后不能使可卖数量变为负数,可卖数量=可用库存+虚拟库存+代销库存.");

                case 2:
                    throw new BizException("审核失败!该类商品中的混合型商品(即有可用库存又有虚拟库存)种类在该类所有商品种类中的比例已经超过限制.");

                case 3:
                    throw new BizException("审核失败!该类商品中的纯虚拟库存商品种类数量已经超过限制.");

                default:
                    break;
                }

                ObjectFactory <IVirtualRequestDA> .Instance.UpdateProductExtension((int)oldInfo.VirtualType, oldInfo.VirtualProduct.SysNo, info.CompanyCode);

                bool Verify = ObjectFactory <IVirtualRequestDA> .Instance.Verify(info);

                #region (2011年6月20日新需求)审核通过后关闭之前的虚库申请单据
                if (Verify && info.RequestStatus == VirtualRequestStatus.Approved)
                {
                    List <VirtualRequestInfo> applySysNumberList = ObjectFactory <IVirtualRequestDA> .Instance.ExistNeedCloseRequestByStockAndItem(oldInfo.Stock.SysNo.Value, oldInfo.VirtualProduct.SysNo, oldInfo.CompanyCode);

                    if (applySysNumberList != null && applySysNumberList.Count > 0)
                    {
                        int closeResult        = 0;
                        int IsAdjustVirtualQty = 1;//是否调整库存
                        foreach (VirtualRequestInfo item in applySysNumberList)
                        {
                            if (item.SysNo == info.SysNo)//除过前申请单外,其他申请单据 全部进行关闭。
                            {
                                continue;
                            }
                            VirtualRequestStatus currentStatus = item.RequestStatus;

                            if (currentStatus == VirtualRequestStatus.Running || currentStatus == VirtualRequestStatus.Closing)
                            {
                                IsAdjustVirtualQty = 1;//运行中或关闭中的单据需要调整库存
                            }
                            else if (currentStatus == VirtualRequestStatus.Origin || currentStatus == VirtualRequestStatus.Approved)
                            {
                                IsAdjustVirtualQty = 0;//待审核或已审核单据不需要调整库存
                            }
                            closeResult = ObjectFactory <IVirtualRequestDA> .Instance.CloseRequest(item.SysNo.Value, currentStatus, IsAdjustVirtualQty, info.CompanyCode);
                        }
                    }
                }
                #endregion
                scope.Complete();
            }
        }