diff --git a/modules/dashboard/edit.php b/modules/dashboard/edit.php
index f2c33fa75..34ae20dff 100755
--- a/modules/dashboard/edit.php
+++ b/modules/dashboard/edit.php
@@ -285,14 +285,26 @@ if ($total == 0) {
 </div>
 <br>
 <?php
-$qp = 'SELECT MONTH(data_richiesta) AS mese, YEAR(data_richiesta) AS anno FROM (co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) ) AND idintervento IS NULL
+$query_da_programmare = 'SELECT data_richiesta AS data FROM co_promemoria
+    INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id
+    INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica
+WHERE
+    idcontratto IN (SELECT id FROM co_contratti WHERE idstato IN (SELECT id FROM co_staticontratti WHERE is_pianificabile = 1))
+    AND idintervento IS NULL
 
-UNION SELECT MONTH(data_scadenza) AS mese, YEAR(data_scadenza) AS anno FROM (co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id) INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica WHERE idcontratto IN( SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) ) AND idintervento IS NULL
+UNION SELECT data_scadenza AS data FROM co_ordiniservizio
+    INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id
+    INNER JOIN an_anagrafiche ON co_contratti.idanagrafica=an_anagrafiche.idanagrafica
+WHERE
+    idcontratto IN (SELECT id FROM co_contratti WHERE idstato IN (SELECT id FROM co_staticontratti WHERE is_pianificabile = 1))
+    AND idintervento IS NULL
 
-UNION SELECT MONTH(IF(data_scadenza IS NULL, data_richiesta, data_scadenza)) AS mese, YEAR(IF(data_scadenza IS NULL, data_richiesta, data_scadenza)) AS anno FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE (SELECT COUNT(*) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id) = 0 ORDER BY anno,mese';
-$rsp = $dbo->fetchArray($qp);
+UNION SELECT IF(data_scadenza IS NULL, data_richiesta, data_scadenza) AS data FROM in_interventi
+    INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica
+WHERE (SELECT COUNT(*) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id) = 0';
+$risultati_da_programmare = $dbo->fetchArray($query_da_programmare);
 
-if (!empty($rsp)) {
+if (!empty($risultati_da_programmare)) {
     echo '
 <div class="row">
     <div class="col-md-10">';
@@ -301,7 +313,7 @@ if (!empty($rsp)) {
 echo '
 <div id="calendar"></div>';
 
-if (!empty($rsp)) {
+if (!empty($risultati_da_programmare)) {
     echo '
     </div>
 
@@ -309,49 +321,47 @@ if (!empty($rsp)) {
         <h4>'.tr('Promemoria da pianificare').'</h4>';
 
     // Controllo pianificazioni mesi precedenti
-    $qp_old = 'SELECT co_promemoria.id FROM co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND idintervento IS NULL AND DATE_ADD(co_promemoria.data_richiesta, INTERVAL 1 DAY) <= NOW()
+    $query_mesi_precenti = 'SELECT co_promemoria.id FROM co_promemoria INNER JOIN co_contratti ON co_promemoria.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND idintervento IS NULL AND DATE_ADD(co_promemoria.data_richiesta, INTERVAL 1 DAY) <= NOW()
 
     UNION SELECT co_ordiniservizio.id FROM co_ordiniservizio INNER JOIN co_contratti ON co_ordiniservizio.idcontratto=co_contratti.id WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1) AND idintervento IS NULL AND DATE_ADD(co_ordiniservizio.data_scadenza, INTERVAL 1 DAY) <= NOW()
 
     UNION SELECT in_interventi.id FROM in_interventi INNER JOIN an_anagrafiche ON in_interventi.idanagrafica=an_anagrafiche.idanagrafica WHERE (SELECT COUNT(*) FROM in_interventi_tecnici WHERE in_interventi_tecnici.idintervento = in_interventi.id) = 0 AND DATE_ADD(IF(in_interventi.data_scadenza IS NULL, in_interventi.data_richiesta, in_interventi.data_scadenza), INTERVAL 1 DAY) <= NOW()';
-    $rsp_old = $dbo->fetchNum($qp_old);
+    $numero_mesi_precenti = $dbo->fetchNum($query_mesi_precenti);
 
-    if ($rsp_old > 0) {
-        echo '<div class="alert alert-warning alert-dismissible text-sm" role="alert"><i class="fa fa-exclamation-triangle"></i><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> '.tr('Ci sono '.$rsp_old.' attività scadute.').'</div>';
+    if ($numero_mesi_precenti > 0) {
+        echo '<div class="alert alert-warning alert-dismissible text-sm" role="alert"><i class="fa fa-exclamation-triangle"></i><button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> '.tr('Ci sono _NUM_ attività scadute', [
+                '_NUM_' => $numero_mesi_precenti,
+        ]).'.</div>';
     }
 
-    $mesi = months();
+    // Aggiunta della data corrente per visualizzare il mese corrente
+    $risultati_da_programmare[] = [
+        'data' => date('Y-m-d H:i:s'),
+    ];
 
-    // Creo un array con tutti i mesi che contengono interventi
-    $mesi_interventi = [];
-    for ($i = 0; $i < sizeof($rsp); ++$i) {
-        $mese_n = $rsp[$i]['mese'].$rsp[$i]['anno'];
-        $mese_t = $mesi[intval($rsp[$i]['mese'])].' '.$rsp[$i]['anno'];
-        $mesi_interventi[$mese_n] = $mese_t;
-    }
+    $mesi = collect($risultati_da_programmare)
+        ->unique(function ($item) {
+            $data = new Carbon\Carbon($item['data']);
 
-    // Aggiungo anche il mese corrente
-    $mesi_interventi[date('m').date('Y')] = $mesi[intval(date('m'))].' '.date('Y');
-
-    // Rimuovo i mesi doppi
-    array_unique($mesi_interventi);
-
-    // Ordino l'array per anno
-    foreach ($mesi_interventi as $key => &$data) {
-        ksort($data);
-    }
-
-    echo '<select class="superselect" id="select-intreventi-pianificare">';
-
-    foreach ($mesi_interventi as $key => $mese_intervento) {
-        echo '<option value="'.$key.'">'.$mese_intervento.'</option>';
-    }
-
-    echo '</select>';
-
-    echo '<div id="interventi-pianificare"></div>';
+            return $data->format('m-Y');
+        })
+        ->sortBy('data');
 
     echo '
+    <select class="superselect" id="select-intreventi-pianificare">';
+
+    foreach ($mesi as $mese) {
+        $data = new Carbon\Carbon($mese['data']);
+        $chiave = $data->format('mY');
+        $testo = $data->formatLocalized('%B %Y');
+
+        echo '
+        <option value="'.$chiave.'">'.ucfirst($testo).'</option>';
+    }
+
+    echo '
+        </select>
+        <div id="interventi-pianificare"></div>
     </div>
 </div>';
 }
@@ -461,7 +471,7 @@ if ($vista == 'mese') {
 						$('#calendar').fullCalendar('refetchEvents');
 				});
 
-				i++
+				i++;
 				update_counter( 'idzone_count', i);
 
             });
diff --git a/modules/interventi/widgets/interventi_da_pianificare.php b/modules/interventi/widgets/interventi_da_pianificare.php
index 414e1f801..32f9fe4ee 100755
--- a/modules/interventi/widgets/interventi_da_pianificare.php
+++ b/modules/interventi/widgets/interventi_da_pianificare.php
@@ -11,7 +11,7 @@ $interventi_da_pianificare = Intervento::doesntHave('sessioni')
 $raggruppamenti = $interventi_da_pianificare->groupBy(function ($item, $key) {
     $data = $item->data_scadenza ?: $item->data_richiesta;
 
-    return $data->formatLocalized('%B %Y');
+    return ucfirst($data->formatLocalized('%B %Y'));
 });
 
 $counter = 0;
diff --git a/plugins/pianificazione_fatturazione/add_pianificazione.php b/plugins/pianificazione_fatturazione/add_pianificazione.php
index 54807bc09..7e41fd73e 100755
--- a/plugins/pianificazione_fatturazione/add_pianificazione.php
+++ b/plugins/pianificazione_fatturazione/add_pianificazione.php
@@ -35,7 +35,7 @@ while ($data_corrente->lessThanOrEqualTo($data_conclusione)) {
                     <div class="col-md-3">
                         <label for="m_'.$count.'">
                             <input type="checkbox" class="unblockable" id="m_'.$count.'" name="selezione_periodo['.$count.']" />
-                            '.$data_corrente->formatLocalized('%B %Y').'
+                            '.ucfirst($data_corrente->formatLocalized('%B %Y')).'
                         </label>
                         <input type="hidden" name="periodo['.$count.']" value="'.$data.'">
                     </div>';
diff --git a/plugins/pianificazione_fatturazione/edit.php b/plugins/pianificazione_fatturazione/edit.php
index 62c294dc3..7ff261094 100755
--- a/plugins/pianificazione_fatturazione/edit.php
+++ b/plugins/pianificazione_fatturazione/edit.php
@@ -46,7 +46,7 @@ if (!$pianificazioni->isEmpty()) {
         if (!$pianificazione->data_scadenza->equalTo($previous)) {
             $previous = $pianificazione->data_scadenza;
             echo '
-                <b>'.$pianificazione->data_scadenza->formatLocalized('%B %Y').'</b>';
+                <b>'.ucfirst($pianificazione->data_scadenza->formatLocalized('%B %Y')).'</b>';
         }
 
         echo '
diff --git a/src/Translator.php b/src/Translator.php
index 01a7af4bc..16240d8ff 100755
--- a/src/Translator.php
+++ b/src/Translator.php
@@ -83,14 +83,16 @@ class Translator extends Util\Singleton
 
             Carbon::setUtf8(true);
 
-            $result = setlocale(LC_TIME, $locale);
+            $result = setlocale(LC_ALL, $locale);
             Carbon::setLocale($locale);
 
             if (empty($result)) {
-                $reduced = explode('_', $locale)[0];
+                $result = setlocale(LC_ALL, $locale.'.UTF-8');
+            }
 
-                $result = setlocale(LC_TIME, $reduced);
-                Carbon::setLocale($reduced);
+            if (empty($result)) {
+                $reduced = explode('_', $locale)[0];
+                $result = setlocale(LC_ALL, $reduced);
             }
 
             self::setFormatter($locale, $formatter);
diff --git a/templates/fatturato/body.php b/templates/fatturato/body.php
index 94fe4649a..0ca73e9dd 100755
--- a/templates/fatturato/body.php
+++ b/templates/fatturato/body.php
@@ -41,7 +41,7 @@ $totale_finale = 0;
 // Nel fatturato totale è corretto NON tenere in considerazione eventuali rivalse, ritenute acconto o contributi.
 foreach ($raggruppamenti as $raggruppamento) {
     $data = new \Carbon\Carbon($raggruppamento['data']);
-    $mese = $data->formatLocalized('%B %Y');
+    $mese = ucfirst($data->formatLocalized('%B %Y'));
 
     $imponibile = $raggruppamento['imponibile'];
     $iva = $raggruppamento['iva'];
diff --git a/update/2_4_14.php b/update/2_4_14.php
index dd1af6560..60eaf257a 100755
--- a/update/2_4_14.php
+++ b/update/2_4_14.php
@@ -5,7 +5,7 @@ $files = [
     'templates\fatturato\pdfgen.fatturato.php',
     'templates\fatturato\fatturato_body.html',
     'templates\fatturato\fatturato.html',
-    'modules/interventi/widgets/interventi.pianificazionedashboard.interventi.php',
+    'modules\interventi\widgets\interventi.pianificazionedashboard.interventi.php',
 ];
 
 foreach ($files as $key => $value) {