Il problema
In Italia ogni fattura passa dal Sistema di Interscambio (SDI): va prodotta in un formato XML preciso, firmata, inviata, e poi seguita attraverso le notifiche di consegna o di scarto. Chi ha un gestionale di settore, come UnigestPro, ha bisogno di emettere fatture per i propri clienti senza costruire e mantenere da solo tutto questo.
Vidimo risponde a due esigenze: un gestionale completo per aziende e professionisti, e una base di fatturazione che altri prodotti possono integrare.
Contesto e team
Vidimo è un prodotto dell’azienda in cui lavoro, ancora in costruzione, e ne sono Head of Product. Lo stiamo sviluppando in team, accanto a UnigestPro. UnigestPro è il primo partner integrato di Vidimo: crea gli account dei propri clienti, emette fatture per loro conto e riceve gli incassi tramite webhook.
Il mio contributo
- Avvio del progetto e ambiente Docker.
- Le integrazioni per i partner: chiavi API, creazione degli account dei partner, webhook più completi; incassi, fatture ricevute e fatturato esposti ai partner, piano dei conti pronto alla creazione dell’account.
- L’allineamento grafico a UnigestPro con il design system condiviso.
- Le basi comuni portate da UnigestPro: gestione dei file con anteprime di PDF e documenti Office, audit degli errori, regola delle password, accesso con Google e recupero password.
Scelte progettuali
Il documento è l’interfaccia
La fattura si compila direttamente sul foglio, come apparirà a chi la riceve. Le sezioni opzionali (ritenute, bollo, cassa previdenziale, trasporto, split payment) compaiono solo quando servono.
Un numero di fattura non si spreca
La numerazione è assegnata in modo atomico: due fatture create nello stesso istante non possono ricevere lo stesso numero, e un errore non lascia buchi nella serie. La creazione di una fattura, che prima richiedeva diverse chiamate e poteva lasciare documenti a metà, è diventata un’unica operazione.
Regole contabili nel database
Le regole che non devono mai essere violate stanno nel database, non solo nel codice: un movimento contabile non si conferma se dare e avere non coincidono. Ogni tentativo di invio allo SDI è registrato come una nuova riga, così la storia di una fattura resta completa.
Lavoro pesante fuori dall’applicazione
Invio allo SDI, ricezione delle notifiche e generazione dei PDF girano in un servizio Node.js separato, alimentato da code. Gli XML restano su S3, con un’impronta di controllo nel database.
Risultato e stato
Vidimo è in sviluppo. Oggi copre emissione e ricezione delle fatture elettroniche, note di credito, prima nota, piano dei conti, liquidazione IVA e scadenzario. Per i partner offre API documentate e webhook. È il modulo di fatturazione di UnigestPro.