电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

如何实现启用序列号管理下推生成检验单,使用决策表体序列号携带到样本检测值表体

来源:金蝶云社区作者:金蝶2024-09-2311

如何实现启用序列号管理下推生成检验单,使用决策表体序列号携带到样本检测值表体

需求描述针对启用序列号管理的物料,同时满足以下几个条件时,需要携带使用决策表体的序列号到对应的样本检测值表体:

(1)上游单据录入序列号,且下推生成检验单携带默认质检方案;

(2)检验单单据类型勾选启用样本检测值;

(3)检验单单据类型勾选启用检验项目抽样方案;

(4)检验项目勾选启用样本检测值

(5)检验项目对应的抽样方案类型为全检类型;

 解决方案:上述需求需要二开单据转换插件实现,具体思路如下:

       二开单据转换插件继承BaseBillConvertServicePlugIn,重写AfterConvert事件,二开插件挂在单据转换规则的插件策略中标准产品插件之后,然后按照下述逻辑处理即可:

       1、在事件中循环检验单分录数据,获取分录的质检方案和序列号单位信息,针对检验单上不存在序列号单位以及不存在质检方案的分录跳过不处理,需要处理的分录获取其对应的检验项目表体数据;

       2、循环检验项目表体数据,判断当前检验项目是否存在抽样方案,不存在则跳过不处理,存在的则判断抽样方案的类型是否全检类型,如果为全检,则获取检验项目对应主分录的使用决策表体序列号信息赋值给当前检验项目的样本检测值表体分录,如果不是全检则跳过循环进行下一行检验项目的判断;

       说明:该功能当检验数量很大时会影响单据性能,可能会出现下推生成单据以及打开单据缓慢的现象,所以针对检验数量很大的情况下建议将检验项目抽样方案不要设置为全检类型或者将质检方案中的检验项目表体的启用样本检测值不勾选,这样就不会按照检验数量创建样本检测值分录行了,从而可以提高下推生成单据的性能。

1103A.webp


示例代码如下:


using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
using Kingdee.K3.Core.MFG.EnumConst;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Util;
using Kingdee.K3.MFG.App.ConvertPlugIn;
 
namespace Kingdee.K3.MFG.QM.App.BillConvertServicePlugIn
{
    public class InspectTest : BaseBillConvertServicePlugIn
    {
      public override void AfterConvert(AfterConvertEventArgs e)
      {
        ExtendedDataEntity[] entryDatas = e.Result.FindByEntityKey("FEntity");          
        base.AfterConvert(e);
        this.SetInspectValueEntrySerialId(entryDatas);
      }
      public void SetInspectValueEntrySerialId(ExtendedDataEntity[] entryDatas)
      {
       foreach (var entryData in entryDatas)
       {
        long qcShemeId = entryData.DataEntity.GetDynamicValue<long>("QCSchemeId_Id");
        if (qcShemeId <= 0) continue;//抽样方案为空时不处理
        long snUnitId = entryData.DataEntity.GetDynamicValue<long>("SNUnitID_Id");
        if (snUnitId <= 0) continue;//不启用序列号管理时不处理
        DynamicObjectCollection qcItems = entryData.DataEntity.GetDynamicValue<DynamicObjectCollection>("ItemDetail");
         if (qcItems.IsEmpty()) continue;//检验项目表体为空时不处理
        DynamicObjectCollection policyEntrys = entryD

如何实现启用序列号管理下推生成检验单,使用决策表体序列号携带到样本检测值表体

需求描述:针对启用序列号管理的物料,同时满足以下几个条件时,需要携带使用决策表体的序列号到对应的样本检测值表体:(1)上游单据录入...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信