From 9d50ba0c6935a9144e2be381defecf8670eccf03 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Thu, 30 Aug 2018 18:20:30 +0200 Subject: [PATCH] Aggiornamento Pianificazione interventi Aggiornamento della struttura del plugin Pianificazione interventi, con test da effettuare. --- actions.php | 2 +- include/common/form.php | 5 +- modules/contratti/plugins/ajax_articoli.php | 18 +- modules/contratti/plugins/ajax_righe.php | 8 +- modules/fatture/add_descrizione.php | 49 --- plugins/pianificazione_interventi/actions.php | 367 ++++++++++++++++++ .../add_articolo.php | 193 +++++++++ .../pianificazione_interventi/add_righe.php | 122 ++++++ .../ajax_articoli.php | 150 +++++++ .../pianificazione_interventi/ajax_righe.php | 118 ++++++ plugins/pianificazione_interventi/edit.php | 236 +++++++++++ .../pianficazione.php | 267 +++++++++++++ src/Plugins.php | 2 +- src/Traits/PathTrait.php | 15 + update/2_4_1.sql | 2 +- update/2_4_2.sql | 6 + 16 files changed, 1490 insertions(+), 70 deletions(-) delete mode 100644 modules/fatture/add_descrizione.php create mode 100644 plugins/pianificazione_interventi/actions.php create mode 100644 plugins/pianificazione_interventi/add_articolo.php create mode 100644 plugins/pianificazione_interventi/add_righe.php create mode 100644 plugins/pianificazione_interventi/ajax_articoli.php create mode 100644 plugins/pianificazione_interventi/ajax_righe.php create mode 100644 plugins/pianificazione_interventi/edit.php create mode 100644 plugins/pianificazione_interventi/pianficazione.php diff --git a/actions.php b/actions.php index 81780c54d..3d0049139 100644 --- a/actions.php +++ b/actions.php @@ -164,7 +164,7 @@ if (!isset($record) && isset($records[0])) { // Registrazione del record HTMLBuilder\HTMLBuilder::setRecord($record); -if (Modules::getPermission($id_module) == 'rw') { +if ($element->permission == 'rw') { // Esecuzione delle operazioni di gruppo $id_records = post('id_records'); $id_records = is_array($id_records) ? $id_records : explode(';', $id_records); diff --git a/include/common/form.php b/include/common/form.php index 031bceb5e..e59fb6c65 100644 --- a/include/common/form.php +++ b/include/common/form.php @@ -7,8 +7,11 @@ $result['id'] = isset($result['id']) ? $result['id'] : null; */ echo '
- + + + + '; diff --git a/modules/contratti/plugins/ajax_articoli.php b/modules/contratti/plugins/ajax_articoli.php index 7e0dbb5ef..a61eb5577 100644 --- a/modules/contratti/plugins/ajax_articoli.php +++ b/modules/contratti/plugins/ajax_articoli.php @@ -4,14 +4,11 @@ include_once __DIR__.'/../../../core.php'; include_once Modules::filepath('Articoli', 'modutil.php'); -//$query = 'SELECT *, (SELECT codice FROM mg_articoli WHERE id=mg_articoli_interventi.idarticolo) AS codice, mg_articoli_interventi.id AS idriga, (SELECT prc_guadagno FROM mg_listini WHERE id=(SELECT idlistino_vendite FROM an_anagrafiche WHERE idanagrafica=(SELECT idanagrafica FROM in_interventi WHERE id=mg_articoli_interventi.idintervento) ) ) AS prc_guadagno FROM mg_articoli_interventi WHERE idintervento='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino'); -//$rs = $dbo->fetchArray($query); - if (!empty(get('idcontratto_riga'))) { - $idcontratto_riga = get('idcontratto_riga'); + $id_record = get('idcontratto_riga'); } -$query = 'SELECT * FROM co_righe_contratti_articoli WHERE id_riga_contratto='.prepare($idcontratto_riga).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC'; +$query = 'SELECT * FROM co_righe_contratti_articoli WHERE id_riga_contratto='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC'; $rs = $dbo->fetchArray($query); if (!empty($rs)) { @@ -130,14 +127,9 @@ if (!empty($rs)) { echo ' '; - /*if ($r['abilita_serial']) { - echo ' - '; - }*/ - if (empty($readonly)) { echo ' - '; } @@ -155,10 +147,10 @@ if (!empty($rs)) { ?> '; + +echo ' + + +
+
+ +
+
+
'; + +echo ' + '; + +echo ' +'; diff --git a/plugins/pianificazione_interventi/add_righe.php b/plugins/pianificazione_interventi/add_righe.php new file mode 100644 index 000000000..dff4e8d83 --- /dev/null +++ b/plugins/pianificazione_interventi/add_righe.php @@ -0,0 +1,122 @@ + '.tr('Aggiungi'); + + // valori default + $descrizione = ''; + $qta = 1; + $um = ''; + $prezzo_vendita = '0'; + $prezzo_acquisto = '0'; + + if (!empty($rs[0]['prc_guadagno'])) { + $sconto_unitario = $rs[0]['prc_guadagno']; + $tipo_sconto = 'PRC'; + } +} else { + $op = 'editriga'; + $button = ' '.tr('Modifica'); + + // carico record da modificare + $q = 'SELECT * FROM co_righe_contratti_materiali WHERE id='.prepare($idriga); + $rsr = $dbo->fetchArray($q); + + $descrizione = $rsr[0]['descrizione']; + $qta = $rsr[0]['qta']; + $um = $rsr[0]['um']; + $idiva = $rsr[0]['idiva']; + $prezzo_vendita = $rsr[0]['prezzo_vendita']; + $prezzo_acquisto = $rsr[0]['prezzo_acquisto']; + + $sconto_unitario = $rsr[0]['sconto_unitario']; + $tipo_sconto = $rsr[0]['tipo_sconto']; +} + +echo ' +
+ + + + '; + +// Descrizione +echo ' +
+
+ {[ "type": "textarea", "label": "'.tr('Descrizione').'", "id": "descrizione_riga", "name": "descrizione", "required": 1, "value": '.json_encode($descrizione).' ]} +
+
+
'; + +// Quantità +echo ' +
+
+ {[ "type": "number", "label": "'.tr('Q.tà').'", "name": "qta", "required": 1, "value": "'.$qta.'", "decimals": "qta" ]} +
'; + +// Unità di misura +echo ' +
+ {[ "type": "select", "label": "'.tr('Unità di misura').'", "name": "um", "value": "'.$um.'", "ajax-source": "misure" ]} +
'; + +// Iva +echo ' +
+ {[ "type": "select", "label": "'.tr('Iva').'", "name": "idiva", "required": 1, "value": "'.$idiva.'", "values": "query=SELECT * FROM co_iva ORDER BY descrizione ASC" ]} +
+
'; + +// Prezzo di acquisto +echo ' +
+
+ {[ "type": "number", "label": "'.tr('Prezzo di acquisto (un.)').'", "name": "prezzo_acquisto", "required": 1, "value": "'.$prezzo_acquisto.'", "icon-after": "€" ]} +
'; + +// Prezzo di vendita +echo ' +
+ {[ "type": "number", "label": "'.tr('Prezzo di vendita (un.)').'", "name": "prezzo_vendita", "required": 1, "value": "'.$prezzo_vendita.'", "icon-after": "€" ]} +
'; + +// Sconto unitario +echo ' +
+ {[ "type": "number", "label": "'.tr('Sconto unitario').'", "name": "sconto", "icon-after": "choice|untprc|'.$tipo_sconto.'", "value": "'.$sconto_unitario.'" ]} +
+
'; + +echo ' + +
+
+ +
+
+
'; + +echo ' +'; + +echo ' +'; diff --git a/plugins/pianificazione_interventi/ajax_articoli.php b/plugins/pianificazione_interventi/ajax_articoli.php new file mode 100644 index 000000000..1fb475149 --- /dev/null +++ b/plugins/pianificazione_interventi/ajax_articoli.php @@ -0,0 +1,150 @@ +fetchArray('SELECT * FROM co_righe_contratti_articoli WHERE id_riga_contratto='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC'); + +if (!empty($rs)) { + echo ' + + + + '; + + if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { + echo ' + '; + } + + if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { + echo ' + + + '; + } + + if (!$record['flag_completato']) { + echo ' + '; + } + echo ' + '; + + foreach ($rs as $r) { + $extra = ''; + $mancanti = 0; + + // Individuazione dei seriali + if (!empty($r['idarticolo']) && !empty($r['abilita_serial'])) { + $serials = array_column($dbo->fetchArray('SELECT serial FROM mg_prodotti WHERE serial IS NOT NULL AND id_riga_intervento='.prepare($r['id'])), 'serial'); + $mancanti = $r['qta'] - count($serials); + + if ($mancanti > 0) { + $extra = 'class="warning"'; + } else { + $mancanti = 0; + } + } + + echo ' + + '; + + // Quantità + echo ' + '; + + if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { + echo ' + '; + } + + if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { + // Prezzo unitario + echo ' + '; + + echo ' + '; + + // Prezzo di vendita + echo ' + '; + } + + if (!empty($is_add)) { + echo ' + '; + } + + echo ' + '; + } + + echo ' +
'.tr('Articolo').''.tr('Q.tà').''.tr('Prezzo di acquisto').''.tr('Prezzo di vendita').''.tr('Iva').''.tr('Imponibile').'
+ + '.Modules::link('Articoli', $r['idarticolo'], (!empty($r['codice']) ? $r['codice'].' - ' : '').$r['descrizione']); + + // Info extra (lotto, serial, altro) + if (!empty($r['abilita_serial'])) { + if (!empty($mancanti)) { + echo ' +
'.tr('_NUM_ serial mancanti', [ + '_NUM_' => $mancanti, + ]).''; + } + if (!empty($serials)) { + echo ' +
'.tr('SN').': '.implode(', ', $serials); + } + } + + echo ' +
+ '.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].' + + '.Translator::numberToLocale($r['prezzo_acquisto']).' € + + '.Translator::numberToLocale($r['prezzo_vendita']).' €'; + + if ($r['sconto_unitario'] > 0) { + echo ' +
+ - '.tr('sconto _TOT_ _TYPE_', [ + '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), + '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'), + ]).' + '; + } + + echo ' +
+ '.Translator::numberToLocale($r['iva']).' €'; + echo ' + + '.Translator::numberToLocale(sum($r['prezzo_vendita'] * $r['qta'], -$r['sconto'])).' € + + + + +
'; +} + +echo ' +'; diff --git a/plugins/pianificazione_interventi/ajax_righe.php b/plugins/pianificazione_interventi/ajax_righe.php new file mode 100644 index 000000000..770f8814e --- /dev/null +++ b/plugins/pianificazione_interventi/ajax_righe.php @@ -0,0 +1,118 @@ +fetchArray('SELECT * FROM co_righe_contratti_materiali WHERE id_riga_contratto='.prepare($id_record).' '.Modules::getAdditionalsQuery('Magazzino').' ORDER BY id ASC'); + +if (!empty($rs2)) { + echo ' + + + + + '; + + if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { + echo ' + + + '; + } + + if (!$record['flag_completato']) { + echo ' + '; + } + echo ' + '; + + foreach ($rs2 as $r) { + echo ' + + '; + + // Quantità + echo ' + '; + + //Costo unitario + echo ' + '; + + if (Auth::admin() || Auth::user()['gruppo'] != 'Tecnici') { + // Prezzo unitario + $netto = $r['prezzo_vendita'] - $r['sconto_unitario']; + + echo ' + '; + + echo ' + '; + + // Prezzo di vendita + echo ' + '; + } + + if (!empty($is_add)) { + echo ' + '; + } + + echo ' + '; + } + + echo ' +
'.tr('Descrizione').''.tr('Q.tà').''.tr('Prezzo di acquisto').''.tr('Prezzo di vendita').''.tr('Iva').''.tr('Subtotale').'
+ + '.nl2br($r['descrizione']).' + + '.Translator::numberToLocale($r['qta'], 'qta').' '.$r['um'].' + + '.Translator::numberToLocale($r['prezzo_acquisto']).' € + + '.Translator::numberToLocale($r['prezzo_vendita']).' €'; + + if ($r['sconto_unitario'] > 0) { + echo ' +
+ - '.tr('sconto _TOT_ _TYPE_', [ + '_TOT_' => Translator::numberToLocale($r['sconto_unitario']), + '_TYPE_' => ($r['tipo_sconto'] == 'PRC' ? '%' : '€'), + ]).' + '; + } + + echo ' +
+ '.Translator::numberToLocale($r['iva']).' €'; + echo ' + + '.Translator::numberToLocale(sum($r['prezzo_vendita'] * $r['qta'], -$r['sconto'])).' € + + + + + +
'; +} + +echo ' + +'; diff --git a/plugins/pianificazione_interventi/edit.php b/plugins/pianificazione_interventi/edit.php new file mode 100644 index 000000000..d3266bb4e --- /dev/null +++ b/plugins/pianificazione_interventi/edit.php @@ -0,0 +1,236 @@ +fetchOne('SELECT * FROM co_contratti WHERE id = :id', [ + ':id' => $id_record, +]); + +$records = $dbo->fetchArray('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento FROM co_contratti_promemoria WHERE idcontratto='.prepare($id_record).' ORDER BY data_richiesta ASC'); + +// Intervento/promemoria pianificabile +$pianificabile = $dbo->fetchOne('SELECT pianificabile FROM co_staticontratti WHERE id = :id', [ + ':id' => $contratto['idstato'], +])['pianificabile']; + +$stati_pianificabili = $dbo->fetchOne('SELECT GROUP_CONCAT(`descrizione`) AS stati_pianificabili FROM `co_staticontratti` WHERE `pianificabile` = 1')['stati_pianificabili']; + +echo ' +
+
+

'.tr('Pianificazione interventi').'

+
+
+

'.tr('Puoi pianificare dei "promemoria" o direttamente gli interventi da effettuare entro determinate scadenze. Per poter pianificare i promemoria il contratto deve essere in uno dei seguenti stati: '.$stati_pianificabili.' e la data di conclusione definita').'.

'; + +// Nessun intervento pianificato +if (!empty($records)) { + echo ' +
+
'.tr('Lista promemoria ed eventuali interventi associati').':
+ + + + + + + + + + + + + + + '; + + // Elenco promemoria + foreach ($records as $record) { + // Sede + if ($record['idsede'] == '-1') { + echo '- '.('Nessuna').' -'; + } elseif (empty($record['idsede'])) { + $info_sede = tr('Sede legale'); + } else { + $sede = $dbo->fetchOne("SELECT id, CONCAT( CONCAT_WS( ' (', CONCAT_WS(', ', nomesede, citta), indirizzo ), ')') AS descrizione FROM an_sedi WHERE id=".prepare($record['idsede'])); + + $info_sede = $sede[0]['descrizione']; + } + + // Intervento svolto + if (!empty($record['idintervento'])) { + $sede = $dbo->fetchOne('SELECT id, codice, (SELECT MIN(orario_inizio) FROM in_interventi_tecnici WHERE idintervento=in_interventi.id) AS data FROM in_interventi WHERE id='.prepare($record['idintervento'])); + + $info_intervento = Modules::link('Interventi', $sede[0]['id'], tr('Intervento num. _NUM_ del _DATE_', [ + '_NUM_' => $sede[0]['codice'], + '_DATE_' => Translator::dateToLocale($sede[0]['data']), + ])); + + $disabled = 'disabled'; + $title = 'Per eliminare il promemoria, eliminare prima l\'intervento associato.'; + } else { + $info_intervento = '- '.('Nessuno').' -'; + $disabled = ''; + $title = 'Elimina promemoria...'; + } + + // data_conclusione contratto + if (date('Y', strtotime($contratto['data_conclusione'])) < 1971) { + $contratto['data_conclusione'] = ''; + } + + // info impianti + $info_impianti = ''; + if (!empty($record['idimpianti'])) { + $impianti = $dbo->fetchArray('SELECT id, matricola, nome FROM my_impianti WHERE id IN ('.($record['idimpianti']).')'); + + foreach ($impianti as $impianto) { + $info_impianti .= Modules::link('MyImpianti', $impianto['id'], tr('_NOME_ (_MATRICOLA_)', [ + '_NOME_' => $impianto['nome'], + '_MATRICOLA_' => $impianto['matricola'], + ])).'
'; + } + } + + // Info materiali/articoli + $materiali = $dbo->fetchArray('SELECT id, descrizione,qta,um,prezzo_vendita, \'\' AS idarticolo FROM co_righe_contratti_materiali WHERE id_riga_contratto = '.prepare($record['id']).' + UNION SELECT id, descrizione,qta,um,prezzo_vendita, idarticolo FROM co_righe_contratti_articoli WHERE id_riga_contratto = '.prepare($record['id'])); + + $info_materiali = ''; + foreach ($materiali as $materiale) { + $info_materiali .= tr(' _QTA_ _UM_ x _DESC_', [ + '_DESC_' => ((!empty($materiale['idarticolo'])) ? Modules::link('Articoli', $materiale['idarticolo'], $materiale['descrizione']) : $materiale['descrizione']), + '_QTA_' => Translator::numberToLocale($materiale['qta']), + '_UM_' => $materiale['um'], + '_PREZZO_' => $materiale['prezzo_vendita'], + ]).'
'; + } + + // Info allegati + $allegati = $dbo->fetchArray('SELECT nome, original FROM zz_files WHERE id_record = '.prepare($record['id']).' AND id_plugin = '.$id_plugin); + + $info_allegati = ''; + foreach ($allegati as $allegato) { + $info_allegati .= tr(' _NOME_ (_ORIGINAL_)', [ + '_ORIGINAL_' => $allegato['original'], + '_NOME_' => $allegato['nome'], + ]).'
'; + } + + echo ' + + + + + + + + + + + '; + } + echo ' + +
'.tr('Data').''.tr('Tipo intervento').''.tr('Descrizione').''.tr('Intervento').''.tr('Sede').''.tr('Impianti').''.tr('Materiali').''.tr('Allegati').''.tr('Opzioni').'
'.Translator::dateToLocale($record['data_richiesta']).''.$record['tipointervento'].''.nl2br($record['richiesta']).''.$info_intervento.''.$info_sede.''.$info_impianti.''.$info_materiali.''.$info_allegati.''; + + echo ' + '; + + echo ' + '; + + echo ' + '; + + echo ' +
'; + + echo '
'; + + if (!empty($records)) { + echo ' + '; + } + + echo '
'; +} + + echo ' + '; + +echo ' +
+
'; + +$options = $dbo->fetchArray('SELECT idtipointervento, descrizione FROM `in_tipiintervento`'); + +echo ' +'; diff --git a/plugins/pianificazione_interventi/pianficazione.php b/plugins/pianificazione_interventi/pianficazione.php new file mode 100644 index 000000000..340b0270d --- /dev/null +++ b/plugins/pianificazione_interventi/pianficazione.php @@ -0,0 +1,267 @@ +fetchOne('SELECT * FROM `co_contratti` WHERE `id` = :id', [ + ':id' => $id_parent, +]); +$data_conclusione = $contratto['data_conclusione']; +$id_anagrafica = $contratto['idanagrafica']; + +// Impianti del contratto +$impianti = $dbo->fetchArray('SELECT `idimpianto` FROM `my_impianti_contratti` WHERE `idcontratto` = :id', [ + ':id' => $id_parent, +]); +$id_impianti = array_column($impianti, 'idimpianto'); + +// solo se ho selezionato un solo impianto nel contratto, altrimenti non so quale sede e tecnico prendere +if (count($id_impianti) == 1) { + $id_sede = $dbo->fetchOne('SELECT idsede FROM my_impianti WHERE id = '.prepare($id_impianti[0]))['idsede']; + $id_tecnico = $dbo->fetchOne('SELECT idtecnico FROM my_impianti WHERE id = '.prepare($id_impianti[0]))['idtecnico']; +} + +// Informazioni del promemoria +$record = $dbo->fetchOne('SELECT *, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_contratti_promemoria.idtipointervento) AS tipointervento, (SELECT tempo_standard FROM in_tipiintervento WHERE idtipointervento = co_contratti_promemoria.idtipointervento) AS tempo_standard FROM co_contratti_promemoria WHERE id = :id', [ + ':id' => $id_record, +]); +$data_richiesta = $record['data_richiesta'] ?? date('Y-m-d'); +$id_sede = $record['idsede']; +$tempo_standard = $record['tempo_standard']; +$idtipointervento = $record['idtipointervento']; + +if (!empty($id_sede)) { + $id_impianti = explode(',', trim($record['idimpianti'])); +} + +$pianificazione = [ + 0 => tr('Pianificare a partire da questo promemoria _DATE_', [ + '_DATE_' => $data_richiesta, + ]), + 1 => tr('Pianificare a partire da oggi _DATE_', [ + '_DATE_' => date('Y-m-d'), + ]), +]; + +// orari inizio fine interventi (8h standard) +$orario_inizio = '09:00'; +$orario_fine = !empty($tempo_standard) ? date('H:i', strtotime($orario_inizio) + ((60 * 60) * $tempo_standard)) : '17:00'; + +echo ' +
+ + '; + + echo ' + +
+
+

'.tr('Dati').'

+
+ +
+ +
+
+ {[ "type": "date", "label": "'.tr('Data promemoria').'", "name": "data_richiesta", "required": 1, "value": "'.$data_richiesta.'", "readonly": '.intval(empty($is_add)).' ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "required": 1, "id": "idtipointervento_", "value": "'.$record['idtipointervento'].'", "readonly": '.intval(empty($is_add)).', "ajax-source": "tipiintervento", "value": "'.$idtipointervento.'" ]} +
+
+ +
+
+ {[ "type": "select", "label": "'.tr('Sede').'", "name": "idsede_c", "values": "query=SELECT 0 AS id, \'Sede legale\' AS descrizione UNION SELECT id, CONCAT( CONCAT_WS( \' (\', CONCAT_WS(\', \', `nomesede`, `citta`), `indirizzo` ), \')\') AS descrizione FROM an_sedi WHERE idanagrafica='.$id_anagrafica.'", "value": "'.$id_sede.'", "readonly": '.intval(empty($is_add)).', "required" : "1" ]} +
+ +
+ {[ "type": "select", "multiple": "1", "label": "'.tr('Impianti a contratto').'", "name": "idimpianti[]", "help": "'.tr('Impianti sede selezionata').'", "values": "query=SELECT my_impianti.id AS id, my_impianti.nome AS descrizione FROM my_impianti_contratti INNER JOIN my_impianti ON my_impianti_contratti.idimpianto = my_impianti.id WHERE my_impianti_contratti.idcontratto = '.$id_parent.' ORDER BY descrizione", "value": "'.implode(',', $id_impianti).'", "readonly": '.intval(empty($is_add)).' ]} +
+
+ +
+
+ {[ "type": "textarea", "label": "'.tr('Descrizione').'", "name": "richiesta", "id": "richiesta_", "readonly": '.intval(empty($is_add)).', "value": "'.$record['richiesta'].'" ]} +
+
+
+
'; + +echo ' + +
+
+

'.tr('Materiale da utilizzare').'

+
+ +
+
'; + +include $plugin->filepath('ajax_articoli.php'); + +echo ' +
'; + +if (!empty($is_add)) { + echo ' + '; +} + +echo ' +
+
'; + +echo ' + +
+
+

'.tr('Altre spese previste').'

+
+ +
+
'; + +include $plugin->filepath('ajax_righe.php'); + +echo ' +
'; + +if (!empty($is_add)) { + echo ' + '; +} + +echo ' +
+
'; + +echo '{( "name": "filelist_and_upload", "id_record": "'.$id_record.'", "id_module": "'.$id_module.'", "id_plugin": "'.$id_plugin.'", "readonly": '.intval(empty($is_add)).' )}'; + +echo ' + +
+
+

'.tr('Promemoria ciclico?').'

+
+ +
+ + + +
+
+ {[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1" ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Inizio pianificazione').'", "name": "parti_da_oggi", "values": '.json_encode($pianificazione).' ]} +
+ +
+ {[ "type": "date", "label": "'.tr('Fine pianificazione').'", "help": "'.tr('Data conclusione contratto').'", "name": "data_conclusione", "id": "data_conclusione_", "extra": "readonly", "value": "'.$data_conclusione.'" ]} +
+
+ +
+
'; + +echo ' + +
+
+

'.tr('Pianificare interventi?').'

+
+ +
+ +
+
+ {[ "type": "checkbox", "label": "'.tr("Pianifica anche l'intervento").'", "name": "pianifica_intervento", "value": "0", "placeholder": "'.tr("Pianificare già l'intervento").'" ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Tecnici').'", "multiple": "1", "name": "idtecnico[]", "ajax-source": "tecnici", "disabled": "1", "value": "'.$id_tecnico.'" ]} +
+ + +
+ {[ "type": "time", "label": "'.tr('Orario inizio').'", "name": "orario_inizio", "value": "'.$orario_inizio.'", "disabled": "1" ]} +
+ +
+ {[ "type": "time", "label": "'.tr('Orario fine').'", "name": "orario_fine", "value": "'.$orario_fine.'", "disabled": "1" ]} +
+
+ +
+
'; + +echo ' + + +
+
+ +
+
+
'; + +echo ' +'; + +echo ' +'; diff --git a/src/Plugins.php b/src/Plugins.php index daa0c9901..5ebc0b8d4 100644 --- a/src/Plugins.php +++ b/src/Plugins.php @@ -49,7 +49,7 @@ class Plugins $plugins = self::getPlugins(); if (!is_numeric($plugin) && !empty(self::$references[$plugin])) { - $plugin = self::$references[$module]; + $plugin = self::$references[$plugin]; } return $plugins[$plugin]; diff --git a/src/Traits/PathTrait.php b/src/Traits/PathTrait.php index 32c7aeb9a..d535e2f80 100644 --- a/src/Traits/PathTrait.php +++ b/src/Traits/PathTrait.php @@ -25,4 +25,19 @@ trait PathTrait { return App::filepath($this->getPath().'|custom|', $file); } + + /** + * Restituisce l'URL completa per il file indicato della struttura. + * + * @return string + */ + public function fileurl($file) + { + $filepath = App::filepath($this->getPath().'|custom|', $file); + + $result = str_replace(DOCROOT, ROOTDIR, $filepath); + $result = str_replace('\\','/', $result); + + return $result; + } } diff --git a/update/2_4_1.sql b/update/2_4_1.sql index fa92eae9a..1c45a40ce 100644 --- a/update/2_4_1.sql +++ b/update/2_4_1.sql @@ -486,4 +486,4 @@ UPDATE `zz_prints` SET `enabled` = 0 WHERE `name` IN( 'Ordine di servizio', 'Ord UPDATE `zz_views` SET `query` = '\'Intervento\'' WHERE `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi') AND `name` = '_print_'; -- Flag per definire i segmenti di note di accredito e di addebito -ALTER TABLE `zz_segments` ADD `predefined_accredito` TINYINT(1) NOT NULL AFTER `predefined`, ADD `predefined_addebito` TINYINT(1) NOT NULL AFTER `predefined_accredito`; \ No newline at end of file +ALTER TABLE `zz_segments` ADD `predefined_accredito` TINYINT(1) NOT NULL AFTER `predefined`, ADD `predefined_addebito` TINYINT(1) NOT NULL AFTER `predefined_accredito`; diff --git a/update/2_4_2.sql b/update/2_4_2.sql index 458cb862c..497a190cc 100644 --- a/update/2_4_2.sql +++ b/update/2_4_2.sql @@ -247,3 +247,9 @@ ALTER TABLE `zz_views` CHANGE `enabled` `visible` BOOLEAN NOT NULL DEFAULT 1; -- Rimozione permessi negati (comportamento di default) DELETE FROM `zz_permissions` WHERE `permessi` = '-'; + +-- Ridenominazione plugin "Pianificazione interventi" +UPDATE `zz_plugins` SET `title` = 'Pianificazione attività' WHERE `name` = 'Pianificazione interventi'; + +-- Fix plugin "Pianificazione interventi" +UPDATE `zz_plugins` SET `options` = 'custom', `script` = '', `directory` = 'pianificazione_interventi' WHERE `name` = 'Pianificazione interventi';