Scale: group range vs. window measurement
At group level the advisor enters a min/max width and height across all windows in the group — informational, to quickly pick a suitable product line for the entire group. At window level the exact finished sizes of the frame apply; these determine actual system suitability and price.
Matrix lookup (per window)
price(height, width, priceGroup) = matrix[ceil(height → tier)][ceil(width → tier)][priceGroup]
Tiers are fixed per system (from the Erfal price list). On input the value is rounded up to the next tier ≥ the entered mm.
Suitability check (per window)
| Condition | Formula |
|---|---|
| Width within range | system.min_width ≤ window.finishedWidth ≤ system.max_width |
| Height within range | system.min_height ≤ window.finishedHeight ≤ system.max_height |
Window-info validation
On + Add to order the combination of system + window info is checked. Blocking:
- Horizontal frame → only LSC/LMB (tension cable) or horizontally mountable.
- Slanted frame → only tensioned models (no EWG/EWM).
- Movable window → tensioned required.
- Plastic/aluminium frame that opens + drilled → choose clamp or stick-on.
Advisory (warning):
- Ventilation grille + duette → top-down/bottom-up strongly recommended (otherwise the bottom gets dirty).
- Inward-opening + duette in recess → frame can no longer be opened.
Group consistency
When adding, it is checked whether the product type already occurs elsewhere in the group. Adding a new product type to a group with other products → confirm dialog.
Side-guide surcharge
Fixed amount per height tier (€16–€30). Lookup: sideGuide(height) = arr[ceil(height → tier)].
DIN EN 13120 — operating length
When fully extended, the operating cord/chain must sit more than 1.5 m from the floor (child safety). The configurator automatically proposes operatingLength = finishedHeight − 150 cm.
Order total
Order total = sum of all decoration totals across all windows in all groups, excluding TBD accessories.