diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e1b4c326..da6946f3a 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo fi Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://keepachangelog.com/), e il progetto segue il [Semantic Versioning](http://semver.org/) per definire le versioni delle release. +- [2.4.18 ()](#2418-) - [2.4.17.1 (2020-09-18)](#24171-2020-09-18) - [2.4.17 (2020-08-24)](#2417-2020-08-24) - [2.4.16 (2020-07-28)](#2416-2020-07-28) @@ -28,6 +29,50 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k - [2.2 (2016-11-10)](#22-2016-11-10) - [2.1 (2015-04-02)](#21-2015-04-02) +## 2.4.18 () + +### Aggiunto (Added) + - Sidebar per la gestione grafica dei Plugin all'interno dei record per i Moduli + - Sistema di cron di base per la gestione di operazioni ricorrenti (`cron.php`) + - Avviso su conflitti di occupazione per i Tecnici in **Attività** + - Plugin *Dettagli* per il modulo **Articoli**, finalizzato alla gestione dei prezzi di acquisto e vendita per *Anagrafica* e *Quantità* del Documento + - Modulo **Giacenze sedi** per visualizzare le giacenze in specifiche *Sedi* dell'*Anagrafica* Azienda + - Sistema di controllo sull'integrità strutturale del database, per utilizzo da parte di tecnici dedicati + - Numerazione righe nella stampa **Ordini** + - Azione di gruppo sul modulo **Anagrafiche** per calcolare la posizione geografica sulla base della Sede legale (richiede Google Maps abilitato) + - *Copyright notice* su tutti i file del progetto + - Possibilità di indicare lo stato alla creazione dei Documenti nella procedura di importazione + - Traduzione di base per il Tedesco (Germania) + - Supporto interno all'importazione verso **Preventivi** e **Contratti** + +### Modificato (Changed) + - Integrazione completa del nuovo sistema per la gestione delle impostazioni dei select (`select-options`) + - Miglioramento della grafica di integrazione con Google Maps per **Attività** e **Anagrafiche** + - Miglioramento del sistema di importazione FE in relazione alla gestione dei riferimenti a **Ordini** e **DDT**, con introduzione di una ricerca di base per l'autocompletamento + - Caricamento AJAX delle righe dei Documenti + - Introduzione numero rata in Rate contrattuali + - Visualizzazione completa delle date di lavorazione nella stampa delle **Attività** (#828) + - Modifica sovrapposizione eventi in **Dashboard** + - Modifica della gestione JS dei campi numerici, ora basata sulla libreria [AutoNumeric](http://autonumeric.org/) + - Modifica del sistema di riferimenti tra Documenti per includere il codice relativo nella Descrizione delle righe relative (con deprecazione dell'Impostazione "Riferimento dei documenti nelle stampe") { + - Modifica del sistema di riferimenti tra Documenti per includere il codice relativo nella *Descrizione* delle righe relative (con deprecazione dell'*Impostazione* "Riferimento dei documenti nelle stampe") + - Miglioramento elenco *Promemoria* in **Dashboard**, per visualizzare il *Tecnico* relativo + - Corretta l'impostazione degli Sconti generici nei Documenti per l'utilizzo dell'importo ivato nel caso dell'impostazione "Utilizza prezzi di vendita comprensivi di IVA" + +### Fixed + - Correzione del numero delle righe sui Documenti a seguito di un riordinamento + - Fix segno marca da bollo su *Nota di credito* + - Fix selezione data sbagliata per vista mensile in Dashboard + - Fix per aggiornamento indicato negli Hook anche a seguito del completamento + - Correzione per l'eliminazione delle *Sedi* + - Fix problema delle statistiche in **Stato dei servizi** + - Fix visualizzazione sconto ivato sulla base dell'utilizzo dei Prezzi ivati + - Fix visibilità per i checkbox standard del browser + - Fix creazione di articoli duplicati da importazione FE (#870) + - Correzioni per l'impostazione di *Categoria* e *Sottocategoria* dalla procedura di importazione CSV **Articoli** + - Fix link interno al plugin *Impianti del cliente* + - Correzioni sulla procedura di duplicazione **Attività** + ## 2.4.17.1 (2020-09-18) ### Fixed @@ -42,7 +87,6 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k - Fix su calcolo movimenti in caso di insoluto - Fix raggruppamento movimenti composti - ## 2.4.17 (2020-08-24) ### Aggiunto (Added) diff --git a/actions.php b/actions.php index b69535026..97534a6e2 100755 --- a/actions.php +++ b/actions.php @@ -30,7 +30,7 @@ if (empty($structure) || empty($structure['enabled'])) { die(tr('Accesso negato')); } -$upload_dir = DOCROOT.'/'.Uploads::getDirectory($id_module, $id_plugin); +$upload_dir = base_dir().'/'.Uploads::getDirectory($id_module, $id_plugin); $database->beginTransaction(); @@ -87,7 +87,7 @@ if (filter('op') == 'link_file' || filter('op') == 'unlink_file') { } } - redirect(ROOTDIR.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.((!empty($options['id_plugin'])) ? '#tab_'.$options['id_plugin'] : '')); + redirect(base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.((!empty($options['id_plugin'])) ? '#tab_'.$options['id_plugin'] : '')); } } @@ -273,13 +273,13 @@ elseif (post('op') == 'send-email') { flash()->error(tr('Errore durante l\'invio email! Verifica i parametri dell\'account SMTP utilizzato.')); } } elseif (filter('op') == 'aggiorna_colonne') { - include_once DOCROOT.'/include/colonne.php'; + include_once base_dir().'/include/colonne.php'; } elseif (filter('op') == 'visualizza_riferimenti') { - include_once DOCROOT.'/include/riferimenti/riferimenti.php'; + include_once base_dir().'/include/riferimenti/riferimenti.php'; } elseif (filter('op') == 'visualizza_righe_riferimenti') { - include_once DOCROOT.'/include/riferimenti/righe_riferimenti.php'; + include_once base_dir().'/include/riferimenti/righe_riferimenti.php'; } elseif (filter('op') == 'visualizza_righe_documento') { - include_once DOCROOT.'/include/riferimenti/righe_documento.php'; + include_once base_dir().'/include/riferimenti/righe_documento.php'; } elseif (filter('op') == 'salva_riferimento_riga') { $database->insert('co_riferimenti_righe', [ 'source_type' => filter('source_type'), @@ -336,7 +336,7 @@ if ($structure->permission == 'rw') { $bulk = empty($bulk) ? [] : $bulk; if (in_array(post('op'), array_keys($bulk))) { - redirect(ROOTDIR.'/controller.php?id_module='.$id_module, 'js'); + redirect(base_path().'/controller.php?id_module='.$id_module, 'js'); } else { // Esecuzione delle operazioni del modulo include $structure->filepath('actions.php'); diff --git a/add.php b/add.php index 7535b9eb6..f634ba663 100755 --- a/add.php +++ b/add.php @@ -20,7 +20,7 @@ include_once __DIR__.'/core.php'; // Inclusione elementi fondamentali del modulo -include $docroot.'/actions.php'; +include base_dir().'/actions.php'; // Controllo dei permessi if (empty($id_plugin)) { diff --git a/ajax.php b/ajax.php index 02aeac754..c1384ccb4 100755 --- a/ajax.php +++ b/ajax.php @@ -72,7 +72,7 @@ switch (filter('op')) { break; case 'checklists': - include DOCROOT.'/plugins/checks.php'; + include base_dir().'/plugins/checks.php'; break; diff --git a/ajax_dataload.php b/ajax_dataload.php index 3d8a45e04..3753e2a00 100755 --- a/ajax_dataload.php +++ b/ajax_dataload.php @@ -22,11 +22,13 @@ include_once __DIR__.'/core.php'; use Util\Query; // Informazioni fondamentali -$columns = filter('columns'); -$order = filter('order')[0]; +$columns = (array) filter('columns'); +$order = filter('order') ? filter('order')[0] : []; $draw_numer = intval(filter('draw')); -$order['column'] = $order['column'] - 1; +if (!empty(filter('order'))) { + $order['column'] = $order['column'] - 1; +} array_shift($columns); $total = Util\Query::readQuery($structure); @@ -76,7 +78,7 @@ if (!empty($query)) { // Allineamento delle righe $align = []; - $row = $rows[0] ?: []; + $row = isset($rows[0]) ? $rows[0] : []; foreach ($row as $field => $value) { $value = trim($value); @@ -93,6 +95,13 @@ if (!empty($query)) { // Creazione della tabella foreach ($rows as $i => $r) { + // Evitare risultati con ID a null + // Codice non applicabile in ogni caso: sulla base dei permessi, ID può non essere impostato + /* + if (empty($r['id'])) { + continue; + }*/ + $result = [ 'id' => $r['id'], '', // Colonna ID @@ -157,7 +166,7 @@ if (!empty($query)) { $id_record = $r['id']; $hash = ''; - $id_module = $r['_link_module_'] ?: $id_module; + $id_module = !empty($r['_link_module_']) ? $r['_link_module_'] : $id_module; if (!empty($r['_link_record_'])) { $id_record = $r['_link_record_']; $hash = !empty($r['_link_hash_']) ? '#'.$r['_link_hash_'] : ''; @@ -166,11 +175,11 @@ if (!empty($query)) { // Link per i moduli if (empty($id_plugin)) { - $column['data-link'] = $rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.$hash; + $column['data-link'] = base_path().'/editor.php?id_module='.$id_module.'&id_record='.$id_record.$hash; } // Link per i plugin else { - $column['data-link'] = $rootdir.'/add.php?id_module='.$id_module.'&id_record='.$id_record.'&id_plugin='.$id_plugin.'&id_parent='.$id_parent.'&edit=1'.$hash; + $column['data-link'] = base_path().'/add.php?id_module='.$id_module.'&id_record='.$id_record.'&id_plugin='.$id_plugin.'&id_parent='.$id_parent.'&edit=1'.$hash; $column['data-type'] = 'dialog'; } @@ -182,8 +191,8 @@ if (!empty($query)) { $attributes[] = $key.'="'.$val.'"'; } - // Replace rootdir per le query - $value = str_replace('ROOTDIR', ROOTDIR, $value); + // Replace base_link() per le query + $value = str_replace('base_link()', base_path(), $value); $result[] = str_replace('|attr|', implode(' ', $attributes), '