odds and ends
[freeside.git] / httemplate / search / svc_forward.cgi
1 <%
2
3 my $conf = new FS::Conf;
4
5 my($query)=$cgi->keywords;
6 $query ||= ''; #to avoid use of unitialized value errors
7
8 my $orderby;
9
10 my @extra_sql = ();
11 if ( $query =~ /^UN_(.*)$/ ) { #UN searches need to be acl'ed (and need to
12                                     #fix $agentnums_sql
13   $query = $1;
14   push @extra_sql, 'pkgnum IS NULL';
15 }
16
17 if ( $query eq 'svcnum' ) {
18   $orderby = 'ORDER BY svcnum';
19 } else {
20   eidiot('unimplemented');
21 }
22
23 my $addl_from = ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
24                 ' LEFT JOIN part_svc  USING ( svcpart ) '.
25                 ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
26                 ' LEFT JOIN cust_main USING ( custnum ) ';
27
28 #here is the agent virtualization
29 push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql;
30
31 my $extra_sql = 
32   scalar(@extra_sql)
33     ? ' WHERE '. join(' AND ', @extra_sql )
34     : '';
35
36 my $count_query = "SELECT COUNT(*) FROM svc_forward $addl_from $extra_sql";
37 my $sql_query = {
38   'table'     => 'svc_forward',
39   'hashref'   => {},
40   'select'    => join(', ',
41                    'svc_forward.*',
42                    'part_svc.svc',
43                    'cust_main.custnum',
44                    FS::UI::Web::cust_sql_fields(),
45                  ),
46   'extra_sql' => "$extra_sql $orderby",
47   'addl_from' => $addl_from,
48 };
49
50 #        <TH>Service #<BR><FONT SIZE=-1>(click to view forward)</FONT></TH>
51 #        <TH>Mail to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
52 #        <TH>Forwards to<BR><FONT SIZE=-1>(click to view account)</FONT></TH>
53
54 my $link = [ "${p}view/svc_forward.cgi?", 'svcnum' ];
55
56 my $format_src = sub {
57   my $svc_forward = shift;
58   if ( $svc_forward->srcsvc_acct ) {
59     $svc_forward->srcsvc_acct->email;
60   } else {
61     my $src = $svc_forward->src;
62     $src = "<I>(anything)</I>$src" if $src =~ /^@/;
63     $src;
64   }
65 };
66
67 my $link_src = sub {
68   my $svc_forward = shift;
69   if ( $svc_forward->srcsvc_acct ) {
70     [ "${p}view/svc_acct.cgi?", 'srcsvc' ];
71   } else {
72     '';
73   }
74 };
75
76 my $format_dst = sub {
77   my $svc_forward = shift;
78   if ( $svc_forward->dstsvc_acct ) {
79     $svc_forward->dstsvc_acct->email;
80   } else {
81     $svc_forward->dst;
82   }
83 };
84
85 my $link_dst = sub {
86   my $svc_forward = shift;
87   if ( $svc_forward->dstsvc_acct ) {
88     [ "${p}view/svc_acct.cgi?", 'dstsvc' ];
89   } else {
90     '';
91   }
92 };
93
94 #smaller false laziness w/svc_*.cgi here
95 my $link_cust = sub {
96   my $svc_x = shift;
97   $svc_x->custnum ? [ "${p}view/cust_main.cgi?", 'custnum' ] : '';
98 };
99
100 %><%= include( 'elements/search.html',
101                  'title'             => "Mail forward Search Results",
102                  'name'              => 'mail forwards',
103                  'query'             => $sql_query,
104                  'count_query'       => $count_query,
105                  'redirect'          => $link,
106                  'header'            => [ '#',
107                                           'Service',
108                                           'Mail to',
109                                           'Forwards to',
110                                           FS::UI::Web::cust_header(),
111                                         ],
112                  'fields'            => [ 'svcnum',
113                                           'svc',
114                                           $format_src,
115                                           $format_dst,
116                                           \&FS::UI::Web::cust_fields,
117                                         ],
118                  'links'             => [ $link,
119                                           $link,
120                                           $link_src,
121                                           $link_dst,
122                                           ( map { $link_cust }
123                                                 FS::UI::Web::cust_header()
124                                           ),
125                                         ],
126              )
127 %>