Complex price or discount/surcharge
Description
- Prices Create/edit
- Important notes
- Complex price
- Complex discount/supplement
- Test prices
- Price history/validity list
- Copy buffer
Prices Create/edit
In ClassiX® there are three, for sales articles even four, possibilities to edit a price. The desired option can be selected via the context menu of the price button
selectable.
| Menu item | Description |
|---|---|
| Create new price (old price in history) | For information please refer to the documentation |
| Edit price (old price NOT in history) | Since the price editing fields are locked, they can be released via this menu item. This intermediate step serves to direct the user to the first menu item, otherwise the price history will be falsified. |
| Detail processing: selling price | The price can also be edited in a separate window, which can be opened via this menu item. In case of complex prices the user is even forced to go through this window. For the sales items there is also the possibility to maintain the price and costs via a window. |
| Detailed processing: sales price + costs |
Important notes
Before editing a price, check whether it is necessary to move the old price to the price history and create a new one. If this is not done, the pricing of old offers / orders and also orders cannot be tracked.
The entry of a conditional discount/surcharge table may not have any discounts/surcharges itself. Only one price, no matter on which level, may be extended/nested.
Complex price
A price can be defined as a chain of any length (mainly in master data) and then represents a basic price with increase/decrease prices and discounts/surcharges. The chain can be edited in this module in list form.
The following terms are used to describe such a prize:
| basic price | The first link in the price chain | |
| Data type | Value per quantity, percentage, formula or table | The basic price can be stored as a value per quantity, formula or table, the further elements as a value per quantity, percentage, formula or table. |
| Calculation method | subtractive or additive | The effect of a chain link (from the second link onwards) on the calculation is shown separately by this indication |
| Net/gross type | Net type or gross type | Basic price + gross links = gross price (interim result) Gross price + net links = net price (overall result) Gross links may only appear before net links |
| additional charge | Additive gross link | |
| reduced price | Subtractive gross element | |
| Surcharge | Net additive link | |
| Discount | Net subtractive element | |
Example:
Price as a price scale depending on the NWIDTH feature (nominal width) plus an additional price according to the design (DESIGN feature) minus a 1% discount:
| Type | +/- | Species | Value | Description |
|---|---|---|---|---|
| PRICE: Table (NWIDTH) | 1.450 € / 1 piece | basic price | ||
| Additional price: Table (DESIGN) | + | gross | 100 € / 1 piece | Execution |
| Discount: percent | - | net | 1% | Discount |
(See detailed example, here the values at NWIDTH = 600mm, DESIGN="two air inlets").
Complex discount/supplement
A discount or surcharge can also be defined as a chain of any length, in which case the first link does not differ in its functionality from other links.
Example:
discount -3% - 1% + 1,00 €
A result of this complex price can be tested via the lower part of the window as described below.
Please note:
Prices with conditions are calculated in the orders as follows:
Unit price * quantity + conditions = total value
Example:
5,50 € / 1 piece * 20 pieces + 15 % = total value
Test prices
To test prices with conditional discounts or generally conditional prices, it is possible to add object characteristics to the object characteristics list. In this way, the price can be tested for different constellations and quantities. Only the price per unit is always displayed, which is the total sum resulting from the entered quantity and unit price!
(Example: Maybe the price per unit will change if you want to buy 100 pieces)
The attributes are saved in a temporary data field on the price and are therefore available unchanged the next time the user enters the price. If the characteristics are to be determined again from the owner, the adjacent button must be pressed. All characteristics are then deleted and redrawn from the owner.
If it is a part roll that does not have its own material characteristics, they are drawn from the main part.
Price history/validity list
If a price changes in the course of time, you can of course simply overwrite the old price. In this case, however, it is the case that you do not have an overview of how the price has developed over a period of time.
To be able to record this movement as well, the prices can be provided with validities. You don't just double click on the price and change it, but press the "New" button at the bottom of the window. A small menu opens, which offers the possibility to create an exact copy of the price. The old price is invalidated by the validity date and the new one is set as currently valid.
Now you can change the new price and see how this price has developed in the validity list.
The following example shows a possible price history:

It is shown here that the price from 17.04.2003 to 20.04.2003 was calculated from a price table, which was also clearly broken down here.
On 21.04.2003 this price has changed so that always a price with a discount (10%) was valid.
Whether the discount is based on list price or net can be seen in the list.
The blue heading tries to show the price in its completeness. If this is not possible due to complex prices, only the heading Price table is displayed, followed by a complete breakdown.
The individual links of a price chain are shown in green. Next to price tables are the "unfolded" symbols, followed by a breakdown of the individual prices and conditions.
By double-clicking on the blue line, the editing window will open, allowing you to edit this price.
When creating a new price with new validity - manually in individual cases or automatically during a price increase run - the plausibility of the price history is checked by checking whether the validity of the new price overlaps with the validity of an existing price. If this is the case, the price change is terminated with an error message.
The validity of the prices can also be changed via the editing window of the prices. Here the plausibility of the prices is also checked. The message of the overlapping of two price validities is only displayed as a warning message, so that the validity of the price that is not currently being edited can be adjusted if necessary.
Copy buffer
Using the copy buffer, which can be called up from the menu, individual discounts or surcharges can be copied into other prices of other parts. However, the main price cannot be copied because there can only be one in the list and this cannot be deleted from the list.
In this way, complex discount price tables can be copied very quickly.
Functionality
- Input window
- Editing window of prices and costs
- Price history
- Price development (diagram)
- Create new price
- Option window
Input window
This window is used to maintain complex prices or discounts/surcharges.
| Menu item | Description |
|---|---|
| Edit | - |
| : Discount/ Surcharge | - |
| : : Insert | - |
| : : : Discount | Depending on the selection in the context menu, a discount of the appropriate type is inserted below the position selected in the tree or in the list |
| : : : Surcharge | Depending on the selection in the context menu, a supplement of the appropriate type is inserted below the position selected in the tree or in the list |
| : : Delete | Deletes the surcharge/discount selected in the list or tree |
| Close | Close window |
| Price history | Call up price history |
| Call up | Calling up the price history |
| Move current price to the price history | Move current price to the price history |
| Symbol | Description |
|---|---|
| Reload input window | |
| Create/edit notes | |
| Unit pocket calculator | |
| Call up the copy buffer | |
| Copy price history to clipboard/print report |
| Name | Description | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Define price/discount formation | |||||||||||||||
| : Master object | The "owner" object (e.g. sales item in case of a complex sales price, master packaging surcharge in case of a complex packaging surcharge) | ||||||||||||||
| : Validity | Range of validity for the chain, if available | ||||||||||||||
| : | The pricing view is toggled between the list view and the tree view. Only the first level of pricing is displayed in the list view. Nested tables are not shown in the list view but only in the tree view. When opening the editing window of the prices, the first step is to check whether the pricing consists of nested tables. If this is the case, the price is displayed directly in the tree view. Standard for "normal" pricing, consisting of one level, however, is the list view. | ||||||||||||||
| : List of price/discount members | The list view shows the first level of pricing. (If a price/supplement is defined as a table, where at least one table entry is also a table, this table is on level 2 and is not shown in the list).
| ||||||||||||||
| : : | The chain link just marked is moved up or down (the first link cannot be replaced) | ||||||||||||||
| : Tree of price/discount members | All levels of pricing are displayed in the tree. (If a price/surcharge is defined as a table, where at least one table entry is also a table, this table is on level 2 and is not shown in the list).
The object tree has its own context menu, which has more or less menu items depending on the selected position.
| ||||||||||||||
| : : Insert | Depending on the selection in the context menu, a discount/surcharge of the appropriate type is inserted below the position selected in the tree or in the list.) | ||||||||||||||
| : : Remove | The chain link just selected is deleted (the first link cannot be deleted because it is held by its master object) | ||||||||||||||
| : Basic price/discount/supplement | |||||||||||||||
| : : Group | see processing of complex prices | ||||||||||||||
| : Rounding | (The rounding function is currently only available in the offer/order) | ||||||||||||||
| : : : Buying rounds | The price is rounded to 2 decimal places. This is the default setting. | ||||||||||||||
| : : : Purchase Rounding (whole values) | The price is rounded to the whole euro amount. (For example: "345.44 equals 345.00" and "345.54 equals 346.00") | ||||||||||||||
| : : Rounding up (whole values) | The price is always rounded up to the whole euro amount. (Example: "345,54 gives 346,00" and "345,44 also gives 346,00") | ||||||||||||||
| : : Round off (whole values) | The price is always rounded down to the whole euro amount. (Example: "345.54 equals 345.00" and "345.44 also equals 345.00") | ||||||||||||||
| : : Conditional rounding | |||||||||||||||
| : : : Up -,00 down | The price will be rounded to the full euro amount from the value entered. (Example: "45.44 gives 45.00" and "45.54 gives 46.00") | ||||||||||||||
| : : : Up -,25 down | The price is rounded to .00, .25, .75 from the entered value. (For example: "99.12 gives 99.00", "99.36 gives 99.25", "99.58" gives "99.50", "99.66" gives "99.75") | ||||||||||||||
| : : : Up -,10 down | The price is rounded to .10 from the value entered. (Example: "345.44 equals 345.00" and "345.54 equals 346.00") | ||||||||||||||
| : : : Up -0,00 down | The price will be rounded to the whole 10 euro amount from the value entered. (Example: "4,042.44 gives 4040.00" and "4,048.54 gives 4,050.00") | ||||||||||||||
| : : : Up -00,00 down | The price is rounded to the nearest 100 euros from the value entered. (Example: "21,242.44 gives 21,200.00" and "21,288.54 gives 21,300.00") | ||||||||||||||
| : : : Up -000,00 down | The price will be rounded to the nearest 1,000 euros from the value entered. (For example: "681,252.44 equals 681,000.00" and "681,788.54 equals 682,000.00") | ||||||||||||||
| : : Conditional rounding with table | |||||||||||||||
| : : : Rounding table | The price will be rounded according to the conditions and formulas set out in the table. Here, complex rounding conditions can be defined, e.g. depending on the currency. The reference value is always the variable "value", which contains the price to be rounded.
| ||||||||||||||
| Test price/discount formation | |||||||||||||||
| : Testing | - | ||||||||||||||
| : : Test quantity | Quantity for testing quantity scales | ||||||||||||||
| : : Attributes | List of characteristics which may affect the calculation | ||||||||||||||
| : : : | The currently selected attribute is moved up or down | ||||||||||||||
| : : | The calculation is triggered | ||||||||||||||
| : : Result | The result of the chain calculation | ||||||||||||||
| : : Get attributes again | The attributes are fetched again | ||||||||||||||
| Status bar | |||||||||||||||
| OK | Changes to the complex price or discount/surcharge are saved. If no changes have been made, the button is locked. | ||||||||||||||
| new | A new alternative price or discount/surcharge is created | ||||||||||||||
| : Delete | The displayed complex price or discount/surcharge is deleted. | ||||||||||||||
| Close | The window is closed without saving changes. If you want to save the changes, you must press the "OK" button. | ||||||||||||||
Editing window of prices and costs
| Menu item | Description |
|---|---|
| Edit | - |
| : Synchronise prices/costs | Synchronise prices/costs |
| : Individual machining | - |
| : : Retail price | Edit sales price |
| : : Material costs | Edit material costs (only available for one production part) |
| : : Labour costs | Edit labour costs (only available for one production part) |
| : : Cost price | Edit cost price (only available if the sales price was linked to the cost price) |
| : Discount/ Surcharge | - |
| : : Insert | - |
| : : : Discount | Depending on the selection in the context menu, a discount of the appropriate type is inserted below the position selected in the tree or in the list |
| : : : Surcharge | Depending on the selection in the context menu, a supplement of the appropriate type is inserted below the position selected in the tree or in the list |
| : : Delete | Deletes the surcharge/discount selected in the list or tree |
| Close | Close window |
| Price history | Call up price history |
| Call up | Calling up the price history |
| Move current price to the price history | Move current price to the price history |
Processing of costs and prices
This window is very similar to the input window described above, except that wherever the value is displayed or edited, one (purchase cost for a purchased part) or two (standard cost of material and labour for a manufactured part) cost fields are displayed simultaneously. Which cost fields are displayed is controlled by the logistics indicator. The part roles, which are responsible for the costs and prices, are also displayed in the module.
![]()
The prices and costs can then be edited directly from the module. In doing so, the editor should note that he directly changes the data of the roles. When switching the price type (value per quantity, formula, percent, table), the price/cost type of the roll is also changed automatically.
If different price/cost types are found, the user will be informed by two red dots. The red text also indicates the different value types.

Creation of price tables for costs and prices
This module offers the simplest way to create price tables for costs and prices, as prices are usually linked to the same conditions as costs. Normally the agent would go into the sales role and create the price table and do the same for the material and labour costs of the production role. He would therefore have to create three almost identical tables.
Using the module for parallel editing of prices and costs the following steps are sufficient. First of all, the type of the prices must be set to "Table". Then the button can be used to open the module for editing a price table. The columns are created identically to the "normal" price tables. The only difference is that in this price table there is not only the column for the price but also the column for the costs.
In the background, the step that only has to be done once here is automatically carried out for all price and cost tables. So you can go back to the parts roll and you will only find one (the normal) price table here.
Additional functions:
- Processing of non-synchronised prices <-> Costs
Prices that are not synchronised can be edited in parallel for complex prices up to the price element where the first difference appears. So if an order price has the same structure as a sales price and has only been extended by a surcharge, this surcharge must be moved to the end of the price chain so that a direct connection of the other links can be established. If the additional surcharge is at the beginning of the price links, no surcharge/reduction can be edited in parallel.
The allocation of the price elements of the sales price and costs can be seen in the list. If something is displayed here in the column Value and the columns of the costs are empty, then no corresponding price element was found in the costs. The cause of the first deviation of two elements is indicated in red letters below the list.
- Synchronize

The function "Synchronize" offers the possibility to transfer the structure of the sales price into the costs. Calling up the function is only enabled if at least one price element of the sales price has no associated cost element. During synchronisation, the current costs are moved into the price history of the order item/production part. Thus the old costs can be restored at any time. The result of the synchronisation is that all pricing elements of the sales price which previously had no assignment to a cost element are included in the costs. If the costs had further surcharges/discounts, these are not deleted but are added to the end of the new cost structure.
Example:Price Costs (old) Costs (new) 10€ / 1 piece 5€ / 1 piece 5€ / 1 piece 1€ / 1 piece - 1€ / 1 piece +5%+5%
- Synchronize
- Via the menu item "Edit unit price/costs" it is also possible to call up detailed editing of the costs/price individually without having to take the diversion via the parts roll.
Price history
This window displays the price history.
| Symbol | Description |
|---|---|
| With this button the price history can be copied to the clipboard and thus to Excel etc. | |
| This button shows the price development in an extra window. |
| Field | Description |
|---|---|
| Owner | In this list the owner of the price/costs is displayed. These can be the roles of the parts (sales item, order item, production part) or customer and supplier agreements. |
| List |
|
| Diagram |
|
| button | Description |
|---|---|
| Select | Opens the editing window for the price selected in the list. (regardless of whether it is valid or not) |
| Close | Closes the window |
Price history
Graphic display of the price development.
| Field | Description |
|---|---|
| Owner | In this list the owner of the price/costs is displayed. These can be the roles of the parts (sales item, order item, production part) or customer and supplier agreements. |
| Diagram |
|
Create new price
| Create new price (old price in history) New prices are created via a separate editing window, which automates the process as far as possible. The group "Old price" serves to give the old price a new validity. The BIS date is automatically determined based on the conversion date (preset to today). The original validity is also displayed for comparison. The second group is used to create the new price via options. The validity of the price is also set automatically. (Changeover date until infinite.) The value of the new price can be either an empty price per quantity an empty price table or a copy of the old value. By pressing the button "OK (1st step)" the new price is created according to the settings. | |
| In step 2 the price can now be edited. This step is particularly necessary if the new price is not yet valid, as invalid prices cannot be reached via the mask of the sales or order item, for example. Thus, it can either be maintained easily and directly here or inconveniently via the price history. If the new price has been entered correctly, the second step can also be ended by pressing the OK button. If you are in step 2, then the button "Close" is locked, otherwise empty/wrong prices would appear in the history. | |
| Use the option window to set the default settings. If, for example, prices of several articles are changed and the new price is always only valid from the turn of the year, the changeover date, which is preset with the session date, can be overwritten. |
| Menu item | Description |
|---|---|
| Options | Call up the option window |
| Field | Description |
|---|---|
| Old price | - |
| : Validity | Define validity period of the old price |
| : Value | Value of the old price |
| Note | Leave a note |
| New price | - |
| : Validity | Set the validity period of the new price |
| New value | - |
| : : Copy of the old values | A copy of the old value is created |
| : : Empty value per quantity | An empty value is set per quantity |
| : : Empty price table | An empty price table is created |
| Note | Leave a note |
| : Edit new price | - |
| : : Price | indicate price |
| : : Quantity | Indicate quantity |
| button | Description |
|---|---|
| OK (1st step) | Confirm settings for old and new price |
| Price table | Call up price table |
| Edit price with discounts/values | |
| OK (step 2) | Confirm information on the new price |
| Close | The window is closed. |
Simulative price-cost comparison
Through this window it is possible to compare sales prices and costs of a part where the structure of the complex pricing is different.
Option window
Use the option window to set the default settings. If, for example, prices of several articles are changed and the new price is always only valid from the turn of the year, the changeover date, which is preset with the session date, can be overwritten.
| Menu item | Description |
|---|---|
| Edit | - |
| : Set default settings | The settings are reset |
| Field | Description |
|---|---|
| Changeover date | Set conversion date |
| Preset 'Type'. | - |
| : Copy of the old value | A copy of the old value is created |
| : Empty value per quantity | An empty value is set per quantity |
| : Empty price table | An empty price table is created |
| button | Description |
|---|---|
| OK | Save changes |
Related topics
Technical documentation
Price/discount definition editing module
Module name
PriceDiscount.mod
Classes
-
Security
In addition to restricting access rights via the class and its data fields, the module can be restricted in its use via some of the received messages.
| Message | Parameters | Function | Security |
|---|---|---|---|
| Message | Parameters | Function | Receiver module |
|---|---|---|---|