# ValuationPolicy

## Description

ValuationPolicy defines the costing method used to value inventory for a set of items. Supported costing methods are FIFO (First In, First Out), AVCO (Weighted Average Cost), and STANDARD_COST (fixed standard cost rate). When using STANDARD_COST, the standard cost rate must be specified.

Updating the standard cost rate on a STANDARD_COST policy triggers a revaluation event for all items associated with the policy.

## Domain Model Definitions

### Model type

Standard

### Command Definitions

- [createValuationPolicy](../command/CreateValuationPolicy.md) - Create a new valuation policy with a costing method
- [updateValuationPolicy](../command/UpdateValuationPolicy.md) - Update a valuation policy (e.g., change standard cost rate)

### Query Definitions

- [getValuationPolicy](../query/GetValuationPolicy.md) - Retrieve a valuation policy by id
- [listValuationPolicies](../query/ListValuationPolicies.md) - List valuation policies, optionally filtered by costing method

### Models

- ValuationPolicy

### Invariants

- Name is required
- Standard cost rate is required when costing method is STANDARD_COST
- Updating the standard cost rate triggers a revaluation event

### Relationships

- **Has many ItemValuation**: A valuation policy is associated with multiple item valuations
- **Has many CostLayer**: For FIFO policies, cost layers are tracked under the valuation policy
