From: Bernd Bleßmann Date: Wed, 24 Jun 2020 14:50:52 +0000 (+0200) Subject: Auftrags-Controller: Steuerwerte pro Steuer, nicht pro Steuerkonto ausweisen X-Git-Tag: release-3.5.6.1~179 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=309d139a52131f94cd187c1622734a549de7a5a5;p=kivitendo-erp.git Auftrags-Controller: Steuerwerte pro Steuer, nicht pro Steuerkonto ausweisen --- diff --git a/SL/Controller/Order.pm b/SL/Controller/Order.pm index d39fea75d..e4644983d 100644 --- a/SL/Controller/Order.pm +++ b/SL/Controller/Order.pm @@ -30,7 +30,7 @@ use SL::Helper::UserPreferences::UpdatePositions; use SL::Controller::Helper::GetModels; -use List::Util qw(first); +use List::Util qw(first sum0); use List::UtilsBy qw(sort_by uniq_by); use List::MoreUtils qw(any none pairwise first_index); use English qw(-no_match_vars); @@ -1512,16 +1512,15 @@ sub recalc { $self->order->currency_id($::instance_conf->get_currency_id()); my %pat = $self->order->calculate_prices_and_taxes(); + $self->{taxes} = []; - foreach my $tax_chart_id (keys %{ $pat{taxes} }) { - my $tax = SL::DB::Manager::Tax->find_by(chart_id => $tax_chart_id); + foreach my $tax_id (keys %{ $pat{taxes_by_tax_id} }) { + my $netamount = sum0 map { $pat{amounts}->{$_}->{amount} } grep { $pat{amounts}->{$_}->{tax_id} == $tax_id } keys %{ $pat{amounts} }; - my @amount_keys = grep { $pat{amounts}->{$_}->{tax_id} == $tax->id } keys %{ $pat{amounts} }; - push(@{ $self->{taxes} }, { amount => $pat{taxes}->{$tax_chart_id}, - netamount => $pat{amounts}->{$amount_keys[0]}->{amount}, - tax => $tax }); + push(@{ $self->{taxes} }, { amount => $pat{taxes_by_tax_id}->{$tax_id}, + netamount => $netamount, + tax => SL::DB::Tax->new(id => $tax_id)->load }); } - pairwise { $a->{linetotal} = $b->{linetotal} } @{$self->order->items_sorted}, @{$pat{items}}; }