doh! underscore, RT#5083
[freeside.git] / httemplate / view / cust_main / packages.html
index 9b1d5b3..aa1d7e7 100755 (executable)
@@ -76,7 +76,7 @@ Current packages
   <TH CLASS="grid" BGCOLOR="#cccccc">Services</TH>
 </TR>
 
-% my %part_pkg = ();
+% $FS::cust_pkg::DEBUG = 2;
 % foreach my $cust_pkg (@$packages) {
 %
 %   if ( $bgcolor eq $bgcolor1 ) {
@@ -85,18 +85,13 @@ Current packages
 %     $bgcolor = $bgcolor1;
 %   }
 %
-%   $part_pkg{$cust_pkg->pkgpart} ||= $cust_pkg->part_pkg;
-%   $cust_pkg->{'_pkgpart'} ||= $part_pkg{$cust_pkg->pkgpart}; #XXX cache kludge
-%
 %   my %iopt = (
 %     'bgcolor'  => $bgcolor,
 %     'cust_pkg' => $cust_pkg,
-%     'part_pkg' => $part_pkg{$cust_pkg->pkgpart},
+%     'part_pkg' => $cust_pkg->part_pkg,
 %     %conf_opt,
 %   );
 %
-%   my $oldDEBUG = $FS::cust_pkg::DEBUG;
-%   $FS::cust_pkg::DEBUG = 2;
 
     <!--pkgnum: <% $cust_pkg->pkgnum %>-->
     <TR>
@@ -108,8 +103,6 @@ Current packages
       <% include('packages/services.html', %iopt) %>
     </TR>
 
-%   $FS::cust_pkg::DEBUG = $oldDEBUG;
-
 % }
 
 </TABLE>
@@ -174,9 +167,34 @@ sub get_packages {
     $method = 'all_pkgs';
   }
 
-  my @packages = $cust_main->$method();
+  my $cust_pkg_fields =
+    join(', ', map { "cust_pkg.$_ AS $_"          } fields('cust_pkg') );
+
+  my $part_pkg_fields =
+    join(', ', map { "part_pkg.$_ AS part_pkg_$_" } fields('part_pkg') );
+
+  my $group_by =
+    join(', ', map "cust_pkg.$_", fields('cust_pkg') ). ', '.
+    join(', ', map "part_pkg.$_", fields('part_pkg') );
+
+  my $num_cust_svc = 
+    '( SELECT COUNT(*) FROM cust_svc WHERE cust_pkg.pkgnum = cust_svc.svcnum )';
+
+  my @packages = $cust_main->$method( {
+    'select'    => " $cust_pkg_fields, $part_pkg_fields, ".
+                   " $num_cust_svc AS num_cust_svc ",
+    'addl_from' => ' LEFT JOIN part_pkg USING ( pkgpart ) ',
+  } );
   my $num_old_packages = scalar(@packages);
 
+  foreach my $cust_pkg ( @packages ) {
+    my %hash = $cust_pkg->hash;
+    my %part_pkg = map  { /^part_pkg_(.+)$/ or die; ( $1 => $hash{$_} ); }
+                   grep { /^part_pkg_/ } keys %hash;
+    $cust_pkg->{'_pkgpart'} = new FS::part_pkg \%part_pkg;
+    $cust_pkg->{'_num_cust_svc'} = $cust_pkg->get('num_cust_svc');
+  }
+
   unless ( $cgi->param('showoldpackages') ) {
     my $years = $conf->config('cust_main-packages-years') || 2;
     my $seconds = 31556926; #60*60*24*365.2422 is close enough