# Linee guida — Firma elettronica

## Scopo e principio guida

Questo documento definisce come utilizzare il modulo di firma elettronica integrato nel pannello admin di Evoluzione Azienda. L'obiettivo è gestire in modo digitale, tracciabile e legalmente valido tutti i documenti che richiedono sottoscrizione — contratti di lavoro, piani provvigionali, procedure di sicurezza, adempimenti obbligatori.

Il modulo si basa su **DocuSeal EU**, piattaforma certificata con firma elettronica avanzata (FEA), conforme al regolamento eIDAS. I documenti firmati hanno valore legale equivalente alla firma autografa.

Principi:
- Nessun documento rilevante circola in forma non firmata o su canali non tracciati.
- Ogni firma è registrata con audit trail, timestamp e indirizzo IP.
- Il firmatario firma da qualsiasi dispositivo, senza necessità di account o app.
- L'admin ha visibilità in tempo reale sullo stato di ogni documento.

---

## Accesso all'area firma elettronica

Dal menu laterale aprire la voce **Firma elettronica**. La sezione mostra la lista di tutti i contratti presenti nel sistema con i relativi stati.

---

## 1. La tabella contratti

### Colonne e informazioni mostrate

Ogni contratto appare come una card con le seguenti informazioni:

| Elemento | Descrizione |
|---|---|
| **Titolo** | Nome assegnato al contratto in fase di creazione. |
| **Stato** (badge) | Stato corrente del contratto (vedi §2). |
| **Tipo documento** (badge) | Categoria del documento (es. Contratto lavoro, Piano provvigionale). |
| **Firmatari** | Numero di firmatari e quanti hanno già completato la firma. Cliccabile per i contratti in stato *In firma* o *Completato*. |
| **Firma congiunta** | Badge viola presente solo se il contratto richiede firma di più persone sullo stesso documento. |

### Filtri disponibili

In cima alla lista sono disponibili filtri per **stato** e **tipo documento**. Il pulsante di reset ripristina la visualizzazione completa.

---

## 2. Stati del contratto

```
Bozza → In firma → Completato
                 ↘ Annullato
          Scaduto (se il link scade senza firma)
```

| Stato | Significato | Cosa fare |
|---|---|---|
| **Bozza** | Contratto creato ma non ancora inviato. | Premere **Invia** quando pronto. |
| **In firma** | Link inviato al firmatario, in attesa di completamento. | Monitorare. Possibile annullare. |
| **Completato** | Tutti i firmatari hanno firmato. | Scaricare il PDF firmato. |
| **Annullato** | Procedura interrotta manualmente dall'admin. | — |
| **Scaduto** | Il link di firma è scaduto senza essere completato. | Ricreare e reinviare il contratto. |

### Stati del singolo firmatario

| Stato | Significato |
|---|---|
| **In attesa** | Link inviato, firma non ancora completata. |
| **Firmato** | Firma apposta con successo. |
| **Rifiutato** | Il firmatario ha esplicitamente rifiutato di firmare. |
| **Scaduto** | Il link personale è scaduto. |

---

## 3. Azioni disponibili per contratto

Ogni contratto espone le azioni contestuali tramite bottoni visibili sulla card:

| Azione | Disponibilità | Cosa fa |
|---|---|---|
| **Invia** (icona aereo) | Solo stato *Bozza* | Avvia la procedura di firma e invia il link al firmatario. |
| **Scarica PDF firmato** (icona download) | Solo stato *Completato* | Scarica il PDF firmato dal server interno (MinIO). |
| **Stato firmatari** (icona utenti) | Stati *In firma* e *Completato* | Apre il dettaglio con lo stato di ogni firmatario e il link diretto alla firma. |
| **Annulla** (icona X) | Solo stato *In firma* | Annulla la procedura su DocuSeal. Azione irreversibile. |
| **Elimina** (icona cestino) | Sempre | Elimina definitivamente il contratto da DB, DocuSeal e storage. Azione irreversibile. |

---

## 4. Creare un nuovo contratto

Premere il bottone **+ Nuovo contratto** in alto a destra. Il form si apre in un modale e richiede di scegliere una delle due sorgenti.

### Sorgente A — PDF libero

Usare quando si ha già il documento pronto in PDF (contratto redatto esternamente, modulo precompilato, ecc.).

1. Selezionare **PDF libero**.
2. Scegliere il **Tipo documento** dall'elenco (vedi §4.1).
3. Inserire il **Titolo** descrittivo (es. `Contratto co.co.co. — Mario Rossi`).
4. Caricare il **File PDF** (trascinare o cliccare per sfogliare). Solo PDF, max 10 MB.
5. Impostare la **Scadenza firma** in giorni.
6. Scegliere la **Modalità firma** (vedi §4.2).
7. Selezionare i **Destinatari** dalla lista dei candidati.
8. Premere **Crea**.

### Sorgente B — Da modello

Usare quando il documento viene generato automaticamente a partire da un template preconfigurato nel sistema. I campi del contratto (es. data inizio, data fine, tipo inquadramento) vengono compilati dall'app — non dal firmatario.

1. Selezionare **Da modello**.
2. Scegliere il **Tipo documento** dall'elenco.
3. Inserire il **Titolo** descrittivo.
4. Selezionare il **Modello** dall'elenco (i modelli disponibili sono quelli configurati nella sezione Modelli).
5. Impostare la **Scadenza firma** in giorni.
6. Scegliere la **Modalità firma**.
7. Selezionare i **Destinatari**.
8. Premere **Crea**.

### 4.1 Tipi di documento

| Tipo | Label nel sistema | Quando usarlo |
|---|---|---|
| `employment` | Contratto lavoro | Contratti di assunzione, co.co.co., stage, apprendistato. |
| `commission` | Piano provvigionale | Accordi su provvigioni e incentivi per agenti/consulenti. |
| `safety` | Procedura sicurezza | Documenti obbligatori sicurezza sul lavoro (DVR, informativa). |
| `compliance` | Adempimento obblig. | Adempimenti normativi, privacy, GDPR, whistleblowing. |
| `other` | Altro | Qualsiasi documento che non rientra nelle categorie precedenti. |

### 4.2 Modalità firma

| Modalità | Quando usarla | Come funziona |
|---|---|---|
| **Invio individuale** | Ogni destinatario firma una propria copia separata del documento. Usare per contratti plurimi (es. stesso contratto-tipo inviato a più collaboratori). | DocuSeal crea una submission indipendente per ogni destinatario. Ogni firmatario riceve il proprio link. |
| **Firma congiunta** | Il documento deve essere firmato da più persone sullo stesso PDF. Usare per accordi tra parti (es. contratto bi-laterale con firma del collaboratore e del responsabile). | DocuSeal crea una sola submission con più slot di firma. Il PDF finale riporta tutte le firme. |

---

## 5. Inviare un contratto

Dopo la creazione, il contratto è in stato **Bozza**. Premere il bottone **Invia** (icona aereo) sulla card.

### Contratti da PDF libero

L'invio è immediato: il sistema carica il PDF su DocuSeal e invia il link al firmatario via email e SMS (se il numero di telefono è valido).

### Contratti da modello

Prima dell'invio compare un **modale di pre-invio** che mostra i campi del modello che richiedono **compilazione manuale** (es. data inizio contratto, data fine, livello inquadramento). Compilare tutti i campi obbligatori e premere **Invia**.

I campi compilati in questo step vengono iniettati nel documento prima che il firmatario lo riceva: il firmatario vede già il contratto con i suoi dati, deve solo apporre la firma.

---

## 6. Cosa vive il firmatario

Dopo l'invio il firmatario riceve:
- **Email** con oggetto e link diretto alla firma.
- **SMS** con link breve (solo se il numero di telefono è presente e nel formato internazionale, es. `+39 333 1234567`).

Il firmatario apre il link da qualsiasi dispositivo (PC, tablet, smartphone) e accede direttamente al documento su DocuSeal — **senza bisogno di creare un account**. Il processo:

1. Visualizza il documento completo.
2. Scorre fino ai campi di firma/iniziali/data preposizionati.
3. Appone la firma disegnandola, digitandola o usando una firma pre-salvata.
4. Conferma il documento.

Al termine riceve una email di conferma con il PDF firmato allegato.

Il firmatario può anche **rifiutare** la firma premendo il pulsante dedicato — in quel caso il contratto torna all'admin con lo stato del firmatario impostato su *Rifiutato*.

### Link diretto

In qualsiasi momento, dal modale **Stato firmatari**, è disponibile il link diretto al form di firma del singolo firmatario. Utile per inviare un promemoria manuale o condividere il link via canale alternativo.

---

## 7. Monitoraggio post-invio

Aprire il modale **Stato firmatari** (icona utenti sulla card, disponibile per i contratti *In firma* e *Completato*).

Il modale mostra per ogni firmatario:
- Nome e indirizzo email.
- Stato corrente della firma (*In attesa*, *Firmato*, *Rifiutato*, *Scaduto*).
- Data e ora della firma (se completata).
- Link diretto al form DocuSeal (solo se ancora in attesa).

---

## 8. Download del documento firmato

Quando il contratto è in stato **Completato**, premere il bottone **Scarica PDF firmato** (icona download). Il sistema recupera il PDF dall'archivio interno (MinIO) e lo scarica direttamente.

Il documento firmato include:
- Il testo del contratto con le firme visibili.
- L'audit trail DocuSeal (allegato separato o pagina finale): timestamp, IP del firmatario, hash del documento, identificativo univoco della sessione.

---

## 9. Gestione modelli

La sezione **Modelli** (tab nella stessa area Firma elettronica) consente di configurare i template riutilizzabili per i contratti da modello.

### Creare un nuovo modello

1. Caricare il PDF base del contratto su **DocuSeal** (accesso diretto alla piattaforma) e posizionare i campi di firma, testo, data secondo le istruzioni DocuSeal.
2. Copiare l'**ID del template** dalla URL di DocuSeal.
3. Nel pannello admin → Modelli → **+ Nuovo modello**: inserire nome, tipo documento e ID DocuSeal.
4. Aprire il modello appena creato e configurare la **mappatura dei campi**: per ogni campo del template DocuSeal, indicare quale dato dell'anagrafica candidato deve essere pre-compilato automaticamente.

### Mappatura campi

La mappatura definisce cosa viene compilato automaticamente al momento dell'invio:

| Opzione | Comportamento |
|---|---|
| **— Non mappato —** | Il campo non viene compilato. Il firmatario lo compila da solo. |
| **✏ Compilazione manuale** | Il campo viene mostrato all'admin nel modale pre-invio. L'admin lo compila prima di inviare. |
| **Campo anagrafica** (es. Nome, Cognome, Codice fiscale, IBAN…) | Il campo viene compilato automaticamente con il dato dell'anagrafica del candidato. |

Regola: usare la compilazione manuale per i campi che variano da contratto a contratto (data inizio, data fine, livello, RAL). Usare la mappatura automatica per i dati anagrafici stabili.

---

## 10. Linee guida operative

### Quando usare PDF libero vs da modello

| Situazione | Sorgente consigliata |
|---|---|
| Contratto già redatto da consulente esterno o studio legale. | PDF libero |
| Contratto standard (co.co.co., agente) che varia solo per i dati del collaboratore. | Da modello |
| Documento one-shot non ripetibile. | PDF libero |
| Documento che verrà inviato a decine di persone con piccole variazioni. | Da modello |

### Scadenza firma

- Impostare almeno **7 giorni** per contratti di lavoro standard.
- Per urgenze, comunicare al firmatario la scadenza breve via canale diretto.
- Se il contratto scade senza firma, ricreare il contratto (non è possibile riattivare un link scaduto).

### Titolo del contratto

Il titolo è visibile solo all'admin, non al firmatario. Usare un formato leggibile e ricercabile:
- `Contratto co.co.co. — Nome Cognome — MM/AAAA`
- `Accordo provvigionale — Nome Cognome — Area`
- `Informativa sicurezza — Nome Cognome`

### Annullamento

Annullare un contratto interrompe la procedura su DocuSeal: il link inviato al firmatario smette di funzionare. Usare solo se si è certi di non voler più procedere — l'azione è irreversibile. Per reinviare, creare un nuovo contratto.

### Firma congiunta — attenzione

In modalità firma congiunta il PDF viene completato solo quando **tutti** i firmatari hanno firmato. Se uno dei firmatari rifiuta, l'intera procedura si blocca. Valutare con cura se usare questa modalità o inviare copie individuali.

---

## 11. Red flag operative

- Firmatario senza numero di telefono valido: il link arriva solo via email — verificare che sia raggiungibile.
- Contratto scaduto senza firma: non riattivabile. Ricreare immediatamente se necessario.
- Contratto rifiutato: contattare il firmatario per capire la motivazione prima di re-inviare.
- Campi manuali non compilati prima dell'invio: il sistema blocca l'invio con un messaggio di errore — compilare tutti i campi obbligatori evidenziati in rosso.
- Modello con campi non mappati che il firmatario non sa come compilare: rivedere la mappatura o usare la compilazione manuale per quei campi.
