$ordiniservizio) { $data_scadenza = date_create_from_format('Ym', $data_scadenza)->format(Intl\Formatter::getStandardFormats()['date']); // Ogni data può avere più voci di servizio da salvare foreach ($ordiniservizio as $n => $idvoce) { // Aggiunta ordine di servizio solo se la voce è spuntata if (in_array($idvoce, post('idvoce'))) { // Creazione ordine di servizio per data di scadenza if ($prev_data != $data_scadenza) { $dbo->query('INSERT INTO co_ordiniservizio(idcontratto, data_scadenza, idimpianto, stato) VALUES('.prepare($id_record).', '.prepare($data_scadenza).', '.prepare(post('matricola')).", 'aperto')"); $idordineservizio = $dbo->lastInsertedID(); } $dbo->query('INSERT INTO co_ordiniservizio_vociservizio(idordineservizio, voce, categoria, eseguito) VALUES('.prepare($idordineservizio).', (SELECT descrizione FROM in_vociservizio WHERE id='.prepare($idvoce).'), (SELECT categoria FROM in_vociservizio WHERE id='.prepare($idvoce).'), 0 )'); } $prev_data = $data_scadenza; } } flash()->info(tr('Ordini di servizio generati correttamente!')); } // Eliminazione pianificazione specifica elseif (get('op') == 'del_ordineservizio') { $idordineservizio = get('idordineservizio'); $n = $dbo->fetchNum('SELECT id FROM co_ordiniservizio WHERE id='.prepare($idordineservizio)." AND stato='aperto'"); if ($n == 1) { // Eliminazione ordine di servizio if ($dbo->query('DELETE FROM co_ordiniservizio WHERE id='.prepare($idordineservizio))) { // Eliminazione voci di servizio collegate $dbo->query('DELETE FROM co_ordiniservizio_vociservizio WHERE idordineservizio='.prepare($idordineservizio)); flash()->info(tr('Ordine di servizio eliminato correttamente!')); } } // Non si può eliminare l'ordine di servizio perché è chiuso else { flash()->info(tr('Ordine di servizio già chiuso, impossibile eliminarlo!')); } } echo '

'.tr('Pianificazione ordini di servizio').'

'; echo '

'.tr('Qui puoi programmare gli ordini di servizio del contratto').'.

'; /* Ordini di servizio pianificati */ // (SELECT idsede FROM my_impianti WHERE idimpianto=co_ordiniservizio.idimpianto) $rs = $dbo->fetchArray("SELECT *, (SELECT CONCAT_WS(' ', nomesede, citta) FROM an_sedi WHERE id=(SELECT idsede FROM my_impianti WHERE idimpianto=co_ordiniservizio.idimpianto LIMIT 0,1)) AS sede, (SELECT CONCAT_WS(' - ', matricola, nome) FROM my_impianti WHERE id=co_ordiniservizio.idimpianto) AS impianto, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=co_ordiniservizio.idintervento) AS data_intervento FROM co_ordiniservizio WHERE idcontratto=".prepare($id_record).' ORDER BY data_scadenza ASC'); if (empty($rs)) { echo '

'.tr('Non sono ancora stati pianificati ordini di servizio').'...

'; } else { echo ' '; $prev_mese = ''; foreach ($rs as $r) { echo ' '; } else { echo ' '.$mesi[intval(date('m', strtotime($r['data_scadenza']))) - 1].' '.date('Y', strtotime($r['data_scadenza'])).''; } // Sede if ($r['sede'] == '') { $sede = 'Sede legale'; } else { $sede = $r['sede']; } echo ' '; // Impianto echo ' '; // Voci di servizio $rs2 = $dbo->fetchArray('SELECT * FROM co_ordiniservizio_vociservizio WHERE idordineservizio='.prepare($r['id']).' ORDER BY categoria ASC'); echo ' '; // Stato echo ' '; // Funzioni echo ' '; $prev_mese = $r['data_scadenza']; } echo '
'.tr('Entro').' '.tr('Sede').' '.tr('Impianto').' '.tr('Voci di servizio').' '.tr('Stato').'
'; // Data scadenza if ($prev_mese != $r['data_scadenza']) { echo ' '.$mesi[intval(date('m', strtotime($r['data_scadenza']))) - 1].' '.date('Y', strtotime($r['data_scadenza'])).' '.$sede.' '.Modules::link('MyImpianti', $r['idimpianto'], $r['impianto']).' '; // Popup voci di servizio echo '
'; if (empty($rs2)) { echo '

'.tr('Non sono state pianificate voci di servizio').'...

'; } else { echo ' '; $prev_cat = ''; for ($v = 0; $v < sizeof($rs2); ++$v) { if ($rs2[$v]['categoria'] != $prev_cat) { echo ' '; } echo ' '; $prev_cat = $rs2[$v]['categoria']; } echo '
'.tr('Voci di servizio').' '.tr('Eseguito').'
'.$rs2[$v]['categoria'].'
'.$rs2[$v]['voce'].' '; // intervento non ancora eseguito if (empty($r['idintervento'])) { echo ' '.tr('non ancora eseguito').' '; } else { $res = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE id='.prepare($rsp[$i]['idintervento'])); echo ' '.Modules::link('Interventi', $r['idintervento'], tr('Intervento num. _NUM_ del _DATE_', [ '_NUM_' => $res['codice'], '_DATE_' => Translator::dateToLocale($r[0]['data_intervento']), ])).' '; } echo '
'; } echo '
'; if (empty($r['idintervento'])) { echo ' '.tr('aperto').''; } else { echo ' '.tr('chiuso').'/span>'; } echo ' '; if (empty($r['idintervento'])) { echo ' '; } echo '
'; } echo '

'; /* Schema per aggiungere ordini di servizio */ $rs = $dbo->fetchArray('SELECT * FROM in_vociservizio ORDER BY categoria ASC'); if (empty($rs)) { echo '

'.tr('Non sono ancora state inserite voci di servizio').'. '.tr('Inizia ora').'...

'; } // Elenco voci di servizio con mesi in cui eseguirle else { // Calcolo mese iniziale e finale del contratto $rs2 = $dbo->fetchArray('SELECT data_accettazione, data_conclusione, TIMESTAMPDIFF(MONTH, data_accettazione, data_conclusione) AS mesi FROM co_contratti WHERE id='.prepare($id_record)); if (!empty($rs2[0]['data_accettazione']) && !empty($rs2[0]['data_conclusione'])) { $n_mesi = $rs2[0]['mesi'] + 1; $mese_start = date('m', strtotime($rs2[0]['data_accettazione'])); echo '
'; // Selezione impianto echo '
{[ "type": "select", "label": "'.tr('Impianto').'", "name": "matricola", "values": "query=SELECT my_impianti.id, CONCAT(my_impianti.matricola, \" - \", my_impianti.nome) AS descrizione, an_sedi.optgroup FROM my_impianti INNER JOIN (SELECT id, CONCAT(an_sedi.nomesede, \"(\", an_sedi.citta, \")\") AS optgroup FROM an_sedi WHERE idanagrafica='.prepare($record['idanagrafica']).' UNION SELECT 0, \'Sede legale\') AS an_sedi ON my_impianti.idsede = an_sedi.id WHERE my_impianti.idanagrafica='.prepare($record['idanagrafica']).' AND my_impianti.id NOT IN(SELECT idimpianto FROM co_ordiniservizio WHERE idcontratto='.prepare($id_record).') ORDER BY idsede ASC, matricola ASC" ]}
'; // Indice voci di servizio echo '
{[ "type": "select", "label": "'.tr('Voci di servizio da pianificare').'", "name": "idvoce[]", "values": "query=SELECT id, descrizione, categoria AS optgroup FROM in_vociservizio ORDER BY categoria ASC", "multiple": 1, "extra": "onchange=\"$(this).find(\'option\').each( function(){ if( $(this).is(\':selected\') ){ $(\'#voce_\'+$(this).val()).removeClass(\'hide\'); }else{ $(\'#voce_\'+$(this).val()).addClass(\'hide\'); } });\"" ]}
'; // voci di servizio foreach ($rs as $r) { echo '
'.$r['id'].' - '.$r['descrizione'].'
'; for ($j = 0; $j < $n_mesi; ++$j) { $id_mese = date('Ym', strtotime($rs2[0]['data_accettazione'].' +'.$j.' month')); $nome_mese = $mesi[intval(date('m', strtotime($rs2[0]['data_accettazione'].' +'.$j.' month'))) - 1].' '.date('Y', strtotime($rs2[0]['data_accettazione'].' +'.$j.' month')); echo '
'; } echo '
'; } echo '

'; echo ' '; /* Copia pianificazione da una già fatta per un impianto ad un'altra */ // Opzione di copia pianificazione solo se ci sono ancora impianti non pianificati $query2 = 'SELECT * FROM my_impianti WHERE idanagrafica='.prepare($record['idanagrafica']).' AND id IN (SELECT idimpianto FROM co_ordiniservizio WHERE idcontratto='.prepare($id_record).')'; $cont = $dbo->fetchNum($query2); if ($cont > 0) { // Elenco impianti già pianificati echo '
{[ "type": "select", "label": "'.tr('Copiare la pianificazione da un altro impianto').'", "name": "matricola_src", "values": "query=SELECT my_impianti.id, CONCAT(my_impianti.matricola, \" - \", my_impianti.nome) AS descrizione, an_sedi.optgroup FROM my_impianti INNER JOIN (SELECT id, CONCAT(an_sedi.nomesede, \"(\", an_sedi.citta, \")\") AS optgroup FROM an_sedi WHERE idanagrafica='.prepare($record['idanagrafica']).' UNION SELECT 0, \'Sede legale\') AS an_sedi ON my_impianti.idsede = an_sedi.id WHERE my_impianti.idanagrafica='.prepare($record['idanagrafica']).' AND my_impianti.id IN(SELECT idimpianto FROM co_ordiniservizio WHERE idcontratto='.prepare($id_record).') ORDER BY idsede ASC, matricola ASC" ]}
'; echo '

'; echo ' '; } echo '
'; } else { echo '

'.tr('Le date di accettazione e conclusione del contratto non sono ancora state impostate').'

'; } } echo '
';