单据编辑插件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.SqlBuilder;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.Core.Bill.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Util;
namespace JD.K3.CLC.Business.PlugIn
{
[System.ComponentModel.Description("填充工艺路线")]
public class TCGYLX : AbstractBillPlugIn
{
public override void BarItemClick(BarItemClickEventArgs e)//菜单事件
{
if (e.BarItemKey == "tbTC")//填充按钮
{
GXTC();//填充方法
}
}
public void GXTC()
{
DynamicObject obj = this.View.Model.GetValue("FMATERIALID") as DynamicObject;//获取物料代码
string str = "";
string select = "select FID from T_ENG_ROUTE where FMATERIALID=" + obj["Id"].ToString();//根据内码查询工艺路线
DynamicObjectCollection collections = DBUtils.ExecuteDynamicObject(this.Context, select);
foreach (DynamicObject dr in collections)
{
str = dr["FID"].ToString();//获得工艺路线内码
}
//判断工艺路线内码是否为空
if (str.Equals(""))
{
this.View.ShowMessage("物料没有工艺路线");
return;
}
//遍历工序序列
select = " select * from T_ENG_ROUTEOPERSEQ as A INNER JOIN T_ENG_ROUTEOPERSEQ_L as B on A.FENTRYID = B.FENTRYID where A.FID=" + str;//根据工艺路线内码查询工序序列
collections = DBUtils.ExecuteDynamicObject(this.Context, select);
int i = 0;//工序序列行变量
int j = 0;//工序信息行变量
foreach (DynamicObject dr in collections)//遍历工序序列
{
this.View.Model.CreateNewEntryRow("FEntityGXXL"); //新增行?判断已经填充过一次了
this.View.Model.SetValue("FSeqNumber", dr["FSEQNUMBER"], i);//序号
this.View.Model.SetValue("FSeqName", dr["FSEQNAME"], i); //序列名称
this.View.Model.SetValue("FSeqType", dr["FSEQTYPE"].ToString(), i);//序列类型
this.View.Model.SetValue("FSeqAlignment", dr["FSEQALIGNMENT"], i);//对齐方式
this.View.Model.SetValue("FSeqRefer", dr["FSEQREFER"], i);//参照序列
this.View.Model.SetValue("FSeqOut", dr["FSEQOUT"], i);//转出工序
this.View.Model.SetValue("FSeqIn", dr["FSEQIN"], i);//转入工序
this.View.Model.SetValue("FSeqQty", this.View.Model.GetValue("FSL"), i);//数量
this.View.Model.SetValue("FSeqPlanStartTime", this.View.Model.GetValue("FPlanStartTime"), i);//计划开始时间
this.View.Model.SetValue("FSeqPlanFinishTime", this.View.Model.GetValue("FPlanFinishTime"), i);//计划完成时间
i++;
string data = dr["FENTRYID"].ToString();//工序序列内码
string select2 = " select * from T_ENG_ROUTEOPERDETAIL where FENTRYID=" + data;//查询工序序列对应工序列表
DynamicObjectCollection collections2 = DBUtils.ExecuteDynamicObject(this.Context, select2);
foreach (DynamicObject drzi in collections2)//遍历工序信息(工序列表)
{
this.View.Model.CreateNewEntryRow("FEntityGXXX");//新增行
this.View.Model.SetValue("FGXXLNM", data, j);//工序序列内码
this.View.Model.SetValue("FGXH", drzi["FOPERNUMBER"], j);//工序号
this.View.Model.SetValue("FJGZZ", drzi["FPROORGID"], j);//加工组织
this.View.Model.SetValue("FZZZX", drzi["FWORKCENTERID"], j);//工作中心
this.View.Model.SetValue("FZY", drzi["FPROCESSID"], j);//作业
this.View.Model.SetValue("FGXKZM", drzi["FOPTCTRLCODEID"], j);//工序控制码
this.View.Model.SetValue("FJGCJ", drzi["FDEPARTMENTID"], j);//加工车间
this.View.Model.SetValue("FSFSCGL", drzi["FSCWXGL"], j);//是否生成工令
this.View.Model.SetValue("FWXLX", drzi["FWXLX"], j);//维修类型
this.View.Model.SetValue("FWL", drzi["FSUBMATERIALID"], j);//物料
//数量?
//单位?
//具体单位和一些具体数量是从哪里来的
// this.View.Model.SetValue("FJHKSSJ", this.View.Model.GetValue("FPlanStartTime"), i);//计划开始时间
// this.View.Model.SetValue("FJHJSSJ", this.View.Model.GetValue("FPlanFinishTime"), i);//计划完成时间
//?只有其中一个日期是获取单据头里的时间
j++;
}
}
EntryGrid entryGrid = this.View.GetControl<EntryGrid>("FEntityGXXL");//设置当前行
entryGrid.SetFocusRowIndex(0);
this.View.Model.SetEntryCurrentRowIndex("FEntityGXXL", 0);
EntryGrid entryGrid1 = this.View.GetControl<EntryGrid>("FEntityGXXX");//设置当前行
entryGrid1.SetFocusRowIndex(0);
this.View.Model.SetEntryCurrentRowIndex("FEntityGXXX", 0);
this.View.ShowMessage("填充成功");
}
}
}