if ( ($myconfig->{numberformat} eq '1.000,00')
|| ($myconfig->{numberformat} eq '1000,00')) {
$amount =~ s/\.//g;
- $amount =~ s/,/\./;
+ $amount =~ s/,/\./g;
}
if ($myconfig->{numberformat} eq "1'000.00") {
}
$amount =~ s/,//g;
+ # make shure no code wich is not a math expression ends in eval()
+
+ $amount =~ s/\s//g;
+
+ unless($amount =~ /^[-\+]?\d+\.?\d*([-\+\*\/][-\+]?\d+\.?\d*)*$/){
+ return 0;
+ }
$main::lxdebug->leave_sub(2);
- return ($amount * 1);
+ return (eval $amount) * 1 ;
}
sub round_amount {
if(decpoint == thpoint) {
return show_alert_and_focus(input_name, wrongNumberFormat);
}
- if(decpoint == ',') {
- var decnumbers = input_name.value.split(',');
+ var test_val = input_name.value;
+ if(thpoint && thpoint == ','){
+ test_val = test_val.replace(/,/g, '');
}
- else {
- var decnumbers = input_name.value.split('.');
- }
- if(decnumbers.length == 2) {
- if(decnumbers[1].length > 2) {
- /* return show_alert_and_focus(input_name, wrongNumberFormat); */
- }
+ if(thpoint && thpoint == '.'){
+ test_val = test_val.replace(/\./g, '');
}
- else {
- if(decnumbers.length > 2) {
- return show_alert_and_focus(input_name, wrongNumberFormat);
- }
- if(!thpoint) {
- if(decnumbers[0].match(/\D/)) {
- return show_alert_and_focus(input_name, wrongNumberFormat);
- }
- }
+ if(thpoint && decpoint == ','){
+ test_val = test_val.replace(/,/g, '.');
}
+
+ var forbidden = test_val.match(/[^-\+\/\*\.0-9\ ]/g );
+ if (forbidden && forbidden.length > 0 ){
+ return show_alert_and_focus(input_name, wrongNumberFormat);
+ }
+
+ try{
+ eval(test_val);
+ }catch(err){
+ return show_alert_and_focus(input_name, wrongNumberFormat);
+ }
+
}
function check_right_date_format(input_name) {