QUANTITY PRICING

Sections:
Flagging items as quantity priced
To setup quantity pricing
Quantity pricing displays
Quantity Pricing Modes
Quantity Pricing Schemes
Selection of a pricing table

SendSafe supports quantity pricing keyed by product type. Product types are defined in the database table {items} ProductType. Each product type can use a different quantity pricing scheme.

Note: This method of quantity pricing is very flexiable and powerful, but do not get carried away; for performance reasons the number of pricing sub-tables should be as few and as small as possible. Quantity pricing recalculations in the shopping basket does consume more server CPU horsepower than for non-quantity priced items. So keep the number of item-types small and the pricing range small.

Be sure to turn ON quantity pricing in the storefront (see Storefront Config - "Quantity Pricing Enable").

When an item that has quantity pricing is ordered, the fixed price (entered in the database for that item) is replaced with a quantity price. This logic also supports Buy 1 Get 1 Free sales (excluding free items from quantity pricing counts). Quantity pricing is applied before coupons discounts are applied to an order. This means coupons may further reduce a quantity price.

Flagging items as quantity priced:

All items with quantity pricing must have a ProductType with either "##" or "{" beginning in the 1st character position. Quantity priced items are identified by the system by the presence of this "##" or a "{" in the first position. If you do not want LOCKED or GROUPED algorithms to be in effect, then give all pricing keys a unique GROUP code (i.e. {1},{2},{3}, etc.).

All ProductType must be prefixed with a LOCKED or GROUP code. This LOCKED or GROUPED code tells the system which quantity pricing scheme to use for this item.

The remaining string found in the productType after the prefix will become the table lookup key for the quantity pricing table. This entire key must be found in the quantity pricing table.

As needed, the following reserved keywords can be used as part of the quantity pricing key used for lookup:

Application("CustomizerItemTag") = I-CUSTOMIZER
Application("QuoteItemTag") = I-QUOTE
Application("RMAItemTag") = I-RMA

Examples of pricing keys and productType codes
ProductTypeExample Pricing Key
{2}HHAHHA
{2}I-QUOTE-H2I-QUOTE-H2
##I-CUSTOMIZER-XYZI-CUSTOMIZER-XYZ
{5}I-RMA-333RMA-333

To setup quantity pricing:

  1. Create a Quantity Pricing Table or import a Quantity Pricing Table.
  2. Make sure effected items have their ProductType set to a quantity price prefix + lookup key.
  3. Activate Quantity pricing in the Storefront Config - "Quantity Pricing Enable"
  4. You must setup the selection of the appropriate Quantity pricing table for this order.

Quantity pricing displays:

In the product browsing objects (search results, drilldowns, showcases, etc.) a price range is displayed with a clickable pop-up containing the full pricing table. The price range displayed for an item can be either:

It is required that the priceEa be set to the lowest quantity price. If RetailPrice is used then this price must be set to the max price in the range.

In the basket of the cart the actual quantity price which will be applied is displayed. If no quantity pricing table information is found for a product tagged as "quantity priced" then the priceEa value of the item will be used instead of a quantity price.

Quantity Pricing Modes:

There are two types of quantity pricing modes. Both modes can be used at the same time in the same order. The two modes are GROUPED and LOCKED. The two modes cannot be combined for use with a single item.

GROUPED pricing works on all products with the same group code (or class). All GROUPED items must contain a grouped item prefix i.e. {abc}.

All separate quantities for items within the same GROUP are aggregated to arrive at a single total quantity for the GROUP. This single GROUP quantity is then used to look up each seperate price for each line-item using their respective quantity pricing sub-table.

You can have up to ten different groups for each unique pricing table. The only reason to have more than one group per pricing table is if you have different items with the same pricing for which you DO NOT want their quantities summed together when performing a quantity price lookup.

LOCKED pricing works on individual line items only. All LOCKED items must contain a locked item prefix i.e. ##.

The quantity used for pricing look up is the quantity on each individual lines. Even if the same product is entered twice in the basket as separate line items, those line items will not have their quantities aggreated; they will be treated as two individual pricing look ups. Each separate look up will use the respective quantity pricing sub-table.

GROUPS are setup with a prefix containing CHARACTER CODE inside a pair of curly-braces in the productType for an item. For example: {1} would be GROUP 1 and {B} would be GROUP B.

IF productType={2}BOOKS and productType={2}PENS
THEN these two productTypes would belong to the same GROUP and would have their quantities summed together for pricing look up purposes.
IF productType={2}BOOKS and productType={B}PENS
THEN these two products would belong different GROUPS and would NOT have their quantities summed together for pricing look up purposes.

LOCKS are setup with a prefix of ## in the productType for an item. In the example below ##TAPE items have locked quantity pricing.

Quantity Pricing Schemes:

Each individual 'pricing scheme' will require a series of entries (called a sub-table) in the Quantity Pricing Table. This entry is done using the Storefront Admin page or by using a spreadsheet import tool for bulk updating. Below is an example of a Quantity price entered into the storefront admin page.

IDX Keyword
(Pricing Key)
Value1
(Quantity Level)
Value2
(Price)

Description: This quantity pricing table contains 4 pricing sub-tables (or pricing schemes)... one each for each key: SOFTWARE,TAPE,BOOKS, and PENS. The first sub-table indicates that 4 or less SOFTWARE products will cost $1000.95 each, 5 to 19 SOFTWARE PRODUCTS will cost $100.95 each, 20 -29  SOFTWARE PRODUCTS will cost $12.95 each, and 30 or more SOFTWARE PRODUCTS will cost $10.95 each.

In this example there must be items in the database with a ProductType containing the key SOFTWARE. There can be 1 item or 100 different items... all will have the same price based on Quantity.

You can have up to three completely different Quantity Pricing tables per storefront with each containing multiple pricing sub-tables (or pricing schemes). You are limited to one specific Quantity Pricing table per order. Multiple Quantity Pricing Tables are useful because you could use one pricing table for wholesale, a different table for retail, and a third table for preferred customers. This would allow for completely different quantity pricing for each of these groups of customers.

Selection of a pricing table:

The selection & setting of a specific quantity pricing table for a specific order is handled by custom ASP logic. Typically a single quantity pricing table is set.

The addBasket logic uses the "QTYPRICELIST" VALUE which is HTTP POSTED to addBasket to set the table in effect for the entire order. This value is established by either the qtyListName API parameter in a buyobject or by the optional e-store framework logic or by the pastpurchase reorder logic.

The default Quantity pricing table is defined by the following configuration value which is used by the e-store framework. The following value will have no effect on custom logic:

Application("DefaultQtyPricingTable") = "Quantity Price A"
The session cookie svnQtyPriceTableName is used to select a table in effect which overrides the default table. Both these values are used by the modules listed below to set the Quantity Pricing table for an order: Selection of any table other than the default requires custom ASP logic which will select the table based on whatever criteria applies.

The DB Tool function updateOrderRecord() is used to set the pricing table for an order.