表单上按子单据体选中行下推

关键词:子单据体、下推
一、需求
采购申请单上按子单据体(物料详情)选中行下推生成采购订单的数据,并且下推后自动打开生成的采购订单的数据。

二、思路与方案
目前列表支持选中分录行数据即可按选中行下推。

如果采购申请单表单上要按子单据体的选中行下推,只能通过代码实现。
三、实现过程
1、配置转换规则的关联实体为子单据体
错误的关联实体配置:如果源单关联实体配置成单据体-子单据体,固定只能下推一行子单据体的数据到目标单

2、代码实现按子单据体选中行数据下推
public class ReqBillPlugin extends AbstractBillPlugIn implements Plugin, RowClickEventListener, EntryGridSetRowDataListener {
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
}
@Override
public void itemClick(ItemClickEvent evt) {
if (evt.getItemKey().equals("kdec_pushselect")){
//获取当前单据数据(包含单据体)
DynamicObject dataEntity = this.getModel().getDataEntity(true);
Long pkValue = (Long) dataEntity.getPkValue();
if (pkValue!=0){
EntryGrid grid = this.getControl("kdec_reqentryentity");
int focusRow = grid.getEntryState().getFocusRow();
if (focusRow>0) {
DynamicObjectCollection cols = dataEntity.getDynamicObjectCollection("kdec_reqentryentity");
DynamicObject entry = cols.get(focusRow);
DynamicObjectCollection subCols = entry.getDynamicObjectCollection("kdec_matersubentryentity");
EntryGrid subGrid = this.getControl("kdec_matersubentryentity");
int[] subSelectedRows = subGrid.getEntryState().getSelectedRows();
List<ListSelectedRow> selectedRows = new ArrayList<>(subSelectedRows.length);
for(int index:subSelectedRows){
ListSelectedRow selectedRow = new ListSelectedRow(pkValue);
// 设置需要下推的单据体(子单据体)名:按分录下推时必须设置
selectedRow.setEntryEntityKey("kdec_reqentryentity");
selectedRow.setSubEntryEntityKey("kdec_matersubentryentity");
selectedRow.setEntryPrimaryKeyValue(entry.getPkValue());
selectedRow.setSubEntryPrimaryKeyValue(subCols.get(index).getPkValue());
selectedRows.add(selectedRow);
}
// 生成下推参数PushArgs
PushArgs pushArgs = new PushArgs();
// 必选,源单标识
pushArgs.setSourceEntityNumber("kdec_reqbill");
// 必选,目标单标识
pushArgs.setTargetEntityNumber("kdec_ordbill");
// 可选,传入true,不检查目标单新增权
pushArgs.setHasRight(true);
// 可选,传入目标单验权使用的应用编码
pushArgs.setAppId("");
表单上按子单据体选中行下推
关键词:子单据体、下推一、需求采购申请单上按子单据体(物料详情)选中行下推生成采购订单的数据,并且下推后自动打开生成的采购订单的数...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



