運算式
計算欄位屬於進階表單,因此只包含在多重授權服務等級中。
概述
Adobe Acrobat Sign 提供根據簽署者在簽署合約時所輸入的資料,動態更新文件 (合約) 中欄位的能力。 這可透過使用計算欄位來辦到。 您可使用計算欄位,在將文件寄出以供簽署前,先在文件 (或文件範本) 中設定規則。 當簽署者與文件互動並根據欄位/值動態更新文件時,系統就會處理這些規則。
您可使用下列任何機制,在文件中定義計算欄位:
- Acrobat Sign 表單製作環境
- Acrobat Sign 文字標籤 (請參閱文字標籤說明文件以瞭解詳細資訊。)
- Adobe Acrobat PDF 表單欄位 (請參閱在 Acrobat 中建立表單參考指南以了解詳細資訊。)
計算欄位使用案例
計算欄位可用在需於簽署時動態更新文件的情形。 以下是一些可使用計算欄位的使用案例範例。 這些使用案例僅供說明之用。
1. 設定訂購表單—計算欄位可用來設定訂購表單,簽署者可從可用項目的清單中進行選擇並指定數量。 從清單選取項目,會自動以所選項目的價格更新表單。 簽署者選取的數量也會產生被自動計算之項目的總成本。 表單也能納入其他計算,用以確定訂單的應交稅金或根據提供折扣給客戶的業務規則來計算大量折扣。
2. 自動填入合約期限到期日—對於允許客戶在簽署時選擇合約期限長度 (6 個月、12 個月、24 個月等) 的合約,可使用計算欄位來根據客戶在簽署合約時所做的選擇,自動填入合約的結束日期。
3. 具有多個選項的註冊表單—計算欄位可用來設定註冊表單 (例如會籍表單),讓簽署表單的人可以從一組可用選項中進行選擇。 簽署者做的選擇可以驅動表單的其他動態方面,例如簽署者同意的期限、合約持續時間以及總成本。
計算欄位基本知識
Acrobat Sign 表單中的任何表單欄位、核取方塊欄位或選項按鈕欄位都可標示為計算欄位。 進行簽署時,簽署者無法在指定為計算欄位的欄位中直接輸入值,該欄位的值會根據表單定義的規則自動進行計算。
計算欄位定義由兩部分組成:運算式和格式。
|
|
必填 |
定義所指定欄位如何進行計算的公式/規則。 Acrobat Sign 會在簽署時計算運算式,並在欄位中顯示結果值。 |
|
格式 |
選擇性 |
可以透過指定格式,將計算欄位的結果值格式化為日期、數字或貨幣。 |
您可使用 Acrobat Sign 文字標籤、Acrobat Sign 網路應用程式或 PDF 表單欄位來定義計算欄位。 使用 Acrobat Sign 文字標籤或 PDF 表單欄位來定義計算欄位時,請使用名為「calc」的指示詞來定義計算運算式。 計算欄位的格式則使用名為「format」的指示詞來定義。
範例
{{someCalculatedField_es_:signer1:calc(someExpn):format(formatType, someFormat)}}
此範例會在名為「someCalculatedField」的文件中顯示用來定義欄位的文字標籤。 此欄位被指派給身分為 signer1 的收件者。 此欄位的值會根據「someExpn」中指定的公式來計算。 結果值的類型則由參數「formatType」指定,並根據「someFormat」定義的格式來進行格式化。
Acrobat Sign 網路應用程式的製作環境提供功能齊全的運算式建立工具,供您定義計算欄位的公式。 如需建立運算式的詳細資訊,請參閱使用運算式建立工具來指定計算欄位。
計算欄位運算式
運算式定義用來決定計算欄位之值的公式/規則。 運算式可以包含一或多個下列元素:
|
常值 |
指定在運算式中使用的實際值。 運算式可以是字串值、數字或日期。 例如:
需加入運算式的字串必須用引號括住 (雙引號 (") 或單引號 ('))。 如果結果值須包含引號 (單引號或雙引號),請使用反斜線 (\) 來封閉引號。 重要提示:對於接下來所有範例,將只顯示運算式,不顯示文字標籤的完整語法。 |
|
運算子 |
運算子是用來執行運算式中的一或多個作業。 例如: • 6 + 4 – 此運算子會產生 10 的值,並填入計算欄位中。 • 5/22/2016 - 3 – 此運算子會產生 5/19/2016 的值,並填入計算欄位中。 如需運算式中支援的運算子清單,請參閱支援的運算子。 |
|
欄位 |
可透過名稱來參考文件中的現有欄位,用以定義運算式。 這些欄位可以是 Acrobat Sign 欄位 (例如:簽名、日期欄位、簽署者姓名、簽署者公司等) 也可以是文件中或其他計算欄位中定義的欄位。 例如: • price * quantity – 此運算式參考文件中的其他兩個欄位「price」和「quantity」。 這兩個欄位值相乘的結果會填入計算欄位中。 • signerName & “employee of “ & signerCompany - 此運算式參考文件中 Acrobat Sign 預先填入的兩個欄位「signerName」和「signerCompany」(若可用),並將它們串聯在一起。 如果簽署者的名字是「Casey Jones」,而簽署者的公司是「Acme Corp」,則此運算式會產生「Casey Jones employee of Acme Corp」的值,並填入計算欄位中。 如果欄位名稱包含空格,則須將欄位名稱放在方括號 ([]) 中,才能在運算式中參考此欄位。 例如,[field name with spaces] 會參考文件中名為「field name with spaces」的欄位。 |
|
函數 |
運算式也能包含 Acrobat Sign 受支援函數清單中的一或多個函數。 在簽署合約期間會計算所指定的函數,並在計算欄位中顯示結果值。 例如: • dateAdd(d, signedDate, 3)– 此運算式使用「dateAdd」函數,並指定將簽署合約的日期加上 3 天。 所以,如果在 2016/5/22 簽署合約,則運算式的結果值會是 2016/5/25。 此外也能使用負數,自日期中減去對應的天數。 如需運算式中支援的函數清單,請參閱支援的函數。 |
支援的運算子
計算欄位中支援下列支援運算子。
+ |
將兩個數字相加。 |
- |
將兩個數字相減。 |
/ |
將兩個數字相除。 |
* |
將兩個數字相乘。 |
& |
將兩個字串連接在一起。 |
= |
等於。 比較兩個值,如果兩個值相等則傳回 true,如果不相等則傳回 false。 |
!= |
不等於。 比較兩個值,如果兩個值不相等則傳回 true,如果相等則傳回 false。 |
< |
小於。 比較兩個值,並根據第一個值是否小於第二個值而傳回布林值 (true 或 false)。 |
>= |
大於或等於。 比較兩個值,並根據第一個值是否大於或等於第二個值而傳回布林值 (true 或 false)。 |
<= |
小於或等於。 比較兩個值,並根據第一個值是否小於或等於第二個值而傳回布林值 (true 或 false)。 |
> |
大於。 比較兩個值,並根據第一個值是否大於第二個值而傳回布林值 (true 或 false)。 |
% |
餘數運算子。 傳回兩個數字相除的餘數。 |
^ |
指數運算子。 傳回所指定數字的指數值。 |
支援的函數
在計算欄位中指定運算式時,支援下列函數。
函數 |
類別 |
描述 |
|---|---|---|
abs(number1) |
數學 |
傳回「number1」數字的絕對值。 |
roundUp(number1) |
數學 |
捨進「number1」數字。 |
roundDown(number1) |
數學 |
捨去「number1」數字。 |
round(number1) |
數學 |
將「number1」數字四捨五入至最接近的整數。 |
min(number1,number2) |
數學 |
傳回「number1」和「number2」這兩個數字之間較小的值。 |
max(number1,number2) |
數學 |
傳回「number1」和「number2」這兩個數字之間較大的值。 |
datePart(part, date) |
日期 |
以整數傳回第一個引數指定的日期部分。 例如:datePart(m, 5/22/2016) 會傳回 5,日期的月份部分。 如需 part 屬性可接受值的相關資訊,請參閱下方的「日期部分的接受值」。 |
dateAdd(part, date, addition) |
日期 |
將組成部分 (例如,「d」代表日、「m」代表月或「y」代表年) 的指定數字加入日期,以計算未來日期。 您可以使用數字或欄位名稱。 例如:dateAdd("m", "Jan 1, 2016", 3) 會傳回 2016 年 4 月 1 日的日期。 在這個範例中,公式會將指定的日期加上 3 個月。 此外也能使用負數,自日期中減去對應的天數。 |
dateDiff(part, date1, date2) |
日期 |
傳回兩個日期之間的組成部分數字 (例如,「d」代表日、「h」代表小時或「n」代表分鐘)。 您可以使用數字或欄位名稱。 例如:dateDiff("d", "Jan 1, 2016", "Jan 2, 2016") 會傳回值 1,表示 1 月 1 日到 1 月 2 日的 1 天。 |
daysIn(part, date) |
日期 |
傳回所指定日期之組成部分 (例如,「d」代表日、「m」代表月或「y」代表年) 的天數。 您可以使用數字或欄位名稱。 例如:daysIn("m", "Feb 1, 2016”) 會傳回值 29,表示 2016 年 2 月的天數,而 daysIn("y", "02/01/2015") 會傳回 365,表示 2015 年的天數。 |
date(string) |
日期 |
將「1/1/2016」之類的字串值轉換為可用於其他函數中的日期物件。 |
now() |
日期 |
傳回計算公式的日期和時間,通常就是電子簽名頁面載入的時間。 |
if(logical_test, value_if_true, value_if_false) |
邏輯 |
計算「logical_test」。 「logical_test」可改為其他運算式。 若為 TRUE,則傳回「value_if_true」中指定的值。 若為 FALSE,則傳回「value_if_false」中的值。 「value_if_true」和「value_if_false」屬性皆可為運算式。 例如:if (1>0, "Correct", "Incorrect") 會傳回「Correct」。 |
and(logical1, logical2, ...) |
邏輯 |
如果所有邏輯引數皆評估為 TRUE,才傳回 true。 否則傳回 false。 例如:and (1>0, 2>1) 會傳回「true」,and (1>0, 2=1) 則傳回「false」。 |
or(logical1, logical2, ...) |
邏輯 |
如果任何邏輯引數 (logical1, logical2,...) 為真則傳回真值評估為 真,則回傳 真。如果所有邏輯引數皆評估為 FALSE,則傳回 false。 例如:or (1>0, 2>1) 會傳回「true」。 or (1>0, 2=1) 則傳回「false」。 |
not(logical) |
邏輯 |
傳回「logical」的相反值。 所以,如果「logical」評估為 FALSE,則傳回 true。 如果評估為 TRUE,則傳回 false。 例如:not (1>0) 會傳回「false」。 |
| lookup(sourceField,("value1=return1,value2=return2", "default_value") | 邏輯 | 評估來源欄位「return value」(用於下拉式方塊與選項按鈕),以根據可能的值清單將預設值填入計算欄位。 例如:lookup(stateField, “CA=California,UT=Utah,MA=Massachusetts,WA=Washington”,”None”) 會傳回 California (如果 stateField 是 CA) 或 Utah (如果 stateField 是 UT) 等。 如果找不到相符的項目,則會傳回 None。 |
日期部分的接受值
指定函數可運算的日期組成部分時,可在日期相關函數中使用下列值。
|
組成部分 |
函數將套用的日期部分 |
|---|---|
|
y |
年 |
|
q |
季 |
|
m |
月 |
|
d |
日 |
|
h |
小時 |
|
n |
分 |
|
s |
秒 |
計算欄位格式
除了指定計算欄位的運算式,您也可以格式化輸出值。 輸出可以格式化為文字 (預設值)、數字或日期。
搭配文字標籤使用時,格式指示詞使用兩個引數:FormatType 和 Format。
|
FormatType |
指定計算欄位代表的值類型。 此參數的接受值為:number 和 date。 |
|
Format |
指定在計算欄位中放置的輸出值結構。 |
將計算欄位格式化為數字
可使用下列字元,以數字形式指定輸出的格式
格式字元 |
描述 |
|---|---|
_ |
(底線)。 代表任何數字預留位置。 |
9 |
代表任何數字預留位置。 |
。 |
必要小數點 (或當地適用的符號) 的位置。 |
0 |
位於必要小數點的左側或右側。 以零填補。 |
( ) |
如果數字小於零,在數字前後加上括號。 |
+ |
在正數前面加上加號;在負數前面加上減號。 |
- |
在正數前面加上空格;在負數前面加上減號。 |
, |
每三位數加上一個逗號 (或當地適用的分隔字元)。 |
$ |
在格式化數字前加上貨幣符號 (或當地適用的符號)。 指定此項目時,它必須是格式字串的第一個字元。 |
% |
將欄位中的數字值轉換為百分比。 將其乘以 100,然後在 後面加上 % 符號。 指定此項目時,它必須是格式字串的最後一個字元。 |
將計算欄位格式化為日期
可使用下列字元,以日期形式指定輸出的格式。
格式 |
描述 |
範例 |
|---|---|---|
s |
介於 0-59 的分鐘秒數。 |
「0」到「59」 |
ss |
分鐘秒數,如有需要加上前置零。 |
「00」到「59」 |
頁數 |
介於 0-59 的小時分鐘數。 |
「0」或「59」 |
nn |
小時分鐘數,如有需要加上前置零。 |
「00」或「59」 |
h |
介於 1-12 的一天小時數。 |
「1」到「12」 |
hh |
一天小時數,如有需要加上前置零。 |
「01」到「12」 |
高 |
介於 0-23 的一天小時數。 |
「0」到「23」 |
HH |
一天小時數,如有需要加上前置零。 |
「00」到「23」 |
d |
介於 1 到 31 的一個月天數。 |
「1」到「31」 |
dd |
一個月天數,如有需要加上前置零。 |
「01」到「31」 |
ddd |
縮寫的星期幾名稱。 |
「Mon」到「Sun」 |
dddd |
完整的星期幾名稱。 |
「Monday」到「Sunday」 |
米 |
介於 1-12 的一年月份。 |
「1」到「12」 |
公釐 |
一年月份,如有需要加上前置零。 |
「01」到「12」 |
mmm |
縮寫的月份名稱。 |
「Jan」到「Dec」 |
mmmm |
完整的月份名稱。 |
「January」到「December」 |
yy |
兩位數的年份。 |
「99」或「15」 |
yyyy |
完整的四位數年份。 |
「1999」或「2015」 |
t |
顯示 A.M./P.M. 的第一個字元指示項。 |
「A」或「P」 |
tt |
顯示 A.M./P.M.指示項。 |
「AM」或「PM」 |
格式範例
下列範例顯示如何格式化日期和數字計算欄位。
- 格式化為日期的計算欄位:
{{myField_es_:calc(otherDateField + 3):format(date, "mmm dd, yyyy")}}
輸出將類似於「May 22, 2016」。
- 格式化為數字的計算欄位。
{{myTax_es_:calc(total * taxrate):format(number, "$,.00") }}
輸出將類似於「$1,987.65」。
使用運算式建立工具來指定計算欄位
您可透過 Acrobat Sign 製作環境來指定計算欄位。 下列步驟會逐步引導您在編寫環境中定義計算欄位。
1. 在文件中拖放欄位。按兩下您剛加入的欄位,帶出欄位屬性對話方塊。 為欄位提供適當名稱。 使用下拉式清單,將「值類型」屬性變更為「計算的值」類型。 這表示欄位值將根據簽署時的計算而確定。
2. 在名為公式的文字欄位中輸入計算運算式,或按一下函數按鈕 ( fx ) 以開啟運算式建立器。
3. 使用運算式建立器定義計算欄位的運算式(請參閱下圖)。上方的「運算式區域」會顯示將用來計算欄位值的公式。 您可在「運算式區域」中輸入公式,或使用編寫環境來建構公式。 運算式建立工具會提供所有可用「函數」的清單、文件中現有表單「欄位」的清單,以及受支援「運算子」的清單,協助您建構運算式。 您可在運算式建立工具的「清單區域」中連按兩下某個項目,新增「欄位」或「函數」至公式。 您也可以在「運算子清單」中按一下某個運算子,新增「運算子」至運算式。
4. 完成運算式定義後,您可以按一下檢查語法按鈕來檢查運算式的語法,然後儲存變更。
5. 使用顯示為下拉式清單設定計算欄位的類型。
6. 如果您的顯示為值是「日期」或「數字」,請使用下拉式清單設定欄位值日期/數字格式。您也可以選取「自訂」格式,為欄位定義自訂格式。
具有貨幣格式的計算欄位
計算欄位的貨幣格式會在計算欄位前面插入貨幣符號。 (在其他情況下,計算會是取決於公式的簡單算術。)
插入的符號以下列規則為準:
- 如果來源欄位包含美國的貨幣驗證,則會顯示美元符號:$
- 如果來源欄位包含英國的貨幣驗證,則會顯示英鎊符號:£
若要讓「貨幣」格式能夠運作,必須為計算欄位進行下列設定:
- 將「顯示為」值設為「數字
」 - 將「數字格式」值設為「貨幣
」
在計算中使用的來源欄位,可以是「數字」或「貨幣」驗證欄位:
計算「貨幣」格式化欄位中的值時,Acrobat Sign 不會考量任何類型的貨幣匯兌 (Forex)。
- 計算欄位只會執行計算的算術
- 欄位的格式 (「貨幣」) 只會插入貨幣符號
任何表單如需使用美元 ($) 或英鎊 (£) 以外的貨幣符號,則必須將符號新增至文件檔案,或新增將貨幣符號設為預設值的唯讀欄位。
使用此欄位選項時,建議貨幣符號欄位應:
- 指派給:寄件者 (預填)
- 啟用唯讀
- 將「預設值」設為該貨幣符號 (下列範例中使用歐元)
「文字」來源欄位必須格式化為「數字」(而非「貨幣」)
用來計算最終值的欄位必須進行下列設定:
- 將「顯示為」值設為「數字」
- 將「數字格式」欄位設為您要使用的格式
計算欄位範例
- {{shipState_es_:signer1:calc([billingState]):showif(sameAs=unchecked)}}
- 將文件中的某個欄位指派給第一位簽署者,且只有在未勾選「sameAs」欄位 (核取方塊) 時才會顯示出來。 該欄位的值會自動填入簽署者在文件中輸入的「billingState」欄位值。
- {{total_es_:signer1:calc(q1*pr1):format(Number,”$,0.00”):align(right)}}
- 將文件中的某個欄位指派給第一位簽署者。 其值會自動計算為「q1」和「pr1」欄位值的乘積。 將結果值格式化為貨幣,並在結果值前加上貨幣符號 ($),包含兩個小數位數。 結果值也會在欄位中向右對齊。
- price_es_:signer1:calc(if(pn1=”W1”,9.99,if(pn1=”W2”,5.99,if(pn1=”W3”,24.99,0))))}
- 文件中的「price」欄位會根據簽署者在文件的「pn1」欄位中的選取值而加以計算。 在此例中,如果「pn1」等於 W1,則「price」欄位中顯示的值為 9.99;如果「pn1」等於 W2,則「price」欄位中顯示的值為 5.99,以此類推。 如果沒有任何值符合「pn1」欄位中的值,則「price」中顯示的值為 0。 透過這個機制,可根據簽署者在簽署時進行的選擇,使用計算欄位來自動填入某個品項的價格。