fix per-user commission reports to filter packages they didn't order, RT#15634
[freeside.git] / httemplate / search / 477partVI_census.html
index b604353..3883a1c 100755 (executable)
@@ -114,9 +114,9 @@ foreach my $row ( @row_option ) {
       my $extracolumns = "$rowcount AS upload, $columncount AS download, $tech_code as technology_code";
       my $percent = "CASE WHEN count(*) > 0 THEN 100-100*cast(count(cust_main.company) as numeric)/cast(count(*) as numeric) ELSE cast(0 as numeric) END AS residential";
       $sql_query->{select} = "count(*) AS quantity, $extracolumns, censustract, $percent";
-      $sql_query->{extra_sql} =~ /^(.*)(ORDER BY pkgnum)(.*)$/s
-        or die "couldn't parse extra_sql";
-      $sql_query->{extra_sql} = "$1 GROUP BY censustract $3";
+      $sql_query->{order_by} =~ /^(.*)(ORDER BY pkgnum)(.*)$/s
+        or die "couldn't parse order_by";
+      $sql_query->{order_by} = "$1 GROUP BY censustract $3";
       push @sql_query, $sql_query;
     }
     $columncount++;
@@ -126,11 +126,13 @@ foreach my $row ( @row_option ) {
 
 my $count_query = 'SELECT count(*) FROM ( ('.
    join( ') UNION ALL (',
-          map { my $extra = $_->{extra_sql};  my $addl = $_->{addl_from};
-                "SELECT censustract from cust_pkg $addl $extra";
-              }
-          @sql_query
-       ). ') ) AS foo';
+      map { my $addl_from = $_->{addl_from};
+            my $extra_sql = $_->{extra_sql};
+            my $order_by  = $_->{order_by};
+            "SELECT censustract from cust_pkg $addl_from $extra_sql $order_by";
+          }
+      @sql_query
+   ). ') ) AS foo';
 
 my $link = 'cust_pkg.cgi?'. join(';',
                                       map { my $key = $_;
@@ -156,8 +158,14 @@ my $link_suffix = sub { my $row = shift;
 my $html_foot = sub {
   if (scalar(keys %state_hash) > 1) {
 
-    my $roa = join(',', grep $_, @technology_option);
-    $roa = ";report_option_any=$roa" if $roa;
+    my $roa_r = join(',', grep $_, @row_option);
+    $roa_r = ";report_option_any_r=$roa_r" if $roa_r;
+
+    my $roa_c = join(',', grep $_, @column_option);
+    $roa_c = ";report_option_any_c=$roa_c" if $roa_c;
+
+    my $roa_t = join(',', grep $_, @technology_option);
+    $roa_t = ";report_option_any_t=$roa_t" if $roa_t;
     
     '<BR><B>WARNING: multiple states found</B><BR>'.
     '<TABLE BORDER=0>'. #nicer formatting someday
@@ -166,8 +174,9 @@ my $html_foot = sub {
                        ( &FS::Report::FCC_477::statenum2state($_) || 'None' ).
                      '</TD>'.
                      '<TD>'.
-                       qq(<A HREF="${link}censustract2=$_$roa">).
-                       $state_pkgcount{$_}. ' packages</A> in '.
+                       qq(<A HREF="${link}censustract2=$_$roa_r$roa_c$roa_t">).
+                       $state_pkgcount{$_}.
+                      ' packages</A> in '.
                        $state_hash{$_}. ' census tracts'.
                      '</TD>'.
                    '</TR>';