X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fsearch%2Fcust_tax_exempt_pkg.cgi;h=41b7b91928963d90b08048a699dd39c8c572daeb;hb=f3e8bf05d7781fcaf22ea28d92be236e3f794034;hp=382dbc4761438b507a02591f6e7754ad29b4b786;hpb=999a0a1a51084016742cb5315bf663f3b4202712;p=freeside.git diff --git a/httemplate/search/cust_tax_exempt_pkg.cgi b/httemplate/search/cust_tax_exempt_pkg.cgi index 382dbc476..41b7b9192 100644 --- a/httemplate/search/cust_tax_exempt_pkg.cgi +++ b/httemplate/search/cust_tax_exempt_pkg.cgi @@ -101,7 +101,7 @@ my $join = " die "access denied" unless $FS::CurrentUser::CurrentUser->access_right('View customer tax exemptions'); -my @where = ( "exempt_monthly = 'Y'" ); +my @where = ("exempt_monthly = 'Y'"); my($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi); if ( $beginning || $ending ) { @@ -118,7 +118,34 @@ if ( $cgi->param('custnum') =~ /^(\d+)$/ ) { push @where, "cust_main.custnum = $1"; } -if ( $cgi->param('country' ) ) { +if ( $cgi->param('classnum') eq '0' ) { + push @where, "part_pkg.classnum IS NULL"; +} elsif ( $cgi->param('classnum') =~ /^(\d+)$/ ) { + push @where, "part_pkg.classnum = $1"; +} + +if ( $cgi->param('out') ) { + # wtf? how would you ever get exemptions on a non-taxable package location? + + push @where, " + 0 = ( + SELECT COUNT(*) FROM cust_main_county AS county_out + WHERE ( county_out.county = cust_main.county + OR ( county_out.county IS NULL AND cust_main.county = '' ) + OR ( county_out.county = '' AND cust_main.county IS NULL) + OR ( county_out.county IS NULL AND cust_main.county IS NULL) + ) + AND ( county_out.state = cust_main.state + OR ( county_out.state IS NULL AND cust_main.state = '' ) + OR ( county_out.state = '' AND cust_main.state IS NULL ) + OR ( county_out.state IS NULL AND cust_main.state IS NULL ) + ) + AND county_out.country = cust_main.country + AND county_out.tax > 0 + ) + "; + +} elsif ( $cgi->param('country' ) ) { my $county = dbh->quote( $cgi->param('county') ); my $state = dbh->quote( $cgi->param('state') ); @@ -129,20 +156,16 @@ if ( $cgi->param('country' ) ) { push @where, 'taxclass = '. dbh->quote( $cgi->param('taxclass') ) if $cgi->param('taxclass'); -} +} elsif ( $cgi->param('taxnum') ) { -if ( $cgi->param('taxnum') ) { - - my @taxnums = grep /^\d+$/, map { split(',', $_) } $cgi->param('taxnum'); - if ( $cgi->param('taxnum') =~ /^([\d,]+)$/) { - push @where, "cust_tax_exempt_pkg.taxnum IN ($1)"; - } + my $taxnum_in = join(',', grep /^\d+$/, $cgi->param('taxnum') ); + push @where, "taxnum IN ($taxnum_in)" if $taxnum_in; } -if ( $cgi->param('classnum') =~ /^(\d+)$/ ) { - push @where, "COALESCE(part_pkg.classnum,0) = $1"; -} +# no reason ever to show the negative exemptions created by credits. +# they'll just confuse people. +push @where, "creditbillpkgnum IS NULL"; my $where = scalar(@where) ? 'WHERE '.join(' AND ', @where) : '';