Offer and Price Engine Discount Model
OPE uses the discount models to get the discounts configured in the discount catalog and correlates these discounts to a given price based on relationship.
Discount Fields
The following discount fields are the basic fields applicable to all discount types.
Pricing Field | Description |
---|---|
RECORD_TYPE |
This field defines the record type of the discount. The valid values are DISCOUNT. |
Start Date/Start Time, End Date/End Time, Duration/Duration UOM |
These characteristics are used to define the validity of a price in a certain time frame. None of these fields are mandatory. If the End Date/End Time is not present, it is calculated based on the Start Date/Start Time and the Duration/Duration UOM if they are present. Duration UOM can have Year, Month, Week, and Day as valid parameters. If only the Start or End parameters are defined, only that boundary is taken into account to verify the validity of that price. |
Discount Value |
The discount value for the discount model. |
Currency |
This characteristic is used to specify the type of currency for the price. |
Discount Priority |
This characteristic is used if a product provides several prices, whereby the priority provides the system a way to choose what charge to bill the customer. Therefore, the price with the higher Charge Priority is taken. Lower the number, the higher the priority. This field is used if a price has multiple discounts, whereby the priority provides the system a way to choose which discount to attach. Therefore the discount with the higher (lower number) Discount priority is taken. If the DiscountPriority is equal for several discounts in the case of multiple discounts attached to a price, the discount is chosen based on the restrictions it has. So if there are two valid discounts configured for a price, the application takes the discount with more or higher valued restrictions first. For example, for Price A there are three discounts configured. Discount A without any DiscountRequires restriction, Discount B with a DiscountRequiresProduct restriction, and Discount C with a DiscountRequiresSegment restriction. For a getPricesRequest which fulfills the restrictions of all three discounts, Discount C is taken as it has the highest value restriction. For a getPricesRequest, which fulfills only the restrictions of Discount A and B, Discount B is taken as it has the highest value restriction. Multiple restrictions sum up whereby the summed value is taken for the determination of which discount to choose. |
Relationships
Restrictive Relationships are used to make a discount applicable only to certain compositions of products, segments, or characteristics in a getPrices request.
Relationship | Description |
---|---|
DiscountRequiresProduct |
The DiscountRequiresProduct relationship is used to model discounts which should only be applied when ordering a certain composition of products. The ProductRequiredForDiscount is used because it follows a different mechanism and offers more flexibility in terms of modeling capabilities. Discounts can have ProductRequiredForDiscount relationships to multiple Products. |
ProductRequiredForDiscount |
The RequiresProductGroup repository has three flags in the Scope tab named CalculatedProducts, RelatedProducts, and LinkedOnly. The CalculatedProducts and RelatedProducts flags define if the RequiresProductGroup only 'searches' in CalculatedProducts or in RelatedProducts passed in with the request. The LinkedOnly parameter defines if the search is only restricted to other CalculatedProducts and RelatedProducts sharing the same defined LinkDefinitions as the one the discount must be applied to, for example, if the LinkDefinition is SubscriberID, both products have to have the same Subscriber. |
DiscountRequiresSegment | The DiscountRequiresSegment relationship is used to model discounts which should be offered only to customers belonging to a certain segment. Discounts can have DiscountRequiresSegment relationships to multiple segments. In that case, the discount is only taken if all the segments are passed in the getPrices request. |
DiscountRequiresCharacteristic |
The DiscountRequiresCharacteristic relationship is used to
model different discounts for a price based on a characteristic value of the
corresponding product. Discounts can have DiscountsRequiresCharacteristic
relationships to multiple characteristics. In that case all the restrictions
must be fulfilled to make the discount applicable.
|
DiscountComprisedOf |