NetSuite高级PDF逾期日期添加星号功能故障排查求助
NetSuite高级PDF模板:逾期日期星号显示问题修复
问题分析
你当前的代码中daysoverdue gt 0的判断始终不生效,根源在于:
- 当
line.duedate不是日期格式时,daysoverdue被赋值为空字符串"",此时和数字0比较会触发隐性类型不匹配错误,导致判断逻辑不成立,直接进入else分支。 - 必须保留
line.datecol?has_content判断,否则空值的datecol会引发报表打印报错。
解决方案
核心是统一daysoverdue的类型,避免空字符串参与数值比较:
- 当
line.duedate非日期时,将daysoverdue赋值为数字0(而非空字符串),确保它始终是数字类型。 - 在判断条件中,先验证
daysoverdue是数字且大于0,同时保留line.datecol?has_content的检查。
修改后的代码
<#if line.duedate?is_date_like> <#assign d2 = line.duedate?long> <#assign daysoverdue = ((.now?date?long - d2) / (24*60*60*1000))?floor> <#else> <#assign d2 = ""> <#assign daysoverdue = 0> <!-- 改为数字0,避免空字符串比较问题 --> </#if> <tr> <#if line.datecol?has_content && daysoverdue?is_number && daysoverdue gt 0> <!-- 增加数字类型检查 --> <td colspan="3">${line.datecol}* </td> <#else> <td colspan="3">${line.datecol}</td> </#if> <td colspan="12">${line.description} <#if statement.currency == "US Dollar"> <#if line.custbody_mes_invl_end_customer_link?has_content><a href="${line.custbody_mes_invl_end_customer_link}">Pay Invoice</a></#if></#if></td> <td align="right" colspan="3">${line.charge}</td> <td align="right" colspan="4">${line.payment}</td> <td align="right" colspan="4">${line.balance}</td> </tr> </#list><!-- end items --></table>
额外验证点
- 测试时可在else分支临时添加
${daysoverdue}输出,确认非逾期行的daysoverdue为0,逾期行显示正确的正数。 - 若仍有问题,检查
line.duedate的实际格式是否符合is_date_like的判断标准,必要时可改用is_date进行严格日期验证。
内容的提问来源于stack exchange,提问作者kevin magallon
相关产品推荐
相关产品推荐

