# transfer-order-detail

## Overview

Shows a single Transfer Order with its header (status, source, destination, audit timestamps, optional notes) and the line set. Renders the lifecycle action panel on the right column — buttons are gated on `status` (see [transfer-order-lifecycle/action-matrix.md](../business-flow/transfer-order-lifecycle/action-matrix.md)). The Lines table omits the Unit Cost column; quantities are displayed as locale-formatted integers.

## Screen Type

DetailView

### DetailView Details

#### Displayed Fields

- **Header**
  - Document Number
  - Status (badge) — displays the native status verbatim: `DRAFT` / `OPEN` / `CLOSED`
  - Source (Site name with a friendly type suffix, e.g. "Main Warehouse (Warehouse)"; via the shared `formatSiteLabel`, matching the list screen)
  - Destination (Site name with a friendly type suffix, e.g. "Main Warehouse (Warehouse)"; via the shared `formatSiteLabel`, matching the list screen)
  - Created Date
  - Updated Date
  - Notes *(when present)*
- **Line Items**
  - Row number (index)
  - Item (name + SKU)
  - UoM (unit symbol)
  - Expected Qty
  - Shipped
  - Received

#### Available Actions

| Action | Condition | Requires Input | Confirmation | Resolver |
| --- | --- | --- | --- | --- |
| Edit | status = DRAFT | No | No | _navigate to transfer-order-edit-form_ |
| Open | status = DRAFT | No | Yes | openTransferOrder — reserves source-site stock; does not ship |
| Ship | status = OPEN and any line under-shipped | No | Yes | shipTransferOrder — moves source AVAILABLE → IN_TRANSIT; status stays OPEN |
| Receive | status = OPEN and in-transit stock exists (shipped > received) | No | Yes | receiveTransferOrder — moves IN_TRANSIT → destination AVAILABLE; status stays OPEN |
| Close | status = OPEN and in-transit clear (shipped == received on every line) | No | Yes | closeTransferOrder |
| Back | always | No | No | _navigate to transfer-order-list_ |

## Access Control

- [inventory-manager](../actor/inventory-manager.md)
