Netsuite / Freemarker - 访问电子邮件模板中的交易行级别数据
Posted
技术标签:
【中文标题】Netsuite / Freemarker - 访问电子邮件模板中的交易行级别数据【英文标题】:Netsuite / Freemarker - accessing transaction line level data in email template 【发布时间】:2020-01-25 21:29:55 【问题描述】:我正在尝试采用当前电子邮件模板,我的组织使用该模板根据客户当前的待处理交易请求订单存款,因此 freemarker 可以很好地获取 $transaction.tranId 等。
我有一个新要求,即获取交易行级超链接并将其与电子邮件请求一起发送,但我只想在该数据存在且仅针对链接适用的项目时发送它。
<#if (record.item.custcol1)?has_content>
<p><strong>Please re-review the following artwork proof link(s) associated with your order:</strong></p>
<table style="width: 100%; margin-top: 10px;"><!-- start items --><#list record.item as item>
<thead>
<tr>
<th align="left" colspan="3" style="padding: 10px 6px;">$item.custcol1@label</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" colspan="3" line->$item.custcol1</td>
</tr>
</#list><!-- end items -->
</tbody>
</table>
<hr style="width: 100%; color: #d3d3d3; background-color: #d3d3d3; height: 1px;" /></#if>
我似乎无法像在 PDF 表单中那样访问行级数据。我已经在已知记录上尝试了没有 if 语句的代码,我知道我有数据可以访问,但它不会将字段提取到电子邮件中。
【问题讨论】:
如果我没看错并理解您的要求,您应该在<#if>
中包含 <#if>
块 - 您想要测试每个项目的字段内容,而不是整个项目列表作为一个块。此外,record.item.custcol1
将无效 - 您需要为要测试的项目提供索引,例如:record.item[0].custcol1
如果这是您的意图。
【参考方案1】:
看起来你的<#list>
应该只在表格行周围,像这样:
<table style="width: 100%; margin-top: 10px;">
<thead>
<tr>
<th align="left" colspan="3" style="padding: 10px 6px;">$item.custcol1@label</th>
</tr>
</thead>
<tbody>
<#list record.item as item>
<tr>
<td align="left" colspan="3" line->$item.custcol1</td>
</tr>
</#list>
</tbody>
</table>
【讨论】:
以上是关于Netsuite / Freemarker - 访问电子邮件模板中的交易行级别数据的主要内容,如果未能解决你的问题,请参考以下文章
NetSuite 高级 PDF 模板 - Freemarker 语法
在变量 freemarker 中显示引号 - netsuite 高级 pdf
NetSuite:FreeMarker/BFO 图像在分页时被切断