From 309d139a52131f94cd187c1622734a549de7a5a5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bernd=20Ble=C3=9Fmann?= Date: Wed, 24 Jun 2020 16:50:52 +0200 Subject: [PATCH] Auftrags-Controller: Steuerwerte pro Steuer, nicht pro Steuerkonto ausweisen --- SL/Controller/Order.pm | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) 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}}; } -- 2.20.1