From 5a492bf6c76aebbbee96544e2a1ed5929b505da5 Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 18 Aug 2011 23:29:25 +0000 Subject: [PATCH] fix 477 package links, RT#13922 --- FS/FS/cust_pkg.pm | 34 +++++++++++++++++++++++++++------ httemplate/search/477partVI_census.html | 8 ++++++-- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/FS/FS/cust_pkg.pm b/FS/FS/cust_pkg.pm index fd715a8f4..e0a2eeb44 100644 --- a/FS/FS/cust_pkg.pm +++ b/FS/FS/cust_pkg.pm @@ -2981,6 +2981,7 @@ sub search { } elsif ( @c_where ) { push @where, ' ( '. join(' OR ', @c_where). ' ) '; } + warn $where[-1]; } @@ -2992,11 +2993,13 @@ sub search { ### my @report_option = (); - if ( exists($params->{'report_option'}) - && $params->{'report_option'} =~ /^([,\d]*)$/ - ) - { - @report_option = split(',', $1); + if ( exists($params->{'report_option'}) ) { + if ( ref($params->{'report_option'}) eq 'ARRAY' ) { + @report_option = @{ $params->{'report_option'} }; + } elsif ( $params->{'report_option'} =~ /^([,\d]*)$/ ) { + @report_option = split(',', $1); + } + } if (@report_option) { @@ -3009,7 +3012,26 @@ sub search { } @report_option; } - #eslaf + my @report_option_any = (); + if ( exists($params->{'report_option_any'}) ) { + if ( ref($params->{'report_option_any'}) eq 'ARRAY' ) { + @report_option_any = @{ $params->{'report_option_any'} }; + } elsif ( $params->{'report_option_any'} =~ /^([,\d]*)$/ ) { + @report_option_any = split(',', $1); + } + + } + + if (@report_option_any) { + # this will result in the empty set for the dangling comma case as it should + push @where, ' ( '. join(' OR ', + map{ "0 < ( SELECT count(*) FROM part_pkg_option + WHERE part_pkg_option.pkgpart = part_pkg.pkgpart + AND optionname = 'report_option_$_' + AND optionvalue = '1' )" + } @report_option_any + ). ' ) '; + } ### # parse custom diff --git a/httemplate/search/477partVI_census.html b/httemplate/search/477partVI_census.html index 9256b86b3..b6043539a 100755 --- a/httemplate/search/477partVI_census.html +++ b/httemplate/search/477partVI_census.html @@ -147,7 +147,7 @@ my $link_suffix = sub { my $row = shift; my @ro = grep $_, @row_option[$row->upload - 1], @column_option[$row->download - 2], - @technology_option[$row->technology_code], + @technology_option[$row->technology_code - 1], ; $result .= 'report_option='. join(',',@ro) if @ro; $result; @@ -155,6 +155,10 @@ my $link_suffix = sub { my $row = shift; my $html_foot = sub { if (scalar(keys %state_hash) > 1) { + + my $roa = join(',', grep $_, @technology_option); + $roa = ";report_option_any=$roa" if $roa; + '
WARNING: multiple states found
'. ''. #nicer formatting someday join('', map { ''. @@ -162,7 +166,7 @@ my $html_foot = sub { ( &FS::Report::FCC_477::statenum2state($_) || 'None' ). ''. ''. -- 2.11.0
'. - qq(). + qq(). $state_pkgcount{$_}. ' packages in '. $state_hash{$_}. ' census tracts'. '