2017-07-17 74 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 /> 

這是本月的最後一天。如果字符串是星期六或星期日,然後打印出當月的正確最後一個工作日,我會做一些其他邏輯。

相關問題