From 5f414162f3bc0f30f617ee0727730b89cc1fbd9a Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 7 Feb 2018 17:15:19 +0100 Subject: [PATCH 01/18] 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 02/18] 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 03/18] 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 04/18] 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 05/18] 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_', From 2129106a4b3b307a087d8d4b20025bc1aa33c3a6 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Fri, 9 Feb 2018 14:25:40 +0100 Subject: [PATCH 06/18] Miglioria #139 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correzione delle query per la selezione degli articoli, con rimozione del limite di quantità per gli articoli nelle Fatture di Acquisto. Ottimizzazione delle query per l'individuazione della presenza di Articoli, DDT, ... Grazie a @dariosera e @xxfuma85xx --- ajax_select.php | 6 ++--- modules/articoli/modutil.php | 6 ++--- modules/fatture/edit.php | 52 ++++++++++++++++++++---------------- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/ajax_select.php b/ajax_select.php index 366e76edf..4ca1eaa1d 100644 --- a/ajax_select.php +++ b/ajax_select.php @@ -231,9 +231,9 @@ switch ($op) { $filter[] = 'mg_articoli.id='.prepare($element); } - $where[] = 'attivo=1'; + $where[] = 'attivo = 1'; if (!empty($superselect['dir']) && $superselect['dir'] == 'entrata') { - //$where[] = 'qta>0'; + //$where[] = '(qta > 0 OR servizio = 1)'; } if (!empty($search)) { @@ -241,7 +241,6 @@ switch ($op) { $search_fields[] = 'mg_articoli.codice LIKE '.prepare('%'.$search.'%'); } - $wh = ''; if (!empty($search_fields)) { $where[] = '('.implode(' OR ', $search_fields).')'; } @@ -250,6 +249,7 @@ switch ($op) { $where[] = '('.implode(' OR ', $filter).')'; } + $wh = ''; if (count($where) != 0) { $wh = 'WHERE '.implode(' AND ', $where); } diff --git a/modules/articoli/modutil.php b/modules/articoli/modutil.php index 73f71e13f..dabab38f7 100644 --- a/modules/articoli/modutil.php +++ b/modules/articoli/modutil.php @@ -12,7 +12,7 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = ' if (empty($qta)) { return false; } - + //Info Articolo $rs_art = $dbo->fetchArray("SELECT * FROM mg_articoli WHERE id='".$idarticolo."'"); @@ -79,9 +79,9 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = ' $movimento = str_replace(['_NAME_', '_TYPE_', '_NUM_'], [$nome, $tipo, $numero], $movimento); $new = ($qta > 0 ? '+' : '').$qta; - + //Movimento il magazzino solo se l'articolo non è un servizio - if($rs_art[0]['servizio']==0){ + if ($rs_art[0]['servizio'] == 0) { // Movimentazione effettiva if (empty($array['idintervento']) || empty($array['idautomezzo'])) { $dbo->query('UPDATE mg_articoli SET qta = qta + '.$new.' WHERE id = '.prepare($idarticolo)); diff --git a/modules/fatture/edit.php b/modules/fatture/edit.php index 2b24704c2..7aad27565 100644 --- a/modules/fatture/edit.php +++ b/modules/fatture/edit.php @@ -7,6 +7,7 @@ $dir = $rs[0]['dir']; $tipodoc = $rs[0]['descrizione']; $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica']; +$_SESSION['superselect']['ddt'] = $dir; ?>
@@ -17,12 +18,12 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica']; - +
-

+

@@ -42,7 +43,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
'; $label = tr('Numero secondario'); } else { - $label = tr('Numero fattura'); + $label = tr('Numero fattura'); } ?>
@@ -109,7 +110,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica'];
- {[ "type": "select", "label": "", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir=''", "value": "$idtipodocumento$" ]} + {[ "type": "select", "label": "", "name": "idtipodocumento", "required": 1, "values": "query=SELECT id, descrizione FROM co_tipidocumento WHERE dir=''", "value": "$idtipodocumento$" ]}
@@ -120,7 +121,7 @@ $_SESSION['superselect']['idanagrafica'] = $records[0]['idanagrafica']; $ajaxsource = 'conti-acquisti'; } ?> - {[ "type": "select", "label": "", "name": "idconto", "required": 1, "value": "$idconto$", "ajax-source": "" ]} + {[ "type": "select", "label": "", "name": "idconto", "required": 1, "value": "$idconto$", "ajax-source": "" ]}
@@ -191,13 +192,13 @@ $da_pagare = $rs3[0]['da_pagare']; if (($n2 <= 0 && $records[0]['stato'] == 'Emessa') || $differenza != 0) { ?> - Aggiungi prima nota...

+ ...

- Riapri fattura... + ... @@ -206,7 +207,7 @@ if ($records[0]['stato'] == 'Pagato') {
- {[ "type": "number", "label": "", "name": "sconto_generico", "value": "$sconto_globale$", "help": "", "icon-after": "choice|untprc|$tipo_sconto_globale$"", "name": "sconto_generico", "value": "$sconto_globale$", "help": "", "icon-after": "choice|untprc|$tipo_sconto_globale$"fetchNum($qi); + $int_query = 'SELECT COUNT(*) AS tot FROM in_interventi WHERE idanagrafica='.prepare($records[0]['idanagrafica'])." AND NOT idstatointervento='DENY' AND id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)"; + $interventi = $dbo->fetchArray($int_query)[0]['tot']; // Se non trovo niente provo a vedere se ce ne sono per clienti terzi if (empty($interventi)) { // Lettura interventi non rifiutati, non fatturati e non collegati a preventivi o contratti (clienti terzi) - $qi = 'SELECT id FROM in_interventi WHERE idclientefinale='.prepare($records[0]['idanagrafica'])." AND NOT idstatointervento='DENY' AND id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)"; - $interventi = $dbo->fetchNum($qi); + $int_query = 'SELECT COUNT(*) AS tot FROM in_interventi WHERE idclientefinale='.prepare($records[0]['idanagrafica'])." AND NOT idstatointervento='DENY' AND id NOT IN (SELECT idintervento FROM co_righe_documenti WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_preventivi_interventi WHERE idintervento IS NOT NULL) AND id NOT IN (SELECT idintervento FROM co_righe_contratti WHERE idintervento IS NOT NULL)"; + $interventi = $dbo->fetchArray($int_query)[0]['tot']; } echo ' @@ -266,16 +267,16 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') { '; // Lettura preventivi accettati, in attesa di conferma o in lavorazione - $qp = 'SELECT id FROM co_preventivi WHERE idanagrafica='.prepare($records[0]['idanagrafica'])." AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione='Accettato' OR descrizione='In lavorazione' OR descrizione='In attesa di conferma')"; - $preventivi = $dbo->fetchNum($qp); + $prev_query = 'SELECT COUNT(*) AS tot FROM co_preventivi WHERE idanagrafica='.prepare($records[0]['idanagrafica'])." AND id NOT IN (SELECT idpreventivo FROM co_righe_documenti WHERE NOT idpreventivo=NULL) AND idstato IN( SELECT id FROM co_statipreventivi WHERE descrizione='Accettato' OR descrizione='In lavorazione' OR descrizione='In attesa di conferma')"; + $preventivi = $dbo->fetchArray($prev_query)[0]['tot']; echo ' Preventivo '; // Lettura contratti accettati, in attesa di conferma o in lavorazione - $qc = 'SELECT id FROM co_contratti WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND id NOT IN (SELECT idcontratto FROM co_righe_documenti WHERE NOT idcontratto=NULL) AND idstato IN( SELECT id FROM co_staticontratti WHERE fatturabile = 1) AND NOT EXISTS (SELECT id FROM co_righe_documenti WHERE co_righe_documenti.idcontratto = co_contratti.id)'; - $contratti = $dbo->fetchNum($qc); + $contr_query = 'SELECT COUNT(*) AS tot FROM co_contratti WHERE idanagrafica='.prepare($records[0]['idanagrafica']).' AND id NOT IN (SELECT idcontratto FROM co_righe_documenti WHERE NOT idcontratto=NULL) AND idstato IN( SELECT id FROM co_staticontratti WHERE fatturabile = 1) AND NOT EXISTS (SELECT id FROM co_righe_documenti WHERE co_righe_documenti.idcontratto = co_contratti.id)'; + $contratti = $dbo->fetchArray($contr_query)[0]['tot']; echo ' @@ -283,8 +284,8 @@ 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 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); + $ddt_query = 'SELECT COUNT(*) AS tot 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->fetchArray($ddt_query)[0]['tot']; echo ' Ddt @@ -292,7 +293,12 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') { } // Lettura articoli - $articoli = $dbo->fetchNum('SELECT * FROM mg_articoli WHERE qta > 0'); + $art_query = 'SELECT COUNT(*) AS tot FROM mg_articoli WHERE attivo = 1'; + if ($dir == 'entrata') { + $art_query .= ' AND (qta > 0 OR servizio = 1)'; + } + + $articoli = $dbo->fetchArray($art_query)[0]['tot']; echo ' Articolo @@ -302,7 +308,7 @@ if ($records[0]['stato'] != 'Pagato' && $records[0]['stato'] != 'Emessa') { Riga generica '; - + echo ' Descrizione @@ -341,11 +347,11 @@ if ($dir == 'entrata') { } else { if ($records[0]['descrizione_tipodoc'] == 'Fattura accompagnatoria di vendita') { ?> - Stampa fattura + Stampa fattura - Stampa fattura + Stampa fattura
-{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} +{( "name": "filelist_and_upload", "id_module": "", "id_record": "" )} '; // Clienti top -$clienti = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15'); +$clienti = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale, (SELECT COUNT(*) FROM co_documenti WHERE co_documenti.idanagrafica =an_anagrafiche.idanagrafica) AS qta, an_anagrafiche.idanagrafica, an_anagrafiche.ragione_sociale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica=co_documenti.idanagrafica WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end).' GROUP BY an_anagrafiche.idanagrafica ORDER BY SUM(subtotale - sconto) DESC LIMIT 15'); -$totale = $dbo->fetchArray("SELECT SUM(subtotale - sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end)); +$totale = $dbo->fetchArray("SELECT SUM(co_righe_documenti.subtotale - co_righe_documenti.sconto) AS totale FROM co_documenti INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id INNER JOIN co_righe_documenti ON co_righe_documenti.iddocumento=co_documenti.id WHERE co_tipidocumento.dir='entrata' AND co_documenti.data BETWEEN ".prepare($start).' AND '.prepare($end)); echo '
From 9d0bfa0f09f4d4b527be106b56904ef1b2986b02 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Sat, 10 Feb 2018 18:43:17 +0100 Subject: [PATCH 15/18] Bugfix #148 --- ajax_dataload.php | 2 +- update/2_3_1.sql | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ajax_dataload.php b/ajax_dataload.php index 0cd3dc021..c8c9741bd 100644 --- a/ajax_dataload.php +++ b/ajax_dataload.php @@ -80,7 +80,7 @@ if (!empty($module_query) && $module_query != 'menu' && $module_query != 'custom unset($pieces[$cont - 1]); } - $module_query = implode('ORDER', $pieces).' ORDER BY `'.$total['order_by'][$order['column']].'` '.$order['dir']; + $module_query = implode('ORDER', $pieces).' ORDER BY '.$total['order_by'][$order['column']].' '.$order['dir']; } // Calcolo di eventuali somme diff --git a/update/2_3_1.sql b/update/2_3_1.sql index d7464a51e..2f5abd418 100644 --- a/update/2_3_1.sql +++ b/update/2_3_1.sql @@ -7,3 +7,10 @@ ALTER TABLE `zz_files` ADD `id_plugin` int(11) AFTER `id_module`; -- Aggiunto valore NULL a idarticolo in co_righe2_contratti -- ALTER TABLE `co_righe2_contratti` CHANGE `idarticolo` `idarticolo` int(11); -- UPDATE `co_righe2_contratti` SET `idarticolo` = NULL WHERE `idarticolo` = 0; + +-- Aggiornamento ORDER BY nei moduli Fatture, DDT, Ordini, Preventivi, Contratti e Interventi +UPDATE `zz_views` SET `order_by` = 'CAST(numero_esterno AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN ('Fatture di vendita', 'Fatture di acquisto', 'Ordini cliente', 'Ordini fornitore', 'Ddt di vendita', 'Ddt di acquisto')); + +UPDATE `zz_views` SET `order_by` = 'CAST(in_interventi.codice AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'); + +UPDATE `zz_views` SET `order_by` = 'CAST(numero AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN ('Ordini Preventivi', 'Contratti')); From aadf7bc8c54dd53477a214362992f492ff587baf Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Sat, 10 Feb 2018 18:59:44 +0100 Subject: [PATCH 16/18] Miglioria minore --- docs/CONTRIBUTING.md | 2 +- update/2_3_1.sql | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 53ce48bb7..49625e5b9 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -32,7 +32,7 @@ PHP CS Fixer viene utilizzato per formattare automaticamente il codice PHP e aum 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). +La configurazione può essere trovata nel file [.editorconfig](https://github.com/devcode-it/openstamanager/blob/master/.editorconfig). Maggiori informazioni sui plugin che permettono di integrare questi strumenti sono disponibili nei relativi siti. diff --git a/update/2_3_1.sql b/update/2_3_1.sql index 2f5abd418..48075dbe8 100644 --- a/update/2_3_1.sql +++ b/update/2_3_1.sql @@ -14,3 +14,6 @@ UPDATE `zz_views` SET `order_by` = 'CAST(numero_esterno AS UNSIGNED)' WHERE `nam UPDATE `zz_views` SET `order_by` = 'CAST(in_interventi.codice AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Interventi'); UPDATE `zz_views` SET `order_by` = 'CAST(numero AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` IN (SELECT `id` FROM `zz_modules` WHERE `name` IN ('Ordini Preventivi', 'Contratti')); + +-- Query per ignorare i punti nella ricerca in Ragione sociale +-- UPDATE `zz_views` SET `search_inside` = CONCAT('REPLACE(', `query`, ', ''.'', '''') LIKE |search|') WHERE `name` = 'Ragione sociale'; From 2590a58e18a8ca13ee5f23ca2f1d861a0e71e19f Mon Sep 17 00:00:00 2001 From: Fabio Lovato Date: Sat, 10 Feb 2018 19:42:52 +0100 Subject: [PATCH 17/18] Bugfix #21 --- modules/partitario/edit.php | 56 ++++---- .../pdfgen.partitario_mastrino.php | 125 +++++++++--------- 2 files changed, 91 insertions(+), 90 deletions(-) mode change 100644 => 100755 modules/partitario/edit.php mode change 100644 => 100755 templates/partitario_mastrino/pdfgen.partitario_mastrino.php diff --git a/modules/partitario/edit.php b/modules/partitario/edit.php old mode 100644 new mode 100755 index 0d2a4b72c..159c0413b --- a/modules/partitario/edit.php +++ b/modules/partitario/edit.php @@ -11,11 +11,11 @@ $n1 = sizeof($rs1); // Livello 1 for ($x = 0; $x < $n1; ++$x) { - $totale_attivita = 0.00; - $totale_passivita = 0.00; + $totale_attivita = []; + $totale_passivita = []; - $costi = 0.00; - $ricavi = 0.00; + $costi = []; + $ricavi = []; if ($rs1[$x]['descrizione'] == 'Economico') { echo "

Conto economico

\n"; @@ -54,7 +54,7 @@ for ($x = 0; $x < $n1; ++$x) { echo " \n"; for ($z = 0; $z < $n3; ++$z) { - $totale_conto_liv3 = 0.00; + $totale_conto_liv3 = []; echo " \n"; echo " \n"; } // Fine livello3 @@ -193,9 +193,9 @@ for ($x = 0; $x < $n1; ++$x) { if ($rs1[$x]['descrizione'] == 'Patrimoniale') { // Riepilogo - $attivita = abs($totale_attivita); - $passivita = abs($totale_passivita); - $utile_perdita = abs($totale_ricavi) - abs($totale_costi); + $attivita = abs(sum($totale_attivita)); + $passivita = abs(sum($totale_passivita)); + $utile_perdita = abs(sum($totale_ricavi)) - abs(sum($totale_costi)); if ($utile_perdita < 0) { $pareggio1 = $attivita + abs($utile_perdita); $pareggio2 = abs($passivita); @@ -230,7 +230,7 @@ for ($x = 0; $x < $n1; ++$x) { echo "

Perdita d'esercizio:

\n"; echo "\n"; echo "\n"; echo "\n"; echo "\n"; @@ -239,7 +239,7 @@ for ($x = 0; $x < $n1; ++$x) { echo "

Utile:

\n"; echo "\n"; echo "\n"; } @@ -248,7 +248,7 @@ for ($x = 0; $x < $n1; ++$x) { echo "

Totale a pareggio:

\n"; echo "\n"; echo "\n"; echo "\n"; @@ -257,13 +257,13 @@ for ($x = 0; $x < $n1; ++$x) { echo "

Totale a pareggio:

\n"; echo "\n"; echo "\n"; echo '
\n"; @@ -102,7 +102,7 @@ for ($x = 0; $x < $n1; ++$x) { echo '
\n"; if (sizeof($rs) > 0) { - $totale_conto_liv3 = 0.00; + $totale_conto_liv3 = []; echo " \n"; echo " \n"; @@ -117,7 +117,7 @@ for ($x = 0; $x < $n1; ++$x) { if ($rs[$i]['iddocumento'] != '') { $module = ($rs[$i]['dir'] == 'entrata') ? Modules::get('Fatture di vendita')['id'] : Modules::get('Fatture di acquisto')['id']; echo "".$rs[$i]['descrizione']."\n"; - // echo " ".$rs[$i]['descrizione']."\n"; + // echo " ".$rs[$i]['descrizione']."\n"; } else { echo ' '.$rs[$i]['descrizione']."\n"; } @@ -137,9 +137,9 @@ for ($x = 0; $x < $n1; ++$x) { echo " \n"; if ($rs1[$x]['descrizione'] == 'Patrimoniale') { - $totale_conto_liv3 += $rs[$i]['totale']; + $totale_conto_liv3[] = $rs[$i]['totale']; } else { - $totale_conto_liv3 -= $rs[$i]['totale']; + $totale_conto_liv3[] = -$rs[$i]['totale']; } } @@ -150,9 +150,9 @@ for ($x = 0; $x < $n1; ++$x) { echo " \n"; if ($rs1[$x]['descrizione'] == 'Patrimoniale') { - $totale_conto_liv3 += $rs[$i]['totale']; + $totale_conto_liv3[] = $rs[$i]['totale']; } else { - $totale_conto_liv3 -= $rs[$i]['totale']; + $totale_conto_liv3[] = -$rs[$i]['totale']; } } echo " \n"; @@ -160,16 +160,16 @@ for ($x = 0; $x < $n1; ++$x) { // Somma dei totali if ($rs1[$x]['descrizione'] == 'Patrimoniale') { - if ($totale_conto_liv3 > 0) { - $totale_attivita += $totale_conto_liv3; + if (sum($totale_conto_liv3) > 0) { + $totale_attivita[] = abs(sum($totale_conto_liv3)); } else { - $totale_passivita += $totale_conto_liv3; + $totale_passivita[] = abs(sum($totale_conto_liv3)); } } else { - if ($totale_conto_liv3 > 0) { - $totale_ricavi += $totale_conto_liv3; + if (sum($totale_conto_liv3) > 0) { + $totale_ricavi[] = abs(sum($totale_conto_liv3)); } else { - $totale_costi += $totale_conto_liv3; + $totale_costi[] = abs(sum($totale_conto_liv3)); } } echo "
Causale
\n"; @@ -178,7 +178,7 @@ for ($x = 0; $x < $n1; ++$x) { echo "
\n"; - echo Translator::numberToLocale($totale_conto_liv3)." €\n"; + echo Translator::numberToLocale(sum($totale_conto_liv3))." €\n"; echo "
\n"; - echo "

".Translator::numberToLocale($utile_perdita)." €

\n"; + echo "

".Translator::numberToLocale(sum($utile_perdita))." €

\n"; echo "
\n"; - echo "

".Translator::numberToLocale($utile_perdita)." €

\n"; + echo "

".Translator::numberToLocale(sum($utile_perdita))." €

\n"; echo "
\n"; - echo "

".Translator::numberToLocale($pareggio1)." €

\n"; + echo "

".Translator::numberToLocale(sum($pareggio1))." €

\n"; echo "
\n"; - echo "

".Translator::numberToLocale($pareggio2)." €

\n"; + echo "

".Translator::numberToLocale(sum($pareggio2))." €

\n"; echo "
'; } else { - echo "

RICAVI: ".Translator::numberToLocale($totale_ricavi)." €

\n"; - echo "

COSTI: ".Translator::numberToLocale(abs($totale_costi))." €

\n"; - echo "

UTILE/PERDITA: ".Translator::numberToLocale($totale_ricavi - abs($totale_costi))." €

\n"; + echo "

RICAVI: ".Translator::numberToLocale(sum($totale_ricavi))." €

\n"; + echo "

COSTI: ".Translator::numberToLocale(sum(abs($totale_costi)))." €

\n"; + echo "

UTILE/PERDITA: ".Translator::numberToLocale(sum($totale_ricavi) - sum(abs($totale_costi)))." €

\n"; } } diff --git a/templates/partitario_mastrino/pdfgen.partitario_mastrino.php b/templates/partitario_mastrino/pdfgen.partitario_mastrino.php old mode 100644 new mode 100755 index fa059465e..137ea3e6b --- a/templates/partitario_mastrino/pdfgen.partitario_mastrino.php +++ b/templates/partitario_mastrino/pdfgen.partitario_mastrino.php @@ -51,11 +51,11 @@ if (get('lev') == '3') { \n"; - // Inizializzo saldo finale - $saldo_finale = 0; + // Inizializzo saldo finale + $saldo_finale = []; - // Calcolo saldo iniziale - $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"'); + // Calcolo saldo iniziale + $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$idconto.'" AND data < "'.$_SESSION['period_start'].'"'); $saldo_iniziale = $rs[0]['totale']; $saldo_finale = $saldo_iniziale; @@ -82,19 +82,19 @@ if (get('lev') == '3') { $body .= " ".Translator::dateToLocale($rs[$i]['data'])."".$rs[$i]['descrizione']."".$dare."".$avere."\n"; - $saldo_finale += $rs[$i]['totale']; + $saldo_finale[] = $rs[$i]['totale']; } - if ($saldo_finale < 0) { + if ( sum($saldo_finale) < 0) { $dare = ''; - $avere = abs($saldo_finale); + $avere = abs( sum($saldo_finale) ); } else { - $dare = abs($saldo_finale); + $dare = abs( sum($saldo_finale) ); $avere = ''; } - // Mostro il saldo finale - $body .= " SALDO FINALE".Translator::numberToLocale(abs($dare))."".Translator::numberToLocale(abs($avere))."\n"; + // Mostro il saldo finale + $body .= " SALDO FINALE".Translator::numberToLocale( abs( sum($dare) ) )."".Translator::numberToLocale( abs( sum($avere) ) )."\n"; $body .= " \n"; @@ -106,37 +106,38 @@ elseif (get('lev') == '2') { \n"; - // Ciclo fra i sotto-conti di livello 2 - $rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"'); + // Ciclo fra i sotto-conti di livello 2 + $rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$idconto.'"'); for ($z = 0; $z < sizeof($rs3); ++$z) { + $v_dare = []; + $v_avere = []; + // Inizializzo saldo finale - $saldo_finale = 0; + $saldo_finale = []; - // Calcolo saldo iniziale - $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"'); + // Calcolo saldo iniziale + $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data < "'.$_SESSION['period_start'].'"'); $saldo_iniziale = $rs[0]['totale']; - $saldo_finale = $saldo_iniziale; + $saldo_finale[] = $saldo_iniziale; - if ($saldo_iniziale < 0) { - $dare = ''; - $avere = abs($saldo_iniziale); + if ( $saldo_iniziale < 0) { + $v_avere[] = abs( $saldo_iniziale ); } else { - $dare = abs($saldo_iniziale); - $avere = ''; + $v_dare[] = abs( $saldo_iniziale ); } $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC'); for ($i = 0; $i < sizeof($rs); ++$i) { if ($rs[$i]['totale'] >= 0) { - $dare += abs($rs[$i]['totale']); + $v_dare[] = abs($rs[$i]['totale']); } else { - $avere += abs($rs[$i]['totale']); + $v_avere[] = abs($rs[$i]['totale']); } } - $totale = $dare - $avere; + $totale = sum($v_dare) - sum($v_avere); if ($totale >= 0) { $dare = Translator::numberToLocale(abs($totale)); @@ -146,8 +147,8 @@ elseif (get('lev') == '2') { $avere = Translator::numberToLocale(abs($totale)); } - // Mostro il saldo finale del conto di livello 3 - $body .= " ".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."".$dare."".$avere."\n"; + // Mostro il saldo finale del conto di livello 3 + $body .= " ".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."".$dare."".$avere."\n"; } $body .= " @@ -156,73 +157,73 @@ elseif (get('lev') == '2') { // Stampa completa bilancio elseif (get('lev') == '1') { - $ricavi = 0; - $costi = 0; - $totale_attivita = 0; - $totale_passivita = 0; + $ricavi = []; + $costi = []; + $totale_attivita = []; + $totale_passivita = []; $body .= "\n"; - // Ciclo fra il conto principale scelto (Economico o Patrimoniale) - $rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC'); + // Ciclo fra il conto principale scelto (Economico o Patrimoniale) + $rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE id="'.$idconto.'" ORDER BY numero DESC'); for ($x = 0; $x < sizeof($rs1); ++$x) { // Ciclo fra i sotto-conti di livello 1 - $rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"'); + $rs2 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti2 WHERE idpianodeiconti1="'.$rs1[$x]['id'].'"'); for ($y = 0; $y < sizeof($rs2); ++$y) { $body .= " \n"; - // Ciclo fra i sotto-conti di livello 2 - $rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"'); + // Ciclo fra i sotto-conti di livello 2 + $rs3 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti3 WHERE idpianodeiconti2="'.$rs2[$y]['id'].'"'); for ($z = 0; $z < sizeof($rs3); ++$z) { - $dare = 0; - $avere = 0; + $v_dare = []; + $v_avere = []; $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC'); for ($i = 0; $i < sizeof($rs); ++$i) { if ($rs[$i]['totale'] >= 0) { - $dare += abs($rs[$i]['totale']); + $v_dare[] = abs($rs[$i]['totale']); } else { - $avere += abs($rs[$i]['totale']); + $v_avere[] = abs($rs[$i]['totale']); } } - $totale = $dare - $avere; + $totale = sum($v_dare) - sum($v_avere); if ($totale >= 0) { $dare = abs($totale); $avere = 0; - $totale_attivita += $dare; - $costi += abs($dare); + $totale_attivita[] = $dare; + $costi[] = abs($dare); } else { $dare = 0; $avere = abs($totale); - $totale_passivita += $avere; - $ricavi += abs($avere); + $totale_passivita[] = $avere; + $ricavi[] = abs($avere); } - // Mostro il saldo finale del conto di livello 3 - $body .= " \n"; + // Mostro il saldo finale del conto di livello 3 + $body .= " \n"; } } } // Stampa "Costi/Ricavi" se conto economico if ($rs1[0]['descrizione'] == 'Economico') { - $body .= " \n"; - $body .= " \n"; - $body .= " \n"; + $body .= " \n"; + $body .= " \n"; + $body .= " \n"; } // Stampa "Attività/Passività" se stato patrimoniale else { - $costi = 0; - $ricavi = 0; + $costi = []; + $ricavi = []; // Ciclo fra il conto economico per calcolare l'utile o la perdita $rs1 = $dbo->fetchArray('SELECT id, numero, descrizione FROM co_pianodeiconti1 WHERE NOT id="'.$idconto.'" ORDER BY numero DESC'); @@ -237,29 +238,29 @@ elseif (get('lev') == '1') { for ($z = 0; $z < sizeof($rs3); ++$z) { // Inizializzo saldo finale - $saldo_finale = 0; + $saldo_finale = []; // Calcolo saldo iniziale $rs = $dbo->fetchArray('SELECT SUM(totale) AS totale FROM co_movimenti WHERE idconto="'.$rs2[$y]['id'].'" AND data < "'.$_SESSION['period_start'].'"'); - $dare = 0; - $avere = 0; + $dare = []; + $avere = []; $rs = $dbo->fetchArray('SELECT * FROM co_movimenti WHERE idconto="'.$rs3[$z]['id'].'" AND data >= "'.$_SESSION['period_start'].'" AND data <= "'.$_SESSION['period_end'].'" ORDER BY data ASC'); for ($i = 0; $i < sizeof($rs); ++$i) { if ($rs[$i]['totale'] >= 0) { - $dare += abs($rs[$i]['totale']); + $dare[] = abs($rs[$i]['totale']); } else { - $avere += abs($rs[$i]['totale']); + $avere[] = abs($rs[$i]['totale']); } } - $totale = $dare - $avere; + $totale = sum($dare) - sum($avere); if ($totale >= 0) { - $costi += abs($totale); + $costi[] = abs($totale); } else { - $ricavi += abs($totale); + $ricavi[] = abs($totale); } } } @@ -269,9 +270,9 @@ elseif (get('lev') == '1') { $body .= "
".$rs2[$y]['numero'].' '.$rs2[$y]['descrizione']."
".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."".Translator::numberToLocale(abs($dare))."".Translator::numberToLocale(abs($avere))."
".$rs3[$z]['numero'].' '.$rs3[$z]['descrizione']."".Translator::numberToLocale(abs($dare))."".Translator::numberToLocale(abs($avere))."
RICAVI".Translator::numberToLocale($ricavi)."
COSTI".Translator::numberToLocale($costi)."
UTILE".Translator::numberToLocale($ricavi - $costi)."
RICAVI".Translator::numberToLocale( sum($ricavi) )."
COSTI".Translator::numberToLocale( sum($costi) )."
UTILE".Translator::numberToLocale( sum($ricavi) - sum($costi) )."
\n"; // Tabella di riepilogo finale - $totale_attivita = abs($totale_attivita); - $totale_passivita = abs($totale_passivita); - $utile_perdita = abs($ricavi) - abs($costi); + $totale_attivita = abs( sum($totale_attivita) ); + $totale_passivita = abs( sum($totale_passivita) ); + $utile_perdita = abs( sum($ricavi) ) - abs( sum($costi) ); if ($utile_perdita < 0) { $pareggio1 = $totale_attivita + abs($utile_perdita); From aee45b78bde2f77f722375fe78dfa59d933c87f1 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Sun, 11 Feb 2018 15:19:09 +0100 Subject: [PATCH 18/18] Aggiunto PHP CS Fixer alle dipendenze --- composer.json | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 8353bf9a3..c22a5ac6a 100644 --- a/composer.json +++ b/composer.json @@ -23,6 +23,10 @@ "type": "project", "require": { "php": ">=5.6", + + "ext-mbstring": "*", + "ext-pdo_mysql": "*", + "aluguest/ical-easy-reader": "^1.5", "danielstjules/stringy": "^3.1", "ezyang/htmlpurifier": "^4.8", @@ -41,6 +45,9 @@ "symfony/translation": "^3.3", "symfony/var-dumper": "^3.3" }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.10" + }, "autoload": { "psr-4": { "": "src/" diff --git a/package.json b/package.json index 6869a5ee9..50b33a104 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,7 @@ }, "scripts": { "gulp": "gulp", - "release-OSM": "yarn run develop-OSM && gulp release", + "release-OSM": "yarn run develop-OSM && php composer.phar install --no-dev && gulp release", "develop-OSM": "yarn install && yarn run install-OSM && yarn run assets-OSM", "install-OSM": "php composer.phar update", "assets-OSM": "yarn upgrade && yarn run build-OSM",