From 3d6a74a33ebbca65b410b91cd0cd7bd5deadf68e Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Mon, 5 Feb 2018 14:17:12 +0100 Subject: [PATCH 01/16] Corretta query sulla gerarchia zz_modules --- update/2_2.sql | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/update/2_2.sql b/update/2_2.sql index 7e687a6ab..79ad451d1 100644 --- a/update/2_2.sql +++ b/update/2_2.sql @@ -50,7 +50,6 @@ UPDATE `zz_modules` SET `options` = '{ "main_query": [ { "type": "table", "field UPDATE `zz_modules` SET `options` = '{ "main_query": [ { "type": "table", "fields": "Documento, Anagrafica, Tipo di pagamento, Data emissione, Data scadenza, Importo, Pagato", "query": "SELECT co_scadenziario.id AS id, ragione_sociale AS `Anagrafica`, co_pagamenti.descrizione AS `Tipo di pagamento`, CONCAT(co_tipidocumento.descrizione, CONCAT('' numero '', IF(numero_esterno<>'''', numero_esterno, numero))) AS `Documento`, DATE_FORMAT(data_emissione, ''%d/%m/%Y'') AS `Data emissione`, DATE_FORMAT(scadenza, ''%d/%m/%Y'') AS `Data scadenza`, REPLACE(REPLACE(REPLACE(FORMAT(da_pagare, 2), '','', ''#''), ''.'', '',''), ''#'', ''.'') AS `Importo`, REPLACE(REPLACE(REPLACE(FORMAT(pagato, 2), '','', ''#''), ''.'', '',''), ''#'', ''.'') AS `Pagato`, IF(scadenza0', '#A15D2D', 'fa fa-money', '', '', '', '', 'Valore magazzino', '1', '1'); INSERT INTO `zz_widget_modules` (`id`, `name`, `type`, `id_module`, `location`, `class`, `query`, `bgcolor`, `icon`, `print_link`, `more_link`, `more_link_type`, `php_include`, `text`, `enabled`, `order`) VALUES (NULL, 'Articoli in magazzino', 'stats', '21', 'controller_right', 'col-md-12', 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT (SUM(qta),2), ",", "#"), ".", ","), "#", "."), "unità") AS dato FROM mg_articoli WHERE qta>0', '#45A9F1', 'fa fa-check-square-o', '', '', '', '', 'Articoli in magazzino', '1', '1'); -- Controllo scadenze per contratti con data conclusione > 1970 UPDATE `zz_widget_modules` SET `query` = 'SELECT COUNT(id) AS dato FROM co_contratti WHERE idstato IN(SELECT id FROM co_staticontratti WHERE descrizione="Accettato" OR descrizione="In lavorazione" OR descrizione="In attesa di pagamento") AND rinnovabile=1 AND NOW() > DATE_ADD(data_conclusione, INTERVAL -ABS(giorni_preavviso_rinnovo) DAY) AND YEAR(data_conclusione) > 1970' WHERE `zz_widget_modules`.`name` = 'Contratti in scadenza'; --- aumento dimensione campo descrizione su co_pagamenti +-- Aumento dimensione campo descrizione su co_pagamenti ALTER TABLE `co_pagamenti` CHANGE `descrizione` `descrizione` VARCHAR(255) NOT NULL; -- Aggiunta filtro su MyImpianti per mostrare solo quelli del cliente loggato @@ -145,12 +137,10 @@ ALTER TABLE `co_righe2_contratti` ADD `iva_indetraibile` DECIMAL(12, 4) NOT NULL -- Aggiunto stato concluso anche ai contratti INSERT INTO `co_staticontratti` (`id`, `descrizione`, `icona`, `completato`, `annullato`) VALUES (NULL, 'Concluso', 'fa fa-2x fa-check text-success', '0', '0'); - -- Aggiunto modulo per gestire componenti -- (SELECT `id` FROM `zz_modules` WHERE `name`='MyImpianti') INSERT INTO `zz_modules` (`id`, `name`, `name2`, `module_dir`, `options`, `options2`, `icon`, `version`, `compatibility`, `order`, `level`, `parent`, `default`, `enabled`, `type`, `new`) VALUES (NULL, 'Gestione componenti', '', 'gestione_componenti', '{ "main_query": [ { "type": "custom" } ]}', '', 'fa fa-external-link', '2.2', '2.2', '0', '1', '30', '1', '1', 'menu', '0'); -UPDATE `zz_modules` SET `parent` = (SELECT `id` FROM (SELECT * FROM zz_modules) AS table1 WHERE `name`='MyImpianti') WHERE `zz_modules`.`name` = 'Gestione componenti'; - +UPDATE `zz_modules` `t1` INNER JOIN `zz_modules` `t2` ON (`t1`.`name` = 'Gestione componenti' AND `t2`.`name` = 'MyImpianti') SET `t1`.`parent` = `t2`.`id`; -- Aggiunti campi per gestire firma rapportini ALTER TABLE `in_interventi` ADD `firma_file` varchar(255) NOT NULL AFTER `ora_sla`; @@ -173,7 +163,6 @@ CREATE TABLE IF NOT EXISTS `my_componenti_interventi` ( -- Aggiunto campo prc_guadagno in co_righe_preventivi ALTER TABLE `co_righe_preventivi` ADD `prc_guadagno` DECIMAL(5,2) NOT NULL AFTER `sconto`; - -- 2016-11-09 (r1509) CREATE TABLE IF NOT EXISTS `co_contratti_tipiintervento` ( `idcontratto` int(11) NOT NULL, From 3487551645e5eb0d2b74a005af95a28b7caa5295 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Mon, 5 Feb 2018 15:45:08 +0100 Subject: [PATCH 02/16] Fix parziale bug su DDT e Ordini importati --- modules/fatture/actions.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 71752a14f..6271ca2cd 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -1328,7 +1328,7 @@ if (!empty($id_record)) { $rs = $dbo->fetchArray('SELECT idddt FROM co_righe_documenti WHERE iddocumento='.prepare($id_record)); for ($i = 0; $i < sizeof($rs); ++$i) { - $dbo->query('UPDATE dt_ddt SET idstatoddt=(SELECT id FROM dt_statiddt WHERE descrizione="'.get_stato_ddt($rs[$i]['idddt']).'")'); + $dbo->query('UPDATE dt_ddt SET idstatoddt=(SELECT id FROM dt_statiddt WHERE descrizione="'.get_stato_ddt($rs[$i]['idddt']).'") WHERE id = '.prepare($rs[$i]['idddt'])); } } @@ -1337,7 +1337,7 @@ if (!empty($id_record)) { $rs = $dbo->fetchArray('SELECT idordine FROM co_righe_documenti WHERE iddocumento='.prepare($id_record)); for ($i = 0; $i < sizeof($rs); ++$i) { - $dbo->query('UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[$i]['idordine']).'")'); + $dbo->query('UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[$i]['idordine']).'") WHERE id = '.prepare($rs[$i]['idordine'])); } } From 7f11ad22095acf44a99a87fb73ffec2522f1a3e8 Mon Sep 17 00:00:00 2001 From: Fabio Lovato Date: Tue, 6 Feb 2018 09:30:24 +0100 Subject: [PATCH 03/16] Bugfix iva righe contratti, non calcolata sul totale --- modules/contratti/actions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 5c93d3553..e0c8a417f 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -156,7 +156,7 @@ switch (post('op')) { // Lettura iva dell'articolo $rs2 = $dbo->fetchArray('SELECT percentuale, descrizione, indetraibile FROM co_iva WHERE id='.prepare($idiva)); - $iva = ($prezzo - $sconto) / 100 * $rs2[0]['percentuale']; + $iva = ($prezzo*$qta - $sconto) / 100 * $rs2[0]['percentuale']; $iva_indetraibile = $iva / 100 * $rs2[0]['indetraibile']; $desc_iva = $rs2[0]['descrizione']; From 664eb8fd538079a0daefb552210f70e03675ba16 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Tue, 6 Feb 2018 09:55:45 +0100 Subject: [PATCH 04/16] Fix parziale bug su Ordini importati --- modules/ddt/actions.php | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index 3cd4b6ff0..9453abc5a 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -232,10 +232,9 @@ switch (post('op')) { $id_record = $dbo->lastInsertedID(); // Lettura di tutte le righe della tabella in arrivo - foreach ($post['qta_da_evadere'] AS $idriga=>$value) { + foreach ($post['qta_da_evadere'] as $idriga => $value) { // Processo solo le righe da evadere if ($post['evadere'][$idriga] == 'on') { - $idarticolo = post('idarticolo')[$idriga]; $descrizione = post('descrizione')[$idriga]; @@ -382,7 +381,7 @@ switch (post('op')) { // Se c'è un collegamento ad un ordine, aggiorno la quantità evasa if (!empty($idddt)) { - $dbo->query( 'UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$old_qta.' + '.$qta.' WHERE descrizione='.prepare($rs[0]['descrizione']).' AND idarticolo='.prepare($rs[0]['idarticolo']).' AND idordine='.prepare($idordine).' AND idiva='.prepare($rs[0]['idiva']) ); + $dbo->query('UPDATE or_righe_ordini SET qta_evasa=qta_evasa-'.$old_qta.' + '.$qta.' WHERE descrizione='.prepare($rs[0]['descrizione']).' AND idarticolo='.prepare($rs[0]['idarticolo']).' AND idordine='.prepare($idordine).' AND idiva='.prepare($rs[0]['idiva'])); } // Calcolo iva @@ -393,9 +392,9 @@ switch (post('op')) { $desc_iva = $rs[0]['descrizione']; // Modifica riga generica sul ddt - if($is_descrizione==0){ + if ($is_descrizione == 0) { $query = 'UPDATE dt_righe_ddt SET idiva='.prepare($idiva).', desc_iva='.prepare($desc_iva).', iva='.prepare($iva).', iva_indetraibile='.prepare($iva_indetraibile).', descrizione='.prepare($descrizione).', subtotale='.prepare($subtot).', sconto='.prepare($sconto).', sconto_unitario='.prepare($sconto_unitario).', tipo_sconto='.prepare($tipo_sconto).', um='.prepare($um).', qta='.prepare($qta).' WHERE id='.prepare($idriga); - }else{ + } else { $query = 'UPDATE dt_righe_ddt SET descrizione='.prepare($descrizione).' WHERE id='.prepare($idriga); } if ($dbo->query($query)) { @@ -496,11 +495,11 @@ switch (post('op')) { } // Aggiornamento stato degli ordini presenti in questa fattura in base alle quantità totali evase -if( !empty($id_record) ){ - $rs = $dbo->fetchArray( 'SELECT idordine FROM dt_righe_ddt WHERE idddt='.prepare($id_record) ); +if (!empty($id_record)) { + $rs = $dbo->fetchArray('SELECT idordine FROM dt_righe_ddt WHERE idddt='.prepare($id_record)); - for( $i=0; $iquery( 'UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[$i]['idordine']).'")' ); + for ($i = 0; $i < sizeof($rs); ++$i) { + $dbo->query('UPDATE or_ordini SET idstatoordine=(SELECT id FROM or_statiordine WHERE descrizione="'.get_stato_ordine($rs[$i]['idordine']).'") WHERE id = '.prepare($rs[$i]['idordine'])); } } From 209939acdf775019d18df4a88772761c9e26f9ec Mon Sep 17 00:00:00 2001 From: Fabio Lovato Date: Tue, 6 Feb 2018 13:08:13 +0100 Subject: [PATCH 05/16] Raggruppata fatturazione intervento per costo orario, per correttezza --- modules/fatture/actions.php | 51 ++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 6271ca2cd..e60aa59b8 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -293,29 +293,40 @@ switch (post('op')) { $idanagrafica = $rs[0]['idanagrafica']; $data = $rs[0]['data']; $codice = $rs[0]['codice']; + + //Fatturo le ore di lavoro raggruppate per costo orario + $rst = $dbo->fetchArray('SELECT SUM( ROUND( TIMESTAMPDIFF( MINUTE, orario_inizio, orario_fine ) / 60, '.get_var('Cifre decimali per quantità').' ) ) AS tot_ore, SUM(prezzo_ore_consuntivo) AS tot_prezzo_ore_consuntivo, prezzo_ore_unitario FROM in_interventi_tecnici WHERE idintervento='.prepare($idintervento).' GROUP BY prezzo_ore_unitario'); + + //Aggiunta riga intervento sul documento + for( $i=0; $ifetchArray($query); + + $sconto = $rst[$i]['sconto']; + $subtot = $rst[$i]['tot_prezzo_ore_consuntivo']; + $iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; + $desc_iva = $rs[0]['descrizione']; + + // Calcolo rivalsa inps + $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); + $rs = $dbo->fetchArray($query); + $rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; + + // Calcolo ritenuta d'acconto + $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); + $rs = $dbo->fetchArray($query); + $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; + + $query = 'INSERT INTO co_righe_documenti(iddocumento, idintervento, idconto, idiva, desc_iva, iva, iva_indetraibile, descrizione, subtotale, sconto, sconto_unitario, tipo_sconto, um, qta, idrivalsainps, rivalsainps, idritenutaacconto, ritenutaacconto, `order`) VALUES('.prepare($id_record).', '.prepare($idintervento).', '.prepare($idconto).', '.prepare($idiva).', '.prepare($desc_iva).', '.prepare($iva).', '.prepare($iva_indetraibile).', '.prepare($descrizione).', '.prepare($subtot).', '.prepare($sconto).', '.prepare($sconto).", 'UNT', 'ore', ".prepare($ore).', '.prepare(get_var('Percentuale rivalsa INPS')).', '.prepare($rivalsainps).', '.prepare(get_var("Percentuale ritenuta d'acconto")).', '.prepare($ritenutaacconto).', (SELECT IFNULL(MAX(`order`) + 1, 0) FROM co_righe_documenti AS t WHERE iddocumento='.prepare($id_record).'))'; + $dbo->query($query); + } $costi_intervento = get_costi_intervento($idintervento); - // Calcolo iva - $query = 'SELECT * FROM co_iva WHERE id='.prepare($idiva); - $rs = $dbo->fetchArray($query); - - $sconto = $costi_intervento['manodopera_addebito'] - $costi_intervento['manodopera_scontato']; - $subtot = $costi_intervento['manodopera_addebito']; - $iva = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; - $iva_indetraibile = $iva / 100 * $rs[0]['indetraibile']; - $desc_iva = $rs[0]['descrizione']; - - // Calcolo rivalsa inps - $query = 'SELECT * FROM co_rivalsainps WHERE id='.prepare(get_var('Percentuale rivalsa INPS')); - $rs = $dbo->fetchArray($query); - $rivalsainps = ($subtot - $sconto) / 100 * $rs[0]['percentuale']; - - // Calcolo ritenuta d'acconto - $query = 'SELECT * FROM co_ritenutaacconto WHERE id='.prepare(get_var("Percentuale ritenuta d'acconto")); - $rs = $dbo->fetchArray($query); - $ritenutaacconto = ($subtot - $sconto + $rivalsainps) / 100 * $rs[0]['percentuale']; - // Aggiunta diritto di chiamata (se presente) come riga a parte $diritto_chiamata = $costi_intervento['dirittochiamata_addebito']; From 2e5f09f266fbcc78a0d0932b706724083b45436f Mon Sep 17 00:00:00 2001 From: Fabio Lovato Date: Tue, 6 Feb 2018 15:56:09 +0100 Subject: [PATCH 06/16] Bugfix #144 --- modules/fatture/add_ddt.php | 2 +- modules/fatture/edit.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/fatture/add_ddt.php b/modules/fatture/add_ddt.php index 2118de6c1..f49d846e5 100644 --- a/modules/fatture/add_ddt.php +++ b/modules/fatture/add_ddt.php @@ -19,7 +19,7 @@ $idanagrafica = $record[0]['idanagrafica']; echo '
- {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_ddt", "required": 1, "values": "query=SELECT dt_ddt.id, CONCAT(\'nr. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione FROM dt_ddt WHERE idanagrafica='.prepare($idanagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione=\'Bozza\') AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0) ORDER BY data DESC, numero DESC" ]} + {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_ddt", "required": 1, "values": "query=SELECT dt_ddt.id, CONCAT(\'nr. \', IF(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione FROM dt_ddt WHERE idanagrafica='.prepare($idanagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0) ORDER BY data DESC, numero DESC" ]}
'; diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 1730a986a..2b24704c2 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -283,7 +283,7 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') { '; // Lettura ddt - $qd = 'SELECT id FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione=\'Bozza\') AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)'; + $qd = 'SELECT id FROM dt_ddt WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione IN(\'Bozza\', \'Parzialmente fatturato\')) AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') AND dt_ddt.id IN (SELECT idddt FROM dt_righe_ddt WHERE dt_righe_ddt.idddt = dt_ddt.id AND (qta - qta_evasa) > 0)'; $ddt = $dbo->fetchNum($qd); echo ' From 7717fb46dc436f79d4f7b072a17f146c69c8a6b0 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Tue, 6 Feb 2018 15:59:12 +0100 Subject: [PATCH 07/16] Piccolo fix sulla documentazione Piccolo fix sulla documentazione (GitHub al posto di Github). Correzione del sistema di formattazione automatica PHP CS Fixer. --- .php_cs | 1 + CHANGELOG.md | 2 +- README.md | 8 ++++---- docs/Framework.md | 2 +- docs/Installazione.md | 8 ++++---- 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.php_cs b/.php_cs index eb4a92954..6781b979b 100644 --- a/.php_cs +++ b/.php_cs @@ -14,6 +14,7 @@ $config = PhpCsFixer\Config::create() ->setRules([ '@Symfony' => true, 'array_syntax' => ['syntax' => 'short'], + 'yoda_style' => false, ]) ->setFinder($finder); diff --git a/CHANGELOG.md b/CHANGELOG.md index e52248ce8..28546116c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo file. Per informazioni più dettagliate, consultare il log GIT della repository su Github. +Tutti i maggiori cambiamenti di questo progetto saranno documentati in questo file. Per informazioni più dettagliate, consultare il log GIT della repository su GitHub. 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. diff --git a/README.md b/README.md index 866dc25a7..54f40580b 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ La documentazione ufficiale è disponibile all'indirizzo ), evitando di utilizzare direttamente il codice della repository. Se siete inoltre interessati a supporto e assistenza professionali, li potete richiedere nella [sezione dedicata](http://www.openstamanager.com/per-le-aziende/). -### Github +### GitHub -Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di Github, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto. +Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di GitHub, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto. ```bash php composer.phar install diff --git a/docs/Framework.md b/docs/Framework.md index 973ed3d82..fd0d93907 100644 --- a/docs/Framework.md +++ b/docs/Framework.md @@ -70,4 +70,4 @@ Per ulteriori informazioni, consultare la [documentazione ufficiale di Composer] - symfony/finder - symfony/translation -_I nomi sono indicati secondo la notazione tipica dei progetti pubblici su Github._ +_I nomi sono indicati secondo la notazione tipica dei progetti pubblici su GitHub._ diff --git a/docs/Installazione.md b/docs/Installazione.md index 9c5cfb187..b59bbeeec 100644 --- a/docs/Installazione.md +++ b/docs/Installazione.md @@ -7,7 +7,7 @@ currentMenu: installazione - [Requisiti](#requisiti) - [Installazione](#installazione) - [Versioni](#versioni) - - [Github](#github) + - [GitHub](#github) - [Strumenti utili](#strumenti-utili) - [Windows](#windows) - [Linux](#linux) @@ -47,14 +47,14 @@ Per procedere all'installazione è necessario seguire i seguenti punti: ### Versioni Per mantenere un elevato grado di trasparenza riguardo al ciclo delle release, seguiamo le linee guida [Semantic Versioning (SemVer)](http://semver.org/) per definire le versioni del progetto. -Per vedere tutte le versioni disponibili al download, visitare la [pagina relativa](https://github.com/devcode-it/openstamanager/releases) su Github (per versioni precedenti alla 2.3, visitare [SourceForge](https://sourceforge.net/projects/openstamanager/files)). +Per vedere tutte le versioni disponibili al download, visitare la [pagina relativa](https://github.com/devcode-it/openstamanager/releases) su GitHub (per versioni precedenti alla 2.3, visitare [SourceForge](https://sourceforge.net/projects/openstamanager/files)). Nel caso utilizziate il programma per uso commerciale, si consiglia di scaricare le release disponibili nel sito ufficiale del progetto (), evitando di utilizzare direttamente il codice della repository. Se siete inoltre interessati a supporto e assistenza professionali, li potete richiedere nella [sezione dedicata](http://www.openstamanager.com/per-le-aziende/). -### Github +### GitHub -Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di Github, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto. +Nel caso si stia utilizzando la versione direttamente ottenuta dalla repository di GitHub, è necessario eseguire i seguenti comandi da linea di comando per completare le dipendenze PHP (tramite [Composer](https://getcomposer.org)) e gli assets (tramite [Yarn](https://yarnpkg.com)) del progetto. ```bash php composer.phar install From f7d8ab8c01fd98b3cd39d39bdd6390af21d632f7 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Tue, 6 Feb 2018 16:05:43 +0100 Subject: [PATCH 08/16] Aggiunta di CONTRIBUTING.md Aggiunta dei file CONTRIBUTING.md, ISSUE_TEMPLATE.md e PULL_REQUEST_TEMPLATE.md. --- .github/CONTRIBUTING.md | 59 ++++++++++++++++++++++++++++++++ .github/ISSUE_TEMPLATE.md | 38 ++++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 22 ++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 000000000..b3e55859e --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,59 @@ +# Contribuire + +Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto! +Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community. +Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione... + +Non serve essere degli esperti programmatori per aiutarci! :smile_cat +Leggi le seguenti sezione per scoprire come ti consigliamo di procedere. Se ti serve un aiuto, crea una issue su GitHub. + +## Linee guida + +Per migliorare il sistema con cui sviluppiamo il codice, abbiamo deciso di adottare alcune linee guida per facilitare la collaborazione tra più persone. + +### Codice di condotta + +Per il momento non abbiamo adottato un vero e proprio codice di condotta, ma ti chiediamo di essere il più civile possibile nel comunicare con gli altri per questo progetto. + +### Stile del codice + +Utilizziamo principalmente due strumenti per mantenere consistente nel tempo lo stile del codice: +- [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) +- [EditorConfig](http://editorconfig.org>) + +PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs). + +EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig). + +Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti. + +## Prima contribuzione + +Sei insicuro su cosa potresti lavorare per contribuire al progetto? +Prova a dare un'occhiata alle issue sotto la label [nuovi contributori](https://github.com/devcode-it/openstamanager/labels/nuovi%20contributori), dove sono indicate le migliorie più semplici da applicare. + +## Problemi di sicurezza + +Se trovi un problema di sicurezza, NON aprire una issue. Inviaci un'email all'indirizzo `info at openstamanager dot com`. + +Per capire se hai individuato un problema di sicurezza, prova a farti queste domande: + +* Posso accedere a qualcosa a cui non dovrei avere accesso? +* Posso disabilitare qualcosa per altre persone? + +Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza. Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email. + +## Segnalare un bug + +Se hai individuato un bug e desideri segnalarlo, apri una nuova issue provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/ISSUE_TEMPLATE.md). + +Se vuoi suggerire una miglioramento di qualche tipo oppure una nuova funzionalità, sentiti libero di aprire una issue apposita dove spieghi dettagliatamente la modifica che vorresti, la sua utilità e il suo funzionamento generale + +## Pull Request + +Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nuova funzionalità, apri una nuova Pull Request provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/PULL_REQUEST_TEMPLATE.md). + +## Community + +Siamo presenti su [Facebook](https://www.facebook.com/openstamanager), e il nostro forum ufficiale è disponibile all'indirizzo . +Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..1a968ebf7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,38 @@ +## Comportamento richiesto + +Descrivi il comportamento che ti aspetti dal progetto. + +## Comportamento attuale + +Qual è il comportamento attuale, e come ti aspetti che venga migliorato? + +## Possibile soluzione + +[Non obbligatorio] Hai suggerimenti su come risolvere il bug o individuarne le cause? + +## Passi per riprodurre il comportamento + +[Per i bug] Descrivi dettagliatamente i singoli passi per riprodurre il malfunzionamento. + +1. +2. +3. + +Eventuale codice rilevante: +```php +Se serve, aggiungi qui il codice che vuoi farci testare +``` + +Eventuali log relativi (cartella **logs/**): +``` +Se presenti, aggiungi qui i log relativi al malfunzionamento +``` + +## Contesto + +Inserisci le informazioni riguardanti il tuo ambiente di esecuzione. Può essere utile per individuare problemi riproducibili solo con condizioni specifiche. + +* Modulo: +* Versione del progetto: +* Versione PHP: +* Tipo di server: diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..874e8c2f1 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,22 @@ +## Descrizione + +Includi un sommario dei cambiamenti introdotti, con il relativo contesto. +Elenca anche le eventuali dipendenze aggiuntive richieste per questa modifica. + +Risolve: #(issue) + +## Tipologia + +Rimuovi le opzioni non rilevanti. + +- [ ] Bug fix (cambiamenti minori che risolvono una issue) +- [ ] Nuova funzionalità (cambiamenti minori che aggiungono una nuova funzionalità) +- [ ] Cambiamento maggiore (fix o funzionalità che richiede una revisione prima di essere pubblicata) +- [ ] Questo cambiamenti richiede un aggiornamento della documentazione + +# Checklist + +- [ ] Il codice segue le linee guida del progetto +- [ ] Ho commentato il codice, in particolare nelle parti più complesse +- [ ] Ho aggiornato di conseguenza la documentazione (se presente) +- [ ] Il codice non genera warnings From 0908b19b912c89b49e209adcb943bbafbb60e85f Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Tue, 6 Feb 2018 16:10:57 +0100 Subject: [PATCH 09/16] Aggiornamento documentazione Corretta emoji della documentazione. --- .github/CONTRIBUTING.md | 2 +- docs/Contribuire.md | 66 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index b3e55859e..2f48641f4 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -4,7 +4,7 @@ Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il ben Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community. Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione... -Non serve essere degli esperti programmatori per aiutarci! :smile_cat +Non serve essere degli esperti programmatori per aiutarci! :smile_cat: Leggi le seguenti sezione per scoprire come ti consigliamo di procedere. Se ti serve un aiuto, crea una issue su GitHub. ## Linee guida diff --git a/docs/Contribuire.md b/docs/Contribuire.md index 74f78a6ed..140607c64 100644 --- a/docs/Contribuire.md +++ b/docs/Contribuire.md @@ -6,5 +6,71 @@ currentMenu: contribuire +- [Linee guida](#linee-guida) + - [Codice di condotta](#codice-di-condotta) + - [Stile del codice](#stile-del-codice) +- [Prima contribuzione](#prima-contribuzione) +- [Problemi di sicurezza](#problemi-di-sicurezza) +- [Segnalare un bug](#segnalare-un-bug) +- [Pull Request](#pull-request) +- [Community](#community) + +Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto! +Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community. +Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione... + +Non serve essere degli esperti programmatori per aiutarci! :smile_cat: +Leggi le seguenti sezione per scoprire come ti consigliamo di procedere. Se ti serve un aiuto, crea una issue su GitHub. + +## Linee guida + +Per migliorare il sistema con cui sviluppiamo il codice, abbiamo deciso di adottare alcune linee guida per facilitare la collaborazione tra più persone. + +### Codice di condotta + +Per il momento non abbiamo adottato un vero e proprio codice di condotta, ma ti chiediamo di essere il più civile possibile nel comunicare con gli altri per questo progetto. + +### Stile del codice + +Utilizziamo principalmente due strumenti per mantenere consistente nel tempo lo stile del codice: +- [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) +- [EditorConfig](http://editorconfig.org>) + +PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs). + +EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig). + +Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti. + +## Prima contribuzione + +Sei insicuro su cosa potresti lavorare per contribuire al progetto? +Prova a dare un'occhiata alle issue sotto la label [nuovi contributori](https://github.com/devcode-it/openstamanager/labels/nuovi%20contributori), dove sono indicate le migliorie più semplici da applicare. + +## Problemi di sicurezza + +Se trovi un problema di sicurezza, NON aprire una issue. Inviaci un'email all'indirizzo `info at openstamanager dot com`. + +Per capire se hai individuato un problema di sicurezza, prova a farti queste domande: + +* Posso accedere a qualcosa a cui non dovrei avere accesso? +* Posso disabilitare qualcosa per altre persone? + +Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza. Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email. + +## Segnalare un bug + +Se hai individuato un bug e desideri segnalarlo, apri una nuova issue provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/ISSUE_TEMPLATE.md). + +Se vuoi suggerire una miglioramento di qualche tipo oppure una nuova funzionalità, sentiti libero di aprire una issue apposita dove spieghi dettagliatamente la modifica che vorresti, la sua utilità e il suo funzionamento generale + +## Pull Request + +Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nuova funzionalità, apri una nuova Pull Request provando a mantenerti sulla base del [file di template su GitHub](https://github.com/devcode-it/openstamanager/blob/master/.github/PULL_REQUEST_TEMPLATE.md). + +## Community + +Siamo presenti su [Facebook](https://www.facebook.com/openstamanager), e il nostro forum ufficiale è disponibile all'indirizzo . +Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente. From e2b80bb8f7850579ff2949dc9a0c06ab5457d509 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Tue, 6 Feb 2018 16:13:47 +0100 Subject: [PATCH 10/16] Miglioramento documentazione --- .github/CONTRIBUTING.md | 16 ++++++++++++---- docs/Contribuire.md | 28 ++++++++++++++++++---------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 2f48641f4..21bdc7f6e 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,11 +1,14 @@ # Contribuire Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto! + Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community. Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione... Non serve essere degli esperti programmatori per aiutarci! :smile_cat: -Leggi le seguenti sezione per scoprire come ti consigliamo di procedere. Se ti serve un aiuto, crea una issue su GitHub. + +Leggi le seguenti sezioni per scoprire come ti consigliamo di procedere. +Se ti serve un aiuto, crea una issue su GitHub. ## Linee guida @@ -21,15 +24,18 @@ Utilizziamo principalmente due strumenti per mantenere consistente nel tempo lo - [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) - [EditorConfig](http://editorconfig.org>) -PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs). +PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità. +La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs). -EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig). +EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto. +La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig). Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti. ## Prima contribuzione Sei insicuro su cosa potresti lavorare per contribuire al progetto? + Prova a dare un'occhiata alle issue sotto la label [nuovi contributori](https://github.com/devcode-it/openstamanager/labels/nuovi%20contributori), dove sono indicate le migliorie più semplici da applicare. ## Problemi di sicurezza @@ -41,7 +47,8 @@ Per capire se hai individuato un problema di sicurezza, prova a farti queste dom * Posso accedere a qualcosa a cui non dovrei avere accesso? * Posso disabilitare qualcosa per altre persone? -Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza. Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email. +Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza. +Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email. ## Segnalare un bug @@ -56,4 +63,5 @@ Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nu ## Community Siamo presenti su [Facebook](https://www.facebook.com/openstamanager), e il nostro forum ufficiale è disponibile all'indirizzo . + Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente. diff --git a/docs/Contribuire.md b/docs/Contribuire.md index 140607c64..9a19cb6cc 100644 --- a/docs/Contribuire.md +++ b/docs/Contribuire.md @@ -4,6 +4,16 @@ currentMenu: contribuire # Contribuire +Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto! + +Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community. +Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione... + +Non serve essere degli esperti programmatori per aiutarci! :smile_cat: + +Leggi le seguenti sezioni per scoprire come ti consigliamo di procedere. +Se ti serve un aiuto, crea una issue su GitHub. + - [Linee guida](#linee-guida) @@ -17,13 +27,6 @@ currentMenu: contribuire -Sei interessato a contribuire allo sviluppo di OpenSTAManger? Ottimo, sei il benvenuto! -Siamo entusiasti di ogni nuova contribuzione che otteniamo dalla nostra community. -Ci sono molti modi per contribuire: segnalare bug, richiedere miglioramenti, scrivere tutorial, migliorare la documentazione... - -Non serve essere degli esperti programmatori per aiutarci! :smile_cat: -Leggi le seguenti sezione per scoprire come ti consigliamo di procedere. Se ti serve un aiuto, crea una issue su GitHub. - ## Linee guida Per migliorare il sistema con cui sviluppiamo il codice, abbiamo deciso di adottare alcune linee guida per facilitare la collaborazione tra più persone. @@ -38,15 +41,18 @@ Utilizziamo principalmente due strumenti per mantenere consistente nel tempo lo - [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) - [EditorConfig](http://editorconfig.org>) -PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs). +PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aumentare la sua comprensibilità. +La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.php_cs). -EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto. La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig). +EditorConfig viene sfruttato per mantenere la consistenza nella formattazione di base dei diversi altri file utilizzati nel progetto. +La configurazione può essere trovata nel file [.php_cs](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig). Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti. ## Prima contribuzione Sei insicuro su cosa potresti lavorare per contribuire al progetto? + Prova a dare un'occhiata alle issue sotto la label [nuovi contributori](https://github.com/devcode-it/openstamanager/labels/nuovi%20contributori), dove sono indicate le migliorie più semplici da applicare. ## Problemi di sicurezza @@ -58,7 +64,8 @@ Per capire se hai individuato un problema di sicurezza, prova a farti queste dom * Posso accedere a qualcosa a cui non dovrei avere accesso? * Posso disabilitare qualcosa per altre persone? -Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza. Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email. +Se la risposta a una di queste domande è positiva, allora probabilmente hai individuato un problema di sicurezza. +Considera però che anche in caso negativo potrebbe trattarsi di un problema di questo tipo, quindi se sei insicuro contattaci comunque via email. ## Segnalare un bug @@ -73,4 +80,5 @@ Se sei in grado di risolvere uno dei bug segnalati oppure vuoi completare una nu ## Community Siamo presenti su [Facebook](https://www.facebook.com/openstamanager), e il nostro forum ufficiale è disponibile all'indirizzo . + Cerchiamo di essere disponibili quanto possibile, ma non sempre riusciamo a rispondere tempestivamente. From ad89efafee95ad49f003d29df1198c8f25a0f4d0 Mon Sep 17 00:00:00 2001 From: Bacca97 Date: Tue, 6 Feb 2018 17:49:06 +0100 Subject: [PATCH 11/16] Bugfix #142 --- modules/primanota/actions.php | 50 ++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/modules/primanota/actions.php b/modules/primanota/actions.php index 974866812..dc5f39ec9 100644 --- a/modules/primanota/actions.php +++ b/modules/primanota/actions.php @@ -242,36 +242,42 @@ switch (post('op')) { for ($i = 0; $i < sizeof($rs); ++$i) { if (abs($rimanente) > 0) { - if (abs($rs[$i]['da_pagare']) >= abs($rimanente)) { - $query2 = 'SELECT pagato FROM co_scadenziario WHERE id='.prepare($rs[$i]['id']); - $rs2 = $dbo->fetchArray($query2); - $pagato = $rs2[0]['pagato']; - ($pagato < 0) ? $sign = -1 : $sign = 1; - $new_value = ((abs($pagato) - abs($rimanente)) * $sign); + if (abs($rs[$i]['pagato']) >= abs($rimanente)) { + $query2 = 'SELECT pagato FROM co_scadenziario WHERE id='.prepare($rs[$i]['id']); + $rs2 = $dbo->fetchArray($query2); + $pagato = $rs2[0]['pagato']; + + ($pagato < 0) ? $sign = -1 : $sign = 1; + $new_value = ((abs($pagato) - abs($rimanente)) * $sign); - // Se resta ancora un po' di pagato cambio solo l'importo... - if ($new_value > 0) { - $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).' WHERE id='.prepare($rs[$i]['id'])); + // Se resta ancora un po' di pagato cambio solo l'importo... + if ($new_value > 0) { + $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).' WHERE id='.prepare($rs[$i]['id'])); + } + + // ...se l'importo è a zero, azzero anche la data di pagamento + else { + $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).", data_pagamento='0000-00-00' WHERE id=".prepare($rs[$i]['id'])); + } + + $rimanente = 0; + } else { + $dbo->query("UPDATE co_scadenziario SET pagato='0', data_pagamento='0000-00-00' WHERE id=".prepare($rs[$i]['id'])); + $rimanente -= abs($rs[$i]['pagato']); } - - // ...se l'importo è a zero, azzero anche la data di pagamento - else { - $dbo->query('UPDATE co_scadenziario SET pagato='.prepare($new_value).", data_pagamento='0000-00-00' WHERE id=".prepare($rs[$i]['id'])); - } - - $rimanente = 0; - } else { - $dbo->query("UPDATE co_scadenziario SET pagato='0' WHERE id=".prepare($rs[$i]['id'])); - $rimanente -= abs($rs[$i]['da_pagare']); - } } } // Eliminazione prima nota $dbo->query('DELETE FROM co_movimenti WHERE idmastrino='.prepare($idmastrino).' AND primanota=1'); - // Aggiorno lo stato della fattura a "Emessa" - $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento)); + // Aggiorno lo stato della fattura a "Emessa" o "Parzialmente pagato" + $rs_pagamenti = $dbo->fetchArray("SELECT SUM(pagato) AS pagato FROM co_scadenziario WHERE iddocumento='".$iddocumento."'"); + if($rs_pagamenti[0]['pagato']>0){ + $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Parzialmente pagato') WHERE id=".prepare($iddocumento)); + }else{ + $dbo->query("UPDATE co_documenti SET idstatodocumento=(SELECT id FROM co_statidocumento WHERE descrizione='Emessa') WHERE id=".prepare($iddocumento)); + } // Aggiorno lo stato dei preventivi collegati alla fattura se ce ne sono $query = 'SELECT idpreventivo FROM co_righe_documenti WHERE iddocumento='.prepare($iddocumento).' AND NOT idpreventivo=0 AND idpreventivo IS NOT NULL'; From 5f414162f3bc0f30f617ee0727730b89cc1fbd9a Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 7 Feb 2018 17:15:19 +0100 Subject: [PATCH 12/16] Fix order plugins Plugins ordinabili in base al campo order --- editor.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor.php b/editor.php index 13aaa7854..8ce69adf9 100755 --- a/editor.php +++ b/editor.php @@ -73,7 +73,7 @@ if (empty($records)) { '.tr("Torna all'elenco").' '; - $plugins = $dbo->fetchArray('SELECT id, title FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab' AND enabled = 1"); + $plugins = $dbo->fetchArray('SELECT id, title FROM zz_plugins WHERE idmodule_to='.prepare($id_module)." AND position='tab' AND enabled = 1 ORDER BY zz_plugins.order DESC"); foreach ($plugins as $plugin) { echo ' From 04e72b2a6dc2ddfe24c824ceb3adeeda6bc3c923 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Thu, 8 Feb 2018 11:04:26 +0100 Subject: [PATCH 13/16] Fix bug su colore righe datatables --- ajax_dataload.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ajax_dataload.php b/ajax_dataload.php index 92178f71c..0cd3dc021 100644 --- a/ajax_dataload.php +++ b/ajax_dataload.php @@ -126,7 +126,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom } // Allineamento al centro se il valore della prima riga risulta relativo a date o icone - elseif (Translator::getFormatter()->isStandardDate($value) || preg_match('/^icontr(.+?)$/', $field)) { + elseif (Translator::getFormatter()->isStandardDate($value) || preg_match('/^icon_(.+?)$/', $field)) { $align[$field] = 'text-center'; } } @@ -162,7 +162,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom } // Icona - if (preg_match('/^colortr(.+?)$/', $field, $m)) { + if (preg_match('/^color_(.+?)$/', $field, $m)) { $value = $r['color_title_'.$m[1]] ?: ''; $column['class'] = 'text-center small'; From 5dbd9392b487b483e09f636954093250649f9366 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Thu, 8 Feb 2018 11:08:40 +0100 Subject: [PATCH 14/16] Fix della configurazione .htaccess in files --- files/.htaccess | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/files/.htaccess b/files/.htaccess index 521aa7bf2..5520a48f5 100644 --- a/files/.htaccess +++ b/files/.htaccess @@ -1,5 +1,7 @@ # Disable PHP rendering -php_flag engine off - -## Options -ExecCGI -AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi + + php_flag engine off + + + php_flag engine off + From ec97471c2eec28714e8142095583eca62137e571 Mon Sep 17 00:00:00 2001 From: Luca Date: Fri, 9 Feb 2018 10:46:13 +0100 Subject: [PATCH 15/16] Migliorata pianificazione interventi da contratti MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Migliorata la pianificazione interventi dai contratti aggiungendo anche la possibilità di pianificare i promemoria ed eventualmente i relativi interventi in maniera ciclica. --- .../contratti/plugins/addpianficazione.php | 134 ++++++++++++ .../contratti.pianificazioneinterventi.php | 199 +++++++++++++++++- 2 files changed, 324 insertions(+), 9 deletions(-) create mode 100644 modules/contratti/plugins/addpianficazione.php diff --git a/modules/contratti/plugins/addpianficazione.php b/modules/contratti/plugins/addpianficazione.php new file mode 100644 index 000000000..f7b995bf1 --- /dev/null +++ b/modules/contratti/plugins/addpianficazione.php @@ -0,0 +1,134 @@ + + +$idcontratto_riga = $get['idcontratto_riga']; +$qp = 'SELECT *, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_record.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento FROM co_righe_contratti WHERE id = '.$idcontratto_riga; +$rsp = $dbo->fetchArray($qp); + +$data_richiesta = readDate($rsp[0]['data_richiesta']); + +$orario_inizio = '09:00'; +$orario_fine = '17:00'; + +echo ' +
+ + + +
+ + +
+ {[ "type": "select", "label": "'.tr('Tipo intervento').'", "name": "idtipointervento", "values": "query=SELECT idtipointervento AS id, descrizione FROM in_tipiintervento ORDER BY descrizione ASC", "value": "'.$rsp[0]['idtipointervento'].'", "extra": "disabled" ]} +
+ + +
+ {[ "type": "number", "label": "'.tr('Intervallo').'", "name": "intervallo", "class": "", "decimals": 0, "required": 1, "icon-after": "GG", "min-value": "1" ]} +
+ + + +
+ +
+ +
+ {[ "type": "textarea", "label": "'.tr('Descrizione').'", "placeholder": "'.tr('Descrizione').'", "name": "richiesta", "extra": "readonly", "value": "'.$rsp[0]['richiesta'].'" ]} +
+ +
+ + +
+ + + + + +'; + +?> + +
+ {[ "type": "select", "label": "", "name": "parti_da_oggi", "values": "list= \"0\":\"\", \"1\":\"\"", "value": "" ]} +
+ + + {[ "type": "date", "label": "'.tr('Fine pianificazione (Data conclusione contratto)').'", "name": "data_conclusione", "extra": "readonly", "value": "'.$rsp[0]['data_conclusione'].'" ]} +
+ + + + +
+ +
+ {[ "type": "checkbox", "label": "'.tr('Pianifica intervento').'", "name": "pianifica_intervento", "value": "0", "help": "", "placeholder": "'.tr('Pianificare anche gli interventi ').'" ]} +
+ +
+ {[ "type": "select", "label": "'.tr('Tecnici').'", "multiple": "1", "name": "idtecnico[]", "required": 0, "ajax-source": "tecnici", "value": "", "extra": "disabled" ]} +
+ + +
+ {[ "type": "time", "label": "'.tr('Orario inizio').'", "name": "orario_inizio", "required": 0, "value": "'.$orario_inizio.'", "extra": "disabled" ]} +
+ +
+ {[ "type": "time", "label": "'.tr('Orario fine').'", "name": "orario_fine", "required": 0, "value": "'.$orario_fine.'", "extra": "disabled" ]} +
+ + + + +
+ + + + + +
+
+ +
+
+ + +
'; + +echo ' + '; + +echo ' + '; \ No newline at end of file diff --git a/modules/contratti/plugins/contratti.pianificazioneinterventi.php b/modules/contratti/plugins/contratti.pianificazioneinterventi.php index f24eca427..03cdef60c 100644 --- a/modules/contratti/plugins/contratti.pianificazioneinterventi.php +++ b/modules/contratti/plugins/contratti.pianificazioneinterventi.php @@ -31,6 +31,170 @@ switch (filter('op')) { redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin); break; + + + + //pianificazione + case 'pianificazione': + + $idcontratto_riga = filter('idcontratto_riga'); + $intervallo = filter('intervallo'); + $parti_da_oggi = post('parti_da_oggi'); + + if (!empty($idcontratto_riga) and !empty($intervallo) ){ + + $qp = 'SELECT *, (SELECT idanagrafica FROM co_contratti WHERE id = '.$id_record.' ) AS idanagrafica, (SELECT data_conclusione FROM co_contratti WHERE id = '.$id_record.' ) AS data_conclusione, (SELECT descrizione FROM in_tipiintervento WHERE idtipointervento=co_righe_contratti.idtipointervento) AS tipointervento FROM co_righe_contratti WHERE id = '.$idcontratto_riga; + $rsp = $dbo->fetchArray($qp); + + $idtipointervento = $rsp[0]['idtipointervento']; + $idsede = $rsp[0]['idsede']; + $richiesta = $rsp[0]['richiesta']; + + //mi serve per la pianificazione interventi + $idanagrafica = $rsp[0]['idanagrafica']; + + $data_conclusione = $rsp[0]['data_conclusione']; + $data_richiesta = $rsp[0]['data_richiesta']; + + + //se voglio pianificare anche le date precedenti ad oggi (parto da questo promemoria) + if ($parti_da_oggi){ + + //oggi + $min_date = date('Y-m-d'); + + + }else{ + + $min_date = date('Y-m-d', strtotime($data_richiesta)); + + } + + //inizio controllo data_conclusione, data valida e maggiore della $min_date + if ( (date('Y', strtotime($data_conclusione)) > 1970) and (date('Y-m-d', strtotime($min_date)) < date('Y-m-d', strtotime($data_conclusione))) ) { + + //Ciclo partendo dalla data_richiesta fino all data conclusione del contratto + while ( date('Y-m-d', strtotime($data_richiesta)) < date('Y-m-d', strtotime($data_conclusione)) ){ + + //calcolo nuova data richiesta + $data_richiesta = date('Y-m-d', strtotime($data_richiesta. " + ".intval($intervallo)." days") ); + + + //controllo nuova data richiesta --> solo date maggiori o uguali di [oggi o data richiesta iniziale] ma che non superano la data di fine del contratto + if ( (date('Y-m-d', strtotime($data_richiesta)) >= $min_date ) and (date('Y-m-d', strtotime($data_richiesta)) <= date('Y-m-d', strtotime($data_conclusione))) ){ + + //Controllo che non esista già un promemoria idcontratto, idtipointervento e data_richiesta. + if ( count($dbo->fetchArray("SELECT id FROM co_righe_contratti WHERE data_richiesta = '".$data_richiesta."' AND idtipointervento = '".$idtipointervento."' AND idcontratto = '".$id_record."' ")) == 0 ){ + + $query = 'INSERT INTO `co_righe_contratti`(`idcontratto`, `idtipointervento`, `data_richiesta`, `richiesta`, `idsede`) VALUES('.prepare($id_record).', '.prepare($idtipointervento).', '.prepare($data_richiesta).', '.prepare($richiesta).', '.prepare($idsede).')'; + + if ($dbo->query($query)) { + + $idriga = $dbo->lastInsertedID(); + + $_SESSION['infos'][] = tr('Promemoria intervento pianificato!'); + + + //pianificare anche l' intervento? + if ($post['pianifica_intervento']){ + + /*$orario_inizio = post('orario_inizio'); + $orario_fine = post('orario_fine');*/ + + //$idanagrafica = 2; + + //intervento sempre nello stato "In programmazione" + $idstatointervento = 'WIP'; + + //calcolo codice intervento + $formato = get_var('Formato codice intervento'); + $template = str_replace('#', '%', $formato); + + $rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice=(SELECT MAX(CAST(codice AS SIGNED)) FROM in_interventi) AND codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1'); + $codice = get_next_code($rs[0]['codice'], 1, $formato); + + if (empty($codice)) { + $rs = $dbo->fetchArray('SELECT codice FROM in_interventi WHERE codice LIKE '.prepare($template).' ORDER BY codice DESC LIMIT 0,1'); + + $codice = get_next_code($rs[0]['codice'], 1, $formato); + } + + + + // Creo intervento + $dbo->insert('in_interventi', [ + 'idanagrafica' => $idanagrafica, + 'idclientefinale' => post('idclientefinale') ?: 0, + 'idstatointervento' => $idstatointervento, + 'idtipointervento' => $idtipointervento, + 'idsede' => $idsede ?: 0, + 'idautomezzo' => $idautomezzo ?: 0, + + 'codice' => $codice, + 'data_richiesta' => $data_richiesta, + 'richiesta' => $richiesta, + ]); + + $idintervento = $dbo->lastInsertedID(); + + + + $idtecnici = post('idtecnico'); + + //aggiungo i tecnici + foreach ($idtecnici as $idtecnico) { + add_tecnico($idintervento, $idtecnico, $data_richiesta.' '.post('orario_inizio'), $data_richiesta.' '.post('orario_fine'), $id_record); + } + + //collego l'intervento ai promemoria + $dbo->query('UPDATE co_righe_contratti SET idintervento='.prepare($idintervento).' WHERE id='.prepare($idriga)); + + // $_SESSION['infos'][] = tr('Intervento '.$codice.' pianificato correttamente.'); + + $_SESSION['infos'][] = tr('Interventi pianificati correttamente.'); + + + } + //fine if pianificazione intervento + + + }else{ + + $_SESSION['errors'][] = tr('Errore durante esecuzione query di pianificazione. #'.$idcontratto_riga); + + } + + }else{ + + $_SESSION['warnings'][] = tr("Esiste già un promemoria pianificato per il ".readDate($data_richiesta)."."); + + + } + + } + //fine controllo nuova data richiesta + + } + //fine ciclo while + + }else{ + + $_SESSION['errors'][] = tr('Nessuna data di conclusione del contratto oppure quest\'ultima è già trascorsa, impossibile pianificare nuovi promemoria.'); + + } + //fine controllo data_conclusione + + + }else{ + + $_SESSION['errors'][] = tr('Errore durante la pianificazione. #'.$idcontratto_riga); + + } + + redirect($rootdir.'/editor.php?id_module='.$id_module.'&id_record='.$id_record.'#tab_'.$id_plugin); + break; + + } // Righe già inserite @@ -84,27 +248,44 @@ if (count($rsp) != 0) { '_NUM_' => $rsp2[0]['codice'], '_DATE_' => Translator::dateToLocale($rsp2[0]['data']), ])); + + $disabled = 'disabled'; + } else { $info_intervento = '- '.('Nessuno').' -'; + $disabled = ''; } + + + if (date('Y', strtotime($records[0]['data_conclusione']))<1971){ + $records[0]['data_conclusione'] = ''; + } echo ' - '.Translator::dateToLocale($rsp[$i]['data_richiesta']).' + '.Translator::dateToLocale($rsp[$i]['data_richiesta']).' '.$rsp[$i]['tipointervento'].' '.nl2br($rsp[$i]['richiesta']).' '.$info_intervento.' '.$info_sede.' '; + + + + echo ' + '; + + + + + + echo ' + '; - if (empty($rsp[$i]['idintervento'])) { - echo ' - '; + echo ' + '; - echo ' - '; - } echo ' '; From 00a5924cbae1a8745c12a24929654cafaf4e50cc Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Fri, 9 Feb 2018 14:00:41 +0100 Subject: [PATCH 16/16] Replica fix da branch 2.4 Replica fix da branch 2.4 per le stampe: risolve i problemi indirizzati da #141 e ottimizza la gestione futura. --- templates/info.php | 43 ++++++++++++++++------------------ templates/pdfgen_variables.php | 5 +++- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/templates/info.php b/templates/info.php index 7b26d36a9..d9ec66706 100644 --- a/templates/info.php +++ b/templates/info.php @@ -33,19 +33,7 @@ $keys = []; // Predisposizione delle informazioni delle anagrafiche per la sostituzione automatica foreach ($replace as $prefix => $values) { - // Individuazione dei campi minimi $values = (array) $values; - if ($prefix == 'c_') { - $keys = array_keys($values); - } - - // Se l'azienda predefinita non è impostata - if (empty($values) && $prefix == 'f_') { - $values = []; - foreach ($keys as $key) { - $values[$key] = ''; - } - } // Rinominazione dei campi foreach ($rename as $key => $value) { @@ -53,11 +41,6 @@ foreach ($replace as $prefix => $values) { unset($values[$key]); } - // Salvataggio dei campi come variabili PHP - foreach ($values as $key => $value) { - ${$prefix.$key} = $value; - } - // Eventuali estensioni dei contenuti $citta = ''; if (!empty($values['cap'])) { @@ -72,23 +55,37 @@ foreach ($replace as $prefix => $values) { $values['citta_full'] = $citta; - // Completamento dei campi minimi - if ($key == 'c_') { - $keys = array_unique(array_merge($keys, array_keys($values))); + $replace[$prefix] = $values; + + // Individuazione dei campi minimi + $keys = array_merge($keys, array_keys($values)); +} + +$keys = array_unique($keys); + +foreach ($replace as $prefix => $values) { + // Impostazione di default per le informazioni mancanti + foreach ($keys as $key) { + if (!isset($values[$key])) { + $values[$key] = ''; + } } - // Aggiunta delle informazioni per la sostituzione automatica + // Salvataggio dei campi come variabili PHP e aggiunta delle informazioni per la sostituzione automatica foreach ($values as $key => $value) { + ${$prefix.$key} = $value; $replaces[$prefix.$key] = $value; } } // Valori aggiuntivi per la sostituzione $replaces = array_merge($replaces, [ + 'default_header' => include DOCROOT.'/templates/base/header.php', + 'default_footer' => include DOCROOT.'/templates/base/footer.php', 'docroot' => DOCROOT, 'rootdir' => ROOTDIR, 'footer' => !empty($footer) ? $footer : '', 'dicitura_fissa_fattura' => get_var('Dicitura fissa fattura'), - 'default_header' => include DOCROOT.'/templates/base/header.php', - 'default_footer' => include DOCROOT.'/templates/base/footer.php', ]); + +unset($replace); diff --git a/templates/pdfgen_variables.php b/templates/pdfgen_variables.php index e0780c61a..8f16613dd 100644 --- a/templates/pdfgen_variables.php +++ b/templates/pdfgen_variables.php @@ -3,7 +3,10 @@ include_once __DIR__.'/info.php'; // Retrocompatibilità con le stampe gestite da HTML2PDF -$replaces['pagination'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['pagination']); +$replaces['default_header'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['default_header']); + +$replaces['footer'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['footer']); +$replaces['default_footer'] = str_replace(['{PAGENO}', '{nb}'], ['[[page_cu]]', '[[page_nb]]'], $replaces['default_footer']); $prefixes = [ 'c_',