=== Recesso Digitale by Karaly ===
Contributors: karaly
Tags: woocommerce, recesso, diritto di recesso, codice del consumo, gdpr, ecommerce, conformità
Requires at least: 6.2
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 1.2.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Funzione digitale di recesso per WooCommerce conforme all'art. 54 bis del Codice del consumo: pulsante a doppia conferma, ricevuta su supporto durevole con prova SHA-256, esclusioni art. 59, consensi al checkout.

== Description ==

**Recesso Digitale by Karaly** dota il tuo negozio WooCommerce della *funzione di recesso online* prevista dall'**art. 54 bis del Codice del consumo** (introdotto dal D.Lgs. 209/2025, in attuazione della Direttiva UE 2023/2673 che ha modificato la Direttiva 2011/83/UE).

Dal momento in cui la norma è operativa, ogni negozio online che vende a consumatori deve mettere a disposizione una funzione che consenta di recedere dal contratto con pochi clic, in modo continuativo per tutto il periodo di recesso, rilasciando una conferma di ricevimento su supporto durevole. Questo plugin implementa esattamente quel meccanismo, con le diciture letterali richieste dalla legge.

= Cosa fa =

* **Pulsante di recesso a doppia conferma** con le diciture conformi: "Recedere dal contratto qui" → riepilogo in sola lettura → "Conferma recesso". Il testo conforme è bloccato; lo stile è personalizzabile.
* **Avviso di ricevimento su supporto durevole** inviato via email, con nome del consumatore, ordine, data e ora di trasmissione e **codice di integrità SHA-256** come prova.
* **Selezione per riga e quantità**: recesso totale o parziale, scegliendo i singoli prodotti e le quantità.
* **Area cliente + ospiti**: i clienti loggati trovano la funzione in "Il mio account" con i dati già precompilati (principio "una sola volta"); chi ha ordinato come ospite recede tramite ricerca dell'ordine validata su numero + email.
* **Distinzione B2B / B2C**: rilevamento della partita IVA a strati (filtro per sviluppatori, chiavi meta note e personalizzate, auto-rilevamento dagli ordini, validazione P.IVA italiana ed europea). Sugli ordini intestati a partita IVA il recesso "da consumatore" non viene proposto.
* **Esclusioni art. 59** per prodotto o categoria, con avviso automatico nella scheda prodotto.
* **Consensi al checkout** per contenuto digitale (art. 59, lett. o) e servizi avviati durante il periodo di recesso (art. 57), con **gate lato server** che blocca l'ordine se manca un consenso obbligatorio (rete di sicurezza "fail loud").
* **Modulo tipo di recesso (Allegato I.B)** generato automaticamente con i dati del negozio.
* **Registro delle richieste** con stato, IP, dispositivo, data/ora e hash, esportabile in CSV per finalità di audit e conservazione.
* **Pannello stato conformità** che rileva la configurazione del checkout (classico o a blocchi) e segnala cosa è cablato e cosa va completato.
* **Compatibile HPOS** (High-Performance Order Storage) e con i temi/builder più diffusi.

= Trasparenza =

Recesso Digitale by Karaly è uno **strumento tecnico** che mette in regola il negozio rispetto all'obbligo dell'art. 54 bis. **Non costituisce parere legale** e **non sostituisce** l'aggiornamento delle condizioni generali di vendita né dell'informativa precontrattuale ex art. 49 del Codice del consumo, che restano a carico del titolare del negozio e del suo consulente legale.

= Sviluppato da Karaly =

Plugin sviluppato da **Karaly**, agenzia digitale. Sito: [www.karaly.it](https://www.karaly.it).

== Installation ==

1. Carica la cartella `karaly-recesso-digitale` nella directory `/wp-content/plugins/`, oppure installa lo ZIP da **Plugin → Aggiungi nuovo → Carica plugin**.
2. Attiva il plugin dalla schermata **Plugin**.
3. Vai su **Recesso Digitale → Impostazioni** e compila i dati del professionista, il periodo di recesso e i testi dei consensi.
4. (Per gli ospiti) Crea una pagina con lo shortcode `[karaly_recesso_form]` e selezionala nelle impostazioni.
5. Verifica la configurazione in **Recesso Digitale → Stato conformità**.

== Frequently Asked Questions ==

= Da quando è obbligatoria la funzione di recesso online? =

L'obbligo deriva dall'art. 54 bis del Codice del consumo, introdotto dal D.Lgs. 209/2025 in attuazione della Direttiva UE 2023/2673. Verifica con il tuo consulente legale la decorrenza applicabile alla tua attività.

= Posso cambiare il testo del pulsante "Recedere dal contratto qui"? =

No: le diciture del pulsante e della conferma sono vincolate dalla norma, perché la forma è parte dell'adempimento. Puoi però personalizzare liberamente colori, dimensioni, bordi e icona.

= Quali shortcode mette a disposizione il plugin? =

* `[karaly_recesso_form]` — il modulo di recesso completo (ricerca ordine per numero + email, selezione prodotti, conferma, ricevuta). Mettilo in una pagina dedicata.
* `[karaly_recesso_bottone]` — un pulsante personalizzabile che porta al modulo, da inserire ovunque: footer, widget, menu di contenuto, pagine. Di default punta alla pagina del recesso configurata.
* `[karaly_recesso_consenso]` — i consensi (contenuto digitale / servizio) per i checkout personalizzati o a blocchi.
* `[karaly_recesso_modulo]` — il modulo tipo Allegato I.B precompilato con i dati del negozio.

= Come personalizzo il pulsante [karaly_recesso_bottone]? =

Attributi disponibili: `testo`, `url`, `ordine`, `bg` (sfondo), `color` (testo), `hover` (sfondo al passaggio), `hover_color` (testo al passaggio), `radius`, `size` (small|medium|large), `padding`, `font_size`, `font` (famiglia di caratteri), `peso` (es. 400/600/700), `maiuscolo` (yes|no), `spaziatura` (letter-spacing), `bordo` (es. "2px solid #16404d"), `ombra` (yes|no o valore CSS), `larghezza` (es. 240px o "full"), `full` (yes|no), `align` (left|center|right), `icona` (yes|no), `classe`.

Esempio: `[karaly_recesso_bottone testo="Diritto di recesso" bg="#000" color="#fff" hover="#222" radius="999px" peso="700" maiuscolo="yes" size="large"]`

= Il pulsante è diverso dalla dicitura "Recedere dal contratto qui"? =

Il modulo di recesso usa internamente le diciture vincolate dalla norma. Il pulsante `[karaly_recesso_bottone]` è invece un collegamento al modulo che puoi posizionare liberamente nel sito: testo e stile sono personalizzabili perché è un richiamo, non l'atto formale di recesso.

= Funziona con il checkout a blocchi di WooCommerce? =

La funzione di recesso e il registro funzionano in ogni caso. Per la cattura dei consensi al checkout, il checkout classico è gestito automaticamente; con il checkout a blocchi va inserito lo shortcode `[karaly_recesso_consenso]` in un punto idoneo. In ogni caso, un gate lato server impedisce che un ordine con prodotti che richiedono consenso venga concluso senza di esso.

= Come distingue i clienti business dai consumatori? =

Tramite la partita IVA presente sull'ordine, rilevata con un sistema a strati. Gli sviluppatori possono forzare il valore con il filtro `krd_order_vat`.

= I dati vengono cancellati alla disinstallazione? =

Alla disinstallazione vengono rimosse le impostazioni e il registro delle richieste. I consensi raccolti sugli ordini reali restano, per non perdere prove di conformità.

== Screenshots ==

1. Flusso di recesso a due step nell'area cliente.
2. Riepilogo in sola lettura prima della conferma.
3. Registro delle richieste con hash di integrità.
4. Pannello impostazioni a marchio Karaly.
5. Pannello stato conformità.

== Changelog ==

= 1.0.0 =
* Prima versione pubblica.
* Funzione di recesso a doppia conferma (art. 54 bis).
* Ricevuta su supporto durevole con hash SHA-256.
* Recesso totale e parziale con selezione per riga e quantità.
* Area cliente e flusso ospite con lookup ordine + email.
* Distinzione B2B/B2C su partita IVA con rilevamento a strati.
* Esclusioni art. 59 per prodotto e categoria.
* Consensi al checkout (contenuto digitale e servizi) con gate lato server.
* Modulo tipo Allegato I.B, registro richieste ed export CSV.
* Pannello stato conformità. Compatibilità HPOS.

== Upgrade Notice ==

= 1.0.0 =
Prima versione.
