From: Rolf Fluehmann Date: Mon, 17 Jul 2017 15:37:18 +0000 (+0200) Subject: Erfolgsrechnung kann nach Abteilung gefiltert werden X-Git-Tag: release-3.5.4~1002 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=7d91a3cfe2ad0b6397a620268bb5939596982a5a;p=kivitendo-erp.git Erfolgsrechnung kann nach Abteilung gefiltert werden --- diff --git a/SL/RP.pm b/SL/RP.pm index 79f0403f2..016e268ec 100644 --- a/SL/RP.pm +++ b/SL/RP.pm @@ -1902,6 +1902,7 @@ sub erfolgsrechnung { my %categories = (I => "ERTRAG", E => "AUFWAND"); my $fromdate = conv_dateq($form->{fromdate}); my $todate = conv_dateq($form->{todate}); + my $department_id = conv_i((split /--/, $form->{department})[1], 'NULL'); $form->{total} = 0; @@ -1909,10 +1910,10 @@ sub erfolgsrechnung { my %category = ( name => $categories{$category}, total => 0, - accounts => get_accounts_ch($category), + accounts => get_accounts_ch($category) ); foreach my $account (@{$category{accounts}}) { - $account->{total} += get_total_ch($account->{id}, $fromdate, $todate); + $account->{total} = get_total_ch($department_id, $account->{id}, $fromdate, $todate); $category{total} += $account->{total}; $account->{total} = $form->format_amount($myconfig, $form->round_amount($account->{total}, 2), 2); } @@ -1930,7 +1931,7 @@ sub get_accounts_ch { $main::lxdebug->enter_sub(); my ($category) = @_; - my ($inclusion); + my $inclusion = '' ; if ($category eq 'I') { $inclusion = "AND pos_er = NULL OR pos_er = '1'"; @@ -1955,7 +1956,7 @@ sub get_accounts_ch { sub get_total_ch { $main::lxdebug->enter_sub(); - my ($chart_id, $fromdate, $todate) = @_; + my ($department_id, $chart_id, $fromdate, $todate) = @_; my $total = 0; my $query = qq| SELECT SUM(amount) @@ -1964,7 +1965,16 @@ sub get_total_ch { AND transdate >= ? AND transdate <= ? |; - $total += _query($query, $chart_id, $fromdate, $todate)->[0]->{sum}; + if ($department_id) { + $query .= qq| AND COALESCE( + (SELECT department_id FROM ar WHERE ar.id=trans_id), + (SELECT department_id FROM gl WHERE gl.id=trans_id), + (SELECT department_id FROM ap WHERE ap.id=trans_id) + ) = ? |; + $total += _query($query, $chart_id, $fromdate, $todate, $department_id)->[0]->{sum}; + } else { + $total += _query($query, $chart_id, $fromdate, $todate)->[0]->{sum}; + } $main::lxdebug->leave_sub(); return $total;