diff --git a/assets/src/js/functions/functions.js b/assets/src/js/functions/functions.js
index 39d0e92e7..df042a5c9 100755
--- a/assets/src/js/functions/functions.js
+++ b/assets/src/js/functions/functions.js
@@ -523,7 +523,7 @@ function alertPush() {
});
}
-function salvaForm(button, form) {
+function salvaForm(button, form, data = {}) {
return new Promise(function (resolve, reject) {
// Caricamento visibile nel pulsante
let restore = buttonLoading(button);
@@ -541,7 +541,7 @@ function salvaForm(button, form) {
resolve(false);
}
- submitAjax(form, {}, function (response) {
+ submitAjax(form, data, function (response) {
buttonRestore(button, restore);
resolve(true);
}, function (data) {
diff --git a/modules/dashboard/actions.php b/modules/dashboard/actions.php
index 0e59962cf..c62dfc8ce 100755
--- a/modules/dashboard/actions.php
+++ b/modules/dashboard/actions.php
@@ -2,37 +2,65 @@
include_once __DIR__.'/../../core.php';
+$modulo_interventi = Modules::get('Interventi');
+
if (!isset($user['idanagrafica'])) {
$user['idanagrafica'] = '';
}
-switch (get('op')) {
+switch (filter('op')) {
// Lettura calendario tecnici
- case 'get_current_month':
- $start = get('start');
- $end = get('end');
+ case 'interventi_periodo':
+ $start = filter('start');
+ $end = filter('end');
$stati = (array) $_SESSION['dashboard']['idstatiintervento'];
$stati[] = prepare('');
$tipi = (array) $_SESSION['dashboard']['idtipiintervento'];
+ $zone = (array) $_SESSION['dashboard']['idzone'];
+ $tecnici = (array) $_SESSION['dashboard']['idtecnici'];
- $query = 'SELECT in_interventi_tecnici.id, in_interventi_tecnici.idintervento, in_interventi.codice, colore, idtecnico, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, (SELECT id FROM zz_files WHERE id_record=in_interventi.id AND id_module = '.Modules::get('Interventi')['id'].' LIMIT 1) AS have_attachments, (SELECT colore FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS colore_tecnico, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS cliente, (SELECT idzona FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS idzona FROM in_interventi_tecnici INNER JOIN (in_interventi LEFT OUTER JOIN in_statiintervento ON in_interventi.idstatointervento=in_statiintervento.idstatointervento) ON in_interventi_tecnici.idintervento=in_interventi.id WHERE ( (in_interventi_tecnici.orario_inizio >= '.prepare($start).' AND in_interventi_tecnici.orario_fine <= '.prepare($end).') OR (in_interventi_tecnici.orario_inizio >= '.prepare($start).' AND in_interventi_tecnici.orario_inizio <= '.prepare($end).') OR (in_interventi_tecnici.orario_fine >= '.prepare($start).' AND in_interventi_tecnici.orario_fine <= '.prepare($end).')) AND idtecnico IN('.implode(',', $_SESSION['dashboard']['idtecnici']).') AND in_interventi.idstatointervento IN('.implode(',', $stati).') AND in_interventi_tecnici.idtipointervento IN('.implode(',', $tipi).') '.Modules::getAdditionalsQuery('Interventi').' HAVING idzona IN ('.implode(',', $_SESSION['dashboard']['idzone']).')';
- $rs = $dbo->fetchArray($query);
+ $query = 'SELECT
+ in_interventi_tecnici.id,
+ in_interventi_tecnici.idintervento,
+ in_interventi.codice,
+ colore,
+ in_interventi_tecnici.idtecnico,
+ in_interventi_tecnici.orario_inizio,
+ in_interventi_tecnici.orario_fine,
+ (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica = idtecnico) AS nome_tecnico,
+ (SELECT id FROM zz_files WHERE id_record = in_interventi.id AND id_module = '.prepare($modulo_interventi->id).' LIMIT 1) AS have_attachments,
+ (SELECT colore FROM an_anagrafiche WHERE idanagrafica = idtecnico) AS colore_tecnico, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=in_interventi.idanagrafica) AS cliente,
+ (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = in_interventi.idanagrafica) AS idzona
+ FROM in_interventi_tecnici
+ INNER JOIN in_interventi ON in_interventi_tecnici.idintervento = in_interventi.id
+ LEFT OUTER JOIN in_statiintervento ON in_interventi.idstatointervento = in_statiintervento.idstatointervento
+ WHERE
+ (
+ (in_interventi_tecnici.orario_inizio >= '.prepare($start).' AND in_interventi_tecnici.orario_fine <= '.prepare($end).')
+ OR (in_interventi_tecnici.orario_inizio >= '.prepare($start).' AND in_interventi_tecnici.orario_inizio <= '.prepare($end).')
+ OR (in_interventi_tecnici.orario_fine >= '.prepare($start).' AND in_interventi_tecnici.orario_fine <= '.prepare($end).')
+ ) AND idtecnico IN('.implode(',', $tecnici).')
+ AND in_interventi.idstatointervento IN('.implode(',', $stati).')
+ AND in_interventi_tecnici.idtipointervento IN('.implode(',', $tipi).')
+ '.Modules::getAdditionalsQuery('Interventi').'
+ HAVING idzona IN ('.implode(',', $zone).')';
+ $sessioni = $dbo->fetchArray($query);
$results = [];
- foreach ($rs as $r) {
+ foreach ($sessioni as $sessione) {
$results[] = [
- 'id' => $r['id'],
- 'idintervento' => $r['idintervento'],
- 'idtecnico' => $r['idtecnico'],
- 'title' => 'Int. '.$r['codice'].' '.$r['cliente'].'
'.tr('Tecnici').': '.$r['nome_tecnico'].' '.(($r['have_attachments']) ? '' : ''),
- 'start' => $r['orario_inizio'],
- 'end' => $r['orario_fine'],
- 'url' => $rootdir.'/editor.php?id_module='.Modules::get('Interventi')['id'].'&id_record='.$r['idintervento'],
- 'backgroundColor' => $r['colore'],
- 'textColor' => color_inverse($r['colore']),
- 'borderColor' => ($r['colore_tecnico'] == '#FFFFFF') ? color_darken($r['colore_tecnico'], 100) : $r['colore_tecnico'],
+ 'id' => $sessione['id'],
+ 'idintervento' => $sessione['idintervento'],
+ 'idtecnico' => $sessione['idtecnico'],
+ 'title' => 'Int. '.$sessione['codice'].' '.$sessione['cliente'].'
'.tr('Tecnici').': '.$sessione['nome_tecnico'].' '.(($sessione['have_attachments']) ? '' : ''),
+ 'start' => $sessione['orario_inizio'],
+ 'end' => $sessione['orario_fine'],
+ 'url' => ROOTDIR.'/editor.php?id_module='.$modulo_interventi->id.'&id_record='.$sessione['idintervento'],
+ 'backgroundColor' => $sessione['colore'],
+ 'textColor' => color_inverse($sessione['colore']),
+ 'borderColor' => ($sessione['colore_tecnico'] == '#FFFFFF') ? color_darken($sessione['colore_tecnico'], 100) : $sessione['colore_tecnico'],
'allDay' => false,
];
}
@@ -41,11 +69,11 @@ switch (get('op')) {
break;
- case 'update_intervento':
- $sessione = get('id');
- $idintervento = get('idintervento');
- $orario_inizio = get('timeStart');
- $orario_fine = get('timeEnd');
+ case 'modifica_intervento':
+ $sessione = filter('id');
+ $idintervento = filter('idintervento');
+ $orario_inizio = filter('timeStart');
+ $orario_fine = filter('timeEnd');
// Aggiornamento prezzo totale
$q = 'SELECT in_interventi_tecnici.prezzo_ore_unitario, idtecnico, in_statiintervento.is_completato FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id LEFT OUTER JOIN in_statiintervento ON in_interventi.idstatointervento = in_statiintervento.idstatointervento WHERE in_interventi.id='.prepare($idintervento).' AND in_statiintervento.is_completato = 0 '.Modules::getAdditionalsQuery('Interventi');
@@ -69,19 +97,19 @@ switch (get('op')) {
break;
- case 'get_more_info':
- $id = get('id');
- $timeStart = get('timeStart');
- $timeEnd = get('timeEnd');
+ case 'info_intervento':
+ $id = filter('id');
+ $timeStart = filter('timeStart');
+ $timeEnd = filter('timeEnd');
- //Lettura dati intervento di riferimento
+ // Lettura dati intervento di riferimento
$query = 'SELECT in_interventi_tecnici.idintervento, in_interventi.id, idtecnico, orario_inizio, orario_fine, (SELECT ragione_sociale FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS nome_tecnico, (SELECT colore FROM an_anagrafiche WHERE idanagrafica=idtecnico) AS colore FROM in_interventi_tecnici INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id WHERE in_interventi.id='.prepare($id).' '.Modules::getAdditionalsQuery('Interventi');
$rs = $dbo->fetchArray($query);
if (!empty($rs)) {
$tecnici = [];
- foreach ($rs as $r) {
- $tecnici[] = $r['nome_tecnico'].' ('.Translator::timestampToLocale($r['orario_inizio']).' - '.Translator::timeToLocale($r['orario_fine']).')';
+ foreach ($rs as $sessione) {
+ $tecnici[] = $sessione['nome_tecnico'].' ('.Translator::timestampToLocale($sessione['orario_inizio']).' - '.Translator::timeToLocale($sessione['orario_fine']).')';
}
// Lettura dati intervento
@@ -90,54 +118,53 @@ switch (get('op')) {
$desc_tipointervento = $rs[0]['tipo'];
- $tooltip_text = ''.tr('Numero intervento').': '.$rs[0]['codice'].'
';
- $tooltip_text .= ''.tr('Ragione sociale').': '.nl2br($rs[0]['ragione_sociale']).'
';
+ $tooltip = ''.tr('Numero intervento').': '.$rs[0]['codice'].'
';
+ $tooltip .= ''.tr('Ragione sociale').': '.nl2br($rs[0]['ragione_sociale']).'
';
if (!empty($rs[0]['telefono'])) {
- $tooltip_text .= ''.tr('Telefono').': '.nl2br($rs[0]['telefono']).'
';
+ $tooltip .= ''.tr('Telefono').': '.nl2br($rs[0]['telefono']).'
';
}
if (!empty($rs[0]['cellulare'])) {
- $tooltip_text .= ''.tr('Cellulare').': '.nl2br($rs[0]['cellulare']).'
';
+ $tooltip .= ''.tr('Cellulare').': '.nl2br($rs[0]['cellulare']).'
';
}
if (!empty($rs[0]['indirizzo']) || !empty($rs[0]['citta']) || !empty($rs[0]['provincia'])) {
- $tooltip_text .= ''.tr('Indirizzo').': '.nl2br($rs[0]['indirizzo'].' '.$rs[0]['citta'].' ('.$rs[0]['provincia'].')').'
';
+ $tooltip .= ''.tr('Indirizzo').': '.nl2br($rs[0]['indirizzo'].' '.$rs[0]['citta'].' ('.$rs[0]['provincia'].')').'
';
}
if (!empty($rs[0]['note'])) {
- $tooltip_text .= ''.tr('Note').': '.nl2br($rs[0]['note']).'
';
+ $tooltip .= ''.tr('Note').': '.nl2br($rs[0]['note']).'
';
}
- $tooltip_text .= ''.tr('Data richiesta').': '.Translator::timestampToLocale($rs[0]['data_richiesta']).'
';
+ $tooltip .= ''.tr('Data richiesta').': '.Translator::timestampToLocale($rs[0]['data_richiesta']).'
';
- $tooltip_text .= ''.tr('Tipo intervento').': '.nl2br($desc_tipointervento).'
';
+ $tooltip .= ''.tr('Tipo intervento').': '.nl2br($desc_tipointervento).'
';
- $tooltip_text .= ''.tr('Tecnici').': '.implode(', ', $tecnici).'
';
+ $tooltip .= ''.tr('Tecnici').': '.implode(', ', $tecnici).'
';
if ($rs[0]['impianti'] != '') {
- $tooltip_text .= ''.tr('Impianti').': '.$rs[0]['impianti'].'
';
+ $tooltip .= ''.tr('Impianti').': '.$rs[0]['impianti'].'
';
}
if ($rs[0]['richiesta'] != '') {
- $tooltip_text .= ''.tr('Richiesta').': '.nl2br($rs[0]['richiesta']).'
';
+ $tooltip .= ''.tr('Richiesta').': '.nl2br($rs[0]['richiesta']).'
';
}
if ($rs[0]['descrizione'] != '') {
- $tooltip_text .= ''.tr('Descrizione').': '.nl2br($rs[0]['descrizione']).'
';
+ $tooltip .= ''.tr('Descrizione').': '.nl2br($rs[0]['descrizione']).'
';
}
if ($rs[0]['informazioniaggiuntive'] != '') {
- $tooltip_text .= ''.tr('Informazioni aggiuntive').': '.nl2br($rs[0]['informazioniaggiuntive']).'
';
+ $tooltip .= ''.tr('Informazioni aggiuntive').': '.nl2br($rs[0]['informazioniaggiuntive']).'
';
}
- echo $tooltip_text;
+ echo $tooltip;
}
+ break;
- break;
-
- case 'load_intreventi':
- $mese = $_GET['mese'];
+ case 'carica_interventi':
+ $mese = filter('mese');
// Righe inserite
$qp = "SELECT
@@ -148,49 +175,47 @@ switch (get('op')) {
data_richiesta,
an_anagrafiche.ragione_sociale,
'promemoria' AS ref,
- (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_promemoria.idtipointervento) AS tipointervento
+ (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento = co_promemoria.idtipointervento) AS tipointervento
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
+ INNER JOIN co_contratti ON co_promemoria.idcontratto = co_contratti.id
+ INNER JOIN an_anagrafiche ON co_contratti.idanagrafica = an_anagrafiche.idanagrafica
+ WHERE idintervento IS NULL AND
+ idcontratto IN (SELECT id FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE is_pianificabile = 1))
ORDER BY data_richiesta ASC";
+ $promemoria_contratti = $dbo->fetchArray($qp);
- $rsp = $dbo->fetchArray($qp);
+ $promemoria_interventi = $dbo->fetchArray("SELECT id, richiesta, id_contratto AS idcontratto, DATE_FORMAT(IF(data_scadenza IS NULL, data_richiesta, data_scadenza),'%m%Y') AS mese, IF(data_scadenza IS NULL, data_richiesta, data_scadenza)AS data_richiesta, data_scadenza, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE in_tipiintervento.idtipointervento=in_interventi.idtipointervento) AS tipointervento 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 data_richiesta ASC");
- $interventi = $dbo->fetchArray("SELECT id, richiesta, id_contratto AS idcontratto, DATE_FORMAT(IF(data_scadenza IS NULL, data_richiesta, data_scadenza),'%m%Y') AS mese, IF(data_scadenza IS NULL, data_richiesta, data_scadenza)AS data_richiesta, data_scadenza, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE in_tipiintervento.idtipointervento=in_interventi.idtipointervento) AS tipointervento 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 data_richiesta ASC");
-
- $rsp = array_merge($rsp, $interventi);
-
- if (!empty($rsp)) {
+ $promemoria = array_merge($promemoria_contratti, $promemoria_interventi);
+ if (!empty($promemoria)) {
$prev_mese = '';
// Elenco interventi da pianificare
- foreach ($rsp as $r) {
- if ($r['mese'] == $mese) {
- if (date('Ymd', strtotime($r['data_richiesta'])) < date('Ymd')) {
+ foreach ($promemoria as $sessione) {
+ if ($sessione['mese'] == $mese) {
+ if (date('Ymd', strtotime($sessione['data_richiesta'])) < date('Ymd')) {
$class = 'danger';
} else {
$class = 'primary';
}
echo '
-