diff --git a/CHANGELOG.md b/CHANGELOG.md index 70bbd1e64..5c532875e 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.39 (2023-01-13)](#2439-2023-01-13) - [2.4.38 (2022-12-07)](#2438-2022-12-07) - [2.4.37 (2022-11-02)](#2437-2022-11-04) - [2.4.36 (2022-09-16)](#2436-2022-09-16) @@ -49,7 +50,30 @@ 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.39 (2023-01-13) +### Aggiunto (Added) +- Aggiunto controllo eliminazione metodo di pagamento +- Aggiunte nazioni +- Aggiunta visualizzazione mappa all'aggiunta attività +- Aggiunta possibilità di creare campi aggiuntivi con testo libero +- Aggiunta impostazione per nascondere i promemoria su app +- Aggiunta ID utente nei movimenti articolo +### Modificato (Changed) +- Miglioria gestione codice REA e provincia +- Miglioria stampa mastrino saldo iniziale +### Fixed +- Corretta query vista contratti +- Corretta stampa inventario in Articoli +- Corretta query vista fatture di vendita +- Corretta query vista utenti e permessi +- Corretta lunghezza campo codice REA +- Corretto il calcolo del guadagno in aggiunta riga +- Corretto ordinamento riga bollo in fattura +- Corretta vulnerabilità XSS +- Corretto set pattern segmento attività +- Corretta query vista giacenze sedi +- Corretta visualizzazione rate contrattuali da plugin per anno precedente +- Corretta selezione conti e IVA durante importazione Fattura elettronica di acquisto ## 2.4.38 (2022-12-07) ### Aggiunto (Added) - Aggiunto tempDir per mpdf @@ -78,6 +102,7 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k - Miglioria ricerca di corrispondenza tra anagrafiche in fase di impostazione dei permessi - Sostituita funzione deprecata formatLocalized con isoFormat - Rimozione codice non raggiungibile +- Ridotte restrizioni cookie per problemi con app esterne ### Fixed - Corretta la selezione dei colori - Corretta la visualizzazione delle colonne datatables @@ -105,6 +130,11 @@ Il formato utilizzato è basato sulle linee guida di [Keep a Changelog](http://k - Corretta logica riapertura fattura pagata - Corretta valorizzazione codice REA in fase di importazione fattura elettronica - Corretta creazione fattura da azioni di gruppo in Attività se valorizzato 'Per conto di' +- Corrette note interne riga documento +- Corretto invio notifica chiusura intervento +- Corretta emissione fatture da azioni di gruppo +- Corretta generazione fatture con totale negativo +- Corretto controllo sort-buffer-size ## 2.4.37 (2022-11-04) ### Aggiunto (Added) - Aggiunto modulo Mappa per geolocalizzare le attività diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php index 66e4a4827..4eabc81fc 100755 --- a/modules/anagrafiche/ajax/select.php +++ b/modules/anagrafiche/ajax/select.php @@ -25,7 +25,42 @@ switch ($resource) { case 'clienti': $id_azienda = setting('Azienda predefinita'); - $query = "SELECT an_anagrafiche.idanagrafica AS id, is_bloccata, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'), IF(is_bloccata = 1, CONCAT(' (', an_relazioni.descrizione, ')'), '') ) AS descrizione, idtipointervento_default AS idtipointervento, in_tipiintervento.descrizione AS idtipointervento_descrizione, an_anagrafiche.idzona, contratto.id AS id_contratto, contratto.descrizione AS descrizione_contratto, co_pagamenti.id AS id_pagamento, co_pagamenti.descrizione AS desc_pagamento, banca_vendite.id AS id_banca_vendite, CONCAT(banca_vendite.nome, ' - ', banca_vendite.iban) AS descrizione_banca_vendite FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica LEFT JOIN in_tipiintervento ON an_anagrafiche.idtipointervento_default=in_tipiintervento.idtipointervento LEFT JOIN an_relazioni ON an_anagrafiche.idrelazione=an_relazioni.id LEFT JOIN (SELECT co_contratti.id, idanagrafica, CONCAT('Contratto ', numero, ' del ', DATE_FORMAT(data_bozza, '%d/%m/%Y'), ' - ', co_contratti.nome, ' [', `co_staticontratti`.`descrizione` , ']') AS descrizione FROM co_contratti LEFT JOIN co_staticontratti ON co_contratti.idstato=co_staticontratti.id WHERE co_contratti.predefined=1 AND is_pianificabile=1) AS contratto ON an_anagrafiche.idanagrafica=contratto.idanagrafica LEFT JOIN co_pagamenti ON an_anagrafiche.idpagamento_vendite=co_pagamenti.id LEFT JOIN co_banche banca_vendite ON co_pagamenti.idconto_vendite = banca_vendite.id_pianodeiconti3 AND banca_vendite.id_anagrafica = ".prepare($id_azienda)." AND banca_vendite.deleted_at IS NULL AND banca_vendite.predefined = 1 |where| ORDER BY ragione_sociale"; + $query = "SELECT + an_anagrafiche.idanagrafica AS id, + an_anagrafiche.lat, + an_anagrafiche.lng, + is_bloccata, + CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'), IF(is_bloccata = 1, CONCAT(' (', an_relazioni.descrizione, ')'), '') ) AS descrizione, + idtipointervento_default AS idtipointervento, + in_tipiintervento.descrizione AS idtipointervento_descrizione, + an_anagrafiche.idzona, + contratto.id AS id_contratto, + contratto.descrizione AS descrizione_contratto, + co_pagamenti.id AS id_pagamento, + co_pagamenti.descrizione AS desc_pagamento, + banca_vendite.id AS id_banca_vendite, + CONCAT(banca_vendite.nome, ' - ', banca_vendite.iban) AS descrizione_banca_vendite + FROM + an_anagrafiche + INNER JOIN (an_tipianagrafiche_anagrafiche + INNER JOIN an_tipianagrafiche + ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) + ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica LEFT JOIN in_tipiintervento ON an_anagrafiche.idtipointervento_default=in_tipiintervento.idtipointervento + LEFT JOIN + an_relazioni + ON an_anagrafiche.idrelazione=an_relazioni.id + LEFT JOIN + (SELECT co_contratti.id, idanagrafica, CONCAT('Contratto ', numero, ' del ', DATE_FORMAT(data_bozza, '%d/%m/%Y'), ' - ', co_contratti.nome, ' [', `co_staticontratti`.`descrizione` , ']') AS descrizione FROM co_contratti LEFT JOIN co_staticontratti ON co_contratti.idstato=co_staticontratti.id WHERE co_contratti.predefined=1 AND is_pianificabile=1) AS contratto + ON an_anagrafiche.idanagrafica=contratto.idanagrafica + LEFT JOIN + co_pagamenti + ON an_anagrafiche.idpagamento_vendite=co_pagamenti.id + LEFT JOIN + co_banche banca_vendite + ON co_pagamenti.idconto_vendite = banca_vendite.id_pianodeiconti3 AND banca_vendite.id_anagrafica = ".prepare($id_azienda)." AND banca_vendite.deleted_at IS NULL AND banca_vendite.predefined = 1 + |where| + ORDER BY + ragione_sociale"; foreach ($elements as $element) { $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); @@ -267,7 +302,24 @@ switch ($resource) { */ case 'sedi': if (isset($superselect['idanagrafica'])) { - $query = "SELECT * FROM (SELECT '0' AS id, (SELECT idzona FROM an_anagrafiche |where|) AS idzona, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), ''), ' (',ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione UNION SELECT id, idzona, CONCAT_WS(' - ', nomesede, CONCAT(citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), '')) ) FROM an_sedi |where|) AS tab HAVING descrizione LIKE ".prepare('%'.$search.'%').' ORDER BY descrizione'; + $query = " + SELECT + * + FROM + (SELECT '0' AS id, (SELECT lat FROM an_anagrafiche |where|) AS lat, (SELECT lng FROM an_anagrafiche |where|) AS lng, (SELECT idzona FROM an_anagrafiche |where|) AS idzona, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), ''), ' (',ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione + + UNION + + SELECT + id, + lat, + lng, + idzona, + CONCAT_WS(' - ', nomesede, CONCAT(citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), '')) ) FROM an_sedi |where|) AS tab + HAVING + descrizione LIKE ".prepare('%'.$search.'%').' + ORDER BY + descrizione'; foreach ($elements as $element) { $filter[] = 'id='.prepare($element); diff --git a/modules/articoli/plugins/articoli.movimenti.php b/modules/articoli/plugins/articoli.movimenti.php index 829935fc1..eb23bec8d 100755 --- a/modules/articoli/plugins/articoli.movimenti.php +++ b/modules/articoli/plugins/articoli.movimenti.php @@ -143,9 +143,12 @@ if (!empty($movimenti)) { '; // Data + $utente = $dbo->table('zz_users')->where('id',$movimento->idutente)->first(); + $data = ($movimento->data ? $movimento->data : $movimento->data_movimento); echo ' -