fix multiple-agent virtualization properly for these reports
authorivan <ivan>
Thu, 13 Jul 2006 03:54:07 +0000 (03:54 +0000)
committerivan <ivan>
Thu, 13 Jul 2006 03:54:07 +0000 (03:54 +0000)
FS/FS/Report/Table/Monthly.pm
httemplate/search/cust_credit.html
httemplate/search/cust_pay.cgi
httemplate/search/report_receivables.cgi

index 1b7e93a..145f2a8 100644 (file)
@@ -5,6 +5,7 @@ use vars qw( @ISA $expenses_kludge );
 use Time::Local;
 use FS::UID qw( dbh );
 use FS::Report::Table;
+use FS::CurrentUser;
 
 @ISA = qw( FS::Report::Table );
 
@@ -215,7 +216,7 @@ sub credits {
   );
 }
 
-#these should be auto-generated
+#these should be auto-generated or $AUTOLOADed or something
 sub invoiced_12mo {
   my( $self, $speriod, $eperiod, $agentnum ) = @_;
   $speriod = $self->_subtract_11mo($speriod);
@@ -330,9 +331,16 @@ sub suspended { #suspended
 sub in_time_period_and_agent {
   my( $self, $speriod, $eperiod, $agentnum ) = splice(@_, 0, 4);
   my $table = @_ ? shift().'.' : '';
+
   my $sql = "${table}_date >= $speriod AND ${table}_date < $eperiod";
+
+  #agent selection
   $sql .= " AND agentnum = $agentnum"
     if $agentnum;
+
+  #agent virtualization
+  $sql .= ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql;
+
   $sql;
 }
 
index 279d682..eb78db5 100755 (executable)
      push @search, " _date < $1 ";
    }
 
-   my $where = scalar(@search)
-                 ? 'WHERE '. join(' AND ', @search)
-                 : '';
+   #here is the agent virtualization
+   push @search, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
+   my $where = 'WHERE '. join(' AND ', @search);
 
    my $count_query = 'SELECT COUNT(*), SUM(amount) '.
                      'FROM cust_credit LEFT JOIN cust_main USING ( custnum ) '.
index 99ffc3d..0247b0b 100755 (executable)
        die "unknown search magic: ". $cgi->param('magic');
      }
 
-     my $search = '';
-     if ( @search ) {
-       $search = ' WHERE '. join(' AND ', @search);
-     }
+     #here is the agent virtualization
+     push @search, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
+     my $search = ' WHERE '. join(' AND ', @search);
   
      $count_query = "SELECT COUNT(*), SUM(paid) ".
                     "FROM cust_pay LEFT JOIN cust_main USING ( custnum )".
      $cgi->param('payby') =~ /^(\w+)$/ or die "illegal payby";
      my $payby = $1;
    
-     $count_query = "SELECT COUNT(*), SUM(paid) FROM cust_pay ".
-                    "WHERE payinfo = '$payinfo' AND payby = '$payby'";
+     $count_query = "SELECT COUNT(*), SUM(paid) FROM cust_pay".
+                    "  WHERE payinfo = '$payinfo' AND payby = '$payby'".
+                    "  AND ". $FS::CurrentUser::CurrentUser->agentnums_sql;
    
      $sql_query = {
        'table'     => 'cust_pay',
        'hashref'   => { 'payinfo' => $payinfo,
                         'payby'   => $payby    },
-       'extra_sql' => "ORDER BY _date",
+       'extra_sql' => $FS::CurrentUser::CurrentUser->agentnums_sql.
+                      " ORDER BY _date",
      };
    
    }
index ac94e1a..c1a239f 100755 (executable)
@@ -92,6 +92,9 @@ END
     $where .= " AND agentnum = '$agentnum' ";
   }
 
+  #here is the agent virtualization
+  $where .= ' AND '. $FS::CurrentUser::CurrentUser->agentnums_sql;
+
   my $count_sql = "select count(*) from cust_main $where";
 
   my $sql_query = {