Come gestire i giorni lavorativi da calendario personalizzato

Salve lettore, in questo articolo voglio proporti una possibile soluzione su un annoso problema che, senza una piccola personalizzazione, non potresti gestire in Business Central.

Mi riferisco all’annoso problema del calcolo delle date con i giorni lavorativi. Normalmente se dobbiamo calcolare delle date scadenza, ad esempio, possiamo usare la funzione CALCDATE con una formula di data pre-impostata. Tale calcolo, però, non tiene conto dei giorni che l’azienda dichiara come non lavorativi.

Infatti, a parte le festività riconosciute a livello internazionale, i vari patroni, giorni di chiusura per ferie o altro, non vengono considerati dai normali calcoli di data. Possiamo, però, scrivere una funzione per gestirli, avvalendoci dei calendari base e personalizzandoli con le festività della nostra azienda.

Innanzitutto, verifichiamo sulla pagina “Informazioni società” se è presente un calendario base, se non è presente ne creiamo uno andando sulla pagina “Calendari base”.

Per personalizzare un calendario è sufficiente cliccare su Azioni -> Funzioni -> Mantenere variazioni calendario base dalla pagina del calendario base. Si aprirà una pagina come la seguente immagine, dove andremo ad indicare la ricorrenza settimanale (ad esempio per i sabati e le domeniche) e le ricorrenze annuali (ad esempio in Italia si festeggia l’1 novembre e l’8 dicembre).

Fatto questo doveroso setup, se non lo avessimo già sulla nostra installazione, andiamo a costruire la funzione che ci restituisce la data corretta partendo da una data e dandogli i giorni lavorativi su cui lavorare. Ho creato una codeunit con la funzione GetDateFromWDays

Con l’avvento di Business Central è presente la funzione della codeunit “Calendar Management” che si chiama IsNonworkingDay che vuole come parametro la data che stiamo leggendo e le personalizzazioni del calendario memorizzate nella tabella “Customized Calendar Change”. L’idea di fondo è molto semplice: conteggiare i giorni dei giorni lavorativi fino ad arrivare al numero indicato dal parametro WDays. La funzione è chiamata dentro ad una pagina che ha al suo interno data di inizio, nr. giorni lavorativi e risultato finale. Nell’immagine che segue un dettaglio sulla chiamata della funzione sopra citata.

A questo punto siamo pronti per eseguire la nostra app. Mettiamo come data di partenza il 28/10/2022 e mettiamo 4 giorni lavorativi. Se osservi la seconda immagine del post, vedrai che ci sono in mezzo un weekend e anche una festività personalizzata. Ci aspettiamo, quindi, come risultato, che i 4 giorni lavorativi partendo dal 28/10/2022 sia il 04/11/2022.

Ed infatti la funzione ha lavorato bene. Con questa personalizzazione siamo in grado di gestire i giorni lavorativi da calendario personalizzato. Spero che questo articolo ti abbia dato uno strumento ulteriore per lo sviluppo delle tue app in Business Central.

Lascia una risposta