Attributes & Variants
Go to: Inventory → Items → Attribute
Attributes describe the ways one product differs from another version of itself — Colour, Size, Material, Weight. Variants are the concrete items generated from those combinations.
Use them when you sell the same product in several forms and want to stock, price, and count each form separately while still reporting on the family as a whole.
The model in one picture
- The template item carries
Has Variants = Onand the list of attributes. - Each variant is a real item with its own item code, its own stock, and
Parent Itempointing at the template. - Stock is held on the variants, never on the template.
1. Create attributes
Go to: Inventory → Items → Attribute → New
| Field | What it means |
|---|---|
| Name | Attribute name (Colour, Size, Material) |
| Status | Enabled / Disabled — disabled attributes stay out of new items |
| Is Numeric | On for measured attributes (weight, length) instead of a value list |
| From Range / To Range / Increment | Only for numeric attributes: the allowed span and step |
Text attributes vs numeric attributes
| Text attribute | Numeric attribute | |
|---|---|---|
| Is Numeric | Off | On |
| Values come from | A list of Attribute Values you define | The From/To range stepped by Increment |
| Example | Colour = Red, Blue, Green | Weight = 100 to 500 step 50 |
Attribute values
For text attributes, add the allowed values. Each value has:
| Field | What it means |
|---|---|
| Value | The value shown to users (e.g. Red) |
| Abbreviation | Short form used when composing variant names/codes (e.g. RED) |
Keep abbreviations short and unique — they are what make variant codes
readable, e.g. TSHIRT-001-RED-S.
2. Turn an item into a template
Open the item
Go to Inventory → Items → Item and open (or create) the product that has variations — the template.
Switch on Has Variants
On the item’s properties, enable Has Variants. This marks the item as a template: it defines the family but does not itself hold stock.
Assign the attributes
On the item’s Attributes tab, add each attribute that varies (Colour, Size). Set the Naming Order to control the order in which attribute values appear in generated variant names.
Save
A template item and a Service item type are incompatible — ERPX rejects Has Variants on service items, along with every other stock flag.
3. Generate variants
Go to: Inventory → Items → Item → (open the template) → Variant
From the template item, open the variant screen and pick one value per attribute. ERPX creates a variant item that records, for each attribute, which value this variant carries.
Each generated variant is a normal item, so it has:
- its own Item Code and Item Name
Parent Item= the template- its own stock, valuation, prices, batches, and serials
- its own status (Draft → Enabled)
Which item do I transact on?
| Document | Use the template? | Use the variant? |
|---|---|---|
| Purchase Order / GRN | No | Yes |
| Sales Order / Delivery Note | No | Yes |
| Stock Entry / Transfer / Reconciliation | No | Yes |
| Reporting by product family | Yes (roll-up) | Yes (detail) |
Never transact on the template. It exists only to define the family; stock posted against a template makes the family totals meaningless.
Creating variants by import
The item.csv template supports variants directly. Fill the Parent Item column with the template’s item name and put the attribute values in the trailing attribute columns:
Item Code, Item Name, Has Variants, Parent Item, Color, Size
TSHIRT-001, Basic T-Shirt, TRUE, , Green, Big
TSHIRT-001-RED-S, Basic T-Shirt Red Small, FALSE, Basic T-Shirt, Red, SmallRow 1 creates the template; row 2 creates a variant under it.
Tips
- Decide the attribute set before generating variants. Adding a third attribute later means regenerating the matrix.
- Do not create an attribute for something that is really a different product (a T-shirt and a hoodie are two items, not two variants).
- Disable attribute values you have retired rather than deleting them — existing variants still reference them.
- Two attributes with 5 values each is 25 items. Keep the matrix deliberately small.