批号设置为日期并且格式为yymmdd时 保存时校验批号与对应的日期是否相等原创
金蝶云社区-乐滋滋
乐滋滋
4人赞赏了该文章 971次浏览 未经作者许可,禁止转载编辑于2020年11月18日 15:10:38

1、物料启用批号管理

2、设置批号属性如下图以生产汇报单为例

image.png

3、设置批号编码规则:

image.png

3、对应的单据表体菜单添加按钮 【获取批号】生产汇报单已经存在该按钮 不再添加

4、表单插件代码 设置校验 如下图:

image.png

5、将插件编译后绑定到表单插件 标准产品插件之后

具体代码如下:

public override void BeforeSave(BeforeSaveEventArgs e)        {            base.BeforeSave(e);            List<DynamicObject> entrys = this.Model.DataObject.GetDynamicValue<DynamicObjectCollection>(CONST_PRD_MORPT.CONST_FEntity.ENTITY_ORM_PRD_MORPTENTRY).ToList();            StringBuilder sbError = new StringBuilder();            foreach (var entry in entrys)            {                DynamicObject mtrlObj = entry.GetDynamicObjectItemValue<DynamicObject>(CONST_PRD_MORPT.CONST_FEntity.ORM_MaterialId);                if (mtrlObj.IsNullOrEmptyOrWhiteSpace()) continue;                bool isLotManege = mtrlObj.GetDynamicObjectItemValue<bool>(CONST_BD_MATERIAL.CONST_SubHeadEntity1.ORM_IsBatchManage, false);                if (isLotManege)                {                    DynamicObject lotObjs = entry.GetDynamicObjectItemValue<DynamicObject>(CONST_PRD_MORPT.CONST_FEntity.ORM_Lot);                    int curSeq = entry.GetDynamicValue<int>("Seq");                    string lotNumber = lotObjs.GetDynamicValue<string>("Number");                    string curPrdTime = entry.GetDynamicObjectItemValue<DateTime>(CONST_PRD_MORPT.CONST_FEntity.ORM_ProduceDate).ToString("yyyyMMdd");                    if (!lotNumber.EqualsIgnoreCase(curPrdTime))                    {                        sbError.AppendLine(string.Format("分录{0}对应的批号取值不为对应的生产日期"));                    }                }            }            if (sbError.Length > 0)            {                this.View.ShowErrMessage(sbError.ToString());                e.Cancel = true;            }        }

赞 4