diff options
| author | ivan <ivan> | 2009-08-12 02:36:41 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2009-08-12 02:36:41 +0000 | 
| commit | 68fd776bf40bba780a3a8de95f630a51d4e5a70d (patch) | |
| tree | 0f632a3c5275e62e032a3b5977fe6faee556879e /FS | |
| parent | 01da1336907a84e52d8a947deb93c76ad28ecde1 (diff) | |
fix multiple pkgpart search, RT#5924
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/cust_pkg.pm | 23 | 
1 files changed, 19 insertions, 4 deletions
| diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index 3df6f3086..a3dccc663 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -1800,7 +1800,7 @@ active, inactive, suspended, one-time charge, inactive, cancel (or cancelled)  =item pkgpart -list specified how? +pkgpart or arrayref or hashref of pkgparts  =item setup @@ -1926,9 +1926,24 @@ sub search_sql {    # parse part_pkg    ### -  my $pkgpart = join (' OR pkgpart=', -                      grep {$_} map { /^(\d+)$/; } ($params->{'pkgpart'})); -  push @where,  '(pkgpart=' . $pkgpart . ')' if $pkgpart; +  if ( ref($params->{'pkgpart'}) ) { + +    my @pkgpart = (); +    if ( ref($params->{'pkgpart'}) eq 'HASH' ) { +      @pkgpart = grep $params->{'pkgpart'}{$_}, keys %{ $params->{'pkgpart'} }; +    } elsif ( ref($params->{'pkgpart'}) eq 'ARRAY' ) { +      @pkgpart = @{ $params->{'pkgpart'} }; +    } else { +      die 'unhandled pkgpart ref '. $params->{'pkgpart'}; +    } + +    @pkgpart = grep /^(\d+)$/, @pkgpart; + +    push @where, 'pkgpart IN ('. join(',', @pkgpart). ')'; + +  } elsif ( $params->{'pkgpart'} =~ /^(\d+)$/ ) { +    push @where, "pkgpart = $1"; +  }     ###    # parse dates | 
