如何在 netsuite/freemarker 的高级 pdf/html 工作表中对列表进行分组?
Posted
技术标签:
【中文标题】如何在 netsuite/freemarker 的高级 pdf/html 工作表中对列表进行分组?【英文标题】:How can I group a list in an advanced pdf/html sheet in netsuite/freemarker? 【发布时间】:2020-05-20 16:29:24 【问题描述】:我想将每个部门组合在一起创建一个摘要。
例如,如果我在行级别的发票中有以下数据:
部门/金额/船/税/总计: A1/15/0/0/15 A1/30/0/0/30 A1/5/0/0/5 A2/45/0/0/45 A3/50/0/0/50 A4/45/0/0/45我希望它打印如下:
部门/金额/船/税/总计: A1/50/0/0/50 A2/45/0/0/45 A3/50/0/0/50 A4/45/0/0/45 总计/190/0/0/190这是我目前所拥有的,但它没有将它们分组:
`<table style="width: 100%; margin-top: 10px;">
<thead>
<tr>
<td border-bottom="1px solid black" >Department</td>
<td border-bottom="1px solid black" >Merchandise Amount</td>
<td border-bottom="1px solid black" >Del./Sve. Amount</td>
<td border-bottom="1px solid black" >Tax Amount</td>
<td border-bottom="1px solid black" >Total Inv. Amount</td>
</tr>
</thead>
<#list record.line?sort as item><#assign i = 0>
<#assign memo_check = ["A1", "A2", "A3", "A4", "A5", "A6", "A7"]/>
<#if memo_check[i] != item.memo>
<!--DO NOTHING-->
</#if>
<#assign i += 1>
<tr>
<td >$item.memo</td>
<td >$item.amount</td>
<td >0.00</td>
<td >0.00</td>
<td >$item.amount</td>
</tr>
</#list>
</table>`
【问题讨论】:
进行这样的计算不是模板引擎的用途。我不知道 Netsuite,但它不能在项目暴露给模板之前对其进行分组吗? 【参考方案1】:基本上,您通过遍历每个部门的所有项目来做到这一点。
见How to remove duplicate elements in a array using freemarker?
对此进行一些讨论,然后在“使用 $groupId 做某事”的地方进行讨论,您会执行以下操作:
<#assign dept_total = 0>
<#list record.item as dept_item>
<#assign line_dept = dept_item.memo>
<#if line_dept == groupId>
<#assign dept_total = dept_total + dept_item.amount>
... // any other calculations
</#list>
... // use the dept_total etc
// then the outer loop will find the next unique dept.
【讨论】:
dept_total 似乎不起作用,因为它返回“0” - 初始分配。你知道是什么让它表现得那样吗?这是我使用上述帮助的代码的一部分:<#assign dept_total = 0> <#list record.item as dept_item> <#assign line_dept = item.memo> <#if line_dept == groupId> <#assign dept_total =+ dept_item.amount></#if></#list> <tr><td width="32%">$item.memo</td> <td width="20%">$dept_total</td> <td width="17%">$0.00</td> <td width="14%">$0.00</td> <td width="17%">$dept_total</td> </tr>
从您发布的内容来看,您拥有=+
而不是+=
。我希望这会引发错误。以上是关于如何在 netsuite/freemarker 的高级 pdf/html 工作表中对列表进行分组?的主要内容,如果未能解决你的问题,请参考以下文章
Netsuite / Freemarker - 访问电子邮件模板中的交易行级别数据