如果按汇报倒冲的情况下,如果第一道工序汇报倒冲没有完成,再做下一道工序汇报时提示没有倒冲完成

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如果按汇报倒冲的情况下,如果第一道工序汇报倒冲没有完成,再做下一道工序汇报时提示没有倒冲完成

【应用场景】

按汇报倒冲的情况下,如果第一道工序汇报倒冲没有完成,再做下一道工序汇报时提示没有倒冲完成。目前的场景是适合于客户第一道序或者第二道序需要领料(汇报倒冲),后面的序不需要领料。后面不需要领料的序汇报的时候需要检查首序是否汇报倒冲完成。


【实现步骤】

<1> 需要在工序汇报的保存插件里面增加一个校验。重写方法SetValidator 示例的代码如下:

protected virtual void SetValidator(BOS.Core.DynamicForm.PlugIn.Args.AddValidatorsEventArgs e)
        {
           
            validators.Add(new Class1()
            {
                EntityKey = CONST_SFC_OPERATIONREPORT.CONST_FEntity.ENTITY_FEntity,  //工序汇报单单据体
                TimingPointString = ",Save,",
                Option = this.Option
            });

        }
public class Class1 : AbstractMfgServiceValidator
    {
        public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
        {
            base.Validate(dataEntities, validateContext, ctx);
            if (dataEntities == null || dataEntities.Length == 0)
            {
                return;

            }
            foreach (ExtendedDataEntity dataEntity in dataEntities)
            {
                DynamicObject entry = dataEntity.DataEntity;
                decimal FNoPickedQty = 0;
                string FOptQueue="";
                int FOperID = 0;
                string sql = @" select qtpp.FNoPickedQty,FOptQueue,FOperID from T_PRD_PPBOM ppbom 
                                inner join T_PRD_PPBOMENTRY tpp on ppbom .fid=tpp.FID 
                                inner join T_PRD_PPBOMENTRY_C ctpp on tpp.FENTRYID=ctpp.FENTRYID
                                inner join T_PRD_PPBOMENTRY_Q qtpp on tpp.FENTRYID=qtpp.FENTRYID
                                where FBackFlushType=2  and tpp.FMOEntryID=@Id";
                using (IDataReader dr = DBUtils.ExecuteReader(this.Context, sql, new SqlParam("@Id", KDDbType.Int64, Convert.ToInt64(entry["MoEntryId"]))))
                {
                    if (dr.Read())
                    {
                        FNoPickedQty = Convert.ToDecimal(dr["FNoPickedQty"]);
                        FOptQueue = Convert.ToString(dr["FOptQueue"]);
                        FOperID = Convert.ToInt32(dr["FOperID"]);
                    }
                }
                //找出当前汇报的工序和序列
                string FSeqNumber = Convert.ToString(entry["SeqNumber"]);
                int FOperNumber = Convert.ToInt32(entry["OperNumber"]);
                if (FSeqNumber.Equals(FOptQueue) && FOperNumber > FOperID)
                {
                    //需要校验未料数量是否不为0
                    if (FNoPickedQty > 0)
                    {
                        validateContext.AddError(entry, new ValidationErrorInfo(CONST_SFC_OPERATIONREPORT.CONST_FEntity.KEY_FFinishQty, this.GetHeadPkValue(entry), dataEntity.DataEntityIndex, dataEntity.RowIndex, "FNoPickedQty", "工序汇报倒冲没有完成,不允许报工", string.Empty));
                    }
                }
            }
        }


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


【参考资料】

【二开案例.基础资料.联动查询(GetValue)】

https://vip.kingdee.com/article/127710528226504960



【金蝶云星空BOS二次开发案例演示】

https://vip.kingdee.com/article/94751030918525696



如果按汇报倒冲的情况下,如果第一道工序汇报倒冲没有完成,再做下一道工序汇报时提示没有倒冲完成

【应用场景】按汇报倒冲的情况下,如果第一道工序汇报倒冲没有完成,再做下一道工序汇报时提示没有倒冲完成。目前的场景是适合于客户第一道...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息