dc002d96a61da3d78bd8a639ff8e711685274dc4
[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 %
101 <% include( 'elements/search.html',
102                  'title'             => "Mail forward Search Results",
103                  'name'              => 'mail forwards',
104                  'query'             => $sql_query,
105                  'count_query'       => $count_query,
106                  'redirect'          => $link,
107                  'header'            => [ '#',
108                                           'Service',
109                                           'Mail to',
110                                           'Forwards to',
111                                           FS::UI::Web::cust_header(),
112                                         ],
113                  'fields'            => [ 'svcnum',
114                                           'svc',
115                                           $format_src,
116                                           $format_dst,
117                                           \&FS::UI::Web::cust_fields,
118                                         ],
119                  'links'             => [ $link,
120                                           $link,
121                                           $link_src,
122                                           $link_dst,
123                                           ( map { $link_cust }
124                                                 FS::UI::Web::cust_header()
125                                           ),
126                                         ],
127              )
128 %>