diff --git a/.paul/TODO.md b/.paul/TODO.md index 3025dc2..7456a22 100644 --- a/.paul/TODO.md +++ b/.paul/TODO.md @@ -23,3 +23,21 @@ ### Linki w kodzie - `src/Modules/Statistics/OrdersStatisticsRepository.php` — metoda `netAmountSql()` (komentarz `TODO(STAT-NET)`). + +## DELIVERY-STATUS-MGMT — zarządzanie statusami znormalizowanymi z panelu (data: 2026-04-26) + +### Kontekst +- Aktualnie statusy znormalizowane (`created`, `confirmed`, `picked_up`, `in_transit`, itd.) są stałymi w kodzie (`DeliveryStatus.php`). +- Dodanie nowego statusu wymaga zmiany kodu + deploymentu. +- Panel ustawień pozwala tylko mapować surowe statusy kurierów na istniejące statusy znormalizowane — nie można dodać nowego znormalizowanego statusu z UI. + +### Zadania +1. Wynieść listę statusów znormalizowanych do tabeli DB (np. `delivery_statuses`) z kolumnami: `key`, `label_pl`, `color`, `sort_order`, `is_terminal`, `is_system`. +2. Statusy systemowe (`delivered`, `returned`, `cancelled`) oznaczać flagą `is_system = true` — nieedytowalne z UI (mają specjalne znaczenie w kodzie). +3. Panel `/settings/delivery-statuses` — CRUD dla statusów niebędących systemowymi (dodaj, zmień etykietę/kolor, usuń jeśli nieużywany). +4. `DeliveryStatus::ALL_STATUSES`, `LABEL_PL` i badge CSS zastąpić dynamicznym ładowaniem z DB (cache per-request). +5. Automatyzacje i mapowania kurierów — dropdown statusów znormalizowanych pobierany z DB zamiast hardcoded. + +### Uwagi +- `TERMINAL_STATUSES` musi zostać zachowane jako lista systemowych statusów końcowych — te nie powinny być usuwalne. +- Przy usuwaniu statusu znormalizowanego — blokada jeśli używany w `delivery_status_mappings` lub `shipment_packages.delivery_status`.