# TODO: CREATE SO → OPEN SO button switch

## Cel
W widoku detail (Order Lines) przycisk ACTION powinien zmieniać się dynamicznie w zależności od tego czy linia paperline ma już powiązane SO.

## Logika przycisku

| Stan `fk_soc_line` | SO istnieje | Przycisk |
|--------------------|-------------|---------|
| `NULL` lub `0`     | —           | `CREATE SO` (fioletowy, jak dziś) |
| `> 0` (SO active)  | tak         | `OPEN SO` → link do `commande/card.php?id={so_id}` |
| `> 0` (SO deleted) | nie (ghost) | `CREATE SO` (po wyczyszczeniu przez trigger) |

## Zmiany do zaimplementowania

### 1. Lines query (`paper_work.php`)
- Aktualnie: `cd` (commandedet) jest joinowany ale `co.rowid` nie jest selectowany
- Dodać do SELECT: `co.rowid as so_id, co.ref as so_ref, co.fk_statut as so_statut`
- Dodać JOIN: `LEFT JOIN llx_commande co ON co.rowid = cd.fk_commande AND pl.fk_soc_line > 0`

### 2. Logika przycisku (`paper_work.php`, sekcja renderowania ACTION)
- Jeśli `$line->so_id > 0` → render `OPEN SO` (butAction, `href=DOL_URL_ROOT/commande/card.php?id={so_id}`)
- Jeśli `$line->so_id` puste/null → render `CREATE SO` (jak dziś)
- Uwaga: sprawdzenie `$line->so_id` zamiast `$line->fk_soc_line` — bo `so_id` pochodzi z JOINa i będzie NULL jeśli SO zostało usunięte

### 3. Trigger `COMMANDE_DELETE` (`OpenOrderBookTriggers.class.php`)
- Dodać case `COMMANDE_DELETE` (lub `ORDER_DELETE` — sprawdzić nazwę eventu w Dolibarr)
- Akcja: `UPDATE llx_openorderbook_paperline SET fk_soc_line = NULL WHERE fk_soc_line IN (SELECT rowid FROM llx_commandedet WHERE fk_commande = {deleted_so_id})`
- Zapewnia że po usunięciu SO przycisk wraca do `CREATE SO`

## Pytania otwarte

- [ ] Jak traktować SO w statusie `CANCEL` lub `REJECTED`?
  - Opcja A: `OPEN SO` (bo SO istnieje, można zobaczyć)
  - Opcja B: `CREATE SO` (bo SO anulowane = można tworzyć nowe)
  - Rekomendacja: **Opcja A** — linia ma powiązane SO, użytkownik powinien widzieć stan. Jeśli chce nowe, niech najpierw rozłączy ręcznie.

## Pliki do modyfikacji

- `paper_work.php` — lines query SELECT + JOIN, logika przycisku ACTION
- `core/triggers/interface_99_modOpenOrderBook_OpenOrderBookTriggers.class.php` — nowy case COMMANDE_DELETE
