如何按分录行数据打印二维码

1. 案例介绍
在采购案例中,我需要打印单据体中的物料编码生成二维码,单据体中有多少条记录就生成多少张二维码。默认情况下仅仅只能打印出分录行中第一条记录,该案例介绍了如何通过插件开发实现按分录行数据分页打印,详细代码请见附件。
2. 适用版本
金蝶云苍穹 V4.0.0012及以上版本
3. 模板配置
3.1 模板设计

拖动二维码控件并绑定单据体字段“物料编码.编码”
3.2 注册插件
创建插件类EntryRowPrintPlugin,并继承AbstractPrintPlugin打印插件基类。(基类全路径kd.bos.print.core.plugin.AbstractPrintPlugin),随后在打印模板中注册该插件。4. 插件开发
4.1. 修改返回数据包
Java |
|
//单据体标识 private static final String ENTRY_FIELD = "entryentity"; //单据体中物料编码标识 private static final String ENTRY_MATERIA_NUMBER_FIELD = "kingdee_materia.number"; //二维码控件标识 private static final String QRCODE = "QRCode"; //主数据源标识 private static final String MAIN_DATASOURCE = "kingdee_purreq_gfh"; @Override public void afterLoadData(AfterLoadDataEvent evt) { super.afterLoadData(evt); List<DataRowSet> rowSets = evt.getDataRowSets(); List<DataRowSet> newRows = new ArrayList<>(); Iterator<DataRowSet> rowIterator = rowSets.iterator(); while (rowIterator.hasNext()) { DataRowSet rowSet = rowIterator.next(); List<DataRowSet> entryRows = rowSet.getCollectionField(ENTRY_FIELD).getValue(); entryRows.forEach(entryRow -> { //深拷贝新行,每行分录新增一行,如果不需要展示单据头和单据体字段,则可不用深拷贝 DataRowSet copy = rowSet.deepCopy(); copy.put(ENTRY_MATERIA_NUMBER_FIELD, entryRow.getField(ENTRY_MATERIA_NUMBER_FIELD)); newRows.add(copy); }); //删除当前单据行
| |
如何按分录行数据打印二维码
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



