重复的问题,对不起......
答案 0 :(得分:2)
完整的Freemarker文档可用here。
没有内置函数,例如group_by()
或sum()
,虽然您可以使用<#list>
指令等将某些内容放在一起,但您可以更轻松地执行此操作在JavaScript中使用像lodash这样的库。
有关如何组合SuiteScript和高级PDF / HTML模板的详细信息,请参阅帮助部分主题Using SuiteScript to Apply Advanced Templates to Non-Transaction Records,或者如果您使用的是SS2.0,请参阅N/render
模块。
答案 1 :(得分:1)
如果您可以在将数据传递给freemarker之前进行处理/分组,那么您最好离开。但是,如果你正在做一些像扩展标准交易形式这样的事情,那不是一个简单的选择。
您可以使用序列操作来模拟分组。 (见http://freemarker.org/docs/ref_builtins_sequence.html)
然后:
<#assign seen_style = []>
<#list record.item?sort_by('custcol_style') as lineitem>
<#assign lineStyle = lineitem.custcol_style>
<#if seen_style?seq_contains(lineStyle)>
<#else>
<#assign seen_style = seen_style + [lineStyle]>
<#assign styleTotal = 0>
<#list record.item?sort_by('custcol_size') as styleItem>
<#if lineStyle == styleItem.custcol_style>
<#assign styleTotal = styleTotal + styleItem.quantity>
</if>
</#list>
<div>${lineStyle} has ${styleTotal}</div>
</#if>
</#list>