ssossossosso
Documentation Home »User Guide »Pricing »Create a Price List
current version

Create a Price List

Note

See a short demo on how to configure price lists for customers and customer groups in OroCommerce, or keep reading the step-by-step guidance below.

To create a new price list:

  1. Navigate to Sales > Price Lists using the main menu.
  1. Click Create Price List. The following page opens:
  1. In the General section, provide the following information:

    1. Name — Type in the price list name.
    2. Currencies — Select one or more currencies that you would like to enable for the prices in the price list.

    Note

    The price in every currency should be provided explicitly. There is no automatic conversion.

    1. Active — Set the option to enable the price list. Keep the price list inactive while drafting the prices. Deactivate the price list to disable temporarily the prices it contains.

    2. Schedule — Add a timetable for price list activation and deactivation.

      Click Choose a date to open a calendar and pick the date.

      Click time and select the activation or deactivation time from the list. Alternatively, type it in and press Enter.

      To add another time slot, click + Add below the time table. Add as many slots as you need.

  2. In the Product Assignment section, enter criteria to filter the products and add them to the price list. See Automated Rule-Based Price Management for more information.

    Note

    Optionally, in addition to rule-based product assignment, you can add a product price to the price list manually in one of the following ways:

    • While editing product (in the Product Prices section).

    • When viewing the price list details, by clicking + Add Product Price.

    You can override the existing rule-based price. A manual entry has higher priority.

  3. In the Price Calculation Rules section, specify rules for price calculation based on the price attributes (e.g. mrsp) and other product details. You may use conditions to apply the rule to the subset or the filtered products. See Automated Rule-Based Price Management for more information.

  1. Click Save.

Schedule Price Adjustments

For season sales or any other temporary price amendments, you can create a dedicated price list, configure it to be the highest priority, then enable and disable it on schedule to cover the planned sales time frames.

Scheduled price activation helps eliminate the unwanted pressure of the price management during the hot hours and helps you and your sales people focus on your customers.

To schedule price activation and deactivation:

  1. Navigate to Sales > Price Lists in the main menu.
  1. Click the More Options menu to the right of the required price list and then click the Edit icon to start editing price list details.

  2. In the General section, next to the Schedule, add a timetable for price list activation and deactivation:

    1. Click Choose a date to open the calendar and pick the date.

    2. Click time and select the activation or deactivation time from the list. Alternatively, type it in and press Enter.

    3. To add another slot, click + Add below the time table. Add as many slots as you need.

  3. Once you

Import and Export Prices

Export Prices From the Price List

You might need to export price information and download it as a .csv file to reuse it in the third-party systems. Another scenario for using export is when you plan bulk data update that is easily automated in the spreadsheet software (e.g. raise the price by 20%).

To export the prices in a .csv format:

  1. Navigate to the Sales > Price Lists in the main menu and click on the necessary price list to open its details.

    The following screen opens.

  2. Click Export.

    After the following notification, you will receive an email with the link to download the .csv file.

  3. Open the email and click the Download link.

    The file is automatically downloaded.

Example of the exported information

Product SKU Quantity Unit Code Price Currency
0RT28 1 item 89.99 USD
0RT28 10 item 85.49 USD
0RT28 20 item 80.99 USD
0RT28 50 item 76.49 USD
0RT28 100 item 71.99 USD
1AB92 1 item 85.5 USD
1AB92 20 item 76.95 USD
1AB92 50 item 72.68 USD
1AB92 100 item 68.4 USD
1GB82 20 set 16.19 USD
1GB82 100 set 14.39 USD
1GS46 1 item 22.49 USD
1GS46 20 item 20.24 USD
1GS46 50 item 19.12 USD
1GS46 100 item 17.99 USD
1TB10 1 set 270 USD
1TB10 10 set 256.5 USD
1TB10 20 set 243 USD
1TB10 50 set 229.5 USD
1TB10 100 set 216 USD

Import Prices Into the Price List

To streamline adding a large bulk of items, like customer information, products, prices or inventory information, you can import the bulk details from a .csv file.

Import the product prices into the price list using the .csv file that follows the price details data structure.

Example of prices bulk import template

Product SKU Quantity Unit Code Price Currency
sku_001 42 kg 100 USD

Note

The unit and currency should be created before the inventory levels import.

To import a bulk of price information:

  1. Navigate to the Sales > Price Lists and click on the price list which you would like to update using the bulk import.
  1. Get a sample: To download a sample .csv file with the necessary headers, click Download Data Template in the list next to Import.

    Note

    Follow the on-screen guidance for any additional actions. For example, for the inventory template, select one of the options: a) inventory statuses only or b) detailed inventory levels.

  2. Prepare data for import: Based on the downloaded file, create your bulk information in .csv format. Once your file is ready, click Import, select the prepared comma-separated values (.csv) file, and click Submit.

  3. Validate import results: Review import validation results. If there are any Records with errors, fix them in the .csv file before starting the import.

  4. Launch import: After successful validation, click Import.

Interactive status messages inform about the import progress, and once the import is complete, the changes are reflected in the list upon refresh. Additionally, an email message with the import status is delivered to your mailbox.

See this two-minute demo of the import process:

Manage Product Price Manually

You can add a product price in the specific currency to the price list manually in one of the following ways:

  • While editing a product, in the Product Prices section of the product details.
  • When viewing the price list details, by clicking + Add Product Price.

In the Price List

To add a product price in the price list:

  1. Navigate to Sales > Price Lists in the main menu.

  2. Click on the price list that you would like to add the price into. The price list details open.

  3. Click + Add Product Price. The Add Product Price dialog appears.

  4. Select the product to add the price for.

  5. Specify the quantity to identify the tier of quantity that the price should apply to.

    To illustrate how price tiers work, let us consider the following example:

    When the product prices in USD are provided for one item, ten items, and fifty items, and a buyer orders 20 items, they will see price provided for ten items.

  6. Select the unit of quantity for the price.

  7. Type in the price value and select the necessary currency from the list next to it.

  8. Click Save.

In the Product Details

To add a product price in the product details:

  1. Navigate to Products > Products in the main menu.

  2. Find the product you would like to add the price for, click the More Options menu at the end of the corresponding row, and then click the Edit icon.

    The product details open.

  3. In the Product Prices section, click + Add.

    The new line appends to the end of the list.

  4. Select the price list to add the price into.

  5. Specify the quantity to identify the tier of quantity the price should apply to.

    To illustrate how price tiers work, let us consider the following example:

    When the product prices in USD are provided for one item, ten items, and fifty items, and a buyer orders 20 items, they will see price provided for ten items.

  6. Select the unit of quantity from the list.

  7. Type in the price value and select the necessary currency from the list next to it.

  8. Click Save.

Generate Product Price Automatically

The following simplified product catalog will be used in examples:

Item # Product Is in stock? Category List Price Price Unit Currency
A Laptop yes 1 2500
item USD
B Pen yes 2 0.5
item USD
C Office chair yes 3 300
item EUR
D Office shelve yes 4 250
item USD
E Server no 5 30000
item USD

To automatically generate a price list in OroCommerce:

  1. Navigate to Sales > Price Lists in the main menu.

  2. Start editing the required price list or click Create Price List to create a new one.

  3. In the Product Assignment section, set up the product list. To complete this, in the Rule field, enter criteria to filter products in the catalog with the Symfony2 expression language.

    For example, to include all products in categories 1 and 5, use the following expression:

    1
    product.category == 1 or product.category == 5
    

    For the sample catalog, this will generate the following product list:

    Price list A

    Item # Product Is in stock? Category List price Price Unit Currency
    A Laptop yes 1 2500
    item USD
    E Server no 5 30000
    item USD

    The following example illustrates filtering products in stock with the list price (also known as manufacturer’s suggested retail price – MSRP) that is higher than 100 USD per item:

    1
    2
    product.msrp.value > 100 and product.msrp.currency == ‘USD’ and
    product.msrp.unit == ‘item’ and product.inventory_status == ‘in_stock’
    

    This filtering will result in the following product list:

    Price list B

    Item # Product Is in stock? Category List Price Price Unit Currency
    A Laptop yes 1 2500
    item USD
    D Office shelve yes 4 250
    item USD

    Hint

    You can customize the automatically generated price list and add more products manually.

  4. Set up the price.

    To enable outstanding pricing flexibility, for the price list that automatically calculates the price for the products selected. The pricing behavior is configured in the Price Calculation Rule section.

    1. In the Price for Quantity, enter the quantity, select a product unit and currency that the rule will be applied to.

    2. In the Calculate As field, enter a price formula.

      For example:

      To set the price for all products to 99 USD, use the following expression:

      1
          99
      

      The result will be the following:

      Price list A

      Item # Product Is in stock? Category List Price Price Unit Currency
      A Laptop yes 1 2500 99 item USD
      E Server no 5 30000 99 item USD

      To set to set the price (for one item in US dollars) to be 5 USD more than the target margin (custom property of the product), use the following expression:

      1
          product.msrp.value * product.category.margin + 5
      

      The result will be the following:

      Price list B

      Item # Product Is in stock? Category List price Margin Price Unit Currency
      A Laptop yes 1 2500 1.2 3005 item USD
      D Office shelve yes 4 250 1.5 380 item USD

      In this expression, the (price formula) may contain product and product-related items properties of the numeric type, numbers and arithmetic operations.

    3. In the Condition field, enter a product filtering expression.

      For example, you have decided to set price 99 USD only to the products from the category 1. Then you have entered 99 in the Calculate As field (see step a. the first example. In the Condition field, enter the following expression:

      1
         product.category == 1
      

      The result will be the following:

      Price list A

      Item # Product Is in stock? Category List Price Price Unit Currency
      A Laptop yes 1 2500 99 item USD
      E Server no 5 30000
      item USD

      The (product filtering expression) is based on a Symfony2 expression that additionally filters the list of products generated in step 3 to limit the products the price shall apply to.

    4. In the Priority field, specify the precedence for this rule. See Filters, Priorities, and Matching Units in the Automatically Generated Price List for more information.

    5. If you need to set up prices for another range of products selected into the price list, or for another currency / unit, click +Add and repeat steps 4.a‒d.

    Hint

Filters, Priorities, and Matching Units in the Automatically Generated Price List

Funnel effect: Condition filter is applied only to the products assigned to the price list in step two in the process above and not the complete catalog.

Default units and currency: If the currency and unit are not specified as filtering criteria, Oro Commerce applies USD as the default currency and item as a default unit. When currency and unit values are included in the filtering criteria, they override the default values.

Automatic updates: Oro Commerce automatically updates price lists and recalculates prices whenever product-related data is updated. The trigger could be a new product, category structure changes, or the product that moved to another category.

Matching units: During price generation, Oro Commerce precisely matches the rule units and product units to ensure calculations are correct. For example, when you sell stuffed toys and the supported units are items and bundles of 10 items, your price calculation rule configured only for kilograms will not apply and the price will not be generated.

Multiple price rules that are targeting the same product: When several price calculation rules apply to the same product in the price list, Oro Commerce uses the rule with the highest priority.

Enforcing the price: Prices that were provided manually have higher priority than those generated automatically. Once you manually set the price for the automatically assigned product, it will not change after price recalculation anymore.

Filtering Expression Syntax

The filtering expression for the product assignment rule and the price calculation condition follow the Symfony2 expression language syntax and may contain the following elements:

  • Entity properties stored as table columns, including:

    • Product properties: product.id, product.sku, product.status, product.createdAt, product.updatedAt, product.inventory_status, etc.

    • Properties of product’s children entities, like:

      • Category properties: product.category.id, product.category.left, product.category.right, product.category.level, product.category.root, product.category.createdAt, and product.category.updatedAt
      • Price properties: product.price.value, product.price.unit, product.price.quantity, and product.price.currency
      • Any custom properties added to the product entity (e.g. product.awesomeness), or to the product children entity (e.g. product.category.priority and product.price.season)
    • Relations (for example, product.owner, product.organization, product.primaryUnitPrecision, product.category, and any virtual relations created in Oro Commerce for entities of product and its children.

      Note

      • To keep the filter behavior predictable, Oro Commerce enforces the following limitation in regards to using relations in the filtering criteria: you can only use parameters residing on the “one” side of the “one-to-many” relation (including the custom ones).
      • When using relation, the id is assumed and may be omitted (e.g. “product.category == 1” expression means the same as “product.category.id == 1”).
      • Any product, price and category entity attribute is accessible by field name.
  • Operators: +, -, , / , %, * , ==, ===, !=, !==, <, >, <=, >=, matches (string) (e.g. matches ‘t-shirt’; you can also use the following wildcards in the string: % — replaces any number of symbols, _ — any single symbol, e.g., matches ‘ t_shirt’ returns both ‘t-shirt’ and ‘t shirt’) and, or, not, ~ (concatenation), in, not in, and .. (range).

  • Literals: You can use strings (e.g. ‘hello’), numbers (e.g. 345), arrays (e.g. [7, 8, 9] ), hashes (e.g. { property_name: ‘property_value’ }), true, false and null.

Developer Notice

The expression is converted into internal Nodes tree. This tree is converted into QueryBuilder which is used in Insert From Select to fill prices and assignment with one query. Virtual relations and virtual fields are managed by AbstractQueryConverter, that is also used to join all required relations and generate unique table aliases. Generated query builder is cached along with its parameters. Each rule and assignment rules have their cache by ID. When a rule or an assignment rule is changed, the cached QueryBuilder is recalculated.

Set Prices in Multiple Currencies

Prerequisites

Ensure that the necessary currencies are enabled in the global and website configuration.

Enable Multiple Currencies for the Price List

To add or remove currencies that may be used in a price list:

  1. Navigate to Sales > Price Lists in the main menu.
  1. Click the More Options menu to the right of the price list and then click the Edit icon to start editing the price list details.
  2. In the General section, next to the Currencies, select the currencies you would like to enable for the price list (e.g. USD, EUR, PND) and unselect those you would like to disable.
  1. Once you enable the necessary currencies for the price list, click Save.

Add Price in Specific Currency to the Price List

When adding a product price manually or using a rule that automates price generation, you always specify the currency it is in. You can add only one price per combination of product quantity tier and currency (e.g. one price for 1 item in USD or per 10 items in EUR). For detailed information on adding product prices in particular currencies, see Manual Price Management and Automated Rule-Based Price Management.

View Price in Specific Currency on the Front Store

By default, prices in the OroCommerce Front Store are shown in the default currency.

However, you may select a different currency with a currency picker on the top right.

After the new currency is selected, product prices automatically adjust to show the unit prices in the selected currency.

Note

When the price list does not contain price for the product in the selected currency, the price information is missing. You can still add the product to the shopping list and request a quote to clarify the pricing in the specific currency.

Sample: Prices in Euro are Provided

Sample: Prices in Euro are Missing

Browse maintained versions:
current1.4