1、二开生产汇报单到生产入库单的单据转换插件,插件代码示例如下:
using Kingdee.BOS.Core;
using Kingdee.BOS.Orm.DataEntity;
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.Util;
using Kingdee.K3.MFG.App.ConvertPlugIn;
namespace Kingdee.K3.MFG.PRD.App.BillConvertServicePlugIn
{
public class test : BaseBillConvertServicePlugIn
{
public override void AfterConvert(BOS.Core.Metadata.ConvertElement.PlugIn.Args.AfterConvertEventArgs e)
{
base.AfterConvert(e);
ExtendedDataEntity[] headDataes = e.Result.FindByEntityKey(CONST_PRD_INSTOCK.CONST_FBillHead.ENTITY_FBillHead);
foreach (ExtendedDataEntity head in headDataes)
{
DynamicObjectCollection entityDataes =
head.DataEntity.GetDynamicValue<DynamicObjectCollection>(CONST_PRD_INSTOCK.CONST_FEntity.ENTITY_ORM_Entity);
List<DynamicObject> deleteRows=new List<DynamicObject> ();
foreach (DynamicObject entityData in entityDataes)
{
if (entityData.GetDynamicValue<string>(CONST_PRD_INSTOCK.CONST_FEntity.ORM_InStockType) == "3")//报废品入库
{
deleteRows.Add(entityData);
}
}
if (deleteRows.IsEmpty()) continue;
foreach (DynamicObject deleteRow in deleteRows)
{
entityDataes.Remove(deleteRow);
}
}
}
}
}
2、 打开BOS设计器,找到生产汇报单到生产入库单的单据转换规则,扩展单据转换规则,注册第一步二开的单据转换插件即可(注意:标准产品插件一定要启用,且二开插件注册到标准产品插件之后);
3、 如果想仅有报废数量还没有下推的时候不能下推生产入库单,则需要修改单据转换规则中的选单策略,删除如下的配置;
补充:生产订单下推生产入库单与此类似,扩展生产订单到生产入库单的单据转换规则注册上边二开的插件即可;(这个二开单据转换插件代码是通用的,生产订单下推生产入库单和生产汇报单下推生产入库单都绑定这个即可)
推荐阅读