[freeside-commits] freeside/httemplate/search cust_main.cgi, 1.63, 1.64 cust_bill.html, 1.15, 1.16 svc_acct.cgi, 1.34, 1.35 svc_domain.cgi, 1.18, 1.19 svc_forward.cgi, 1.7, 1.8 cust_pkg.cgi, 1.36, 1.37

Ivan,,, ivan at wavetail.420.am
Sun Jun 18 19:33:54 PDT 2006


Update of /home/cvs/cvsroot/freeside/httemplate/search
In directory wavetail:/tmp/cvs-serv8904/httemplate/search

Modified Files:
	cust_main.cgi cust_bill.html svc_acct.cgi svc_domain.cgi 
	svc_forward.cgi cust_pkg.cgi 
Log Message:
agent virtualization, take one (stuff from "inactive" changeset snuck into cust_main.pm and the package reporting changeset in search/cust_pkg.cgi here too)

Index: cust_main.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/cust_main.cgi,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -d -r1.63 -r1.64
--- cust_main.cgi	15 May 2006 11:05:04 -0000	1.63
+++ cust_main.cgi	19 Jun 2006 02:33:52 -0000	1.64
@@ -117,6 +117,10 @@
 
   my $addl_qual = join(' AND ', @qual);
 
+  #here is the agent virtualization
+  $addl_qual .= ( $addl_qual ? ' AND ' : '' ).
+                $FS::CurrentUser::CurrentUser->agentnums_sql;
+
   if ( $addl_qual ) {
     $qual .= ' AND ' if $qual;
     $qual .= $addl_qual;
@@ -322,32 +326,43 @@
 
   print "<BR><BR>". $pager. include('/elements/table-grid.html'). <<END;
       <TR>
-        <TH></TH>
-        <TH>(bill) name</TH>
-        <TH>company</TH>
+        <TH CLASS="grid" BGCOLOR="#cccccc"></TH>
+        <TH CLASS="grid" BGCOLOR="#cccccc">(bill) name</TH>
+        <TH CLASS="grid" BGCOLOR="#cccccc">company</TH>
 END
 
 if ( defined dbdef->table('cust_main')->column('ship_last') ) {
   print <<END;
-      <TH>(service) name</TH>
-      <TH>company</TH>
+      <TH CLASS="grid" BGCOLOR="#cccccc">(service) name</TH>
+      <TH CLASS="grid" BGCOLOR="#cccccc">company</TH>
 END
 }
 
 foreach my $addl_header ( @addl_headers ) {
-  print "<TH>$addl_header</TH>";
+  print '<TH CLASS="grid" BGCOLOR="#cccccc">'. "$addl_header</TH>";
 }
 
 print <<END;
-        <TH>Packages</TH>
-        <TH COLSPAN=2>Services</TH>
+        <TH CLASS="grid" BGCOLOR="#cccccc">Packages</TH>
+        <TH CLASS="grid" BGCOLOR="#cccccc" COLSPAN=2>Services</TH>
       </TR>
 END
 
+  my $bgcolor1 = '#eeeeee';
+  my $bgcolor2 = '#ffffff';
+  my $bgcolor;
+
   my(%saw,$cust_main);
   foreach $cust_main (
     sort $sortby grep(!$saw{$_->custnum}++, @cust_main)
   ) {
+
+    if ( $bgcolor eq $bgcolor1 ) {
+      $bgcolor = $bgcolor2;
+    } else {
+      $bgcolor = $bgcolor1;
+    }
+
     my($custnum,$last,$first,$company)=(
       $cust_main->custnum,
       $cust_main->getfield('last'),
@@ -377,9 +392,9 @@
     %>
 
     <TR>
-      <TD ROWSPAN=<%= $rowspan || 1 %>><A HREF="<%= $view %>"><FONT SIZE=-1><%= $custnum %></FONT></A></TD>
-      <TD ROWSPAN=<%= $rowspan || 1 %>><A HREF="<%= $view %>"><FONT SIZE=-1><%= "$last, $first" %></FONT></A></TD>
-      <TD ROWSPAN=<%= $rowspan || 1 %>><%= $pcompany %></TD>
+      <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>" ROWSPAN=<%= $rowspan || 1 %>><A HREF="<%= $view %>"><FONT SIZE=-1><%= $custnum %></FONT></A></TD>
+      <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>" ROWSPAN=<%= $rowspan || 1 %>><A HREF="<%= $view %>"><FONT SIZE=-1><%= "$last, $first" %></FONT></A></TD>
+      <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>" ROWSPAN=<%= $rowspan || 1 %>><%= $pcompany %></TD>
 
     <%
     if ( defined dbdef->table('cust_main')->column('ship_last') ) {
@@ -393,14 +408,14 @@
         : '<FONT SIZE=-1>&nbsp;</FONT>';
       %>
 
-      <TD ROWSPAN=<%= $rowspan || 1 %>><A HREF="<%= $view %>"><FONT SIZE=-1><%= "$ship_last, $ship_first" %></FONT></A></TD>
-      <TD ROWSPAN=<%= $rowspan || 1 %>><%= $pship_company %></A></TD>
+      <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>" ROWSPAN=<%= $rowspan || 1 %>><A HREF="<%= $view %>"><FONT SIZE=-1><%= "$ship_last, $ship_first" %></FONT></A></TD>
+      <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>" ROWSPAN=<%= $rowspan || 1 %>><%= $pship_company %></A></TD>
 
     <% }
 
     foreach my $addl_col ( @addl_cols ) { %>
 
-      <TD ROWSPAN=<%= $rowspan || 1 %> ALIGN=right><FONT SIZE=-1>
+      <TD CLASS="grid" BGCOLOR="<%= $bgcolor %>" ROWSPAN=<%= $rowspan || 1 %> ALIGN=right><FONT SIZE=-1>
 
       <% if ( $addl_col eq 'tickets' ) {
         if ( @custom_priorities ) {
@@ -457,14 +472,14 @@
       #my(@cust_svc) = qsearch( 'cust_svc', { 'pkgnum' => $_->pkgnum } );
       my $rowspan = scalar(@cust_svc) || 1;
 
-      print $n1, qq!<TD ROWSPAN=$rowspan><A HREF="$pkgview"><FONT SIZE=-1>$pkg - $comment</FONT></A></TD>!;
+      print $n1, qq!<TD CLASS="grid" BGCOLOR="$bgcolor"  ROWSPAN=$rowspan><A HREF="$pkgview"><FONT SIZE=-1>$pkg - $comment</FONT></A></TD>!;
       my($n2)='';
       foreach my $cust_svc ( @cust_svc ) {
          my($label, $value, $svcdb) = $cust_svc->label;
          my($svcnum) = $cust_svc->svcnum;
          my($sview) = $p.'view';
-         print $n2,qq!<TD><A HREF="$sview/$svcdb.cgi?$svcnum"><FONT SIZE=-1>$label</FONT></A></TD>!,
-               qq!<TD><A HREF="$sview/$svcdb.cgi?$svcnum"><FONT SIZE=-1>$value</FONT></A></TD>!;
+         print $n2,qq!<TD CLASS="grid" BGCOLOR="$bgcolor" ><A HREF="$sview/$svcdb.cgi?$svcnum"><FONT SIZE=-1>$label</FONT></A></TD>!,
+               qq!<TD CLASS="grid" BGCOLOR="$bgcolor" ><A HREF="$sview/$svcdb.cgi?$svcnum"><FONT SIZE=-1>$value</FONT></A></TD>!;
          $n2="</TR><TR>";
       }
       #print qq!</TR><TR>\n!;

Index: svc_domain.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/svc_domain.cgi,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -d -r1.18 -r1.19
--- svc_domain.cgi	14 May 2006 16:47:30 -0000	1.18
+++ svc_domain.cgi	19 Jun 2006 02:33:52 -0000	1.19
@@ -6,38 +6,50 @@
 $query ||= ''; #to avoid use of unitialized value errors
 
 my $orderby = 'ORDER BY svcnum';
-my $join = '';
 my %svc_domain = ();
-my $extra_sql = '';
+my @extra_sql = ();
 if ( $query eq 'svcnum' ) {
   #$orderby = 'ORDER BY svcnum';
 } elsif ( $query eq 'domain' ) {
   $orderby = 'ORDER BY domain';
-} elsif ( $query eq 'UN_svcnum' ) {
+} elsif ( $query eq 'UN_svcnum' ) { #UN searches need to be acl'ed (and need to
+                                    #fix $agentnums_sql
   #$orderby = 'ORDER BY svcnum';
-  $join = 'LEFT JOIN cust_svc USING ( svcnum )';
-  $extra_sql = ' WHERE pkgnum IS NULL';
-} elsif ( $query eq 'UN_domain' ) {
+  push @extra_sql, 'pkgnum IS NULL';
+} elsif ( $query eq 'UN_domain' ) { #UN searches need to be acl'ed (and need to
+                                    #fix $agentnums_sql
   $orderby = 'ORDER BY domain';
-  $join = 'LEFT JOIN cust_svc USING ( svcnum )';
-  $extra_sql = ' WHERE pkgnum IS NULL';
+  push @extra_sql, 'pkgnum IS NULL';
 } elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
   #$orderby = 'ORDER BY svcnum';
-  $join = 'LEFT JOIN cust_svc USING ( svcnum )';
-  $extra_sql = " WHERE svcpart = $1";
+  push @extra_sql, "svcpart = $1";
 } else {
   $cgi->param('domain') =~ /^([\w\-\.]+)$/; 
-  $join = '';
   $svc_domain{'domain'} = $1;
 }
 
-my $count_query = "SELECT COUNT(*) FROM svc_domain $join $extra_sql";
+my $addl_from = ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
+                ' LEFT JOIN part_svc  USING ( svcpart ) '.
+                ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
+                ' LEFT JOIN cust_main USING ( custnum ) ';
+
+#here is the agent virtualization
+push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
+my $extra_sql = '';
+if ( @extra_sql ) {
+  $extra_sql = ( keys(%svc_domain) ? ' AND ' : ' WHERE ' ).
+               join(' AND ', @extra_sql );
+}
+
+my $count_query = "SELECT COUNT(*) FROM svc_domain $addl_from ";
 if ( keys %svc_domain ) {
   $count_query .= ' WHERE '.
                     join(' AND ', map "$_ = ". dbh->quote($svc_domain{$_}),
                                       keys %svc_domain
                         );
 }
+$count_query .= $extra_sql;
 
 my $sql_query = {
   'table'     => 'svc_domain',
@@ -48,9 +60,7 @@
                     FS::UI::Web::cust_sql_fields(),
                  ),
   'extra_sql' => "$extra_sql $orderby",
-  'addl_from' => 'LEFT JOIN cust_svc  USING ( svcnum  ) '.
-                 'LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
-                 'LEFT JOIN cust_main USING ( custnum ) ',
+  'addl_from' => $addl_from,
 };
 
 my $link = [ "${p}view/svc_domain.cgi?", 'svcnum' ];
@@ -68,15 +78,18 @@
                  'count_query'       => $count_query,
                  'redirect'          => $link,
                  'header'            => [ '#',
+                                          'Service',
                                           'Domain',
                                           FS::UI::Web::cust_header(),
                                         ],
                  'fields'            => [ 'svcnum',
+                                          'svc',
                                           'domain',
                                           \&FS::UI::Web::cust_fields,
                                         ],
                  'links'             => [ $link,
                                           $link,
+                                          $link,
                                           ( map { $link_cust }
                                                 FS::UI::Web::cust_header()
                                           ),

Index: svc_acct.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/svc_acct.cgi,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -d -r1.34 -r1.35
--- svc_acct.cgi	14 Jul 2005 11:31:35 -0000	1.34
+++ svc_acct.cgi	19 Jun 2006 02:33:52 -0000	1.35
@@ -5,11 +5,9 @@
 my($query)=$cgi->keywords;
 $query ||= ''; #to avoid use of unitialized value errors
 
-my $cjoin = '';
 my @extra_sql = ();
 if ( $query =~ /^UN_(.*)$/ ) {
   $query = $1;
-  $cjoin = 'LEFT JOIN cust_svc USING ( svcnum )';
   push @extra_sql, 'pkgnum IS NULL';
 }
 
@@ -24,7 +22,6 @@
   push @extra_sql, "popnum = $1";
   $orderby = "ORDER BY LOWER(username)";
 } elsif ( $cgi->param('svcpart') =~ /^(\d+)$/ ) {
-  $cjoin ||= 'LEFT JOIN cust_svc USING ( svcnum )';
   push @extra_sql, "svcpart = $1";
   $orderby = "ORDER BY uid";
   #$orderby = "ORDER BY svcnum";
@@ -72,12 +69,20 @@
 
 }
 
+my $addl_from = ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
+                ' LEFT JOIN part_svc  USING ( svcpart ) '.
+                ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
+                ' LEFT JOIN cust_main USING ( custnum ) ';
+
+#here is the agent virtualization
+push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
 my $extra_sql = 
   scalar(@extra_sql)
     ? ' WHERE '. join(' AND ', @extra_sql )
     : '';
 
-my $count_query = "SELECT COUNT(*) FROM svc_acct $cjoin $extra_sql";
+my $count_query = "SELECT COUNT(*) FROM svc_acct $addl_from $extra_sql";
 #if ( keys %svc_acct ) {
 #  $count_query .= ' WHERE '.
 #                    join(' AND ', map "$_ = ". dbh->quote($svc_acct{$_}),
@@ -94,10 +99,7 @@
                     FS::UI::Web::cust_sql_fields(),
                   ),
   'extra_sql' => "$extra_sql $orderby",
-  'addl_from' => ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
-                 ' LEFT JOIN part_svc  USING ( svcpart ) '.
-                 ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
-                 ' LEFT JOIN cust_main USING ( custnum ) ',
+  'addl_from' => $addl_from,
 };
 
 my $link      = [ "${p}view/svc_acct.cgi?",   'svcnum'  ];
@@ -117,21 +119,21 @@
                  'count_query' => $count_query,
                  'redirect'    => $link,
                  'header'      => [ '#',
+                                    'Service',
                                     'Account',
                                     'UID',
-                                    'Service',
                                     FS::UI::Web::cust_header(),
                                   ],
                  'fields'      => [ 'svcnum',
+                                    'svc',
                                     'email',
                                     'uid',
-                                    'svc',
                                     \&FS::UI::Web::cust_fields,
                                   ],
                  'links'       => [ $link,
                                     $link,
                                     $link,
-                                    '',
+                                    $link,
                                     ( map { $link_cust }
                                           FS::UI::Web::cust_header()
                                     ),

Index: cust_bill.html
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/cust_bill.html,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- cust_bill.html	14 Jul 2005 11:18:06 -0000	1.15
+++ cust_bill.html	19 Jun 2006 02:33:52 -0000	1.16
@@ -1,4 +1,9 @@
 <%
+
+   my $join_cust_main = 'LEFT JOIN cust_main USING ( custnum )';
+   #here is the agent virtualization
+   my $agentnums_sql = $FS::CurrentUser::CurrentUser->agentnums_sql;
+
    my( $count_query, $sql_query );
    my( $count_addl ) = ( '' );
    my( $distinct ) = ( '' );
@@ -6,11 +11,15 @@
    my($agentnum) = ( '' );
    my($open, $days) = ( '', '' );
    if ( $cgi->param('invnum') =~ /^\s*(FS-)?(\d+)\s*$/ ) {
-     $count_query = "SELECT COUNT(*) FROM cust_bill WHERE invnum = $2";
+     $count_query =
+       "SELECT COUNT(*) FROM cust_bill $join_cust_main".
+       "  WHERE invnum = $2 AND $agentnums_sql"; #agent virtualization
      $sql_query = {
        'table'     => 'cust_bill',
+       'addl_from' => $join_cust_main,
        'hashref'   => { 'invnum' => $2 },
        #'select'    => '*',
+       'extra_sql' => " AND $agentnums_sql", #agent virtualization
      };
    } else {
    #if ( $cgi->param('begin') || $cgi->param('end')
@@ -68,10 +77,10 @@
        push @where, "cust_bill._date < ". (time-86400*$days) if $days;
      }
 
+     #here is the agent virtualization
+     push @where, $agentnums_sql;
      my $extra_sql = scalar(@where) ? 'WHERE '. join(' AND ', @where) : '';
 
-     my $addl_from = 'left join cust_main using ( custnum )';
-
      if ( $cgi->param('newest_percust') ) {
        $distinct = 'DISTINCT ON ( cust_bill.custnum )';
        $orderby = 'ORDER BY cust_bill.custnum ASC, cust_bill._date DESC';
@@ -85,11 +94,11 @@
                        '$%.2f total outstanding balance',
                      ];
      }
-     $count_query .=  " FROM cust_bill $addl_from $extra_sql";
+     $count_query .=  " FROM cust_bill $join_cust_main $extra_sql";
    
      $sql_query = {
        'table'     => 'cust_bill',
-       'addl_from' => $addl_from,
+       'addl_from' => $join_cust_main,
        'hashref'   => {},
        'select'    => "$distinct ". join(', ',
                         'cust_bill.*',

Index: cust_pkg.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/cust_pkg.cgi,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -d -r1.36 -r1.37
--- cust_pkg.cgi	22 Apr 2006 00:58:39 -0000	1.36
+++ cust_pkg.cgi	19 Jun 2006 02:33:52 -0000	1.37
@@ -1,19 +1,80 @@
 <%
 
-my %part_pkg = map { $_->pkgpart => $_ } qsearch('part_pkg', {});
+# my %part_pkg = map { $_->pkgpart => $_ } qsearch('part_pkg', {});
 
 my($query) = $cgi->keywords;
 
-my $orderby;
-my @where;
-my $cjoin = '';
+my @where = ();
+
+##
+# parse agent
+##
 
 if ( $cgi->param('agentnum') =~ /^(\d+)$/ and $1 ) {
-  $cjoin = "LEFT JOIN cust_main USING ( custnum )";
   push @where,
     "agentnum = $1";
 }
 
+##
+# parse status
+##
+
+if (    $cgi->param('magic')  eq 'active'
+     || $cgi->param('status') eq 'active' ) {
+
+  push @where, FS::cust_pkg->active_sql();
+
+} elsif (    $cgi->param('magic')  eq 'suspended'
+          || $cgi->param('status') eq 'suspended'  ) {
+
+  push @where, FS::cust_pkg->suspended_sql();
+
+} elsif (    $cgi->param('magic')  =~ /^cancell?ed$/
+          || $cgi->param('status') =~ /^cancell?ed$/ ) {
+
+  push @where, FS::cust_pkg->cancelled_sql();
+
+} elsif ( $cgi->param('status') =~ /^(one-time charge|inactive)$/ ) {
+
+  push @where, FS::cust_pkg->inactive_sql();
+
+}
+
+###
+# parse package class
+###
+
+#false lazinessish w/graph/cust_bill_pkg.cgi
+my $classnum = 0;
+my @pkg_class = ();
+if ( $cgi->param('classnum') =~ /^(\d*)$/ ) {
+  $classnum = $1;
+  if ( $classnum ) { #a specific class
+    push @where, "classnum = $classnum";
+
+    #@pkg_class = ( qsearchs('pkg_class', { 'classnum' => $classnum } ) );
+    #die "classnum $classnum not found!" unless $pkg_class[0];
+    #$title .= $pkg_class[0]->classname.' ';
+
+  } elsif ( $classnum eq '' ) { #the empty class
+
+    push @where, "classnum IS NULL";
+    #$title .= 'Empty class ';
+    #@pkg_class = ( '(empty class)' );
+  } elsif ( $classnum eq '0' ) {
+    #@pkg_class = qsearch('pkg_class', {} ); # { 'disabled' => '' } );
+    #push @pkg_class, '(empty class)';
+  } else {
+    die "illegal classnum";
+  }
+}
+#eslaf
+
+###
+# parse magic, legacy, etc.
+###
+
+my $orderby;
 if ( $cgi->param('magic') && $cgi->param('magic') eq 'bill' ) {
   $orderby = 'ORDER BY bill';
 
@@ -23,7 +84,8 @@
     #"bill <= $ending",
     "CASE WHEN bill IS NULL THEN 0 ELSE bill END >= $beginning ",
     "CASE WHEN bill IS NULL THEN 0 ELSE bill END <= $ending",
-    '( cancel IS NULL OR cancel = 0 )';
+    #'( cancel IS NULL OR cancel = 0 )'
+  ;
 
 } else {
 
@@ -33,30 +95,6 @@
 
     $orderby = 'ORDER BY pkgnum';
 
-    if ( $cgi->param('magic') eq 'active' ) {
-
-      #push @where,
-      #  '( susp IS NULL OR susp = 0 )',
-      #  '( cancel IS NULL OR cancel = 0)';
-      push @where, FS::cust_pkg->active_sql();
-
-    } elsif ( $cgi->param('magic') eq 'suspended' ) {
-
-      push @where,
-        'susp IS NOT NULL',
-        'susp != 0',
-        '( cancel IS NULL OR cancel = 0)';
-
-    } elsif ( $cgi->param('magic') =~ /^cancell?ed$/ ) {
-
-      push @where,
-        'cancel IS NOT NULL',
-        'cancel != 0';
-
-    } else {
-      die "guru meditation #420";
-    }
-
     if ( $cgi->param('pkgpart') =~ /^(\d+)$/ ) {
       push @where, "pkgpart = $1";
     }
@@ -84,21 +122,35 @@
 
 }
 
+##
+# setup queries, links, subs, etc. for the search
+##
+
+# here is the agent virtualization
+push @where, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
 my $extra_sql = scalar(@where) ? ' WHERE '. join(' AND ', @where) : '';
 
-my $count_query = "SELECT COUNT(*) FROM cust_pkg $cjoin $extra_sql";
+my $addl_from = 'LEFT JOIN cust_main USING ( custnum  ) '.
+                'LEFT JOIN part_pkg  USING ( pkgpart  ) '.
+                'LEFT JOIN pkg_class USING ( classnum ) ';
+
+my $count_query = "SELECT COUNT(*) FROM cust_pkg $addl_from $extra_sql";
 
 my $sql_query = {
   'table'     => 'cust_pkg',
   'hashref'   => {},
   'select'    => join(', ',
                             'cust_pkg.*',
+                            ( map "part_pkg.$_", qw( pkg freq ) ),
+                            'pkg_class.classname',
                             'cust_main.custnum as cust_main_custnum',
-                            FS::UI::Web::cust_sql_fields(),
+                            FS::UI::Web::cust_sql_fields(
+                              $cgi->param('cust_fields')
+                            ),
                  ),
   'extra_sql' => "$extra_sql $orderby",
-  'addl_from' => ' LEFT JOIN cust_main USING ( custnum ) ',
-                 #' LEFT JOIN part_pkg  USING ( pkgpart ) '
+  'addl_from' => $addl_from,
 };
 
 my $link = sub {
@@ -138,6 +190,10 @@
    };
 }
 
+###
+# and finally, include the search template
+### 
+
 %><%=  include( 'elements/search.html',
                   'title'       => 'Package Search Results', 
                   'name'        => 'packages',
@@ -146,6 +202,7 @@
                   #'redirect'    => $link,
                   'header'      => [ '#',
                                      'Package',
+                                     'Class',
                                      'Status',
                                      'Freq.',
                                      'Setup',
@@ -154,18 +211,25 @@
                                      'Susp.',
                                      'Expire',
                                      'Cancel',
-                                     FS::UI::Web::cust_header(),
+                                     FS::UI::Web::cust_header(
+                                       $cgi->param('cust_fields')
+                                     ),
                                      'Services',
                                    ],
                   'fields'      => [
                     'pkgnum',
-                    sub { my $part_pkg = $part_pkg{shift->pkgpart};
-                          $part_pkg->pkg; # ' - '. $part_pkg->comment;
+                    sub { #my $part_pkg = $part_pkg{shift->pkgpart};
+                          #$part_pkg->pkg; # ' - '. $part_pkg->comment;
+                          $_[0]->pkg; # ' - '. $_[0]->comment;
                         },
+                    'classname',
                     sub { ucfirst(shift->status); },
                     sub { #shift->part_pkg->freq_pretty;
-                          my $part_pkg = $part_pkg{shift->pkgpart};
-                          $part_pkg->freq_pretty;
+
+                          #my $part_pkg = $part_pkg{shift->pkgpart};
+                          #$part_pkg->freq_pretty;
+
+                          FS::part_pkg::freq_pretty(shift);
                         },
 
                     #sub { time2str('%b %d %Y', shift->setup); },
@@ -204,6 +268,7 @@
                   'color' => [
                     '',
                     '',
+                    '',
                     sub { shift->statuscolor; },
                     '',
                     '',
@@ -212,12 +277,16 @@
                     '',
                     '',
                     '',
-                    ( map { '' } FS::UI::Web::cust_header() ),
+                    ( map { '' }
+                          FS::UI::Web::cust_header(
+                                                    $cgi->param('cust_fields')
+                                                  )
+                    ),
                     '',
                   ],
-                  'style' => [ '', '', 'b' ],
-                  'size'  => [ '', '', '-1', ],
-                  'align' => 'rlclrrrrrr',
+                  'style' => [ '', '', '', 'b' ],
+                  'size'  => [ '', '', '', '-1', ],
+                  'align' => 'rllclrrrrrr',
                   'links' => [
                     $link,
                     $link,
@@ -229,7 +298,12 @@
                     '',
                     '',
                     '',
-                    ( map { $clink } FS::UI::Web::cust_header() ),
+                    '',
+                    ( map { $clink }
+                          FS::UI::Web::cust_header(
+                                                    $cgi->param('cust_fields')
+                                                  )
+                    ),
                     '',
                   ],
               )

Index: svc_forward.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/svc_forward.cgi,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- svc_forward.cgi	14 Jul 2005 11:31:35 -0000	1.7
+++ svc_forward.cgi	19 Jun 2006 02:33:52 -0000	1.8
@@ -5,14 +5,12 @@
 my($query)=$cgi->keywords;
 $query ||= ''; #to avoid use of unitialized value errors
 
-
 my $orderby;
 
-my $cjoin = '';
 my @extra_sql = ();
-if ( $query =~ /^UN_(.*)$/ ) {
+if ( $query =~ /^UN_(.*)$/ ) { #UN searches need to be acl'ed (and need to
+                                    #fix $agentnums_sql
   $query = $1;
-  $cjoin = 'LEFT JOIN cust_svc USING ( svcnum )';
   push @extra_sql, 'pkgnum IS NULL';
 }
 
@@ -22,12 +20,20 @@
   eidiot('unimplemented');
 }
 
+my $addl_from = ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
+                ' LEFT JOIN part_svc  USING ( svcpart ) '.
+                ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
+                ' LEFT JOIN cust_main USING ( custnum ) ';
+
+#here is the agent virtualization
+push @extra_sql, $FS::CurrentUser::CurrentUser->agentnums_sql;
+
 my $extra_sql = 
   scalar(@extra_sql)
     ? ' WHERE '. join(' AND ', @extra_sql )
     : '';
 
-my $count_query = "SELECT COUNT(*) FROM svc_forward $cjoin $extra_sql";
+my $count_query = "SELECT COUNT(*) FROM svc_forward $addl_from $extra_sql";
 my $sql_query = {
   'table'     => 'svc_forward',
   'hashref'   => {},
@@ -37,10 +43,7 @@
                     FS::UI::Web::cust_sql_fields(),
                  ),
   'extra_sql' => "$extra_sql $orderby",
-  'addl_from' => ' LEFT JOIN cust_svc  USING ( svcnum  ) '.
-                 ' LEFT JOIN part_svc  USING ( svcpart ) '.
-                 ' LEFT JOIN cust_pkg  USING ( pkgnum  ) '.
-                 ' LEFT JOIN cust_main USING ( custnum ) ',
+  'addl_from' => $addl_from,
 };
 
 #        <TH>Service #<BR><FONT SIZE=-1>(click to view forward)</FONT></TH>
@@ -100,16 +103,19 @@
                  'count_query'       => $count_query,
                  'redirect'          => $link,
                  'header'            => [ '#',
+                                          'Service',
                                           'Mail to',
                                           'Forwards to',
                                           FS::UI::Web::cust_header(),
                                         ],
                  'fields'            => [ 'svcnum',
+                                          'svc',
                                           $format_src,
                                           $format_dst,
                                           \&FS::UI::Web::cust_fields,
                                         ],
                  'links'             => [ $link,
+                                          $link,
                                           $link_src,
                                           $link_dst,
                                           ( map { $link_cust }



More information about the freeside-commits mailing list