Netsuite Advanced PDF/HTML 模板的脚本问题
Scripting Issue with Netsuite Advanced PDF/HTML Template
我需要有关 Netsuite 的 Freemarker 格式的帮助(高级 PDF/HTML 模板)
此记录有 3 个重要数据值;
${item.quantity} *Order Value*
${item.fulfilled} *Fulfilled Value*
${item.backordered} *Backorder Value*
基本上,我试图完成的是只显示“延期交货”的项目
然而,这项任务似乎比我有时间和技能要难得多。
因此,我的计划 B 正在为延期交货使用单独的模板 (到目前为止效果很好!)
问题是,如果我遇到一个 非库存 项目,Netsuite 不会计算 ${item.backordered}
的任何数量
所以
有什么方法可以 "calculate" 在模板中使用脚本编写延期交货值吗?
我可以使用算术函数(如下所示)吗?
item.quantity - item.fulfilled = item.backordered
这是围绕该查询的文本的基本格式;
<#if record.item?has_content>
<table><#list record.item as item><#if item_index==0>
<thead>
<tr>
<th> QTY </th>
</tr>
</thead>
</#if>
<tr>
<td> ${item.backordered} </td>
</tr>
</#list></table>
</#if>
我对HTML和CSS有基本的了解,但脚本对我来说还是很新的,所以请只提出建设性的批评。
请参阅 suitescript set custom column value netsuite 的答案以获取对订单项值使用算术的示例。
所以我认为根本问题在于 NetSuite 正在使用的 Java JAR。它似乎有一个空指针错误,int/number 类型值为空。
我建议添加一个 UserEvent 脚本来将空值更改为零。这将防止你得到的错误。您应该能够在加载前事件中捕获 PRINT 类型。如果零值未转移到模板,您可以添加未存储的自定义列字段并将值推送到那里。
尝试将以下 Freemarker 辅助函数添加到您的模板中:
<#function toNumber val>
<#if val?has_content && val?length gt 0 >
<#return val?html?replace('[^0-9.]','','r')?number >
<#else>
<#return 0 >
</#if>
</#function>
这将确保所有字段都被正确解析为数字,并且您应该能够在这些字段上无误地执行数学计算。
所以你可以替换:
<td> ${item.backordered} </td>
与:
<td> ${toNumber(item.quantity) - toNumber(item.fulfilled)} </td>
我需要有关 Netsuite 的 Freemarker 格式的帮助(高级 PDF/HTML 模板)
此记录有 3 个重要数据值;
${item.quantity} *Order Value*
${item.fulfilled} *Fulfilled Value*
${item.backordered} *Backorder Value*
基本上,我试图完成的是只显示“延期交货”的项目
然而,这项任务似乎比我有时间和技能要难得多。
因此,我的计划 B 正在为延期交货使用单独的模板 (到目前为止效果很好!)
问题是,如果我遇到一个 非库存 项目,Netsuite 不会计算 ${item.backordered}
所以
有什么方法可以 "calculate" 在模板中使用脚本编写延期交货值吗?
我可以使用算术函数(如下所示)吗?
item.quantity - item.fulfilled = item.backordered
这是围绕该查询的文本的基本格式;
<#if record.item?has_content>
<table><#list record.item as item><#if item_index==0>
<thead>
<tr>
<th> QTY </th>
</tr>
</thead>
</#if>
<tr>
<td> ${item.backordered} </td>
</tr>
</#list></table>
</#if>
我对HTML和CSS有基本的了解,但脚本对我来说还是很新的,所以请只提出建设性的批评。
请参阅 suitescript set custom column value netsuite 的答案以获取对订单项值使用算术的示例。
所以我认为根本问题在于 NetSuite 正在使用的 Java JAR。它似乎有一个空指针错误,int/number 类型值为空。
我建议添加一个 UserEvent 脚本来将空值更改为零。这将防止你得到的错误。您应该能够在加载前事件中捕获 PRINT 类型。如果零值未转移到模板,您可以添加未存储的自定义列字段并将值推送到那里。
尝试将以下 Freemarker 辅助函数添加到您的模板中:
<#function toNumber val>
<#if val?has_content && val?length gt 0 >
<#return val?html?replace('[^0-9.]','','r')?number >
<#else>
<#return 0 >
</#if>
</#function>
这将确保所有字段都被正确解析为数字,并且您应该能够在这些字段上无误地执行数学计算。
所以你可以替换:
<td> ${item.backordered} </td>
与:
<td> ${toNumber(item.quantity) - toNumber(item.fulfilled)} </td>