/// <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); }
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); }
/// <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(); } }
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"); } }
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>())); }
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; } })); }
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); }
public virtual void RejectVirtualRequest(VirtualRequestInfo info) { VirtualRequestProcessor.RejectRequest(info); }
public virtual void ApproveVirtualRequest(VirtualRequestInfo info) { VirtualRequestProcessor.ApproveRequest(info); }
/// <summary> /// 更新虚库申请单 /// </summary> /// <param name="entity"></param> /// <returns></returns> public VirtualRequestInfo UpdateVirtualRequestStatus(VirtualRequestInfo entityToUpdate) { return(null); }
/// <summary> /// 创建虚库申请单 /// </summary> /// <param name="entity"></param> /// <returns></returns> public VirtualRequestInfo CreateVirtualRequest(VirtualRequestInfo entityToCreate) { return(null); }
public void RejectVirtualRequest(VirtualRequestInfo info) { ObjectFactory <VirtualRequestAppService> .Instance.RejectVirtualRequest(info); }
public virtual void AuditRequest(VirtualRequestInfo entityToUpdate) { VirtualRequestInfo originEntity = GetVirtualRequestInfoBySysNo((int)entityToUpdate.SysNo); PreCheckOriginVirtualRequestInfo(originEntity, InventoryAdjustSourceAction.Audit); }
private void PreCheckVirtualRequestInfoForApply(VirtualRequestInfo entityToUpdate) { }
private void PreCheckVirtualRequestInfoForCreate(VirtualRequestInfo entityToCreate) { }
/// <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(); } }