From: Niclas Zimmermann Date: Thu, 5 Dec 2013 13:29:48 +0000 (+0100) Subject: Behebt Bug bei Steuerfilterung in Dialogbuchungen X-Git-Tag: release-3.1.0beta1~22^2~105 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=affafa23d66a18e409ac424f6e27f0f1b4008725;p=kivitendo-erp.git Behebt Bug bei Steuerfilterung in Dialogbuchungen 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). --- 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();