# CLAUDE.md — PreventiFacile (progetto di Marta)

> **Nota per chi usa il kit:** questa è l'app di Marta del capitolo 6.1, com'è
> davvero — esempio compilato, non modulo vuoto: così vedi funzionare tutto
> prima di toccare qualcosa. Per farla tua, apri questa cartella con Claude
> Code e parti dall'ultima sezione, «Se questa app non è la tua attività».

Sono Marta, fotografa a Verona. Questa cartella è la mia app dei preventivi:
`index.html` (la struttura), `style.css` (l'aspetto), `app.js` (i calcoli e la logica).
È nata come prototipo in un Artifact su claude.ai e ora vive qui, su file miei.
Lavora così: una richiesta = una modifica, e dopo ogni modifica ai calcoli si rifà il collaudo.

## Il mio listino (fonte di verità)

- Shooting matrimonio: **1.200 €**
- Ritratto in studio: **250 €**
- Tutti i prezzi sono **IVA 22% esclusa**. Se aggiungo voci nuove, valgono le stesse regole.
- Il listino di partenza sta in `app.js` (variabile `listino`): se ti chiedo di cambiare una tariffa, si cambia LÌ e in nessun altro posto.

## Regole di calcolo (non si toccano senza il mio ok esplicito)

1. Ordine fisso: subtotale (prezzo × quantità, sommati) → sconto % → imponibile → IVA 22% → totale.
2. Sconto unico sull'intero preventivo, da 0 a 30. Mai oltre 30, nemmeno se lo chiedo di fretta.
3. Arrotondamento a 2 decimali a OGNI passaggio (funzione `r2`), non solo alla fine.
4. Formato italiano con punto delle migliaia e virgola dei decimali: «1.592,10 €». Attenzione: il punto a 4 cifre esce solo con `useGrouping: "always"` — è già sistemato in `app.js`, non regredire.
5. Caso di collaudo, da verificare a mano dopo ogni modifica ai calcoli: 1× matrimonio + 1× ritratto = 1.450,00 € · sconto 10% → imponibile 1.305,00 € · IVA 287,10 € · **totale 1.592,10 €**.

## Cosa non cambiare MAI

- L'app **non invia** email e **non condivide** nulla da sola: la consegna al cliente resta a me.
- L'app **non salva** i dati dei clienti da nessuna parte (niente database, niente memorizzazione nel browser): chiusa la pagina, spariti i dati. Il banner «Niente salvataggi · niente invii» resta.
- Con dati incompleti (nome mancante, nessuna voce, quantità vuota, sconto vuoto o fuori 0–30) l'anteprima mostra l'elenco delle mancanze e **nessun numero provvisorio**.
- L'intestazione del preventivo: «Marta · Fotografia — Verona», validità 30 giorni.

## Come lavorare su questi file

- Una richiesta = una modifica verificabile. Prima di toccare i calcoli, dimmi cosa cambierebbe.
- Niente librerie nuove senza chiedermelo (oggi l'unica esterna è html2pdf.js dal CDN, per «Scarica PDF»; senza internet il pulsante ripiega sulla stampa).
- Difetti noti, per ora accettati (dal giro di critica del prototipo): il prezzo di listino svuotato diventa 0 € senza avvisare; i campi numerici non accettano la virgola; «Stampa o salva in PDF» resta attivo anche su preventivo incompleto; `aria-live` sull'intero foglio. Se ne correggiamo uno, uno alla volta.

## Se questa app non è la tua attività (adattare il kit)

Chiedi a Claude Code queste modifiche, una alla volta, e ricollauda dopo ciascuna:

1. L'intestazione: «Marta · Fotografia — Verona» compare in `index.html` (titolo della pagina e testata) e in `app.js` (funzione `intestazione`). Sostituiscila con la tua.
2. Il listino di partenza: la variabile `listino` in `app.js`. Metti le TUE voci e i TUOI prezzi (nel kit trovi `listino-esempio.csv` con 5 voci di prova).
3. Le sezioni sopra di questo file: riscrivile con le tue tariffe, le tue regole di sconto e il tuo caso di collaudo — un preventivo di cui conosci già il totale, ricalcolato a mano.
4. Se la tua aliquota non è il 22%, cambia la variabile `IVA` in `app.js` E la dicitura «IVA 22%» dove compare — poi rifai i conti del caso di collaudo. Aliquote e regimi confermali col tuo commercialista: questo kit fa aritmetica, non consulenza fiscale.
