Broadleaf Microservices
  • v1.0.0-latest-prod

Pricing Service Key Features

The Pricing Service provides dynamic, context driven prices. Price lists can be used to address a number of pricing related use cases. This section describes the key features of price lists.

Date Driven Price Lists

Price lists have an active date range. Using date ranges provides support for …​ - Date bounded sales - Seasonal price lists

Sales

Price lists can be used to drive sale prices which can be specific item prices or formula based prices.

Formula Based Prices

A price list can be setup with modifiers to control item prices. Prices can be modified using percentage, multiplier, or addition/subtraction operations.

Customer and Account Based Pricing

Price lists can use the customer segment or account information to drive pricing. Common examples: - Loyalty member pricing - Employee discount pricing - Contract pricing to override prices for a specific B2B account

Application Specific Price Lists

Price lists can be managed globally (at the tenant level) or at the application level. If you have application specific pricing, you can choose to manage all prices at the application level or you can manage all prices globally and then just manage the overrides at the application level.

When using sparse overrides, use a lower price list priority for the application so that the application prices take precedence over the global pricing.

Price List Priorities

A single SKU could be targeted by multiple price lists. The price list can have an optional priority which determines the order it will be applied in the case multiple prices apply.

The priority is per Price List Type. So, if there are two standard price lists that have a price for the same SKU and all context and customer rules apply, then the lower priority price list price will be used.

Price Change Workflow

The Broadleaf admin provides the ability to make price list changes through the preview and approval workflows.

Import

This service includes out-of-box import implementations.

Price Data

Each of the different types of price data can be imported.

The import types are STANDARD_PRICE_DATA, SALE_PRICE_DATA, and CONTRACT_PRICE_DATA. The corresponding specification implementation in ImportServices is PriceDataSpecification - each type of price data gets its own bean of this type, thereby resulting in separate specifications.

Key Components:

  • PriceDataImportBatchHandler is responsible for processing imports of PriceData entities into a PriceList

  • PriceDataConverter is responsible for converting input price data rows into PriceData instances

Multi-Currency Support

Price lists are always in a target currency that represents what value the amount refers to. There are two approaches for using price lists in multi-currency implementations.

It is common to maintain full price lists by country (or currency). In this case, use a context rule to restrict the price lists in play.

Another approach is to use currency conversion. In this case, price lists can be managed in a base currency with currency conversion being used to convert from the source currency to the target currency.

Price Data: Upfront, Recurring, and Usage-based Pricing

Tip
recurring and usage pricing are introduced with 2.1.0 of Pricing Services

Other than maintaining a basic price for a product or SKU, we’ve also introduced the ability to configure more advanced pricing scenarios using Broadleaf’s Pricing Engine to manage different price lists which can be targeted and applied in certain contexts and to certain SKUs.

Specifically, you can now manage not only an upfront price, but also a recurring price as well as a usage base price.

  • The standard or Upfront price is meant to denote a price that is levied once typically at the time of checkout

  • A Recurring price is levied repeatedly for a configured period

  • A Usage price defines a base rate where the actual charge is calculated by usage events typically maintained outside of Broadleaf. The primary purpose of specifying this here is really for merchandising purposes to customers as well as providing a way to define the rate needed for downstream calculations and billing systems

Additionally, each of these pricing properties can be associated with a Pricing Term which may match a term defined on the Product. Again, terms are conditions under which this price is available to the customer. The key aspect being that the term associated with any advanced price must match terms that are specified and available on a Product.