01 — Quick Reference

How an SMCS code's parent is found

Parents are inferred from the code whenever an SMCS code is saved — never typed:

Code Parent Example
ends in 000 none — a top group 3000 Transmission and driveline
ends in 00 or 50 its group 3250 Driveline → 3000
any other code the nearest listed 00 / 50 code below it in the same group, else the group 3253 Drive shaft → 3250; 3066 Transmission oil pump → 3000

Adding a family code regroups the codes below it automatically: adding 5100 Cylinders moves 5102 Lift cylinder … 5458 Stick cylinder from 5050 Hydraulic system to 5100.

Modifiers by dimension

Dimension Codes
side LH, RH
corner LF, RF, LR, RR
front_rear FR (front), RE (rear)
vertical UP, LO
radial IN (inner), OU (outer)
unit 01, 02, 03, 04
circuit MAIN, AUX, PRI, SEC
flow INP (input), OUT (output)
bank B1, B2
cylinder C01 … C20
pump P1, P2, P3
motor M1, M2

A position uses one modifier. There are no rules about which modifiers suit which components.

Correcting a code

A code can be corrected (e.g. MAIN → MN); its network id never changes. Every application holding the code — Asset Register's fitments, for example — is updated automatically, and a fitment position derived from it follows (3030-MAIN → 3030-MN). To retire a code, set it inactive rather than deleting it: history still points at it.

Everyday tasks

To… Do this
Add an SMCS code Codes → SMCS → New (code, description, scheme SMCS, status). The parent is set for you.
Add a modifier Codes → Modifier → New (code, description, dimension).
Add a job code Codes → Job Code → New.
See an SMCS code's sub-codes Open the code → Sub-codes tab.
Retire a code Set its status to inactive.

Running it

python server/run.py classification                        # alone, http://localhost:5099
python networks/work_supply/network.py start               # with the rest of the network
python -m codegen.cli seed classification                  # demo codes (only fills empty tables)