From 8f8ad003294a3a8277500ca7ec436f9f92999de2 Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Thu, 14 May 2009 12:19:21 +0000 Subject: [PATCH] =?utf8?q?Beim=20Wechsel=20des=20Kunden=20das=20Konto=20un?= =?utf8?q?d=20den=20Steuerschl=C3=BCssel=20richtig=20vorbelegen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 | 2 ++ bin/mozilla/ar.pl | 28 +++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/bin/mozilla/ap.pl b/bin/mozilla/ap.pl index 75631fa29..6c22f8efe 100644 --- a/bin/mozilla/ap.pl +++ b/bin/mozilla/ap.pl @@ -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); diff --git a/bin/mozilla/ar.pl b/bin/mozilla/ar.pl index c0052bd5e..c41068046 100644 --- a/bin/mozilla/ar.pl +++ b/bin/mozilla/ar.pl @@ -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; -- 2.20.1