From: Mark Wells Date: Tue, 7 Jul 2015 21:48:14 +0000 (-0700) Subject: add a tab to grouped search containing all rows, #25944 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=ba95860daaf6c4de2f90ef28057516bc7d44c8a0 add a tab to grouped search containing all rows, #25944 --- diff --git a/httemplate/search/elements/cust_pay_or_refund.html b/httemplate/search/elements/cust_pay_or_refund.html index ce513ab15..5808e5f3e 100755 --- a/httemplate/search/elements/cust_pay_or_refund.html +++ b/httemplate/search/elements/cust_pay_or_refund.html @@ -57,13 +57,14 @@ Examples: 'group_column' => 'payby', 'group_label' => 'payby_name', - 'subtotal' => { 'paid' => 'sum(paid)' }, + 'subtotal' => { $opt{name_verb} => "sum($amount_field)" }, 'subtotal_row' => [ 'Subtotal', - sub { sprintf($money, $_[0]->paid) }, + sub { sprintf($money, $_[0]->$amount_field) }, ], 'total_row' => [ 'Total', - sub { sprintf("$money", $_[0]->paid) }, + sub { sprintf("$money", $_[0]->$amount_field) }, ], + 'show_combined' => 1, &> <%init> @@ -181,7 +182,7 @@ push @fields, 'payby_payinfo_pretty', sub { sprintf($money, shift->$amount_field() ) }, ; push @link_onclicks, $sub_receipt, ''; -push @sort_fields, '', $amount_field; +push @sort_fields, 'paysort', $amount_field; if ( $unapplied ) { push @header, emt('Unapplied'); @@ -243,6 +244,7 @@ if ( $cgi->param('magic') ) { my @search = (); my @select = ( "$table.*", + "( $table.payby || ' ' || coalesce($table.paymask, $table.payinfo) ) AS paysort", FS::UI::Web::cust_sql_fields(), 'cust_main.custnum AS cust_main_custnum', ); diff --git a/httemplate/search/elements/grouped-search/core b/httemplate/search/elements/grouped-search/core index fe47fb7d1..ffa8cee39 100644 --- a/httemplate/search/elements/grouped-search/core +++ b/httemplate/search/elements/grouped-search/core @@ -130,6 +130,15 @@ for my $i (0 .. scalar(@groups) - 1) { push @queries, $detail_query; } +if ( $opt{show_combined} ) { + # set up group 0 as a combined view + unshift @groups, $totals; + unshift @group_labels, 'All ' . PL($opt{name_singular}) . + ' (' . $totals->num_rows . ')'; + unshift @group_footers, []; # the total footer will suffice + unshift @queries, $base_query->clone; +} + my @total_footer; if ($opt{'total_row'}) { for( my $col = 0; diff --git a/httemplate/search/elements/grouped-search/html b/httemplate/search/elements/grouped-search/html index aff17cea0..df1471a52 100644 --- a/httemplate/search/elements/grouped-search/html +++ b/httemplate/search/elements/grouped-search/html @@ -71,6 +71,23 @@ for (my $i = 0; $i < $group_info->{num}; $i++) { push @menubar, $group_info->{group_labels}[$i], ";group=$i"; } +# not enabled yet; if we need this at some point, enable it on a per-report +# basis and then disable it for search/cust_pay.html, because it's redundant +# to see "Check Check #130108", "Credit card Card #401...", etc. + +## if this is the combined view, add a column for the group key +#if ( $curr_group == 0 and $opt{'show_combined'} ) { +# unshift @{$opt{'header'}}, ''; +# unshift @{$opt{'fields'}}, $opt{group_label}; +# unshift @{$opt{'sort_fields'}}, $opt{group_column} if $opt{'sort_fields'}; +# $opt{'align'} = 'c'.$opt{'align'}; +# foreach (qw(header2 links link_onclicks color size style cell_style xls_format)) { +# if ( $opt{$_} ) { +# unshift @{$opt{$_}}, ''; +# } +# } +#} + <& /elements/header.html, $opt{title} &> @@ -93,6 +110,7 @@ for (my $i = 0; $i < $group_info->{num}; $i++) { <% emt('as Excel spreadsheet') %>
% $cgi->param('type', 'html-print'); <% emt('as printable copy') %>
+% $cgi->delete('type');

<% $pager %> diff --git a/httemplate/search/elements/grouped-search/html-print b/httemplate/search/elements/grouped-search/html-print index c4c3b1ef5..6d9521ba3 100644 --- a/httemplate/search/elements/grouped-search/html-print +++ b/httemplate/search/elements/grouped-search/html-print @@ -5,7 +5,9 @@ The "printable" view (all groups on one page). <%init> my %opt = @_; -my $group_info = $m->comp('core', %opt); +my $group_info = $m->comp('core', %opt, + 'show_combined' => 0 +); my $ncols = scalar(@{ $opt{header} }); my $total_footer = $group_info->{total_footer} || [];