# HANDOFF — 2026-07-02 (fine giornata)

Sessione lunga su **e-commerce**: catalogo/scheda prodotto, registrazione/area utente, carrello, footer.
Tutte le modifiche sono **solo sul NAS locale** (`nas.duebytes.synology.me/Lavoro/Benza/sito_26`),
NON su Aruba. Unica eccezione: caricato `logo_bianco.png` su Aruba per il logo email (vedi sotto).

## Fatto oggi (tutto verificato)

**Scheda prodotto (modello.php)**
- IVA: mostra "IVA compresa" (era "IVA esclusa" inventato). Tutti i prezzi sito sono IVA inclusa.
- Label PDF: pdf1="Istruzioni", pdf2="Scheda tecnica" (erano invertite).
- Descrizione: `nl2br` (elenchi con `•` andavano su una riga).
- Spedizione = **data di consegna calcolata** (`spedizione_consegna` via `calcolaSpedizione`), non "gg lav.".
- URL parlante: `history.replaceState` a `model{id}-slug` + `<link canonical>`.
- Cap quantità: il `+` non supera `disp_web` (box + tabella sotto-teli).
- Prezzo 331 vs 299 = rivenditore (prezzo_r) vs pubblico (prezzo2): NON è un bug.

**Registrazione + area utente**
- Provincia = select filtrabile (Tom Select) che salva la sigla; regione (`s_reg`) + isola derivate e
  nascoste. Dataset `api/pubblico/province/read.php` (province.json). Applicato a registrazione
  (login.php) E profilo (utente_dati.php, con pre-selezione). Aggiunto s_reg/isola a Utente::update.
- Pagina di cortesia `registrazione_avvenuta.php` (redirect post-registrazione).
- Fix login: account non attivato ora dice "Account in attesa di attivazione" (non più "password errata")
  — tolto il check status da `verificaLogin` (lo gestisce login.php).
- Bacheca "Messaggi": è il **board interno staff** (non chat clienti!). Ora gated su flag `bacheca=1`
  (sidebar + pagina + endpoint server). Vedi memoria [[reference_bacheca_staff]].

**Sync gestionale (Benza_sit_clienti, via DB diretto — NO JWT)**
- Registrazione → `or_clienti` FUNZIONA (era rotta: mancava `note` NOT NULL sotto strict mode).
  Fix `syncCliente`: note='Da E-commerce', codfis/piva per lunghezza, match email/codfis/tel, associa-se-esiste.
- Verificato end-to-end con registrazione reale (utente 3110 paoloalby → associato a cliente 9237).
- Email registrazione: solo all'utente (mai a Benza); test_mode → tutto a paoloalby.
- Logo email: caricato su **Aruba** `www.benza.it/assets/img/logo_bianco.png` (HTTP 200).

**Carrello**
- Quantità ≤ `disp_web` (clamp come il vecchio; **stock NON riservato/decrementato** — dato indicativo,
  gestito a mano da Benza). Tooltip **rosso** se superi la giacenza.
- Badge header: totale pezzi, persiste su ogni pagina, riposizionato sulla bag.
- Controlli quantità allineati a griglia + small; cap client+server.
- Tempi di consegna stimati (raggruppati per sped, come il vecchio).

**Altro**
- Passata ortografica site-wide: accenti-apostrofo → accenti veri (124 correzioni).
- Backslash legacy DB (`d\'acqua`): workaround `stripslashesDeep` in API catalogo/prodotto.
- Footer: dati societari in riga unica separata; allineamento contatti (flex); credit "DueBytes di Paolo Alberti".

## DA FARE (prossimi passi)
1. **Write-back gestionale→sito** (il pezzo grosso rimasto): in `ordini_clienti_26/api/stati/create.php`
   replicare `nuovo_stato_db.php` del vecchio: al cambio stato aggiornare `Benza_sito.ordini`
   (cat.6→pagato, cat.7→spedito, cat.11→annullato) via `DatabaseCli`. Vedi [[reference_sync_gestionale]].
2. Testare **checkout/procedi all'ordine** (scrive l'ordine nel gestionale — sito→gestionale già implementato).
3. Sanitizzare backslash nel DB al re-import dump produzione [[project_todo_sanitize_db]].
4. Display "In pronta consegna" per `disp_web > 1000000` (il vecchio non mostra il numero grezzo).
5. `<link canonical>` su categoria.php.
6. Deploy su Aruba quando pronto (FTP [[reference_ftp_aruba]]).

## Dati di test creati (da eliminare quando serve — io non posso fare DELETE)
- `Benza_sito.utenti`: 3107 (Mario Rossi), 3108 (Mario Verdi, attivato, bacheca test), 3109 (Verdi Bis),
  3110 (Paolo Alberti = paoloalby, reale). Carrelli di test su 3108.
- `Benza_sit_clienti.or_clienti`: 9280 (Mario Verdi Test).

## Promemoria ambiente
- DB: **solo SELECT** via skill db-query; scritture via migration in `docs/sql/` (eseguite a mano).
- Email: **test_mode=true** → solo a paoloalby. MAI a Benza/clienti reali.
- Browser: NON riusare i tabId di oggi (248735030/073) domani — ricreare con tabs_context_mcp.
- Ortografia: sempre à/è/é/ì/ò/ù, mai apostrofo-accento.
