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.
+ delete @{ $form }{ grep { m/^tax_\d+$/ } keys %{ $form } };
+
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
qw(exchangerate creditlimit creditremaining);
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
qw(exchangerate creditlimit creditremaining);
#======================================================================
use POSIX qw(strftime);
#======================================================================
use POSIX qw(strftime);
+use List::Util qw(sum first);
$selected_taxchart = "$item->{id}--$item->{rate}";
}
$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",
$selectAR_amount =
NTI($cgi->popup_menu('-name' => "AR_amount_$i",
+ delete @{ $form }{ grep { m/^tax_\d+$/ } keys %{ $form } };
+
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
qw(exchangerate creditlimit creditremaining);
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
qw(exchangerate creditlimit creditremaining);
$form->{exchangerate} = $form->{forex} if $form->{forex};
$form->{invdate} = $form->{transdate};
$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;
$form->{invtotal} =
($form->{taxincluded}) ? $form->{invtotal} : $form->{invtotal} + $totaltax;