Netsuite PDF/HTML 模板上带有数字范围的 IF 语句

Posted

技术标签:

【中文标题】Netsuite PDF/HTML 模板上带有数字范围的 IF 语句【英文标题】:IF Statement with Number Range on Netsuite PDF/HTML Template 【发布时间】:2017-07-21 12:37:24 【问题描述】:

我需要指定默认运输方式,因为在 Netsuite 的输入表单上没有提供任何信息。由于各种原因,我必须在 PDF/html 模板中执行此操作。 这是我到目前为止的代码,但它似乎不起作用;

<#function toNumber val>
<#if val?has_content && val?length gt 0 >
<#return val?html?replace('[^0-9.]','','r')?number >
<#else><#return 0 ></#if></#function>

<#if record.shipmethod?has_content>

$record.shipmethod  <!-- if a courier is selected -->

<#else>               <!-- else -->
<#list 2000..2560 as pcx>  <!-- Sydney Metro postcodes -->
<#if toNumber(record.shipzip)==pcx> 

Courier1              <!-- Standard Sydney Metro Courier -->

<#else>               <!-- else -->

Courier2              <!-- Standard Interstate Courier -->

</#if></#list></#if>

【问题讨论】:

【参考方案1】:

您的循环每次运行时都会打印一些内容(即 560 行)!您应该使用lte(小于或等于)和gte(大于或等于)comparison operators 来测试邮政编码是否在所需范围内,而不是循环遍历数字:

<#function toNumber val>
<#if val?has_content && val?length gt 0 >
<#return val?html?replace('[^0-9.]','','r')?number >
<#else><#return 0 ></#if></#function>

<#assign zip = toNumber(record.shipzip)>

<#if record.shipmethod?has_content>
  $record.shipmethod
<#elseif zip gte 2000 && zip lte 2560 >
  Courier 1
<#else>
  Courier 2
</#if>

【讨论】:

以上是关于Netsuite PDF/HTML 模板上带有数字范围的 IF 语句的主要内容,如果未能解决你的问题,请参考以下文章

在 NetSuite 中,如何在高级 PDF/HTML 模板中打印相关记录

Netsuite 高级 PDF/HTML 模板的脚本问题

使用 Netsuite 高级 PDF/HTML 模板进行条件打印(零值)

NetSuite:如何使用高级 PDF/HTML 模板在分组发票中引用自定义字段

如何使用高级 PDF/HTML 模板工具在 NetSuite 保存的搜索中打印多个公式字段?

Netsuite 高级 PDF/HTML 模板:将页脚设置为仅显示在最后一页