ZuloOne
English
Sign in
Menu

🏷️ Item characteristics and item groups

Updated

An item can carry typed characteristics, the way a web shop lists them: «Grade: White · Weight: 1 kg · Packaging: Paper bag». Which characteristics an item asks for comes from a template. The item takes it from its own field, else from its item group, walking up the group tree. Key characteristics are part of the SKU. They build the item's name, stop a second item with the same values, and drive «Copy with other values».

← Business wiki

The objects#

Object Where What it holds
Characteristic Inventory → Dictionaries → Characteristics Name, Value type, Unit (shown after a number: «kg», «months»), Decimal places, Reference dictionary (for the Reference type)
CharacteristicOption the Options list on the characteristic card, and Inventory → Dictionaries → Characteristic options One value of an Option / MultiOption characteristic: Name, Colour (#F5F5F0, a swatch on the card), Order
CharacteristicTemplate Inventory → Dictionaries → Characteristic templates Name, Based on (another template it extends), and its lines, edited in the Characteristics of the template section of the card
CharacteristicSection Inventory → Dictionaries → Characteristic sections The headings that group lines on the card: Product, Packaging, Storage. A section typed in the template editor is created here
Template lines (CharacteristicTemplateLine) tab on the template card Characteristic, Order, Section, Key, Required, Role (0 = on the item, 1 = on the order line)
Item Inventory → Items Fields: Characteristic template (the item's own), Base name
ItemGroup Inventory → Item groups The one item tree (parent and child), like a shop: Paints → Interior. Template for its items (MemberCharacteristicTemplate)

The characteristic dictionaries belong to the Common model, so a model that does not know items can use the engine too. Their menu items sit in Inventory, next to the items that use them; Common has no characteristics group of its own.

One SKU per combination: «Sugar, White, 1 kg» and «Sugar, White, 2 kg» are two items, each with its own stock and prices. Characteristics describe an item; they do not split its balance.

Value types#

Type The card shows Stored Shown as
String text, up to 256 characters text RAL 5015
Text multi-line text, up to 2000 text as typed
Integer number without decimals number 24 months
Decimal number, rounded to Decimal places number 2.5 l
Boolean switch yes / no Yes / No
Date date date 01.03.2027
Option drop-down of the options, with the swatch the option's id White
MultiOption multi-select of the options one row per option walls, ceiling
Reference drop-down of the records of Reference dictionary (for example Country) the record's id the record's name
Range two numbers, from – to two numbers 5–25 °C, from 5 °C

The display follows the user's interface language: «Yes» in English and its Ukrainian equivalent in Ukrainian, «2.5» or «2,5». An option is stored by its id, so renaming «White» to «White crystal» renames it on every item at once.

Where an item's template comes from#

The first one that is filled wins:

  1. the item's own Characteristic template;
  2. its Item group's Template for its items;
  3. the parent group's Template for its items, and so on up to the root of the group tree.

The tab says where the template came from: «Own template of this record» or «Template from Item group: Grocery».

Example on the test stand:

Item group tree Template for its items
Food —
└ Grocery «Grocery»
  • Item «Sugar 1kg» in group Grocery → template «Grocery».
  • Move the item to a new subgroup «Sugar» under Grocery, which has no template of its own → still «Grocery», taken from the parent group.
  • Give the item its own template «Sweets» → «Sweets», whatever the group says.

An item group has no characteristics of its own: the field there is the template of its items, and its card has no Characteristics tab.

Setting up: the two cards#

The characteristic card asks only for what its value type needs. A one-line explanation of the type appears under Value type. Unit shows for Integer, Decimal and Range. Decimal places shows for Decimal and Range. Values from dictionary shows for Reference, as a list of the tenant's dictionaries by name. Options of an Option / MultiOption characteristic are added on the Options tab on the right.

The template card edits its lines in one table, Characteristics of the template:

Column Meaning
Characteristic Picked from the list; under it, its type and unit
Section The heading the line goes under on the item card
Key Part of the SKU (see below). Not available for a line parameter
Required Marked and listed as missing when empty
Filled on the item (a property) or on the order line (a line parameter)
↑ ↓ ✕ Order and removal

+ Add characteristic adds a line; Save lines stores the table. A characteristic twice in one template is refused, and so is a key line parameter.

Templates based on templates#

A template can be based on another: «Grocery» based on «Food». The base's lines come first, then the template's own lines. A line of the template for a characteristic the base already asks overrides the base's line in place. It can, for example, make a base characteristic required or key, or move it to another section. Changing the base changes every template built on it. Templates can chain to any depth, but not in a circle: «Food» based on «Grocery» based on «Food» is refused with Шаблони утворюють коло: базовий шаблон зрештою будується на цьому ж шаблоні.

On the template card, the base's lines are listed first, greyed, with «from Food». They are edited on the base's card. An own line that overrides one is marked «overrides the base».

Template lines#

Template «Grocery», based on «Food»:

Order Characteristic Type Section Key Required From
1 Country of origin Reference → Country Product Food
2 Gluten-free Boolean Product Food
3 Shelf life Integer, months Storage Food
4 Storage temperature Range, °C Storage Food
5 Grade Option (White, Cane) Product ✓ ✓ Grocery
6 Weight Decimal, 3 places, kg Packaging ✓ ✓ Grocery
7 Packaging Option (Paper bag, Plastic bag, Carton box) Packaging ✓ Grocery
8 Packing request String, on the order line Order Grocery
  • Section groups the lines on the card. Lines without a section go under «General».
  • Required warns, it does not block. A missing value is marked and listed in the preview, for example «Missing: Weight». A catalogue is filled item by item, and a save refused over one missing value would lose the others.
  • Role 1 (line parameter) is a characteristic asked on the document line, not on the item: the tint of paint mixed to order, a packing request. The item card shows it as «Asked on the order line»; see Line parameters.

Key characteristics: the SKU#

These rules apply when an item has a Base name and every key characteristic of its template has a value:

  • The name is built. Name = Base name + «, » + the key values in template order. Base name «Sugar», Grade White, Weight 1 → «Sugar, White, 1 kg». Changing the base name to «Sugar crystal» renames the item at once: «Sugar crystal, White, 1 kg». Names use the tenant's default number format (a decimal comma: «2,5 l»), whatever the user's interface language.

  • A duplicate is refused. Another item with the same template, the same base name and the same key values cannot be saved. The message names the item that already exists:

    Такий запис уже є: «Sugar, White, 1 kg» (17963) — те саме базове найменування і ті самі ключові характеристики.

  • Copy with other values. This creates a new item with the same fields and the same non-key characteristics (Packaging, Country, Shelf life…). Its key values are empty, and its name is the base name. Fill Weight = 2 and save: the new item is «Sugar, White, 2 kg».

Without a base name, or without key characteristics in the template, the name is left exactly as typed and nothing is checked for duplicates.

Migration acceptance#

Price-list sections and inclusion labels describe an existing item; they are not automatically SKU keys. For a migration, use non-key properties unless the agreed source mapping explicitly defines a variant. Keep separate source hierarchies as separate references, even when their labels match. Preserve the item's resolved template, including inheritance up its item-group tree, and its existing required/key flags.

For example, adding 8 descriptive properties to an item with 2 existing key properties must not create 8 additional SKU keys or rename the item. Verify filled values on real item sheets, not just the presence of 8 empty definitions. An unresolved source option is a migration exception to repair, not permission to clear an existing value or invent a replacement.

Line parameters on document lines#

A line of any document whose lines point at an item (sales order, invoice, purchase order, stock documents) has a Line parameters button (the sliders icon) once the line is saved. It opens the line parameters (Role 1) of the item's template, and the value is stored on that line, not on the item.

Example: template «Grocery» gets the line «Packing request» (String, Role 1, section Order). On sales order № 2757, line «Sugar, White, 1 kg», the user enters «Two bags of 500 g instead of one». The item stays as it was; the next order line of the same item asks again.

  • A line whose item has no line parameters opens a dialog that says so.
  • Values on a line of a posted (read-only) document show but cannot be changed.
  • Line parameters follow the document chain: a quotation line's parameters go to the order line made from it (Convert to order), and an order line's to the sales realization line (Approve). On the example, approving order № 2757 gives its realization line «Sugar, White, 1 kg» the same «Packing request: Two bags of 500 g instead of one».
  • The printed quotation, order and sales realization show a line's parameters after the item, in the language of the print: «Sugar, White, 1 kg (Packing request: Two bags of 500 g instead of one)». A line with no values prints the item alone.
  • Deleting a document leaves its lines' values for one night: the job PurgeCharacteristicValues (Common, 04:15) deletes values whose record no longer exists.

Characteristics in the item list#

In the item list, Column setup → Computed → Characteristic offers one column per characteristic: «Characteristic: Grade», «Characteristic: Weight». The choice is personal, like the rest of the column setup. Sorting and filtering work like any column, over the loaded rows.

Item Characteristic: Grade Characteristic: Weight Characteristic: Packaging
Sugar, White, 1 kg White 1 Paper bag
Sugar, White, 2 kg White 2 Paper bag
Rice Long Grain 800g
  • An Integer or Decimal characteristic comes as a plain number, without its unit, so that 2 sorts before 10.
  • Every other type shows as on the shop page: «White», «5–25 °C».
  • An item without the value, or without the characteristic in its template, is empty.

The sales-agent phone reads the same properties from the CachedCharacteristics pull (formatted captions, values, sections, option colour). It does not rebuild the SKU name and does not treat a line parameter as a property of the item. See Mobile client.

Names in other languages#

The names users see are translatable, like a country's name: a characteristic's Name and Unit, an option's Name, a template's and a section's Name. Fill the translations with the translate icon in the field. The card, the preview and the list columns then show them in each user's language. The words the engine adds follow the language too: «Yes» / Да / Так, and «2.5» / «2,5».

Base (English) Russian Ukrainian
Grade: White Сорт: Белый Сорт: Білий
Weight: 1 kg Вес: 1 кг Вага: 1 кг
Shelf life: 24 months Срок годности: 24 мес. Термін придатності: 24 міс.
Template from Item group: Grocery Шаблон из: Группа: Grocery Шаблон з: Група: Grocery

An item group's Name is not translatable: it shows as typed in every language.

A value without a translation shows its base text. The item's name built from the key characteristics is written in the base language («Sugar, White, 1 kg»), because the item name is one text for everyone.

Changing the template#

Values are never deleted by a template change. A value whose characteristic is not in the new template stays under «Outside the template», and the user removes it there with the bin icon. Switching back brings it into the template again. Deleting an item deletes its values.

What's not there yet#

  • The item list loads a window of rows and fetches the next window as you scroll or search. A characteristic column is calculated for the loaded window, so sorting or filtering by it does not search the whole catalog.
  • The sales-agent phone does not edit characteristics and does not fill line parameters on an order line.
  • The engine serves any dictionary with a CharacteristicTemplate field; only items have one.

Same topic for other readers: User · Developer

Where next#

Was this page helpful?