diff options
author | ivan <ivan> | 2007-12-27 23:49:32 +0000 |
---|---|---|
committer | ivan <ivan> | 2007-12-27 23:49:32 +0000 |
commit | 0e57f8cae87784c336f45fd2a0d437699c4d935a (patch) | |
tree | eda3e36779821846098eef6148763bd41c154545 | |
parent | c7f24788bd72c391a54f8b101d5013c01a41e3b7 (diff) |
fix reporting bug for invisimax in edge case where you have taxclass and empty-taxclass rates for a country/state(/county) and also have a different set of taxclasses for some other country/state
-rwxr-xr-x | httemplate/search/report_tax.cgi | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/httemplate/search/report_tax.cgi b/httemplate/search/report_tax.cgi index 7185b6dd5..e82126a3c 100755 --- a/httemplate/search/report_tax.cgi +++ b/httemplate/search/report_tax.cgi @@ -312,8 +312,9 @@ foreach my $r (qsearch('cust_main_county', {}, '', $gotcust) ) { } else { - my $same_query = "SELECT COUNT(*) FROM cust_main_county WHERE country = ?"; - my @same_param = ( 'country' ); + my $same_query = 'SELECT taxclass FROM cust_main_county '. + ' WHERE taxnum != ? AND country = ?'; + my @same_param = ( 'taxnum', 'country' ); foreach my $opt_field (qw( state county )) { if ( $r->$opt_field() ) { $same_query .= " AND $opt_field = ?"; @@ -323,12 +324,11 @@ foreach my $r (qsearch('cust_main_county', {}, '', $gotcust) ) { } } - my $num_same_region = scalar_sql( $r, \@same_param, $same_query ); - - if ( $num_same_region > 1 ) { - - $mywhere .= " AND taxclass IS NULL"; + my @taxclasses = list_sql( $r, \@same_param, $same_query ); + if ( scalar(@taxclasses) ) { + $mywhere .= ' AND '. join(' AND ', map ' taxclass != ? ', @taxclasses ); + push @param, @taxclasses; } } @@ -565,7 +565,14 @@ sub scalar_sql { $sth->fetchrow_arrayref->[0] || 0; } - +sub list_sql { + my( $r, $param, $sql ) = @_; + #warn "$sql\n"; + my $sth = dbh->prepare($sql) or die dbh->errstr; + $sth->execute( map $r->$_(), @$param ) + or die "Unexpected error executing statement $sql: ". $sth->errstr; + map $_->[0], @{ $sth->fetchall_arrayref }; +} my $dateagentlink = "begin=$beginning;end=$ending"; $dateagentlink .= ';agentnum='. $cgi->param('agentnum') |