Aggiunto drag&drop interventi senza sessioni

This commit is contained in:
Thomas Zilio 2018-09-20 09:21:34 +02:00
parent 73902a61c6
commit 5f78fbd85d
6 changed files with 258 additions and 163 deletions

View File

@ -138,17 +138,23 @@ switch (get('op')) {
$mese = $_GET['mese'];
//Righe inserite
$qp = "SELECT co_promemoria.id, idcontratto, richiesta, DATE_FORMAT( data_richiesta, '%m%Y') AS mese, data_richiesta, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (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 pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT co_ordiniservizio.id, idcontratto, '', data_scadenza, DATE_FORMAT( data_scadenza, '%m%Y') AS mese, an_anagrafiche.ragione_sociale, 'ordine' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento='ODS') AS tipointervento 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 pianificabile = 1) ) AND idintervento IS NULL ORDER BY data_richiesta ASC";
$rsp = $dbo->fetchArray($qp);
$tot_dapianificare = sizeof($rsp);
$da_pianificare = 0;
// Righe inserite
$qp = "SELECT co_promemoria.id, idcontratto, richiesta, DATE_FORMAT( data_richiesta, '%m%Y') AS mese, data_richiesta, an_anagrafiche.ragione_sociale, 'promemoria' AS ref, (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 pianificabile = 1) ) AND idintervento IS NULL
if ($tot_dapianificare > 0) {
UNION SELECT co_ordiniservizio.id, idcontratto, '', DATE_FORMAT( data_scadenza, '%m%Y') AS mese, data_scadenza, an_anagrafiche.ragione_sociale, 'ordine' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento='ODS') AS tipointervento 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 pianificabile = 1) ) AND idintervento IS NULL
ORDER BY data_richiesta ASC";
$rsp = $dbo->fetchArray($qp);
$interventi = $dbo->fetchArray("SELECT id, richiesta, DATE_FORMAT(data_richiesta,'%m%Y') AS mese, data_richiesta, 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)) {
$prev_mese = '';
//Elenco interventi da pianificare
// Elenco interventi da pianificare
foreach ($rsp as $r) {
if ($r['mese'] == $mese) {
if (date('Ymd', strtotime($r['data_richiesta'])) < date('Ymd')) {
@ -158,11 +164,12 @@ switch (get('op')) {
}
echo '
<div class="fc-event '.$class.'" data-id="'.$r['id'].'" data-idcontratto="'.$r['idcontratto'].'"><b>'.$r['ragione_sociale'].'</b><br>'.Translator::dateToLocale($r['data_richiesta']).' ('.$r['tipointervento'].')'.(!empty($r['richiesta']) ? ' - '.$r['richiesta'] : '').'</div>';
++$da_pianificare;
<div class="fc-event '.$class.'" data-id="'.$r['id'].'" data-idcontratto="'.$r['idcontratto'].'" data-ref="'.$r['ref'].'">
<b>'.$r['ragione_sociale'].'</b><br>'.Translator::dateToLocale($r['data_richiesta']).' ('.$r['tipointervento'].')'.(!empty($r['richiesta']) ? ' - '.$r['richiesta'] : '').'
</div>';
}
}
} elseif ($da_pianificare == 0) {
} else {
echo '<br><small class="help-block">'.tr('Non ci sono interventi da pianificare per questo mese').'</small>';
}

View File

@ -285,8 +285,11 @@ if ($total == 0) {
</div>
<br>
<?php
$qp = "SELECT co_promemoria.id, idcontratto, richiesta, DATE_FORMAT( data_richiesta, '%m-%Y') AS mese, data_richiesta, an_anagrafiche.ragione_sociale, 'intervento' AS ref, (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 pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT co_ordiniservizio.id, idcontratto, '', data_scadenza, DATE_FORMAT( data_scadenza, '%m-%Y') AS mese, an_anagrafiche.ragione_sociale, 'ordine' AS ref, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento='ODS') AS tipointervento 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 pianificabile = 1) ) AND idintervento IS NULL ORDER BY data_richiesta ASC";
$qp = "SELECT DATE_FORMAT(data_richiesta, '%m-%Y') AS mese 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 pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT DATE_FORMAT(data_scadenza, '%m-%Y') AS mese 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 pianificabile = 1) ) AND idintervento IS NULL
UNION SELECT DATE_FORMAT(data_richiesta, '%m-%Y') AS mese 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";
$rsp = $dbo->fetchArray($qp);
if (!empty($rsp)) {
@ -306,15 +309,31 @@ if (!empty($rsp)) {
<h4>'.tr('Promemoria contratti 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 pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_promemoria.data_richiesta)+86400<UNIX_TIMESTAMP(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 pianificabile = 1) AND idintervento IS NULL AND UNIX_TIMESTAMP(co_ordiniservizio.data_scadenza)+86400<UNIX_TIMESTAMP(NOW())';
$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 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 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(in_interventi.data_richiesta, INTERVAL 1 DAY) <= NOW()';
$rsp_old = $dbo->fetchNum($qp_old);
if ($rsp_old > 0) {
echo '<div class="alert alert-warning alert-dismissible" role="alert"><i class="fa fa-exclamation-triangle"></i><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> '.tr('Ci sono '.$rsp_old.' interventi scaduti da pianificare.').'</div>';
}
$mesi = [1 => 'Gennaio', 2 => 'Febbraio', 3 => 'Marzo', 4 => 'Aprile', 5 => 'Maggio', 6 => 'Giugno', 7 => 'Luglio', 8 => 'Agosto', 9 => 'Settembre', 10 => 'Ottobre', 11 => 'Novembre', 12 => 'Dicembre'];
$mesi = [
tr('Gennaio'),
tr('Febbraio'),
tr('Marzo'),
tr('Aprile'),
tr('Maggio'),
tr('Giugno'),
tr('Luglio'),
tr('Agosto'),
tr('Settembre'),
tr('Ottobre'),
tr('Novembre'),
tr('Dicembre'),
];
// Creo un array con tutti i mesi che contengono interventi
$mesi_interventi = [];
@ -601,7 +620,14 @@ if (Modules::getPermission('Interventi') == 'rw') {
ora_dal = moment(date).format("HH:mm");
ora_al = moment(date).add(1, 'hours').format("HH:mm");
var name = ($(this).data('ref') == 'ordine') ? 'idordineservizio' : 'idcontratto_riga';
ref = $(this).data('ref');
if (ref == 'ordine') {
name = 'idordineservizio';
} else if (ref == 'ordine') {
name = 'idcontratto_riga';
} else {
name = 'id_intervento';
}
launch_modal('<?php echo tr('Pianifica intervento'); ?>', globals.rootdir + '/add.php?id_module=<?php echo Modules::get('Interventi')['id']; ?>&data='+data+'&orario_inizio='+ora_dal+'&orario_fine='+ora_al+'&ref=dashboard&idcontratto=' + $(this).data('idcontratto') + '&' + name + '=' + $(this).data('id'), 1);

View File

@ -193,131 +193,138 @@ switch (post('op')) {
break;
case 'add':
$formato = setting('Formato codice intervento');
$template = str_replace('#', '%', $formato);
if (post('id_intervento') == null) {
$formato = setting('Formato codice intervento');
$template = str_replace('#', '%', $formato);
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
if (!empty($rs[0]['codice'])) {
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
}
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
if (!empty($rs[0]['codice'])) {
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
}
if (empty($codice)) {
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
}
if (empty($codice)) {
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1');
$codice = Util\Generator::generate($formato, $rs[0]['codice']);
}
// Informazioni di base
$idpreventivo = post('idpreventivo');
$idcontratto = post('idcontratto');
$idcontratto_riga = post('idcontratto_riga');
$idtipointervento = post('idtipointervento');
$idsede = post('idsede');
$data_richiesta = post('data_richiesta');
$richiesta = post('richiesta');
$idautomezzo = null;
// Informazioni di base
$idpreventivo = post('idpreventivo');
$idcontratto = post('idcontratto');
$idcontratto_riga = post('idcontratto_riga');
$idtipointervento = post('idtipointervento');
$idsede = post('idsede');
$data_richiesta = post('data_richiesta');
$richiesta = post('richiesta');
$idautomezzo = null;
if (!empty($codice) && !empty(post('idanagrafica')) && !empty(post('idtipointervento'))) {
// Salvataggio modifiche intervento
$dbo->insert('in_interventi', [
'idanagrafica' => post('idanagrafica'),
'idclientefinale' => post('idclientefinale') ?: 0,
'idstatointervento' => post('idstatointervento'),
'idtipointervento' => $idtipointervento,
'idsede' => $idsede ?: 0,
'idautomezzo' => $idautomezzo ?: 0,
'id_preventivo' => $idpreventivo,
if (!empty($codice) && !empty(post('idanagrafica')) && !empty(post('idtipointervento'))) {
// Salvataggio modifiche intervento
$dbo->insert('in_interventi', [
'idanagrafica' => post('idanagrafica'),
'idclientefinale' => post('idclientefinale') ?: 0,
'idstatointervento' => post('idstatointervento'),
'idtipointervento' => $idtipointervento,
'idsede' => $idsede ?: 0,
'idautomezzo' => $idautomezzo ?: 0,
'id_preventivo' => $idpreventivo,
'codice' => $codice,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
]);
$id_record = $dbo->lastInsertedID();
flash()->info(tr('Aggiunto nuovo intervento!'));
}
// Collego l'intervento al contratto
if (!empty($idcontratto)) {
$array = [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
];
// Se è specificato che l'intervento fa parte di una pianificazione aggiorno il codice dell'intervento sulla riga della pianificazione
if (!empty($idcontratto_riga)) {
$dbo->update('co_promemoria', $array, ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
//copio le righe dal promemoria all'intervento
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$idcontratto_riga.' ');
//copio gli articoli dal promemoria all'intervento
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga.' ');
// Copia degli allegati
$alleagti = Uploads::copy([
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $idcontratto_riga,
], [
'id_module' => $id_module,
'id_record' => $id_record,
'codice' => $codice,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
]);
if (!$alleagti) {
$errors = error_get_last();
flash()->warning(tr('Errore durante la copia degli allegati'));
}
$id_record = $dbo->lastInsertedID();
// Decremento la quantità per ogni articolo copiato
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$id_record.' ');
foreach ($rs_articoli as $rs_articolo) {
add_movimento_magazzino($rs_articolo['idarticolo'], -$rs_articolo['qta'], ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $id_record]);
}
} else {
$dbo->insert('co_promemoria', [
'idcontratto' => $idcontratto,
flash()->info(tr('Aggiunto nuovo intervento!'));
}
// Collego l'intervento al contratto
if (!empty($idcontratto)) {
$array = [
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
]);
}
}
];
if (!empty(post('idordineservizio'))) {
$dbo->query('UPDATE co_ordiniservizio SET idintervento='.prepare($id_record).' WHERE id='.prepare(post('idordineservizio')));
// Se è specificato che l'intervento fa parte di una pianificazione aggiorno il codice dell'intervento sulla riga della pianificazione
if (!empty($idcontratto_riga)) {
$dbo->update('co_promemoria', $array, ['idcontratto' => $idcontratto, 'id' => $idcontratto_riga]);
//copio le righe dal promemoria all'intervento
$dbo->query('INSERT INTO in_righe_interventi (descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,idintervento,sconto,sconto_unitario,tipo_sconto) SELECT descrizione, qta,um,prezzo_vendita,prezzo_acquisto,idiva,desc_iva,iva,'.$id_record.',sconto,sconto_unitario,tipo_sconto FROM co_promemoria_righe WHERE id_promemoria = '.$idcontratto_riga.' ');
//copio gli articoli dal promemoria all'intervento
$dbo->query('INSERT INTO mg_articoli_interventi (idarticolo, idintervento,descrizione,prezzo_acquisto,prezzo_vendita,sconto, sconto_unitario, tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto) SELECT idarticolo, '.$id_record.',descrizione,prezzo_acquisto,prezzo_vendita,sconto,sconto_unitario,tipo_sconto,idiva,desc_iva,iva,idautomezzo, qta, um, abilita_serial, idimpianto FROM co_promemoria_articoli WHERE id_promemoria = '.$idcontratto_riga.' ');
// Copia degli allegati
$alleagti = Uploads::copy([
'id_plugin' => Plugins::get('Pianificazione interventi')['id'],
'id_record' => $idcontratto_riga,
], [
'id_module' => $id_module,
'id_record' => $id_record,
]);
if (!$alleagti) {
$errors = error_get_last();
flash()->warning(tr('Errore durante la copia degli allegati'));
}
// Decremento la quantità per ogni articolo copiato
$rs_articoli = $dbo->fetchArray('SELECT * FROM mg_articoli_interventi WHERE idintervento = '.$id_record.' ');
foreach ($rs_articoli as $rs_articolo) {
add_movimento_magazzino($rs_articolo['idarticolo'], -$rs_articolo['qta'], ['idautomezzo' => $rs_articolo['idautomezzo'], 'idintervento' => $id_record]);
}
} else {
$dbo->insert('co_promemoria', [
'idcontratto' => $idcontratto,
'idintervento' => $id_record,
'idtipointervento' => $idtipointervento,
'data_richiesta' => $data_richiesta,
'richiesta' => $richiesta,
'idsede' => $idsede ?: 0,
]);
}
}
if (!empty(post('idordineservizio'))) {
$dbo->query('UPDATE co_ordiniservizio SET idintervento='.prepare($id_record).' WHERE id='.prepare(post('idordineservizio')));
}
// Collegamenti intervento/impianti
$impianti = (array) post('idimpianti');
if (!empty($impianti)) {
foreach ($impianti as $impianto) {
$dbo->insert('my_impianti_interventi', [
'idintervento' => $id_record,
'idimpianto' => $impianto,
]);
}
// Collegamenti intervento/componenti
$componenti = (array) post('componenti');
foreach ($componenti as $componente) {
$dbo->insert('my_componenti_interventi', [
'id_intervento' => $id_record,
'id_componente' => $componente,
]);
}
}
} else {
$id_record = post('id_intervento');
$idcontratto = $dbo->fetchOne('SELECT idcontratto FROM co_promemoria WHERE idintervento = :id', [
':id' => $id_record
])['idcontratto'];
}
// Collegamenti tecnici/interventi
$idtecnici = post('idtecnico');
$data = post('data');
foreach ($idtecnici as $idtecnico) {
add_tecnico($id_record, $idtecnico, $data.' '.post('orario_inizio'), $data.' '.post('orario_fine'), $idcontratto);
}
// Collegamenti intervento/impianti
$impianti = (array) post('idimpianti');
if (!empty($impianti)) {
foreach ($impianti as $impianto) {
$dbo->insert('my_impianti_interventi', [
'idintervento' => $id_record,
'idimpianto' => $impianto,
]);
}
// Collegamenti intervento/componenti
$componenti = (array) post('componenti');
foreach ($componenti as $componente) {
$dbo->insert('my_componenti_interventi', [
'id_intervento' => $id_record,
'id_componente' => $componente,
]);
}
add_tecnico($id_record, $idtecnico, post('orario_inizio'), post('orario_fine'), $idcontratto);
}
if (post('ref') == 'dashboard') {

View File

@ -7,6 +7,20 @@ unset($_SESSION['superselect']['idanagrafica']);
unset($_SESSION['superselect']['idsede']);
unset($_SESSION['superselect']['non_fatturato']);
// Calcolo del nuovo codice
$idintervento_template = setting('Formato codice intervento');
$idintervento_template = str_replace('#', '%', $idintervento_template);
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($idintervento_template).' ORDER BY codice DESC LIMIT 0,1');
if (!empty($rs[0]['codice'])) {
$new_codice = Util\Generator::generate(setting('Formato codice intervento'), $rs[0]['codice']);
}
if (empty($new_codice)) {
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($idintervento_template).' ORDER BY codice DESC LIMIT 0,1');
$new_codice = Util\Generator::generate(setting('Formato codice intervento'), $rs[0]['codice']);
}
// Se ho passato l'idanagrafica, carico il tipo di intervento di default
$idanagrafica = filter('idanagrafica');
$idsede = filter('idsede');
@ -46,6 +60,7 @@ if (null !== filter('orario_inizio') && '00:00:00' != filter('orario_inizio')) {
$idcontratto = filter('idcontratto');
$idordineservizio = filter('idordineservizio');
$idcontratto_riga = filter('idcontratto_riga');
$id_intervento = filter('id_intervento');
if (!empty($idcontratto) && !empty($idordineservizio)) {
$rs = $dbo->fetchArray('SELECT *, (SELECT idzona FROM an_anagrafiche WHERE idanagrafica = co_contratti.idanagrafica) AS idzona FROM co_contratti WHERE id='.prepare($idcontratto));
@ -82,7 +97,7 @@ elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
// aumento orario inizio del tempo standard definito dalla tipologia dell'intervento (PRESO DAL PROMEMORIA)
if (!empty($rs[0]['tempo_standard'])) {
$orario_fine = date('H:i', strtotime($orario_inizio) + ((60 * 60) * $rs[0]['tempo_standard']));
$orario_fine = date('H:i:s', strtotime($orario_inizio) + ((60 * 60) * $rs[0]['tempo_standard']));
}
// se gli impianti non sono stati definiti nel promemoria, carico tutti gli impianti a contratto
@ -101,6 +116,30 @@ elseif (!empty($idcontratto) && !empty($idcontratto_riga)) {
$idstatointervento = $rs[0]['idstatointervento'];
}
// Intervento senza sessioni
elseif (!empty($id_intervento)) {
// Info riga pianificata
$rs = $dbo->fetchArray('SELECT *, (SELECT idcontratto FROM co_promemoria WHERE idintervento=in_interventi.id LIMIT 0,1) AS idcontratto, in_interventi.id_preventivo as idpreventivo, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = in_interventi.idtipointervento) AS tempo_standard FROM in_interventi WHERE id='.prepare($id_intervento));
$idtipointervento = $rs[0]['idtipointervento'];
$data = (null !== filter('data')) ? filter('data') : $rs[0]['data_richiesta'];
$richiesta = $rs[0]['richiesta'];
$idsede = $rs[0]['idsede'];
$idanagrafica = $rs[0]['idanagrafica'];
$idclientefinale = $rs[0]['idclientefinale'];
$idstatointervento = $rs[0]['idstatointervento'];
$idcontratto = $rs[0]['idcontratto'];
$idpreventivo = $rs[0]['idpreventivo'];
$idzona = $rs[0]['idzona'];
// Aumento orario inizio del tempo standard definito dalla tipologia dell'intervento (PRESO DAL PROMEMORIA)
if (!empty($rs[0]['tempo_standard'])) {
$orario_fine = date('H:i:s', strtotime($orario_inizio) + ((60 * 60) * $rs[0]['tempo_standard']));
}
$rs = $dbo->fetchArray('SELECT idimpianto FROM my_impianti_interventi WHERE idintervento='.prepare($id_intervento));
$idimpianto = implode(',', array_column($rs, 'idimpianto'));
}
if (empty($data)) {
if (null !== filter('data')) {
$data = filter('data');
@ -111,21 +150,6 @@ if (empty($data)) {
$_SESSION['superselect']['idanagrafica'] = $idanagrafica;
// Calcolo del nuovo codice
$idintervento_template = setting('Formato codice intervento');
$idintervento_template = str_replace('#', '%', $idintervento_template);
// Calcolo codice intervento successivo
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($idintervento_template).' ORDER BY codice DESC LIMIT 0,1');
if (!empty($rs[0]['codice'])) {
$new_codice = Util\Generator::generate(setting('Formato codice intervento'), $rs[0]['codice']);
}
if (empty($new_codice)) {
$rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($idintervento_template).' ORDER BY codice DESC LIMIT 0,1');
$new_codice = Util\Generator::generate(setting('Formato codice intervento'), $rs[0]['codice']);
}
$orario_inizio = $data.' '.$orario_inizio;
$orario_fine = $data.' '.$orario_fine;
@ -135,6 +159,19 @@ $orario_fine = $data.' '.$orario_fine;
<input type="hidden" name="op" value="add">
<input type="hidden" name="ref" value="<?php echo get('ref'); ?>">
<input type="hidden" name="backto" value="record-edit">
<?php
if (!empty($idcontratto_riga)) {
echo '<input type="hidden" name="idcontratto_riga" value="'.$idcontratto_riga.'">';
}
if (!empty($idordineservizio)) {
echo '<input type="hidden" name="idordineservizio" value="'.$idordineservizio.'">';
}
if (!empty($id_intervento)) {
echo '<input type="hidden" name="id_intervento" value="'.$id_intervento.'">';
}
?>
<!-- DATI CLIENTE -->
<div class="panel panel-primary">
@ -155,14 +192,14 @@ $orario_fine = $data.' '.$orario_fine;
</div>
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Per conto di'); ?>", "name": "idclientefinale", "ajax-source": "clienti" ]}
{[ "type": "select", "label": "<?php echo tr('Per conto di'); ?>", "name": "idclientefinale", "value": "<?php echo $idclientefinale; ?>", "ajax-source": "clienti" ]}
</div>
</div>
<!-- RIGA 2 -->
<div class="row">
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Preventivo'); ?>", "name": "idpreventivo"<?php echo !empty($idanagrafica) ? '' : ', "placeholder": "'.tr('Seleziona prima un cliente').'..."'; ?>, "ajax-source": "preventivi" ]}
{[ "type": "select", "label": "<?php echo tr('Preventivo'); ?>", "name": "idpreventivo", "value": "<?php echo $idpreventivo; ?>"<?php echo !empty($idanagrafica) ? '' : ', "placeholder": "'.tr('Seleziona prima un cliente').'..."'; ?>, "ajax-source": "preventivi" ]}
</div>
<div class="col-md-4">
@ -196,7 +233,7 @@ $orario_fine = $data.' '.$orario_fine;
</div>
<div class="col-md-4">
{[ "type": "select", "label": "<?php echo tr('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, CONCAT_WS( ' - ', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome", "value": "<?php echo $idzona; ?>", "placeholder": "<?php echo tr('Nessuna zona'); ?>", "help":"<?php echo 'La zona viene definita automaticamente in base al cliente selezionato'; ?>.", "extra": "readonly" ]}
{[ "type": "select", "label": "<?php echo tr('Zona'); ?>", "name": "idzona", "values": "query=SELECT id, CONCAT_WS( ' - ', nome, descrizione) AS descrizione FROM an_zone ORDER BY nome", "value": "<?php echo $idzona; ?>", "placeholder": "<?php echo tr('Nessuna zona'); ?>", "help":"<?php echo 'La zona viene definita automaticamente in base al cliente selezionato'; ?>.", "extra": "readonly", "value": "<?php echo $idzona; ?>" ]}
</div>
</div>
@ -216,22 +253,12 @@ $orario_fine = $data.' '.$orario_fine;
<div class="col-md-12">
{[ "type": "textarea", "label": "<?php echo tr('Richiesta'); ?>", "name": "richiesta", "required": 1, "value": "<?php echo $richiesta; ?>", "extra": "style='max-height:80px; ' " ]}
</div>
<?php
if (!empty($idcontratto_riga)) {
echo '<input type="hidden" name="idcontratto_riga" value="'.$idcontratto_riga.'">';
}
if (!empty($idordineservizio)) {
echo '<input type="hidden" name="idordineservizio" value="'.$idordineservizio.'">';
}
?>
</div>
</div>
</div>
<!-- DATI INTERVENTO -->
<div class="box box-warning collapsable <?php echo get('ref') ? '' : 'collapsed-box'; ?>">
<div class="box box-primary collapsable <?php echo get('ref') ? '' : 'collapsed-box'; ?>">
<div class="box-header with-border">
<h3 class="box-title"><?php echo tr('Ore di lavoro'); ?></h3>
<div class="box-tools pull-right">
@ -293,7 +320,30 @@ $orario_fine = $data.' '.$orario_fine;
}
?>
}
//Quando modifico orario inizio, allineo anche l'orario fine
<?php
if (!empty($id_intervento)) {
echo '
$("#idsede").prop("disabled", true);
$("#idpreventivo").prop("disabled", true);
$("#idcontratto").prop("disabled", true);
$("#idimpianti").prop("disabled", true);
$("#componenti").prop("disabled", true);
$("#idanagrafica").prop("disabled", true);
$("#idanagrafica").find("button").prop("disabled", true);
$("#idclientefinale").prop("disabled", true);
$("#idzona").prop("disabled", true);
$("#idtipointervento").prop("disabled", true);
$("#idstatointervento").prop("disabled", true);
$("#richiesta").prop("disabled", true);
$("#data_richiesta").prop("disabled", true);
$("#impianti").find("button").prop("disabled", true);
';
}
?>
// Quando modifico orario inizio, allineo anche l'orario fine
$("#orario_inizio").on("dp.change", function (e) {
$("#orario_fine").data("DateTimePicker").minDate(e.date).format(globals.timestampFormat);
});

View File

@ -3,7 +3,7 @@
namespace HTMLBuilder\Handler;
/**
* Gestione dell'input di tipo "text", "file", "password", "email", "number", "textarea" e "hidden".
* Gestione dell'input di tipo "text", "file", "password", "email", "number", "textarea" e "hidden".
*
* @since 2.3
*/

View File

@ -14,8 +14,8 @@ class HTMLWrapper implements WrapperInterface
$result = '';
// Valori particolari
$values['icon-before'] = isset($values['icon-before']) ? $this->parser($values, $values['icon-before']) : null;
$values['icon-after'] = isset($values['icon-after']) ? $this->parser($values, $values['icon-after']) : null;
$values['icon-before'] = isset($values['icon-before']) ? $this->parser($values, $extras, $values['icon-before']) : null;
$values['icon-after'] = isset($values['icon-after']) ? $this->parser($values, $extras, $values['icon-after']) : null;
// Generazione dell'etichetta
if (!empty($values['label'])) {
@ -79,22 +79,22 @@ class HTMLWrapper implements WrapperInterface
return $result;
}
protected function parser(&$values, $string)
protected function parser(&$values, &$extras, $string)
{
$result = $string;
if (starts_with($string, 'add|')) {
$result = $this->add($values, $string);
$result = $this->add($values, $extras, $string);
$values['icon-custom'] = 'no-padding';
} elseif (starts_with($string, 'choice|')) {
$result = $this->choice($values, $string);
$result = $this->choice($values, $extras, $string);
$values['icon-custom'] = 'no-padding';
}
return $result;
}
protected function add(&$values, $string)
protected function add(&$values, &$extras, $string)
{
$result = null;
@ -105,11 +105,16 @@ class HTMLWrapper implements WrapperInterface
$get = !empty($pieces[2]) ? '&'.$pieces[2] : null;
$classes = !empty($pieces[3]) ? ' '.$pieces[3] : null;
$extras = !empty($pieces[4]) ? ' '.$pieces[4] : null;
$btn_extras = !empty($pieces[4]) ? ' '.$pieces[4] : null;
if (in_array('disabled', $extras)) {
$classes .= ' disabled';
$btn_extras .= ' disabled';
}
if (in_array($module->permission, ['r', 'rw'])) {
$result = '
<button '.$extras.' data-href="'.ROOTDIR.'/add.php?id_module='.$module->id.$get.'&select='.$values['id'].'&ajax=yes" data-target="#bs-popup2" data-toggle="modal" data-title="'.tr('Aggiungi').'" type="button" class="btn'.$classes.'">
<button '.$btn_extras.' data-href="'.ROOTDIR.'/add.php?id_module='.$module->id.$get.'&select='.$values['id'].'&ajax=yes" data-target="#bs-popup2" data-toggle="modal" data-title="'.tr('Aggiungi').'" type="button" class="btn'.$classes.'">
<i class="fa fa-plus"></i>
</button>';
}
@ -117,7 +122,7 @@ class HTMLWrapper implements WrapperInterface
return $result;
}
protected function choice(&$values, $string)
protected function choice(&$values, &$extras, $string)
{
$result = null;