summaryrefslogtreecommitdiff
path: root/httemplate/search/report_tax.cgi
diff options
context:
space:
mode:
authorivan <ivan>2004-06-11 16:44:05 +0000
committerivan <ivan>2004-06-11 16:44:05 +0000
commit402ac7d54021caf6797efc47d33983be51eef049 (patch)
tree299d649ebc1faa95cc7de59877812b62b0331ff2 /httemplate/search/report_tax.cgi
parent7b973e57e167efdce2218209e9198ae34f2483b2 (diff)
fix date range for old perl, count tax exempt and COMP customers correctly
Diffstat (limited to 'httemplate/search/report_tax.cgi')
-rwxr-xr-xhttemplate/search/report_tax.cgi42
1 files changed, 32 insertions, 10 deletions
diff --git a/httemplate/search/report_tax.cgi b/httemplate/search/report_tax.cgi
index 0a368d33c..4de733c23 100755
--- a/httemplate/search/report_tax.cgi
+++ b/httemplate/search/report_tax.cgi
@@ -5,16 +5,30 @@ my $user = getotaker;
$cgi->param('beginning') =~ /^([ 0-9\-\/]{0,10})$/;
my $pbeginning = $1;
-my $beginning = str2time($1) || 0;
+my $beginning = $1 ? str2time($1) : 0;
$cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/;
my $pending = $1;
-my $ending = ( str2time($1) || 4294880896 ) + 86399;
+my $ending = ( $1 ? str2time($1) : 4294880896 ) + 86399;
my($total, $exempt, $taxable, $tax) = ( 0, 0, 0, 0 );
my $out = 'Out of taxable region(s)';
my %regions;
-foreach my $r ( qsearch('cust_main_county', {}) ) {
+foreach my $r (
+ qsearch('cust_main_county', {}, '',
+ "WHERE 0 < ( SELECT COUNT(*) FROM cust_main
+ WHERE ( cust_main.county = cust_main_county.county
+ OR cust_main_county.county = ''
+ OR cust_main_county.county IS NULL )
+ AND ( cust_main.state = cust_main_county.state
+ OR cust_main_county.state = ''
+ OR cust_main_county.state IS NULL )
+ AND ( cust_main.country = cust_main_county.country )
+ LIMIT 1
+ )"
+ )
+) {
+ #warn $r->county. ' '. $r->state. ' '. $r->country. "\n";
my $label;
if ( $r->tax == 0 ) {
$label = $out;
@@ -33,9 +47,10 @@ foreach my $r ( qsearch('cust_main_county', {}) ) {
JOIN cust_bill USING ( invnum )
JOIN cust_main USING ( custnum )
WHERE _date >= $beginning AND _date <= $ending
- AND ( county = ? OR ( ? = '' AND county IS NULL ) )
- AND ( state = ? OR ( ? = '' AND state IS NULL ) )
- AND ( country = ? OR ( ? = '' AND country IS NULL ) )
+ AND ( county = ? OR ? = '' )
+ AND ( state = ? OR ? = '' )
+ AND ( country = ? )
+ AND payby != 'COMP'
";
my $nottax = 'pkgnum != 0';
@@ -54,11 +69,17 @@ foreach my $r ( qsearch('cust_main_county', {}) ) {
}
foreach my $e ( grep { $r->get($_.'tax') !~ /^Y/i } qw( setup recur ) ) {
+ my $t = scalar_sql($r,
+ "SELECT SUM($e) $fromwhere AND $nottax AND ( tax != 'Y' OR tax IS NULL )"
+ );
+ $taxable += $t;
+ $regions{$label}->{'taxable'} += $t;
+
my $x = scalar_sql($r,
- "SELECT SUM($e) $fromwhere AND $nottax"
+ "SELECT SUM($e) $fromwhere AND $nottax AND tax = 'Y'"
);
- $taxable += $x;
- $regions{$label}->{'taxable'} += $x;
+ $exempt += $x;
+ $regions{$label}->{'exempt'} += $x;
}
if ( defined($regions{$label}->{'rate'})
@@ -100,8 +121,9 @@ push @regions, {
#to FS::Report or FS::Record or who the fuck knows where)
sub scalar_sql {
my( $r, $sql ) = @_;
+ #warn "$sql\n";
my $sth = dbh->prepare($sql) or die dbh->errstr;
- $sth->execute( map $r->$_(), map { $_, $_ } qw( county state country ) )
+ $sth->execute( map $r->$_(), qw( county county state state country ) )
or die "Unexpected error executing statement $sql: ". $sth->errstr;
$sth->fetchrow_arrayref->[0] || 0;
}