# ProductionOrderMaterialRequirement

## Description

ProductionOrderMaterialRequirement stores one exploded component requirement derived from the BOM snapshot at production-order release. It owns the component item reference, required quantity, unit of measure, and optional planned unit cost that drive material staging and inventory issue planning for the order.

## Domain Model Definitions

### Model type

Standard

### Command Definitions

- [releaseProductionOrder](../commands/ReleaseProductionOrder.md) - Explode the BOM snapshot into material requirements when the production order is released.

### Query Definitions

- [getProductionOrder](../queries/GetProductionOrder.md) - Retrieve material requirements as part of the parent production order.

### Models

- ProductionOrderMaterialRequirement

### Invariants

- Every ProductionOrderMaterialRequirement belongs to exactly one ProductionOrder.
- `requiredQuantity` must be greater than zero.
- Requirements are created at release and reflect the BOM snapshot; later BOM edits do not affect them.
- `plannedUnitCost`, when provided, is zero or greater.

### Relationships

- **Belongs To ProductionOrder**: each requirement is owned by one [ProductionOrder](./ProductionOrder.md).
- **References Item (cross-module)**: `itemId` points to the required component [Item](../../../item-management/docs/models/Item.md).
