Live Price Grids

Live Price Grid (LPG) is used when you need to handle a large number of products with rapidly changing prices, e.g., in an e-shop. In LPG, prices are recalculated every day or even several times a day – this is a direct contrast to Price Lists which are calculated only once and then you need to make a revision.

Live Price Grids share a lot with standard Price Lists, so in this guide we will mostly focus on LPG basics, things unique to LPGs and key differences between these two types of documents.

Business Use Case

  • As a Pricing Manager, I want to define a Price Grid for an e-shop where prices are recalculated daily based on competitor prices.

  • As a Pricing Manager, I want to define a Price Grid, where prices are recalculated daily based on pricing parameters such as currency.

Concept

The main concept of a Price Grid is to have a document with product prices, where these prices can be recalculated on a regular basis.

What Is a Live Price Grid

Live Price Grid, like the Price List is a document with prices of products. The prices of each product in the grid can be updated at any given time. This way it is possible to manage the price of a large number of products with rapidly changing underlying data upon which the price depends (Pricing Parameters and Product Extensions).

Data Model

Figure 1. Diagram of data structure

The most important part of the LPG header is the id, which is its unique identifier and targetDate, which used to identify the first day of validity of the prices in the LPG. During calculation of the LPG this date decides which data to use for its calculation.

Line Item

Just like with Price Lists, LPGs have line items which contain information specific for an SKU. The most important fields of a line item are:

  1. sku: ID of the product, for which we calculated the price.

  2. resultPrice: Price calculated by the logic. Before the result price becomes the active price, it needs to be approved.

  3. activePrice: Current approved price. This price is then used in further calculations, for example in Quotes.

  4. previousPrice: Previous active price.

Differences between LPG and PL

Functionality

LPG

Price List

Functionality

LPG

Price List

Concept

Price grid items are "reused" all the time. Inside the item you have three generations of a price (latest draft, current/active and previous).

Price list items are generated once (then maybe updated after a manual review) but then frozen once the list is approved.

History

Last 2 approved prices.

Keeps the history of the all prices in pricelist revisions (until the price list/revision is erased).

Approval

Auto-approve by the auto-approve logic element, Manually item by item, at any time, Using mass edit.

All items at once.

Frequency of price changes (calculation)

Periodically, e.g., every night or event based (e.g., after a certain supplier changed prices).

At a defined time of a year (e.g., with a new catalog).

Line Items before calculation

Already stored in the DB even before logic calculation.

Stored to DB after logic calculation.

Implementation / Configuration

Logics

Logic Type – Generic (Default/null).

With minor (or no) changes, you can use it also for Price List.

Context information

  • api.product("sku") - SKU being calculated.

  • api.targetDate() - Target Date of the LPG.

  • api.currentItem() - Complete current line item.

Element’s Display Mode – To make the element’s result available for the user, set the Display Mode to "Everywhere" (or "Price Grids").Remember, the user will be able to select the results (from the list of those made available via Display mode ) which will get to the actual generated Price List.

Configuration

The process of LPG creation is different from Price List. Please use the following steps to create a Live Price Grid (LPG).

  1. Navigate to Price Setting  Live Price Grids.

  2. Click on the + New Price Grid to create a new Live Price Grid.

  3. Define the new Live Price Grid.

    1. Label is the display name of the LPG

    2. Header type is optional, here you can select an LPG type with an associated header logic.

    3. Type is either simple or matrix. The behavior is similar like in Price Lists.

    4. Optionally, it is possible to restrict viewing the details and editing the Live Price Grid by setting a user group in the according columns.

  4. Pick the desired products.

  5. Set the parameters.

    1. Allow distributed calculation – If checked, price grid calculation is done simultaneously which improves the performance of the calculation.

    2. Allow column type change – If checked, the column type can be changed.

    3. Dynamic item mode – Products can be added or removed from the Live Price Grids at any new re-calculation of the LPG based on the filter definition and the mode setup.

    4. Result Price - Which element’s result will be stored to resultPrice column.

    5. All elements returned by the Pricing Logic and configured to be shown in Live Price Grids are listed. Select those that need to be included in this particular Live Price Grid.

  6. Save the LPG configuration.

To recalculate the prices in the LPG, select the LPG and click the Calculate icon. (You can also recalculate the LPG as many times as needed later.)

Auto Approval

Live Price Grid includes auto-approval of prices and approval workflow and offers a data-rich user interface in order to allow the seller/product manager to make an informed and rapid decision.

Convert LPG to a PL

If you want to "freeze" the current prices in an LPG, you can convert it to a Price List.

There are two possibilities:

  1. Create a new Price List.

  2. Append LPG Items to an existing Price List.

Create New Price List

This option is available only if you select an LPG in the list of LPGs.

  1. From the list of Live Price Grids (LPGs), select the LPG to be converted to a Price List.

  2. Click the 'Convert to Price List' icon.

  3. A copy of the LPG will appear in the list of Price Lists where it can be used as any other Price List.

Append LPG Items to Existing Price List

This option is available only if you run the conversion from within an LPG.

  1. Open a particular LPG.

  2. Select products that you want to include in the Price List. If you make no selection, the new Price List will contain all the products from the LPG.

  3. Click the 'Convert to Price List' icon. A field-mapping dialog opens:

    1. Select the target Price List from a drop-down menu.

    2. Decide if you want to overwrite existing Price List items. If this option is not enabled, the LPG items will be appended to the Price List.

    3. Perform the field mapping. The mapping table will only contain rows if the source LPG has mapped output columns (i.e., any attributeXX fields) – otherwise, the table will be empty.

  4. Confirm.

The new Price List inherits the same preferences (columns visibility, order etc.) as the original LPG.

If filters are set in the LPG, only the filtered set of rows will be converted to the Price List.

Data Structure

Header

Header contains the information common for the whole LPG, like:

id – The unique identifier of the LPG.

label – The name of the LPG.

targetDate – Identifies the first day of validity of the prices in the LPG.During calculation of the LPG this date decides which data to use for its calculation.

approvalState – Status of the LPG document - not approved / approved / denied.

numberOfItems – Number of items in the LPG.

numberOfApprovedItems – Number of items with approved new calculated prices.The Header contains the same information for: Open, Denied, Auto-approved and Submitted items.

lastUpdateDate – The last date when the LPG was re-calculated.

Line Item

Line Item contains information specific for an SKU (or eventually for sku in combination with the second dimension "key2").

sku – ID of the product, for which we calculated the price.

key2 – Used only in a "matrix" LPG (i.e., when the 2nd dimension is used - e.g., Country, Volume Tiers, …​).

currency – In which currency the calculated price is (or eventually all the prices on the line item).

unitOfMeasure – What the unit of the calculated price is (i.e., is the calculated price per "unit", "barrel", "liter", "package", …​ ).

resultPrice – Price calculated by the logic. Before the result price becomes the active price, it needs to be approved.

activePrice – Main price, result price which has ben approved.

activePriceDate – Date when the price was approved.

previousPrice – Previous price.

previousPriceDate – Date when previous price was approved.

priceChange_ActivePrev – Difference between active and previous price.

approvalState – Status of the Line Item - not approved / approved / auto-approved / denied.

attribute1..100 – Columns which store the values calculated by the logic and returned from the logic via its elements results.

LPG Logic

Logic Type – Generic (Default/null).

With minor (or no) changes, you can use it also for Price List.

Context information

  • api.product("sku") - SKU being calculated.

  • api.targetDate() - Target Date of the LPG.

  • api.currentItem() - Complete current line item. Warning: It only works in the 2nd and next passes (not in the 1st pass).

  • api.previousContext() - Previous Revision line item of the same SKU - via.

Element’s Display Mode – To make the element’s result available for the user, set the Display Mode to "Everywhere" (or "Price Grids").Remember, the user will be able to select the results (from the list of those made available via Display mode ) which will get to the actual generated Price List.

LPG and Price List Key Differences

Functionality

LPG

Price List

Functionality

LPG

Price List

Concept

Price grid items are "reused" all the time. Inside the item you have three generations of a price (latest draft, current/active and previous).

Price list items are generated once (then maybe updated after a manual review) but then frozen once the list is approved.

History

Last 2 approved prices.

Keeps the history of the all prices in pricelist revisions (until the price list/revision is erased).

Approval

Auto-approve by the auto-approve logic element, Manually item by item, at any time, Using mass edit.

All items at once.

Frequency of price changes (calculation)

Periodically, e.g., every night or event based (e.g., after a certain supplier changed prices).

At a defined time of a year (e.g., with a new catalog).

Line Items before calculation

Already stored in the DB even before logic calculation.

Stored to DB after logic calculation.

Summary

When it comes to LPGs it is apparent that they share a lot of similarities with Price Lists, with a few key differences such as frequency of the recalculations and history of prices. LPGs are best used when you need to handle a large number of products with rapidly changing prices which need to be recalculated on regular basis.

References

Documentation

Found an issue in documentation? Write to us.