Schema-based discount assets

The following diagram illustrates the schema-based discount structure in the WebSphere Commerce Server.

Calculation code

A discount is represented by and calculated using a discount calculation code. A discount calculation code indicates how the discount is calculated for order items.

A calculation code belongs to a store entity. Multiple calculation codes can be defined within a store entity. If the store entity is deleted, the calculation codes defined within that store entity are also deleted.

Each discount calculation code can have a start date and an end date, which define the time period in which the discount is effective. The discount calculation code can also be associated with one or more member groups, which define the eligible member groups.

The discount calculation code can be attached to one or more catalog entries, and catalog groups. Attaching a calculation code to a catalog group has the same effect as attaching it to all the catalog entries directly in the catalog group. However, discount calculation codes attached to catalog group A are not attached to products and items in catalog group B if catalog group A contains catalog group B.

Catalog entries or catalog groups may have more than one discount associated with them. When more than one discount calculation code is applicable to an order, discount calculations are performed in ascending sequence of their calculation code sequence attributes.

Define discount sequence orders to implement discounts on discounts.

The order items are grouped for calculation in one of the following ways:

  • Per trading agreement

  • Per product

  • Per offer

  • Per shipping address

Calculation rules

Each calculation code has a set of calculation rules, which define the conditions under which the calculation will be done. Each discount calculation rule is associated with one or more member groups, for whom the discount is effective. Member groups may be eligible for more than one discount at a time.

If an eligible member group is defined at the calculation code level, it does not need to be defined again at the calculation rule level.