a68a13e398eefac78a8c9bc2bbb67ccdf6525a59
[freeside.git] / httemplate / search / svc_phone.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 = 'ORDER BY svcnum';
9 my %svc_phone = ();
10 my @extra_sql = ();
11 if ( $query eq 'svcnum' ) {
12   #$orderby = 'ORDER BY svcnum';
13 } elsif ( $query eq 'phonenum' ) {
14   $orderby = 'ORDER BY phonenum';
15 } elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
16   #$orderby = 'ORDER BY svcnum';
17   push @extra_sql, "svcpart = $1";
18 } else {
19   $cgi->param('phonenum') =~ /^([\d\- ]+)$/; 
20   ( $svc_phone{'phonenum'} = $1 ) =~ s/\D//g;
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 if ( @extra_sql ) {
33   $extra_sql = ( keys(%svc_phone) ? ' AND ' : ' WHERE ' ).
34                join(' AND ', @extra_sql );
35 }
36
37 my $count_query = "SELECT COUNT(*) FROM svc_phone $addl_from ";
38 if ( keys %svc_phone ) {
39   $count_query .= ' WHERE '.
40                     join(' AND ', map "$_ = ". dbh->quote($svc_phone{$_}),
41                                       keys %svc_phone
42                         );
43 }
44 $count_query .= $extra_sql;
45
46 my $sql_query = {
47   'table'     => 'svc_phone',
48   'hashref'   => \%svc_phone,
49   'select'    => join(', ',
50                    'svc_phone.*',
51                    'part_svc.svc',
52                     'cust_main.custnum',
53                     FS::UI::Web::cust_sql_fields(),
54                  ),
55   'extra_sql' => "$extra_sql $orderby",
56   'addl_from' => $addl_from,
57 };
58
59 my $link = [ "${p}view/svc_phone.cgi?", 'svcnum' ];
60
61 #smaller false laziness w/svc_*.cgi here
62 my $link_cust = sub {
63   my $svc_x = shift;
64   $svc_x->custnum ? [ "${p}view/cust_main.cgi?", 'custnum' ] : '';
65 };
66
67 %><%= include( 'elements/search.html',
68                  'title'             => "Phone number search results",
69                  'name'              => 'phone numbers',
70                  'query'             => $sql_query,
71                  'count_query'       => $count_query,
72                  'redirect'          => $link,
73                  'header'            => [ '#',
74                                           'Service',
75                                           'Country code',
76                                           'Phone number',
77                                           FS::UI::Web::cust_header(),
78                                         ],
79                  'fields'            => [ 'svcnum',
80                                           'svc',
81                                           'countrycode',
82                                           'phonenum',
83                                           \&FS::UI::Web::cust_fields,
84                                         ],
85                  'links'             => [ $link,
86                                           $link,
87                                           $link,
88                                           $link,
89                                           ( map { $link_cust }
90                                                 FS::UI::Web::cust_header()
91                                           ),
92                                         ],
93               )
94 %>