Custom promotion types
The promotion authoring tools included in HCL Commerce Accelerator are responsible for building a promotion XML document using all of the building blocks available, and saving the promotion in the promotion persistence storage. This includes any additional data that is needed for integration with the environment in which the promotion executes.
A sample promotion XML is given in sample promotion XML. All promotion XML files must follow the document type definition (DTD) given in promotion DTD. In the DTD, the definitions of two XML elements: Filter and Adjustment, are marked as "ANY", which means there is no restriction as to how these should appear. This is because of the high probability that these two elements will require customization. There is a default set of filters and adjustments. Samples of the XML elements for the default filters and adjustments are listed in sample filter XML fragments and sample adjustment XML fragments.
Using existing building blocks to construct new promotion types
The database table that is used to store promotions is PX_PROMOTION. In the table definition, note that the XMLPARAM column saves a complete copy of the XML document for the promotion definition. The other fields hold values for most of the promotion's basic attributes. There are a number of other tables used to integrate promotions with HCL Commerce. The database tables are introduced in raising customer awareness of promotions.
In addition to PX_PROMOTION table, two more tables have to be populated to integrate a promotion with HCL Commerce: CALCODE and CLCDPROMO. CLCDPROMO is a relationship table that links all current promotions (promotions whose status is not obsolete) with an entry in the CALCODE table. In addition to the column definition information in the CALCODE table definition, there are some additional promotion-specific details about how the CALCODE table and its related tables are used by the promotions system. Here is the default values for promotion entries in the CALCODE table:
Column Name | Column Type | Values for This Column |
---|---|---|
CALCODE_ID | INTEGER NOT NULL | Generated unique identifier. |
CODE | CHARACTER (128) NOT NULL | For entries related to promotion, this column holds the name of the promotion. |
CALUSAGE_ID | INTEGER NOT NULL | Always "-1", which is the id for CALUSAGE "discount". |
STOREENT_ID | INTEGER NOT NULL | The CalculationCode is part of this StoreEntity. |
GROUPBY | INTEGER NOT NULL, DEFAULT 0 | Always "0". |
TXCDCLASS_ID | INTEGER NULL | Null. |
PUBLISHED | INTEGER NOT NULL, DEFAULT 0 | 0, if promotion is not active 1, if promotion is active 2, if promotion has been marked for deletion. |
SEQUENCE | DOUBLE NOT NULL, DEFAULT 0 | Always "0". |
COMBINATION | INTEGER NULL | Always "2". |
LASTUPDATE | TIMESTAMP NULL | The time this CalculationCode (and its corresponding promotion) was most recently updated. |
CALMETHOD_ID | INTEGER NOT NULL | This references an entry in the CALMETHOD table created for calculating promotions. (If you use Commerce bootstrap as is, you can set this to -3) |
CALMETHOD_ID_APP | INTEGER NOT NULL | This references an entry in the CALMETHOD table created for applying promotions (If you use Commerce bootstrap as is, you can set this to -4) |
CALMETHOD_ID_QFY | INTEGER NOT NULL | This references an entry in the CALMETHOD table created for qualifying promotions (if you use Commerce bootstrap as is, you can set this to -2) |
FIELD1 | VARCHAR (254) NULL | Null. |
DESCRIPTION | VARCHAR (254) NULL | Administrative description of a promotion. |
DISPLAYLEVEL | INTEGER NOT NULL, DEFAULT 0 | 0: for promotions target order items 1: for promotions target the entire order |
STARTDATE | TIMESTAMP NULL | The start date of the promotion. |
ENDDATE | TIMESTAMP NULL | The end date of the promotion. |
FLAGS | INTEGER NOT NULL, DEFAULT 0 | Always 0. |
PRECEDENCE | DOUBLE NOT NULL, DEFAULT 0 | Always 0. |
The HCL Commerce Accelerator supports the creation of almost twenty different promotion types. If your custom promotion type falls outside this set of promotion types, but can be expressed using a different permutation of the existing building blocks, your custom authoring tool will have to build the XML documents, and save them into the tables.