Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 58fcb69f

Von Stephan Köhler vor etwa 19 Jahren hinzugefügt

  • ID 58fcb69f65a255c0db6741ca7aed0a695cae68c8
  • Vorgänger a827857e
  • Nachfolger f2cdf023

Merge von 711 aus unstable: Bugfix 233 + format_amount
Bug 233: Neues Zahlenformat für die Eingabe eingefuehrt.
Es ist nun moeglich das Eingabezahlenformat getrennt anzugeben.
Entweder Eingabeformat wie bisher (default) oder '1000.00 oder 1000,00'.
Die zweite Option verhindert bei der Eingabe die Verwechselung von ',' und '.'.
Es ist nun egal welchen Dezimaltrenner man benutzt, der erste Punkt oder Komma
von rechts jedenfalls wird als Dezimaltrenner verwendet, alle anderen Punkte oder
Kommas werden einfach ignoriert, bzw. entfernt

Unterschiede anzeigen:

SL/Form.pm
590 590
  $main::lxdebug->enter_sub();
591 591

  
592 592
  my ($self, $myconfig, $amount) = @_;
593

  
594
  if (!(substr($amount, -3, 1) eq ".")) {
595
    if (   ($myconfig->{numberformat} eq '1.000,00')
596
        || ($myconfig->{numberformat} eq '1000,00')) {
597
      $amount =~ s/\.//g;
598
      $amount =~ s/,/\./;
599
    }
600

  
601
    $amount =~ s/,//g;
602
  }
603

  
593
  $main::lxdebug->message(LXDebug::DEBUG2, "Start amount: $amount");  
594
 
595
  if ($myconfig->{in_numberformat} == 1){
596
    # Extra input number format 1000.00 or 1000,00
597
    $main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('1000,00 or 1000.00'));
598
    $amount =~ s/,/\./g;
599
    #$main::lxdebug->message(LXDebug::DEBUG2, "1.Parsed Number: $amount") if ($amount);
600
    $amount = scalar reverse $amount;
601
    #$main::lxdebug->message(LXDebug::DEBUG2, "2.Parsed Number: $amount") if ($amount);
602
    $amount =~ s/\./DOT/;
603
    #$main::lxdebug->message(LXDebug::DEBUG2, "3.Parsed Number: $amount") if ($amount);
604
    $amount =~ s/\.//g;
605
    #$main::lxdebug->message(LXDebug::DEBUG2, "4.Parsed Number: $amount") if ($amount);
606
    $amount =~ s/DOT/\./;
607
    #$main::lxdebug->message(LXDebug::DEBUG2, "5.Parsed Number:" . $amount) if ($amount);
608
    $amount = scalar reverse $amount ;
609
    $main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount . "\n");
610

  
611
    return ($amount * 1);
612

  
613
  }
614
  $main::lxdebug->message(LXDebug::DEBUG2, "in_numberformat: " . $main::locale->text('equal Outputformat'));
615
  $main::lxdebug->message(LXDebug::DEBUG2, " = numberformat: $myconfig->{numberformat}");
616
  if (   ($myconfig->{numberformat} eq '1.000,00')
617
      || ($myconfig->{numberformat} eq '1000,00')) {
618
    $amount =~ s/\.//g;
619
    $amount =~ s/,/\./;
620
  }
621

  
622
  if ($myconfig->{numberformat} eq "1'000.00") {
623
      $amount =~ s/'//g;
624
  }
625

  
626
  $amount =~ s/,//g;
627
  
628
  $main::lxdebug->message(LXDebug::DEBUG2, "Parsed amount:" . $amount. "\n") if ($amount);
604 629
  $main::lxdebug->leave_sub();
605

  
630
  
606 631
  return ($amount * 1);
607 632
}
608 633

  
SL/User.pm
839 839

  
840 840
  my @conf = qw(acs address admin businessnumber charset company countrycode
841 841
    currency dateformat dbconnect dbdriver dbhost dbport dboptions
842
    dbname dbuser dbpasswd email fax name numberformat password
842
    dbname dbuser dbpasswd email fax name numberformat in_numberformat password
843 843
    printer role sid signature stylesheet tel templates vclimit angebote bestellungen rechnungen
844 844
    anfragen lieferantenbestellungen einkaufsrechnungen steuernummer ustid duns menustyle);
845 845

  
bin/mozilla/am.pl
1575 1575
      ? "<option selected>$item\n"
1576 1576
      : "<option>$item\n";
1577 1577
  }
1578

  
1578
  
1579 1579
  foreach $item (qw(name company address signature)) {
1580 1580
    $myconfig{$item} =~ s/\"/&quot;/g;
1581 1581
  }
......
1595 1595
      : "<option value=$key>$countrycodes{$key}\n";
1596 1596
  }
1597 1597
  $countrycodes = "<option>American English\n$countrycodes";
1598
  
1599
  # use an other input number format than output numberformat
1600
  # look at Form.pm, sub parse_amount
1601
  my $ in_numberformat = '';
1602
  $text1 = qq|value="0">| . $locale->text('equal Outputformat');
1603
  $text2 = qq|value="1">| . $locale->text('1000,00 or 1000.00');
1604
  @in_nf = ($text1, $text2);
1605
  foreach $item ( @in_nf ) {
1606
    $in_numberformat .=
1607
      ( substr($item, 7, 1) eq $myconfig{in_numberformat})
1608
      ? "<option selected $item\n"
1609
      : "<option $item\n";
1610
  }
1611

  
1598 1612

  
1613
  
1599 1614
  foreach $key (keys %{ $form->{IC} }) {
1600 1615
    foreach $accno (sort keys %{ $form->{IC}{$key} }) {
1601 1616
      $myconfig{$key} .=
......
1676 1691
	  <td><select name=dateformat>$dateformat</select></td>
1677 1692
	</tr>
1678 1693
	<tr>
1679
	  <th align=right>| . $locale->text('Number Format') . qq|</th>
1694
	  <th align=right>| . $locale->text('Output Number Format') . qq|</th>
1680 1695
	  <td><select name=numberformat>$numberformat</select></td>
1681 1696
	</tr>
1697
	<tr>
1698
	  <th align=right>| . $locale->text('Input Number Format') . qq|</th>
1699
	  <td><select name=in_numberformat>$in_numberformat</select></td>
1700
	</tr>
1701

  
1682 1702
	<tr>
1683 1703
	  <th align=right>| . $locale->text('Dropdown Limit') . qq|</th>
1684 1704
	  <td><input name=vclimit size=10 value="$myconfig{vclimit}"></td>

Auch abrufbar als: Unified diff