二开案例.工序计划.生产订单生成工序计划携带二开字段

生产订单生成工序计划插件二开指导
场景:对于生产订单生成工序计划的某些应用场景,无法通过BOS IDE配置带出工序计划上的一些字段。例如:1、某个字段是通过工序计划本身的某几个计算而来,或者2、要从其他单据上获取某些字段赋值到工序计划上。这个时候,需要使用插件来干预生产订单生成工序计划的过程。
生产订单生成工序计划的二开插件开发步骤如下:
1、二开工程,添加对Kingdee.K3.MFG.SFC.App.Core.dll组件的引用(组件在应用服务器的安装目录:Kingdee\K3Cloud\WebSite\bin下能够找到)。

2、新建一个二开的类,继承一下AbstractSFCPlugIn类,如图所示:

3、重写一下BeforeExecute方法,如图所示:

BeforeExecute方法的参数BeforeExecuteEventArgs e中有两个信息:
1)e.Context:当前登录上下文,这里包含了当前登录用户的相关信息,一般在执行sql的时候需要传入这个参数;
2)e.ObjectLst:当前待处理的工序计划对象集合,工序计划保存前的完整数据包。
因此,如果想要对生成的工序计划进行干预,只需要在重写的BeforeExecute方法中,对e.ObjectLst中的数据进行相应的处理即可。需要循环处理每一个数据包的每一行分录,示例代码清单如下(详细代码根据具体情况作相应的修改即可):
/// <summary>
/// 保存前操作
/// </summary>
/// <param name="e"></param>
public override void BeforeExecute(BeforeExecuteEventArgs e)
{
base.BeforeExecute(e);
List<DynamicObject> lstObject = e.ObjectLst;
foreach (DynamicObject obj in lstObject)
{
// 工序序列 列表
DynamicObjectCollection entryCols = obj["Entity"] as DynamicObjectCollection;
// 循环处理每一个工序序列
foreach (DynamicObject entry in entryCols)
{
// 获取当前工序序列对应的工序列表
DynamicObjectCollection subEntity = entry["SubEntity"] as DynamicObjectCollection;
// 下面循环处理工序列表的每一个分录
foreach (DynamicObject oper in subEntity)
{
// 在这里进行相应的操作,例如将某两个数量字段想乘,赋值到另一个二开所加的字段中
decimal operQty = Convert.ToDecimal(oper["OperQty"]); // 工序数量
decimal activity1BaseQty = Convert.ToDecimal(oper["Activity1B二开案例.工序计划.生产订单生成工序计划携带二开字段
生产订单生成工序计划插件二开指导场景:对于生产订单生成工序计划的某些应用场景,无法通过BOS IDE配置带出工序计划上的一些字段。例如:...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



