# DPass 61D5 — Preventivo GET, cambio lingua e ritorni di navigazione

Base richiesta: 61D4 applicata al locale `~/progetti/dpass`.

## Problema corretto
Il controller mostrava il riepilogo direttamente come risposta a POST su
`/_dpass/user/strutture/{area}/preventivo`. La rotta lingua esistente usa
`redirect()->back()`, che riapre il riepilogo in GET: la rotta GET mancava.
Anche un ritorno da errore di acquisto poteva raggiungere lo stesso indirizzo.
Il log ricevuto dimostra la richiesta GET non supportata, ma non permette di
stabilire da solo quale click l'abbia provocata.

## Modifica
- POST calcola/salva il preventivo e restituisce 303 verso un riepilogo GET.
- Il GET legge lo stesso snapshot di sessione: non ricalcola prezzo, non crea
  disponibilità riservate, non addebita e non avvia PayPal.
- Il parametro `quote` distingue le schede: targa/importi/dati restano in sessione,
  non nella query string. Il token non autorizza nulla senza la sessione utente.
- Ogni lettura verifica utente, tenant, Comune e struttura.
- I vecchi URL senza token cercano l'ultimo preventivo del medesimo contesto e
  rimandano al nuovo URL; un token esplicitamente errato NON recupera altri dati.
- Preventivo mancante/scaduto: ritorno al modulo con errore IT/EN; alla scadenza
  sono mantenuti i dati modificabili. La scadenza non viene prolungata.
- Acquisto già avviato/confermato: riapertura del dettaglio della prenotazione,
  senza nuovo checkout. Disponibilità e metodi disponibili sono riletti sul GET.
- POST di acquisto e protezioni esistenti restano invariati. Nessuna modifica a
  prezzi, limiti giorni, quote giornaliere, branding, etichette o pagina lingua.

## Applicazione WSL
Salvare `dpass_patch_61D5_fix_preventivo_get.zip` in `C:\Users\massi\Downloads`.

```bash
(
  set -e
  cd ~/progetti/dpass
  PATCH_DIR="$(mktemp -d /tmp/dpass_patch_61D5.XXXXXX)"
  unzip -q /mnt/c/Users/massi/Downloads/dpass_patch_61D5_fix_preventivo_get.zip -d "$PATCH_DIR"
  bash "$PATCH_DIR/apply_patch.sh" "$PWD"
)
```

Esito: `[61D5] PATCH 61D5 APPLICATA E VERIFICATA.`
Il programma verifica hash/prerequisiti, salva un backup, applica, esegue test
isolati e cancella le cache standard rotte/viste. Non legge il .env durante i test,
non esegue migration e non modifica il database applicativo.
In caso di conflitto si ferma; se un test fallisce dopo la copia tenta il ripristino.
`--check` come secondo argomento di apply_patch.sh esegue soltanto il preflight.
Rollback: `bash rollback.sh ~/progetti/dpass [percorso-backup]`.
Non ripristina file modificati successivamente: si ferma per proteggerli.

## Collaudo manuale
1. Aprire Prenota ingresso, compilare e calcolare il preventivo.
2. Cambiare IT → EN → IT dal riepilogo e ricaricare: stessi dati/importo, niente 405.
3. Aprire due preventivi in schede diverse e verificare che non si scambino i dati.
4. Verificare il normale acquisto di prova. Il caricamento del riepilogo NON
   costituisce un pagamento e non garantisce la disponibilità.
5. Un vecchio URL può essere riaperto dopo la patch. Se il preventivo è scaduto,
   verrà richiesto di calcolarlo nuovamente. Non ripetere pagamenti già avviati:
   controllare Le mie prenotazioni.

Non è necessario modificare le variabili .env delle 61D3/61D4.
Produzioni: nessuna modifica adesso. Leggere CPANEL_RILASCIO_61D5.md.
