使用 Freemarker 为发票上的特定项目返回数量 1
Returning a quantity of 1 for specific items on an invoice with Freemarker
我在 NetSuite 的高级 PDF/HTML 模板中使用 Freemarker 来生成发票。对于特定的项目类型,我想在发票上显示“1”而不是实际数量。这是基于 "Services" 的项目类别下拉字段选择。我目前的尝试如下。
<#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 语句,所以我想我错过了一些东西。
您的 if 语句看起来是正确的,这意味着 record.custitem_item_category?string?contains("Services")
没有返回您认为的值。通常你只会在数字上使用 ?string
将其转换为字符串,如果它已经是一个字符串,这是不必要的。
试着在每一行打印出 ${record.custitem_item_category}
,看看你得到了什么结果。如果其中一些包含 'Service' 那么你应该可以在你的 if 语句中使用 record.custitem_item_category?contains("Services")
。
从字段名称 custitem_xx
看来您正在尝试访问自定义项目字段。这里有两个问题。首先,您需要读取每一行的值(即它应该是 item.item.custitem_item_category
而不是 record.custitem_item_category
。但是另外(除非它最近被修复),在 NetSuite 中这样做只是 returns 来自每个单行项目的子列表的第一行。
您需要做的是创建一个自定义交易行字段并从项目的值中获取来源,然后您可以像 item.custcol_item_category
一样访问它。
[当您创建自定义字段时,取消选中存储值以确保它始终以最新值作为来源,并确保它在表单上的屏幕字段下被选中以显示在 UI - 否则它也不适用于您的模板。如果您确实想将其隐藏在 UI 中,您只需将标签空白即可。]
以下内容有效...
<#if item.colname=="Package">(这里可以设置1)
<#elseif item.colname=="Discount"/>(这里可以设置2)
<#else>
我在 NetSuite 的高级 PDF/HTML 模板中使用 Freemarker 来生成发票。对于特定的项目类型,我想在发票上显示“1”而不是实际数量。这是基于 "Services" 的项目类别下拉字段选择。我目前的尝试如下。
<#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 语句,所以我想我错过了一些东西。
您的 if 语句看起来是正确的,这意味着 record.custitem_item_category?string?contains("Services")
没有返回您认为的值。通常你只会在数字上使用 ?string
将其转换为字符串,如果它已经是一个字符串,这是不必要的。
试着在每一行打印出 ${record.custitem_item_category}
,看看你得到了什么结果。如果其中一些包含 'Service' 那么你应该可以在你的 if 语句中使用 record.custitem_item_category?contains("Services")
。
从字段名称 custitem_xx
看来您正在尝试访问自定义项目字段。这里有两个问题。首先,您需要读取每一行的值(即它应该是 item.item.custitem_item_category
而不是 record.custitem_item_category
。但是另外(除非它最近被修复),在 NetSuite 中这样做只是 returns 来自每个单行项目的子列表的第一行。
您需要做的是创建一个自定义交易行字段并从项目的值中获取来源,然后您可以像 item.custcol_item_category
一样访问它。
[当您创建自定义字段时,取消选中存储值以确保它始终以最新值作为来源,并确保它在表单上的屏幕字段下被选中以显示在 UI - 否则它也不适用于您的模板。如果您确实想将其隐藏在 UI 中,您只需将标签空白即可。]
以下内容有效...
<#if item.colname=="Package">(这里可以设置1)
<#elseif item.colname=="Discount"/>(这里可以设置2)
<#else>