You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按Memo字段分组NetSuite高级PDF客户对账单并生成分组小计?

NetSuite高级PDF按Memo分组做小计的实现方法

核心逻辑

用FreeMarker的列表循环+变量追踪来实现分组,本质就是先把发票按Memo排序,然后遍历的时候盯着当前Memo,不一样就输出上一组的小计,接着重新累计,最后别忘了输出最后一组的数值。

具体操作步骤

  • 先给发票按Memo排序
    模板开头先把发票集合按Memo字段排序,不然分组会混乱:

    <#assign sortedInvoices = invoices?sort_by("memo")>
    

    注意:invoices是模板里拿到的发票集合变量,你得换成自己模板里的实际变量名,比如有的模板用transactions或者records。

  • 初始化追踪变量
    循环前先定义两个变量,一个记录当前的Memo,一个存储当前组的累计金额:

    <#assign currentMemo = "">
    <#assign memoSubtotal = 0>
    
  • 循环处理发票+分组算小计
    遍历排序后的发票,判断当前发票的Memo和记录的是否一致,不一致就输出上一组的小计,然后重置变量;一致就继续累加金额:

    <#list sortedInvoices as inv>
      <#if inv.memo != currentMemo>
        <#-- 如果不是第一次循环,输出上一组的小计 -->
        <#if currentMemo != "">
          <tr>
            <td colspan="4" align="right"><strong>${currentMemo} 小计:</strong></td>
            <td align="right">${memoSubtotal?string.currency}</td>
          </tr>
        </#if>
        <#-- 更新当前Memo,重置小计为当前发票金额 -->
        <#assign currentMemo = inv.memo>
        <#assign memoSubtotal = inv.amount>
        <#-- 可选:输出分组标题,让结构更清晰 -->
        <tr>
          <td colspan="5"><strong>备注项: ${currentMemo}</strong></td>
        </tr>
      <#else>
        <#-- 同一Memo,累加金额 -->
        <#assign memoSubtotal = memoSubtotal + inv.amount>
      </#if>
    
      <#-- 输出当前发票的明细行,这里按你模板的表格结构改字段 -->
      <tr>
        <td>${inv.tranid}</td>
        <td>${inv.trandate?date}</td>
        <td>${inv.memo}</td>
        <td>${inv.item}</td>
        <td>${inv.amount?string.currency}</td>
      </tr>
    </#list>
    
    <#-- 循环结束后,输出最后一组的小计 -->
    <#if currentMemo != "">
      <tr>
        <td colspan="4" align="right"><strong>${currentMemo} 小计:</strong></td>
        <td align="right">${memoSubtotal?string.currency}</td>
      </tr>
    </#if>
    
  • 要注意的坑

    • 字段名要对应:NetSuite里发票的金额字段可能是amount、total或者其他,你得根据自己模板里的实际字段调整。
    • 处理空Memo:如果有发票没填Memo,要加非空判断,比如<#if (inv.memo?? && inv.memo != "")>,避免把空字符串当成一个分组。
    • 表格样式适配:colspan要和你模板里的表格列数对应,对齐方式也得和现有格式匹配,不然PDF排版会错乱。

验证方法

找几个带不同Memo的测试发票,把代码粘到你的高级PDF模板里,预览一下看看分组和小计是否正确。

内容的提问来源于stack exchange,提问作者beepboop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:45:34