1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-01-03 03:19:17 +01:00

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).
This commit is contained in:
Thomas Zilio 2017-08-11 12:11:57 +02:00
parent b7643c1299
commit 0d470170d6
16 changed files with 153 additions and 175 deletions

34
.php_cs
View File

@ -1,20 +1,20 @@
<?php
return PhpCsFixer\Config::create()
->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;

28
.sami Normal file
View File

@ -0,0 +1,28 @@
<?php
use Sami\Sami;
use Symfony\Component\Finder\Finder;
$finder = Finder::create()
->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;

View File

@ -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:

View File

@ -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));
}
/**

View File

@ -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) {

View File

@ -169,31 +169,21 @@ echo '
<script type="text/javascript">
function ricalcola_subtotale_riga( r ){
subtot = $("#subtot_"+r).val();
subtot = subtot.replace(',', '.');
subtot = parseFloat(subtot);
subtot = $("#subtot_"+r).val().toEnglish();
sconto = $("#sconto_"+r).val().toEnglish();
sconto = $("#sconto_"+r).val();
sconto = sconto.replace(',', '.');
sconto = parseFloat(sconto);
subtot = subtot-sconto;
qta = $("#qta_"+r).val();
qta = qta.replace(',', '.');
qta = parseFloat(qta);
qta = $("#qta_"+r).val().toEnglish();
if( isNaN(qta) )
qta = 0;
qtamax = $("#qtamax_"+r).val();
qtamax = qtamax.replace(',', '.');
qtamax = parseFloat(qtamax);
qtamax = $("#qtamax_"+r).val().toEnglish();
if( isNaN(qtamax) )
qtamax = 0;
iva = $("#iva_"+r).val();
iva = iva.replace(',', '.');
iva = parseFloat(iva);
iva = $("#iva_"+r).val().toEnglish();
// Se inserisco una quantità da evadere maggiore di quella rimanente, la imposto al massimo possibile
if( qta>qtamax ){
@ -205,8 +195,7 @@ echo '
if( !$('#checked_'+r).is(':checked') )
qta = 0;
subtotale = (subtot*qta+iva*qta).toFixed(2).toString();
subtotale = subtotale.replace( '.', ',' );
subtotale = (subtot*qta+iva*qta).toFixedLocale();
$("#subtotale_"+r).html(subtotale+" &euro;");
$("#subtotaledettagli_"+r).html( (subtot*qta).toFixed(2)+" + " + (iva*qta).toFixed(2) );
@ -219,32 +208,25 @@ echo '
r = 0;
totale = 0.00;
$('input[id*=qta_]').each( function(){
qta = $(this).val();
qta = qta.replace(',', '.');
qta = parseFloat(qta);
qta = $(this).val().toEnglish();
if( !$('#checked_'+r).is(':checked') || isNaN(qta) )
qta = 0;
subtot = $("#subtot_"+r).val();
subtot = subtot.replace(',', '.');
subtot = parseFloat(subtot);
subtot = $("#subtot_"+r).val().toEnglish();
sconto = $("#sconto_"+r).val().toEnglish();
sconto = $("#sconto_"+r).val();
sconto = sconto.replace(',', '.');
sconto = parseFloat(sconto);
subtot = subtot-sconto;
iva = $("#iva_"+r).val();
iva = iva.replace(',', '.');
iva = parseFloat(iva);
iva = $("#iva_"+r).val().toEnglish();
totale += subtot*qta+iva*qta;
r++;
});
$('#totale').html( (totale.toFixed(2).replace( '.', ',' )) + " &euro;" );
$('#totale').html( (totale.toFixedLocale()) + " &euro;" );
if( totale==0 )
$('#submit_btn').hide();

View File

@ -158,18 +158,18 @@ echo '
<script type="text/javascript">
function ricalcola_subtotale_riga( r ){
subtot = parseFloat($("#subtot_" + r).inputmask('unmaskedvalue'));
subtot = $("#subtot_" + r).val().toEnglish();
sconto = parseFloat($("#sconto_" + r).inputmask('unmaskedvalue'));
sconto = $("#sconto_" + r).val().toEnglish();
subtot = subtot - sconto;
qta = parseFloat($("#qta_" + r).inputmask('unmaskedvalue'));
qta = $("#qta_" + r).val().toEnglish();
if(isNaN(qta)) qta = 0;
qtamax = parseFloat($("#qtamax_" + r).inputmask('unmaskedvalue'));
qtamax = $("#qtamax_" + r).val().toEnglish();
if(isNaN(qtamax)) qtamax = 0;
iva = parseFloat($("#iva_" + r).inputmask('unmaskedvalue'));
iva = $("#iva_" + r).val().toEnglish();
// Se inserisco una quantità da evadere maggiore di quella rimanente, la imposto al massimo possibile
if(qta > qtamax){
@ -182,8 +182,7 @@ echo '
// Se tolgo la spunta della casella dell'evasione devo azzerare i conteggi
if(!$('#checked_' + r).is(':checked')) qta = 0;
subtotale = (subtot * qta + iva * qta).toFixed(2).toString();
subtotale = subtotale.replace('.', ',');
subtotale = (subtot * qta + iva * qta).toFixedLocale();
$("#subtotale_" + r).html(subtotale + " &euro;");
$("#subtotaledettagli_" + r).html((subtot * qta).toFixed(2) + " + " + (iva * qta).toFixed(2));
@ -195,30 +194,23 @@ echo '
r = 0;
totale = 0.00;
$('input[id*=qta_]').each( function(){
qta = $(this).val();
qta = qta.replace(',', '.');
qta = parseFloat(qta);
qta = $(this).val().toEnglish();
if( !$('#checked_' + r).is(':checked') || isNaN(qta) )
qta = 0;
subtot = $("#subtot_" + r).val();
subtot = subtot.replace(',', '.');
subtot = parseFloat(subtot);
subtot = $("#subtot_" + r).val().toEnglish();
sconto = $("#sconto_" + r).val().toEnglish();
sconto = $("#sconto_" + r).val();
sconto = sconto.replace(',', '.');
sconto = parseFloat(sconto);
subtot = subtot-sconto;
iva = $("#iva_" + r).val();
iva = iva.replace(',', '.');
iva = parseFloat(iva);
iva = $("#iva_" + r).val().toEnglish();
totale += subtot*qta+iva*qta;
r++;
});
$('#totale').html( (totale.toFixed(2).replace( '.', ',' )) + " &euro;" );
$('#totale').html( (totale.toFixedLocale()) + " &euro;" );
}
</script>

View File

@ -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+" &euro;");
$("#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( '.', ',' )) + " &euro;" );
$('#totale').html( (totale.toFixedLocale()) + " &euro;" );
if( totale==0 )
$('#submit_btn').hide();

View File

@ -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+" &euro;");
$("#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( '.', ',' )) + " &euro;" );
$('#totale').html( (totale.toFixedLocale()) + " &euro;" );
if( totale==0 )
$('#submit_btn').hide();

View File

@ -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;

View File

@ -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);

View File

@ -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(<?php echo get_var('Cifre decimali per importi') ?>) ).replace('.', ',') );
$('#totale_avere').text( ( totale_avere.toFixed(<?php echo get_var('Cifre decimali per importi') ?>) ).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(<?php echo get_var('Cifre decimali per importi') ?>);
$("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di "+bilancio.replace(".", ",")+" &euro;" );
$("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di " + bilancio.toFixedLocale() + " &euro;" );
$("button[type=submit]").addClass('hide');
}
}

View File

@ -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(<?php echo get_var('Cifre decimali per importi') ?>) ).replace('.', ',') );
$('#totale_avere').text( ( totale_avere.toFixed(<?php echo get_var('Cifre decimali per importi') ?>) ).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(<?php echo get_var('Cifre decimali per importi') ?>);
$("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di "+bilancio.replace(".", ",")+" &euro;" );
$("#testo_aggiuntivo").addClass('text-danger').html("sbilancio di " + bilancio.toFixedLocale() + " &euro;" );
$("button[type=submit]").addClass('hide');
}

View File

@ -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;

View File

@ -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(<?php echo get_var('Cifre decimali per importi') ?>)).replace('.', ',') );
$('#totale_utente').html( (totale_utente.toFixed(<?php echo get_var('Cifre decimali per importi') ?>)).replace('.', ',') );
$('#diff').html(diff.toFixedLocale());
$('#totale_utente').html(totale_utente.toFixedLocale());
}
</script>

View File

@ -1,30 +0,0 @@
<?php
use Sami\Sami;
use Sami\RemoteRepository\GitHubRemoteRepository;
use Symfony\Component\Finder\Finder;
use Sami\Parser\Filter\TrueFilter;
$iterator = Finder::create()
->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;