From 76be373f406c7336806ceb9177b3a7d1c0081380 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 26 Jul 2016 16:47:38 +0300 Subject: [PATCH] Fix "column totals" and "grand totals" in table reports --- report.cgi | 7 +++++-- template/en/default/reports/report-table.html.tmpl | 9 +++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/report.cgi b/report.cgi index c678103c9..c0c2e0d8b 100755 --- a/report.cgi +++ b/report.cgi @@ -262,7 +262,7 @@ foreach my $tbl (@tbl_names) my @col_data; foreach my $col (@col_names) { - $data{$tbl}{$col}{$row} = $data{$tbl}{$col}{$row} || 0; + $data{$tbl}{$col}{$row} ||= {}; push @col_data, $data{$tbl}{$col}{$row}; if ($tbl ne "-total-") { @@ -270,7 +270,10 @@ foreach my $tbl (@tbl_names) # building up the -total- data, and then last time round, # we process it as another tbl, and push() the total values # into the image_data array. - $data{"-total-"}{$col}{$row} += $data{$tbl}{$col}{$row}; + for my $m (keys %{$data{$tbl}{$col}{$row}}) + { + $data{"-total-"}{$col}{$row}{$m} += $data{$tbl}{$col}{$row}{$m}; + } } } push @tbl_data, \@col_data; diff --git a/template/en/default/reports/report-table.html.tmpl b/template/en/default/reports/report-table.html.tmpl index 696418b35..83c56d8c6 100644 --- a/template/en/default/reports/report-table.html.tmpl +++ b/template/en/default/reports/report-table.html.tmpl @@ -99,10 +99,12 @@ END; %] [% PROCESS value_display value = row field = row_field %] + [% col_n = 0 %] [% FOREACH col = col_names %] [% col_idx = 1 - col_idx %] [% FOR m = mlist %] - [% col_totals.$col.$m = col_totals.$col.$m + data.$tbl.$col.$row.$m %] + [%# Use numeric keys because fu*king Template::Stash produces double UTF-8 %] + [% col_totals.$col_n.$m = col_totals.$col_n.$m + data.$tbl.$col.$row.$m %] [% row_total.$m = row_total.$m + data.$tbl.$col.$row.$m %] [% IF data.$tbl.$col.$row.$m AND data.$tbl.$col.$row.$m > 0 %] @@ -113,6 +115,7 @@ END; %] [% END %] [% END %] + [% col_n = col_n + 1 %] [% END %] [% IF col_names.size > 1 %] [% FOR m = mlist %] @@ -131,15 +134,17 @@ END; %] [% row_idx = 1 - row_idx %] Total + [% col_n = 0 %] [% FOREACH col = col_names %] [% FOR m = mlist %] - [% col_totals.$col.$m %] + [% col_totals.$col_n.$m %] [% END %] + [% col_n = col_n + 1 %] [% END %] [% IF col_names.size > 1 %] [% FOR m = mlist %]