二开案例.差旅费报销单打印

【场景】
差旅费报销单,有行程信息和对应的明细信息。打印的时候希望是可以按照行程信息以及对应的差旅费类型进行合计。
同一条行程只打印一次。
实现效果类似于:

【数据准备】

我们需要先了解下这个单据:
它的行程信息和明细并不是两个单据体,行程信息其实就是明细信息的字段,通过插件的方式汇总展示在行程信息的页签中,数据本身还是存储在明细信息中的。明细信息中有一个字段——关联行程(FTravelSeq),这个是区别明细属于哪一条行程的依据,也是我们套打实现按照行程信息分组的依据。
【模板设计】
首先我们需要搭建模板的雏形,通过数据表格绑定明细信息的方式,打印需要的字段。模板设计和效果如下图,可以看到是把明细信息所有行的数据都正常打印出来了。


我们要根据行程对这个数据进行合并。有两个方案。
方案一:使用汇总管理实现。按照关联行程字段汇总差旅费金额。
方案二:使用分组管理实现。按照关联行程字段进行分组,打印分组行。
方案二的适用场景更多(针对于既需要打印行程信息又需要打印明细信息的情况,只能用方案二实现),但是方案一更简单,可以根据实际场景选择方案实现。
【方案一】
①设置汇总管理。


②实现效果。

③聚合动态字段汇总不同差旅费类型的字段。
a、分组表达式为关联行程字段FTravelSeq
b、表达式实现过滤出差旅费类型为CLLX005的分录行,并汇总差旅费金额字段FTravelAmount的值。
sum(map(lambda x: x.FTravelAmount ,filter(lambda x: x.FTravelType != null and x.FTravelType.FNumber=='CLLX005', ActiveObject)))

c、套打模板都是按需取数的,模板里没有加入的字段是不会取数的。复杂表达式的话,模板没办法识别到对应字段,所有需要在动态字段里将聚合动态字段中用到的字段都取一下。

④数据行绑定聚合动态字段。

⑤设置单元格格式。

⑥实现效果。

【方案二】
①设置分组管理。

②设置数据行和其中的一个分组行不打印。

③设置聚合动态字段汇总不同的差旅费类型的字段。(与方案一中的聚合动态字段一样的设置方式。)
a、分组表达式为关联行程字段FTr
二开案例.差旅费报销单打印
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



