private void FillBillPropertys(Kingdee.BOS.Context ctx, IBillView billView, DynamicObject obj) { IDynamicFormViewService dynamicFormView = billView as IDynamicFormViewService; dynamicFormView.UpdateValue("FId", 0, dataType); dynamicFormView.UpdateValue("F_PAEZ_Number", 0, Convert.ToString(obj["Id"]));//用于关联辅助资料表记录 dynamicFormView.UpdateValue("FNumber", 0, Convert.ToString(obj["Number"])); dynamicFormView.UpdateValue("FDataValue", 0, Convert.ToString(obj["Name"])); }
//创建目标数据对象 private IBillView CreateBillView(Kingdee.BOS.Context ctx) { FormMetadata meta = MetaDataServiceHelper.Load(ctx, "BOS_ASSISTANTDATA_DETAIL") as FormMetadata; Form form = meta.BusinessInfo.GetForm(); Type type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web"); var billView = (IDynamicFormViewService)Activator.CreateInstance(type); BillOpenParameter openParam = CreateOpenParameter(ctx, meta); var provider = form.GetFormServiceProvider(); billView.Initialize(openParam, provider); return(billView as IBillView); }
private BillOpenParameter CreateOpenParameter(Kingdee.BOS.Context ctx, FormMetadata meta) { Form form = meta.BusinessInfo.GetForm(); BillOpenParameter openParam = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id); openParam.Context = ctx; openParam.ServiceName = form.FormServiceName; openParam.PageId = Guid.NewGuid().ToString(); openParam.FormMetaData = meta; openParam.Status = OperationStatus.ADDNEW; openParam.PkValue = null; openParam.CreateFrom = CreateFrom.Default; openParam.GroupId = ""; openParam.ParentId = 0; openParam.DefaultBillTypeId = ""; openParam.DefaultBusinessFlowId = ""; openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false); List <AbstractDynamicFormPlugIn> plugs = form.CreateFormPlugIns(); openParam.SetCustomParameter(FormConst.PlugIns, plugs); PreOpenFormEventArgs args = new PreOpenFormEventArgs(ctx, openParam); return(openParam); }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); if (!ValidateDailyWeightSum(dataEntity)) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "汇报人日常工作的权重和必须等于100!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } /* * if (!ValidateRespWeightSum(dataEntity)) * { * ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( * string.Empty, * FID, * dataEntity.DataEntityIndex, * dataEntity.RowIndex, * FID, * "汇报人负责工作的权重和必须等于100!", * string.Empty); * validateContext.AddError(null, ValidationErrorInfo); * } */ //获取当前流程节点 //string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); //List<ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); //var WFNode = routeCollection[routeCollection.Count - 1]; //if (WFNode.ActivityId == Director_NodeID) //{ //} var entityL = dataEntity["FEntityL"] as DynamicObjectCollection; if (entityL.Count > 0) { // 上月计划表体存在时,发现有一行评分不为0时,则允许审核通过 var target = entityL .Where(item => item["FLSrcID"].ToString() != "0" && item["FLDirectorGrade"].ToString() != "0") .ToArray(); if (target.Length <= 0) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请对汇报人上月工作进行评分!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } if (!ValidatePreSum(dataEntity)) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "汇报人上月工作总评分不能超过105!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); List <ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); var WFNode = routeCollection[routeCollection.Count - 1]; if (WFNode.ActivityId == AllocProcessor_NodeID) { var FExecutor = dataEntity["FExecutor"] as DynamicObjectCollection; if (FExecutor.Count <= 0) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请先分配执行人!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } else { } } else if (WFNode.ActivityId == ProcessorInputResult_NodeID) { if (dataEntity["FResult"].ToString().IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请填写执行结果!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } string billFormKey = dataEntities[0].DataEntity["FFormId"].ToString(); string billClass = ""; switch (billFormKey) { case "IV_PURCHASEOC": billClass = "AP"; //采购普通发票 break; case "IV_PURCHASEIC": billClass = "AP"; //采购增值税专用发票 break; case "IV_SALESOC": billClass = "AR"; //销售普通发票 break; case "IV_SALESIC": billClass = "AR"; //销售增值税专用发票 break; default: break; } foreach (var dataEntity in dataEntities) { int orgId = Convert.ToInt32(dataEntity["SETTLEORGID_Id"]); //结算组织 DateTime billDate = Convert.ToDateTime(dataEntity["Date"]); //业务日期 string sql = string.Format(@"SELECT FORGID, FSTARTDATE, FENDDATE FROM T_AP_CLOSEPROFILE T1 WHERE ((NOT EXISTS (SELECT 1 FROM T_AP_CLOSEPROFILE T2 WHERE (((T2.FID > T1.FID) AND T1.FORGID = T2.FORGID) AND T1.FCATEGORY = T2.FCATEGORY)) AND FCATEGORY = '{0}') AND FOrgID ={1} )", billClass, orgId); DynamicObjectCollection returnData = DBUtils.ExecuteDynamicObject(ctx, sql); //结帐时间查询 if (returnData == null || returnData.Count == 0) { continue; } DateTime closeDate = Convert.ToDateTime(returnData[0]["FENDDATE"]);//结帐日期 if (billDate <= closeDate) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(dataEntity.DataEntity["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN- CloserPofile-002", string.Format("反审核失败:当前单据已结帐,不能进行反审核操作!"), "")); continue; } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } if (dataEntities != null && dataEntities.Length > 0) { DynamicObjectCollection dataEntry = dataEntities[0].DataEntity["ReqEntry"] as DynamicObjectCollection; foreach (DynamicObject item in dataEntry) { DynamicObject materil = item["MaterialId"] as DynamicObject; if (materil == null) { continue; } if (Convert.ToBoolean(materil["FIsMeasure"]) && Convert.ToDecimal(item["FJNREQTY"]) == 0) { validateContext.AddError(DataEntities[0].DataEntity, new ValidationErrorInfo ( "", DataEntities[0].DataEntity["Id"].ToString(), dataEntities[0].DataEntityIndex, 0, "001", string.Format("第{0}行为双计量物料时,需求酶活为必录字段", dataEntry.IndexOf(item) + 1), "保存提示" )); } //辅助属性“具体描述名称”是否为空判断 DynamicObjectCollection auxMaterial = materil["MaterialAuxPty"] as DynamicObjectCollection;//物料辅助信息 foreach (DynamicObject item1 in auxMaterial) { string key = item1["AuxPropertyId_Id"].ToString(); if (key == "100002") { bool isUse = Convert.ToBoolean(item1["IsEnable1"]); if (isUse) { key = "F" + key; DynamicObject auxData = item["AuxpropId"] as DynamicObject;//辅助信息 if (auxData != null) { if (auxData[key] == null || string.IsNullOrWhiteSpace(auxData[key].ToString())) { validateContext.AddError(DataEntities[0].DataEntity, new ValidationErrorInfo ( "", DataEntities[0].DataEntity["Id"].ToString(), dataEntities[0].DataEntityIndex, 0, "001", string.Format("第{0}行为物料,启用了辅助属性'具体描述名称',该字段必填!", dataEntry.IndexOf(item) + 1), "保存提示" )); } } } } } } } }
/// <summary> /// 初始化校验器 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Initialize(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { base.Initialize(dataEntities, validateContext, ctx); }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); List <ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); var WFNode = routeCollection[routeCollection.Count - 1]; if (WFNode.ActivityId == Seal_NodeID) { string realOffTime = dataEntity["FRealOffTime"] == null ? "" : dataEntity["FRealOffTime"].ToString(); string realBackTime = dataEntity["FRealBackTime"] == null ? "" : dataEntity["FRealBackTime"].ToString(); if (realOffTime.IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请填写印章实际带离时间!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } else if (realBackTime.IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请填写印章实际归还时间!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } var enProp = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryName; foreach (var dataEntity in dataEntities) { DynamicObjectCollection rows = dataEntity[enProp] as DynamicObjectCollection; DateTime rkDate = Convert.ToDateTime(dataEntity["Date"]);//入库日期 bool isSave = true; string billNo = ""; foreach (DynamicObject item in rows) { DynamicObjectCollection linkData = item[linkKey] as DynamicObjectCollection; if (linkData == null || linkData.Count == 0) { continue; } if (linkData[0]["sTableName"].ToString() != "T_PUR_ReceiveEntry") { continue; //跳过非收料单下推 } billNo = dateValitor(rkDate, linkData); if (billNo.Length > 0) { isSave = false; break; } } if (!isSave) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(((DynamicObject)(dataEntity.DataEntity))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:单据由编号为:\"{0}\"采购入库单关联生存,入库日期必须大于或等于收料日期!", billNo), "金蝶提示")); continue; } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); List <ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); var WFNode = routeCollection[routeCollection.Count - 1]; if (WFNode.ActivityId == OfferBaseprice_NodeID) { var entityBPR = dataEntity["ora_CRM_SaleOfferBPR"] as DynamicObjectCollection; var entity = dataEntity["FEntity"] as DynamicObjectCollection; List <string> guids = new List <string>(); foreach (var row in entity) { if (row["FIS2W"].ToString() == "0" || row["FIS2W"].ToString() == "") { guids.Add(row["FGUID"].ToString()); } } string FBGUID = ""; foreach (var row in entityBPR) { FBGUID = row["FBGUID"].ToString(); if (guids.Contains(FBGUID)) { guids.Remove(FBGUID); } } if (guids.Count > 0) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "您还存在未完成的报价,请报价完成后再尝试提交!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } else if (WFNode.ActivityId == SalemanOffer_NodeID) { bool IsNull = false; var entity = dataEntity["ora_CRM_SaleOfferBPR"] as DynamicObjectCollection; //string FBMtlGroup = ""; string FBMtlItem = "0"; double FBRptPrice = -1; foreach (var row in entity) { FBMtlItem = row["FBMtlItem"] == null ? "0" : (row["FBMtlItem"] as DynamicObject)["Name"].ToString(); if (FBMtlItem == "本体") { FBRptPrice = Double.Parse(row["FBRptPrice"].ToString()); if (FBRptPrice <= 0) { IsNull = true; } } } if (IsNull) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请对产品本体进行报价!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } else if (WFNode.ActivityId == BidAlloc_NodeID) { string FBidMaker = dataEntity["FBidMaker"] == null ? "0" : (dataEntity["FBidMaker"] as DynamicObject)["Id"].ToString(); if (FBidMaker == "0") { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请分配标书制作员!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); List <ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); var WFNode = routeCollection[routeCollection.Count - 1]; if (WFNode.ActivityId == GM_NodeID) //选择执行人 { var FExecutor = dataEntity["FExecutor"] as DynamicObjectCollection; if (FExecutor.Count <= 0) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请分配执行人!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } else if (WFNode.ActivityId == AP_NodeID)//申请人评价 { string FNotSatisfied = dataEntity["FNotSatisfied"].ToString(); string FSatisfied = dataEntity["FSatisfied"].ToString(); if ((FNotSatisfied == "False" && FSatisfied == "False") || (FNotSatisfied == "True" && FSatisfied == "True")) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请对服务进行评价!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); List <ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); var WFNode = routeCollection[routeCollection.Count - 1]; if (WFNode.ActivityId == AllocRoom_NodeID) { var room = dataEntity["FBALCONYNUM2"]; if (room == null) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请分配包厢号!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } else if (WFNode.ActivityId == RealAmount_NodeID) { float FRealAmount = float.Parse(dataEntity["FRealAmount"].ToString()); if (FRealAmount <= 0) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请确认实际金额!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); List <ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); var WFNode = routeCollection[routeCollection.Count - 1]; if (WFNode.ActivityId == AllocProcessor_NodeID) { string FExecutor = dataEntity["FQstDoer"] == null ? "0" : (dataEntity["FQstDoer"] as DynamicObject).ToString(); if (FExecutor == "0") { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请先分配执行人!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } else if (WFNode.ActivityId == ProcessorInputResult_NodeID) { //if (dataEntity["FPlanEndDt"].ToString().IsNullOrEmptyOrWhiteSpace()) //{ // ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( // string.Empty, // FID, // dataEntity.DataEntityIndex, // dataEntity.RowIndex, // FID, // "请填写计划完成日期!", // string.Empty); // validateContext.AddError(null, ValidationErrorInfo); //} if (dataEntity["FServeContent"].ToString().IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请填写服务内容!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } if (dataEntity["FQstAnz"].ToString().IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请填写问题原因分析!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } if (dataEntity["FQstPlan"].ToString().IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请填写问题处理方案!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } else if (WFNode.ActivityId == AP_NodeID)//申请人评价 { //if (dataEntity["FFinEndDt"].ToString().IsNullOrEmptyOrWhiteSpace()) //{ // ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( // string.Empty, // FID, // dataEntity.DataEntityIndex, // dataEntity.RowIndex, // FID, // "请填写实际完成日期!", // string.Empty); // validateContext.AddError(null, ValidationErrorInfo); //} string FNotSatisfied = dataEntity["FNotSatisfied"].ToString(); string FSatisfied = dataEntity["FSatisfied"].ToString(); if ((FNotSatisfied == "False" && FSatisfied == "False") || (FNotSatisfied == "True" && FSatisfied == "True")) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请对服务进行评价!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { DataTable _dt; string _sql = "exec proc_cztyCrm_Contract @FCrmSOID='#FID#'"; string _backM = ""; string _backMsg = ""; foreach (var dataEntity in dataEntities) { string _FID = dataEntity["Id"].ToString(); string _vadSql = _sql.Replace("#FID#", _FID); try { _dt = DBUtils.ExecuteDataSet(this.Context, _vadSql).Tables[0]; if (_dt.Rows.Count > 0) { _backM = _dt.Rows[0]["FBackM"].ToString(); _backMsg = _dt.Rows[0]["FBackMsg"].ToString(); } } catch (Exception _ex) { _backM = "ERR"; _backMsg = _ex.Message; } //判断到数据有错误 if (_backM == "ERR") { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, dataEntity["Id"].ToString(), dataEntity.DataEntityIndex, dataEntity.RowIndex, dataEntity["Id"].ToString(), _backMsg, string.Empty); validateContext.AddError(null, ValidationErrorInfo); continue; } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } var enProp = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryName; this.EntityKey = enProp; var orgFldKey = validateContext.BusinessInfo.MainOrgField.Key; Field lotFld = validateContext.BusinessInfo.GetField(this.LotNoFldKey); Field matFld = validateContext.BusinessInfo.GetField(this.MatFldKey); Field auxFld = validateContext.BusinessInfo.GetField(this.AuxPropFldKey); foreach (var dataEntity in dataEntities) { DynamicObjectCollection rows = dataEntity[enProp] as DynamicObjectCollection; if (rows == null || rows.Count <= 0) { continue; } //取酶活量大于零的 var checkRows = rows.Where(f => Convert.ToDecimal(f["FJNUnitEnzymes"]) > 0).ToList(); if (checkRows == null || checkRows.Count() <= 0) { continue; } //先查本单的数据 var grp1 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p[matFld.PropertyName + "_Id"].ToString()), AuxId = long.Parse(p[auxFld.PropertyName + "_Id"].ToString()), LotNumber = Convert.ToString(p[lotFld.PropertyName + "_Text"]), UnitEnzymes = Convert.ToDecimal(p["FJNUnitEnzymes"]) }).Distinct().ToList(); var grp2 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p[matFld.PropertyName + "_Id"].ToString()), AuxId = long.Parse(p[auxFld.PropertyName + "_Id"].ToString()), LotNumber = Convert.ToString(p[lotFld.PropertyName + "_Text"]) }).Distinct().ToList(); if (grp1.Count != grp2.Count) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(((DynamicObject)(dataEntity.DataEntity))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:启用双计量单位的物料,公司+物料+辅助属性+批号所对应的单位酶活量有多个!", dataEntity.BillNo), "金蝶提示")); continue; } //查数据库后台的数据 foreach (var item in checkRows) { var matVal = matFld.GetFieldValue(item) as DynamicObject; if (matVal == null) { continue; } CheckPara para = new CheckPara(); para.currEnFldName = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryPkFieldName; para.orgId = Convert.ToInt64(dataEntity.DataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"]); para.matId = Convert.ToInt64(matVal["Id"]); var lotVal = lotFld.GetFieldValue(item); if (lotVal != null && !lotVal.IsNullOrEmptyOrWhiteSpace()) { para.lotNumber = lotVal.ToString(); } else { para.lotNumber = ""; } var aux = auxFld.GetFieldValue(item) as DynamicObject; if (aux != null) { para.auxPropId = Convert.ToInt64(aux["Id"]); } para.unitEnzymes = Convert.ToDecimal(item["FJNUnitEnzymes"]); para.currentEntryId = Convert.ToInt64(item["Id"]); para.currFormKey = validateContext.BusinessInfo.GetForm().Id; para.ctx = ctx; string errInfor = ""; if (CheckExists(para, out errInfor)) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(dataEntity.DataEntity["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:第{1}行物料,启用双计量单位,公司+物料+辅助属性+批号所对应的单位酶活量有多个({0})!", errInfor, rows.IndexOf(item) + 1), "金蝶提示")); continue; } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } foreach (var dataEntity in dataEntities) { string billNo = dataEntity["BillNo"].ToString(); //单据编号 string pickMtrl = string.Format(@"select t1.FBILLNO,FDOCUMENTSTATUS from T_PRD_PICKMTRL t1 inner join T_PRD_PICKMTRLDATA t2 on t1.FID=t2.FID where FMOBILLNO='{0}' group by t1.FBILLNO,FDOCUMENTSTATUS", billNo); //生产领料单 DynamicObjectCollection pickMtrlData = DBUtils.ExecuteDynamicObject(this.Context, pickMtrl); List <string> pickMtrlList = pickMtrlData.Where(o => o["FDOCUMENTSTATUS"].ToString() != "C").Select(o => o["FBILLNO"].ToString()).ToList(); if (pickMtrlList.Count() > 0) { string pickMtrlNo = string.Join(",", pickMtrlList); validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(((DynamicObject)(dataEntity.DataEntity))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-YDL-MOClose", string.Format("执行至结案失败:下游单据生产领料单:{0}还未审核!", pickMtrlNo.Substring(0, pickMtrlNo.Length - 1)), "金蝶提示")); continue; } string inStock = string.Format(@"select t1.FBILLNO,t1.FDOCUMENTSTATUS from T_PRD_INSTOCK t1 inner join T_PRD_INSTOCKENTRY t2 on t1.FID=t2.FID where t2.FMOBILLNO='{0}' group by t1.FBILLNO,t1.FDOCUMENTSTATUS", billNo);//生产入库单 DynamicObjectCollection inStockData = DBUtils.ExecuteDynamicObject(this.Context, inStock); List <string> inStockList = inStockData.Where(o => o["FDOCUMENTSTATUS"].ToString() != "C").Select(o => o["FBILLNO"].ToString()).ToList(); if (inStockList.Count() > 0) { string inStockNo = string.Join(",", inStockList); validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(((DynamicObject)(dataEntity.DataEntity))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-YDL-MOClose", string.Format("执行至结案失败:下游单据生产入库单:{0}还未审核!", inStockNo.Substring(0, inStockNo.Length - 1)), "金蝶提示")); continue; } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); //string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); //List<ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); //var WFNode = routeCollection[routeCollection.Count - 1]; var FEntity = dataEntity["FEntity"] as DynamicObjectCollection; foreach (var row in FEntity) { var FRoomNum = row["F_ora_RoomNum"] == null ? "" : row["F_ora_RoomNum"].ToString(); if (FRoomNum.IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请返回审批页面点击右侧“更多”按钮后选择“修改单据”,在单据的明细信息中填写“房间号”并保存,最后再返回至审批页面点击“分配完成”进行提交!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } if (dataEntities != null && dataEntities.Length > 0) { DynamicObjectCollection dataEntry = dataEntities[0].DataEntity["POOrderEntry"] as DynamicObjectCollection; foreach (DynamicObject item in dataEntry) { DynamicObject materil = item["MaterialId"] as DynamicObject; if (materil == null) { continue; } if (Convert.ToBoolean(materil["FIsMeasure"]) && Convert.ToDecimal(item["FJNReqty"]) == 0) { validateContext.AddError(DataEntities[0].DataEntity, new ValidationErrorInfo ( "", DataEntities[0].DataEntity["Id"].ToString(), dataEntities[0].DataEntityIndex, 0, "001", string.Format("第{0}行为双计量物料时,需求酶活为必录字段", dataEntry.IndexOf(item) + 1), "保存提示" )); } } } }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } var enProp = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryName; this.EntityKey = enProp; var orgFldKey = validateContext.BusinessInfo.MainOrgField.Key; foreach (var dataEntity in dataEntities) { string billType = dataEntity["FBillTypeID_Id"].ToString(); if (!(billType == "005056c00008baa211e3097d9bc0332e" || billType == "005056945db184ed11e3af2dcda7ee49")) { continue; //产品检验单\自制工序检验单 } DynamicObjectCollection rows = dataEntity[enProp] as DynamicObjectCollection; if (rows == null || rows.Count <= 0) { continue; } //取酶活量大于零的 var checkRows = rows.Where(f => Convert.ToDecimal(f["FJNUnitEnzymes"]) > 0).ToList(); if (checkRows == null || checkRows.Count() <= 0) { continue; } //先查本单的数据 var grp1 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p["MaterialId_Id"].ToString()), AuxId = long.Parse(p["AuxPropId_Id"].ToString()), LotNumber = Convert.ToString(p["Lot_Text"]), UnitEnzymes = Convert.ToDecimal(p["FJNUnitEnzymes"]) }).Distinct().ToList(); var grp2 = (from p in checkRows select new { OrgID = long.Parse(dataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"].ToString()), MatId = long.Parse(p["MaterialId_Id"].ToString()), AuxId = long.Parse(p["AuxPropId_Id"].ToString()), LotNumber = Convert.ToString(p["Lot_Text"]) }).Distinct().ToList(); if (grp1.Count != grp2.Count) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(((DynamicObject)(dataEntity.DataEntity))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:启用双计量单位的物料,公司+物料+辅助属性+批号所对应的单位酶活量有多个!", dataEntity.BillNo), "金蝶提示", ErrorLevel.Warning)); continue; } //查数据库后台的数据 foreach (var item in checkRows) { var matVal = item["MaterialId"] as DynamicObject; if (matVal == null) { continue; } CheckPara para = new CheckPara(); para.lotNumber = item["Lot_Text"].ToString(); if (para.lotNumber.Length == 0) { continue; } DynamicObjectCollection linkData = item["FEntity_Link"] as DynamicObjectCollection; para.tableName = linkData[0]["sTableName"].ToString(); para.linkId = string.Join(",", linkData.Select(s => Convert.ToInt32(s["SBillId"]))); para.currEnFldName = validateContext.BusinessInfo.GetField(matFldKey).Entity.EntryPkFieldName; para.orgId = Convert.ToInt64(dataEntity.DataEntity[validateContext.BusinessInfo.MainOrgField.PropertyName + "_Id"]); para.matId = Convert.ToInt64(matVal["Id"]); var aux = item["AuxPropId"] as DynamicObject; if (aux != null) { para.auxPropId = Convert.ToInt64(aux["Id"]); } para.unitEnzymes = Convert.ToDecimal(item["FJNUnitEnzymes"]); para.currentEntryId = Convert.ToInt64(item["Id"]); para.currFormKey = validateContext.BusinessInfo.GetForm().Id; para.ctx = ctx; string errInfor = ""; if (CheckExists(para, out errInfor)) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBillNo", Convert.ToString(dataEntity.DataEntity["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-InStockCheck-002", string.Format("保存失败:第{1}行物料,启用双计量单位,公司+物料+辅助属性+批号所对应的单位酶活量有多个({0})!", errInfor, rows.IndexOf(item) + 1), "金蝶提示", ErrorLevel.Warning)); continue; } } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); List <ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); var WFNode = routeCollection[routeCollection.Count - 1]; var entity = dataEntity["FEntry"] as DynamicObjectCollection; bool IsNull = false; if (WFNode.ActivityId == AdminAlloc_1_NodeID) //司机 车牌号 出发地点 出发时间 { foreach (var row in entity) { string F_ora_rcvDiver = row["F_ora_rcvDiver"] == null ? "" : row["F_ora_rcvDiver"].ToString(); string F_ora_CarNum = row["F_ora_CarNum"] == null ? "" : row["F_ora_CarNum"].ToString(); string F_ora_StAddr = row["F_ora_StAddr"] == null ? "" : row["F_ora_StAddr"].ToString(); string F_ora_StTime = row["F_ora_StTime"] == null ? "" : row["F_ora_StTime"].ToString(); if (F_ora_rcvDiver == "" || F_ora_CarNum == "" || F_ora_StAddr == "" || F_ora_StTime == "") { IsNull = true; } } if (IsNull) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请分配司机并填写车牌号、出发地点及出发时间!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } /* * else if (WFNode.ActivityId == AdminAlloc_2_NodeID)//实际公里数 实际费用(自动计算) 补贴 * { * foreach (var row in entity) * { * float F_ora_Mileage = float.Parse(row["F_ora_Mileage"].ToString()); * float F_ora_Subsidy = float.Parse(row["F_ora_Subsidy"].ToString()); * if (F_ora_Mileage <= 0 || F_ora_Subsidy <= 0) * { * IsNull = true; * } * } * * if (IsNull) * { * ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( * string.Empty, * FID, * dataEntity.DataEntityIndex, * dataEntity.RowIndex, * FID, * "请确认实际行车公里数及补贴!", * string.Empty); * validateContext.AddError(null, ValidationErrorInfo); * } * } */ } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { //foreach (var dataEntity in dataEntities) //{ //判断到数据有错误 // if() // { // ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( // string.Empty, // dataEntity["Id"].ToString(), // dataEntity.DataEntityIndex, // dataEntity.RowIndex, // dataEntity["Id"].ToString(), // "errMessage", // string.Empty); // validateContext.AddError(null, ValidationErrorInfo); // continue; // } //} }
/// <summary> /// 校验逻辑实现 /// </summary> /// <param name="dataEntities"></param> /// <param name="validateContext"></param> /// <param name="ctx"></param> public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { if (dataEntities == null) { return; } foreach (var dataEntity in dataEntities) { var billTypeId = this.GetBillTypeId(validateContext.BusinessInfo, dataEntity.DataEntity); if (billTypeId.IsNullOrEmptyOrWhiteSpace()) { continue; } var billTypeParaObj = AppServiceContext.GetService <ISysProfileService>().LoadBillTypeParameter(ctx, validateContext.BusinessInfo.GetForm().Id, billTypeId); if (billTypeParaObj == null) { continue; } bool bSupportNoMtrlQuote = Convert.ToBoolean(billTypeParaObj["F_JN_NoMtrlIdQuotation"]); string strCreateMaterialPoint = Convert.ToString(billTypeParaObj["F_JN_MtrlCreateTimePoint"]); bool bAutoSyncToPriceLis = Convert.ToBoolean(billTypeParaObj["F_JN_AutoSyncToPriceList"]); //销售报价单不检验BOM版本 //if (billTypeId == "565802889cb9fb") //{ // if (bAutoSyncToPriceLis && (long)dataEntity["BomId_Id"] == 0) // { // validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FBomId", // Convert.ToString(((DynamicObject)(dataEntity.DataEntity.Parent))["Id"]), // dataEntity.DataEntityIndex, // dataEntity.RowIndex, // "JN-001", // string.Format("审核失败:第{0}行BOM版本不能为空!", dataEntity.RowIndex + 1), // "金蝶提示")); // continue; // } //} //如果参数是支持无物编,且物料为非审核时生成的情况下,则要求物料编码字段必须有值 if (bSupportNoMtrlQuote && !strCreateMaterialPoint.EqualsIgnoreCase("2")) { if (dataEntity["MaterialId_Id"].IsEmptyPrimaryKey()) { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("FMaterialId", Convert.ToString(((DynamicObject)(dataEntity.DataEntity.Parent))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-002", string.Format("审核失败:第{0}行物料编码不能为空!", dataEntity.RowIndex + 1), "金蝶提示")); continue; } } if (bSupportNoMtrlQuote && strCreateMaterialPoint.EqualsIgnoreCase("2")) { //销售报价单不检验产品名称 if (dataEntity["F_JN_ProductName"].IsEmptyPrimaryKey() && billTypeId == "565802889cb9fb") { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("F_JN_ProductName", Convert.ToString(((DynamicObject)(dataEntity.DataEntity.Parent))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-003", string.Format("审核失败:第{0}行产品名称不能为空!", dataEntity.RowIndex + 1), "金蝶提示")); continue; } //产品组别没有配置对应物料模板 var billTypeParaTplMtrlRows = billTypeParaObj["QuoteMtrlTplEntity"] as DynamicObjectCollection; var matchTplMtrlRowObj = billTypeParaTplMtrlRows.FirstOrDefault(o => (long)o["F_JN_MtrlGroupId_Id"] == (long)dataEntity["F_JN_MtrlGroupId_Id"]); if (matchTplMtrlRowObj == null && billTypeId == "565802889cb9fb") { validateContext.AddError(dataEntity.DataEntity, new ValidationErrorInfo("F_JN_ProductName", Convert.ToString(((DynamicObject)(dataEntity.DataEntity.Parent))["Id"]), dataEntity.DataEntityIndex, dataEntity.RowIndex, "JN-004", string.Format("审核失败:第{0}行产品组别未配置对应的模板物料,导致自动生成物料失败!", dataEntity.RowIndex + 1), "金蝶提示")); continue; } } } }
public override void Validate(Kingdee.BOS.Core.ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Kingdee.BOS.Context ctx) { foreach (var dataEntity in dataEntities) { string FID = dataEntity["Id"].ToString(); //string procInstId = WorkflowChartServiceHelper.GetProcInstIdByBillInst(ctx, this.formId, FID); //List<ChartActivityInfo> routeCollection = WorkflowChartServiceHelper.GetProcessRouter(ctx, procInstId); //var WFNode = routeCollection[routeCollection.Count - 1]; string FMeetName = dataEntity["FMeetName"] == null ? "" : (dataEntity["FMeetName"] as DynamicObject)["Id"].ToString(); if (FMeetName.IsNullOrEmptyOrWhiteSpace()) { ValidationErrorInfo ValidationErrorInfo = new ValidationErrorInfo( string.Empty, FID, dataEntity.DataEntityIndex, dataEntity.RowIndex, FID, "请分配空闲的会议室!", string.Empty); validateContext.AddError(null, ValidationErrorInfo); } } }