插件实现下推单据(注意:这是列表插件)
金蝶云社区-土豆
土豆
0人赞赏了该文章 3,308次浏览 未经作者许可,禁止转载编辑于2015年05月25日 16:54:53

string sourceFormId="GH_CPRKSM";
string targetFormId="SP_InStock";

var rules = ConvertServiceHelper.GetConvertRules(View.Context, sourceFormId, targetFormId);

var rule = rules.FirstOrDefault(t => t.IsDefault);

// 获取在列表上当前选择需下推的行
ListSelectedRow[] selectedRows = ((IListView)this.ListView ).SelectedRowsInfo.ToArray();

// 如下代码为单据上获取当前当前选择行

// string primaryKeyValue = ((IBillView)this.View).Model.GetPKValue().ToString();

// ListSelectedRow row = new ListSelectedRow(primaryKeyValue, string.Empty, 0, this.View.BillBusinessInfo.GetForm().Id);

// ListSelectedRow[] selectedRows = new ListSelectedRow[] { row };

// 调用下推服务,生成下游单据数据包

ConvertOperationResult operationResult = null;

Dictionary custParams = new Dictionary();

PushArgs pushArgs = new PushArgs(rule, selectedRows)

{

TargetBillTypeId = "", // 请设定目标单据单据类型。如无单据类型,可以空字符

TargetOrgId = 0, // 请设定目标单据主业务组织。如无主业务组织,可以为0

CustomParams = custParams, // 可以传递额外附加的参数给单据转换插件,如无此需求,可以忽略

};

//执行下推操作,并获取下推结果

operationResult = ConvertServiceHelper.Push(View.Context, pushArgs, OperateOption.Create());

// 获取生成的目标单据数据包

DynamicObject[] objs = (from p in operationResult.TargetDataEntities

select p.DataEntity).ToArray();

// 读取目标单据元数据

var targetBillMeta = MetaDataServiceHelper.Load(View.Context, targetFormId) as FormMetadata;

// 提交数据库保存,并获取保存结果

var saveResult = BusinessDataServiceHelper.Save(View.Context, targetBillMeta.BusinessInfo, objs);