From affafa23d66a18e409ac424f6e27f0f1b4008725 Mon Sep 17 00:00:00 2001 From: Niclas Zimmermann Date: Thu, 5 Dec 2013 14:29:48 +0100 Subject: [PATCH] Behebt Bug bei Steuerfilterung in Dialogbuchungen MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Bisher kam es zu einem Fehler, wenn in Dialogbuchungen auf 'Erneuern' geklickt hat (der Filter für die Steuerkonten wurde für das erste Konto in der Liste aller Konten gesetzt statt dem ausgewählten). --- SL/GL.pm | 9 ++++++--- bin/mozilla/gl.pl | 36 +++++++++++++++++++----------------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/SL/GL.pm b/SL/GL.pm index 594d57c7f..f97e2b248 100644 --- a/SL/GL.pm +++ b/SL/GL.pm @@ -789,23 +789,26 @@ sub get_chart_balances { } sub get_tax_dropdown { + my ($self, $accno) = @_; + my $myconfig = \%main::myconfig; my $form = $main::form; my $dbh = $form->get_standard_dbh($myconfig); my $query = qq|SELECT category FROM chart WHERE accno = ?|; - my ($category) = selectrow_query($form, $dbh, $query, $form->{accno}); + my ($category) = selectrow_query($form, $dbh, $query, $accno); $query = qq|SELECT * FROM tax WHERE chart_categories like '%$category%' order by taxkey, rate|; my $sth = prepare_execute_query($form, $dbh, $query); - $form->{TAX_ACCOUNTS} = []; + my @tax_accounts = (); while (my $ref = $sth->fetchrow_hashref("NAME_lc")) { - push(@{ $form->{TAX_ACCOUNTS} }, $ref); + push(@tax_accounts, $ref); } + return @tax_accounts; } 1; diff --git a/bin/mozilla/gl.pl b/bin/mozilla/gl.pl index d2e0f9cc3..78be01c3d 100644 --- a/bin/mozilla/gl.pl +++ b/bin/mozilla/gl.pl @@ -683,17 +683,6 @@ sub display_rows { $charts{$item->{accno}} = $item; } - my %taxchart_labels = (); - my @taxchart_values = (); - my %taxcharts = (); - foreach my $item (@{ $form->{TAX_ACCOUNTS} }) { - my $key = $item->{id} . "--" . $item->{rate}; - $taxchart_init = $key if ($taxchart_init == $item->{id}); - push(@taxchart_values, $key); - $taxchart_labels{$key} = $item->{taxdescription} . " " . $item->{rate} * 100 . ' %'; - $taxcharts{$item->{id}} = $item; - } - my ($source, $memo, $source_hidden, $memo_hidden); for my $i (1 .. $form->{rowcount}) { if ($form->{show_details}) { @@ -717,6 +706,20 @@ sub display_rows { my ($selected_accno, $selected_tax_id) = split(/--/, $selected_accno_full); my ($previous_accno, $previous_tax_id) = split(/--/, $form->{"previous_accno_$i"}); + my %taxchart_labels = (); + my @taxchart_values = (); + my %taxcharts = (); + my $filter_accno; + $filter_accno = $::form->{ALL_CHARTS}[0]->{accno}; + $filter_accno = $selected_accno if (!$init and $i < $form->{rowcount}); + foreach my $item ( GL->get_tax_dropdown($filter_accno) ) { + my $key = $item->{id} . "--" . $item->{rate}; + $taxchart_init = $key if ($taxchart_init == $item->{id}); + push(@taxchart_values, $key); + $taxchart_labels{$key} = $item->{taxdescription} . " " . $item->{rate} * 100 . ' %'; + $taxcharts{$item->{id}} = $item; + } + if ($previous_accno && ($previous_accno eq $selected_accno) && ($previous_tax_id ne $selected_tax_id)) { @@ -864,9 +867,6 @@ sub form_header { "charts" => { "key" => "ALL_CHARTS", "transdate" => $::form->{transdate} }); - $::form->{accno} = $::form->{ALL_CHARTS}[0]->{accno}; - GL->get_tax_dropdown(); - GL->get_chart_balances('charts' => $::form->{ALL_CHARTS}); my $title = $::form->{title}; @@ -1225,16 +1225,18 @@ sub continue { } sub get_tax_dropdown { + $main::lxdebug->enter_sub(); my $form = $main::form; - $main::lxdebug->enter_sub(); - GL->get_tax_dropdown(); + my @tax_accounts = GL->get_tax_dropdown($form->{accno}); - foreach my $item (@{ $form->{TAX_ACCOUNTS} }) { + foreach my $item (@tax_accounts) { $item->{taxdescription} = $::locale->{iconv_utf8}->convert($item->{taxdescription}); $item->{taxdescription} .= ' ' . $form->round_amount($item->{rate} * 100); } + $form->{TAX_ACCOUNTS} = [ @tax_accounts ]; + print $form->ajax_response_header, $form->parse_html_template("gl/update_tax_accounts"); $main::lxdebug->leave_sub(); -- 2.20.1