Skip to main content
A material is an item of type Material used as raw stock. Structured property tables define its substance, form, dimension, and optional finish, grade, and type. Alforse uses these values to generate the material’s identity, display name, and code. A material references these lookups by id: materialSubstanceId, materialFormId, dimensionId, finishId, gradeId, and materialTypeId. Only substance and form are required when ids are generated (see below), so a material can be as loosely or tightly specified as you need.

The property tables

Six lookup tables compose a material. Substance and form are independent; the remaining choices are scoped by one or both and therefore cascade.

Scope: system-wide or per company

Alforse provides a starter taxonomy. System values live in materialStandardDefinition and are visible to every company; a company’s own additions live in materialCompanyDefinition. Both tables hold all six kinds in one place, distinguished by definitionKind (substance, form, type, grade, finish, dimension).

How a material references them

A material is an item of type Material. Its readable id is its material id, so a material’s part number is its material id. The material form’s Material ID field is shown only when auto-generation is off (see Troubleshooting). One material can span several item records: separate revisions, and a separate item per stock size. The sizes you assign become selectable variants on jobs and purchase orders, each its own item row sharing the material’s id.

Naming and uniqueness

Alforse composes a material’s display name from substance, form, and optional finish, grade, and dimension names. Substance, form, and type codes compose the material code. Property combinations provide a structured identity rather than relying on free text. Because dimensions belong to forms and grades and finishes belong to substances, a valid material is always an internally consistent set of choices. You cannot pick a bar dimension for a sheet, or a stainless grade for aluminum, because those lists are filtered to the parent you already chose.