使用Freemarker返回发票上特定项目的数量1

时间:2018-07-31 02:20:25

标签: netsuite freemarker

我正在NetSuite的Advanced PDF / HTML模板中使用Freemarker生成发票。对于特定的物料类型,我想在发票上显示“ 1”而不是实际数量。这基于“服务”的项目类别下拉字段选择。我当前的尝试如下。

<#if record.custitem_item_category?string?contains("Services")>
<td align="center" colspan="3" line-height="150%">1</td>
<#else>
<td align="center" colspan="3" line-height="150%">${item.quantity}</td>
</#if>

我尝试使用?has_content验证初始的#if语句,但是它只是跳到#else语句,因此认为我在那里错过了一些东西。

3 个答案:

答案 0 :(得分:0)

您的if语句看起来正确,这意味着record.custitem_item_category?string?contains("Services")未返回您认为正确的值。通常,您仅在数字上使用?string即可将其转换为字符串,如果已经是字符串,则没有必要。

尝试仅在每一行上打印出${record.custitem_item_category},然后查看得到的结果。如果其中一些包含“服务”,那么您可以在if语句中使用record.custitem_item_category?contains("Services")

答案 1 :(得分:0)

在字段名custitem_xx中,听起来好像您正在尝试访问“自定义项”字段。这里有两个问题。首先,您需要从每一行读取值(即应为item.item.custitem_item_category而不是record.custitem_item_category。但是(除非最近已修复),否则在NetSuite中这样做只是从第一行的值返回每个订单项的子列表。

您需要做的是创建一个“自定义交易行”字段,并从该项目的值中获取源,然后您将像item.custcol_item_category一样访问该字段。

[[创建自定义字段时,请取消选中“存储值”以确保它始终是最新的值,并确保在窗体的“屏幕字段”下选中它以显示在UI中-否则它将不可用到您的模板。如果确实要在用户界面中隐藏它,则可以将标签空白。]

答案 2 :(得分:0)

下面的东西有用...

<#if item.colname ==“ Package”>(您可以在此处设置1)

<#elseif item.colname ==“ Discount” />(您可以在此处设置2)

<#else>