使用Netsuite Advanced PDF / HTML模板编写脚本问题

时间:2016-10-11 07:07:04

标签: html templates pdf freemarker netsuite

我需要帮助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有基本的了解,但脚本对我来说仍然是一个新手,所以请只是建设性的批评。

3 个答案:

答案 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>