+ # start setting up summary subtotals
+ my @summary_subtotals;
+ my $method = $conf->config('summary_subtotals_method');
+ if ( $method and $method ne $conf->config($tc.'sections_method') ) {
+ # then re-section them by the correct method
+ my %section_method = ( by_category => 1 );
+ if ( $conf->config('summary_subtotals_method') eq 'location' ) {
+ %section_method = ( by_location => 1 );
+ }
+ my ($early, $late) =
+ $self->_items_sections( 'summary' => $summarypage,
+ 'escape' => $escape_function_nonbsp,
+ 'extra_sections' => $extra_sections,
+ 'format' => $format,
+ %section_method
+ );
+ foreach ( @$early ) {
+ next if $_->{subtotal} == 0;
+ $_->{subtotal} = $other_money_char.sprintf('%.2f', $_->{subtotal});
+ push @summary_subtotals, $_;
+ }
+ } else {
+ # subtotal sectioning is the same as for the actual invoice sections
+ @summary_subtotals = @sections;
+ }
+
+ # Hereafter, push sections to both @sections and @summary_subtotals
+ # if they belong in both places (e.g. tax section). Late sections are
+ # never in @summary_subtotals.
+