8da37a2dcff7eaa8222c0f2bf43184f408b1e5c1
[freeside.git] / httemplate / browse / agent.cgi
1 <% include("/elements/header.html",'Agent Listing', menubar(
2   'Agent Types' => $p. 'browse/agent_type.cgi',
3 #  'Add new agent' => '../edit/agent.cgi'
4 )) %>
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') ) { 
9
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> )'; }
15   %>
16 % } 
17
18
19 <% include('/elements/table-grid.html') %>
20 % my $bgcolor1 = '#eeeeee';
21 %   my $bgcolor2 = '#ffffff';
22 %   my $bgcolor = '';
23
24 <TR>
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>
36
37 % if ( $conf->config('ticket_system') ) { 
38     <TH CLASS="grid" BGCOLOR="#cccccc">Ticketing</TH>
39 % } 
40
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>
43 </TR>
44
45 %#        <TH><FONT SIZE=-1>Agent #</FONT></TH>
46 %#        <TH>Agent</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 ) ) {
51 %
52 %  my $cust_main_link = $p. 'search/cust_main.cgi?agentnum_on=1&'.
53 %                       'agentnum='. $agent->agentnum;
54 %
55 %  my $cust_pkg_link = $p. 'search/cust_pkg.cgi?agentnum='. $agent->agentnum;
56 %  
57 %  if ( $bgcolor eq $bgcolor1 ) {
58 %    $bgcolor = $bgcolor2;
59 %  } else {
60 %    $bgcolor = $bgcolor1;
61 %  }
62
63       <TR>
64
65         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
66           <A HREF="<%$p%>edit/agent.cgi?<% $agent->agentnum %>"><% $agent->agentnum %></A>
67         </TD>
68
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>'
73             %>
74           </TD>
75 %       } 
76
77         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
78           <A HREF="<%$p%>edit/agent.cgi?<% $agent->agentnum %>"><% $agent->agent %></A>
79         </TD>
80
81         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
82           <A HREF="<%$p%>edit/agent_type.cgi?<% $agent->typenum %>"><% $agent->agent_type->atype %></A>
83         </TD>
84
85         <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
86 %         if ( $agent->agent_custnum ) {
87             <& /elements/small_custview.html,
88                  $agent->agent_custnum,
89                  scalar($conf->config('countrydefault')),
90                  1, #show balance
91                  $p.'view/cust_main.cgi',
92             &>
93 %         }
94         </TD>
95
96         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
97
98           <TABLE>
99
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 : ''
105 %                                   );
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};
110
111               <TR>
112                 <TD><% $agent_pkg_class->commission_percent || 0 %>%</TD>
113                 <TD><% $pkg_class ? $pkg_class->classname : mt('(no package class)') |h %>
114                 </TD>
115               </TR>
116
117 %           }
118
119           </TABLE>
120
121         </TD>
122
123         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
124 %         foreach my $access_group (
125 %           map $_->access_group,
126 %               qsearch('access_groupagent', { 'agentnum' => $agent->agentnum })
127 %         ) {
128             <A HREF="<%$p%>edit/access_group.html?<% $access_group->groupnum %>"><% $access_group->groupname |h %><BR>
129 %         }
130         </TD>
131
132         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
133           <% $agent->invoice_template || '(Default)' %>
134         </TD>
135
136         <TD CLASS="inv" BGCOLOR="<% $bgcolor %>" VALIGN="bottom">
137           <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
138
139             <TR>
140               <TH ALIGN="right" WIDTH="40%">
141                 <FONT COLOR="#7e0079">
142                   <% my $num_prospect = $agent->num_prospect_cust_main %>&nbsp;
143                 </FONT>
144               </TH>
145
146               <TD>
147 % if ( $num_prospect ) { 
148
149                   <A HREF="<% $cust_main_link %>&prospect=1">
150 % } 
151 prospects
152 % if ($num_prospect ) { 
153 </A>
154 % } 
155
156               <TD>
157             </TR>
158
159             <TR>
160               <TH ALIGN="right" WIDTH="40%">
161                 <FONT COLOR="#0000CC">
162                   <% my $num_inactive = $agent->num_inactive_cust_main %>&nbsp;
163                 </FONT>
164               </TH>
165
166               <TD>
167 % if ( $num_inactive ) { 
168
169                   <A HREF="<% $cust_main_link %>&inactive=1">
170 % } 
171 inactive
172 % if ( $num_inactive ) { 
173 </A>
174 % } 
175
176               </TD>
177             </TR>
178
179             <TR>
180               <TH ALIGN="right" WIDTH="40%">
181                 <FONT COLOR="#009999">
182                   <% my $num_ordered = $agent->num_ordered_cust_main %>&nbsp;
183                 </FONT>
184               </TH>
185
186               <TD>
187 % if ( $num_ordered ) { 
188
189                   <A HREF="<% $cust_main_link %>&ordered=1">
190 % } 
191 ordered
192 % if ($num_ordered ) { 
193 </A>
194 % } 
195
196               <TD>
197             </TR>
198
199             <TR>
200               <TH ALIGN="right" WIDTH="40%">
201                 <FONT COLOR="#00CC00">
202                   <% my $num_active = $agent->num_active_cust_main %>&nbsp;
203                 </FONT>
204               </TH>
205
206               <TD>
207 % if ( $num_active ) { 
208
209                   <A HREF="<% $cust_main_link %>&active=1">
210 % } 
211 active
212 % if ( $num_active ) { 
213 </A>
214 % } 
215
216               </TD>
217             </TR>
218
219             <TR>
220               <TH ALIGN="right" WIDTH="40%">
221                 <FONT COLOR="#FF9900">
222                   <% my $num_susp = $agent->num_susp_cust_main %>&nbsp;
223                 </FONT>
224               </TH>
225
226               <TD>
227 % if ( $num_susp ) { 
228
229                   <A HREF="<% $cust_main_link %>&suspended=1">
230 % } 
231 suspended
232 % if ( $num_susp ) { 
233 </A>
234 % } 
235
236               </TD>
237             </TR>
238
239             <TR>
240               <TH ALIGN="right" WIDTH="40%">
241                 <FONT COLOR="#FF0000">
242                   <% my $num_cancel = $agent->num_cancel_cust_main %>&nbsp;
243                 </FONT>
244               </TH>
245
246               <TD>
247 % if ( $num_cancel ) { 
248
249                   <A HREF="<% $cust_main_link %>&showcancelledcustomers=1&cancelled=1">
250 % } 
251 cancelled
252 % if ( $num_cancel ) { 
253 </A>
254 % } 
255
256               </TD>
257             </TR>
258
259           </TABLE>
260         </TD>
261
262         <TD CLASS="inv" BGCOLOR="<% $bgcolor %>" VALIGN="bottom">
263           <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
264
265             <TR>
266               <TH ALIGN="right" WIDTH="40%">
267                 <FONT COLOR="#0000CC">
268                   <% my $num_inactive_pkg = $agent->num_inactive_cust_pkg %>&nbsp;
269                 </FONT>
270               </TH>
271
272               <TD>
273 % if ( $num_inactive_pkg ) { 
274
275                   <A HREF="<% $cust_pkg_link %>&magic=inactive">
276 % } 
277 inactive
278 % if ( $num_inactive_pkg ) { 
279 </A>
280 % } 
281
282               </TD>
283             </TR>
284
285             <!--ordered-->
286             <TR>
287               <TD>&nbsp;</TD>
288             </TR>
289
290             <TR>
291               <TH ALIGN="right" WIDTH="40%">
292                 <FONT COLOR="#00CC00">
293                   <% my $num_active_pkg = $agent->num_active_cust_pkg %>&nbsp;
294                 </FONT>
295               </TH>
296
297               <TD>
298 % if ( $num_active_pkg ) { 
299
300                   <A HREF="<% $cust_pkg_link %>&magic=active">
301 % } 
302 active
303 % if ( $num_active_pkg ) { 
304 </A>
305 % } 
306
307               </TD>
308             </TR>
309
310             <TR>
311               <TH ALIGN="right" WIDTH="40%">
312                 <FONT COLOR="#FF9900">
313                   <% my $num_susp_pkg = $agent->num_susp_cust_pkg %>&nbsp;
314                 </FONT>
315
316               </TH>
317               <TD>
318 % if ( $num_susp_pkg ) { 
319
320                   <A HREF="<% $cust_pkg_link %>&magic=suspended">
321 % } 
322 suspended
323 % if ( $num_susp_pkg ) { 
324 </A>
325 % } 
326
327               </TD>
328             </TR>
329             
330             <TR>
331               <TH ALIGN="right" WIDTH="40%">
332                 <FONT COLOR="#FF0000">
333                   <% my $num_cancel_pkg = $agent->num_cancel_cust_pkg %>&nbsp;
334                 </FONT>
335               </TH>
336
337               <TD>
338 % if ( $num_cancel_pkg ) { 
339
340                   <A HREF="<% $cust_pkg_link %>&magic=cancelled">
341 % } 
342 cancelled
343 % if ( $num_cancel_pkg ) { 
344 </A>
345 % } 
346
347               </TD>
348             </TR>
349
350           </TABLE>
351         </TD>
352
353         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
354           <A HREF="<% $p %>graph/report_cust_pkg.html?agentnum=<% $agent->agentnum %>">Package&nbsp;Churn</A>
355           <BR><A HREF="<% $p %>search/report_cust_pay.html?agentnum=<% $agent->agentnum %>">Payments</A>
356           <BR><A HREF="<% $p %>search/report_cust_credit.html?agentnum=<% $agent->agentnum %>">Credits</A>
357           <BR><A HREF="<% $p %>search/report_receivables.cgi?agentnum=<% $agent->agentnum %>">A/R&nbsp;Aging</A>
358           <!--<BR><A HREF="<% $p %>search/money_time.cgi?agentnum=<% $agent->agentnum %>">Sales/Credits/Receipts</A>-->
359
360         </TD>
361
362         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
363           <% my $num_reg_code = $agent->num_reg_code %>
364 % if ( $num_reg_code ) { 
365
366             <A HREF="<%$p%>search/reg_code.html?agentnum=<% $agent->agentnum %>">
367 % } 
368 Unused
369 % if ( $num_reg_code ) { 
370 </A>
371 % } 
372
373           <BR><A HREF="<%$p%>edit/reg_code.cgi?agentnum=<% $agent->agentnum %>">Generate codes</A>
374         </TD>
375
376         <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
377           <% my $num_prepay_credit = $agent->num_prepay_credit %>
378 % if ( $num_prepay_credit ) { 
379
380             <A HREF="<%$p%>search/prepay_credit.html?agentnum=<% $agent->agentnum %>">
381 % } 
382 Unused
383 % if ( $num_prepay_credit ) { 
384 </A>
385 % } 
386
387           <BR><A HREF="<%$p%>edit/prepay_credit.cgi?agentnum=<% $agent->agentnum %>">Generate cards</A>
388         </TD>
389 % if ( $conf->config('ticket_system') ) { 
390
391
392           <TD CLASS="grid" BGCOLOR="<% $bgcolor %>">
393 % if ( $agent->ticketing_queueid ) { 
394
395               Queue: <% $agent->ticketing_queueid %>: <% $agent->ticketing_queue %><BR>
396 % } 
397
398           </TD>
399 % } 
400
401
402         <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
403           <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
404 % foreach my $override (
405 %                 # sort { }  want taxclass-full stuff first?  and default cards (empty cardtype)
406 %                 qsearch('agent_payment_gateway', { 'agentnum' => $agent->agentnum } )
407 %               ) {
408 %            
409
410               <TR>
411                 <TD> 
412                   <% $override->cardtype || 'Default' %> to <% $override->payment_gateway->gateway_module %> (<% $override->payment_gateway->gateway_username %>)
413                   <% $override->taxclass
414                         ? ' for '. $override->taxclass. ' only'
415                         : ''
416                   %>
417                   <FONT SIZE=-1><A HREF="javascript:areyousure('delete this payment gateway override', '<%$p%>misc/delete-agent_payment_gateway.cgi?<% $override->agentgatewaynum %>')">(delete)</A></FONT>
418                 </TD>
419               </TR>
420 % } 
421
422             <TR>
423               <TD><FONT SIZE=-1><A HREF="<%$p%>edit/agent_payment_gateway.html?agentnum=<% $agent->agentnum %>">(add override)</A></FONT></TD>
424             </TR>
425           </TABLE>
426         </TD>
427
428         <TD CLASS="inv" BGCOLOR="<% $bgcolor %>">
429           <TABLE CLASS="inv" CELLSPACING=0 CELLPADDING=0>
430 % foreach my $override (
431 %                 qsearch('conf', { 'agentnum' => $agent->agentnum } )
432 %               ) {
433 %            
434
435               <TR>
436                 <TD> 
437                   <% $override->name %>&nbsp;<FONT SIZE=-1><A HREF="javascript:areyousure('delete this configuration override', '<%$p%>config/config-delete.cgi?confnum=<% $override->confnum %>')">(delete)</A></FONT>
438                 </TD>
439               </TR>
440 % } 
441
442             <TR>
443               <TD><FONT SIZE=-1><A HREF="<%$p%>config/config-view.cgi?agentnum=<% $agent->agentnum %>">(view/add/edit overrides)</A></FONT></TD>
444             </TR>
445           </TABLE>
446         </TD>
447
448       </TR>
449 % } 
450
451
452     </TABLE>
453
454 <SCRIPT TYPE="text/javascript">
455   function areyousure(what, href) {
456     if ( confirm("Are you sure you want to " + what + "?") == true )
457       window.location.href = href;
458   }
459 </SCRIPT>
460
461   </BODY>
462 </HTML>
463 <%init>
464
465 die "access denied"
466   unless $FS::CurrentUser::CurrentUser->access_right('Configuration');
467
468 my %search;
469 if ( $cgi->param('showdisabled')
470      || !dbdef->table('agent')->column('disabled') ) {
471   %search = ();
472 } else {
473   %search = ( 'disabled' => '' );
474 }
475
476 my $conf = new FS::Conf;
477
478 </%init>