# Inventory Controls

This page covers intent settings that apply during an inventory's lifecycle - from purchasing, to kitting and issues.

## PO Line Side Effect

Setting key: `poLineSideEffect`

### What it does

PO Line Side Effect assigns intent to any on order inventory linked to a PO line when intent is set on that line. Designating intent at the procurement stage ensures that inventory is correctly classified without requiring manual updates later.

### When it runs

When intent is assigned to a PO line - existing on order inventory linked to that line receives the intent at that moment.

When inventory is created from a PO line - inventory is created when adding a quantity to a PO line. If intent has already been set on the PO line at this time, it will also be set on the newly created inventory.

If the PO line has no intent set, no side effect occurs and linked inventory is unaffected.

Note: If Part Quality Check is enabled, it also runs at this point. A PO line intent that exceeds the part's rating will be blocked or downgraded before the line is saved.

### Configuration options

| Field     | Possible Values  | Description                                 |
| --------- | ---------------- | ------------------------------------------- |
| `enabled` | `true` / `false` | Turns the check on or off. Default: `false` |

### Example scenario

Your procurement team sets Flight intent on a PO line for Flight-grade fasteners. All inventory linked to that line is automatically stamped with Flight intent at that moment — no manual update required.

A separate PO line on the same order for development spares has Development intent set — linked inventory for that line is updated to Development intent.

***

## Kit Intent Match

Setting key: `requireKitIntentMatch`

### What it does

Kit Intent Match enforces that inventory being added to a kit meets the intent requirement of the assembly inventory on the run associated with that kit. It also enforces this check at kit delivery time. If the inventory's intent does not meet the required threshold, the action is blocked with an error.

This prevents lower-grade inventory from being kitted for higher-grade assemblies — for example, stopping a development-grade component from being kitted into a flight-grade assembly.

### When it runs

On adding a kit item - when a piece of inventory is added to a kit.

On kit delivery - when the kit is delivered and associated with an assembly.

### Configuration options

| Field     | Possible Values         | Description                                 |
| --------- | ----------------------- | ------------------------------------------- |
| `enabled` | `true` / `false`        | Turns the check on or off. Default: `false` |
| `mode`    | `hierarchical`, `exact` | How the intent comparison is evaluated      |

### Mode values

| Mode           | Behavior                                                                                                                                                             |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `hierarchical` | The inventory's intent must be **equal or higher rank** than the assembly's intent. Lower-grade inventory is blocked from installation into higher-grade assemblies. |
| `exact`        | The inventory's intent must **exactly match** the assembly's intent. Only exact-match intent is accepted.                                                            |

### Example scenario

Your assembly is designated Flight. With `mode: hierarchical`, any inventory with a Flight or higher intent can be kitted in. Inventory designated Development is blocked. With `mode: exact`, only Flight-designated inventory is accepted — even a higher-grade designation would be rejected.

***

## Upgrade/Downgrade With Issues

Setting key: `issueIntentUpdate`

### What it does

Issue Intent Update automatically updates the intent of inventory when an issue is resolved against it. The new intent is determined by a mapping configured in your issue dispositions — each disposition type can specify what intent value the affected inventory should receive.

This allows quality events (nonconformances, deviations, dispositions) to directly affect the quality designation of the inventory involved, without requiring a separate manual update.

### When it runs

When an issue is resolved — the intent update is applied to each of the issue's inventory.

The intent change is driven by your disposition-to-intent mapping. If a disposition has no intent configured, no change is made to the inventory's intent.

### Configuration options

| Field     | Possible Values  | Description                                 |
| --------- | ---------------- | ------------------------------------------- |
| `enabled` | `true` / `false` | Turns the check on or off. Default: `false` |

Note: The specific disposition-to-intent mappings are configured on each disposition type, not within this setting. This setting acts as the global on/off switch.

### Example scenario

Your organization has a "Downgrade to Dev" disposition type mapped to Development intent. A Flight-grade connector has a nonconformance raised against it for a cosmetic scratch. The quality team reviews it and determines it is still functional, but not to Flight standard. They disposition the issue as Downgrade to Dev. ION automatically downgrades the connector's intent to Development - it remains available in inventory and can still be used in Development builds, but is blocked from being kitted or installed into Flight assemblies.

***

## Manually Created Inventory

Setting key: `requiredAtManualInventoryCreate`

### What it does

When manually creating inventory this setting ensures an intent is set on the inventory. This prevents inventory from entering ION without an intent assigned.

When enabled, this setting requires users to select an intent when manually creating inventory. This helps ensure that manually created inventory is classified from the start, rather than entering the system with no quality designation.

### Configuration options

| Field     | Possible Values  | Description                                 |
| --------- | ---------------- | ------------------------------------------- |
| `enabled` | `true` / `false` | Turns the check on or off. Default: `false` |

### Example scenario

An inventory specialist manually creates inventory for a titanium bracket and tries to save it without assigning an intent. With `requiredAtManualInventoryCreate` enabled, ION prevents the inventory from being created until an intent is selected.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://manual-v2.firstresonance.io/quality/intent-management/inventory-controls.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
