freeside/httemplate/search report_tax.cgi,1.5.4.4,1.5.4.5
ivan
ivan at pouncequick.420.am
Fri Jun 11 09:59:59 PDT 2004
Update of /home/cvs/cvsroot/freeside/httemplate/search
In directory pouncequick:/tmp/cvs-serv9805
Modified Files:
Tag: FREESIDE_1_4_BRANCH
report_tax.cgi
Log Message:
fix date range for old perl, count tax exempt and COMP customers correctly
Index: report_tax.cgi
===================================================================
RCS file: /home/cvs/cvsroot/freeside/httemplate/search/report_tax.cgi,v
retrieving revision 1.5.4.4
retrieving revision 1.5.4.5
diff -u -d -r1.5.4.4 -r1.5.4.5
--- report_tax.cgi 11 Jun 2004 14:57:33 -0000 1.5.4.4
+++ report_tax.cgi 11 Jun 2004 16:59:56 -0000 1.5.4.5
@@ -1,21 +1,34 @@
<!-- mason kludge -->
<%
-#my $user = getotaker;
-my $user = $FS::UID::user; #dumb 1.4 8-char workaround
+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;
@@ -34,9 +47,10 @@
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';
@@ -55,11 +69,17 @@
}
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'})
@@ -101,8 +121,9 @@
#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;
}
More information about the freeside-commits
mailing list