diff --git a/modules/impianti/ajax/select.php b/modules/impianti/ajax/select.php index 2587fc5bf..47e0491bc 100755 --- a/modules/impianti/ajax/select.php +++ b/modules/impianti/ajax/select.php @@ -49,6 +49,11 @@ switch ($resource) { $where[] = 'my_impianti.idsede='.prepare($superselect['idsede_destinazione'] ?: 0); } + + if (!empty($superselect['idintervento'])) { + $where[] = 'my_impianti.id NOT IN(SELECT idimpianto FROM my_impianti_interventi WHERE idintervento='.prepare($superselect['idintervento']).')'; + } + if (!empty($search)) { $search_fields[] = 'my_impianti.nome LIKE '.prepare('%'.$search.'%'); $search_fields[] = 'my_impianti.matricola LIKE '.prepare('%'.$search.'%'); diff --git a/plugins/impianti_intervento/actions.php b/plugins/impianti_intervento/actions.php new file mode 100644 index 000000000..e2aff50f7 --- /dev/null +++ b/plugins/impianti_intervento/actions.php @@ -0,0 +1,93 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +use Modules\Checklists\Check; + +$operazione = filter('op'); + +switch ($operazione) { + case 'add_impianto': + if (post('id_impianto')) { + $dbo->query('INSERT INTO my_impianti_interventi(idimpianto, idintervento) VALUES('.prepare(post('id_impianto')).', '.prepare($id_record).')'); + + $checks_impianti = $dbo->fetchArray('SELECT * FROM zz_checks WHERE id_module = '.prepare(Modules::get('Impianti')['id']).' AND id_record = '.prepare(post('id_impianto'))); + foreach ($checks_impianti as $check_impianto) { + $id_parent_new = null; + if ($check_impianto['id_parent']) { + $parent = $dbo->selectOne('zz_checks', '*', ['id' => $check_impianto['id_parent']]); + $id_parent_new = $dbo->selectOne('zz_checks', '*', ['content' => $parent['content'], 'id_module' => $id_module, 'id_record' => $id_record])['id']; + } + $check = Check::build($user, $structure, $id_record, $check_impianto['content'], $id_parent_new, $check_impianto['is_titolo'], $check_impianto['order'], Modules::get('Impianti')['id'], post('id_impianto')); + $check->id_module = $id_module; + $check->id_plugin = $id_plugin; + $check->note = $check_impianto['note']; + $check->save(); + } + + flash()->info(tr('Impianto aggiunto correttamente!')); + } else { + flash()->warning(tr('Selezionare un impianto!')); + } + + break; + + case 'update_impianto': + $components = (array) post('componenti'); + $note = post('note'); + $id_impianto = post('id_impianto'); + + $dbo->query('DELETE FROM my_componenti_interventi WHERE id_componente IN (SELECT id FROM my_componenti WHERE id_impianto = '.prepare($id_impianto).') AND id_intervento = '.prepare($id_record)); + + foreach ($components as $component) { + $dbo->query('INSERT INTO my_componenti_interventi(id_componente, id_intervento) VALUES ('.prepare($component).', '.prepare($id_record).')'); + } + + $dbo->update('my_impianti_interventi', [ + 'note' => $note + ], [ + 'idintervento' => $id_record, + 'idimpianto' => $id_impianto + ]); + + flash()->info(tr('Impianto modificato correttamente!')); + + break; + + case 'delete_impianto': + $dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record).' AND idimpianto = '.prepare(post('id'))); + Check::deleteLinked([ + 'id_module' => $id_module, + 'id_record' => $id_record, + 'id_module_from' => Modules::get('Impianti')['id'], + 'id_record_from' => post('id'), + ]); + + $components = $dbo->fetchArray('SELECT * FROM my_componenti WHERE id_impianto = '.prepare($matricola)); + if (!empty($components)) { + foreach ($components as $component) { + $dbo->query('DELETE FROM my_componenti_interventi WHERE id_componente = '.prepare($component['id']).' AND id_intervento = '.prepare($id_record)); + } + } + + flash()->info(tr('Impianto rimosso correttamente!')); + + break; +} diff --git a/plugins/impianti_intervento/edit.php b/plugins/impianti_intervento/edit.php new file mode 100644 index 000000000..77b5bae53 --- /dev/null +++ b/plugins/impianti_intervento/edit.php @@ -0,0 +1,148 @@ +. + */ + +include_once __DIR__.'/../../core.php'; + +use Modules\Checklists\Check; + +$modulo_impianti = Modules::get('Impianti'); + +// Blocco della modifica impianti se l'intervento è completato +$dati_intervento = $dbo->fetchArray('SELECT `in_statiintervento`.`is_completato` FROM `in_statiintervento` INNER JOIN `in_interventi` ON `in_statiintervento`.`id` = `in_interventi`.`idstatointervento` WHERE `in_interventi`.`id`='.prepare($id_record)); +$is_completato = $dati_intervento[0]['is_completato']; + +if ($is_completato) { + $readonly = 'readonly'; + $disabled = 'disabled'; +} else { + $readonly = ''; + $disabled = ''; +} + +/* + * Aggiunta impianti all'intervento +*/ +// Elenco impianti collegati all'intervento +$impianti = $dbo->fetchArray('SELECT idimpianto FROM my_impianti_interventi WHERE idintervento='.prepare($id_record)); +$impianti = !empty($impianti) ? array_column($impianti, 'idimpianto') : []; + +// Elenco sedi +$sedi = $dbo->fetchArray('SELECT id, nomesede, citta FROM an_sedi WHERE idanagrafica='.prepare($record['idanagrafica'])." UNION SELECT 0, 'Sede legale', '' ORDER BY id"); + +echo ' +
+ | '.tr('Matricola').' | +'.tr('Nome').' | +'.tr('Data').' | +'.tr('Note').' | +'.tr("Componenti soggetti all'intervento").' | +Checklist | ++ |
---|---|---|---|---|---|---|---|
+ + + | +'.$impianto['matricola'].' | +'.Modules::link('Impianti', $impianto['id'], $impianto['nome']).' | +'.Translator::dateToLocale($impianto['data']).' | ++ {[ "type": "textarea", "name": "note", "id": "note_imp_'.$impianto['id'].'", "value": "'.$impianto['note'].'", "onchange": "updateImpianto($(this).closest(\'tr\').data(\'id\'))", "readonly": "'.!empty($readonly).'", "disabled": "'.!empty($disabled).'" ]} + | +'; + $inseriti = $dbo->fetchArray('SELECT * FROM my_componenti_interventi WHERE id_intervento = '.prepare($id_record)); + $ids = array_column($inseriti, 'id_componente'); + + echo ' + {[ "type": "select", "multiple": 1, "name": "componenti[]", "id": "componenti_imp_'.$impianto['id'].'", "ajax-source": "componenti", "select-options": {"matricola": '.$impianto['id'].'}, "value": "'.implode(',', $ids).'", "onchange": "updateImpianto($(this).closest(\'tr\').data(\'id\'))", "readonly": "'.!empty($readonly).'", "disabled": "'.!empty($disabled).'" ]} + + | ++ | + |