并行序列废品入库跳过入库上限超额校验
【应用场景】
工序计划是并行序列,并且是废品入库的时候跳过入库上限超额校验
【实现步骤】
<1>生产入库单保存时,会校验入库上限超额,如果只是希望上游工序计划是并行序列的工序汇报进行废品入库的生产入库单跳过该校验,需要扩展生产入库单,取消勾选其保存服务插件 SaveStockInLimit,二开一个操作插件,继承SaveStockInLimit,扩展 OnAddValidators(AddValidatorsEventArgs e) 方法,取到父类的所有校验器 e.Validators,如果是并行序列的废品入库,则从中去掉校验器StockInLimitHValidator ,就可以跳过校验。参考代码如下:
public override void OnAddValidators(BOS.Core.DynamicForm.PlugIn.Args.AddValidatorsEventArgs e) { base.OnAddValidators(e); // 先加载标准产品需要的所有校验器 foreach (var dataEntity in e.DataEntities) { foreach (var tempDataEntity in dataEntity["Entity"] as DynamicObjectCollection) { //废品入库 且是并行序列 if(Convert.ToString(tempDataEntity["InStockType"]).Equals("3")) { if (IsbxSeq(Convert.ToInt64(tempDataEntity["SrcEntryId"]))) { foreach (AbstractValidator vd in e.Validators) { if (typeof(StockInLimitHValidator).IsInstanceOfType(vd)) { e.Validators.Remove(vd); // 从校验器中移除 } } } } } } } private bool IsbxSeq(long Id) { bool isBx = false; string sql = @"SELECT EQ.FSEQTYPE FROM T_SFC_OPERPLANNINGSEQ EQ INNER JOIN T_SFC_OPTRPTENTRY RY ON EQ.FENTRYID =RY.FOPTPLANSEQID WHERE RY.FENTRYID =@Id"; List<SqlParam> param = new List<SqlParam>(); param.Add(new SqlParam("@Id", KDDbType.Int64, Id)); string type= DBUtils.ExecuteScalar(this.Context, sql, "", param.ToArray()); if (type.Equals("P")) { isBx= true; } return isBx; }
<3>,注册表单插件,保存元数据,开发完毕。
【参考资料】
【二开案例.基础资料.联动查询(GetValue)】
https://vip.kingdee.com/article/127710528226504960
【金蝶云星空BOS二次开发案例演示】
https://vip.kingdee.com/article/94751030918525696
并行序列废品入库跳过入库上限超额校验
【应用场景】工序计划是并行序列,并且是废品入库的时候跳过入库上限超额校验【实现步骤】<1>生产入库单保存时,会校验入库上限超额,如果...
点击下载文档
本文2024-09-23 03:29:34发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-159206.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章