customer package browse: reset page on option change, RT#39822
[freeside.git] / FS / FS / cust_main / Packages.pm
index 1c921d6..ef8d1a4 100644 (file)
@@ -434,7 +434,7 @@ sub all_pkgs {
   my $self = shift;
   my $extra_qsearch = ref($_[0]) ? shift : { @_ };
 
-  return $self->num_pkgs unless wantarray || keys %$extra_qsearch;
+  return $self->num_pkgs($extra_qsearch) unless wantarray;
 
   my @cust_pkg = ();
   if ( $self->{'_pkgnum'} && ! keys %$extra_qsearch ) {
@@ -464,11 +464,11 @@ Returns all non-cancelled packages (see L<FS::cust_pkg>) for this customer.
 
 sub ncancelled_pkgs {
   my $self = shift;
-  my $extra_qsearch = ref($_[0]) ? shift : {};
+  my $extra_qsearch = ref($_[0]) ? shift : { @_ };
 
   local($DEBUG) = $FS::cust_main::DEBUG if $FS::cust_main::DEBUG > $DEBUG;
 
-  return $self->num_ncancelled_pkgs unless wantarray;
+  return $self->num_ncancelled_pkgs($extra_qsearch) unless wantarray;
 
   my @cust_pkg = ();
   if ( $self->{'_pkgnum'} ) {
@@ -485,7 +485,8 @@ sub ncancelled_pkgs {
          $self->custnum. "\n"
       if $DEBUG > 1;
 
-    $extra_qsearch->{'extra_sql'} .= ' AND ( cancel IS NULL OR cancel = 0 ) ';
+    $extra_qsearch->{'extra_sql'} .=
+      ' AND ( cust_pkg.cancel IS NULL OR cust_pkg.cancel = 0 ) ';
 
     @cust_pkg = $self->_cust_pkg($extra_qsearch);
 
@@ -730,7 +731,7 @@ sub num_pkgs {
   }
   $sql = "AND $sql" if $sql && $sql !~ /^\s*$/ && $sql !~ /^\s*AND/i;
   my $sth = dbh->prepare(
-    "SELECT COUNT(*) FROM cust_pkg $addl_from WHERE custnum = ? $sql"
+    "SELECT COUNT(*) FROM cust_pkg $addl_from WHERE cust_pkg.custnum = ? $sql"
   ) or die dbh->errstr;
   $sth->execute($self->custnum) or die $sth->errstr;
   $sth->fetchrow_arrayref->[0];