diff options
author | ivan <ivan> | 2009-03-30 01:05:04 +0000 |
---|---|---|
committer | ivan <ivan> | 2009-03-30 01:05:04 +0000 |
commit | 4a525836ffb9fa8a941c11247637543d931733b8 (patch) | |
tree | cb5f2eb22335d48988189bac1a6bab73e6704a3d /FS | |
parent | 3b5ccffae54e59c012eb1ebb348207510ca1d5ce (diff) |
forget caching, instead scoop up cust_pkg and part_pkg in one query, RT#5083
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/cust_main.pm | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 73cf826ab..1766b4542 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -1809,7 +1809,7 @@ sub has_ship_address { scalar( grep { $self->getfield("ship_$_") ne '' } $self->addr_fields ); } -=item all_pkgs +=item all_pkgs [ EXTRA_QSEARCH_PARAMS_HASHREF ] Returns all packages (see L<FS::cust_pkg>) for this customer. @@ -1817,14 +1817,19 @@ Returns all packages (see L<FS::cust_pkg>) for this customer. sub all_pkgs { my $self = shift; + my $extra_qsearch = ref($_[0]) ? shift : {}; - return $self->num_pkgs unless wantarray; + return $self->num_pkgs unless wantarray; #XXX doesn't work w/$extra_qsearch my @cust_pkg = (); if ( $self->{'_pkgnum'} ) { @cust_pkg = values %{ $self->{'_pkgnum'}->cache }; } else { - @cust_pkg = qsearch( 'cust_pkg', { 'custnum' => $self->custnum }); + @cust_pkg = qsearch({ + %$extra_qsearch, + 'table' => 'cust_pkg', + 'hashref' => { 'custnum' => $self->custnum }, + }); } sort sort_packages @cust_pkg; @@ -1851,7 +1856,7 @@ sub cust_location { qsearch('cust_location', { 'custnum' => $self->custnum } ); } -=item ncancelled_pkgs +=item ncancelled_pkgs [ EXTRA_QSEARCH_PARAMS_HASHREF ] Returns all non-cancelled packages (see L<FS::cust_pkg>) for this customer. @@ -1859,6 +1864,7 @@ 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 : {}; return $self->num_ncancelled_pkgs unless wantarray; @@ -1877,16 +1883,13 @@ sub ncancelled_pkgs { $self->custnum. "\n" if $DEBUG > 1; - @cust_pkg = - qsearch( 'cust_pkg', { - 'custnum' => $self->custnum, - 'cancel' => '', - }); - push @cust_pkg, - qsearch( 'cust_pkg', { - 'custnum' => $self->custnum, - 'cancel' => 0, - }); + @cust_pkg = qsearch({ + %$extra_qsearch, + 'table' => 'cust_pkg', + 'hashref' => { 'custnum' => $self->custnum }, + 'extra_sql' => ' AND ( cancel IS NULL OR cancel = 0 ) ', + }); + } sort sort_packages @cust_pkg; |