1. Home
  2. /
  3. References
  4. /
  5. Technical References
  6. /
  7. Understanding sales pricing

Understanding sales pricing

What this document contains:

Pricing overview

There are three ways to hold sales prices, discounts and FOC in DC1:

  1. Customer Contracts
  2. Sales Price Lists
  3. Sales Pricing Methods
  4. All can be time-dependent

    All can hold a price entered as a value or as a margin or mark-up based upon cost (average, standard, last purchased) or purchase price. Discounts in form of percentages and/or amounts can be applied on top of these. Discounts can be dependent upon the quantity or value ordered. These can also hold FOC (with or without a price).

    In the event of sales from NCC stock there is also an option to hold sales price and FOC directly on the non-conformity certificate.

Customer Contracts

You can optionally enter a:

  • Price (in the Price field) or the means to enter a price (in the Basis, Marg/mark, Fact/per and Value fields)

    and/or

  • Discount (using the Discount ID field combined with the Limit type or Limit code fields)

    or

  • FOC

This can be done on the following levels:

  • Customer (mandatory)
  • Item (mandatory)
  • Unit (optional depending on what you are entering, e.g., price or discount)
  • Warehouse (optional depending on what you are entering, e.g., price or discount)

Note: If you enter only a discount – you can use a Sales Price list with a price on which to base the discount. If you leave the Price list field blank, the base price will be used.

Contracts can be Quantity-based, Time-based or a combination of both.

In Quantity-based contracts it is not allowed to sell more than the quantity contracted, irrespective of the period of the contract.

In Time-based contracts a greater quantity than contracted can be sold but only within the time period.

For contracts that are both Quantity and Time-based the contract will expire when either the quantity contracted has been sold or the “To” date has been reached, whichever comes first.

Note: A message is sent to the user if an active quantity based contract is read in the sales pricing routine that has less quantity left on it than the quantity sent to the calling program.

Sales price lists

You must enter a:

  • Price (in the Price field), which is fixed on item/currency/unit level (mandatory)

    or

  • The means to enter a price (in the Basis, Marg/mark, Fact/per and Value fields).

You add the items and corresponding currencies and units and how the price is going to be derived (i.e. is it a fixed value, is it to be calculated based on cost or is it going to be FOC).

Note: The system supplies a default price list identifier (price list 01 in Price list table) which is connected in the DIS control file. You do not have to use it or establish any other Price list because you can define the prices in the Customer contracts or Sales pricing methods. When DC1 Distribution runs the main pricing program (DMR910) it will start with retrieving a “Base price”.

The base price retrieval will be done using price lists in the following order until a price is retrieved:

  1. Using the price list that has been passed to the program as an input parameter. In sales order entry this will be the price list that you find in the order header (and that price list is retrieved from the Customer file and can also be overridden).
  2. Using the standard price list defined in the pricing policies in DIS control file.
  3. It will use this base price as the starting point for calculating any prices or discounts as it needs a starting price in the event that it encounters only discounts in the Customer contracts and Sales pricing methods. It will also use this base price when checking against amount limits if no price has been encountered at that point.

Sales pricing methods

You can optionally enter a:

  • Price (in the Price field) or the means to enter a price (in the Basis, Marg/mark, Fact/per and Value fields)

    and/or

  • Discount (using the Discount ID field combined with the Limit type or Limit code fields)

    or

  • FOC

Note: If you enter only a discount – you can use a Sales Price list with a price on which to base the discount. If you leave the Price list blank, the base price will be used.

Method types

The method type controls each sales pricing method.

The types are:

Sales price and discounts retrieval

The sales price and discounts retrieval is controlled by two main routines:

  • Sales price and discounts calculation – This routine retrieves the price and discounts for a single line. First a base price is retrieved. Then in the case of NCC selling a check will be made if a price can be found on the NCC certification (if that is the case that price will be used and search in the normal main pricing sources will be omitted). Then the sales price is retrieved from the main pricing sources Contracts, Price lists, Normal methods or Promotional methods (the base price is used if a Contract or a Method is encountered that only holds discounts). Any discounts set up for the same main source is then applied. Lastly, chain discounts are applied if that is applicable for the main source (controlled with a flag on the main source).

    The outcome of this pricing of the line will control if the line will get any order summary discounts (O- and H-type method). If either the main pricing source or any of the applied chain discounts is flagged with Order summary discounts set to NO then no order summary discounts will later be added to this line.

  • Calculate order summary discount – This routine calculates and applies discounts based upon the summary of the whole order. This is performed at order close or when requested by the user. It will first apply Order line summary discount (O-type methods) at order line level. It will then apply Header discounts (H-type methods) that are stored at order header level with the apportioned amount that can also be seen at line level.

Click the following to view the flowchart.

Flowchart – Sales pricing retrieval

Controlling factors

DIS control file

DIS control keys

Prices

Definition of prices

We have a number of definitions of prices in the system.

Base price

The sales price and discounts retrieval program always starts with retrieving a base price. This retrieval will be done from price lists in the following order until a price is retrieved:

  1. Using the price list that has been passed to the program as an input parameter. In sales order entry this will be the price list that you find in the order header (that price list is retrieved from the customer file and can also be overridden).
  2. Using the standard price list defined in the pricing policies in DIS control file.

The pricing program will use this base price as the starting point for calculating any prices or discounts as it needs a starting price in the event that it encounters only discounts in the Customer contracts and Sales pricing methods. It will also use this base price when checking against amount limits if no price has been encountered at that point.

Sales price

The sales price is retrieved by the sales price and discounts retrieval program. If the pricing program only encounters discounts in the Customer contracts and Sales pricing methods it will use the base price as sales price. The sales price can also be manually entered or overridden. The sales price will also hold the value of included VAT when applicable.

Non-discounted price

The non-discounted price represents the gross sales price, i.e. the sales price minus any included VAT. This is the initial price that discounts are calculated and applied upon.

Net line price

The non-discounted price minus all line discounts. The net line price does NOT include deduction of header discounts.

Net price

The non-discounted price minus ALL discounts, both line discounts and header discounts

Discounts

Definition of discounts

We are defining discounts based upon what level they apply as Line discounts or Header discounts.

All discounts are also grouped together in three different sequence groups based upon how they are applied in the sequence that they are retrieved or manually entered. In such a sequence group, any automatically retrieved discounts are always added before any manually added discounts.

Line discounts

Header discounts

Storage, Calculation and Display

All discounts are stored in a general discount file and are linked to the relevant order, or quotation or invoice line by a unique key. Enquiries such as the Customer Service Enquiry and the Customer Price and Discount Enquiry still use this file but the discount details are removed when the enquiry has finished.

Discounts are calculated initially based upon the non-discounted price for a one-off of the sales unit and are always converted to amount per unit that is stored in the previously mentioned file using the maximum number of decimals available, i.e. 4. The discounts are added together as line discounts and header discounts for the line utilising the maximum number of decimals before the rounding takes place to the correct number of decimal.

All discounts are then deducted from the non-discounted price in the sequence in which they are applied to arrive at a net price that is then multiplied by the quantity of the sales unit on the line to give the net amount.

The net line price is calculated in a similar way but this time using only line level discounts. The header level discounts are excluded. It is then multiplied by the quantity of the sales unit on the line to give the net line amount.

Discounts can also be in the form of FOC items (when running FOC items handling). In that case the Discount will hold one or more FOC items that are to be given away. For sales order, Sales quotations and Invoices these FOC items represent separate lines holding the item in the defined quantity and flagged as FOC. The information about what line the FOC item is created on will then also be visible for the Discounts FOC items.

Printing

All customers are different and, as such, like to see the discounts printed in different ways, if at all. The printing of discounts is controlled by two flags stored against each customer, one for “Print discounts” and one for “Aggregate discounts”; this gives three options on how to print the discounts, namely:

  • No discounts are printed (i.e. Net price is shown)
  • A list of individual discounts along with their descriptions is printed
  • A single aggregate discount is printed

There is also a possibility to control how FOC items information is to be printed on external documents. This is defined in DIS control file for documents Quotation, Order confirmation, Transport note and Invoice. When switched on the following FOC item information will be printed:

  • For all Base lines for FOC item lines, all connected FOC item lines will be printed (e.g. Dependent FOC item line 20, 30, 40, etc.)
  • For all Dependent FOC item lines the originating base line for the FOC item will be printed (e.g. FOC item from line 10)

Customer structure pricing

Sales prices may be negotiated and stored at two levels, i.e. at a parent level and at a customer level.

The Pricing Policy determines which of these levels is used via the following three policy types:

  1. Parent
  2. Customer
  3. Best of

The Pricing Policy is stored against the Holding Company in a Business Partner Structure.

When a “Parent” pricing policy is established certain other elements may also be established at parent level, these are:

  • Price List
  • Discount Group

The above may be different for each parent within the structure, whereas the Pricing Policy is unique for the whole Business partner structure.

It may be that in one “arm” of a structure there is a subordinate parent that has negotiated prices for itself and its subsidiary companies that are different to the rest of the Business partner structure. To handle this situation a “Stop search” field is held against the parent that indicates to the pricing program to not look any higher in the structure to find a parent price.

Example illustration

Customer Pricing Policy Procedure

A “black box” program is called that first makes a check to see if Business Partner Structure handling is active and, if so, returns:

  • Pricing Policy (from the Holding Company)
  • Pricing Parent, i.e. the parent in the structure that is to be used by the pricing program
  • Price List (attached to the Pricing Parent)
  • Discount Group (attached to the Pricing Parent)

If the Pricing Policy is Parent:

  • The order header fields for Price List and Discount Group are overwritten with details from the Pricing Parent.
  • The pricing program executes Price List, Contract and Method subroutines using Parent details.
  • Only Contracts whose “Parent” field is set to YES are read.
  • Methods having Customer as one of the keys are omitted.

If the Pricing Policy is Customer:

  • Contracts whose “Parent” field is set to YES are omitted.
  • Methods having Customer Structure as one of the keys are omitted.

If the Pricing Policy is Best of:

  • The pricing program executes Price List, Contract and Method subroutines twice, once in Parent “mode” and once in Customer “mode”, and the best price from either “mode” is selected.
  • The DIS control file fields for “Best value/prom” and “First price/prom” are effective within each “mode”.

Note: Customer structure pricing is not activated for order summary discounts of types “O” and “H”.

Understanding chain discounts

You must have a Customer contract or Price list or Normal (N) Sales pricing method or Promotion (P) Sales pricing method to start with before the Chain discount will kick in.

To reiterate, chain discounts can be applied on top of prices and discounts generated from a Customer contract, Sales Price list and/or Sales Pricing method (where type = N or P).

The actual discounts in the chain are set-up as a type C (Chain discount) in the Sales pricing methods file. If the flag for Chain discount is set to YES in the DIS control file, you can set the equivalent flag to YES in the Customer contract, Price list and Sales Pricing method “Type” for N or P.

If chain discounts are allowed and found the system will apply the discounts from the Sales Pricing Method “Type” C (reading them in the sequence defined) on top of any discounts generated for a Customer Contract, Price list, Normal method type or Promotion method type.

Claiming discount rebates

The DC1 Supplier Marketing Support (SMS) application provides the functionality that allows your company to claim rebates from your suppliers/manufacturers. The rebate claims can be derived from a cost or a customer discount. If you want to claim back from the supplier the discount that has been given, set the Claimable flag to YES in all places where discounts can be established (i.e. Sales pricing methods, Limit codes, Sales discount IDs). The discount IDs that you want to claim must then be set up in an SMS agreement that is defined for claiming discounts in where also the terms of the rebate claim are defined.

FOC items given as discounts can also be claimed in the same way as other discounts. In that case the Sales discount value (SDV) of the FOC item represents the net price of this item in the normal situation, i.e. it represents the pricing of an item, when it is not given as a FOC item (for example, picking an item’s price from a sales price list). In the specific case of claiming discounts in the form of FOC items this will create the rebate transaction towards the generated dependent FOC item line and not towards the discount on the base line (which is the case for claiming normal discounts).

VAT handling

Three VAT related fields, “VAT Based Y/N“, “VAT Included Y/N” and “Included VAT % code” are attached to price lists, sales pricing methods and contracts. In certain scenarios more than one set of these may be encountered, for example, when a price list is used as a basis in a method or contract.

As a general rule the VAT related fields from where the price is retrieved, or calculated, will always be applied.

This is rather obvious when a price is retrieved from a price list or when a price is calculated in a contract or sales pricing method based on a cost base. When a price is calculated in a contract or method based on a price list, the same rule should apply as for a calculation based on a cost base. This is maybe not obvious but is a consistent rule.

Example:

The price list from where the price is retrieved as a base for the price calculation in a contract or method has the VAT fields set to:

VAT based = Y, VAT included = N, Incl VAT% = blank.

The contract or method has VAT fields set to:

VAT based = N, VAT included = Y, Incl VAT% = UK17

When the price is calculated from the price list with mark-up of 25 % the system will interpret this as a new calculation of the price and will therefore retrieve and use the VAT fields from the contract or method even if the base was a price list. The result will be:

VAT based = N, VAT included = Y, Incl VAT% = UK17

Using Price lists as a basis in Contracts and Sales pricing methods

To achieve a consistent handling when a price list is used within a contract or pricing method the fields for FOC, Limit code discount and Retail price must also be considered along with the VAT.

We must also pass this price list as output from the sales price and discount calculation program to be able to run sales restriction check against this price list.

Finally the flags for chain discount and order summary discount must also be considered.

See the following scenarios and associating results below:

  • Contract scenarios
  • Sales pricing method scenarios
  • Price list scenarios

Contract scenarios:

Sales pricing method scenarios:

Price list scenario:

Margins and Mark-ups

The objective of all businesses is to make a profit that may be shown as:

Sales Price – Cost Price = Profit

Margin: The profit when expressed as a fraction, or percentage, of the sales price is known as the margin and may simply be shown as:

Margin = Profit/Sales Price

Mark-up: The profit when expressed as a fraction, or percentage, of the cost price is known as the mark-up and may simply be shown as:

Mark-up = Profit/Cost price

Margins

When the cost price is known, the formula used in calculating the sales price from this when margins are used is as follows:

Sales Price = Cost Price / ((100 – %) / 100)
Sales Price = Cost Price / (1 – Factor)

Example 1 – Assume a cost price of 75.00 with a margin of 20%, the sales price is calculated as:

75.00 / ((100 – 20)/100) = 75/0.8 = 93.75

Example 2 – Assume a cost price of 90.00 with a margin of a factor of 0.25, the sales price is calculated as:

90.00 / (1 – 0.25) = 90/0.75 = 120.00

The above examples can be verified by using the Profit/Selling Price formula.

Example 1 Margin = (93.75 – 75.00)/93.75 = 18.75/93.75 = 0.2 x 100 = 20%
Example 2 Margin = (120.00 – 90.00)/120 = 30/120 = 0.25

Mark-ups

When the cost price is known, the formula used in calculating the sales price from this when mark-ups are used is as follows:

Sales Price = Cost Price x ((100 + %) / 100)

or

Sales Price = Cost Price x (1 + Factor)

Example 3 – Assume a cost price of 75.00 with a mark-up of 20%, the sales price is calculated as:

75.00 x ((100 + 20)/100) = 75.00 x 1.2 = 90.00

Example 4 – Assume a cost price of 90.00 with a mark-up of a factor of 0.25, the sales price is calculated as:

90.00 x (1 + 0.25) = 90.00 x 1.25 = 112.50

The above examples can be verified by using the Profit/Cost Price formula.

Example 3 Mark-up = (90.00 – 75.00)/75.00 = 15.00/75.00 = 0.2 x 100 = 20%
Example 4 Mark-up = (112.50 – 90.00)/90.00 = 22.5/90.00 = 0.25

Cost Bases

The “cost price” used in the above examples of margin and mark-up processing may be variable in DC1 and stored in a table together with an identifying code. The system defined alternatives available are as follows:

Basis code Description
ACI Average Cost/Item
ACW Average Cost/Warehouse
LPI Last Purchase Cost/Item
LPW Last Purchase Cost/Warehouse
PP1 Purchase Price 1
PP2 Purchase Price 2
PP3 Purchase Price 3
PP4 Purchase Price 4
PP5 Purchase Price 5
RET Retail Price
SCI Standard Cost/Item
SCW Standard Cost/Warehouse
SSI Standard Cost Sales/Item
SSW Standard Cost Sales/Warehouse

User defined cost bases may also be defined. A user defined cost basis will not be represented by any existing cost price or purchase price. Instead you sequence the system defined cost bases, giving the system the possibility to use an alternative cost basis in case the primary one holds no value. All active cost bases, which are defined as valid for the same functions as the user defined basis, will be listed and available for sequencing. Whenever a user defined cost basis is used in the system, a basis value will be searched for according to the defined sequence.

The bases are used in several applications and have to be activated for sales pricing before they can be used in price lists, contracts or sales pricing methods.

Basket pricing

Overview

Basket is a DC1 term signifying a collection of item related elements, (e.g., item, item group, item family), that together form an entity upon which order summary pricing methods can be applied.

For each basket definition you define the following in the Work with baskets file:

  • Elements for each basket. You do this via the Basket key code 1-5 (on Header level) and key values for the selected Basket key codes (on Detail level). Note: If fixed basket keys were defined in the DIS control file, these will be valid for every basket definition, thus no other keys may be defined.
  • All basket details. This flag is used to indicate that all details held by this basket must be qualified before pricing on this basket is effective. The flag will indicate that all details must be qualified before proceeding with qualification of any defined overall qualifying amount or quantity (or both).

The discount rules to be applied for baskets is set up in the Work with sales pricing methods file. The method types O (Order line summary discount) and H (Header discount) are valid for baskets. The Discount key code for these types must contain the key for baskets (33). The applicable basket key values are chosen from this Work with baskets file when setting up the method details.

Note: The system applies the benefits from the methods that have baskets as a key in the same way that it does for methods having other key fields. It must, however, be remembered that items can “exist” in several baskets so where benefits from more than one basket are to be given then multiple methods will have to be defined each having a limited number of baskets. In certain cases the number of baskets per method may be one (1). Benefits from more than one basket may be applied to a sales order but can be limited by enabling the Stop search field for order summary pricing methods that have basket as a key. Normally the system searches the sales pricing methods in sequential order to apply all applicable prices/discounts. By enabling the Stop search field for the above mentioned types – the system will stop the search at the first one found.

Basket Qualification

Within the order summary discount calculation, order summary pricing methods type O (order summary line discounts) and type H (order summary header discounts) are processed per applicable sales order line as explained further down in the Order summary calculation section.

When pricing methods, whether type O- or H-, are identified and selected as potential order summary discounts, (e.g., when pricing method types O are being processed), a routine called Basket Qualification is triggered as soon as a pricing method that demands the qualification of a basket as a prerequisite for the order to qualify for the offered discount is read. This routine will be triggered only once per order level being processed by the order summary calculation, i.e. maximum once for line level (when pricing method type O is processed as in this case) and maximum once for header level (when pricing method type H is processed).

Once triggered, the basket qualification routine will go through all non-free of charge active lines of the order that are enabled as contributor for order summary discounts in order to identify which baskets have reached their qualifying quantity or value (or both) and which line(s) contributed to qualify them. After this processing has been completed, this information will then be available to be utilised by the order summary discount calculation process when pricing methods, previously selected as potential order summary discounts, are to be taken through the qualification process.

During the order summary discount qualification process, the information generated by the Basket Qualification routine will be used to check if a basket connected to every applicable order summary pricing method has been qualified and also that the order line, in turn, is among those lines (or is the only one) that contributed to the basket qualification. If so, the prerequisite set by the order summary discount in question regarding the qualification of a basket has, with this, been fulfilled.

For both H and O types, it is important to mention that from the moment the Basket qualification routine has been triggered, the information generated will be available to be used within the order summary calculation for current and any subsequent order line(s) to be processed whenever a pricing method with basket as pricing key is to be selected as a potential order summary discount.

How basket information is created

So far, it has been explained why and when the Basket qualification routine is triggered and also what is generated. Now let us proceed with a more detailed explanation about how this information is created in order to help you understand why a basket will/will not be qualified. Sales Order processing will be used to exemplify.

The basket qualification routine is very similar to the order summary calculation process. It is based on the same principle, where all applicable lines of the order in turn (whether a sales order, sales quotation or temporary order from DC1 NetStore) shall be processed and pricing keys related values collected along with amount and quantity of line in turn.

Example:

Order summary calculation

Inclusion/Exclusion of Order Line

Whether or not a line is included in the order summary calculation depends upon two flags, one of which is item related and the other price related.

The first, the “Contribute to order summary” flag (formerly called “Order discount sales”) is retrieved from the Item file and written to the order/quotation line during line entry. It controls if the line contributes to the summary of quantities and amounts in the basket qualification and the order summary discount calculation. This flag at the same time controls if the line benefits from any order line summary discounts (O-type) and header discounts (H-type). All lines that do not contribute to the order summary will NEVER benefit from it, in other words no order line summary discounts will be applied and no header discount will be apportioned over these lines. This flag is displayed on the line and can be maintained.

The “Order summary discount” flag is written to the order/quotation line from the sales price and discount calculation program. It is set to YES as long as the originating price source and none of the applied discounts are set-up with Order summary discounts as NO. The flag only controls if the line benefits from any order line summary discounts (O-type) and header discounts (H-type). If a line does not contribute to the order summary then it does not benefit from it, regardless of how this field is set. This flag is displayed on the line and cannot be maintained.

Calculation Execution Timing

The execution of the order summary discount calculation is under the overall control of the Order Summary Y/N field in the DIS control file and because of that this routine can involve the processing of a high volume of data, instead of being executed every time an order line has been maintained (added, changed or deleted). It is triggered on leaving the sales order or quotation if any changes regarding order total amount or activation/deactivation of an order line as contributing for order summary is recorded. An exception to the rule occurs when discounts or detailed net price calculation is requested to be maintained / visualised for a line. In this case, the order summary discount calculation is triggered in order to show accurate pricing information.

However, in addition to the field in the DIS control file, the execution of the order summary calculation for an order is under the control of a second field that is held on each order header. This field (Order Summary Calculation Y/N), that cannot be manually maintained, is visible on the order header panel and is initially set to YES when the order is created but is changed to NO when the first line is pick confirmed, after which the order summary calculation will not be executed for that order. This maintains the principle that was adopted in previous releases for Order Value Discounts that have been replaced by the “H” type summary discounts.

One effect of this principle is that summary discounts for items that have despatch date pricing will be calculated on the prices ruling at an earlier date and will not be re-calculated at pick confirmation, although the prices will be re-calculated at this time.

Furthermore lines that are added to the order after the field has been set to NO will not have order summary discounts applied to them.

Calculation Overview

When the order summary discount calculation is triggered, a kind of re-pricing takes place, where all previously automatically calculated order summary discounts (“O” and “H” type) attached to the order are cleared in order to be re-calculated.

It is important to mention that, depending on how the order summary process is triggered; the way in which the attached order summary discount are cleared will vary as follows:

  • If triggered automatically (i.e. by the system as the order’s total value has changed or discounts or net price detailed calculation is requested to be maintained/visualised, etc) all active and automatically created order summary discounts attached to the order will be cleared. This means that manually added/changed order summary discounts (only allowed for “H” type) or manually deleted will keep their status, meaning with this that they will not be cleared (when manual discount) or restored during re-calculation (when deleted).
  • If triggered by request (i.e. “Order summary discount reset and calculation” order header level function has been selected to be applied on the order) all discounts active and non-active (manually deleted), automatically or manually created attached to the order will be cleared without any consideration.

After this first step, the order summary calculation can begin. Non-free of charge active lines that contribute to order summary discount shall then be read and processed at two levels, “O” type and “H” type pricing method level.

Customer pricing key related values Customer, Customer group, Discount group, Customer account group, Country, Area, Customer category 1, Customer category 2, Customer category 3, Customer category 4, Customer category 5 and Customer category 6 are retrieved.

“O” type discounts processing:

H” type discounts processing

Re-pricing

An order line re-price function is available that allows lines to be re-priced for whatever reason. This function simply clears the discounts calculated in the sales price calculation program and then recalls that program.

It will also call the order summary calculation program be able to give the last and correct net prices that are displayed on the sales order line entry panel.

It must be noted that it is, as it says, a re-price. Discounts originally calculated in the sales pricing program, and that have been manually deleted, may be re-calculated subject to things being/remaining the same as when the price was originally calculated. For example, that a method or contract that generated them has not expired in the meantime.

In the case of having FOC items as discounts the re-price will also affect the base line and its dependent FOC lines. A re-price of a base line can give the type of result to the connected FOC lines:

  • Current dependent FOC item lines remain the same (e.g. if set-up and reached limits are still the same)
  • Removes the current dependent FOC item lines (e.g., if limit is no longer met)
  • Adjust the quantity of current dependent FOC item lines or add new current dependent FOC item lines (e.g., if set-up has been changed giving more items FOC for the same limit)

    Note: Re-price of a base line is not allowed if any of the current dependent FOC item lines connected to the base line are pick confirmed.

During the re-price a Fair pricing quantity is used when checking towards limits in the new sales price and discount retrieval (this information is visible in the line connection enquiry). For normal order lines this represents the quantity of that line but if you have situations where a line has been split into multiple lines it will summarize the quantity from those connected lines. For example, you could have a situation where a line has been split into two lines to be able to fulfil the delivery (perhaps sourced from two different warehouses). To only use the quantity from one of these two split lines in a re-price situation would be seen as “unfair” for that customer as it might go below a quantity limit that was previously reached and the customer shouldn’t be punished for your problem to deliver. So instead the fair pricing quantity is used, that is the summary of these two split lines.

Manual price/discount entry

Additional Discounts

Releases of DC1 below version 6.00 contained a principle whereby if a sales price was manually entered at the time of line creation then the sales price calculation program would not be called and no line discounts automatically created.

This principle is now a sales pricing policy under the term of Additional discounts and can be turned on and off in the DIS control file.

If Additional discounts is set to NO in the DIS control file and a price and/or discount was manually entered when the line was created then only H type summary discounts are automatically created for the line. If a price was entered at the creation of the line this is to be used, otherwise the non-discounted price returned from the sales price calculation program is to be used. Only the discount entered at creation of the line is to be used.

If Additional discounts is set to YES and a price and/or discount is manually entered at line creation then all types of discount will be automatically created for the line in addition to the one that is manually entered at the creation of the line.

Retain Discount

In cases where the same discount is required to be given for each line, it is possible, using the “View controls” feature in sales order line entry, to turn on a switch that causes the discount amount, or percentage, manually entered against the first line, to be retained for future lines until it is overridden. This feature also applies to the manually entered FOC code.

Short term pricing

Short term pricing allows multiple sales pricing method details to be set up with the same key values but with different “Valid from” and “Valid to” dates. When short term pricing is activated and there are overlapping dates, the system will select the detail with the closest Valid from date prior to the pricing date

This function is to give the possibility to temporarily override the normally used method detail with another method detail. You can, for example, have a method detail with no valid from and to dates (i.e. valid at all times) that act as your default detail. Then you can add a new detail with the same set of keys but for a certain month during the present year. When entering that month that detail will be picked up as it has the closest from date before the pricing date. You can then take this one step further and add yet another detail to be used for a specific date within this month if you like.

One limitation with short term pricing is that it is not possible to set-up a detail record using the same “Valid from” date as another detail record with the same keys within the same method.

Limit dependent pricing

Using limit dependent pricing it is possible to vary the price and/or discount that you give to your customers dependent upon the amount, or quantity, that they buy at a single time. If the Item matrix functionality is activated, it will also be possible to run limit dependent pricing against a matrix quantity limit. The quantity checked against the limits will be the accumulated order line quantity for all matrix items that hold the same segment 1 value.

Note: FOC items as discount will always be set up using a limit definition.

This is performed in two main ways:

  1. Either by using a pre-defined set of limits, along with their discounts, held against a user-defined limit code
  2. Or by defining the limits, prices, or discounts, uniquely against an item in a price list, customer contract, or sales pricing method.
  3. For Contracts and Sales pricing methods:

    Quantity dependent, Matrix quantity dependent or amount dependent limit codes may be used to define the limits.

    For Price lists:

    Only quantities can be used to define the unique limits and only a quantity dependent limit code can be used. It will be possible to define that the quantity dependent pricing will be defined as matrix limits.

    In a price list, sales pricing method or contract, either a limit code or unique limits may be used, but not both.

    When defining unique quantity, matrix quantity or amount dependent pricing limits:

    When defining quantity, matrix quantity or amount dependent pricing limits uniquely against an item in a customer contract or sales pricing method (price list does not apply for this explanation): Currency and unit are allowed to be left blank regardless if it is an amount or a quantity limit. This is interpreted by the system as follows:

    • When amount dependent limit (A):
      • For non-order summary discounts: When currency is left blank it indicates that amounts are expressed and to be qualified in order transaction currency of line being priced.
      • For order summary discounts: When currency is left blank it indicates that amounts are expressed and are to be qualified in system currency when order summary discount calculation is carried on. Conversion of line’s contributed amount into system currency will take place before it is summarised, to be used when qualification of amount limits is to be performed.
    • When quantity dependent limit (Q):
      • For non-order summary discounts: When unit is left blank it indicates that quantities are expressed and to be qualified in sales unit of line being priced.
      • For order summary discounts: When unit is left blank it indicates that quantities are expressed and are to be qualified in stock unit when order summary discount calculation is carried on. Conversion of contributed quantity into line’s stock unit will take place before it is summarised, to be used when qualification of quantity limits is to be performed.
    • When matrix quantity dependent limit (M):
      • For non-order summary discounts: When unit is left blank it indicates that quantities are expressed and to be qualified in sales unit of line being priced.
      • For order summary discounts: Matrix limits are not allowed for order summary discounts.

    When defining pre-defined set of limits using limit codes:

    Limit codes must be defined as amount dependent (A), quantity dependent (Q), or matrix quantity dependent (M). If (A) then a currency is mandatory and the unit is optional. If (Q) or (M) the unit is mandatory and the currency is optional. If both unit and currency are defined then both must match those on the order before the prices, or discounts, held against the code will be applied. Furthermore they must both match the currency and unit entered on the price list, contract or pricing method before the limit code is can be attached to them.

    Assume that we have the following order lines:

    Line Qty Net line price Item group Line amount
    10 10 9.00 A 90.00
    20 10 18.00 B 180.00
    30 10 27.00 C 270.00
    40 10 36.00 A 360.00

    Example A – Quantity limits

    We have an “O” type method that is keyed by item group, for item group A we have the following:

    Qty Disc %
    10 1.0
    20 2.0
    30 3.0

    Lines 10 and 40 both have an item in item group A, the total quantity being 20, therefore these two lines would attract a discount of 2% from this method as the total quantity on the lines is between 20 and 30.

    Example B – Amount limits

    Here we have an “O” type method that is keyed by item group, for item group A we have the following:

    Amount Disc %
    200 1.0
    300 2.0
    400 3.0
    500 4.0

    Lines 10 and 40 both have an item in item group A, the total order line amount being 450.00, therefore these two lines would attract a discount of 3% from this method as the total amount on the lines is between 400.00 and 500.00.

FOC items processing

FOC items given as discount is a functionality that can be activated in DIS control file, Pricing policies. This is to support the way of giving customers discount where you offer free of charge (FOC) items, for example buy 10 of product A and get one for free or buy 5 of product B and get 2 of product C for free. With the FOC items handling you will be able to define FOC discounting information for Limit codes, Customer Contracts, Sales price list (via an attached Limit code) and Sales pricing method types (excluding O and H).

The valuation of FOC items can be utilized in the “First price/best value compared with promotion” pricing logic, Promotion budgeting and SMS rebate claims. The value of the FOC items represents the net price of an item in the normal situation, i.e. it represents the pricing of an item, when it is not given as a FOC item (for example, picking an item’s price from a sales price list).

If an FOC item line is created as a result of the pricing of a sales order line, a reference between the base line and the FOC item lines will be visible throughout the entire sales order process. Profit calculation, statistics and bookkeeping will also be affected for base lines that have connected FOC item lines.

The technical processing to handle FOC items is as follows:

Step 1 – Sales price calculation (DMR910) for a line

In DMR910, during the sales price calculation, records may be written or updated in the FOC item discount file SROGDTF. These records contain an activity flag that defines what activity is to be performed for the FOC item in sales orders, quotations or temporary orders. The following activities are sent back from the sales price determination:

  • “A” – Add new FOC item line
  • “C” – Change existing FOC item line
  • “D” – Delete existing FOC item line

Step 2 – FOC item line processing (DIR473)

This FOC item line processing program will get called from several places within the system after a sales price has been calculated. The program will read all SROGDTF records for a given discount key and initiate the activity depending on the activity flag and context. After successfully creating/changing/deleting the sales order line or quotation line record, the activity code will be set to blanks (‘ ‘).

Negative net prices

The possibility to use discount amount on discounts added on top, such as sales pricing method types “C” and “O” can give rise to a situation where the net price goes negative. There are a number of situations where this may occur:

  • During normal sales price calculation
  • During order summary discount calculation
  • When discounts are manually added or changed
  • When the sales price is decreased
  • When VAT included is added or changed
  • When an already negative line is copied to a new line

For sales orders this is handled by putting the line on hold using reason code 40 – “Negative net sales price”. A warning message is also issued. If such a line is printed on an order confirmation then “TBA” (To be advised) will be printed in the price field for this line. Before the line is released (done automatically), the user must then re-price the line and/or manually amend the discounts for the line, so that the net price does not become negative.

Discounts set up with discount amount that brings the price down below zero, or that are created when the net price is below zero still hold their full discount amount. Discounts set up with a discount percentage that is applied after the net price has gone down below zero have their discount amount set to zero.

This preserves the discounts in the shape that they are applied in the calculation so that the user then can decide which discount/discounts to change or delete. The user might want to keep a discount set-up with a discount amount that lies below zero and instead remove a previous discount to adjust the net price.

When the discounts are adjusted and discounts that are set up with a discount percentage appear above zero again then a correct discount amount will be calculated.

For quotations only a warning message is issued, as there is no function for holding quotation lines.

Useful sales price related enquiries

Via the following enquiries you can find all of the information you need regarding the sales price of an item.

Customer service enquiry

Detailed net sales price enquiry

Line connection enquiry

Customer price and discounts enquiry

Sales pricing keys where-used enquiry

Basket enquiry

Structure of DMR910 – Sales Price and Discount Calculation

Main/Initiation group of sub-routines

Logic within Main/Initiation sub-routines

Logic of some main sub-routines

Contract’s group of sub-routines

Contract’s price method group of sub-routines

Contract’s discount method group of sub-routines

Contract’s VAT and Retail price sub-routines

Contract’s auxiliary sub-routines

Logic of some main contract’s sub-routines

Price list’s group of sub-routines

Price list’s discount method group of sub-routines

Price list’s VAT sub-routine

Price list’s auxiliary sub-routines

Logic of some main price list’s sub-routines

Sales pricing methods’ group of sub-routines

Sales pricing methods’ pricing method group of sub-routines

Sales pricing methods’ discount method group of sub-routines

Sales pricing methods’ VAT and Retail price sub-routines

Sales pricing methods’ auxiliary sub-routines

Sales pricing methods’ VAT and Retail price sub-routines (second best price DDIHxx)

Sales pricing methods’ other auxiliary sub-routines

Logic of some main sales pricing methods’ sub-routines

General group of sub-routines

Directed pricing group of sub-routines

Logic of main Directed pricing sub-routine

Glossary of terms used in sales pricing

Basket A collection of item related elements, (e.g., item, item group, item family), that together form an entity upon which order summary pricing methods (O and H method types) can be applied.
Chain discounts Discounts that are applied on top of any discounts that may have been generated by normal sales pricing methods, or price lists, or contracts.
Header discounts Discounts, held in the form of a percentage, that are connected to the order header and are held at header level. They are also visible on line level for each line where order summary discounts are allowed and that contributed to the total upon which the discount was based.
Line discounts Discounts, either in the form of a percentage, or an amount per sales unit, that are connected to the line and are held at line level.
Margin The profit when expressed as a fraction, or percentage, of the sales price is known as the margin and may simply be shown as: Margin = Profit/Sales Price
Mark-up The profit when expressed as a fraction, or percentage, of the cost price is known as the mark-up and may simply be shown as: Mark-up = Profit/Cost price
Net amount The Net price multiplied by the quantity.
Net line amount The Net line price multiplied by the quantity.
Net line price The non-discounted price (gross sales price minus any included VAT) minus all Line discounts. The net line price does NOT include deduction of Header discounts.
Net price The undiscounted price minus ALL discounts, i.e. both Line and Header discounts.
Price list Contains the price for one or several items.
Profit The Net price minus the cost value.
Short term pricing The ability to use the “from” and “to” dates as keys in sales pricing methods in order to limit the time span that the methods are effective. Typically used to modify an existing method for a short time without making extensive changes to the method definition itself.
Stop search A YES/NO field held against a sales pricing method to indicate to the sales price calculation and order summary calculation programs that if the field is set to YES the program is to stop searching through any more methods once a method has been selected that yields a price or discount.