X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Freport_tax.cgi;h=08b6d079698e9521675788b5016ba0a272a933e6;hp=bedfdac5feff4995b5c4eb413e506dcaa2e6c0d5;hb=8f6a34b553a7ca9b7fc9c9cf5802ce418e3a5296;hpb=cefb9727ed4cdfacf3b967485d58b25fbea98c6b diff --git a/httemplate/search/report_tax.cgi b/httemplate/search/report_tax.cgi index bedfdac5f..08b6d0796 100755 --- a/httemplate/search/report_tax.cgi +++ b/httemplate/search/report_tax.cgi @@ -1,35 +1,139 @@ + <% -use strict; -use vars qw( $cgi $user $beginning $ending ); -use CGI; -use CGI::Carp qw( fatalsToBrowser ); -use FS::UID qw( cgisuidsetup getotaker ); -use FS::CGI qw( header ); - -$cgi = new CGI; -&cgisuidsetup($cgi); - -$user = getotaker; +my $user = getotaker; $cgi->param('beginning') =~ /^([ 0-9\-\/]{0,10})$/; -$beginning = $1; +my $pbeginning = $1; +my $beginning = str2time($1) || 0; $cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/; -$ending = $1; +my $pending = $1; +my $ending = ( 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', {}) ) { + my $label; + if ( $r->tax == 0 ) { + $label = $out; + } elsif ( $r->taxname ) { + $label = $r->taxname; + } else { + $label = $r->country; + $label = $r->state.", $label" if $r->state; + $label = $r->county." county, $label" if $r->county; + } + + #match taxclass too? + + my $fromwhere = " + FROM cust_bill_pkg + JOIN cust_bill USING ( invnum ) + JOIN cust_main USING ( custnum ) + WHERE _date >= $beginning AND _date <= $ending + AND county = ? AND state = ? AND country = ? + "; + my $nottax = 'pkgnum != 0'; + + my $a = scalar_sql($r, + "SELECT SUM(setup+recur) $fromwhere AND $nottax" + ); + $total += $a; + $regions{$label}->{'total'} += $a; + + foreach my $e ( grep { $r->get($_.'tax') =~ /^Y/i } qw( setup recur ) ) { + my $x = scalar_sql($r, + "SELECT SUM($e) $fromwhere AND $nottax" + ); + $exempt += $x; + $regions{$label}->{'exempt'} += $x; + } + + foreach my $e ( grep { $r->get($_.'tax') !~ /^Y/i } qw( setup recur ) ) { + my $x = scalar_sql($r, + "SELECT SUM($e) $fromwhere AND $nottax" + ); + $taxable += $x; + $regions{$label}->{'taxable'} += $x; + } + + if ( defined($regions{$label}->{'rate'}) + && $regions{$label}->{'rate'} != $r->tax.'%' ) { + $regions{$label}->{'rate'} = 'variable'; + } else { + $regions{$label}->{'rate'} = $r->tax.'%'; + } -print $cgi->header( '-expires' => '-2m' ), - header('Tax Report Results'); + #match itemdesc if necessary! + my $named_tax = $r->taxname ? 'AND itemdesc = '. dbh->quote($r->taxname) : ''; + my $x = scalar_sql($r, + "SELECT SUM(setup+recur) $fromwhere AND pkgnum = 0 $named_tax", + ); + $tax += $x; + $regions{$label}->{'tax'} += $x; -open (REPORT, "/usr/bin/freeside-tax-report -v -s $beginning -d $ending $user |"); + $regions{$label}->{'label'} = $label; -print '
'; -while('; -print ') { - print $_; } -print '