Skip to main content

Units of measure

Route: /org/inventory/uom · Module: org_inv_uom — 7 permissions Permission to view: View unit of measures


1. What a unit of measure is​

The counting basis for everything else in Inventory. A raw material is 60 kilograms; a variation is 6 pieces; a recipe consumes 0.03 litres.

Units are the first thing to configure on a new tenant, because a raw material cannot be saved without one.

Unit of measureProduct attribute
AnswersHow is this counted?Which version is this?
ExampleKG, PCS, LTSpice Level: Hot
Appears onRaw materials, variations, ledger rowsVariations only
Customer sees itIndirectly, as "6 Pieces"Yes, as the variation selector
Figure 1 — The unit list. 1 AI Suggestions · 2 New UOM.

2. How units spread through the application​

Where it appearsAs
Raw material masterThe material's counting unit — required
Product variationThe variation's unit, shown as 6 Pieces
Bill of materialsThe unit each ingredient quantity is expressed in
Goods receipts, production, salesInherited from the material or variation, never chosen again
LedgerThe 12 PCS / 1.2 KG in the Movement column
A unit is chosen once, then inherited everywhere

No operations screen asks you to pick a unit. They all read it from the material or variation. This is why getting units right at setup matters more than it looks.


3. Step by step​

Step 1 · Fill the list​

A new tenant is not empty. Three controls populate it:

ControlWhat it doesPermission
Seed defaultsInserts the standard unit set (KG, G, LT, ML, PCS, DOZ…)uom.create
DiscoverScans existing data for units in use but not defined, and adds themuom.create
AI SuggestionsProposes units from a description of your businessuom.createwithai

Discover is the one people miss. If a tenant was populated by import or by API, it can be using unit codes that were never formally created; Discover finds them.

Step 2 · Create a unit​

Figure 2 — The create drawer.

New UOM opens a right-hand drawer with three things: a code, a language selector, and a name/description pair per language.

The code is the short form shown everywhere else — KG, PCS. It is what appears in the ledger and on variation labels, so keep it short and conventional.

The name and description are per-language and only ever shown on this screen.

The drawer offers far more languages than the list does

The create drawer exposes a wide language set — AR, AS, BN, DE, EN, ES and more. The list screen's Language Context switch offers only Bengali, English and Hindi.

You can therefore enter a German name that no screen in the module will ever display. Fill the languages your Language Context actually offers.

Step 3 · Manage the unit over its life​

Figure 3 — One row, four actions: translate · edit · deactivate · delete.
ActionIconPermissionEffect
Translateglobeuom.editOpens the per-language name/description editor
Editpenciluom.editChanges the code, name or description
Deactivate / Activatecrossed belluom.deactivateFlips Active ↔ Inactive
Deletered binuom.deleteSoft-deletes the unit
Deactivate and delete are different permissions on purpose

uom.deactivate is a lifecycle action — the unit stays, but stops being offered for new records. uom.delete removes it. A stock controller usually needs the first and not the second.


4. Field reference​

FieldTypeRequiredNotes
UOM Codetext✅The short form used across the module. Uppercase by convention
Languagetab strip—Selects which language the fields below edit
Nametext✅Per language
Descriptiontextarea—Per language; shown only on this list
Statusderived—Active / Inactive, set by the deactivate action, not editable in the drawer

Language Context​

Figure 4 — Language Context rewrites the Name and Description columns in place.

The switch does not translate anything. It selects which stored translation is displayed. A unit with no Bengali name shows blank in Bengali — the same row an English operator sees as fully populated.


5. The admin contract​

Must be trueOr else
At least one unit existsRaw materials and variations cannot be saved
The unit is ActiveIt is not offered in new-record dropdowns
The operator holds uom.viewThe screen does not appear in the menu

6. Downstream — what changes when this changes​

ChangeEffect
Rename a unitDisplay changes everywhere immediately; historic ledger rows show the new name
Change the codeThe code is what the ledger and variation labels show — expect historic rows to read differently
DeactivateExisting records keep it; new records cannot select it
DeleteSoft delete. Records already pointing at it are unaffected

7. Don't confuse this with…​

Product attributesOptions a customer chooses between — not a counting basis
VariationsThe sellable row. It has a unit; it is not one
Tax categoriesAlso a per-product classification, but owned by Finance

8. Troubleshooting​

SymptomCause
The unit list is emptyNo project selected in the Platform Context chip
A unit is missing from a dropdownIt is Inactive, or soft-deleted
Names look blankLanguage Context is on a language with no stored translation
A German name never appearsThe list only renders Bengali, English and Hindi — see §3
Seed defaults does nothing visibleThe defaults already exist; it does not duplicate them