From 0d470170d6e9de4938eacfa0438e87a8f05743a6 Mon Sep 17 00:00:00 2001 From: Thomas Zilio Date: Fri, 11 Aug 2017 12:11:57 +0200 Subject: [PATCH] Fix del bug #3 Risoluzione del bug #3 grazie all'utilizzo della funziona abs() sul totale da pagare, con fix di un bug nella prima nota. Miglioramento nella gestione dei numeri dagli input a livello JS (nuove funzioni integrate toEnglish() e toLocale() da utilizzare sul valore dell'input). --- .php_cs | 34 +++++++++++----------- .sami | 28 ++++++++++++++++++ couscous.yml | 2 +- lib/classes/Translator.php | 2 +- lib/functions.js | 47 ++++++++++++++++++++----------- modules/ddt/creafattura.php | 44 +++++++++-------------------- modules/fatture/add_ddt_righe.php | 32 ++++++++------------- modules/ordini/creaddt.php | 25 ++++++++-------- modules/ordini/creafattura.php | 25 ++++++++-------- modules/pagamenti/edit.php | 2 +- modules/primanota/actions.php | 21 ++++++-------- modules/primanota/add.php | 15 +++++----- modules/primanota/edit.php | 11 ++++---- modules/scadenzario/actions.php | 2 +- modules/scadenzario/edit.php | 8 +++--- sami.config.php | 30 -------------------- 16 files changed, 153 insertions(+), 175 deletions(-) create mode 100644 .sami delete mode 100644 sami.config.php diff --git a/.php_cs b/.php_cs index 9b1009b39..eb4a92954 100644 --- a/.php_cs +++ b/.php_cs @@ -1,20 +1,20 @@ setRules(array( +$finder = PhpCsFixer\Finder::create() + ->files() + ->exclude('.couscous') + ->exclude('node_modules') + ->exclude('vendor') + ->exclude('tests') + ->ignoreDotFiles(true) + ->ignoreVCS(true) + ->in(__DIR__); + +$config = PhpCsFixer\Config::create() + ->setRules([ '@Symfony' => true, - 'array_syntax' => array('syntax' => 'short'), - )) - ->setFinder( - PhpCsFixer\Finder::create() - ->files() - ->in(__DIR__) - ->exclude('vendor') - ->exclude('resources/views') - ->exclude('storage') - ->exclude('public') - ->notName("*.txt") - ->ignoreDotFiles(true) - ->ignoreVCS(true) - ) -; + 'array_syntax' => ['syntax' => 'short'], + ]) + ->setFinder($finder); + +return $config; diff --git a/.sami b/.sami new file mode 100644 index 000000000..b6552e0db --- /dev/null +++ b/.sami @@ -0,0 +1,28 @@ +files() + ->name('*.php') + ->exclude('.couscous') + ->exclude('node_modules') + ->exclude('vendor') + ->exclude('tests') + ->ignoreDotFiles(true) + ->ignoreVCS(true) + ->in(__DIR__); + +$sami = new Sami($finder, [ + 'theme' => 'default', + 'title' => 'OpenSTAManager', + 'build_dir' => __DIR__.'/.couscous/generated/docs', + 'cache_dir' => __DIR__.'/.couscous/cache', +]); + +$sami['filter'] = function () { + return new Sami\Parser\Filter\TrueFilter(); +}; + +return $sami; diff --git a/couscous.yml b/couscous.yml index c3072e286..a2755bed7 100644 --- a/couscous.yml +++ b/couscous.yml @@ -18,7 +18,7 @@ fontAwesomeIcon: fa fa-cog scripts: after: - - php sami.phar update sami.config.php + - php sami.phar update .sami # The left menu bar menu: diff --git a/lib/classes/Translator.php b/lib/classes/Translator.php index 9cd23ff0d..7ffc3bf77 100644 --- a/lib/classes/Translator.php +++ b/lib/classes/Translator.php @@ -236,7 +236,7 @@ class Translator extends Util\Singleton */ public static function numberToEnglish($string) { - return self::getLocaleFormatter()->convertNumberTo(self::getEnglishFormatter(), $string); + return floatval(self::getLocaleFormatter()->convertNumberTo(self::getEnglishFormatter(), $string)); } /** diff --git a/lib/functions.js b/lib/functions.js index 2d92b68a9..f50d4ece3 100644 --- a/lib/functions.js +++ b/lib/functions.js @@ -935,8 +935,7 @@ function start_inputmask() { if (isMobile.any()) { $('.inputmask-decimal').each(function () { - val = $(this).val(); - val = val.replace(',', '.'); + val = $(this).val().toEnglish(); $(this).attr('type', 'tel').val(val); }); } else { @@ -952,10 +951,13 @@ function start_inputmask() { autoGroup: true, radixPoint: globals.decimals, groupSeparator: globals.thousands, + onUnMask: function (maskedValue, unmaskedValue) { + return maskedValue.toEnglish(); + } }); $this.on('keyup', function () { - if ($(this).attr('min-value') && $(this).inputmask('unmaskedvalue') < $(this).attr('min-value')) { + if ($(this).attr('min-value') && $(this).val().toEnglish() < $(this).attr('min-value')) { $(this).val($(this).attr('min-value')); } }); @@ -1111,18 +1113,6 @@ function force_decimal(n) { return parseFloat(n); } -/** - * Ritorna il numero n come decimale con la virgola al posto del punto - */ -function decimals_with_commas(n, n_decimals) { - n = parseFloat(n); - n = n.toFixed(n_decimals); - n = n.toString(); - n = n.replace('.', ','); - - return n; -} - function equalHeight(selector) { $(selector).css("min-height", 0); @@ -1141,8 +1131,31 @@ function equalHeight(selector) { }); } -Number.prototype.toFixedLocale = function () { - return this.toFixed(globals.cifre_decimali).replace('.', ','); +Number.prototype.toFixedLocale = function (decimals) { + decimals = decimals || globals.cifre_decimali + return this.toFixed(decimals).toLocale(); +}; + +String.prototype.toEnglish = function () { + var x = this.split(globals.decimals); + + if (globals.thousands) { + x[0] = x[0].replace(globals.thousands, ''); + } + + return parseFloat(x[0] + '.' + x[1]); +}; + +String.prototype.toLocale = function () { + var x = this.split('.'); + + if (globals.thousands) { + x[0] = x[0].split("").reverse().join(""); + x[0] = x[0].replace(/(.{3})/g,"$1" + globals.thousands); + x[0] = x[0].split("").reverse().join(""); + } + + return x[0] + globals.decimals + x[1]; }; function setContrast(backgroundcolor) { diff --git a/modules/ddt/creafattura.php b/modules/ddt/creafattura.php index 689c352ea..4f18d06d9 100644 --- a/modules/ddt/creafattura.php +++ b/modules/ddt/creafattura.php @@ -169,31 +169,21 @@ echo ' diff --git a/modules/ordini/creaddt.php b/modules/ordini/creaddt.php index d7868e10f..3970045a7 100644 --- a/modules/ordini/creaddt.php +++ b/modules/ordini/creaddt.php @@ -180,29 +180,29 @@ function creaddt_acquisto(){ } function ricalcola_subtotale_riga( r ){ - subtot = force_decimal( $("#subtot_"+r).val() ); + subtot = $("#subtot_"+r).val().toEnglish(); - sconto = force_decimal( $("#sconto_"+r).val() ); + sconto = $("#sconto_"+r).val().toEnglish(); subtot = subtot-sconto; - qta = force_decimal( $("#qta_"+r).val() ); + qta = $("#qta_"+r).val().toEnglish(); if( isNaN(qta) ){ qta = 0; } - qtamax = force_decimal( $("#qtamax_"+r).val() ); + qtamax = $("#qtamax_"+r).val().toEnglish(); if( isNaN(qtamax) ){ qtamax = 0; } - iva = force_decimal( $("#iva_"+r).val() ); + iva = $("#iva_"+r).val().toEnglish(); // Se inserisco una quantità da evadere maggiore di quella rimanente, la imposto al massimo possibile if( qta>qtamax ){ - qta = qtamax.toFixed(2).toString().replace('.', ','); + qta = qtamax.toFixedLocale(2); $('#qta_'+r).val( qta ); } @@ -211,8 +211,7 @@ function ricalcola_subtotale_riga( r ){ qta = 0; } - subtotale = (subtot*qta+iva*qta).toFixed(2).toString(); - subtotale = subtotale.replace( '.', ',' ); + subtotale = (subtot*qta+iva*qta).toFixedLocale(2); $("#subtotale_"+r).html(subtotale+" €"); $("#subtotaledettagli_"+r).html( (subtot*qta).toFixed(2)+" + " + (iva*qta).toFixed(2) ); @@ -225,25 +224,25 @@ function ricalcola_totale(){ r = 0; totale = 0.00; $('input[id*=qta_]').each( function(){ - qta = force_decimal( $(this).val() ); + qta = $(this).val().toEnglish(); if( !$('#checked_'+r).is(':checked') || isNaN(qta) ){ qta = 0; } - subtot = force_decimal( $("#subtot_"+r).val() ); + subtot = $("#subtot_"+r).val().toEnglish(); - sconto = force_decimal( $("#sconto_"+r).val() ); + sconto = $("#sconto_"+r).val().toEnglish(); subtot = subtot-sconto; - iva = force_decimal( $("#iva_"+r).val() ); + iva = $("#iva_"+r).val().toEnglish(); totale += subtot*qta+iva*qta; r++; }); - $('#totale').html( (totale.toFixed(2).replace( '.', ',' )) + " €" ); + $('#totale').html( (totale.toFixedLocale()) + " €" ); if( totale==0 ) $('#submit_btn').hide(); diff --git a/modules/ordini/creafattura.php b/modules/ordini/creafattura.php index 2f4a0340d..0322a3e34 100644 --- a/modules/ordini/creafattura.php +++ b/modules/ordini/creafattura.php @@ -173,29 +173,29 @@ function creafattura_acquisto(){ } function ricalcola_subtotale_riga( r ){ - subtot = force_decimal( $("#subtot_"+r).val() ); + subtot = $("#subtot_"+r).val().toEnglish(); - sconto = force_decimal( $("#sconto_"+r).val() ); + sconto = $("#sconto_"+r).val().toEnglish(); subtot = subtot-sconto; - qta = force_decimal( $("#qta_"+r).val() ); + qta = $("#qta_"+r).val().toEnglish(); if( isNaN(qta) ){ qta = 0; } - qtamax = force_decimal( $("#qtamax_"+r).val() ); + qtamax = $("#qtamax_"+r).val().toEnglish(); if( isNaN(qtamax) ){ qtamax = 0; } - iva = force_decimal( $("#iva_"+r).val() ); + iva = $("#iva_"+r).val().toEnglish(); // Se inserisco una quantità da evadere maggiore di quella rimanente, la imposto al massimo possibile if( qta>qtamax ){ - qta = qtamax.toFixed(2).toString().replace('.', ','); + qta = qtamax.toFixedLocale(2); $('#qta_'+r).val( qta ); } @@ -204,8 +204,7 @@ function ricalcola_subtotale_riga( r ){ qta = 0; } - subtotale = (subtot*qta+iva*qta).toFixed(2).toString(); - subtotale = subtotale.replace( '.', ',' ); + subtotale = (subtot*qta+iva*qta).toFixedLocale(); $("#subtotale_"+r).html(subtotale+" €"); $("#subtotaledettagli_"+r).html( (subtot*qta).toFixed(2)+" + " + (iva*qta).toFixed(2) ); @@ -218,25 +217,25 @@ function ricalcola_totale(){ r = 0; totale = 0.00; $('input[id*=qta_]').each( function(){ - qta = force_decimal( $(this).val() ); + qta = $(this).val().toEnglish(); if( !$('#checked_'+r).is(':checked') || isNaN(qta) ){ qta = 0; } - subtot = force_decimal( $("#subtot_"+r).val() ); + subtot = $("#subtot_"+r).val().toEnglish(); - sconto = force_decimal( $("#sconto_"+r).val() ); + sconto = $("#sconto_"+r).val().toEnglish(); subtot = subtot-sconto; - iva = force_decimal( $("#iva_"+r).val() ); + iva = $("#iva_"+r).val().toEnglish(); totale += subtot*qta+iva*qta; r++; }); - $('#totale').html( (totale.toFixed(2).replace( '.', ',' )) + " €" ); + $('#totale').html( (totale.toFixedLocale()) + " €" ); if( totale==0 ) $('#submit_btn').hide(); diff --git a/modules/pagamenti/edit.php b/modules/pagamenti/edit.php index 7cf7532dd..8b02d004b 100644 --- a/modules/pagamenti/edit.php +++ b/modules/pagamenti/edit.php @@ -173,7 +173,7 @@ $(document).ready(function(){ var tot = 0; $(this).find('[id*=percentuale]').each(function(){ - prc = parseFloat($(this).inputmask('unmaskedvalue')); + prc = $(this).val().toEnglish(); prc = !isNaN(prc) ? prc : 0; tot += prc; diff --git a/modules/primanota/actions.php b/modules/primanota/actions.php index d84c1de4c..a6b278705 100644 --- a/modules/primanota/actions.php +++ b/modules/primanota/actions.php @@ -25,18 +25,15 @@ switch (post('op')) { $dare = $post['dare'][$i]; $avere = $post['avere'][$i]; - if ($dare != '' && $dare != 0) { - $totale = $dare; - $totale_pagato += $dare; - } elseif ($avere != '' && $avere != 0) { - $totale = -$avere; - $totale_pagato -= $dare; - } else { - $totale = 0; - $totale_pagato += 0; - } + if (!empty($dare) || !empty($avere)) { + if (!empty($avere)) { + $totale = -$avere; + } else { + $totale = $dare; + } + + $totale_pagato += $totale; - if ($totale != 0) { $query = 'INSERT INTO co_movimenti(idmastrino, data, data_documento, iddocumento, descrizione, idconto, totale, primanota) VALUES('.prepare($idmastrino).', '.prepare($data).', '.prepare($data_documento).', '.prepare($iddocumento).', '.prepare($descrizione).', '.prepare($idconto).', '.prepare($totale).", '1')"; if (!$dbo->query($query)) { $all_ok = false; @@ -112,7 +109,7 @@ switch (post('op')) { } // Eliminazione prima nota - $dbo->query('DELETE FROM co_movimenti WHERE idmastrino='.prepare($idmastrino)." AND primanota=1"); + $dbo->query('DELETE FROM co_movimenti WHERE idmastrino='.prepare($idmastrino).' AND primanota=1'); // Lettura info fattura $query = 'SELECT *, co_documenti.note, co_documenti.idpagamento, co_documenti.id AS iddocumento, co_statidocumento.descrizione AS `stato`, co_tipidocumento.descrizione AS `descrizione_tipodoc` FROM ((co_documenti LEFT OUTER JOIN co_statidocumento ON co_documenti.idstatodocumento=co_statidocumento.id) INNER JOIN an_anagrafiche ON co_documenti.idanagrafica=an_anagrafiche.idanagrafica) INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id WHERE co_documenti.id='.prepare($iddocumento); diff --git a/modules/primanota/add.php b/modules/primanota/add.php index 82ad15d79..15ad77816 100644 --- a/modules/primanota/add.php +++ b/modules/primanota/add.php @@ -268,28 +268,27 @@ include_once __DIR__.'/../../core.php'; // Calcolo il totale dare e totale avere $('input[id*=dare]').each( function(){ if( $(this).val() == '' ) valore = 0; - else valore = parseFloat( $(this).val().replace(",", ".") ); + else valore = $(this).val().toEnglish(); totale_dare += valore; }); $('input[id*=avere]').each( function(){ if( $(this).val() == '' ) valore = 0; - else valore = parseFloat( $(this).val().replace(",", ".") ); + else valore = $(this).val().toEnglish(); totale_avere += valore; }); - $('#totale_dare').text( ( totale_dare.toFixed() ).replace('.', ',') ); - $('#totale_avere').text( ( totale_avere.toFixed() ).replace('.', ',') ); + $('#totale_dare').text(totale_dare.toFixedLocale()); + $('#totale_avere').text(totale_avere.toFixedLocale()); - bilancio = totale_dare-totale_avere; + bilancio = totale_dare - totale_avere; - if( bilancio == 0 ){ + if(bilancio == 0){ $("#testo_aggiuntivo").removeClass('text-danger').html(""); $("button[type=submit]").removeClass('hide'); } else{ - bilancio = bilancio.toFixed(); - $("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di "+bilancio.replace(".", ",")+" €" ); + $("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di " + bilancio.toFixedLocale() + " €" ); $("button[type=submit]").addClass('hide'); } } diff --git a/modules/primanota/edit.php b/modules/primanota/edit.php index 29c0ab800..82c4d14ca 100644 --- a/modules/primanota/edit.php +++ b/modules/primanota/edit.php @@ -201,18 +201,18 @@ include_once __DIR__.'/../../core.php'; // Calcolo il totale dare e totale avere $('input[id*=dare]').each( function(){ if( $(this).val() == '' ) valore = 0; - else valore = parseFloat( $(this).val().replace(",", ".") ); + else valore = $(this).val().toEnglish(); totale_dare += valore; }); $('input[id*=avere]').each( function(){ if( $(this).val() == '' ) valore = 0; - else valore = parseFloat( $(this).val().replace(",", ".") ); + else valore = $(this).val().toEnglish(); totale_avere += valore; }); - $('#totale_dare').text( ( totale_dare.toFixed() ).replace('.', ',') ); - $('#totale_avere').text( ( totale_avere.toFixed() ).replace('.', ',') ); + $('#totale_dare').text(totale_dare.toFixedLocale()); + $('#totale_avere').text(totale_avere.toFixedLocale()); bilancio = totale_dare-totale_avere; @@ -221,8 +221,7 @@ include_once __DIR__.'/../../core.php'; $("button[type=submit]").removeClass('hide'); } else{ - bilancio = bilancio.toFixed(); - $("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di "+bilancio.replace(".", ",")+" €" ); + $("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di " + bilancio.toFixedLocale() + " €" ); $("button[type=submit]").addClass('hide'); } diff --git a/modules/scadenzario/actions.php b/modules/scadenzario/actions.php index 0e4c37e1c..97b671e04 100644 --- a/modules/scadenzario/actions.php +++ b/modules/scadenzario/actions.php @@ -6,7 +6,7 @@ switch (post('op')) { case 'update': // Calcolo il totale da pagare $rs = $dbo->fetchArray('SELECT SUM(da_pagare) AS totale_da_pagare FROM co_scadenziario GROUP BY iddocumento HAVING iddocumento=(SELECT iddocumento FROM co_scadenziario s WHERE id='.prepare($id_record).')'); - $totale_da_pagare = $rs[0]['totale_da_pagare']; + $totale_da_pagare = abs($rs[0]['totale_da_pagare']); $totale_utente = 0; diff --git a/modules/scadenzario/edit.php b/modules/scadenzario/edit.php index 52b55e812..8662c8721 100644 --- a/modules/scadenzario/edit.php +++ b/modules/scadenzario/edit.php @@ -146,11 +146,11 @@ echo ' }); function totale_ok(){ - totale_da_pagare = force_decimal( $('#totale_da_pagare').val() ); + totale_da_pagare = $('#totale_da_pagare').val().toEnglish(); totale_utente = 0; $('input[name*=scadenza]').each( function(){ - totale_utente += force_decimal( $(this).val() ); + totale_utente += $(this).val().toEnglish(); }); if( isNaN(totale_utente) ){ @@ -173,7 +173,7 @@ echo ' $('#totale').removeClass('hide'); } - $('#diff').html( (diff.toFixed()).replace('.', ',') ); - $('#totale_utente').html( (totale_utente.toFixed()).replace('.', ',') ); + $('#diff').html(diff.toFixedLocale()); + $('#totale_utente').html(totale_utente.toFixedLocale()); } diff --git a/sami.config.php b/sami.config.php deleted file mode 100644 index 4690bc67c..000000000 --- a/sami.config.php +++ /dev/null @@ -1,30 +0,0 @@ -files() - ->name('*.php') - ->exclude('.couscous') - ->exclude('node_modules') - ->exclude('vendor') - ->exclude('tests') - ->in(__DIR__) -; - -$sami = new Sami($iterator, array( - 'theme' => 'default', - 'title' => 'OpenSTAManager', - 'build_dir' => __DIR__.'/.couscous/generated/docs', - 'cache_dir' => __DIR__.'/.couscous/cache', - 'default_opened_level' => 2, -)); - -$sami['filter'] = function () { - return new TrueFilter(); -}; - -return $sami;