# Bestand

Die Inventory-API verfolgt Bestände an mehreren physischen Standorten (Lager, Geschäfte, Filialen) mit Bewegungsverlauf und Chargenrückverfolgung.

## Grundkonzepte

- **Standorte**: Lagerorte mit name, optionalem code (z. B. WH-01) und möglicher Verknüpfung mit dem Verkäufer-account_id.
- **Bestand**: Jedes Listing hat je Standort eine Menge (inventory_stock), die Summe der Chargen. Sie wird bei Eingang, Transfer oder Korrektur aktualisiert.
- **Chargen**: Eine physische Lieferung hat lot_number und expiry_date. Je Listing/Standort sind mehrere Chargen möglich. FEFO sortiert nach frühestem Ablaufdatum.
- **Bewegungen**: Jeder Eingang, Transfer, jede Korrektur, jeder Verkauf und jede Rückgabe erzeugt eine unveränderliche Zeile in inventory_movements, verknüpft mit Charge, Standort und auslösendem Benutzer.
- **Bestandstransfers**: Beim Erstellen wird die Menge an der Quelle sofort abgezogen (in_transit); am Ziel wird sie erst beim Wareneingang gutgeschrieben. Abbruch vor Eingang bucht sie zur Quelle zurück.
- **Bestellungen**: Purchase Orders unterstützen Teillieferungen. Positionen verfolgen quantity_ordered und quantity_received. Eingang erzeugt Bewegungen und kann eine Charge anlegen oder erhöhen.

## Bestandsstatus

| Status | Bedeutung |
|---|---|
| Am Standort | Chargen-/Bestandsmenge dort größer null. |
| Unterwegs | Bestand an der Quelle abgezogen, Transfer noch nicht eingegangen. |
| Beschädigt | Negative Korrektur mit Grund damage. |

## Authentifizierung

Alle Inventory-Endpunkte erfordern Adminzugriff (admin: 1 wird vom Gateway anhand von JWT user_roles gesetzt). Senden Sie tenant_id mit jeder Anfrage.
