Freemarker/Netsuite-为特定项目金额分配一个变量

Freemarker/Netsuite-为特定项目金额分配一个变量,netsuite,freemarker,Netsuite,Freemarker,我需要为Freemarker(Netsuite版本)中的特定项目金额分配一个变量,以便在发票模板的不同部分中使用 我正在努力弄清楚如何使用它。该项目将仅使用一次,并将位于发票的小计字段下方 有什么建议吗?查看 捕获数据: <#assign ord_number_is>Your order number is ${record.tranid}</#assign> ${ord_number_is} 您的订单号是${record.tranid} ${ord\U编号\U为}

我需要为Freemarker(Netsuite版本)中的特定项目金额分配一个变量,以便在发票模板的不同部分中使用

我正在努力弄清楚如何使用它。该项目将仅使用一次,并将位于发票的小计字段下方

有什么建议吗?

查看

捕获数据:

<#assign ord_number_is>Your order number is ${record.tranid}</#assign>
${ord_number_is}
您的订单号是${record.tranid}
${ord\U编号\U为}
设置数据:

<#assign fs_6="font-size: 6pt;" />
${fs_6}

${fs_6}
在NetSuite transaction advanced pdf表单中,大多数(所有?)事务中项目内容的“肉”以一行开头,例如:

<table class="itemtable"><!-- start items --><#list record.item as item><#if item_index==0>

然后,它在html表中提供内容(通常是项目),并使用以下结束标记完成循环:

</#list><!-- end items -->

当我需要首先从项目列表中收集信息,但不实际将其打印到pdf时,我喜欢遵循相同的结构减去html元素。对于您的情况,我认为您希望在子列表中标识特定项目,然后如果存在,请在表单的其他位置记录金额以备将来使用。使用上面的结构,可以是这样的:

<!-- assign variable to hold initial value -->
<#assign item_x_amount = 0>

<!-- populate the amount if the item is present in any row -->
<#list record.item as tmpLine>
    <#if (tmpLine.item == "Consulting Services")><#assign item_x_amount = item_x_amount + tmpLine.amount></#if>
</#list>

然后,在稍后创建小计表的代码中,添加变量标签和值。导致一个类似于以下内容的事务:

注:

  • 我冒昧地将您的要求扩大到“某一特定项目的金额总和”。这也涵盖了您的假设,即交易中只有一个匹配项,但人们很少总是遵循规则。如果您确实不希望出现这种行为,可以将
    更改为
  • 如果项目名称更改,则会中断。你没有提到你是如何识别有问题的物品的。使用有关项目的其他标识信息(可能是内部ID)更安全,或者更好的是使用事务行字段将其标记为要在此流程中使用的行
  • 我使用
    ${item\u x\u amount?string.currency}
希望这有帮助!我在NetSuite开发中经常使用这种技术