+ #match taxclass too?
+
+ my $fromwhere = "
+ FROM cust_bill_pkg
+ JOIN cust_bill USING ( invnum )
+ JOIN cust_main USING ( custnum )
+ WHERE _date >= $beginning AND _date <= $ending
+ AND ( county = ? OR ( ? = '' AND county IS NULL ) )
+ AND ( state = ? OR ( ? = '' AND state IS NULL ) )
+ AND ( country = ? OR ( ? = '' AND country IS NULL ) )
+ ";
+ my $nottax = 'pkgnum != 0';
+
+ my $a = scalar_sql($r,
+ "SELECT SUM(setup+recur) $fromwhere AND $nottax"
+ );
+ $total += $a;
+ $regions{$label}->{'total'} += $a;
+
+ foreach my $e ( grep { $r->get($_.'tax') =~ /^Y/i } qw( setup recur ) ) {
+ my $x = scalar_sql($r,
+ "SELECT SUM($e) $fromwhere AND $nottax"
+ );
+ $exempt += $x;
+ $regions{$label}->{'exempt'} += $x;
+ }
+
+ foreach my $e ( grep { $r->get($_.'tax') !~ /^Y/i } qw( setup recur ) ) {
+ my $x = scalar_sql($r,
+ "SELECT SUM($e) $fromwhere AND $nottax"
+ );
+ $taxable += $x;
+ $regions{$label}->{'taxable'} += $x;
+ }
+
+ if ( defined($regions{$label}->{'rate'})
+ && $regions{$label}->{'rate'} != $r->tax.'%' ) {
+ $regions{$label}->{'rate'} = 'variable';
+ } else {
+ $regions{$label}->{'rate'} = $r->tax.'%';
+ }
+
+ #match itemdesc if necessary!
+ my $named_tax = $r->taxname ? 'AND itemdesc = '. dbh->quote($r->taxname) : '';
+ my $x = scalar_sql($r,
+ "SELECT SUM(setup+recur) $fromwhere AND pkgnum = 0 $named_tax",
+ );
+ $tax += $x;
+ $regions{$label}->{'tax'} += $x;
+
+ $regions{$label}->{'label'} = $label;