Beim Wechsel des Kunden das Konto und den Steuerschlüssel richtig vorbelegen.
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 14 May 2009 12:19:21 +0000 (12:19 +0000)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 14 May 2009 12:19:21 +0000 (12:19 +0000)
Zum Einen sollte das Konto in der ersten Positionszeile nur dann gewechselt werden,
wenn in der Zeile noch kein Betrag eingetragen wurde. Zum Anderen sollte, wenn
das Konto auf das zuletzt für diesen Lieferanten bebuchte Konto gesetzt wird, auch
der zum neu ausgewählten Konto dazugehörige Steuerschlüssel ausgewählt werden und
nicht derjenige, der in der Maske vorher ausgewählt war.

Teil des Fixes für Bug 960.

Weiterhin bei Debitoren- und Kreditorenbuchungen die versteckten Variablen für
den Steuerbetrag bei jedem Erneuern neu berechnen lassen. Ansonsten kann es
passieren, dass in einer Zeile, in der zwischenzeitlich ein Betrag stand, der
seitdem entfernt und die Zeile dadurch resettet wurde, trotzdem ein Steuerbetrag
angezeigt wird, weil die versteckte Variable immer mitgeschliffen wurde.

bin/mozilla/ap.pl
bin/mozilla/ar.pl

index 75631fa..6c22f8e 100644 (file)
@@ -852,6 +852,8 @@ sub update {
 
   $form->{invtotal} = 0;
 
+  delete @{ $form }{ grep { m/^tax_\d+$/ } keys %{ $form } };
+
   map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
     qw(exchangerate creditlimit creditremaining);
 
index c0052bd..c410680 100644 (file)
@@ -32,7 +32,7 @@
 #======================================================================
 
 use POSIX qw(strftime);
-use List::Util qw(sum);
+use List::Util qw(sum first);
 
 use SL::AR;
 use SL::FU;
@@ -577,7 +577,13 @@ $jsscript
       $selected_taxchart = "$item->{id}--$item->{rate}";
     }
 
-    $selected_taxchart = $taxchart_init unless ($form->{"taxchart_$i"});
+    if (!$form->{"taxchart_$i"}) {
+      if ($form->{"AR_amount_$i"} =~ m/.--./) {
+        $selected_taxchart = join '--', map { ($_->{id}, $_->{rate}) } first { $_->{id} == $item->{tax_id} } @{ $form->{ALL_TAXCHARTS} };
+      } else {
+        $selected_taxchart = $taxchart_init;
+      }
+    }
 
     $selectAR_amount =
       NTI($cgi->popup_menu('-name' => "AR_amount_$i",
@@ -915,6 +921,8 @@ sub update {
 
   $form->{invtotal} = 0;
 
+  delete @{ $form }{ grep { m/^tax_\d+$/ } keys %{ $form } };
+
   map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
     qw(exchangerate creditlimit creditremaining);
 
@@ -954,9 +962,19 @@ sub update {
   $form->{exchangerate} = $form->{forex} if $form->{forex};
 
   $form->{invdate} = $form->{transdate};
-  my $save_AR = $form->{AR};
-  check_name("customer");
-  $form->{AR} = $save_AR;
+
+  $form->{invdate} = $form->{transdate};
+
+  my %saved_variables = map +( $_ => $form->{$_} ), qw(AR AR_amount_1 taxchart_1);
+
+  &check_name("customer");
+
+  $form->{AR} = $saved_variables{AR};
+  if ($saved_variables{AR_amount_1} =~ m/.--./) {
+    map { $form->{$_} = $saved_variables{$_} } qw(AR_amount_1 taxchart_1);
+  } else {
+    delete $form->{taxchart_1};
+  }
 
   $form->{invtotal} =
     ($form->{taxincluded}) ? $form->{invtotal} : $form->{invtotal} + $totaltax;