Calendar Year e Fiscal Year in Microsoft Access

Gestire Calendar Year e Fiscal Year in Microsoft Access è un’operazione molto semplice. E’ sufficiente una tabella di appoggio in cui specificare pochi dati.

Ho una tabella con i dati delle fatture:

Fatturato

Mi hanno chiesto di aggregare I dati del fatturato per anno-mese.

Di per sé sarebbe sufficiente una query di raggruppamento che aggrega per anno e mese data fattura e poi effettua la somma dell’importo fattura.

Il problema è che nell’azienda l’anno fiscale non coincide con l’anno di calendario. L’anno fiscale inizia ad aprile e termina a marzo.

Pertanto devo assegnare correttamente l’anno fiscale di pertinenza di una fattura.

Esempio: una fattura di aprile 2019 appartiene all’anno fiscale 2019. Una fattura di febbraio 2019, invece, appartiene all’anno fiscale 2018, perché l’anno fiscale 2019 inizia, nel nostro esempio, ad aprile.

Per rendere l’assegnazione molto semplice ci viene in aiuto la tabella lkpMesi:

CalendarYearFiscalYear

Il campo FiscalMonth indica a quale mese dell’anno fiscale corrisponde il mese di gennaio. Se nel primo record leggo 10, significa che il mese di gennaio di calendario corrisponde al decimo mese nell’anno fiscale.

Dal momento che l’anno fiscale della nostra azienda inizia ad aprile, il mese di aprile di calendario corrisponde al FiscalMonth 1.

Il campo DeltaYear è fondamentale per assegnare correttamente l’anno fiscale. Per i mesi da aprile a dicembre il DeltaYear è 0, ossia l’anno fiscale per questi mesi coincide con l’anno di calendario. Per gennaio, febbraio e marzo, invece, il DeltaYear = -1. Infatti se una fattura è di gennaio, appartiene in realtà all’anno fiscale precedente.

Ora creo una query selFatture che mi estrae CalendarYear (anno di calendario) e CalendarMonth (mese di calendario) dalla DataFattura:

CY_CM_Fatture

CalendarYear: Year([DataFattura])

CalendarMonth: Month([DataFattura])

CY_CM_FattureOutpout

Ora si tratta di unire la tabella di appoggio lkpMesi e la query selFatture:

CYCMFYFM

FiscalYear: [CalendarYear]+[DeltaYear]

In tal modo, aggiungo all’anno di calendario il delta necessario. Dato che il delta era negativo in tabella lkpMesi, in realtà sto sottraendo il valore dall’anno di calendario e così ottengo il risultato voluto:

FYFM

Ora devo creare la query finale che raggruppa per anno mese fiscale e calcola il totale dell’Importo, ordinando i risultati sul FiscalMonth. In tal modo le righe sono ordinate da aprile a marzo correttamente:

FYFinalOutput

AmountByFiscalYearMonth

Con poche modifiche si potrebbe anche aggiungere alla tabella lkpMesi un campo con indicazione del Quarter di appartenenza e poter così aggregare i dati del fatturato per quarter fiscale.