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

Posted

技术标签:

【中文标题】Netsuite 高级 PDF/HTML 模板的脚本问题【英文标题】:Scripting Issue with Netsuite Advanced PDF/HTML Template 【发布时间】:2017-02-19 16:27:34 【问题描述】:

我需要有关 Netsuite 的 Freemarker 格式的帮助(高级 PDF/html 模板

为此记录提取了 3 个重要的数据值;

$item.quantity     *Order Value*
$item.fulfilled    *Fulfilled Value*
$item.backordered  *Backorder Value*

基本上,我试图完成的是,只显示“延期交货”的项目

但是,这项任务似乎比我的时间和技能要困难得多。

所以,我的 B 计划正在为延期交货使用单独的模板(到目前为止效果很好!)

问题是,如果我遇到一个 NON-INVENTORY 项目,Netsuite 不会计算 $item.backordered 的任何数量

所以

有什么方法可以通过模板中的脚本“计算”延期交货值? 我可以使用算术函数(如下所示)吗?

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 有基本的了解,但脚本对我来说还是很陌生,所以请只提出建设性的批评。

【问题讨论】:

你在打印什么文件? 嗨@bknights 我正在尝试打印“拣货单” 【参考方案1】:

尝试将以下 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>

【讨论】:

正是我需要的,谢谢@michoel!完美运行 但是我刚刚注意到,当项目恰好完成一半时 但是,我刚刚注意到,当商品恰好完成了一半(即订购了 10,完成了 5,延期交货 5)时,该函数返回订单数量 (10) @michoel @SimonG 这很奇怪。对于故障排除,您可以尝试输出以下表达式以查看问题所在:$item.quantity$toNumber(item.quantity)$item.fulfilled$toNumber(item.fulfilled)【参考方案2】:

请参阅suitescript set custom column value netsuite 的答案,了解对订单项值使用算术运算的示例。

【讨论】:

感谢@bknights 我尝试将该示例代码插入到我的模板中,只是为了看看它是如何工作的。但是它一直给我错误,所以我将不得不花一些时间来重新构建它,以使其适合我的需要。【参考方案3】:

所以我认为根本问题在于 NetSuite 正在使用的 Java JAR。它似乎有一个空指针错误,带有空的 int/number 类型值。

我建议添加一个 UserEvent 脚本以将空值更改为零。这将防止您遇到的错误。您应该能够在加载前事件中捕获 PRINT 类型。如果零值没有传递到模板中,您可以添加一个未存储的自定义列字段并将值推送到那里。

【讨论】:

以上是关于Netsuite 高级 PDF/HTML 模板的脚本问题的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

Netsuite 高级 PDF/HTML 文本格式

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

Netsuite 高级 PDF/HTML 代码 ifelse 语句