large package display in customer/package search, #13364
[freeside.git] / httemplate / search / cust_svc.html
index 1ab5ed1..9cf4bbd 100644 (file)
@@ -1,11 +1,11 @@
-<% include( 'elements/search.html',
-              'title'       => 'Service search results',
-             'name'        => 'services',
+<& elements/search.html,
+          'title'       => emt('Service search results'),
+             'name'        => emt('services'),
              'query'       => $sql_query,
              'count_query' => $count_query,
              'redirect'    => $link,
-             'header'      => [ '#',
-                                'Service',
+             'header'      => [ emt('#'),
+                                emt('Service'),
                                 # package?
                                 FS::UI::Web::cust_header(),
                               ],
              'links'       => [ $link,
                                 $link,
                                 # package?
-                                ( map { $link_cust }
+                                ( map { $_ ne 'Cust. Status' ? $link_cust : '' }
                                        FS::UI::Web::cust_header()
                                  ),
                               ],
-          )
-%>
+              'align' => 'rl'. FS::UI::Web::cust_aligns(),
+              'color' => [ 
+                           '',
+                           '',
+                           FS::UI::Web::cust_colors(),
+                         ],
+              'style' => [ 
+                           '',
+                           '',
+                           FS::UI::Web::cust_styles(),
+                         ],
+&>
 <%init>
 
+die "access denied"
+  unless $FS::CurrentUser::CurrentUser->access_right('List services');
+
 my $addl_from = ' LEFT JOIN part_svc  USING ( svcpart ) '.
                 ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
                 ' LEFT JOIN cust_main USING ( custnum ) ';
@@ -39,6 +52,7 @@ my $orderby = 'ORDER BY svcnum'; #has to be ordered by something
 if ( length( $cgi->param('search_svc') ) ) {
 
   my $string = $cgi->param('search_svc');
+  $string =~ s/(^\s+|\s+$)//; #trim leading & trailing whitespace
 
   # implement fuzzy searching in subclasses too at some point?
   # service searching maybe shouldn't be fuzzy...
@@ -61,6 +75,7 @@ if ( length( $cgi->param('search_svc') ) ) {
 
   $cgi->param('svcdb') =~ /^(svc_\w+)$/ or die "unknown svcdb";
   push @extra_sql, "svcdb = '$1'";
+  $addl_from .= " LEFT JOIN $1 USING ( svcnum ) ";
 
   push @extra_sql, 'pkgnum IS NULL'
     if $cgi->param('magic') eq 'unlinked';
@@ -75,11 +90,13 @@ if ( length( $cgi->param('search_svc') ) ) {
   push @extra_sql, "svcpart = $1";
 
 } else {
-  eidiot("No search term specified");
+  errorpage("No search term specified");
 }
 
 #here is the agent virtualization
-push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql;
+push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql( 
+                   'null_right' => 'View/link unlinked services'
+                 );
 
 my $extra_sql = ' WHERE '. join(' AND ', @extra_sql );
 
@@ -93,14 +110,15 @@ my $sql_query = {
   'table'      => 'cust_svc',
   'addl_from'  => $addl_from,
   'hashref'    => {},
-  'extra_sql'  => "$extra_sql $orderby",
+  'extra_sql'  => $extra_sql,
+  'order_by'   => $orderby,
 };
 
 my $count_query = "SELECT COUNT(*) FROM cust_svc $addl_from $extra_sql";
 
 my $link = sub {
   my $cust_svc = shift;
-  my $url = FS::UI::Web::svc_url(
+  my $url = svc_url(
     'm'        => $m,
     'action'   => 'view',
     #'part_svc' => $cust_svc->part_svc,