如何在客户付款高级PDF模板获取发票行项目明细?能否在付款收据PDF模板展示?
在付款收据高级PDF模板中展示发票行级项目的可行性及实现方案
可行性说明
完全可行。只要你使用的财务系统(如NetSuite、QuickBooks Advanced等)的高级PDF模板支持关联付款记录对应的发票数据,就能实现展示发票行级项目的需求。这类系统通常会为付款记录提供关联发票的数据集,允许模板调用发票的行项目明细。
实现步骤(以主流模板语言Freemarker为例)
- 确认付款与发票的关联字段:付款记录一般包含类似
appliedToTransactions或linkedInvoices的关联字段,用于存储该付款对应的所有发票对象。 - 遍历关联发票集合:用循环语法遍历每一张被付款的发票,示例代码:
<#list payment.appliedToTransactions as invoice> - 嵌套遍历发票行项目:每张发票对象会包含行项目集合(如
lineItems或items),继续嵌套循环获取明细:<#list invoice.lineItems as lineItem> - 渲染行项目到PDF表格:将行项目的字段(商品名称、数量、单价、金额等)插入表格中,完整示例片段:
<table style="width:100%; border-collapse:collapse;"> <thead> <tr> <th style="border:1px solid #000; padding:8px;">商品名称</th> <th style="border:1px solid #000; padding:8px;">数量</th> <th style="border:1px solid #000; padding:8px;">单价</th> <th style="border:1px solid #000; padding:8px;">金额</th> </tr> </thead> <tbody> <#list payment.appliedToTransactions as invoice> <tr> <td colspan="4" style="border:1px solid #000; padding:8px; font-weight:bold;">发票号:${invoice.tranId}</td> </tr> <#list invoice.lineItems as line> <tr> <td style="border:1px solid #000; padding:8px;">${line.itemName}</td> <td style="border:1px solid #000; padding:8px; text-align:right;">${line.quantity}</td> <td style="border:1px solid #000; padding:8px; text-align:right;">${line.rate?string.currency}</td> <td style="border:1px solid #000; padding:8px; text-align:right;">${line.amount?string.currency}</td> </tr> </#list> </#list> </tbody> </table>
注意事项
- 字段名需匹配系统实际定义:不同系统的字段命名可能有差异,比如部分系统中商品名称为
line.item.displayName,需参考系统的模板对象文档确认。 - 处理多发票场景:若一笔付款对应多张发票,通过分组展示(如先显示发票号再列出对应行项目)避免内容混乱。
- 金额格式化:使用系统提供的格式化函数(如示例中的
?string.currency)确保金额显示符合货币规范。
内容的提问来源于stack exchange,提问作者Maira S
相关产品推荐
相关产品推荐

