# ItemValuation

## Description

ItemValuation is the association between an item and its valuation policy within a company — it marks the item as cost-tracked in that company and carries no other state. The same item can be assigned independently in each company holding its stock; the assigned policy must belong to the same company. It is created by [setItemValuationPolicy](../command/SetItemValuationPolicy.md), or auto-created with the company's default valuation policy on the item's first valuation-affecting movement. Items without an ItemValuation record in a company (and with no default policy configured there) are not cost-tracked in it and stock movements fail rather than skip costing.

No valuation state is stored here: costed quantities live in [CostLayer](./CostLayer.md), prices in each method's own table, and posted values in the general ledger.

## Domain Model Definitions

### Model type

Standard

### Command Definitions

- [setItemValuationPolicy](../command/SetItemValuationPolicy.md) - Assign a valuation policy to an item in a company, creating its valuation record

### Query Definitions

- [getItemValuation](../query/GetItemValuation.md) - Retrieve the policy assignment for an item in a company
- [listItemValuations](../query/ListItemValuations.md) - List policy assignments with optional filters

### Models

- ItemValuation

### Invariants

- Unique per item and company: an item has at most one valuation record per company, and therefore one active valuation policy in it
- The assigned valuation policy belongs to the same company
- The valuation policy can only change while the item has no InventoryLedger history in the company's sites

### Relationships

- **References Item**: Each item valuation belongs to an Item from the item-management module
- **References Company**: Each item valuation belongs to a Company from the organization module
- **References ValuationPolicy**: Each item valuation is associated with a valuation policy
