折扣和折扣代碼
折扣是為了促銷,而提供給客戶的價格優惠。折扣代碼是一個用途在於「折扣」的計算代碼,用來計算訂單的項目調整。
在 CALCODE 表格中的每一列代表一個 CalculationCode。
CalculationCodes 代表決定與 OrderItems 相關之貨幣金額的許多方式。
它們是用來計算折扣、貨運費、營業稅和貨運稅。CalculationCode
可以限定只附加至特定的 TradingAgreements。
附加折扣代碼到產品或產品群組涉及兩個層面。
第一個是折扣可以附加至一或多個型錄項目和型錄群組中。
將計算代碼附加到型錄群組的效用,和直接附加到型錄群組的所有型錄項目上一樣。
第二個是為了便利進行計算,訂單項目會以三種方式之一分類:
依每份交易協定、依每樣產品、依每項優惠或依據出貨地址。
這由 groupBy 屬性來指定。進行計算時,會針對 OrderItem 物件的每一個群組分別執行。
若未指定分組,則會使用附加至特定 CalculationCode 物件的所有 OrderItems
來執行同一種計算作業。以下略述用來計算不同折扣類型的屬性:
- 依交易協定計算折扣
perTradingAgreement 屬性表示群組中的所有訂單項目都必須具有相同的合約,才能套用計算代碼。
比方說,假設交易協定 123 有附加折扣代碼,若購買超過 $100 時有 10% 折扣。
在 perTradingAgreement 分組中,若在合約 123 下購買 $175,折扣將會是訂單合計價格減去
$17.50,因此,在打折後的合計金額為 $157.50。
- 依產品計算折扣
perProduct 屬性表示群組中的所有訂單項目都必須連結相同的產品,才能套用計算代碼。
(產品可能是型錄項目的母項型錄項目,如果有母項型錄項目的話,會依
CATRELTYPE 資料庫表格中的
PRODUCT_ITEM 關係類型而定,也可能只是型錄項目本身。)
例如,假設某項折扣代碼同時附加至 CatalogEntry 物件 1 和 CatalogEntry 物件 2,
且該項折扣代碼指定若購買 10 個以上,可享有 15% 折扣。
若 perProduct 屬性為 true,如果在 CatalogEntry 1 項購買 7 個,
並在 CatalogEntry 2 項購買 3 個,就不能享有 15% 折扣。
同一個 CatalogEntry 的數量必須是 10 個或 10 個以上時才可以適用折扣。
不過,若 perProduct 屬性為 false,則兩個數量合計為 10 即可適用折扣。
- 依優惠計算折扣
perOffer 屬性分類適用於稅金計算代碼。例如,「童鞋價格低於 $30 不課稅」是指每雙兒童鞋的價格。
若訂單中包含多雙兒童鞋,則每雙鞋的價格若低於指定的現金折扣價格就可免稅。
由於每項優惠代表各自不同的單價,因此 OrderItems 會依 Offer 物件分類,以便根據單價來決定稅金金額。
- 依出貨地址計算折扣
perShippingAddress 分組適合用來計算貨運費,
因為群組中的所有訂單項目都必須套用相同的貨運費代碼。
例如,以訂單 15、訂單 25 和訂單 26 為例。所有訂單都是由相同的客戶下給相同的商店,
且要遞送到相同的出貨地址。訂單 15 是在 1 月 3 日下單,而訂單 25 和 26 是在次日下單。由於這三張訂單都是要送到相同的地址,因此這些訂單都適用相同的折扣計算代碼,
這個折扣計算代碼指定當您在同一個月份向同一家商店下兩張以上的訂單時,
每張訂單可以享有 10% 折扣。
如果 perShippingAddress 屬性為 True 時,則客戶在這三張訂單中都會收到
10% 折扣,因為這三張訂單都是在 1 月下單。
產品可能會有多項相關的折扣。同樣地,成員群組也可能有多項適用的折扣。
如果有一個以上的折扣計算代碼適用於同一個 Order 物件,折扣計算會依其
CalculationCode 物件的順序屬性,依升序次序執行。這個方式使得
CalculationCode 只能讓定義於
CALCODEMGP 表格中的特定成員群組的成員使用。
此外,為了限制 CalculationCode 只讓特定成員群組的成員使用,請在
CALRULEMGP 表格中定義這些成員群組。