How Can We Help?
A cost group and a price group are named sets of rounding rules. A part or a glass
(sealed unit) type points at one of each, through the Cost Group and
Price Group (or $ Group) combos; an option choice has a Price Group only (its
Cost UOM field is a unit of measure, not a cost group). The group decides how the measured size is rounded
before it is multiplied by the cost or the price: length rounding, area rounding,
minimum area, and for prices also price rounding. Use this page to answer questions
such as “what does length rounding 2 do?”, “why was this glass costed as 7 sq ft?” or “why is
the cost of my profile rounded to the next foot?”.
Where the values are kept. Cost groups are the table group_costing; price groups
are group_pricing. Edit them in OJ Setup → Product Setup →
Cost Groups and Price Groups. Typical
tenants have cost groups such as 1 Parts, 2 Glass and price groups 1 Base, 2 Options,
3 Glass, 4 Grids, 5 Labor, 6 Shipping, 7 Services, 100 Other.
Units. Imperial and metric lengths have separate values: inches for imperial items,
millimetres for metric items (so a metric step is written as 100, 200, 300 or 1000, not 1 or 2).
Areas are in square feet on imperial items and square metres on metric items.
1. Cost group settings
| Setting (column) | What it does | Values |
|---|---|---|
Length rounding (in) (lengthrounding, whole number) |
Imperial items: rounds a length up to the next multiple of this many inches before costing. An exact multiple stays as it is. |
0 (or negative) = no rounding. 1 = up to the next whole inch. 2 = up to the next multiple of 2 (24.5″ → 26″). 3 = next multiple of 3, and so on. Fractions (0.5, 1/16) cannot be stored: whole numbers only. |
Length rounding (mm) (lengthrounding_m, whole number) |
Metric items: rounds a length up to the next multiple of this many millimetres. | 0 = no rounding. 100 = up to the next 100 mm (1,234 → 1,300; 1,300 stays). 1000 = up to the next metre. |
Area rounding (arearounding, whole number) |
Rounds the area after the sides were rounded. The codes mean different things for glass and for other parts (see 2 and 3). |
Glass: 1 = up to a whole sq ft / m²; -1 = down to a whole one; 2 = to the nearest even whole number (can go down); anything else = none. Other parts: any value above 0 = up to the next multiple of it (1 = whole, 2 = next multiple of 2); 0 or negative = none. |
Min area (minarea) |
Smallest area charged for parts costed by area, in m² on a metric series and sq ft on an imperial series. 0 = no minimum. Not used for glass, by design: a glass always uses the minimum cost area of its own glass (SU) type, so set glass minimums there. |
Any number ≥ 0. |
| UI rounding, Price rounding, Decimal part | Present on the table but not used by any cost calculation. | — |
There is no waste setting on a group. Waste % comes from the glass type or the part.
2. How a glass cost is worked out
Glass uses the cost group of its glass (SU) type, and only when that type is costed by
Area. Steps, in this order:
- Cut size. Imperial glass is first snapped down to the series rounding step (the
size the glass is ordered at, e.g. to 1/16″). Metric glass uses its size as is. - Length rounding of each side (inches or mm), as in the table above.
- Area = width × height ÷ 144 (sq ft), or ÷ 1,000,000 (m²).
- Area rounding: 1 up, -1 down, 2 nearest even.
- Minimum: if the area is below the glass type’s min cost area, that minimum is used.
- Cost = cost per area × area × (1 + waste % ÷ 100), then any part-family and
branch cost markup.
Worked example (imperial): glass 24 1/2″ × 36 1/2″, $5.00 per sq ft, waste 10%.
| Length rounding | Sides costed | Area |
|---|---|---|
| 0 | 24.5 × 36.5 | 6.210 sq ft |
| 1 | 25 × 37 | 6.424 sq ft |
| 2 | 26 × 38 | 6.861 sq ft |
With length rounding 2 (6.861 sq ft): area rounding 0 → 6.861 sq ft = $37.74;
1 → 7 sq ft = $38.50; -1 → 6 sq ft = $33.00; 2 → nearest
even = 6 sq ft = $33.00. A minimum cost area of 8 would charge 8 sq ft whatever the rounding.
Worked example (metric): 610.4 × 927.1 mm with length rounding (mm) 100 → 700 ×
1000 mm = 0.7 m². Area rounding 1 → 1 m². Area rounding 2 → nearest even = 0, so
only the glass type’s minimum cost area keeps the cost from being 0 — avoid code 2 on small
metric glass.
Why the cut size matters: a glass 24.03″ wide is ordered at 24″. With length rounding 2 it
is costed at 24″, not 26″.
3. How a part (profile, panel, labour) cost is worked out
A part uses its own Cost Group. What happens depends on how the part is costed:
- By length: the cut length is rounded up by length rounding (in) on imperial items or
length rounding (mm) on metric items, and costed in feet or metres. Example: a 47.3″ profile
with length rounding 6 in is costed as 48″ = 4 ft; a 1201.5 mm profile with 100 mm is costed as
1300 mm = 1.3 m. United-inch parts are costed on their size without rounding. - By face in / face out / perimeter / weight: the part’s factor × the same rounded length.
- By area: area rounding goes up to the next multiple of the value (1 = whole sq ft or
m², 2 = next multiple of 2: 6.09 → 8). Then the group’s min area applies. Length
rounding here works on the internal size units (1/64″ or 0.01 mm), so in practice it has no
visible effect. - By each / volume: no rounding.
Grids and option choices use no cost-group rounding.
4. Price group settings
| Setting (column) | What it does |
|---|---|
Length rounding (lengthrounding) |
Parts priced by length, metric: cut length rounded up to the next multiple of this many mm. Parts priced by area (metric and imperial): used as a code on each side — 1 = up to the next whole mm / inch, 2 = up to the next even whole mm / inch, anything else = none. |
Length rounding imperial (lengthroundingi) |
Parts priced by length, imperial: rounded up to the next multiple of this many inches. Also rounds each side for united-inch matrix prices. Use whole numbers only (see Known issues). |
UI rounding (uirounding) |
Imperial united-inch matrix prices: width + height (each already rounded by length rounding imperial) is rounded up to the next multiple of this many inches. Metric is not rounded. |
Area rounding (arearounding) |
Parts priced by area: area rounded up to the next multiple of the value, for both m² and sq ft (0.5 = next half). 0 = none. Area rounding imperial ( arearoundingi) is not used. |
Min area (minarea) |
Parts priced by area: smallest area charged. The same number is used as m² and as sq ft. |
Price rounding (pricerounding) and Decimal part (decimalpart) |
Rounds the cents of a price to a step of decimal part (e.g. 0.05): 0 or 1 = none; 2 = up ($12.37 → $12.40); 3 = down ($12.37 → $12.35); 4 = closest: half a step or more rounds up, less rounds down ($12.37 → $12.35, $12.375 → $12.40). A decimal part of 0 means whole currency units. It only runs where the company preferences roundprice (line price),rounddiscountedprice (after discount) or roundtotal (line total) are on. |
Price markup / Cost markup (price_markup, cost_markup) |
Option choices: the group’s markup is used; when it is 0 the choice’s own markup is used. Written as a fraction (0.25 = 25%). Parts take markups from their part family instead. |
Price category (pricecategory) |
Selects which customer line discounts apply to items in this group. |
Discountable (discountable) |
Whether shipping and service charges in this group take the customer discount. |
| Taxable, Price from cost | Stored with the group but not read by pricing: whether a line is taxable comes from the part itself. |
Face in / face out / perimeter / weight prices use the part’s cost group length
rounding, not the price group’s.
Glass prices by area use no price-group rounding: the area is the glass size, with the glass
type’s min pricing area as the only minimum. A glass type priced or costed through a matrix whose
row is the area is different: a price matrix looks up the area after the price group’s length rounding
and area rounding and the glass type’s min pricing area; a cost matrix looks up the glass area
floored at the glass type’s min cost area, with no group rounding.
Order of a line price: size × price → price rounding (if roundprice)
→ minimum price → price rounding (if rounddiscountedprice) → × quantity
→ price rounding (if roundtotal) → discount.
5. Known issues (do not use these values)
- Fractional length steps below 1 (0.5, 0.25, 0.125) in length rounding imperial or
UI rounding can make the item calculation never finish. Use whole inches. - Price rounding above 4 sets the price to 0.
- Glass area rounding 2 is “nearest even”, so 0.58 m² becomes 0 and 6.9 sq ft becomes 6.
- Metric parts costed by area come out 100 times too large when their cost group has a
Length rounding (in). Keep it at 0 on cost groups used for area-costed metric parts.