如何将生产订单二开字段携带至下级订单上
金蝶云社区-Tracy_Huang
Tracy_Huang
18人赞赏了该文章 10968次浏览 未经作者许可,禁止转载编辑于2016年12月13日 11:22:33


上面截图展示上游生产订单表头和表体二开文本字段 生成下级订单携带至下级生产订单上面
如何实现携带二开字段至下级订单,需要二开插件处理,二开一个表单插件,继承AbstractBillPlugIn,重写AfterCreateModelData方法

方法实现代码如下:

///


/// 模型层数据包创建完毕
///

///
public override void AfterCreateModelData(EventArgs e)
{
base.AfterCreateModelData(e);

//新增单据的时候,获取上游单据的二开字段,写到当前单据上面
DynamicObjectCollection moEntryDatas = this.View.Model.DataObject.GetDynamicValue(CONST_PRD_MO.CONST_FTreeEntity.ENTITY_ORM_TreeEntity);

string srcBillType = moEntryDatas.FirstOrDefault().GetDynamicValue(CONST_PRD_MO.CONST_FTreeEntity.ORM_SrcBillType);
//生产下级订单,获取上游订单的数据
if (srcBillType == "PRD_MO")
{
//获取表头的二开字段
long moId = moEntryDatas.FirstOrDefault().GetDynamicValue(CONST_PRD_MO.CONST_FTreeEntity.ORM_SrcBillId); //源单内码
DynamicObject moData = BusinessDataServiceHelper.LoadSingle(this.Context, moId.ToString(), this.View.Model.BusinessInfo.GetDynamicObjectType()); //源单数据包
DynamicObjectCollection srcMoEntryDatas = moData.GetDynamicValue(CONST_PRD_MO.CONST_FTreeEntity.ENTITY_ORM_TreeEntity); //源单分录数据
string text = moData.GetDynamicValue("TEXT"); //二开字段的属性名
this.View.Model.SetValue("FTEXT", text); //二开字段的标识名

//获取表体的二开字段
foreach (DynamicObject moEntryData in moEntryDatas)
{
long moEntryId = moEntryData.GetDynamicValue(CONST_PRD_MO.CONST_FTreeEntity.ORM_SrcBillEntryId);
DynamicObject srcMoEntryData = srcMoEntryDatas.Where(w => w.GetDynamicValue("ID") == moEntryId).FirstOrDefault();
string entryText = srcMoEntryData.GetDynamicValue("EntryText"); //二开表体字段的属性名
int row = moEntryData.GetDynamicValue("Seq");
this.View.Model.SetValue("FEntryText", entryText, row - 1); //二开表体字段的字段名
}
}
}