Units & packaging
Purpose
An article is rarely traded in exactly one unit: bought in pallets, stored in cartons, sold in pieces. This module records how these units relate to each other — so that the same goods mean the same quantity on every document.
Scope
- Catalogue of units of measure with dimension (length, weight, volume, pieces …) and factor
towards the base unit of that dimension.
- Nested packaging units per article: pallet → carton → piece, to any depth.
- Deposit and packaging GTIN per level — a carton often carries its own number.
- Free conversion tables, including across dimensions — weight to pieces for goods bought by
weight and sold by count.
- Fourteen API operations under
/api/v1/units-of-measure,/api/v1/product-packagingsand
/api/v1/unit-conversions.
Interplay
Units hang off the product catalogue and therefore act wherever a quantity appears: in purchasing, in stock, in the warehouse and on every document. Shipping uses the packaging levels for packages and weights.
Effect on documents
- Sales unit prefilled: picking an article on a quote or order, price resolution sets the default sales
unit (e.g. "crate 20") and lifts the quantity to the minimum. A scanned packaging GTIN becomes the packaging code.
- Whole packages: on quotes and orders a packaging quantity is rounded up to whole packages; units of
measure use their decimals.
- Price per package: the packaging's price mode decides — "per base unit" multiplies the unit price by
the content, "per package" keeps the price as it is. Tier prices read the quantity in base units.
- Base quantity on the document: every line also stores its quantity in the base unit — the document
stays readable even if the packaging changes later.
- Deposit as its own line: if a packaging carries a deposit, the document appends one deposit line per
deposit article (quantity = number of packages). It is recalculated on every save, stays out of the document discount and never appears twice.
- Packing bench: a packaging code used as a package brings the packaging's weight and dimensions.
- Channels: unit, sales packaging with GTIN and unit price go out with the listing.
Limits
- A cross-dimension conversion is an assumption, not physics. „One kilo is this many pieces" only
holds for the article it was recorded for — which is why the table sits on the article, not on the unit.
- The module converts quantities; it only derives the price per package from the price per base unit.
What the base unit costs is decided by pricing.
- A global conversion across dimensions is rejected — it is only valid per article.