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 <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Payment Gateway Overrides</FONT></TH>
42 <TH CLASS="grid" BGCOLOR="#cccccc"><FONT SIZE=-1>Configuration Overrides</FONT></TH>
45 %# <TH><FONT SIZE=-1>Agent #</FONT></TH>
47 %foreach my $agent ( sort {
48 % #$a->getfield('agentnum') <=> $b->getfield('agentnum')
49 % $a->getfield('agent') cmp $b->getfield('agent')
50 %} qsearch('agent', \%search ) ) {
52 % my $cust_main_link = $p. 'search/cust_main.cgi?agentnum_on=1&'.
53 % 'agentnum='. $agent->agentnum;
55 % my $cust_pkg_link = $p. 'search/cust_pkg.cgi?agentnum='. $agent->agentnum;
57 % if ( $bgcolor eq $bgcolor1 ) {
58 % $bgcolor = $bgcolor2;
60 % $bgcolor = $bgcolor1;
65 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
66 <A HREF="<%$p%>edit/agent.cgi?<% $agent->agentnum %>"><% $agent->agentnum %></A>
69 % if ( ! $cgi->param('showdisabled') ) {
70 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>" ALIGN="center">
71 <% $agent->disabled ? '<FONT COLOR="#FF0000"><B>DISABLED</B></FONT>'
72 : '<FONT COLOR="#00CC00"><B>Active</B></FONT>'
77 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
78 <A HREF="<%$p%>edit/agent.cgi?<% $agent->agentnum %>"><% $agent->agent %></A>
81 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
82 <A HREF="<%$p%>edit/agent_type.cgi?<% $agent->typenum %>"><% $agent->agent_type->atype %></A>
85 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
86 % if ( $agent->agent_custnum ) {
87 <% include('/elements/small_custview.html',
88 $agent->agent_custnum,
89 scalar($conf->config('countrydefault')),
96 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
100 % #surprising amount of false laziness w/ edit/process/agent.cgi
101 % my @pkg_class = qsearch('pkg_class', { 'disabled'=>'' });
102 % foreach my $pkg_class ( '', @pkg_class ) {
103 % my %agent_pkg_class = ( 'agentnum' => $agent->agentnum,
104 % 'classnum' => $pkg_class ? $pkg_class->classnum : ''
106 % my $agent_pkg_class =
107 % qsearchs( 'agent_pkg_class', \%agent_pkg_class )
108 % || new FS::agent_pkg_class \%agent_pkg_class;
109 % my $param = 'classnum'. $agent_pkg_class{classnum};
112 <TD><% $agent_pkg_class->commission_percent || 0 %>%</TD>
113 <TD><% $pkg_class ? $pkg_class->classname : mt('(no package class)') |h %>
123 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
124 % foreach my $access_group (
125 % map $_->access_group,
126 % qsearch('access_groupagent', { 'agentnum' => $agent->agentnum })
128 <A HREF="<%$p%>edit/access_group.html?<% $access_group->groupnum %>"><% $access_group->groupname |h %><BR>
132 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
133 <% $agent->invoice_template || '(Default)' %>
136 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>" VALIGN="bottom">
137 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
140 <TH ALIGN="right" WIDTH="40%">
141 <FONT COLOR="#7e0079">
142 <% my $num_prospect = $agent->num_prospect_cust_main %>
147 % if ( $num_prospect ) {
149 <A HREF="<% $cust_main_link %>&prospect=1">
152 % if ($num_prospect ) {
160 <TH ALIGN="right" WIDTH="40%">
161 <FONT COLOR="#0000CC">
162 <% my $num_inactive = $agent->num_inactive_cust_main %>
167 % if ( $num_inactive ) {
169 <A HREF="<% $cust_main_link %>&inactive=1">
172 % if ( $num_inactive ) {
180 <TH ALIGN="right" WIDTH="40%">
181 <FONT COLOR="#00CC00">
182 <% my $num_active = $agent->num_active_cust_main %>
187 % if ( $num_active ) {
189 <A HREF="<% $cust_main_link %>&active=1">
192 % if ( $num_active ) {
200 <TH ALIGN="right" WIDTH="40%">
201 <FONT COLOR="#FF9900">
202 <% my $num_susp = $agent->num_susp_cust_main %>
209 <A HREF="<% $cust_main_link %>&suspended=1">
220 <TH ALIGN="right" WIDTH="40%">
221 <FONT COLOR="#FF0000">
222 <% my $num_cancel = $agent->num_cancel_cust_main %>
227 % if ( $num_cancel ) {
229 <A HREF="<% $cust_main_link %>&showcancelledcustomers=1&cancelled=1">
232 % if ( $num_cancel ) {
242 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>" VALIGN="bottom">
243 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
246 <TH ALIGN="right" WIDTH="40%">
247 <FONT COLOR="#0000CC">
248 <% my $num_inactive_pkg = $agent->num_inactive_cust_pkg %>
253 % if ( $num_inactive_pkg ) {
255 <A HREF="<% $cust_pkg_link %>&magic=inactive">
258 % if ( $num_inactive_pkg ) {
266 <TH ALIGN="right" WIDTH="40%">
267 <FONT COLOR="#00CC00">
268 <% my $num_active_pkg = $agent->num_active_cust_pkg %>
273 % if ( $num_active_pkg ) {
275 <A HREF="<% $cust_pkg_link %>&magic=active">
278 % if ( $num_active_pkg ) {
286 <TH ALIGN="right" WIDTH="40%">
287 <FONT COLOR="#FF9900">
288 <% my $num_susp_pkg = $agent->num_susp_cust_pkg %>
293 % if ( $num_susp_pkg ) {
295 <A HREF="<% $cust_pkg_link %>&magic=suspended">
298 % if ( $num_susp_pkg ) {
306 <TH ALIGN="right" WIDTH="40%">
307 <FONT COLOR="#FF0000">
308 <% my $num_cancel_pkg = $agent->num_cancel_cust_pkg %>
313 % if ( $num_cancel_pkg ) {
315 <A HREF="<% $cust_pkg_link %>&magic=cancelled">
318 % if ( $num_cancel_pkg ) {
328 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
329 <A HREF="<% $p %>graph/report_cust_pkg.html?agentnum=<% $agent->agentnum %>">Package Churn</A>
330 <BR><A HREF="<% $p %>search/report_cust_pay.html?agentnum=<% $agent->agentnum %>">Payments</A>
331 <BR><A HREF="<% $p %>search/report_cust_credit.html?agentnum=<% $agent->agentnum %>">Credits</A>
332 <BR><A HREF="<% $p %>search/report_receivables.cgi?agentnum=<% $agent->agentnum %>">A/R Aging</A>
333 <!--<BR><A HREF="<% $p %>search/money_time.cgi?agentnum=<% $agent->agentnum %>">Sales/Credits/Receipts</A>-->
337 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
338 <% my $num_reg_code = $agent->num_reg_code %>
339 % if ( $num_reg_code ) {
341 <A HREF="<%$p%>search/reg_code.html?agentnum=<% $agent->agentnum %>">
344 % if ( $num_reg_code ) {
348 <BR><A HREF="<%$p%>edit/reg_code.cgi?agentnum=<% $agent->agentnum %>">Generate codes</A>
351 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
352 <% my $num_prepay_credit = $agent->num_prepay_credit %>
353 % if ( $num_prepay_credit ) {
355 <A HREF="<%$p%>search/prepay_credit.html?agentnum=<% $agent->agentnum %>">
358 % if ( $num_prepay_credit ) {
362 <BR><A HREF="<%$p%>edit/prepay_credit.cgi?agentnum=<% $agent->agentnum %>">Generate cards</A>
364 % if ( $conf->config('ticket_system') ) {
367 <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
368 % if ( $agent->ticketing_queueid ) {
370 Queue: <% $agent->ticketing_queueid %>: <% $agent->ticketing_queue %><BR>
377 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
378 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
379 % foreach my $override (
380 % # sort { } want taxclass-full stuff first? and default cards (empty cardtype)
381 % qsearch('agent_payment_gateway', { 'agentnum' => $agent->agentnum } )
387 <% $override->cardtype || 'Default' %> to <% $override->payment_gateway->gateway_module %> (<% $override->payment_gateway->gateway_username %>)
388 <% $override->taxclass
389 ? ' for '. $override->taxclass. ' only'
392 <FONT SIZE=-1><A HREF="javascript:areyousure('delete this payment gateway override', '<%$p%>misc/delete-agent_payment_gateway.cgi?<% $override->agentgatewaynum %>')">(delete)</A></FONT>
398 <TD><FONT SIZE=-1><A HREF="<%$p%>edit/agent_payment_gateway.html?agentnum=<% $agent->agentnum %>">(add override)</A></FONT></TD>
403 <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
404 <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
405 % foreach my $override (
406 % qsearch('conf', { 'agentnum' => $agent->agentnum } )
412 <% $override->name %> <FONT SIZE=-1><A HREF="javascript:areyousure('delete this configuration override', '<%$p%>config/config-delete.cgi?confnum=<% $override->confnum %>')">(delete)</A></FONT>
418 <TD><FONT SIZE=-1><A HREF="<%$p%>config/config-view.cgi?agentnum=<% $agent->agentnum %>">(view/add/edit overrides)</A></FONT></TD>
429 <SCRIPT TYPE="text/javascript">
430 function areyousure(what, href) {
431 if ( confirm("Are you sure you want to " + what + "?") == true )
432 window.location.href = href;
441 unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
444 if ( $cgi->param('showdisabled')
445 || !dbdef->table('agent')->column('disabled') ) {
448 %search = ( 'disabled' => '' );
451 my $conf = new FS::Conf;