[freeside-commits] branch FREESIDE_4_BRANCH updated. 6e0939241b421ed74ad063733499a9408a73789f

Ivan ivan at 420.am
Wed Mar 2 19:17:12 PST 2016


The branch, FREESIDE_4_BRANCH has been updated
       via  6e0939241b421ed74ad063733499a9408a73789f (commit)
      from  875ce4031a47542b933e649ce996cb36b17f44cc (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 6e0939241b421ed74ad063733499a9408a73789f
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Wed Mar 2 19:17:11 2016 -0800

    page large customer package lists, RT#39822

diff --git a/httemplate/view/cust_main/packages.html b/httemplate/view/cust_main/packages.html
index 475e189..ddd92b3 100755
--- a/httemplate/view/cust_main/packages.html
+++ b/httemplate/view/cust_main/packages.html
@@ -192,25 +192,35 @@ my $group_by =
 my $num_svcs = '( SELECT COUNT(*) FROM cust_svc '.
                '    WHERE cust_svc.pkgnum = cust_pkg.pkgnum ) AS num_svcs';
 
+my $addl_from = '
+  LEFT JOIN part_pkg USING ( pkgpart )
+  LEFT JOIN cust_pkg AS chgto   ON ( chgto.change_to_pkgnum = cust_pkg.pkgnum )
+  LEFT JOIN cust_pkg AS chgfrom ON ( chgfrom.change_pkgnum  = cust_pkg.pkgnum )
+';
+
 my $extra_sql =
-  ' AND main_pkgnum IS NULL '.      # supplemental package of something else
-  ' AND change_to_pkgnum IS NULL '. # ordered, not-yet-active change target
-  ' AND change_pkgnum IS NULL ';    # canceled package changed into another
+  ' AND cust_pkg.main_pkgnum IS NULL '. # supplemental package of something else
+  ' AND chgto.pkgnum IS NULL '. # ordered, not-yet-active change target
+  ' AND chgfrom.pkgnum IS NULL ';    # canceled package changed into another
 
 unless ( $cgi->param('showoldpackages') ) {
   my $years = $conf->config('cust_main-packages-years') || 2;
   my $then = time - $years * 31556926; #60*60*24*365.2422 is close enough
 
   $extra_sql .= " AND (
-       ( part_pkg.freq  =  '0' AND ( setup  IS NULL OR setup  > $then ) )
-    OR ( part_pkg.freq != '0'  AND ( cancel IS NULL OR cancel > $then ) )
+       ( part_pkg.freq  =  '0'
+           AND ( cust_pkg.setup  IS NULL OR cust_pkg.setup  > $then )
+       )
+    OR ( part_pkg.freq != '0'
+          AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel > $then )
+       )
     OR EXISTS ( SELECT 1 FROM cust_svc WHERE cust_svc.pkgnum = cust_pkg.pkgnum )
   )";
 }
 
 my $num_method = $hide_cancelled ? 'ncancelled_pkgs' : 'all_pkgs';
 my $num_pkgs = $cust_main->$num_method({ 
-  'addl_from' => 'LEFT JOIN part_pkg USING ( pkgpart )',
+  'addl_from' => $addl_from,
   'extra_sql' => $extra_sql,
 });
 
@@ -219,20 +229,20 @@ my $offset = $cgi->param('offset') =~ /^(\d+)$/ ? $1 : 0;
 
 my @packages = $cust_main->all_pkgs( {
   'select'    => "$cust_pkg_fields, $part_pkg_fields, $num_svcs",
-  'addl_from' => qq{
-    LEFT JOIN part_pkg USING ( pkgpart )
+  'addl_from' => $addl_from. "
     LEFT JOIN part_pkg_option AS setup_option
       ON (     cust_pkg.pkgpart = setup_option.pkgpart
            AND setup_option.optionname = 'setup_fee' )
     LEFT JOIN part_pkg_option AS recur_option
       ON (     cust_pkg.pkgpart = recur_option.pkgpart
            AND recur_option.optionname = 'recur_fee' )
-  },
+  ",
   'extra_sql' => $extra_sql,
   'order_by'  => "ORDER BY pkgnum ASC LIMIT $maxrecords OFFSET $offset",
 } );
 
 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;
@@ -244,24 +254,34 @@ foreach my $cust_pkg ( @packages ) {
   ] );
 
   #for future changes
-  my $change_to =
-    qsearchs('cust_pkg', { change_to_pkgnum=>$cust_pkg->pkgnum });
-  if ( $change_to ) {
-    $change_to->set('change_from_pkg', $cust_pkg);
+  if ( $cust_pkg->change_to_pkgnum ) {
+    my $change_to =
+      qsearchs('cust_pkg', { pkgnum=>$cust_pkg->change_to_pkgnum });
     $cust_pkg->set('change_to_pkg', $change_to);
+    $change_to->set('change_from_pkg', $cust_pkg);
   }
 
   #for past changes
-  my $changed_from =
-    qsearchs('cust_pkg', { change_pkgnum=>$cust_pkg->pkgnum });
-  if ( $changed_from ) {
-    $changed_from->set('changed_to_pkg', $cust_pkg);
-    $cust_pkg->set('changed_from_pkg', $changed_from);
-  }
+  setfrom($cust_pkg);
 
   $cust_pkg->{'_cust_pkg_discount_active'} =
    [ $cust_pkg->cust_pkg_discount_active ];
 
 }
 
+sub setfrom {
+  my $cust_pkg = shift;
+
+  if ( $cust_pkg->change_pkgnum ) {
+    my $changed_from =
+      qsearchs('cust_pkg', { pkgnum=>$cust_pkg->change_pkgnum });
+    $cust_pkg->set('changed_from_pkg', $changed_from);
+    $changed_from->set('changed_to_pkg', $cust_pkg);
+
+    setfrom($changed_from);
+
+  }
+
+}
+
 </%init>

-----------------------------------------------------------------------

Summary of changes:
 httemplate/view/cust_main/packages.html |   58 +++++++++++++++++++++----------
 1 file changed, 39 insertions(+), 19 deletions(-)




More information about the freeside-commits mailing list