Appearance
Entity: contractItemType
Entity: contractItemType
Description: A global, admin-managed catalogue of priceable line-item types (e.g. individual distribution tariff rates such as "C01d", "vodné", "stočné", "paušální poplatek"). Shared across all tenants — see the deviation note below. Referenced by contractItem to specify what is being priced.
Entity Type: database table
Note — no
tenantId(deviation #17). This entity intentionally has notenantId. The catalogue of contract line-item types (national distribution tariffs, standard billing components) is identical for every tenant and is managed exclusively by the Porsenna superadmin — the same pattern used foruiLabelandgaugePurposeOption. Seeem3-knowledgebase-deviations.mddeviation #17.
Data Attributes Table
| Attribute Name | Description | Data Type | Default Value | Required (= Nullable) | Unique | Format | Validations | Index | Example |
|---|---|---|---|---|---|---|---|---|---|
id | Primary key of the entity. | UUID | Generated in code (app layer) | Yes | Yes | UUID v7 | - | Primary Key | 018ed0b3-c298-7c7a-96d5-8b36f5a7f8d2 |
name | Display name of the line-item type. | string | - | Yes | No | - | Must not be empty | - | C02d |
medium | Commodity this line-item type applies to. | string (enum) | - | Yes | No | enum — see Medium (same set as contract.medium) (source Confluence page; not yet migrated to the local enum catalog) | Must be one of the supported subset values | - | electricity |
tariff | Tariff band this line-item type applies to, if relevant. | string (enum, nullable) | - | No | No | One of: highTariff, lowTariff, or null | Null when not tariff-specific (e.g. paušální poplatek, vodné) | - | highTariff |
deliveryMethod | Whether this type applies under a single-component or two-component pricing structure. | string (enum, nullable) | - | No | No | One of: singleComponent, twoComponent, or null | Null when not applicable | - | twoComponent |
groupName | Display grouping label used to cluster related line-item types in the UI (e.g. "Ceny sazeb (vysoký tarif)"). | string | - | No | No | - | - | - | Ceny sazeb (vysoký tarif) |
overviewColumn | Key used to render this type as a column in the contract overview table. | string | - | Yes | No | - | Must not be empty | - | unitPriceHighTariff |
displayOrder | Sort order within the contract entry form. | integer | - | No | No | - | - | - | 2 |
createdAt | Timestamp of entity creation. Immutable. | timestamp with time zone | now() | Yes | No | ISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ | - | - | 2026-01-15T09:00:00Z |
updatedAt | Timestamp of last entity update. Mutable. | timestamp with time zone | now() | Yes | No | ISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ | - | - | 2026-01-15T09:00:00Z |
deletedAt | Timestamp of entity soft delete. Once set, immutable. | timestamp with time zone | - | No | No | ISO 8601 — YYYY-MM-DDTHH:mm:ss.SSSZ | Immutable once set. Active records: WHERE deletedAt IS NULL | - | null |
createdBy | Identifier of the author who created this record. | string | - | Yes | No | type:actor | - | - | user:c2d3f586-1c9a-4f5f-b9ae-45f2c4f69f7e |
updatedBy | Identifier of the author who last updated this record. | string | - | Yes | No | type:actor | - | - | system:migration-v1 |
Note — indexing. No secondary indexes are defined. This is a small, global catalogue (a few dozen rows total across the whole system) — a sequential scan filtered by
mediumis not a performance concern.
Audited fields
Recorded on created (in full), updated (changed only) and deleted (in full): name, medium, tariff, deliveryMethod, groupName, overviewColumn, displayOrder.
Excluded: none.
No subjectEntityType/subjectEntityId — a global, superadmin-managed catalogue (no tenantId), same exception class as uiLabel and gaugePurposeOption. Registered for entityName resolution via the global catalogue registry — resolves to name (architecture 61-audit-log.md §7.4/§7.6 in the code repo).