2. Applying One Price List

September 6, 2022

  1. A price list can contain, in increasing order of priority:
    1. Percentage discounts to brands;
    2. Percentage discounts to product groups;
    3. Percentage discounts to individual products;
    4. Special prices for individual products.
  2. Therefore,
    1. Product group discounts override brand discounts.
    2. Product discounts override product group discounts.
    3. Special prices for individual products take precedence over all the other rules.
  3. If “Quantity discounts” are activated, and there is a quantity specified for a special price, the price only applies if sold quantity is equal or greater. 
  4. A discount for a product group also applies to all products that belong to the group’s subgroups.
  5. If the price list contains discounts for both a parent group and a sub-group below it, and both of these discounts could be applied to a product, the sub-group overrides the parent.
  6. A discount percentage is applied using the formula:
    discounted_price = price * (100 - discount_percent) / 100
  7. Discounted net price is rounded to one more decimal place than the value of configuration parameter “conf_decimals”. Discounted prices with VAT are rounded to 2 places, except when account uses invoice calculation algorithm version 4 — then no rounding is used.
  8. A discount percentage may also be a negative value. This results in a higher price after applying the discount.
  9. By default, price lists do not cumulate. A discount percentage must be subtracted from initial price (product card price), not the previous price list!
    1. If configuration parameters
      "client_pricelists_are_cumulative" = 1
      "warehouse_pricelists_are_cumulative" = 1
      respectively, have been applied, then the discount percentage must be subtracted from end result from applying the previous price list.
  10. By default, the last price wins (each price list overrides the previous one).
    1. If configuration parameter 
      "pricelist_order_of_preference" = "lowest_price" 
      has been applied, the lowest price across all price lists must win instead.