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