Flusso di Lavoro: Approvazione Contratto + Firma Digitale
Moduli coinvolti: Contratti · Gestione Documenti · Automazione Flussi di Lavoro · Proposte
Chi lo utilizza: Legale, Account manager, Responsabile vendite, Clienti
Durata tipica: 1 giorno – 2 settimane (dipende dal numero di approvatori)
Panoramica
Il flusso di firma completo per un documento contrattuale: dalla redazione da un template, attraverso l'approvazione interna multilivello, all'invio per la firma digitale del cliente e all'archiviazione del contratto firmato. I contratti non firmati o scaduti generano promemoria automatici.
Diagramma del flusso
[TEMPLATE CONTRATTO]
│ libreria di template con campi di unione
│ ↓ Crea contratto (manuale / da proposta / da opportunità)
│
[CONTRATTO — Bozza]
│ campi: oggetto, cliente, tipo, valore, data inizio/fine
│ contenuto: HTML con campi di unione popolati automaticamente
│
├── [APPROVAZIONE INTERNA — opzionale]
│ │ flusso multilivello configurato in Gestione Documenti
│ │ wh_approval_setting → approvatori notificati
│ │ stato approvazione: in attesa → approvato / rifiutato
│ │ ↓ Approvato internamente → inviato al cliente
│
├── [INVIATO AL CLIENTE]
│ │ email con link univoco (URL hash) + PDF allegato
│ │ il cliente accede al portale con il link ricevuto
│
└── [FIRMA CLIENTE]
│ Metodo A: Firma digitale nel portale
│ → signed = 1, signature = file PNG
│ → dmg_approval_detail_eids: IP, timestamp, nome
│ Metodo B: Contrassegno manuale dall'agente
│ → marked_as_signed = 1
│
↓
[CONTRATTO FIRMATO ✓]
│ bloccato per la modifica
│ avvisi di scadenza: isexpirynotified → promemoria email
│
[SCADENZA / RINNOVO]
│ renew() → nuovo contratto con le stesse clausole
│ firma: mantenuta (renew_keep_signature) o azzerata
Passaggi chiave
1. Template e Tipi di Contratto
Dove: /admin/contracts/templates e /admin/contracts/types
Tipi di Contratto (`/admin/contracts/types`)
Classificano i contratti organizzativamente: NDA, Accordo Quadro, Contratto di Servizio, Addendum, ecc.
Template (`/admin/contracts/templates`)
Documenti HTML pre-redatti con campi di unione che vengono popolati automaticamente quando il contratto viene creato:
| Campo di unione | Valore |
|---|---|
{client_name} |
Nome cliente |
{client_email} |
Email cliente |
{contract_subject} |
Oggetto contratto |
{contract_value} |
Valore contratto |
{contract_nr} |
Numero contratto |
{datestart} |
Data inizio |
{dateend} |
Data scadenza |
{staff_name} |
Agente responsabile |
{current_date} |
Data corrente |
2. Creazione del Contratto
Dove: /admin/contracts
Fonti di creazione:
- Da proposta accettata → pulsante Crea Contratto porta il cliente e il valore
- Da opportunità → tramite
Contracts_opportunity_model - Direttamente →
/admin/contracts→ Aggiungi Contratto - Documenti Fornitore →
/admin/contracts_vendor
Campi chiave (tblcontracts):
| Campo | Note |
|---|---|
subject |
Titolo del contratto |
client |
Cliente associato (obbligatorio) |
contract_type |
Tipo (NDA, servizi, ecc.) |
datestart / dateend |
Periodo di validità |
contract_value |
Valore monetario |
nr |
Numero contratto (manuale o automatico) |
hash |
Token univoco a 32 caratteri per l'URL di firma |
Alla creazione: signed = 0, marked_as_signed = 0, isexpirynotified = 0
3. Approvazione Interna (opzionale, tramite Gestione Documenti)
Dove: /admin/document_management
Se l'organizzazione richiede una revisione interna prima di inviare al cliente, il contratto può essere sottoposto a un flusso di approvazione configurato in Gestione Documenti.
Esiti:
- Approvato → il contratto è pronto per essere inviato al cliente
- Rifiutato → restituito al redattore con una nota; modifica + reinvio
4. Invio al Cliente
Dove: Dal contratto aperto → pulsante Invia
Cosa succede:
- Email generata dal template
contract_send_to_customercon campi di unione popolati - Se
document_attachment_on_email = 1→ il PDF del contratto è allegato all'email - L'email contiene un link univoco:
https://azienda.com/contract/{hash} - Il cliente accede al link senza autenticazione (hash = autenticazione implicita)
5. Firma Digitale del Cliente
Dove: Portale cliente (URL con hash univoco)
Metodo A — Firma Digitale:
Il cliente legge il contratto nel browser (HTML o PDF)
Disegna la firma nel campo dedicato (canvas touchscreen/mouse)
Clicca Accetta e Firma
Il sistema registra in
dmg_approval_detail_eids:- Nome del firmatario, email, indirizzo IP, timestamp esatto della firma
Sul contratto nel CRM:
signed = 1,signature = {filename.png}(immagine firma)Notifica automatica inviata all'agente responsabile
Metodo B — Contrassegno Manuale:
L'agente contrassegna il contratto come firmato manualmente:
- Pulsante Segna come Firmato →
marked_as_signed = 1
Blocco della modifica dopo la firma:
Se signed = 1 O marked_as_signed = 1 → i campi del contratto sono bloccati e non possono più essere modificati.
6. Monitoraggio e Scadenza del Contratto
Promemoria di scadenza:
Il sistema controlla dateend giornalmente sui contratti attivi:
- Se la scadenza si avvicina → email
contract_expiration_reminder_to_customerinviata al cliente isexpirynotified = 1impostato dopo l'invio (per evitare l'invio ripetuto)
Rinnovo (renew()):
- Viene creato un nuovo contratto con le stesse clausole, data inizio = giorno corrente
- L'opzione
renew_keep_signature:1→ la firma viene mantenuta sul nuovo contratto0→ la firma viene azzerata:signed = 0,marked_as_signed = 0,signature = null
Tipi di Contratto in CRMconnect
| Tipo | URL | Descrizione |
|---|---|---|
| Documenti Cliente | /admin/contracts |
Contratti con clienti |
| Documenti Fornitore | /admin/contracts_vendor |
Contratti con fornitori |
| Documenti Opportunità | /admin/contracts_opportunity |
Allegati alle opportunità |
Automazione Flussi di Lavoro — Automazioni Utili
Trigger: Contratto firmato (signed = 1)
→ Azione: Crea Progetto di implementazione
→ Azione: Invia email di benvenuto al cliente
→ Azione: Notifica al team di consegna
Trigger: dateend − 30 giorni
→ Azione: Attività "Contatta cliente per rinnovo" → agente responsabile
→ Azione: Email promemoria al cliente
Trigger: Contratto rifiutato all'approvazione interna
→ Azione: Notifica redattore + nota con motivo del rifiuto
Cosa viene creato automaticamente
| Evento | Creato automaticamente |
|---|---|
| Contratto creato da proposta | Cliente e valore portati; hash generato |
| Approvazione interna avviata | Notifiche inviate agli approvatori dalla configurazione |
| Contratto inviato al cliente | Email con link hash + PDF (se abilitato) |
| Il cliente firma digitalmente | signed=1; file PNG firma; log dmg_approval_detail_eids |
| Contratto firmato | Notifica agente; registro attività sul record cliente |
| Data scadenza in avvicinamento | Email promemoria cliente; isexpirynotified=1 |
Punti in cui il flusso può bloccarsi
| Problema | Causa probabile | Soluzione |
|---|---|---|
| Il cliente non riesce ad aprire il link | Hash errato o sessione scaduta | Reinvia il contratto — viene generata una nuova email con lo stesso hash |
| Impossibile modificare il contratto firmato | signed=1 o marked_as_signed=1 blocca la modifica |
Crea un addendum (nuovo contratto) o ripristina manualmente nel DB |
| I campi di unione non vengono sostituiti | Campi mancanti sul record cliente (es. email vuota) | Completa il record cliente prima di creare il contratto |
| Il cliente non riceve l'email | SMTP non impostato o email cliente non valida | Controlla SMTP e indirizzo email nel record cliente |
Report e Visibilità
- Elenco contratti —
/admin/contracts— filtra per tipo, cliente, stato firmato, periodo - Contratti scaduti — filtra per
dateend< oggi - Attività cliente — record cliente → scheda Contratti — cronologia completa