% include("/elements/header.html",'Agent Listing', menubar(
  'Agent Types' => $p. 'browse/agent_type.cgi',
#  'Add new agent' => '../edit/agent.cgi'
)) %>
Agents are resellers of your service. Agents may be limited to a subset of your
full offerings (via their type).
Add a new agent
% if ( dbdef->table('agent')->column('disabled') ) { 
  <% $cgi->param('showdisabled')
      ? do { $cgi->param('showdisabled', 0);
             '( hide disabled agents )'; }
      : do { $cgi->param('showdisabled', 1);
             '( show disabled agents )'; }
  %>
% } 
<% include('/elements/table-grid.html') %>
% my $bgcolor1 = '#eeeeee';
%   my $bgcolor2 = '#ffffff';
%   my $bgcolor = '';
%       ##
%       # agentnum
%       ##
        | 
          <% $agent->agentnum %>
         | 
%       ##
%       # disabled
%       ##
%       if ( ! $cgi->param('showdisabled') ) { 
          
            <% $agent->disabled ? 'DISABLED'
                                : 'Active'
            %>
           | 
%       } 
%       ##
%       # agent
%       ##
        
          <% $agent->agent %>
         | 
%       ##
%       # type
%       ##
        
          <% $agent->agent_type->atype %>
         | 
%       ##
%       # master customer
%       ##
        
%         if ( $agent->agent_custnum ) {
            <& /elements/small_custview.html,
                 $agent->agent_custnum,
                 scalar($conf->config('countrydefault')),
                 1, #show balance
                 $p.'view/cust_main.cgi',
            &>
%         }
         | 
%       ##
%       # commissions
%       ##
        
          
%           #surprising amount of false laziness w/ edit/process/agent.cgi
%           my @pkg_class = qsearch('pkg_class', { 'disabled'=>'' });
%           foreach my $pkg_class ( '', @pkg_class ) {
%             my %agent_pkg_class = ( 'agentnum' => $agent->agentnum,
%                                     'classnum' => $pkg_class ? $pkg_class->classnum : ''
%                                   );
%             my $agent_pkg_class =
%               qsearchs( 'agent_pkg_class', \%agent_pkg_class )
%               || new FS::agent_pkg_class   \%agent_pkg_class;
%             my $param = 'classnum'. $agent_pkg_class{classnum};
              
                | <% $agent_pkg_class->commission_percent || 0 %>% | 
                <% $pkg_class ? $pkg_class->classname : mt('(no package class)') |h %>
                 | 
               
%           }
           
         | 
%       ##
%       # access groups
%       ##
        
%         foreach my $access_group (
%           map $_->access_group,
%               qsearch('access_groupagent', { 'agentnum' => $agent->agentnum })
%         ) {
            <% $access_group->groupname |h %> 
%         }
         | 
%       ##
%       # invoice template
%       ##
        
          <% $agent->invoice_template || '(Default)' %>
         | 
%       ##
%       # customers
%       ##
        
          
%           my @cust_status =
%             qw( prospect inactive ordered active suspended cancelled );
%           my %method = ( 'suspended' => 'susp',
%                          'cancelled' => 'cancel'
%                        );
%           my %PL = ( 'prospect' => 'prospects', );
%           my %link = ( 'cancelled' => 'showcancelledcustomers=1&cancelled' );
%           my $statuscolor = FS::cust_main->statuscolors;
%
%           foreach my $status ( @cust_status ) {
%             my $meth = exists($method{$status}) ? $method{$status} : $status;
%             $meth = 'num_'. $meth. '_cust_main';
%             my $link = exists($link{$status}) ? $link{$status} : $status;
              
%               my $num = 0;
%               unless ( $disable_counts ) {
                  | 
                    
                      <% $num = $agent->$meth() %> 
                    
                   | 
%               }
                
% if ( $num || $disable_counts ) { 
%                 
                  ">
% } 
<% exists($PL{$status}) ? $PL{$status} : $status %>
% if ($num || $disable_counts ) {
% } 
               | 
             |  
%           }
           
         | 
%       ##
%       # customer packages
%       ##
        
          
%           #my @pkg_status = FS::cust_pkg->statuses;
%           my @pkg_status = ( 'on hold', 'one-time charge', 'not yet billed',
%                              qw( active suspended cancelled ) );
%           my %method = ( 'one-time charge' => 'inactive',
%                          'suspended'       => 'susp',
%                          'cancelled'       => 'cancel',
%                        );
%           my $statuscolor = FS::cust_pkg->statuscolors;
%
%           foreach my $status ( @pkg_status ) {
%             my $magic = exists($method{$status}) ? $method{$status} : $status;
%             $magic =~ s/ /_/g;
%             my $meth = 'num_'. $magic. '_cust_pkg';
%             ( my $label = $status ) =~ s/ / /g;
              
%               my $num = 0;
%               unless ( $disable_counts ) {
                  | 
                    
                      <% $num = $agent->$meth() %> 
                    
                   | 
%               }
              
% if ( $num || $disable_counts ) { 
                  
% } 
<% $label %>
% if ( $num || $disable_counts ) { 
% } 
               | 
             
%           }
           
         | 
%       ##
%       # reports
%       ##
        
          Package Churn
           Payments
           Credits
           A/R Aging
          
         | 
%       ##
%       # registration codes
%       ##
        
          <% my $num_reg_code = $agent->num_reg_code %>
% if ( $num_reg_code ) { 
            
% } 
Unused
% if ( $num_reg_code ) { 
% } 
           Generate codes
         | 
%       ##
%       # prepaid cards
%       ##
        
          <% my $num_prepay_credit = $agent->num_prepay_credit %>
% if ( $num_prepay_credit ) { 
            
% } 
Unused
% if ( $num_prepay_credit ) { 
% } 
           Generate cards
         | 
%       ##
%       # ticketing
%       ##
% if ( $conf->config('ticket_system') ) { 
          
% if ( $agent->ticketing_queueid ) { 
              Queue: <% $agent->ticketing_queueid %>: <% $agent->ticketing_queue %> 
% } 
           | 
% } 
%       ##
%       # payment gateway overrides
%       ##
        
          
% foreach my $override (
%                 # sort { }  want taxclass-full stuff first?  and default cards (empty cardtype)
%                 qsearch('agent_payment_gateway', { 'agentnum' => $agent->agentnum } )
%               ) {
%            
              
                |  
                  <% $override->cardtype || 'Default' %> to <% $override->payment_gateway->gateway_module %> (<% $override->payment_gateway->gateway_username %>)
                  <% $override->taxclass
                        ? ' for '. $override->taxclass. ' only'
                        : ''
                  %>
                  (delete)
                 | 
               
% } 
            
              | (add override) | 
             
           
         | 
%       ##
%       # configuration overrides
%       ##
        
          
         | 
      
% }