◆ Autofatturiamo · Verifica fiscale

Controllo XML autofatture — Luglio 2026

Come sono stati generati gli XML della cartella AUTOFATTURE_2026-07: date, autofatture negative (storni) e distinzione tra nuova modifica e fallback.

Cartella analizzata: ~/Downloads/AUTOFATTURE_2026-07 · 764 file XML (tutti TD17) · logica di riferimento: backend/console/utils/self_invoices.py

Esito: le autofatture negative usano tutte la nuova modifica

Tutte le 49 autofatture negative reali (AFN / storni) referenziano correttamente l'autofattura originale nel formato AF/AAAA/MM/NNNN. Nessuna usa il fallback (che avrebbe messo il codice della fattura Airbnb e generato un alert Sentry). Un solo XML negativo non è uno storno ma una nota di credito Airbnb gestita dal flusso standard.

764
XML totali (tutti TD17)
714
Autofatture positive (AF)
49
Storni negativi (AFN)
49 / 49
AFN con nuova modifica
0
AFN in fallback

1 · Cosa ho controllato

Due dimensioni indipendenti, spesso confuse tra loro.

A · Documento collegato
DatiFattureCollegate/IdDocumento
Cosa scriviamo come riferimento nello storno: l'autofattura originale (nuova modifica, es. AF/2026/06/0005) oppure il numero della fattura Airbnb (fallback, es. 85007534IT5804914).
B · Data del documento
DatiGeneraliDocumento/Data
Da dove arriva la data. A seconda dei dati disponibili può venire dalla fattura Airbnb/CSV, dalla data delle email, dalla data di prenotazione o dalla data di emissione. È il punto in cui potremmo non avere tutti i dati.

2 · Come il codice imposta le DATE

La fonte della data cambia in base al tipo di documento e ai dati che abbiamo. Questa è la parte da tenere d'occhio in fase di verifica.

Autofattura positiva (AF) — cascata _reference_date_for_communication()

La data è la prima disponibile in questa scala di priorità (righe 21-50):

1 · Data fattura Airbnb
airbnb_invoice.issue_date
2 · Data email
ultima CONFIRMED/MODIFIED
3 · Data prenotazione
reservation.booking_date
4 · Data emissione

È esattamente il caso «a volte usiamo quella del CSV/fattura, a volte la data delle mail»: se la fattura Airbnb (o il CSV) è stata acquisita si usa la sua data; altrimenti si ripiega sulla data dell'email, poi sulla prenotazione, poi sull'emissione.

Autofattura negativa (AFN / storno)

Qui la logica è diversa e dipende dal fatto che si trovi la comunicazione originale da stornare (_build_afn_context, righe 154-184):

CasoIdDocumento (collegata)Data (documento & collegata)
AFN · precedente TROVATA
nuova modifica
AF/AAAA/MM/NNNN
(dall'autofattura originale)
Data di emissione dell'autofattura originale stornata
localtime(originale.emission_date)
AFN · precedente NON trovata
fallback + alert Sentry
numero fattura Airbnb
(es. 85007534IT5804914)
Cascata _reference_date_for_communication() sulla comunicazione stessa (come le AF)

Punto da verificare insieme. Per gli storni «nuova modifica» la data della collegata è la data di emissione dell'autofattura originale, non la data di competenza (fattura/email) con cui era stata emessa. In tutti i 49 file la Data del documento coincide con la Data della collegata (sono lo stesso valore), quindi sono internamente coerenti; ma per confermare che sia la data "giusta" serve confrontarla con l'autofattura originale a DB. Questo è il caso in cui «potremmo non avere tutti i dati necessari» dall'XML da solo.

3 · Autofatture negative — dettaglio riga per riga

Tutti i 50 XML con importo totale negativo. Colonna «Meccanismo» = come è stata costruita la collegata; «Data doc = coll» = coerenza tra data del documento e data della fattura collegata.

✓ nuova modifica collega l'AF originale ⚠ fallback usa il codice fattura Airbnb AF · nota di credito non è uno storno
IDNumeroTipoTot. €Collegata (IdDocumento)Data docData coll.=Meccanismo
06955 AFN/2026/07/0001 AFN · storno -407.66 AF/2026/06/0005 2026-06-04 2026-06-04 ✓ nuova modifica
06962 AFN/2026/07/0002 AFN · storno -98.91 AF/2026/06/0021 2026-06-04 2026-06-04 ✓ nuova modifica
07038 AFN/2026/07/0001 AFN · storno -244.62 AF/2026/06/0009 2026-06-01 2026-06-01 ✓ nuova modifica
07055 AFN/2026/07/0002 AFN · storno -377.64 AF/2026/06/0008 2026-06-01 2026-06-01 ✓ nuova modifica
07058 AFN/2026/07/0001 AFN · storno -341.00 AF/2026/06/0005 2026-06-02 2026-06-02 ✓ nuova modifica
07077 AFN/2026/07/0001 AFN · storno -90.77 AF/2026/05/0010 2026-05-01 2026-05-01 ✓ nuova modifica
07096 AFN/2026/07/0001 AFN · storno -193.26 AF/2026/03/0013 2026-03-02 2026-03-02 ✓ nuova modifica
07116 AFN/2026/07/0002 AFN · storno -473.13 AF/2026/05/0005 2026-05-05 2026-05-05 ✓ nuova modifica
07186 AFN/2026/07/0001 AFN · storno -94.70 AF/2026/06/0160 2026-06-10 2026-06-10 ✓ nuova modifica
07187 AFN/2026/07/0002 AFN · storno -145.91 AF/2026/06/0137 2026-06-10 2026-06-10 ✓ nuova modifica
07190 AFN/2026/07/0003 AFN · storno -146.94 AF/2026/06/0076 2026-06-08 2026-06-08 ✓ nuova modifica
07207 AFN/2026/07/0004 AFN · storno -240.40 AF/2026/06/0194 2026-06-10 2026-06-10 ✓ nuova modifica
07230 AFN/2026/07/0005 AFN · storno -292.73 AF/2026/06/0232 2026-06-10 2026-06-10 ✓ nuova modifica
07240 AFN/2026/07/0006 AFN · storno -167.10 AF/2026/06/0310 2026-06-10 2026-06-10 ✓ nuova modifica
07242 AFN/2026/07/0007 AFN · storno -107.20 AF/2026/06/0086 2026-06-08 2026-06-08 ✓ nuova modifica
07259 AFN/2026/07/0008 AFN · storno -432.31 AF/2026/06/0043 2026-06-08 2026-06-08 ✓ nuova modifica
07268 AFN/2026/07/0009 AFN · storno -108.92 AF/2026/05/0080 2026-05-05 2026-05-05 ✓ nuova modifica
07276 AFN/2026/07/0010 AFN · storno -192.32 AF/2026/05/0067 2026-05-05 2026-05-05 ✓ nuova modifica
07297 AFN/2026/07/0001 AFN · storno -150.34 AF/2026/06/0012 2026-06-10 2026-06-10 ✓ nuova modifica
07298 AFN/2026/07/0002 AFN · storno -329.79 AF/2026/06/0004 2026-06-01 2026-06-01 ✓ nuova modifica
07402 AFN/2026/07/0001 AFN · storno -92.66 AF/2026/05/0001 2026-05-04 2026-05-04 ✓ nuova modifica
07403 AFN/2026/07/0002 AFN · storno -167.92 AF/2026/03/0008 2026-03-03 2026-03-03 ✓ nuova modifica
07465 AFN/2026/07/0001 AFN · storno -119.13 AF/2026/01/0017 2026-01-12 2026-01-12 ✓ nuova modifica
07466 AFN/2026/07/0002 AFN · storno -79.31 AF/2026/06/0044 2026-06-08 2026-06-08 ✓ nuova modifica
07481 AFN/2026/07/0003 AFN · storno -150.62 AF/2026/06/0177 2026-06-10 2026-06-10 ✓ nuova modifica
07482 AF/2026/07/0072 AF · nota di credito -150.62 58458179IT3819155CN1 2026-06-13 2026-06-13 flusso AF standard
07495 AFN/2026/07/0004 AFN · storno -53.52 AF/2026/06/0276 2026-06-10 2026-06-10 ✓ nuova modifica
07514 AFN/2026/07/0005 AFN · storno -157.15 AF/2026/02/0119 2026-02-10 2026-02-10 ✓ nuova modifica
07539 AFN/2026/07/0006 AFN · storno -193.25 AF/2026/01/0116 2026-01-12 2026-01-12 ✓ nuova modifica
07555 AFN/2026/07/0007 AFN · storno -48.98 AF/2026/06/0318 2026-06-10 2026-06-10 ✓ nuova modifica
07558 AFN/2026/07/0008 AFN · storno -47.19 AF/2026/06/0061 2026-06-08 2026-06-08 ✓ nuova modifica
07613 AFN/2026/07/0009 AFN · storno -156.99 AF/2026/06/0003 2026-06-08 2026-06-08 ✓ nuova modifica
07635 AFN/2026/07/0010 AFN · storno -164.69 AF/2026/06/0336 2026-06-10 2026-06-10 ✓ nuova modifica
07636 AFN/2026/07/0011 AFN · storno -188.66 AF/2026/06/0179 2026-06-10 2026-06-10 ✓ nuova modifica
07637 AFN/2026/07/0012 AFN · storno -43.94 AF/2026/05/0069 2026-05-20 2026-05-20 ✓ nuova modifica
07638 AFN/2026/07/0013 AFN · storno -31.74 AF/2026/06/0333 2026-06-10 2026-06-10 ✓ nuova modifica
07639 AFN/2026/07/0014 AFN · storno -57.17 AF/2026/06/0261 2026-06-10 2026-06-10 ✓ nuova modifica
07641 AFN/2026/07/0015 AFN · storno -32.28 AF/2026/06/0356 2026-06-10 2026-06-10 ✓ nuova modifica
07671 AFN/2026/07/0001 AFN · storno -57.68 AF/2026/04/0003 2026-04-09 2026-04-09 ✓ nuova modifica
07672 AFN/2026/07/0002 AFN · storno -47.09 AF/2026/05/0049 2026-05-11 2026-05-11 ✓ nuova modifica
07673 AFN/2026/07/0003 AFN · storno -47.47 AF/2026/06/0111 2026-06-11 2026-06-11 ✓ nuova modifica
07676 AFN/2026/07/0004 AFN · storno -60.51 AF/2026/06/0110 2026-06-11 2026-06-11 ✓ nuova modifica
07681 AFN/2026/07/0005 AFN · storno -52.57 AF/2026/06/0017 2026-06-10 2026-06-10 ✓ nuova modifica
07687 AFN/2026/07/0006 AFN · storno -145.61 AF/2026/06/0141 2026-06-11 2026-06-11 ✓ nuova modifica
07692 AFN/2026/07/0007 AFN · storno -32.53 AF/2026/06/0083 2026-06-11 2026-06-11 ✓ nuova modifica
07702 AFN/2026/07/0008 AFN · storno -59.76 AF/2026/05/0102 2026-05-11 2026-05-11 ✓ nuova modifica
07703 AFN/2026/07/0009 AFN · storno -39.71 AF/2026/06/0086 2026-06-11 2026-06-11 ✓ nuova modifica
07709 AFN/2026/07/0010 AFN · storno -49.74 AF/2026/05/0009 2026-05-11 2026-05-11 ✓ nuova modifica
07711 AFN/2026/07/0011 AFN · storno -63.16 AF/2026/05/0045 2026-05-11 2026-05-11 ✓ nuova modifica
07712 AFN/2026/07/0012 AFN · storno -63.16 AF/2026/06/0055 2026-06-10 2026-06-10 ✓ nuova modifica

4 · Distribuzione delle date documento

Le date non sono tutte di luglio: con la nuova logica la Data segue la competenza della prenotazione/fattura originale, non il mese di emissione. La massa è giugno 2026, con code su mesi precedenti (prenotazioni vecchie lavorate ora).

2026-01
2
2026-02
1
2026-03
2
2026-04
1
2026-05
11
2026-06
746
2026-07
1

5 · Il caso particolare 07482

L'unico XML negativo che non è uno storno.

Ha numero AF/2026/07/0072 (prefisso AF, non AFN) e importo −150,62 €. È negativo perché la fattura Airbnb sottostante è una nota di credito: AIUC-58458179-IT-3819155-CN-1 (il suffisso CN-1 = Credit Note). Passa quindi dal flusso AF standard — che referenzia sempre il numero fattura Airbnb — ed è corretto: non è un fallback dello storno, è proprio un'altra fattispecie.

6 · Come verificare (per il collega)

  1. Nuova modifica vs fallback — apri lo storno e guarda <DatiFattureCollegate><IdDocumento>. Se è AF/AAAA/MM/NNNN → nuova modifica ✓. Se è un codice tipo 85007534IT5804914 → fallback (da controllare, e a DB dovrebbe esserci un alert Sentry).
  2. Coerenza date interne — nello stesso XML, DatiGeneraliDocumento/Data deve essere uguale a DatiFattureCollegate/Data. Nella tabella sopra è la colonna «=».
  3. Fonte della data (serve accesso ai dati origine) — per una AF positiva la data dovrebbe essere quella della fattura Airbnb/CSV; se manca, quella dell'ultima email CONFIRMED/MODIFIED; poi la prenotazione. Per confermarlo serve incrociare con la fattura PDF / le email / il DB, non basta l'XML.
  4. Storni «nuova modifica» — per confermare la data, ritrova a DB l'autofattura originale AF/AAAA/MM/NNNN indicata nella collegata e verifica che la data usata (emissione dell'originale) sia quella attesa.

Riferimenti codice. backend/console/utils/self_invoices.py_reference_date_for_communication() (date AF, cascata), create_block_dati_fatture_collegate() (collegata + ramo fallback), _build_afn_context() (logica storni).

Report generato automaticamente dall'analisi dei 764 XML · Autofatturiamo