1 <% include("/elements/header.html",'Agent Listing', menubar(
2 'Agent Types' => $p. 'browse/agent_type.cgi',
3 # 'Add new agent' => '../edit/agent.cgi'
5 Agents are resellers of your service. Agents may be limited to a subset of your
6 full offerings (via their type).<BR><BR>
7 <A HREF="<% $p %>edit/agent.cgi"><I>Add a new agent</I></A><BR><BR>
8 % if ( dbdef->table('agent')->column('disabled') ) {
10 <% $cgi->param('showdisabled')
11 ? do { $cgi->param('showdisabled', 0);
12 '( <a href="'. $cgi->self_url. '">hide disabled agents</a> )'; }
13 : do { $cgi->param('showdisabled', 1);
14 '( <a href="'. $cgi->self_url. '">show disabled agents</a> )'; }
19 <% include('/elements/table-grid.html') %>
20 % my $bgcolor1 = '#eeeeee';
21 % my $bgcolor2 = '#ffffff';
25 <TH CLASS="grid" BGCOLOR="#cccccc" COLSPAN=<% ( $cgi->param('showdisabled') || !dbdef->table('agent')->column('disabled') ) ? 2 : 3 %>>Agent</TH>
26 <TH CLASS="grid" BGCOLOR="#cccccc">Type</TH>
27 <TH CLASS="grid" BGCOLOR="#cccccc">Master Customer</TH>
28 <TH CLASS="grid" BGCOLOR="#cccccc">Commissions</TH>
29 <TH CLASS="grid" BGCOLOR="#cccccc">Access Groups</TH>
30 <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Invoice<BR>Template</FONT></TH>
31 <TH CLASS="grid" BGCOLOR="#cccccc">Customers</TH>
32 <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Customer<BR>packages</FONT></TH>
33 <TH CLASS="grid" BGCOLOR="#cccccc">Reports</TH>
34 <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Registration<BR>codes</FONT></TH>
35 <TH CLASS="grid" BGCOLOR="#cccccc">Prepaid cards</TH>
37 % if ( $conf->config('ticket_system') ) {
38 <TH CLASS="grid" BGCOLOR="#cccccc">Ticketing</TH>
41 % if ( $conf->config('currencies') ) {
42 <TH CLASS="grid" BGCOLOR="#cccccc">Currencies</TH>
45 <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Payment Gateway Override</FONT></TH>
46 <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Configuration Overrides</FONT></TH>
49 %# <TH><FONT SIZE=-1>Agent #</FONT></TH>
51 %foreach my $agent ( sort {
52 % #$a->getfield('agentnum') <=> $b->getfield('agentnum')
53 % $a->getfield('agent') cmp $b->getfield('agent')
54 %} qsearch('agent', \%search ) ) {
56 % my $cust_main_link = $p. 'search/cust_main.cgi?agentnum_on=1&'.
57 % 'agentnum='. $agent->agentnum;
59 % my $cust_pkg_link = $p. 'search/cust_pkg.cgi?agentnum='. $agent->agentnum;
61 % if ( $bgcolor eq $bgcolor1 ) {
62 % $bgcolor = $bgcolor2;
64 % $bgcolor = $bgcolor1;
72 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
73 <A HREF="<%$p%>edit/agent.cgi?<% $agent->agentnum %>"><% $agent->agentnum %></A>
79 % if ( ! $cgi->param('showdisabled') ) {
80 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>" ALIGN="center">
81 <% $agent->disabled ? '<FONT COLOR="#FF0000"><B>DISABLED</B></FONT>'
82 : '<FONT COLOR="#00CC00"><B>Active</B></FONT>'
90 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
91 <A HREF="<%$p%>edit/agent.cgi?<% $agent->agentnum %>"><% $agent->agent %></A>
97 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
98 <A HREF="<%$p%>edit/agent_type.cgi?<% $agent->typenum %>"><% $agent->agent_type->atype %></A>
104 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
105 % if ( $agent->agent_custnum ) {
106 <& /elements/small_custview.html,
107 $agent->agent_custnum,
108 scalar($conf->config('countrydefault')),
110 $p.'view/cust_main.cgi',
119 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
123 % #surprising amount of false laziness w/ edit/process/agent.cgi
124 % my @pkg_class = qsearch('pkg_class', { 'disabled'=>'' });
125 % foreach my $pkg_class ( '', @pkg_class ) {
126 % my %agent_pkg_class = ( 'agentnum' => $agent->agentnum,
127 % 'classnum' => $pkg_class ? $pkg_class->classnum : ''
129 % my $agent_pkg_class =
130 % qsearchs( 'agent_pkg_class', \%agent_pkg_class )
131 % || new FS::agent_pkg_class \%agent_pkg_class;
132 % my $param = 'classnum'. $agent_pkg_class{classnum};
135 <TD><% $agent_pkg_class->commission_percent || 0 %>%</TD>
136 <TD><% $pkg_class ? $pkg_class->classname : mt('(no package class)') |h %>
149 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
150 % foreach my $access_group (
151 % map $_->access_group,
152 % qsearch('access_groupagent', { 'agentnum' => $agent->agentnum })
154 <A HREF="<%$p%>edit/access_group.html?<% $access_group->groupnum %>"><% $access_group->groupname |h %><BR>
161 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
162 <% $agent->invoice_template || '(Default)' %>
169 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>" VALIGN="bottom">
170 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
173 % qw( prospect inactive ordered active suspended cancelled );
174 % my %method = ( 'suspended' => 'susp',
175 % 'cancelled' => 'cancel'
177 % my %PL = ( 'prospect' => 'prospects', );
178 % my %link = ( 'cancelled' => 'showcancelledcustomers=1&cancelled' );
179 % my $statuscolor = FS::cust_main->statuscolors;
181 % foreach my $status ( @cust_status ) {
182 % my $meth = exists($method{$status}) ? $method{$status} : $status;
183 % $meth = 'num_'. $meth. '_cust_main';
184 % my $link = exists($link{$status}) ? $link{$status} : $status;
188 % unless ( $disable_counts ) {
189 <TH ALIGN="right" WIDTH="40%">
190 <FONT COLOR="#<% $statuscolor->{$status} %>">
191 <% $num = $agent->$meth() %>
196 % if ( $num || $disable_counts ) {
199 <A HREF="<% $cust_main_link. "&$link=1" %>">
201 <% exists($PL{$status}) ? $PL{$status} : $status %>
202 % if ($num || $disable_counts ) {
215 % # customer packages
218 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>" VALIGN="bottom">
219 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
221 % #my @pkg_status = FS::cust_pkg->statuses;
222 % my @pkg_status = ( 'on hold', 'one-time charge', 'not yet billed',
223 % qw( active suspended cancelled ) );
224 % my %method = ( 'one-time charge' => 'inactive',
225 % 'suspended' => 'susp',
226 % 'cancelled' => 'cancel',
228 % my $statuscolor = FS::cust_pkg->statuscolors;
230 % foreach my $status ( @pkg_status ) {
231 % my $magic = exists($method{$status}) ? $method{$status} : $status;
233 % my $meth = 'num_'. $magic. '_cust_pkg';
234 % ( my $label = $status ) =~ s/ / /g;
238 % unless ( $disable_counts ) {
239 <TH ALIGN="right" WIDTH="40%">
240 <FONT COLOR="#<% $statuscolor->{$status} %>">
241 <% $num = $agent->$meth() %>
247 % if ( $num || $disable_counts ) {
249 <A HREF="<% $cust_pkg_link %>&magic=<% $magic %>">
252 % if ( $num || $disable_counts ) {
267 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
268 <A HREF="<% $p %>graph/report_cust_pkg.html?agentnum=<% $agent->agentnum %>">Package Churn</A>
269 <BR><A HREF="<% $p %>search/report_cust_pay.html?agentnum=<% $agent->agentnum %>">Payments</A>
270 <BR><A HREF="<% $p %>search/report_cust_credit.html?agentnum=<% $agent->agentnum %>">Credits</A>
271 <BR><A HREF="<% $p %>search/report_receivables.cgi?agentnum=<% $agent->agentnum %>">A/R Aging</A>
272 <!--<BR><A HREF="<% $p %>search/money_time.cgi?agentnum=<% $agent->agentnum %>">Sales/Credits/Receipts</A>-->
276 % # registration codes
279 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
280 <% my $num_reg_code = $agent->num_reg_code %>
281 % if ( $num_reg_code ) {
283 <A HREF="<%$p%>search/reg_code.html?agentnum=<% $agent->agentnum %>">
286 % if ( $num_reg_code ) {
290 <BR><A HREF="<%$p%>edit/reg_code.cgi?agentnum=<% $agent->agentnum %>">Generate codes</A>
297 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
298 <% my $num_prepay_credit = $agent->num_prepay_credit %>
299 % if ( $num_prepay_credit ) {
301 <A HREF="<%$p%>search/prepay_credit.html?agentnum=<% $agent->agentnum %>">
304 % if ( $num_prepay_credit ) {
308 <BR><A HREF="<%$p%>edit/prepay_credit.cgi?agentnum=<% $agent->agentnum %>">Generate cards</A>
314 % if ( $conf->config('ticket_system') ) {
315 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
316 % if ( $agent->ticketing_queueid ) {
317 Queue: <% $agent->ticketing_queueid %>:
318 <% $agent->ticketing_queue %>
327 % if ( $conf->config('currencies') ) {
328 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
329 <% join('<BR>', sort keys %{ $agent->agent_currency_hashref } ) %>
334 % # payment gateway override
337 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
338 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
339 % my $gw_override = qsearchs('agent_payment_gateway', { 'agentnum' => $agent->agentnum } );
340 % if ($gw_override) {
343 <% $gw_override->payment_gateway->gateway_module %> (<% $gw_override->payment_gateway->gateway_username %>)
344 <FONT SIZE=-1><A HREF="javascript:areyousure('delete this payment gateway override', '<%$p%>misc/delete-agent_payment_gateway.cgi?<% $gw_override->agentgatewaynum %>')">(delete)</A></FONT>
349 <TD><FONT SIZE=-1><A HREF="<%$p%>edit/agent_payment_gateway.html?agentnum=<% $agent->agentnum %>">(add override)</A></FONT></TD>
356 % # configuration overrides
359 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
360 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
361 % foreach my $override (
362 % qsearch('conf', { 'agentnum' => $agent->agentnum } )
368 <% $override->name %> <FONT SIZE=-1><A HREF="javascript:areyousure('delete this configuration override', '<%$p%>config/config-delete.cgi?confnum=<% $override->confnum %>')">(delete)</A></FONT>
374 <TD><FONT SIZE=-1><A HREF="<%$p%>config/config-view.cgi?agentnum=<% $agent->agentnum %>">(view/add/edit overrides)</A></FONT></TD>
385 <SCRIPT TYPE="text/javascript">
386 function areyousure(what, href) {
387 if ( confirm("Are you sure you want to " + what + "?") == true )
388 window.location.href = href;
397 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
400 if ( $cgi->param('showdisabled')
401 || !dbdef->table('agent')->column('disabled') ) {
404 %search = ( 'disabled' => '' );
407 my $conf = new FS::Conf;
408 my $disable_counts = $conf->exists('agent-disable_counts');