我需要帮助Netsuite的Freemarker格式(高级PDF / HTML模板)
为此记录提取了3个重要数据值;
${item.quantity} *Order Value*
${item.fulfilled} *Fulfilled Value*
${item.backordered} *Backorder Value*
基本上,我试图完成的是,只显示" 延期交货"
然而,这项任务似乎比我有时间和技巧要困难得多。
所以,我的计划B正在使用一个单独的模板作为延期交货(到目前为止运作良好!)
问题在于,如果我遇到的商品是非商品商品,则Netsuite不会计算${item.backordered}
的任何数量
SO
我有什么方法可以"计算"在模板中使用脚本编写的延期交货值?
我可以使用算术函数(如下所示)吗?
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有基本的了解,但脚本对我来说仍然是一个新手,所以请只是建设性的批评。
答案 0 :(得分:0)
请参阅suitescript set custom column value netsuite的答案,了解对订单项值使用算术的示例。
答案 1 :(得分:0)
所以我认为根本问题在于Java JAR NetSuite正在使用。它似乎有一个空指针错误,其中包含空的int /数字类型值。
我建议添加一个UserEvent脚本,将值更改为零,为空。这样可以防止您收到的错误。您应该能够在加载前事件中捕获PRINT类型。如果零值未转移到模板,则可以添加未存储的自定义列字段并将值推送到那里。
答案 2 :(得分:0)
尝试将以下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>