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.

Discount Types

The following discount types can be used in the OPE Price Model:

Price Type Description
DISCOUNTUOM

Percent or Flat is used to define if the discount is altering a price in percent manner or in a total reduction manner; valid values are percent or flat.

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.

Note: All groups must be fulfilled to make the discount applicable.
Note: The ProductRequiredForDiscount relationship is considered as the lower important type after DiscountRequiresSegment relationship when choosing between different prices for a product.
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.

Note: The default values for CalculatedProducts and RelatedProducts is true and false for LinkedOnly, so the engine looks for all products specified in the request, unless it is specifically configured in a different fashion in the RequiresProductGroup.
Note: If LinkDefinitions is not configured, it is set to SubscriberID by default.
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.
Note: The DiscountRequiresSegment relationship is considered as the most important relationship when choosing between different prices for a product.
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.
Note: The DiscountRequiresCharacteristic relationship is considered the least important relationship when choosing between different discounts for a price.
DiscountComprisedOf
This relationship is used to reuse existing discounts as children and apply an aggregated discount based on the discount amount of the children.
Note: A child discount has to have the same discount type (Percent or Flat) as the parent, otherwise it is ignored