Introduzione modulo
Il modulo Fatture permette di gestire l'oggetto fattura elettronica, in modalità conforme alle disposizioni dell'Agenzia delle Entrate.
📌 Panoramica
Il sistema di fatturazione permette di:
- Creare e gestire fatture elettroniche conformi al formato XML dell'AdE
- Gestire note di credito e storni fattura
- Configurare mittenti e destinatari con dati fiscali completi
- Inviare fatture al Sistema di Interscambio (SDI) tramite driver
- Monitorare lo stato di invio e ricevere notifiche dal SDI
- Generare PDF e XML delle fatture
🎯 Obiettivi del modulo
Il modulo Fatture è stato progettato per:
- Centralizzare la gestione della fatturazione elettronica
- Automatizzare l'invio al Sistema di Interscambio
- Supportare diversi driver SDI (es. Acube API)
- Garantire la conformità al formato ministeriale XML
- Tracciare lo stato delle fatture inviate
🔑 Concetti chiave
Fattura elettronica
Una fattura elettronica è composta da:
- Header: dati del mittente, destinatario e trasmissione
- Body: dati generali, righe di dettaglio, pagamento e allegati
- Identificativi SDI: UUID e stato di invio al Sistema di Interscambio
Driver SDI
Il modulo utilizza un pattern adapter per supportare diversi provider:
- Acube API (driver di default)
- Possibilità di estendere con altri provider
Contatti fattura
I contatti (mittente e destinatario) contengono:
- Dati anagrafici (denominazione, nome, cognome)
- Dati fiscali (P.IVA, codice fiscale)
- Indirizzo completo
- Codice destinatario SDI o PEC
Righe fattura
Le righe della fattura includono:
- Descrizione del bene/servizio
- Quantità e unità di misura
- Prezzo unitario e totale
- Aliquota IVA o natura (per operazioni esenti/escluse)
🏗️ Architettura
Il modulo utilizza un'architettura a servizi che separa:
- CRUD Service: operazioni base di creazione, lettura, aggiornamento
- Invoice Service: logiche di business (calcoli totali, riepilogo IVA)
- SDI Service: comunicazione con il Sistema di Interscambio
- XML Service: generazione e validazione del formato XML
Il driver SDI è configurabile tramite il file config/invoice.php e viene
risolto automaticamente dal container di Laravel.