表单上按子单据体选中行下推
关键词:子单据体、下推
一、需求
采购申请单上按子单据体(物料详情)选中行下推生成采购订单的数据,并且下推后自动打开生成的采购订单的数据。
二、思路与方案
目前列表支持选中分录行数据即可按选中行下推。
如果采购申请单表单上要按子单据体的选中行下推,只能通过代码实现。
三、实现过程
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(""); // 可选,传入目标单主组织默认值 pushArgs.setDefOrgId(0L); // 可选,传入本次下推使用的转换规则id;传入空值,由系统自动寻找合适的转换规则 pushArgs.setRuleId(""); // 是否输出详细错误报告 pushArgs.setBuildConvReport(true); // 必选,设置需要下推的源单及分录内码 pushArgs.setSelectedRows(selectedRows); // 调用下推引擎,下推目标单 ConvertOperationResult pushResult = ConvertServiceHelper.pushAndSave(pushArgs); Set<Object> targetBillIds = pushResult.getTargetBillIds(); if (targetBillIds.isEmpty()){ String message = pushResult.getMessage(); if (StringUtils.isEmpty(message)){ if (pushResult.getBillReports()!=null&&!pushResult.getBillReports().isEmpty()){ message=pushResult.getBillReports().get(0).getFailMessage(); } } getView().showErrorNotification(message); }else { BillShowParameter billShowParameter = new BillShowParameter(); billShowParameter.setPkId(targetBillIds.stream().iterator().next()); billShowParameter.setFormId("kdec_ordbill"); billShowParameter.getOpenStyle().setShowType(ShowType.Modal); getView().showForm(billShowParameter); } } }else{ getView().showTipNotification("请先保存单据"); } } super.itemClick(evt); } }
四、效果图
采购申请单选择子单据体(物料详情)第二行和第四行下推生成采购订单数据,如下图。
五、开发环境版本
V6.0.6
六、参考资料
表单上按子单据体选中行下推
关键词:子单据体、下推一、需求采购申请单上按子单据体(物料详情)选中行下推生成采购订单的数据,并且下推后自动打开生成的采购订单的数...
点击下载文档
本文2024-09-23 00:24:11发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139236.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章