一招教你如何打印勾选分录行

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

一招教你如何打印勾选分录行

1. 案例介绍

    在采购申请单详情页中,仅打印采购分录中已勾选的记录,未勾选的数据不打印出来。此文档介绍了此类场景下,如何通过插件开发实现打印已选分录数据。

2. 适用版本

金蝶云苍穹 V4.0.0012及以上版本

3. 模板配置

3.1 模板设计

    新增打印模板,拖拽添加数据表格控件,并选择采购申请单单据体相关字段

3.2 注册插件

    创建插件类EntrySelectedPrintPlugin,并继承AbstractPrintPlugin打印插件基类。(基类全路径kd.bos.print.core.plugin.AbstractPrintPlugin),随后在打印模板中注册该插件。

4. 插件开发

Java

 

public class EntrySelectedPrintPlugin extends AbstractPrintPlugin {

    //单据体标识

    private static final String ENTRY_FIELD = "entryentity";

    @Override

    public void afterLoadData(AfterLoadDataEvent evt) {

        super.afterLoadData(evt);

        final PrtDataSource dataSource;

        //数据源为主数据源类型

        if (!((dataSource = evt.getDataSource()) instanceof MainDataSource)) {

            return;

        }

        String pageId;

        // pageId不可以为空

        if (StringUtils.isBlank(pageId = ((MainDataSource)dataSource).getPageId())) {

            return;

        }

        int[] selectRows;

        final EntryGrid entryEntity =             SessionManager.getCurrent().getView(pageId).getControl(ENTRY_FIELD);

        //分录控件存在,且所选分录至少勾选一行

        if (entryEntity == null || (selectRows = entryEntity.getSelectRows()).length <= 0) {

            return;

        }

        //移除未勾选的分录行

        for (DataRowSet row : evt.getDataRowSets()) {

            List<DataRowSet> entryRows = row.getCollectionField(ENTRY_FIELD).getValue();

            List<DataRowSet> moveRows = new ArrayList<>(selectRows.length);

            Arrays.stream(selectRows).forEach(index -> moveRows.add(entryRows.get(index)));

            row.getCollectionField(ENTRY_FIELD).setValue(moveRows);

        }

    }

}



    打印已勾选分录行可以通过重写afterLoadData方法,修改打印渲染pdf前的数据,将未被勾选的分录数据过滤掉,仅仅打印出需要的数据。

要点:

  • 如何在打印插件事件中获取分录中已勾选行

  • 如何修改打印前数据包

5. 效果预览

5.1 打印前操作

步骤一:勾选采购申请单采购分录第2、3行记录,仅仅期望打印勾选行

步骤二:点击打印按钮开始打印

5.2 效果预览

可以看到打印预览时仅仅打印了之前勾选的第2、3行记录


一招教你如何打印勾选分录行

1. 案例介绍 在采购申请单详情页中,仅打印采购分录中已勾选的记录,未勾选的数据不打印出来。此文档介绍了此类场景下,如何通过插件开...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息