Modulo Scadenzario
Gestione scadenze di pagamento — Rate, Incassi, Interessi moratori
Riferimenti normativi
- Art. 2214 Codice Civile — Obbligo di registrazione dei pagamenti: l'imprenditore commerciale e tenuto alla registrazione di tutte le operazioni di incasso e pagamento nelle scritture contabili obbligatorie. Lo scadenzario costituisce un registro ausiliario che supporta la corretta tenuta del libro giornale, tracciando le scadenze e i relativi movimenti finanziari.
- Art. 21 DPR 633/72 — Condizioni di pagamento in fattura: la fattura deve contenere, tra gli elementi obbligatori, le condizioni di pagamento concordate con il cessionario/committente. Il modulo Scadenzario genera automaticamente il piano rate a partire da queste condizioni, garantendo coerenza tra il documento fiscale e lo scadenziario finanziario.
- D.Lgs. 231/2002 — Ritardi di pagamento nelle transazioni commerciali: recepisce la Direttiva 2000/35/CE e disciplina gli interessi moratori dovuti in caso di ritardo nei pagamenti. Il tasso di mora e pari al tasso BCE maggiorato di 8 punti percentuali. Il modulo calcola automaticamente gli interessi moratori sulle scadenze non rispettate.
Note operative e permessi configurabili
🗒️ Pannello Note: ogni scheda di scadenza di pagamento o incasso ha un pannello "post-it"
giallo floating ancorato all'entità corrente. Si apre minimizzato come fascia
centrata sulla topbar (sulla barra blu del modale per i documenti); cliccando
la fascia o la freccia expand_more si espande al centro del viewport
(ridimensionabile via handle in basso a destra). La fascia minimizzata è trascinabile
e la sua posizione viene memorizzata in localStorage per ciascun record (es. ogni
documento ha la sua posizione independente). Per scrivere una nota: testo nel box giallino
+ bottone + Aggiungi (o Cmd/Ctrl + Invio). Modifica/elimina riservate
all'autore o agli amministratori. Cestino note con ripristino disponibile
dal toggle delete_outline nell'header del pannello espanso (solo ADMIN/SUPERADMIN).
Tutti i CRUD (create/update/delete/restore) sono tracciati in audit_log
(consultabile dal Registro modifiche, in Aziende & Licenze).
🔒 Permessi configurabili: alcune azioni di questa scheda (creazione, modifica, cancellazione, esportazione, stampa) possono essere bloccate per il ruolo del tuo workspace. Quando un bottone è bloccato, appare con icona "lucchetto" e tooltip "Permesso disabilitato dal Super Amministratore". La configurazione si fa in Aziende & Licenze » Permessi (solo SUPERADMIN).
Il modulo Scadenzario gestisce il ciclo di vita delle scadenze di pagamento generate dai documenti fiscali (fatture di vendita e acquisto). Le scadenze vengono create automaticamente in base alle condizioni di pagamento associate al documento e al soggetto.
Ogni scadenza (rata) possiede una data di scadenza, un importo e uno stato che evolve nel tempo: Aperta, Pagata o Scaduta. Il sistema aggiorna lo stato automaticamente confrontando la data di scadenza con la data corrente.
All'interno di ogni documento fiscale (fattura, nota di credito) e presente la tab Scadenzario che mostra il piano rate generato automaticamente.
| Colonna | Descrizione |
|---|---|
| N. rata | Numero progressivo della rata |
| Data scadenza | Data entro cui il pagamento deve essere effettuato |
| Importo | Importo della singola rata in euro |
| Tipo pagamento | Modalita di pagamento (bonifico, RiBa, contanti, ecc.) |
| Stato | Aperta, Pagata o Scaduta |
| Data pagamento | Data effettiva dell'incasso/pagamento (compilata alla registrazione) |
🔄 Rigenerazione automatica al cambio condizioni
Le scadenze si rigenerano automaticamente in due momenti:
- Al cambio delle condizioni di pagamento (debounced 300ms)
- Dopo ogni salvataggio del documento (cambi righe/totale → rate aggiornate, debounced 400ms)
Salvaguardia: la rigenerazione automatica non parte se ci sono rate già PAGATA, per non perdere il pagato. In quel caso interviene il banner di disallineamento descritto sotto, che ti permette di scegliere consapevolmente come procedere.
⚠ Banner disallineamento con 3 azioni
Aprendo la sezione Scadenze di un documento, se il totale rate non corrisponde al totale documento appare un banner ambrato in cima alla sezione con:
- Totale documento, totale rate, differenza, eventuali spese escluse
- Avviso esplicito se ci sono rate già PAGATA (richiede attenzione)
Tre pulsanti per scegliere come risolvere:
- 🔄 Rigenera tutto (rosso) — elimina tutte le rate e ricalcola sul totale documento corrente. Se su qualche rata ci sono incassi registrati le rate non si rifanno: l'incasso resterebbe in prima nota senza la sua rata. Prima si annulla l'incasso dalla rata (↩, con lo storno in prima nota), poi si rigenera. Le rate saldate solo da una nota di credito si rifanno: la compensazione si disfa e si rifà da sola.
- 🗛 Rata di pareggio (X €) (blu) — aggiunge una nuova rata della differenza, lasciando intatte le rate esistenti. Chiede solo la data scadenza (default oggi+30gg).
- ❌ Ignora (grigio) — chiude il banner senza modifiche.
La scelta giusta dipende dal contesto: se il pagato registrato è corretto e bisogna addebitare la differenza al cliente → Rata di pareggio. Se il documento è stato modificato dopo l'incasso → si annulla l'incasso dalle rate pagate, si sceglie Rigenera tutto e si registra di nuovo l'incasso sulle rate nuove.
Le condizioni di pagamento determinano come l'importo del documento viene suddiviso in rate. Si configurano in Impostazioni → Condizioni di pagamento.
- Accedere a Impostazioni → Condizioni di pagamento e premere + Nuova condizione.
- Inserire un codice e una descrizione (es. “30/60 DFFM”).
- Selezionare il tipo pagamento predefinito (bonifico, RiBa, cambiale, contanti, ecc.).
- Definire le righe rate: per ciascuna rata specificare i giorni dalla data documento (o da fine mese), la percentuale dell'importo totale e il tipo pagamento specifico se diverso dal predefinito.
- Salvare la condizione. Sara selezionabile nei documenti e nelle schede soggetto.
| Parametro | Esempio | Descrizione |
|---|---|---|
| Giorni | 30 | Numero di giorni dalla data documento o da fine mese |
| Fine mese | Si | Se attivo, la rata cade l'ultimo giorno del mese: data documento + giorni, poi fine mese (DFFM). Le rate dopo la prima seguono un mese dopo l'altro (30 giorni = un mese, 60 = due): una fattura del 1/1 a tre rate 30 gg fine mese scade il 31/01, il 28/02 e il 31/03, senza saltare febbraio. Col giorno fisso la rata cade il primo giorno fisso che viene dopo il termine (nei mesi più corti l'ultimo giorno del mese) |
| % Importo | 50% | Percentuale dell'importo totale documento assegnata alla rata |
| Tipo pagamento | Bonifico | Modalita di pagamento per la singola rata |
La vista principale del modulo presenta l'elenco di tutte le scadenze con filtri avanzati per una gestione efficace.
- Accedere al menu Contabilita → Scadenzario per visualizzare la lista completa delle scadenze.
- Utilizzare i filtri per stato: Aperta, Pagata, Scaduta oppure Tutte.
- Filtrare per periodo: selezionare un intervallo di date scadenza (da/a).
- Filtrare per soggetto: cercare per nome, ragione sociale o codice fiscale.
- Fare clic su una scadenza per aprire il dettaglio e accedere alle azioni di registrazione pagamento.
| Stato | Colore | Significato |
|---|---|---|
| Aperta | Blu | Scadenza non ancora giunta a termine e non ancora pagata |
| Scaduta | Rosso | Data scadenza superata senza pagamento registrato |
| Parziale | Ambra | Incassata in parte: la riga mostra quanto resta. Se la data è passata compare anche fra le Scadute, nell'aging e fra i solleciti, per il solo residuo |
| Pagata | Verde | Pagamento registrato (totale o parziale con saldo a zero) |
| Annullata | Grigio | Rata che non si incassa più (solo se non aveva incassi) |
💰 Importi in formato italiano (1.234,00)
Tutti gli importi nello scadenzario — sia nelle righe sia nei totali — sono visualizzati ed editati in formato italiano: punto come separatore di migliaia e virgola come separatore decimale. Es. 2.886,15 € invece di 2886.15 €.
Anche i campi editabili (importo rata in modifica inline) sono in formato italiano: alla scrittura il parser riconosce «1.234,56», «1234,56» e «1234.56». Al blur viene riformattato.
La registrazione del pagamento aggiorna lo stato della scadenza e alimenta la situazione finanziaria del soggetto.
Pagamento totale
- Dalla lista scadenze o dalla tab Scadenzario del documento, selezionare la rata da incassare.
- Premere ✓ (Segna pagata) per incassare il residuo con la data di oggi, sul conto proposto dalla modalità; oppure il pulsante Incasso parziale (payments), che apre la finestra Registra Incasso con il residuo già scritto.
- Nella finestra verificare l'importo, la data di pagamento, la modalità e il conto su cui sono entrati i soldi (vedi la sezione 10).
- Confermare. Lo stato della rata passa a Pagata.
Pagamento parziale
- Nella finestra di registrazione, modificare l'importo inserendo un valore inferiore al saldo residuo.
- Confermare il pagamento parziale. Il sistema registra l'acconto e aggiorna il saldo residuo della rata.
- La rata passa in stato Parziale fino al saldo completo: le schede in cima, l'aging e i solleciti contano il residuo, non l'importo intero.
Ogni riga nella lista scadenze mostra i seguenti pulsanti nella colonna Azioni:
| Pulsante | Icona | Azione | Quando visibile |
|---|---|---|---|
| Modifica | edit | Apre la riga in modalità editing per modificare importo, data, note. Su una rata già incassata (anche in parte) importo, data e modo dell'incasso non si cambiano: prima si annulla l'incasso. Le rate non possono superare il totale del documento | Sempre |
| Segna pagata | ✓ | Incassa il residuo con la data di oggi, sul conto proposto dalla modalità: l'incasso va in prima nota. Vale anche per le fatture di un periodo IVA chiuso: l'incasso ha la sua data | Se non già pagata |
| Incasso parziale | payments | Apre la finestra Registra Incasso: importo (anche solo una parte), data, modalità e conto | Se non già pagata |
| Sollecito email | forward_to_inbox | Invia email di sollecito al soggetto, per l'importo che resta da saldare | Se scaduta (anche parziale) |
| Incassi della rata | receipt_long | Apre l'elenco degli incassi della rata, uno per uno (sezione 10): da lì ↩ annulla un incasso solo, Annulla tutti li annulla tutti. Annullare storna l'incasso in prima nota (registrazione di storno con la data di oggi) e rimette la rata da incassare. Si rifiuta, dicendo perché, se l'incasso viene dalla riconciliazione bancaria (si scollega da Banca), se la rata è saldata solo da una nota di credito, se l'ha pagata il dipendente con una nota spese (la fattura d'acquisto nata dalla nota: rimetterla da pagare vorrebbe dire pagare il fornitore due volte; se la fattura è sbagliata la si annulla) o se il periodo IVA di oggi è chiuso. Le provvigioni «a incasso» che l'incasso aveva fatto maturare tornano sospese (quelle già in liquidazione si segnalano e non si toccano) | Se pagata o parziale |
| Elimina | delete_outline | Sposta la scadenza nel cestino (con conferma). Le rate di un documento emesso non vanno nel cestino: devono fare il totale della fattura, e per cambiarle si rigenerano dalla scheda del documento (prima si annulla l'incasso, se c'è) | Solo senza incassi, solo documenti non emessi |
La dashboard principale di NOX Enterprise Suite include la stat card Scadenze aperte che fornisce una visione immediata della situazione finanziaria.
| Indicatore | Descrizione |
|---|---|
| Totale scadenze aperte | Somma degli importi di tutte le scadenze con stato Aperta |
| Scadenze in scadenza (7 gg) | Rate in scadenza nei prossimi 7 giorni |
| Scadenze scadute | Numero e importo totale delle rate oltre la data di scadenza |
Su una rata in ritardo NOX calcola gli interessi con il tasso che dice la legge, che dipende da chi deve pagare:
| Cliente | Tasso | Periodo del tasso |
|---|---|---|
| Impresa, professionista o PA (ha la partita IVA, o in anagrafica è società, ditta, professionista, ente pubblico) | Tasso di riferimento BCE + 8 punti (D.Lgs. 231/2002, art. 5) | Semestre: vale il tasso in vigore il 1° gennaio o il 1° luglio |
| Privato (consumatore, senza partita IVA) | Saggio degli interessi legali (art. 1284 c.c.) | Anno: lo fissa ogni dicembre un decreto del MEF |
- Gli interessi corrono dal giorno dopo la scadenza fino al giorno del sollecito (nello Scadenzario: fino a oggi), su quello che restava da pagare giorno per giorno: ogni incasso parziale riduce la base dal giorno dopo. Esempio: 1.220 € scaduti il 31/7 e pagati per 620 il 9/10 fanno interessi su 1.220 fino al 9/10 e su 600 da lì in avanti. Le parti saldate da una nota di credito contano come pagate alla scadenza.
- Formula:
residuo × tasso × giorni / 365(365 anche negli anni bisestili). - Un ritardo che passa da un semestre (o da un anno) all'altro si conta a pezzi: ogni giorno con il tasso del suo periodo. Esempio: 10.000 € scaduti il 15/6/2026 e sollecitati il 15/7/2026 → 15 giorni al 10,15% e 15 giorni al 10,40% = 84,45 €.
- Fra imprese si può chiedere anche l'indennizzo forfettario di 40 € per i costi di recupero (art. 6). È un diritto, non un obbligo: nei solleciti è spento finché non lo si accende, e a un privato non si può chiedere.
Dove si vedono
- Nello Scadenzario, sotto l'importo di ogni rata in ritardo dei crediti: «+ € X mora» (o «int. legali» per i privati). Passando col mouse si vedono il tasso, i giorni e i periodi.
- Nei solleciti dal secondo livello (se il modello ha Calcola gli interessi): il valore va nel testo con le variabili
{INTERESSI},{TASSO},{TIPO_INTERESSI},{INDENNIZZO},{TOTALE}, e resta scritto nel registro dei solleciti con il tasso applicato.
I tassi: Parametri → Fatturazione → Interessi di mora
La tabella contiene i valori ufficiali (tasso BCE per semestre e saggio legale per anno, dal 2022). Quando il MEF pubblica il valore di un periodo nuovo lo si aggiunge lì, senza aspettare un aggiornamento del programma. Se per un periodo manca il tasso, NOX usa l'ultimo noto e lo segnala.
Nella stessa scheda: un tasso fisso dell'azienda (per esempio quello scritto nei propri contratti: se c'è, vale per tutti i clienti al posto di quelli di legge), i punti sopra il tasso BCE (8) e l'importo dell'indennizzo (40 €). Un'aliquota scritta su un singolo modello di sollecito vale per quel livello.
Lo scadenzario supporta la selezione multipla per l'invio massivo di solleciti di pagamento.
- Utilizzare le checkbox a sinistra di ogni riga per selezionare le scadenze da sollecitare.
- La checkbox nell'header seleziona/deseleziona tutte le scadenze visibili.
- Una barra scura appare in alto con il conteggio e il bottone Invia Solleciti.
- Il sistema invia un'email di sollecito a ogni soggetto che ha un indirizzo email o PEC.
- L'email include: numero documento, importo, data scadenza e una richiesta di pagamento.
- Al termine viene mostrato il riepilogo: N solleciti inviati, N errori.
Sollecito singolo: è anche possibile inviare un sollecito per una singola scadenza tramite il bottone dedicato nella riga.
L'aging report (invecchiamento crediti) classifica le scadenze scadute per fasce temporali. È visibile in due punti:
| Dove | Descrizione |
|---|---|
| Dashboard → Stat card "Aging scaduto" | Card ambra con barre colorate: 0-30gg (giallo), 31-60gg (arancio), 61-90gg (rosso), >90gg (rosso scuro) |
| Dashboard → Sezione "Situazione Finanziaria" | Card dettagliata con aging, scaduto da incassare, incassato nel mese |
L'aging viene calcolato automaticamente dai dati delle scadenze aperte, senza chiamate API aggiuntive.
Lo scadenzario supporta l'incasso parziale: una scadenza può essere saldata gradualmente senza doverla chiudere interamente.
- Nella riga della scadenza, premere il bottone Incasso parziale (payments): si apre la finestra Registra Incasso.
- Inserire l'importo parziale ricevuto, la data di pagamento, la modalità di incasso e il conto su cui sono entrati i soldi: la Cassa o uno dei conti correnti (quelli della Riconciliazione bancaria). Il conto si propone dalla modalità — contanti in Cassa, il resto sul primo conto corrente — e si può cambiare: l'incasso va in prima nota su quel conto.
- La data di pagamento può essere quella di oggi, una passata o una futura, purché non prima della fattura (per errore di battitura si accettano date fino alla fine dell'anno prossimo). La prima nota prende la data di quell'incasso, anche quando è parziale.
- Il sistema aggiorna il campo
importoPagatoe calcola il residuo. - La scadenza passa in stato PARZIALE fino al saldo completo.
- Quando l'importo pagato raggiunge l'importo totale, la scadenza passa a PAGATA.
Gli incassi della rata, uno per uno
Ogni incasso resta un incasso a sé, con la sua data, il suo importo e il suo conto: l'acconto e il saldo non si fondono. Il pulsante Incassi (🧾) sulla riga della scadenza li elenca, con la registrazione di prima nota di ciascuno.
- ↩ su un incasso annulla solo quello: viene stornato in prima nota con la data di oggi e la rata torna da incassare per quell'importo (PARZIALE, o da incassare se era l'unico).
- Annulla tutti storna tutti gli incassi della rata insieme.
- Gli incassi arrivati dalla Riconciliazione bancaria si annullano da lì, con «Scollega», così anche la riga dell'estratto conto torna da abbinare.
- Le rate pagate prima che gli incassi andassero in prima nota mostrano l'importo senza registrazione: quello si annulla solo con «Annulla tutti».
- Se la rata è compensata con una nota di credito, la finestra lo dice con l'importo: non è un incasso, si sistema dalla nota di credito.
- Se la rata di una fattura d'acquisto l'ha pagata un dipendente con una nota spese, la finestra lo dice: numero della nota e importo. Quella parte non va pagata al fornitore e non si annulla da qui (vorrebbe dire pagarlo due volte): se la fattura è sbagliata, la si annulla.
Anche il Cash-flow legge gli incassi uno per uno: ognuno conta nel giorno in cui è arrivato.
I dati dello scadenzario alimentano la sezione Situazione Finanziaria nella dashboard principale:
| Card | Contenuto |
|---|---|
| Fatture scadute (rossa) | Numero e importo totale delle scadenze oltre la data |
| Incassi del mese (verde) | Importo totale incassato nel mese corrente |
| Crediti in scadenza | Numero totale di scadenze aperte |
| Scaduto da incassare | Importo residuo delle scadenze scadute |
| Aging dettagliato | Breakdown per fasce 0-30gg / 31-60gg / 61-90gg / >90gg |
Le scadenze possono essere esportate tramite Impostazioni → Import / Export → Scadenzario.
- Selezionare il modulo Scadenzario.
- Premere Configura Campi per selezionare i campi da esportare (data scadenza, importo, soggetto, stato, numero documento, ecc.).
- I campi vengono caricati dal database con tutti i campi disponibili.
- Esportare in CSV o Excel.
Aggiornamento strutturale del modulo Scadenzario con tracciamento modifiche, cestino compliance-safe e operazioni massive. Il design rispetta le implicazioni contabili: le scadenze pagate non possono essere cancellate per non falsificare il registro incassi.
Soft-delete limitato alle scadenze ATTESA
L'eliminazione di una scadenza segue regole differenti in base allo stato:
- Senza incassi (ATTESA, SCADUTA, ANNULLATA): eliminazione = soft-delete (la scadenza va nel cestino, e ripristinabile) — ma solo se il documento è una bozza. Le rate di un documento emesso non si cestinano: il programma risponde «annulla l'incasso e rigenera le rate», perché una rata sparita dai crediti resterebbe da incassare in contabilità.
- Con incassi (PAGATA, PARZIALE): eliminazione non consentita (errore 409). Prima si annulla l'incasso (↩): l'incasso viene stornato in prima nota e la rata torna da incassare.
Questa distinzione protegge il registro incassi da cancellazioni improprie.
Cestino + ripristino
Un nuovo pulsante 🗑 Cestino nell'header della pagina apre la vista delle scadenze cancellate. Per ogni riga sono disponibili:
- ↺ Ripristina: la scadenza torna nella lista attiva.
- ✗ Definitivo: eliminazione fisica irreversibile (solo se la scadenza e gia cancellata e non ha incassi).
Audit log delle modifiche
Ogni modifica a una scadenza (importo, date, stato, modalita incasso, riferimento, note) viene registrata nella tabella log_modifiche_scadenze con valore precedente, valore nuovo, utente e timestamp. Accesso via GET /api/scadenzario/:id/audit-log.
Questo risponde alla domanda piu frequente: “chi ha marcato questa fattura come pagata e quando?” L'audit cattura anche i cambi di stato via bulk (marca-pagata massiva, proroga), con una entry per ogni scadenza modificata.
Timeline scadenza
L'endpoint GET /api/scadenzario/:id/timeline restituisce la cronologia completa delle modifiche in ordine decrescente.
Operazioni massive
La barra azioni che compare con la selezione multipla include ora:
- 💰 Marca pagate: incassa il residuo di ogni scadenza selezionata con data di pagamento comune, modalita e riferimento: ogni incasso va in prima nota, come quelli registrati uno per volta. Le rate che non si possono incassare (gia pagate, documento annullato, data prima del documento o oltre la fine dell'anno prossimo) restano com'erano e la risposta dice il perche di ciascuna. L'audit registra il cambio su ciascuna.
- 🔁 Proroga…: sposta la
dataScadenzadi N giorni (anche negativi) su tutte le scadenze selezionate. Utile per concordare un piano di rientro con il cliente o spostare una scadenza vicina a una festivita. - 📧 Solleciti: invariato, invia email automatiche (solo per scadenze SCADUTA).
- 🗑 Cestino: sposta nel cestino solo le scadenze senza incassi di documenti non emessi; le altre vengono ignorate e riportate come bloccate, col motivo.
Cambi di stato (singoli e in blocco)
Lo stato di una rata non si scrive: dice come stanno i soldi. Per questo ogni cambio passa da una regola sola, nella pagina, nella scheda del documento e nelle azioni in blocco:
| Verso | Che cosa succede |
|---|---|
| PAGATA | È un incasso del residuo: va in prima nota (in blocco: come “Marca pagate”) |
| ATTESA / SCADUTA | Su una rata senza incassi lo decide la data (passata = SCADUTA). Su una rata incassata vuol dire annullare l'incasso, con lo storno in prima nota: si fa una rata per volta, non in blocco |
| ANNULLATA | Solo su rate senza incassi |
| PARZIALE | Non si sceglie: la rata ci arriva con un incasso parziale |
Esempio operativo: chiudo 40 fatture di Natale
- Filtrare la lista per Stato=ATTESA e periodo dicembre.
- Spuntare Seleziona tutte in testata.
- Premere 💰 Marca pagate.
- Inserire data di pagamento 31/12/2025, modalita BONIFICO, riferimento “Saldo anno 2025”.
- Il sistema aggiorna le 40 scadenze in una sola operazione e registra 40 entry di audit.
- Se alcune sono state pagate in date diverse, annullarne l'incasso (↩) e registrarlo di nuovo con la data giusta: la data dell'incasso è già in prima nota, e cambiarla solo sulla rata le separerebbe.
• il pacchetto
FATTURAZIONE è compreso nella licenza dell’azienda
• il modulo è acceso nella Aziende & Licenze, per l’azienda e per l’utente
Spento vuol dire bloccato, non solo nascosto. Dettagli in Licenza e Aziende & Licenze.
A partire dalla versione 2.2, il modulo Scadenzario adotta lo standard di certificazione NOX con i seguenti presidi:
Cestino e soft-delete
Gli elementi cancellati non vengono rimossi fisicamente ma spostati in un cestino interno (campi cancellatoIl / cancellatoDa). Dalla toolbar il pulsante Cestino alterna tra vista attivi e vista cestino. Dal cestino è possibile:
- Ripristinare l'elemento (riportarlo nella lista attiva) — operazione riservata ad amministratori.
- Eliminare definitivamente con motivazione obbligatoria — azione irreversibile, riservata ad amministratori, tracciata nell'audit log.
Azioni massive (bulk)
È possibile selezionare più elementi con le checkbox della prima colonna. Appare una barra inferiore con le azioni disponibili: Imposta data pagamento massiva (mantiene possibilità di modifica singola). La risposta indica N operazioni riuscite / M fallite; i dettagli delle fallite compaiono nella console browser (F12).
Periodo IVA chiuso e scadenze
Le rate non sono il documento: spostare una scadenza o incassare una fattura di un periodo IVA chiuso non tocca i registri IVA, e si può fare. L'incasso porta la sua data (oggi, o quella indicata), non quella della fattura. Quello che resta protetto: le rate di un documento non superano il suo totale, e annullare un incasso è uno storno registrato in prima nota con la data di oggi — se il periodo IVA di oggi è chiuso, lo storno si rifiuta.
Esercizio contabile chiuso. In un esercizio chiuso (Contabilità › Esercizi contabili) la prima nota non riceve più scritture con data in quell'anno, nemmeno quelle automatiche. Per questo un incasso con una data di quell'anno non si registra: la finestra «Registra Incasso», il ✓, «Marca pagata» in blocco e l'abbinamento dalla banca lo rifiutano con il messaggio «l'esercizio … è chiuso: riaprilo o usa una data dell'anno aperto», e la rata resta com'era. Anche lo storno di un annullo datato in un anno chiuso si rifiuta. L'incasso si registra con una data dell'esercizio aperto, oppure l'amministratore riapre l'anno (col motivo) prima di registrarlo.
Storico modifiche (audit log)
L'icona history nelle azioni di riga apre un modal con la storia completa delle modifiche: data, campo, valore precedente, valore nuovo, operatore, eventuale motivazione. I record di audit non sono modificabili né eliminabili via UI. Conservazione: indefinita (art. 2220 c.c. — 10 anni minimo).
Mascheramento dati sensibili (GDPR art. 32)
Se i campi modificati contengono dati sensibili (IBAN, Codice Fiscale, Partita IVA, password/token), l'audit log salva il valore mascherato anziché in chiaro:
| Campo | Esempio originale | Nel log |
|---|---|---|
| IBAN | IT60X0542811101000000123456 | IT60****3456 |
| Codice Fiscale (PF) | RSSMRA80A01H501Z | RSSMRA****501Z |
| Partita IVA | 12345678901 | 123****901 |
| Password / token | (qualsiasi) | ***REDACTED*** |
Timeline aggregata
Per ciascun elemento è disponibile una vista Timeline che aggrega in ordine cronologico audit, eventi del ciclo di vita ed eventuali entità collegate (es. documenti, movimenti, storni).
RBAC uniforme
Tutte le azioni distruttive o massive (soft-delete, ripristino, eliminazione definitiva, bulk, storno) richiedono il ruolo ADMIN o superiore. Gli operatori possono continuare a creare / modificare / consultare secondo le proprie abilitazioni.
Acconto e saldo
Un piano con acconto e saldo (per esempio 30% alla consegna e 70% a 60 giorni) si fa con una condizione di pagamento a due rate (sezione 3), oppure correggendo le rate dalla scheda del documento. Non c'è una funzione a parte che rifaccia il piano: quella che c'era cancellava anche le rate già incassate ed è stata tolta.
Solleciti automatici + interessi legali (v 2.2)
Il sistema gestisce 4 livelli di sollecito con template personalizzabili: 1° cortese (+7 gg), 2° (+30 gg), 3° ultimo avviso (+60 gg), 4° diffida ex art. 1454 c.c. (+90 gg). A ogni livello può essere associato il calcolo automatico degli interessi: fra imprese quelli di mora (tasso BCE del semestre + 8 punti), verso i privati quelli legali — vedi la sezione 7.
Sostituzioni di variabili nel template
Oggetto e corpo supportano le seguenti variabili che vengono sostituite al momento dell'invio:
| Variabile | Contenuto |
|---|---|
{NUMERO} | Numero documento |
{ANNO} | Anno della data documento |
{DATA_DOC} | Data emissione (formato italiano) |
{DATA_SCAD} | Data scadenza rata |
{IMPORTO} | Importo residuo non pagato |
{INTERESSI} | Interessi calcolati sui giorni di ritardo (0,00 se il modello non li calcola) |
{TASSO} | Il tasso applicato (più tassi se il ritardo passa da un periodo all'altro) |
{TIPO_INTERESSI} | «interessi di mora (D.Lgs. 231/2002)» o «interessi legali (art. 1284 c.c.)» |
{INDENNIZZO} | L'indennizzo forfettario richiesto (40,00 o 0,00). Se il modello non lo nomina e lo si chiede, NOX aggiunge una frase in fondo al testo |
{TOTALE} | Residuo + interessi + indennizzo |
{SOGGETTO} | Ragione sociale o nome + cognome |
{GIORNI_RITARDO} | Giorni di ritardo al momento dell'invio |
Formula degli interessi
interessi = Σ per periodo (da pagare nel periodo × tasso del periodo × giorni del periodo) / (365 × 100)
Un periodo finisce al cambio di semestre (o di anno) e al giorno di ogni incasso parziale.
I modelli di partenza dei livelli 2, 3 e 4 dicono quali interessi e a che tasso ({TIPO_INTERESSI} al tasso del {TASSO}): nelle aziende che non li avevano cambiati il testo è stato aggiornato da solo; quelli personalizzati sono rimasti come sono, e le variabili si possono aggiungere a mano.
Se il template ha calcolaInteressiLegali=false, viene stampato € 0,00. Un'aliquota sul template (aliquotaInteressi) vale per quel livello; senza, vale il tasso fisso dell'azienda se c'è, altrimenti quello di legge. L'indennizzo di 40 € si chiede col campo indennizzo: true (solo clienti impresa: per un privato la richiesta si rifiuta).
Tabelle e endpoint
- Tabelle:
template_sollecito(4 livelli seed) +solleciti_documento(log invii) GET /api/fatturazione/solleciti/templates— elenco template attiviPUT /api/fatturazione/solleciti/templates/:id[ADMIN] — modifica oggetto/corpo/giorni/aliquotaPOST /api/fatturazione/solleciti/invia/:docIdbody{livello, scadenzaId?, destinatarioOverride?}— genera sollecito, sostituisce variabili, registra log; sescadenzaIdnon passato, usa la prima scadenza in stato ATTESAGET /api/fatturazione/solleciti/log/:docId— storico solleciti inviati al documentoGET /api/fatturazione/solleciti/scaduti?giorni=N— cruscotto operativo di tutte le scadenze pendenti oltre N giorni con livello ultimo sollecito e dati soggetto
Invio SMTP reale solleciti (v 2.2)
Sostituisce la modalità log-only della wave 7 con invio effettivo via nodemailer. La configurazione SMTP è letta dalla tabella parametri (campi smtpHost, smtpPort, smtpUser, smtpPass, smtpSecure, smtpFrom) e deve essere testata (smtpTestato = true) prima dell'uso effettivo (bandiera di sicurezza).
Endpoint
POST /api/fatturazione/solleciti-smtp/invia/:docIdbody{livello, scadenzaId?, destinatarioOverride?, allegaPdf?}— invio singolo. Ritorna{ok, esito, destinatario, importoScaduto, interessi, messageId}.POST /api/fatturazione/solleciti-smtp/invia-bulk[ADMIN] body{livello=1, giorniRitardoMinimo=7, limiteInvii=50}— invio massivo a tutte le scadenze candidate. Esclude automaticamente i destinatari già sollecitati al livello ≥ N.
Tracciamento doppio
Ogni invio SMTP riuscito/fallito viene loggato in due tabelle:
solleciti_documento— log dettagliato del sollecito con livello, corpo, interessi, destinatario, esitolog_invio_email_documento— log generale email (eventoAUTO_SOLLECITO) per riepilogo storico
smtpTestato è falso, l'endpoint restituisce errore "SMTP non configurato o non testato". È richiesto che l'ADMIN abbia eseguito prima POST /api/smtp/test verificando che le credenziali funzionino. Questa è una misura di sicurezza per evitare l'invio di email con credenziali non valide e possibile blocco dell'account mittente.Le scadenze ora supportano incassi multipli. Se un cliente paga solo una parte (es. 40% subito, 30% a 30gg, 30% a 60gg), puoi registrare ogni incasso separatamente e la scadenza tiene traccia del residuo.
Quando registri un incasso, il dialog mostra:
- Il residuo corrente a fianco del label «Importo Incassato»
- Quick-button: «Tutto residuo» / «Metà» / «1/3»
- Banner ambra «Pagamento parziale: dopo questo incasso resteranno X €. La scadenza passerà a stato PARZIALE» se l'importo è minore del residuo
Stati possibili della scadenza:
- ATTESA: nessun pagamento
- PARZIALE: incassi parziali registrati (campo
importoPagato<importototale) - PAGATA: completamente saldata
- SCADUTA: oltre la
dataScadenzae non pagata
Spese d'incasso: in fattura, non solo nelle rate
Quando una Condizione di Pagamento ha attivi i flag «Includi spese bancarie» e/o «Includi bolli su tratta» (vedi Manuale Tabelle), le spese che si addebitano al cliente sono una riga della fattura. Le spese d'incasso fanno parte della base imponibile (art. 13 DPR 633/72); l'art. 15 esclude solo le somme anticipate in nome e per conto del cliente, e le spese di banca non lo sono.
- 🏦 «Spese d'incasso»: le spese banca dei Parametri Azienda per ogni rata (3 rate × 2,50 = 7,50), con l'IVA dell'operazione principale — l'aliquota prevalente delle altre righe. Se la fattura è tutta esente o non imponibile (anche con lettera d'intento) la riga prende la stessa natura: la spesa accessoria segue l'operazione (art. 12).
- 📋 «Bolli su effetti»: il bollo che si recupera dal cliente è un'imposta, non un corrispettivo: fuori campo IVA, natura N1.
- La riga la mette la scheda del documento quando si sceglie la condizione di pagamento (su una bozza); l'operatore può correggerla o toglierla, e tolta non ricompare finché non si sceglie di nuovo la condizione.
- Le rate si fanno sul totale della fattura: nessuna spesa viene più aggiunta alle sole rate (era la vecchia modalità «in scadenzario», che faceva pagare al cliente più di quanto fatturato).
- I documenti già emessi restano com'erano: se le loro rate portano spese aggiunte (nota «+ spese € X.XX») la scheda lo segnala.
Validazione «Scadenzario disallineato»
Quando si apre un documento in modifica, NOX verifica che la somma degli importi delle rate corrisponda al totale documento. Il messaggio di errore «Scadenzario disallineato: totale scadenze X € ≠ totale documento Y €. Rigenerare le scadenze.» è ora più preciso:
- Le spese banca/bolli per rata (note «+ spese € X.XX») vengono scorporate dalla somma scadenze prima del confronto, evitando falsi allarmi quando la condizione di pagamento ha
includeSpeseBanca/includeSpeseBolliattivi e modalità IN_SCADENZARIO. - Se persiste un disallineamento reale, il messaggio cita esplicitamente l'importo scorporato: «... (escluse € X.XX di spese banca/bolli per rata) ...».
In caso di disallineamento reale, vedi sotto il banner di disallineamento con le 3 azioni dedicate.
Le rate si calcolano su quello che il cliente pagherà davvero. Con la ritenuta d'acconto il cliente trattiene la ritenuta e la versa lui; con lo split payment l'IVA la versa la pubblica amministrazione. In entrambi i casi le rate — e l'anteprima che vedi mentre compili — si fanno sul netto a pagare, non sul totale della fattura.
Le note di credito compensano. Una nota di credito ha una rata sola, alla sua data. Se si riferisce a una fattura (creata con «Crea nota di credito», o con numero e data della fattura originale) ne scala le rate aperte partendo dall'ultima; quello che la fattura non assorbe resta da rimborsare. Vale per le note emesse ai clienti e per quelle ricevute dai fornitori (TD04/TD08 su una fattura di acquisto, anche importate dallo SdI): la nota del fornitore scala il debito verso di lui, lo Scadenzario la toglie dal «da pagare», e se il fornitore ci rimborsa il bonifico in entrata si abbina alla rata della nota (in prima nota: Dare banca, Avere debiti verso fornitori, causale RIMBORSO). La compensazione non scrive in prima nota: le due registrazioni (fattura e nota) si pareggiano fra loro.
Segnare una rata pagata dallo scadenzario del documento scrive l'incasso in prima nota, come dalla pagina Scadenzario.