From 7d21789e85194a585c55ea3932d50db978736a83 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Thu, 5 Aug 2021 18:17:26 +0200 Subject: [PATCH] Conversione Componenti Impianti al nuovo formato Revisione Plugin Componenti precedentemente aggiornato --- composer.json | 3 +- include/common/articolo.php | 2 +- modules/gestione_componenti/ajax/select.php | 62 ---- modules/impianti/ajax/select.php | 32 ++ .../plugins/my_impianti.componenti.php | 340 ----------------- .../plugins/my_impianti.interventi.php | 14 +- modules/interventi/actions.php | 18 +- modules/interventi/modutil.php | 2 + .../plugins/my_impianti.interventi.php | 4 +- modules/newsletter/actions.php | 2 +- plugins/componenti/actions.php | 116 ++---- plugins/componenti/add.php | 6 +- plugins/componenti/edit.php | 348 ++++++++++-------- plugins/componenti/src/Componente.php | 87 +++++ update/2_4_25.php | 27 ++ update/2_4_25.sql | 32 ++ update/tables.php | 2 +- 17 files changed, 458 insertions(+), 639 deletions(-) delete mode 100755 modules/gestione_componenti/ajax/select.php delete mode 100755 modules/impianti/plugins/my_impianti.componenti.php create mode 100644 plugins/componenti/src/Componente.php create mode 100644 update/2_4_25.php diff --git a/composer.json b/composer.json index 789728b3b..82ec128c0 100755 --- a/composer.json +++ b/composer.json @@ -109,7 +109,8 @@ "Plugins\\PianificazioneFatturazione\\": ["plugins/pianificazione_fatturazione/custom/src/", "plugins/pianificazione_fatturazione/src/"], "Plugins\\StatisticheArticoli\\": ["plugins/statistiche_articoli/custom/src/", "plugins/statistiche_articoli/src/"], "Plugins\\ListinoClienti\\": ["plugins/listino_clienti/custom/src/", "plugins/listino_clienti/src/"], - "Plugins\\ListinoFornitori\\": ["plugins/listino_fornitori/custom/src/", "plugins/listino_fornitori/src/"] + "Plugins\\ListinoFornitori\\": ["plugins/listino_fornitori/custom/src/", "plugins/listino_fornitori/src/"], + "Plugins\\ComponentiImpianti\\": ["plugins/componenti/custom/src/", "plugins/componenti/src/"] }, "files": [ "lib/functions.php", diff --git a/include/common/articolo.php b/include/common/articolo.php index cd81098b8..ad09a52ac 100755 --- a/include/common/articolo.php +++ b/include/common/articolo.php @@ -74,7 +74,7 @@ if ($module['name'] == 'Interventi') { echo '
- {[ "type": "select", "label": "'.tr('Impianto su cui installare').'", "name": "idimpianto", "value": "'.$idimpianto.'", "ajax-source": "impianti-intervento", "select-options": '.json_encode($options['select-options']['impianti']).' ]} + {[ "type": "select", "label": "'.tr('Impianto su cui installare').'", "name": "id_impianto", "value": "", "ajax-source": "impianti-intervento", "select-options": '.json_encode($options['select-options']['impianti']).', "help": "'.tr("La selezione di un Impianto in questo campo provocherà l'installazione di un nuovo Componente basato sull'Articolo corrente").'" ]}
'; } diff --git a/modules/gestione_componenti/ajax/select.php b/modules/gestione_componenti/ajax/select.php deleted file mode 100755 index 28a3f15fe..000000000 --- a/modules/gestione_componenti/ajax/select.php +++ /dev/null @@ -1,62 +0,0 @@ -. - */ - -use Util\Ini; - -include_once __DIR__.'/../../../core.php'; - -switch ($resource) { - /* - * Opzioni utilizzate: - * - matricola - */ - case 'componenti': - if (isset($superselect['matricola'])) { - $query = 'SELECT id, nome AS descrizione, contenuto FROM my_impianto_componenti |where| ORDER BY id'; - - foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); - } - - $temp = []; - $impianti = explode(',', $superselect['matricola']); - foreach ($impianti as $key => $idimpianto) { - $temp[] = 'idimpianto='.prepare($idimpianto); - } - $where[] = '('.implode(' OR ', $temp).')'; - - if (!empty($search)) { - $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); - } - - $results = AJAX::selectResults($query, $where, $filter, $search, $limit, $custom); - $data = $results['results']; - foreach ($data as $key => $value) { - $matricola = Ini::getValue($value['contenuto'], 'Matricola'); - - $data[$key]['text'] = (empty($matricola) ? '' : $matricola.' - ').$data[$key]['text']; - - unset($data[$key]['contenuto']); - } - - $results['results'] = $data; - } - - break; -} diff --git a/modules/impianti/ajax/select.php b/modules/impianti/ajax/select.php index d3092fdf2..a86f28ccf 100755 --- a/modules/impianti/ajax/select.php +++ b/modules/impianti/ajax/select.php @@ -77,4 +77,36 @@ switch ($resource) { } } break; + + /* + * Opzioni utilizzate: + * - matricola + */ + case 'componenti': + if (isset($superselect['matricola'])) { + $query = 'SELECT my_componenti.id, CONCAT("#", my_componenti.id, ": ", mg_articoli.codice, " - ", mg_articoli.descrizione) AS descrizione + FROM my_componenti + INNER JOIN mg_articoli ON mg_articoli.id = my_componenti.id_articolo + |where| ORDER BY my_componenti.id'; + + foreach ($elements as $element) { + $filter[] = 'my_componenti.id = '.prepare($element); + } + + $where = [ + 'my_componenti.data_sostituzione IS NULL', + 'my_componenti.data_rimozione IS NULL', + ]; + + $impianti = $superselect['matricola']; + if (!empty($impianti)){ + $where[] = 'my_componenti.id_impianto IN ('.$impianti.')'; + } + + if (!empty($search)) { + $search[] = 'my_componenti.note LIKE '.prepare('%'.$search.'%'); + } + } + + break; } diff --git a/modules/impianti/plugins/my_impianti.componenti.php b/modules/impianti/plugins/my_impianti.componenti.php deleted file mode 100755 index 2516c7fb8..000000000 --- a/modules/impianti/plugins/my_impianti.componenti.php +++ /dev/null @@ -1,340 +0,0 @@ -. - */ - -use Modules\Interventi\Intervento; -use Util\Ini; - -include_once __DIR__.'/../../../core.php'; - -switch (filter('op')) { - case 'modifica_componente': - $idcomponente = get('id'); - $data = post('data_componente'); - - // Ricavo il valore di contenuto leggendolo dal db - $query = 'SELECT * FROM my_impianto_componenti WHERE idimpianto='.prepare($id_record).' AND id='.prepare($idcomponente); - $rs = $dbo->fetchArray($query); - $contenuto = $rs[0]['contenuto']; - - $contenuto = Ini::write($contenuto, $post); - - $query = 'UPDATE my_impianto_componenti SET data='.prepare($data).', contenuto='.prepare($contenuto).' WHERE idimpianto='.prepare($id_record).' AND id='.prepare($idcomponente); - $dbo->query($query); - - flash()->info(tr('Informazioni componente aggiornate correttamente!')); - - $_SESSION['idcomponente'] = $idcomponente; - break; - - case 'aggiunta_componente': - $filename = get('filename'); - - if (!empty($filename)) { - $contenuto = file_get_contents(base_dir().'/files/impianti/'.$filename); - $nome = Ini::getValue(Ini::readFile(base_dir().'/files/impianti/'.$filename), 'Nome'); - - $query = 'INSERT INTO my_impianto_componenti(filename, idimpianto, contenuto, nome, data) VALUES('.prepare($filename).', '.prepare($id_record).', '.prepare($contenuto).', '.prepare($nome).', NOW())'; - $dbo->query($query); - - $idcomponente = $dbo->lastInsertedID(); - $_SESSION['idcomponente'] = $idcomponente; - - flash()->info(tr("Aggiunto un nuovo componente all'impianto!")); - } - break; - - case 'sostituzione_componente': - $filename = get('filename'); - $id = get('id'); - - $nome = Ini::getValue(Ini::readFile(base_dir().'/files/impianti/'.$filename), 'Nome'); - $contenuto = file_get_contents(base_dir().'/files/impianti/'.$filename); - - // Verifico che questo componente non sia già stato sostituito - $query = 'SELECT * FROM my_impianto_componenti WHERE idsostituto = '.prepare($id); - $rs = $dbo->fetchArray($query); - - if (empty($rs)) { - // Inserisco il nuovo componente in sostituzione - $query = 'INSERT INTO my_impianto_componenti(idsostituto, filename, idimpianto, contenuto, nome, data) VALUES('.prepare($id).', '.prepare($filename).', '.prepare($id_record).', '.prepare($contenuto).', '.prepare($nome).', NOW())'; - $dbo->query($query); - - $idcomponente = $dbo->lastInsertedID(); - $_SESSION['idcomponente'] = $idcomponente; - - // Aggiorno la data di sostituzione del componente precedente - $query = 'UPDATE my_impianto_componenti SET data_sostituzione = NOW() WHERE idimpianto = '.prepare($id_record).' AND id = '.prepare($id); - $dbo->query($query); - - flash()->info(tr('Aggiunto un nuovo componente in sostituzione al precedente!')); - } else { - flash()->error(tr('Questo componente è già stato sostituito!').' '.('Nessuna modifica applicata')); - } - break; - - case 'unaggiunta_componente': - $idcomponente = filter('id'); - - $query = 'DELETE FROM my_impianto_componenti WHERE id='.prepare($idcomponente).' AND idimpianto='.prepare($id_record); - $dbo->query($query); - - flash()->info(tr("Rimosso componente dall'impianto!")); - break; -} - -// Componenti non ancora collegati -if (empty($id_list)) { - $id_list = '0'; -} - -echo ' -
-
-

'.tr('Componenti installati').'

-
-
'; - -// Elenca i componenti disponibili -$componenti_disponibili = Ini::getList(base_dir().'/files/impianti/', $id_list); -echo ' -
-
- -
- -
- -
-
- -
-
'; - -// Mostro tutti i componenti utilizzati elencando quelli attualmente installati per primi. -$q2 = 'SELECT * FROM my_impianto_componenti WHERE idimpianto = '.prepare($id_record).' ORDER by nome ASC, idsostituto DESC'; -$componenti_installati = $dbo->fetchArray($q2); - -if (!empty($componenti_installati)) { - $prev_componente = ''; - - echo ' -
'; - - // Ciclo tra tutti i componenti - foreach ($componenti_installati as $componente) { - $contenuto = $componente['contenuto']; - - $nome_componente = $componente['nome']; - $filename = $componente['filename']; - - if (empty($componente['data_sostituzione'])) { - $stato_componente = tr('INSTALLATO in data _DATE_', [ - '_DATE_' => dateFormat($componente['data']), - ]); - } else { - $stato_componente = tr('SOSTITUITO in data _DATE_', [ - '_DATE_' => dateFormat($componente['data_sostituzione']), - ]); - } - - // Per più "versioni" dello stesso componente mostro un riga meno evidente - // per non confonderlo come componente in uso in questo momento - $same = ($prev_componente == $nome_componente); - - if (get('id') == $componente['id']) { - $collapsed = ''; - $icon = 'minus'; - } elseif ($_SESSION['idcomponente'] == $componente['id']) { - unset($_SESSION['idcomponente']); - $collapsed = ''; - $icon = 'minus'; - } else { - $collapsed = 'collapsed-box'; - $icon = 'plus'; - } - - echo ' -
-
-

'. - ($same ? '' : '').$nome_componente.' ('.$stato_componente.')'.($same ? '' : '').' -

- -
- -
-
'; - - echo ' -
-
-
- '; - - // Nome - echo ' -
- {[ "type": "span", "label": "'.tr('Nome').':", "name": "nome", "value": "'.$componente['nome'].'" ]} -
'; - - // Data - echo ' -
- {[ "type": "date", "label": "'.tr('Data').':", "name": "data_componente", "id": "data_componente'.$j.'", "value": "'.$componente['data'].'" ]} -
'; - - // Campi previsti dal componente - $fields = Ini::getFields($contenuto); - array_shift($fields); - foreach ($fields as $field) { - echo ' -
- '.$field.' -
'; - } - - // Interventi collegati al componente - $interventi_collegati = Intervento::join('my_componenti_interventi', 'my_componenti_interventi.id_intervento', '=', 'in_interventi.id') - ->where('id_componente', $componente['id']) - ->get(); - if (!$interventi_collegati->isEmpty()) { - echo ' -
- '.tr('Interventi collegati').': - - - - - - - - '; - - foreach ($interventi_collegati as $intervento) { - echo ' - - - - - - - '; - } - - echo ' -
'.tr('Codice').''.tr('Tipo').''.tr('Stato').''.tr('Data richiesta').''.tr('Dettagli').'
'.$intervento->codice.''.$intervento->tipo->descrizione.''.$intervento->stato->descrizione.''.dateFormat($intervento->data_richiesta).''.Modules::link('Interventi', $intervento->id, null, '-').'
-
'; - } else { - echo ' -
-
-
- '.tr('Nessuna attività collegato a questo componente!').' -
-
'; - } - - // Intervento di installazione del componente - if (!empty($componente['idintervento'])) { - $intervento_origine = Intervento::find($componente['idintervento']); - - echo ' - '.Modules::link('Interventi', $componente['idintervento'], $intervento_origine->getReference()).'
'; - } - - echo ' -
-
'; - - // Pulsante Salva/Elimina - echo ' -
- '.tr('Elimina').''; - - // Sostituisci componente con un altro dello stesso tipo, posso sostituire solo i componenti installati - if (empty($componente['data_sostituzione'])) { - echo ' - '; - } else { - echo ' - '; - } - - echo ' - '; - - echo ' -
-
-
-
-
'; - $prev_componente = $nome_componente; - } - echo ' -
'; -} else { - echo ' -
'.tr('Nessun componente inserito').'.
'; -} - -echo ' -
-
- -'; diff --git a/modules/impianti/plugins/my_impianti.interventi.php b/modules/impianti/plugins/my_impianti.interventi.php index 93aedaae5..89ca3a1d4 100644 --- a/modules/impianti/plugins/my_impianti.interventi.php +++ b/modules/impianti/plugins/my_impianti.interventi.php @@ -23,7 +23,7 @@ $matricole = (array) post('matricole'); // Salvo gli impianti selezionati if (filter('op') == 'link_impianti') { - $matricole_old = $dbo->fetchArray('SELECT * FROM my_impianti_interventi WHERE idintervento='.prepare($id_record)); + $matricole_old = $dbo->fetchArray('SELECT * FROM my_impianti_interventi WHERE idintervento = '.prepare($id_record)); $matricole_old = array_column($matricole_old, 'idimpianto'); // Individuazione delle matricole mancanti @@ -31,7 +31,7 @@ if (filter('op') == 'link_impianti') { if (!in_array($matricola, $matricole)) { $dbo->query('DELETE FROM my_impianti_interventi WHERE idintervento='.prepare($id_record).' AND idimpianto = '.prepare($matricola)); - $components = $dbo->fetchArray('SELECT * FROM my_impianto_componenti WHERE idimpianto = '.prepare($matricola)); + $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)); @@ -51,7 +51,7 @@ if (filter('op') == 'link_impianti') { $components = (array) post('componenti'); $id_impianto = post('id_impianto'); - $dbo->query('DELETE FROM my_componenti_interventi WHERE id_componente IN (SELECT id FROM my_impianto_componenti WHERE idimpianto = '.prepare($id_impianto).') AND id_intervento = '.prepare($id_record)); + $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).')'); @@ -87,13 +87,13 @@ echo '
'; foreach ($impianti_collegati as $impianto) { echo ' -
+
'; // MATRICOLA echo ' - + '; @@ -135,7 +135,9 @@ foreach ($impianti_collegati as $impianto) { {[ "type": "select", "label": "'.tr('Componenti').'", "multiple": 1, "name": "componenti[]", "id": "componenti_'.$impianto['id'].'", "ajax-source": "componenti", "select-options": {"matricola": '.$impianto['id'].'}, "value": "'.implode(',', $ids).'", "readonly": "'.!empty($readonly).'", "disabled": "'.!empty($disabled).'" ]} - + diff --git a/modules/interventi/actions.php b/modules/interventi/actions.php index aca18cec5..829bac224 100644 --- a/modules/interventi/actions.php +++ b/modules/interventi/actions.php @@ -23,6 +23,7 @@ use Modules\Anagrafiche\Anagrafica; use Modules\Articoli\Articolo as ArticoloOriginale; use Modules\Emails\Mail; use Modules\Emails\Template; +use Modules\Impianti\Impianto; use Modules\Interventi\Components\Articolo; use Modules\Interventi\Components\Riga; use Modules\Interventi\Components\Sconto; @@ -30,6 +31,7 @@ use Modules\Interventi\Components\Sessione; use Modules\Interventi\Intervento; use Modules\Interventi\Stato; use Modules\TipiIntervento\Tipo as TipoSessione; +use Plugins\ComponentiImpianti\Componente; use Plugins\PianificazioneInterventi\Promemoria; switch (post('op')) { @@ -228,7 +230,7 @@ switch (post('op')) { $intervento->delete(); // Elimino il collegamento al componente - $dbo->query('DELETE FROM my_impianto_componenti WHERE idintervento='.prepare($id_record)); + $dbo->query('DELETE FROM my_componenti WHERE idintervento='.prepare($id_record)); // Eliminazione associazione tecnici collegati all'intervento $dbo->query('DELETE FROM in_interventi_tecnici WHERE idintervento='.prepare($id_record)); @@ -331,8 +333,18 @@ switch (post('op')) { flash()->info(tr('Articolo aggiunto!')); } - // Collegamento all'impianto - link_componente_to_articolo($id_record, post('idimpianto'), $articolo->idarticolo, $qta); + // Collegamento all'Impianto tramite generazione Componente + $id_impianto = post('id_impianto'); + $impianto = Impianto::find($id_impianto); + if (!empty($impianto)){ + // Data di inizio dell'intervento (data_richiesta in caso di assenza di sessioni) + $data_registrazione = $intervento->inizio ?: $intervento->data_richiesta; + + // Creazione in base alla quantità + for ($q = 0; $q < $articolo->qta; ++$q) { + $componente = Componente::build($impianto, $articolo->articolo, $data_registrazione); + } + } break; diff --git a/modules/interventi/modutil.php b/modules/interventi/modutil.php index e6afbe9d8..288f9e802 100755 --- a/modules/interventi/modutil.php +++ b/modules/interventi/modutil.php @@ -52,6 +52,8 @@ function get_ore_intervento($id_intervento) * @param int $id_impianto * @param int $id_articolo * @param int $qta + * + * @deprecated 2.4.25 */ function link_componente_to_articolo($id_intervento, $id_impianto, $id_articolo, $qta) { diff --git a/modules/interventi/plugins/my_impianti.interventi.php b/modules/interventi/plugins/my_impianti.interventi.php index 05160a8df..2f5b5300a 100755 --- a/modules/interventi/plugins/my_impianti.interventi.php +++ b/modules/interventi/plugins/my_impianti.interventi.php @@ -68,7 +68,9 @@ if (!empty($results)) {
'.tr('Matricola').':'.tr('Matricola').': '.$impianto['matricola'].'
'; } else { echo ' -
'.tr('Nessun intervento su questo impianto').'.
'; +
+ '.tr('Nessun intervento su questo impianto').'. +
'; } echo ' diff --git a/modules/newsletter/actions.php b/modules/newsletter/actions.php index 68289a52e..5c085652e 100755 --- a/modules/newsletter/actions.php +++ b/modules/newsletter/actions.php @@ -66,7 +66,7 @@ switch (filter('op')) { $destinatari = $newsletter->destinatari(); $count = $destinatari->count(); - for ($i = 0; $i < $count; $i++) { + for ($i = 0; $i < $count; ++$i) { $destinatario = $destinatari->skip($i)->first(); $origine = $destinatario->getOrigine(); diff --git a/plugins/componenti/actions.php b/plugins/componenti/actions.php index 9a899844c..97c717248 100644 --- a/plugins/componenti/actions.php +++ b/plugins/componenti/actions.php @@ -20,105 +20,69 @@ include_once __DIR__.'/../../core.php'; use Carbon\Carbon; +use Modules\Articoli\Articolo; +use Modules\Impianti\Impianto; +use Plugins\ComponentiImpianti\Componente; $operazione = filter('op'); switch ($operazione) { - case 'update': - $articolo = (array) post('id_articolo'); - $data_installazione = (array) post('data_installazione'); - $data_disinstallazione = (array) post('data_disinstallazione'); - $data_registrazione = (array) post('data_registrazione'); - $note = (array) post('note'); + case 'add': + $impianto = Impianto::find($id_record); - $key = key($articolo); + $id_articolo = filter('id_articolo'); + $articolo = Articolo::find($id_articolo); - if (post('sostituito')) { - $field_articolo = 'pre_id_articolo'; - } else { - $field_articolo = 'id_articolo'; - } - - $dbo->update('my_componenti_articoli', [ - $field_articolo => $articolo[$key], - 'data_installazione' => $data_installazione[$key] ?: null, - 'data_disinstallazione' => $data_disinstallazione[$key] ?: null, - 'data_registrazione' => $data_registrazione[$key] ?: null, - 'note' => $note[$key], - ], ['id' => $key]); + $componente = Componente::build($impianto, $articolo, new Carbon()); flash()->info(tr('Salvataggio completato!')); - $dbo->commitTransaction(); - header('Location: '.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin); - exit; break; - case 'add': - $dbo->insert('my_componenti_articoli', [ - 'id_impianto' => $id_record, - 'data_registrazione' => Carbon::now(), - 'id_articolo' => post('id_articolo'), - ]); + case 'update': + $id_componente = filter('id_componente'); + $componente = Componente::find($id_componente); + + $componente->data_registrazione = filter('data_registrazione') ?: null; + $componente->data_installazione = filter('data_installazione') ?: null; + $componente->data_rimozione = filter('data_rimozione') ?: null; + $componente->note = filter('note') ?: null; + + $componente->save(); flash()->info(tr('Salvataggio completato!')); - break; case 'sostituisci': - $old_id = get('id_old'); - $old = $dbo->selectOne('my_componenti_articoli', '*', ['id' => $old_id]); + $id_componente = filter('id_componente'); + $componente = Componente::find($id_componente); - if (!empty($old['id_articolo'])) { - if (empty($old['data_disinstallazione'])) { - $data = Carbon::now(); - } else { - $data = $old['data_disinstallazione']; - } + // Creazione copia del componenten + $copia = $componente->replicate(); + $copia->data_registrazione = new Carbon(); + $copia->data_installazione = new Carbon(); + $copia->data_sostituzione = null; + $copia->data_rimozione = null; + // Rimozione riferimento intervento di installazione + $copia->id_intervento = null; + $copia->save(); - $dbo->update('my_componenti_articoli', [ - 'pre_id_articolo' => $old['id_articolo'], - 'id_articolo' => 0, - 'data_disinstallazione' => $data, - ], [ - 'id' => $old_id, - ]); + // Sostituzione del componente indicato + $componente->data_sostituzione = new Carbon(); + $componente->id_sostituzione = $copia->id; + $componente->save(); - $dbo->query('CREATE TEMPORARY TABLE tmp SELECT * FROM my_componenti_articoli WHERE id= '.prepare($old_id)); - $dbo->query('ALTER TABLE tmp DROP id'); - $dbo->query('INSERT INTO my_componenti_articoli SELECT NULL,tmp. * FROM tmp'); - $new_id = $dbo->lastInsertedID(); - $dbo->query('DROP TEMPORARY TABLE tmp'); - - $dbo->update('my_componenti_articoli', [ - 'id_articolo' => $old['id_articolo'], - 'pre_id_articolo' => 0, - 'data_registrazione' => Carbon::now(), - 'data_installazione' => $data, - 'data_disinstallazione' => null, - ], [ - 'id' => $new_id, - ]); - - flash()->info(tr('Informazioni salvate correttamente!')); - } else { - flash()->warning(tr('Inserire un articolo prima di effettuare la sostituzione!')); - } - - $dbo->commitTransaction(); - header('Location: '.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin); - exit; + flash()->info(tr('Informazioni salvate correttamente!')); break; - case 'delete': - $dbo->query('DELETE FROM my_componenti_articoli WHERE id='.prepare(get('id'))); + case 'rimuovi': + $id_componente = filter('id_componente'); + $componente = Componente::find($id_componente); - flash()->info(tr('Componente eliminato!')); - - $dbo->commitTransaction(); - header('Location: '.base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin); - exit; + $componente->data_rimozione = new Carbon(); + $componente->save(); + flash()->info(tr('Componente rimosso!')); break; } diff --git a/plugins/componenti/add.php b/plugins/componenti/add.php index 833d680a7..d8782dc0b 100644 --- a/plugins/componenti/add.php +++ b/plugins/componenti/add.php @@ -26,7 +26,7 @@ echo '
-
+
{["type": "select", "label": "'.tr('Articolo').'", "name": "id_articolo", "ajax-source": "articoli", "value": "", "required": 1, "select-options": {"permetti_movimento_a_zero": 1} ]}
@@ -34,7 +34,9 @@ echo '
- +
'; diff --git a/plugins/componenti/edit.php b/plugins/componenti/edit.php index 3e8010aab..effdf4523 100644 --- a/plugins/componenti/edit.php +++ b/plugins/componenti/edit.php @@ -17,177 +17,235 @@ * along with this program. If not, see . */ +use Models\Plugin; +use Plugins\ComponentiImpianti\Componente; + include_once __DIR__.'/../../core.php'; -echo '
'; +$compontenti_impianto = Componente::where('id_impianto', '=', $id_record); -$componenti = $dbo->fetchArray('SELECT my_componenti_articoli.*, my_impianti.idanagrafica, CONCAT(a.codice, " - ", a.descrizione) AS art_sostituito, CONCAT(b.codice, " - ", b.descrizione) AS art_installato, a.codice FROM my_componenti_articoli LEFT JOIN my_impianti ON my_componenti_articoli.id_impianto=my_impianti.id LEFT JOIN mg_articoli AS a ON my_componenti_articoli.pre_id_articolo=a.id LEFT JOIN mg_articoli AS b ON my_componenti_articoli.id_articolo=b.id WHERE id_impianto='.prepare($id_record).' ORDER BY data_registrazione, id_articolo DESC'); +$componenti_installati = (clone $compontenti_impianto) + ->whereNull('data_sostituzione') + ->whereNull('data_rimozione') + ->get(); +$componenti_sostituiti = (clone $compontenti_impianto) + ->whereNotNull('data_sostituzione') + ->get(); +$componenti_rimossi = (clone $compontenti_impianto) + ->whereNotNull('data_rimozione') + ->get(); -$installati = 0; -$disinstallati = 0; +echo generaListaComponenti($componenti_installati, [ + 'type' => 'primary', + 'title' => tr('Componenti installati'), + 'date' => 'data_installazione', + 'date_name' => tr('Installato'), +]); -foreach ($componenti as $componente) { - if (!empty($componente['pre_id_articolo'])) { - $id_articolo = $componente['pre_id_articolo']; - $check_value = 1; - $box = 'danger'; - $articolo = $componente['art_sostituito']; - $data = dateFormat($componente['data_disinstallazione']); - $text = 'DISINSTALLATO'; - $class = 'danger'; - $title = ''.tr('Storico').''; - $table = 'default'; - if ($disinstallati == 0) { - echo ' -
-
-

ARTICOLI DISINSTALLATI

-
-
-
'; - ++$disinstallati; - } - } else { - $id_articolo = $componente['id_articolo']; - $check_value = 0; - $box = 'primary'; - $articolo = $componente['art_installato']; - $data = dateFormat($componente['data_installazione']); - $text = 'INSTALLATO'; - $class = 'primary'; - $title = ''.tr('Dati').''; - $table = 'primary'; - if ($installati == 0) { - echo ' -
-
-

ARTICOLI INSTALLATI

-
-
-
'; - ++$installati; - } - } +echo generaListaComponenti($componenti_sostituiti, [ + 'type' => 'warning', + 'title' => tr('Componenti sostituiti'), + 'date' => 'data_sostituzione', + 'date_name' => tr('Sostituzione'), +]); - $allegati = $dbo->fetchOne('SELECT COUNT(id) AS num FROM zz_files WHERE id_plugin='.prepare($id_plugin).' AND id_record='.$componente['id'].' GROUP BY id_record')['num']; +echo generaListaComponenti($componenti_rimossi, [ + 'type' => 'danger', + 'title' => tr('Componenti rimossi'), + 'date' => 'data_rimozione', + 'date_name' => tr('Rimosso'), +]); - if ($allegati) { - $icon = 'fa fa-check text-success'; - } else { - $icon = 'fa fa-times text-danger'; +function generaListaComponenti($componenti, $options) +{ + $type = $options['type']; + $title = $options['title']; + $date = $options['date']; + $date_name = $options['date_name']; + + $database = database(); + $plugin = Plugin::pool('Componenti'); + $module = $plugin->module; + + if (empty($componenti) || $componenti->isEmpty()) { + return; } echo ' -
- - - - - +
+
+

'.$title.'

+
+
+
'; + echo ' +
+
+ + + + + + + + -
-
-
- -
'.tr('ID', [], ['upper' => true]).' + '.tr('Articolo', [], ['upper' => true]).' + '.tr($date_name, [], ['upper' => true]).''.tr('Registrazione', [], ['upper' => true]).''.tr('Allegati', [], ['upper' => true]).'
- - - - - - - - - - - - - -
'.tr('ARTICOLO').' - '.$text.''.tr('REGISTRAZIONE').''.tr('ALLEGATI').'
'.$articolo.''.$data.''.dateFormat($componente['data_registrazione']).'
- + '; -
- -
-
-
-
-
-

'.$title.'

-
- + foreach ($componenti as $componente) { + $articolo = $componente->articolo; + $numero_allegati = $database->fetchNum('SELECT id FROM zz_files WHERE id_plugin='.prepare($id_plugin).' AND id_record='.$componente['id'].' GROUP BY id_record'); -
- -
-
- {[ "type":"select","label":"'.tr('Articolo').'","name":"id_articolo['.$componente['id'].']", "required":"1","value":"'.$id_articolo.'", "ajax-source": "articoli", "select-options": {"permetti_movimento_a_zero": 1} ]} -
-
- {[ "type":"date","label":"'.tr('Data registrazione').'","name":"data_registrazione['.$componente['id'].']", "value":"'.$componente['data_registrazione'].'" ]} -
-
- {[ "type":"date","label":"'.tr('Data installazione').'","name":"data_installazione['.$componente['id'].']", "value":"'.$componente['data_installazione'].'" ]} -
+ $data = dateFormat($componente[$date]); + $icona_allegati = $numero_allegati == 0 ? 'fa fa-times text-danger' : 'fa fa-check text-success'; -
- {[ "type":"date","label":"'.tr('Data disinstallazione').'","name":"data_disinstallazione['.$componente['id'].']", "value":"'.$componente['data_disinstallazione'].'" ]} -
-
- -
-
- {[ "type":"textarea","label":"'.tr('Note').'","name":"note['.$componente['id'].']", "value":"'.$componente['note'].'" ]} -
-
- - -
-
- -
- '; - - if (!empty($componente['id_articolo'])) { echo ' -
- -
'; - } - echo ' -
- -
+ + #'.$componente->id.' + '.$articolo->codice.' - '.$articolo->descrizione.' + '.$data.' + '.dateFormat($componente->data_registrazione).' + + + +
+ +
+ + + + + +
+
+

'.tr('Dati').'

+
+ +
+ + + + + + + + + +
+
+ {[ "type": "select", "label": "'.tr('Articolo').'", "name": "id_articolo", "id": "id_articolo_'.$componente->id.'", "disabled": "1", "value": "'.$componente->id_articolo.'", "ajax-source": "articoli", "select-options": {"permetti_movimento_a_zero": 1} ]} +
+ +
+ {[ "type": "date", "label": "'.tr('Data registrazione').'", "name": "data_registrazione", "id": "data_registrazione_'.$componente->id.'", "value": "'.$componente['data_registrazione'].'" ]} +
+ +
+ {[ "type": "date", "label": "'.tr('Data installazione').'", "name": "data_installazione", "id": "data_installazione_'.$componente->id.'", "value": "'.$componente['data_installazione'].'" ]} +
+ +
+ {[ "type": "date", "label": "'.tr('Data rimozione').'", "name": "data_rimozione", "id": "data_rimozione_'.$componente->id.'", "value": "'.$componente['data_rimozione'].'" ]} +
+
+ +
+
+ {[ "type": "ckeditor", "label": "'.tr('Note').'", "name": "note", "id": "note_'.$componente->id.'", "value": "'.$componente['note'].'" ]} +
+
+ + +
'; + if (empty($componente->id_sostituzione)) { + echo ' +
+ +
'; + } + + echo ' +
+ +
'; + + if (empty($componente->id_sostituzione)) { + echo ' +
+ +
'; + } + echo ' +
+ +
+
+ +
-
-
-
-
- '; + + '; + } + + echo ' + + + +
+
'; } echo '