Merchant Custom Prices feature overview

Edit on GitHub

In B2B commerce transactions, prices are typically negotiated in contracts. Therefore merchants and their clients, which are usually company business units, expect to see their own prices in the shop. With the Merchant Custom Prices feature, the shop owners of B2B and B2C marketplaces can provide different prices for merchants and their clients. This way the relationship between merchants and buyers is reflected more accurately, and the shop owners can set different prices for various customers.

When talking about product prices that depend on customers they refer to, we differentiate between two types: default prices and specific prices.

  • Default prices are the prices shown by default to all regular customers
  • Specific prices are different prices meant for specific target audience Prices diagram

The different price categories that can be selected based on contextual information, like customer, merchant relationship, etc. is referred to as price dimension.

Currently we have the following price dimensions:

  • Mode (Net/Gross)
  • Volume
  • Store
  • Currency
  • Merchant Relationship

All prices in Spryker OS are stored in spy_price_product_store, however connections to price dimensions are stored to different tables.

For example spy_price_product_default contains only connections to prices, which were imported during store installation or created using Zed UI, and connections to prices pertain to merchant relations, would reside in spy_price_product_merchant_relationship. So the spy_price_product_default table poses a set of relations between spy_price_product_default and fk_price_product_store table and related entities.

The Merchant Custom Prices feature relates specifically to prices set for individual merchant relations. This feature implies that customers see only prices applying to them, based on their merchant relation, or default prices if merchant relation doesn’t have prices for some products.

The specific prices apply only to merchant relation assignee (business units, as a rule) and not to merchant relation owners. If a business unit of a customer has several merchant relations with different prices for one and the same product, the lowest price is offered.

Default prices in the web-shop

Default prices in the web-shop

Prices for merchant referring to a specific relation

Prices for merchant referring to a specific relation

Besides setting specific prices for individual merchant relations products manually, the prices can also be added in bulk by importing them from a .csv file. The .csv file for import must contain populated merchant_relation_key, abstract_sku and/or concrete_sku, price_type, store,currency, price_net, price_gross fields.

To import the specific prices for merchant relations from the .csv file residing in data/import inside the module PriceProductMerchantRelationshipDataImport, run

console data:import product-price-merchant-relationship

Or, if you want to import merchant from your file, indicate a path to it:

console data:import product-price-merchant-relationship [-f [path_to_csv_file]

To remove all imported merchant relation prices you can run:

console price-product-merchant-relationship:delete

Or, you can remove merchant relation prices referring to specific merchant relations by specifying their IDs:

console price-product-merchant-relationship:delete [-m X] . X = MR ID
Set prices per merchant relations when creating abstract products and product bundles
Developer guides

Are you a developer? See Merchant B2B Contracts feature walkthrough for developers.