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 | |
parent | 01da1336907a84e52d8a947deb93c76ad28ecde1 (diff) |
fix multiple pkgpart search, RT#5924
-rw-r--r-- | FS/FS/cust_pkg.pm | 23 | ||||
-rwxr-xr-x | httemplate/misc/bulk_change_pkg.cgi | 20 | ||||
-rwxr-xr-x | httemplate/search/cust_pkg.cgi | 8 |
3 files changed, 36 insertions, 15 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 diff --git a/httemplate/misc/bulk_change_pkg.cgi b/httemplate/misc/bulk_change_pkg.cgi index 93349859d..845cf3649 100755 --- a/httemplate/misc/bulk_change_pkg.cgi +++ b/httemplate/misc/bulk_change_pkg.cgi @@ -7,17 +7,23 @@ <FORM ACTION="<% $p %>misc/process/bulk_change_pkg.cgi" METHOD=POST> -<INPUT TYPE="hidden" NAME="query" VALUE="<% $cgi->keywords %>"> -% for my $param (qw(agentnum magic status classnum pkgpart)) { -<INPUT TYPE="hidden" NAME="<% $param %>" VALUE="<% $cgi->param($param) %>"> +%# some false laziness w/search/cust_pkg.cgi + +<INPUT TYPE="hidden" NAME="query" VALUE="<% $cgi->keywords |h %>"> +% for my $param (qw(agentnum magic status classnum custom censustract)) { +<INPUT TYPE="hidden" NAME="<% $param %>" VALUE="<% $cgi->param($param) |h %>"> % } % +% foreach my $pkgpart ($cgi->param('pkgpart')) { +<INPUT TYPE="hidden" NAME="pkgpart" VALUE="<% $pkgpart |h %>"> +% } +% % foreach my $field (qw( setup last_bill bill adjourn susp expire cancel )) { % - <INPUT TYPE="hidden" NAME="<% $field %>begin" VALUE="<% $cgi->param("${field}.begin") %>"> - <INPUT TYPE="hidden" NAME="<% $field %>beginning" VALUE="<% $cgi->param("${field}beginning") %>"> - <INPUT TYPE="hidden" NAME="<% $field %>end" VALUE="<% $cgi->param("${field}.end") %>"> - <INPUT TYPE="hidden" NAME="<% $field %>ending" VALUE="<% $cgi->param("${field}.ending") %>"> + <INPUT TYPE="hidden" NAME="<% $field %>begin" VALUE="<% $cgi->param("${field}.begin") |h %>"> + <INPUT TYPE="hidden" NAME="<% $field %>beginning" VALUE="<% $cgi->param("${field}beginning") |h %>"> + <INPUT TYPE="hidden" NAME="<% $field %>end" VALUE="<% $cgi->param("${field}.end") |h %>"> + <INPUT TYPE="hidden" NAME="<% $field %>ending" VALUE="<% $cgi->param("${field}.ending") |h %>"> % } <% ntable('#cccccc') %> diff --git a/httemplate/search/cust_pkg.cgi b/httemplate/search/cust_pkg.cgi index 8ad3dc5e1..1d5349d7d 100755 --- a/httemplate/search/cust_pkg.cgi +++ b/httemplate/search/cust_pkg.cgi @@ -138,16 +138,16 @@ die "access denied" # my %part_pkg = map { $_->pkgpart => $_ } qsearch('part_pkg', {}); - my %search_hash = (); $search_hash{'query'} = $cgi->keywords; -for my $param (qw(agentnum magic status classnum pkgpart)) { - $search_hash{$param} = $cgi->param($param) - if $cgi->param($param); +for my $param (qw( agentnum magic status classnum )) { + $search_hash{$param} = $cgi->param($param) if $cgi->param($param); } +$search_hash{'pkgpart'} = [ $cgi->param('pkgpart') ]; + ### # parse dates ### |