如何实现合并打印

场景一:
同一单据的一张单内的合并打印
1、适用版本
金蝶云苍穹 V4.0.014以上
2、解决方案
步骤1:点击数据表格的数据行

步骤2:选择合并依据字段(只能选中数据行中配置的字段),可以有多个合并依据字段

步骤3:选择需要汇总的字段,
若合并汇总字段为数值类字段时,则汇总字段进行相加。
若合并汇总字段为文本类字段时,则多个内容以逗号相隔汇总在一个单元格中。

单据数据:

打印结果:


场景二:
同一单据的多单合并打印
1.1、适用版本
金蝶云苍穹 V6.0.9及以上
2.1、解决方案
步骤1:开启多单合并打印参数:

步骤2:设置合并依据字段和合并汇总字段

单据数据:

打印结果:

2.2、适用版本
金蝶云苍穹 V6.0.9以下
3.2、解决方案
以采购申请的一个常见场景为例,把同一个申请人的单据合并打印在一张纸上,不同的申请人进行分页。并将单据体中的金额合并计算后以中文大写金额打印在头部上,在数据表格(单据体)中展示单据编号、单据状态、物料名称、申请数量、单价、金额等信息
打印模板的配置:

二开打印插件:
package plugin.print;
import akka.util.Switch;
import kd.bos.print.core.data.DataRowSet;
import kd.bos.print.core.data.field.CollectionField;
import kd.bos.print.core.data.field.Field;
import kd.bos.print.core.data.field.TextField;
import kd.bos.print.core.plugin.AbstractPrintPlugin;
import kd.bos.print.core.plugin.event.*;
import kd.bos.print.core.plugin.event.bo.PWGridCellBo;
import kd.sdk.plugin.Plugin;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 新的打印插件
*/
public class print2merge extends AbstractPrintPlugin implements Plugin {
//分录标识
private static final String ENTRY="entryentity";
//申请人名称的标识
private static final String APPLYNAME="pio1_basedatafield.name";
//单据编码标识
private static final String BILLNO="billno";
//单据状态的标识
private static final String BILLSTATUS="billstatus";
//分录的标识
private static final String ENTRYDATASOUCE="pio1_testforfile.entryentity";
@Override
public void afterLoadData(AfterLoadDataEvent evt) {
//获取单据数据
List<DataRowSet> dataRowSets = evt.getDataRowSets();
//构造合并分页数据
List<DataRowSet> newDataRowSets=new ArrayList<>(10);
//遍历每条单据
for (DataRowSet dataRowSet : dataRowSets) {
//此申请人的数据是否在newDataRowSets中
Boolean isexist=false;
//获取分录数据
List<DataRowSet> entryrow = dataRowSet.getCollectionField(ENTRY).getValue();
//单据头的编码和状态添加到分录的每条数据
for (DataRowSet rowSet : entryrow) {
rowSet.put(BILLNO,dataRowSet.getField(BILLNO));
rowSet.put(BILLSTATUS,dataRowSet.getField(BILLSTATUS));
}
//单据头的编码清空
dataRowSet.remove(BILLNO);
//单据头的状态清空
dataRowSet.remove(BILLSTATUS);
//遍历已经合并的数据,检查是否存在相同的申请人,则合并在一起
for (DataRowSet newDataRowSet : newDataRowSets) {
//是否在newDataRowSets中已经存在此申请人,有则进行分录数据的合并
if( dataRowSet.getField(APPLYNAME).getValue().equals(newDataRowSet.getField(APPLYNAME).getValue()))
如何实现合并打印
场景一: 同一单据的一张单内的合并打印1、适用版本金蝶云苍穹 V4.0.014以上2、解决方案步骤1:点击数据表格的数据行步骤2:选择合并依据...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



