header.dates
Date dell'header: StartDate, EndDate, FiscalYear, DateCreated
Invarianti temporali che l'AT impone sul blocco Header del SAF-T.
Cosa controlla l'AT
Il blocco Header del file SAF-T descrive il periodo coperto dal file e quando è stato generato. L'AT impone alcune invarianti su queste date:
| Campo | Vincolo |
|---|---|
StartDate | La prima data coperta dal file. |
EndDate | Non può essere precedente a StartDate (un periodo di un solo giorno è valido). |
FiscalYear | L'anno di StartDate, oppure l'anno precedente quando l'esercizio non coincide con l'anno solare (ad esempio da febbraio a gennaio). |
DateCreated | Dovrebbe essere uguale o successiva a EndDate: non puoi generare un file prima che termini il periodo coperto. |
Un esempio corretto
Il file mensile di fatturazione di settembre 2026, generato il 3 ottobre da un'azienda il cui esercizio coincide con l'anno solare:
<Header>
...
<FiscalYear>2026</FiscalYear>
<StartDate>2026-09-01</StartDate>
<EndDate>2026-09-30</EndDate>
...
<DateCreated>2026-10-03</DateCreated>
...
</Header>
Tutte le date usano il formato YYYY-MM-DD. Per un'azienda il cui esercizio va da aprile a marzo, il file di gennaio 2027 riporterebbe comunque FiscalYear 2026, e SAFTCheck lo segnala come informazione anziché come errore.
Le date dell'header definiscono anche il periodo in cui deve ricadere ogni documento del file: vedi documenti fuori dal periodo dell'header.
Sotto-regole applicate da SAFTCheck
header.dates.range: scatta quandoStartDateè successiva aEndDate.header.dates.fiscal_year_previous:FiscalYearè l'anno precedente a quello diStartDate: corretto per un esercizio non solare, un errore negli altri casi (info).header.dates.fiscal_year_mismatch:FiscalYearè qualsiasi altro anno (warning).header.dates.created_before_end: scatta quandoDateCreated < EndDate(warning; l'AT può comunque accettare).header.dates.future_end: scatta quandoEndDateè nel futuro (warning).
Errori comuni
- Cambio anno. Un file di gennaio con
FiscalYear=2025maStartDate=2026-01-01, di un'azienda il cui esercizio coincide con l'anno solare. L'ERP ha cambiato anno su un campo ma non sull'altro. - Unità di periodo sbagliata. Inviare un trimestre quando l'AT si aspetta un mese, o viceversa. Le date dichiarano l'unità; il disallineamento con la finestra di invio è un controllo separato lato AT.
- DateCreated impostata durante i test. I file esportati durante la configurazione dell'ERP riportano talvolta una
DateCreatednel passato o nel futuro rispetto al momento reale di generazione.
Come correggere
- Controlla la selezione del periodo di esportazione nell'ERP: la maggior parte dei problemi viene dallo scegliere il mese di inizio/fine sbagliato.
- Se le date sono corrette e solo FiscalYear è errato, modifica l'impostazione dell'anno fiscale dell'azienda nell'ERP e riesporta. Per invii occasionali, l'editor inline può correggere
FiscalYeardirettamente nella pagina del risultato della validazione. - Se
DateCreatedè nel futuro o prima diEndDate, sistema l'orologio di sistema dell'ERP e riesporta, oppure usa l'editor inline per il file immediato.
L'anomalia combinata header.dates.range (StartDate vs EndDate) non è modificabile come singolo campo: correggi StartDate o EndDate separatamente con l'editor inline, oppure riesporta.
Correlato
- Editor inline: correggi FiscalYear / EndDate / DateCreated sul posto.
- Documenti fuori dal periodo dell'header
- Scadenza di invio del SAF-T (PT)
- SAF-T in Portogallo: cos'è, chi lo invia, scadenze e rifiuti