割引と割引コード
割引とは、購入を促進するために、顧客に提供される価格のインセンティブのことです。 割引コードは、計算の使用法が「割引」である計算コードです。
オーダー・アイテムの価格調整を計算するのに使用されます。 CALCODE テーブルの各行は、CalculationCode を表します。 CalculationCode は OrderItems に関連した通貨金額を決定する方法を表します。
これらは、割引額、配送料、消費税、および配送税を計算するために使用されます。
CalculationCode 添付は、特定の TradingAgreements に限定することができます。
商品または商品グループに割引コードを付加する際には、2 つの次元がかかわります。
まず、割引は、1 つ以上のカタログ・エントリーおよびカタログ・グループに、付加することができます。 カタログ・グループに計算コードを付加すると、
カタログ・グループのすべてのカタログ・エントリーに直接付加したのと同じ効果があります。
次に、オーダー・アイテムは、取引契約ごと、
商品ごと、あるいは配送アドレスごとのいずれかで、計算用にグループ分けされます。 これは groupBy 属性によって指定されます。
OrderItem オブジェクトの各グループごとに、別の計算が実行されます。 グループ化が指定されていない場合、特定の CalculationCode オブジェクトに付加されたすべての OrderItems を使用して、1 つの計算を実行します。 以下に、様々な割引タイプを計算するために使用される属性について説明します。
- 取引契約別に計算される割引
perTradingAgreement 属性は、この計算コードを適用するには、
グループ内のすべてのオーダー・アイテムが同一の取引契約のものでなければならないことを意味します。 たとえば、取引契約 123 があり、これに割引コードが付加されていて、
10,000 円を超えて購入された場合、10% の割引が適用されるとします。 perTradingAgreement グループにある場合、契約 123 のもと 17,500 円で購入された場合、
オーダーの合計金額から 1,750 円の割引となり、割引後の合計金額は 5,750 円となります。
- 商品別に計算される割引
perProduct 属性は、この計算コードを適用するには、
グループ内のすべてのオーダー・アイテムが、同じ商品に関連付けられている必要があることを意味します。
(商品は、CATRELTYPE データベース・テーブルの PRODUCT_ITEM 関係タイプがあれば、それに従って、カタログ・アイテムの親カタログ・エントリーであることも、カタログ・アイテムそのものであることも可能です。)
たとえば、割引コードが CatalogEntry オブジェクト 1 と CatalogEntry オブジェクト 2 の両方に付加されていて、その割引コードでは、10 を超えて購入されると、15% 割り引くことが指定されているとします。
perProduct 属性が true の場合、CatalogEntry 1 を 7 つ購入し、CatalogEntry 2 を 3 つ購入しても、15% 割引にはなりません。
割引を受けるには、1 つの CatalogEntry の数量が 10 以上になることが必要です。
それに対し、perProduct 属性が false の場合、合わせると数量が 10 であるため、割引の対象となります。
- オファー別に計算される割引
perOffer 属性グループ化は、税額計算コードに適しています。
たとえば、「3,000 円未満の子どもの靴は非課税」という記述は、子どもの靴 1 足の価格に言及しています。
子どもの靴が複数足オーダーにある場合、1 足の価格が制限価格未満の靴が、非課税になります。
各オファーは異なる単価を示すため、OrderItems は Offer オブジェクトによってグループ化され、単価に基づいた税額を決定します。
- 配送アドレス別に計算される割引
perShippingAddress グループは、配送料の計算に適しています。
グループ内のすべてのオーダー・アイテムに同じ配送料コードを適用しなければならないからです。 たとえば、オーダー 15、オーダー 25、オーダー 26 があるとします。 すべてのオーダーは同じ顧客によって同じストアで発行され、同じ配送アドレスに配達されます。 オーダー 15 は 1 月 3 日に発行され、オーダー 25 と 26 はその翌日に発行されました。 オーダーは同じアドレスに配達されるので、オーダーは同じ割引計算コードと関連付けられています。
その割引計算コードでは、同月にストアで 3 つ以上のオーダーを発行すると、
それぞれのオーダーに 10 % の割引が適用されることが指定されています。 perShippingAddress 属性が真の場合、3 つのオーダーはそれぞれ 10 % 割引されます。
3 つのオーダーはすべて、1 月に発行されたからです。
商品には、関連する複数の割引を指定できます。 同様に、メンバー・グループにも、それらのグループに適した複数の割引を指定できます。 1 つの Order オブジェクトに複数の割引コードが適用可能な場合、割引計算は、
CalculationCode オブジェクト順序属性の昇順に実行されます。 これにより、CalculationCode は CALCODEMGP テーブルで指定された特定のメンバー・グループのメンバーによる使用だけに制限されます。 加えて、CalculationCode の使用を特定のメンバー・グループのメンバーに制限するには、
これを CALRULEMGP テーブルで定義します。