金蝶云插件开发--物料清单BOM获取老系统的BOM信息【2023.12.27】

发布时间 2023-12-27 10:48:26作者: lyh1719

需求:
1、新系统中同一产品编码,可以通过快捷获取老系统中的同一产品编码的BOM信息;

2、数据信息查询:通过存储过程去查询,再转入子项明细中;

 

 

 

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data;
using System.ComponentModel;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;

namespace Lyh.K3cloud.Demo.Business.Plugin
{

[Description("获取物料用料清单BOM相关信息"),HotUpdate]
public class GetBomFromOldSysXX:AbstractBillPlugIn
{
public override void EntryBarItemClick(BarItemClickEventArgs e)
{
base.EntryBarItemClick(e);
//子明细菜单按钮
if(e.BarItemKey.Equals("QUYL_tbGetBomXX"))
{
//间接取物料清单的父物料编码的编码
DynamicObject fitmid = this.View.Model.GetValue("FMATERIALID") as DynamicObject;
//注意是取NUMBER而为是FNUMBER
string fnumber = fitmid["NUMBER"].ToString();

if(fnumber != null)
{
string sql = string.Concat(" EXEC PRO_LYH_GETBOMWLXX '", fnumber, "'");
DataSet dataSet = DBUtils.ExecuteDataSet(base.Context,sql );
DataTable dataTable = dataSet.Tables[0];

if(dataTable.Rows.Count >0 )
{
//考虑BOM明细中有多行记录,所以传递产生多行,定义Row
int row = 0;
foreach( object obj in dataTable.Rows)
{
DataRow dr = (DataRow)obj;
if(row >0)
{
//默认自动增加一行
this.View.Model.CreateNewEntryRow("FTreeEntity");
}
//子项明细中物料
base.View.Model.SetValue("FMATERIALIDCHILD", dr["FMATERIALID"].ToString(),row);
//分子
base.View.Model.SetValue("FNUMERATOR", dr["FNUMERATOR"].ToString(),row);
row = row + 1;

}

}

}

}
}
}
}