# Ops playbooks — Phase 3

## Receiving (PO)
1. Create PO (draft) with variant lines + unit costs.
2. Mark **Ordered** — creates incoming inventory at destination location.
3. Partial receive via line accepted/rejected qty; accepted qty updates on_hand/available; GRNI flagged on receipt.
4. Status → `partial` or `received`.

## Transfers
1. Create transfer between locations with variant qty.
2. Ship — moves available stock origin → destination (single-hop).
3. Multi-shipment supported by shipping remaining line qty later.

## Returns
1. Customer requests return from account (or admin creates via API/service).
2. Admin inspects each line: `restock` | `discard` | `repair`.
3. Complete with refund cents or store-credit stub.

## Discounts
- Codes: `TRA10` (10% ≥ $50), `FREESHIP`.
- Automatic: spend $500 get $25 (non-combining by default).
- Combination flags: product / order / shipping. Engine rejects invalid codes with reasons.
- Applied on cart + checkout; redemption increments usage atomically at paid order.

## Markets
Flag `markets_enabled`. Currency labels always include ISO code (e.g. `AUD 12.00`). Geolocation recommends market without forced redirect.
