2017-07-17 57 views
0

我是Freemarker的新手。显然,它是NetSuite中的模板选择模板。我的任务是更新电子邮件模板以显示包含本月最后一个工作日的文本行。Freemarker日期字段显示月份的最后一个营业日

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

<#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")} 

所以我知道有一种方法做什么,我想这个做的,但我不能换我的头周围。

任何和所有的援助将不胜感激。

谢谢。

回答

1

这里有几种方法,这取决于如何调用模板。如果您将此用作记录(交易记录)上触发的标准模板,那么您需要将该月份的最后一个工作日记录到记录中的自定义字段中。您可以通过创建具有开始和结束日期以及最后一个工作日的月份的自定义记录来实现此目的。然后你让你的最后一个工作日领域 自体日期字段 非预存 从已保存的搜索

保存的搜索使用或者今天的日期或从交易的一些日期查找日期的月份的最后一个工作日拖欠。当然,如果这是基于交易的日期,那么你可以用脚本来设置值。

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

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

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

HTH

+0

该模板是由交易的工作流触发的标准电子邮件。所以,基本上你是说一个简单的脚本绑定到电子邮件模板来填充这个值是这样做的方法吗?我不得不做更多的挖掘,因为我不知道该怎么做。 javascript我认为我可以开展工作,但将脚本绑定到电子邮件模板和FreeMarker字段现在已经超出了我的视野。 非常感谢您的回复。 – Finnster

+0

如果您只是执行标准模板,请使用自定义记录方法。您可以使用csv导入轻松填写上一个工作日的5年,然后转到SuiteAnswers主题61574以了解如何设置自定义字段和自定义搜索。 – bknights

+0

好的。谢谢。不过,我认为我需要编写脚本,因为我需要这样做,因此维护几乎为零,因此CSV文件与记录结合可能不是最佳方法。我真诚地感谢你对此的帮助。再次感谢你。 – Finnster

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 /> 

这是本月的最后一天。如果字符串是星期六或星期日,然后打印出当月的正确最后一个工作日,我会做一些其他逻辑。

相关问题