<% 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 = ''; param('showdisabled') || !dbdef->table('agent')->column('disabled') ) ? 2 : 3 %>>Agent Type Master Customer Commissions Access Groups Invoice
Template
Customers Customer
packages
Reports Registration
codes
Prepaid cards % if ( $conf->config('ticket_system') ) { Ticketing % } % if ( $conf->config('currencies') ) { Currencies % } Payment Gateway Overrides Configuration Overrides %# Agent # %# Agent %foreach my $agent ( sort { % #$a->getfield('agentnum') <=> $b->getfield('agentnum') % $a->getfield('agent') cmp $b->getfield('agent') %} qsearch('agent', \%search ) ) { % % my $cust_main_link = $p. 'search/cust_main.cgi?agentnum_on=1&'. % 'agentnum='. $agent->agentnum; % % my $cust_pkg_link = $p. 'search/cust_pkg.cgi?agentnum='. $agent->agentnum; % % if ( $bgcolor eq $bgcolor1 ) { % $bgcolor = $bgcolor2; % } else { % $bgcolor = $bgcolor1; % } % ## % # 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 %>
% } % } % ## % # currencies % ## % if ( $conf->config('currencies') ) { <% join('
', sort keys %{ $agent->agent_currency_hashref } ) %> % } % ## % # 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 % ## % foreach my $override ( % qsearch('conf', { 'agentnum' => $agent->agentnum } ) % ) { % % }
<% $override->name %> (delete)
(view/add/edit overrides)
% } <%init> die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('Configuration'); my %search; if ( $cgi->param('showdisabled') || !dbdef->table('agent')->column('disabled') ) { %search = (); } else { %search = ( 'disabled' => '' ); } my $conf = new FS::Conf; my $disable_counts = $conf->exists('agent-disable_counts');