У меня есть следующий код HTML-шаблона NetSuite Advanced PDF, который выдает мне ошибку:
<#if record.item?has_content>
<table class="itemtable" style="width: 100%;"><!-- start items --><#list record.item as item><#if item_index==0>
<thead>
<tr>
<th colspan="4">Item Code</th>
<th colspan="12">Item Description</th>
<th align="right" colspan="2">UOM1</th>
<th align="right" colspan="3">${item.quantity@label}</th>
<th align="right" colspan="3">UOM2</th>
<th align="right" colspan="4">Unit Price (excl. VAT)</th>
<th align="right" colspan="3">${item.amount@label}</th>
</tr>
</thead>
</#if><tr>
<td colspan="4">${item.item}</td>
<td colspan="12">${item.description}</td>
<td align="right" colspan="2">${item.custcolsyn_uom} ${item.custcolsyn_unit_measure}</td>
<td align="right" colspan="3">${item.quantity}</td>
<td align="right" colspan="3">${item.units}</td>
<td align="right" colspan="4"><#if item.rate?has_content>${item.rate?keep_before_last(".")}.${item.rate?keep_after_last(".")[0..1]}<#else> </#if></td>
<td align="right" colspan="3">${item.amount}</td>
</tr>
</#list><!-- end items --></table>
</#if>
Проблема связана со строкой:
<td align="right" colspan="4"><#if item.rate?has_content>${item.rate?keep_before_last(".")}.${item.rate?keep_after_last(".")[0..1]}<#else> </#if></td>
Похоже, FreeMarkerоценивая следующую часть
${item.rate?keep_before_last(".")}.${item.rate?keep_after_last(".")[0..1]}
, даже если в позиции ничего нет для ставки.Конечно,
<#if item.rate?has_content>
должен предотвратить эту оценку.Я пытался сохранить только валютные данные на 2 десятичных знака, а все другие методы, которые я пытался, потеряли символ валюты.
Мы находимся на последней версии NetSuite (2018.2).
Сообщение об ошибкеэто:
The template cannot be printed due to the following errors:
Error on line 239, column 95 in template.
Detail...
Range start index 0 is out of bounds, because the sliced string has only 0 character(s). (Note that indices are 0-based).
The blamed expression:
==> 0..1 [in template "template" at line 239, column 128]
----
FTL stack trace ("~" means nesting-related):
- Failed at: ${item.rate?keep_after_last(".")[0..1]} [in template "template" at line 239, column 95]
----
Please contact your administrator.
У кого-нибудь есть идеи, что я делаю неправильно или как я могу это исправить?