如何实现在单据转换中将目标的分录数据合计到单据头原创
金蝶云社区-闫方亮
闫方亮
4人赞赏了该文章 1,929次浏览 未经作者许可,禁止转载编辑于2022年04月15日 14:03:44
summary-icon摘要由AI智能服务提供

本文描述了单据转换(BOTP)过程中,如何通过点击“下推”和“选单”按钮实现单据分录金额合计并赋值到单据头总金额字段的实现方案。详细步骤包括配置转换规则、添加按钮并绑定操作、编写转换规则插件类以实现功能。展示了创建采购申请和采购订单页面、配置规则、编写插件代码及绑定操作的过程,并给出了实现后的效果图和注意事项。开发环境为轻量级,版本号具体为苍穹和星瀚的V4.0.014.0版本。

关键词:单据转换(BOTP)、下推、选单、分录数据合计单据头


一、需求背景

        1.1单据进行转换的过程中,点击上游单据中的下推按钮需要实现将目标单据分录中的金额字段合计,并赋值到单据头的总金额字段。

        1.2点击目标单据中的选单按钮,将目标单据分录中的金额字段合计,并赋值到单据头的总金额字段。

二、实现方案

        2.1首先需要有源单、目标单两张单据,在转换规则那里配置转换规则

        2.2在源单据页面上添加下推按钮,在目标单上添加选单按钮,并绑定对应的操作

        2.3编写转换规则插件类,注册插件到转换规则里,重写afterCreateLink方法,实现汇总分录金额到单据头总金额字段。

三、实现过程

        3.1首先创建采购申请界面,启用参与单据转换,如下图3.1所示:

image.png

图3.1

        3.2创建采购订单页面,启用参与单据转换,配置关联配置属性,如下图3.2所示:

image.png

图3.2

        3.3配置转换规则,流程服务云-业务流服务-单据转换-转换路线中配置转换规则,注意要启用如下图3.3所示:

image.png

图3.3

        3.4在采购申请页面添加下推按钮,并绑定下推操作,如下图3.4所示

image.png

图3.4

        3.5编写转换插件代码,将插件类注册到转换规则的插件里面,如下图3.5所示:

public class InitVariableSample extends AbstractConvertPlugIn {

    //目标单据主实体标识
    private String targetEntityNumber;

    @Override
    public void initVariable(InitVariableEventArgs e) {
        super.initVariable(e);
        this.targetEntityNumber = this.getTgtMainType().getName();
    }

    @Override
    public void afterCreateLink(AfterCreateLinkEventArgs e) {
        super.afterCreateLink(e);
        ExtendedDataEntity[] billDataEntitys = e.getTargetExtDataEntitySet().FindByEntityKey(this.targetEntityNumber);
        // 逐单合计单据头金额字段值
        for (ExtendedDataEntity billDataEntity : billDataEntitys) {
            this.calcAmount(billDataEntity);
        }
    }

    private void calcAmount(ExtendedDataEntity billDataEntity) {
        //目标单单据体数据,采购订单的单据体标识  
        DynamicObjectCollection entryRows = (DynamicObjectCollection) billDataEntity.getValue("entryentity");
        BigDecimal sumAmount = new BigDecimal(0);//合计单据体的金额字段  
        for (DynamicObject dynamicObject : entryRows) {//分录金额字段标识kdec_amount
            BigDecimal amount = dynamicObject.getBigDecimal("kdec_amountfield1");
            sumAmount = sumAmount.add(amount);
        }
        //设置合计字段到单据头的总金额字段(kdec_amountfield)
        billDataEntity.setValue("kdec_amountfield", sumAmount);
    }
}

image.png

图3.5


        3.6在采购订单中添加选单按钮,绑定选单操作,如下图3.6所示:

image.png

图3.6

四、效果图

        4.1点击采购申请下推操作后,采购订单单据头显示分录金额的合计在总金额字段上如图4.1所示:

image.png

图4.1

        4.2点击采购订单上的选单按钮操作后,获得的采购订单效果图如下图4.2所示:

image.png

image.png

五、开发环境版本

        不限,本样例采用的轻量级环境,版本是: 苍穹版本号 COSMICV4.0.014.0  星瀚版本号 CONSTELLATIONV4.0.014.0

六、注意事项

        参与单据转换的单据必须在页面的业务控制中启用参与单据转换开关,目标单据必须进行关联配置,一定要将配置转换规则启用,插件类注册的位置是在单据转换规则的插件里。

七、参考资料

PC单据页面开发

BOTP单据转换

学习成长中心

参考附件中的代码补丁

  1. 元数据直接在开发平台导入

  2. 源代码直接在开发工具idea/eclipse中导入


图标赞 4
4人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!