Freemarker Date字段显示当月的最后一个工作日

时间:2017-07-17 16:09:13

标签: email templates freemarker netsuite

我对Freemarker非常陌生。显然,它是NetSuite中的首选模板模型。我的任务是更新电子邮件模板以显示包含该月最后一个工作日的文本行。

我看到如何在我找到的文档中显示该字段,这是我的代码。

<#assign aDateTime = .now>
<#assign aDate = aDateTime?date>
<span>PLEASE EXPEDITE ORDER PROCESSING AND SHIP OVERNIGHT TO GUARANTEE DELIVERY BY EOD 
THE LAST BUSINESS DAY OF THE MONTH ${aDate}</span>

我的问题,因为我在这里一无所知,是如何显示本月的最后一个工作日?

编辑添加:我发现Freemarker日期操作的添加内容在这里可以提供一些帮助(基于另一个线程here)。问题是获得正确的逻辑以显示日期。以下是从特定日期减去18天的示例:

${(mydate?long - 18 * 86400000)?number_to_date?string("yyyy-MM-dd")}

所以我知道有办法做我想做的事情,但我无法绕过它。

非常感谢任何和所有的帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

这里有几种方法,具体取决于模板的调用方式。如果您将此作为在记录(事务)上触发的标准模板使用,那么您需要将月份值的最后一个工作日转换为记录中的自定义字段。您可以通过创建具有开始和结束日期以及最后一个工作日的月份自定义记录来实现此目的。然后,您将最后一个工作日字段a 自定义正文日期字段 非预存 从已保存的搜索中删除

已保存的搜索使用今天的日期或交易中的某个日期来查找日期的最后一个工作日。当然,如果这是基于交易的日期,那么您可以使用脚本设置值。

如果您可以使用脚本进行设置,则自定义记录解决方案仍然有效。我过去所做的是建立一个功能,可以根据帐户的位置(美国或澳大利亚)和观察到的法定假日进行营业日期计算。

这两种方法都需要偶尔更新。当然,该功能也可用于生成即将到来的最后营业日期。

有几个工作日计算的例子在我的github repo for Netsuite things中。 calculateShippingDates和calcNSWBusinessDays是生成工作日计算范围的示例。 calculateShippingDates实际上有一个月的最后一个工作日计算。

HTH

答案 1 :(得分:0)

我想出来了。我使用了一个线程来显示javascript如何选择该月的最后一天(链接here),然后将该代码转换为Freemarker。以下是Freemarker代码段:

<#assign aMonth = .now?string("M")>
<#assign aNewMonth = aMonth?number>
<#assign aYear = .now?string("yyyy")>
<#assign aDay = 0>
<#assign aNewDate = "" + (aNewMonth + 1) + "/" + aDay + "/" + aYear>
<#assign aLastDay = aNewDate?date>
MONTH: ${aNewMonth}<br />
YEAR: ${aYear}<br />
${aLastDay?string.full}<br />

这是该月的最后一天。我做了一些if else else逻辑来确定字符串是星期六还是星期日,然后打印出正确的月份最后一个工作日。