X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=httemplate%2Fsearch%2Freport_tax.cgi;h=f37e1275d9a4497cd1d44b8e1b29f643bd313d48;hb=3ed9d0fa90662f037f3fb2f50632ccb34066a979;hp=ed7f9ffb853fdc39d44b359a2bc71ab0176accff;hpb=1b0d5782e4cc1cfb6f3f75bb8d0a9b4c13749986;p=freeside.git diff --git a/httemplate/search/report_tax.cgi b/httemplate/search/report_tax.cgi old mode 100755 new mode 100644 index ed7f9ffb8..491cd42c5 --- a/httemplate/search/report_tax.cgi +++ b/httemplate/search/report_tax.cgi @@ -1,139 +1,231 @@ - -<% - -my $user = getotaker; - -$cgi->param('beginning') =~ /^([ 0-9\-\/]{0,10})$/; -my $pbeginning = $1; -my $beginning = str2time($1) || 0; - -$cgi->param('ending') =~ /^([ 0-9\-\/]{0,10})$/; -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.'%'; - } - - #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; - - $regions{$label}->{'label'} = $label; - -} - -#ordering -my @regions = map $regions{$_}, - sort { ( ($b eq $out) cmp ($a eq $out) ) || ($a cmp $b) } - keys %regions; - -push @regions, { - 'label' => 'Total', - 'total' => $total, - 'exempt' => $exempt, - 'taxable' => $taxable, - 'rate' => '', - 'tax' => $tax, -}; - -#-- - -#false laziness w/FS::Report::Table::Monthly (sub should probably be moved up -#to FS::Report or FS::Record or who the fuck knows where) -sub scalar_sql { - my( $r, $sql ) = @_; - my $sth = dbh->prepare($sql) or die dbh->errstr; - $sth->execute( map $r->$_(), qw( county state country ) ) - or die "Unexpected error executing statement $sql: ". $sth->errstr; - $sth->fetchrow_arrayref->[0] || 0; +<& /elements/header.html, $report->title &> +