đ Where can I find this module?
Main menu > Catalog > Products
Kafinea distinguishes two product categories for managing supplier sourcing:
- Generic product: a “template” item used in your quotes, customer orders, and invoices (e.g., HDMI Cable 2m). It does not correspond to any specific supplier reference.
- Specific product: a concrete variant linked to a generic product and purchased from a supplier (e.g., HDMI Cable 2m â Alpha Brand, Ref ABC123).
This feature is only active if the Generic products & supplier sourcing setting is enabled in Settings>Features.
1. Identifying a generic or specific product #
On the product record, check Generic product in the Generic products block.
- A blue “Generic” badge appears next to the product name on the detail record to immediately identify generic products.
- Specific products do not display a badge.
2. Generic products block on the record #
The block contains fields related to generic/specific management. Depending on the choice made, some fields are applicable, others are not:
| Field | Generic | Specific |
|---|---|---|
| Generic product (checkbox) | â | â |
| Parent generic product | â | â (points to a generic) |
| Price calculation mode | â | â |
| Margin (%) | â (except Manual entry mode) | â |
| Price rounding | â (except Manual entry mode) | â |
| Reference cost | â (calculated, except Manual entry) | â |
| Last price calculation | â (calculated) | â |
| Calculation status | â (calculated) | â |
Non-applicable fields: they are not hidden; they remain visible but grayed out with a tooltip “Not applicable to generic products” or “Not applicable to specific products.” This prevents any perceived loss of information and documents the reason for the graying out for the user.
3. Price calculation modes #
The calculation mode determines how Kafinea populates the selling price of the generic product. You must choose an explicit mode: no default value is applied silently. If the mode is empty or unknown, the status Error: calculation mode not defined appears and the current price is retained.
Six modes are available:
| Mode | Cost source | Behavior |
|---|---|---|
| Manual entry (no recalculation) | â | The price is entered manually on the generic. Kafinea never recalculates it, including when a child specific is modified. |
| Cheapest offer | Supplier offers from child specifics | Selects the valid supplier offer with the lowest price. |
| Preferred offer | Supplier offers from child specifics | Selects the offer marked as preferred. Otherwise, falls back to the cheapest offer. |
| Average of offers | Supplier offers from child specifics | Selects the average of valid offer prices. |
| Cheapest specific | Purchase price of child specifics | Selects the purchase price (unit_price) of the cheapest child specific, without going through offers. |
| Average of specifics | Purchase price of child specifics | Selects the average of purchase prices of child specifics, without going through offers. |
For the five automatic modes, the final price is then obtained using the formula:
Selling price = Reference cost Ă (1 + Margin %) then rounded according to the settings.
Possible calculation statuses #
| Status | Meaning |
|---|---|
| OK | Calculation successful, price updated. |
| Not applicable | Manual entry mode: no calculation was performed, the price is the one entered. |
| No specific | The generic has no linked child specific. |
| Missing offers | No valid supplier offer at the calculation date. |
| Missing prices | The specifics (or their offers) have no usable price. |
| Error: calculation mode not defined | No mode has been chosen or the mode is unknown: the price is not modified. |
4. Display and behavior on the generic product record #
For generic products, several visual elements help you understand how the price is obtained and whether you can modify it.
4.1 Contextual banner in the Pricing information block #
An information banner appears at the top of the pricing block:
- In Manual entry mode: “Manual entry: the price is not recalculated automatically.”
- In other modes: “The selling price is recalculated automatically from child specific products (mode: %s).” followed by the date of the last calculation.
The banner also contains a “View children” link to quickly access the linked specific products. The price is recalculated automatically when an offer or specific changes; to force it, use the “Recalculate” button in the margin analysis widget (offered when the price is flagged as frozen) or the bulk action “Recalculate catalog price” from the product list.
4.2 Unit price field in read-only mode + “Calculated” badge #
When the generic is not in Manual entry mode, the Unit price field is presented as read-only and accompanied by a “Calculated” badge. A tooltip specifies: “This price is calculated automatically (mode: %s). Switch to Manual entry (no recalculation) mode to enter it.”
In Manual entry mode, the field becomes editable again: you can freely enter the selling price, which will never be overwritten by an automatic recalculation.
4.3 “How is this price calculated?” popover #
Next to the Unit price field, an â icon opens a popover that details:
- The active calculation mode.
- The selected reference cost, the applied margin, and the rounding.
- The list of sources used: depending on the mode, child specific products (with their purchase price) or supplier offers (with supplier and price).
- The final price obtained.
If no calculation data is available, the popover displays “No calculation data available.”
5. Business rules #
-
A generic product cannot have a parent.
- If you check Generic product and a parent is specified, Kafinea blocks the save with the message:
A generic product cannot have a parent product.
- This rule applies to all channels: UI editing, quick edit, bulk edit, REST API, workflows, CSV import.
- If you check Generic product and a parent is specified, Kafinea blocks the save with the message:
-
The parent of a specific product must itself be a generic product. Kafinea automatically verifies this consistency upon saving.
-
Automatic price recalculation: when a specific product changes parent, when a supplier offer is created/modified/deleted, or when the purchase price of a specific changes, the price of the related generic product is recalculated automaticallyâunless the generic is in Manual entry mode (in which case, the price remains strictly the one you entered).
-
Explicit mode choice: the system no longer applies a silent default mode. A generic without a calculation mode will produce an Error: calculation mode not defined status and its price will not be modified, until you select a mode.
-
A generic product cannot be a kit (and vice versa). The two price calculation mechanisms are incompatible. If you attempt to transform a kit into a generic product (or add sub-products to a generic), Kafinea blocks the operation. See Product kits for more details.
6. Switching between generic â specific #
You can change a product from generic to specific (and vice versa) at any time:
- Non-applicable values are retained in the database but simply grayed out on screen.
- If you switch back, the data becomes visible and editable again.
- Therefore, you do not lose any information when changing type.
7. Frequently asked questions #
Why can’t I enter a parent on my generic product?
Because a generic is by definition a “template” without direct supplier linkage. Only specific products have a generic parent.
Why is the unit price of my generic product read-only?
Because the active calculation mode automatically recalculates this price from child specifics or their supplier offers. To enter it manually, switch the calculation mode to Manual entry (no recalculation).
What is the difference between Cheapest offer and Cheapest specific?
Cheapest offer (and its variants Preferred offer / Average of offers) relies on supplier offers linked to child specifics. Cheapest specific (and Average of specifics) directly uses the purchase price carried by specific products, without going through offers.
Why are the price calculation fields grayed out on my specific product?
These fields are only used for automatic price calculation of the generic. They have no meaning on a specific product, which reflects a precise supplier offer.
The status displays Error: calculation mode not defined. What should I do?
Open the generic product record and select a mode in Price calculation mode, then save. Kafinea will restart the calculation at the next update, via the Recalculate button in the margin analysis widget (when the price is flagged as frozen) or via the bulk action Recalculate catalog price from the product list.
The “Generic” badge is not displayed, why?
Verify that the Generic products & supplier sourcing setting is enabled in Settings>Features, and that the Generic product checkbox is checked on the record.