X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=httemplate%2Fsearch%2Freport_tax.cgi;h=93e5b51c9fcd278386ff191bab530d6388264def;hp=e89c66536c2037ad2d736db4c4875a75d58bf5ec;hb=f0749e294656ac2615edaa59bbdb850eb3d20544;hpb=74cb9e1c3974d8899bf9745564d0dfce5875454c diff --git a/httemplate/search/report_tax.cgi b/httemplate/search/report_tax.cgi index e89c66536..93e5b51c9 100755 --- a/httemplate/search/report_tax.cgi +++ b/httemplate/search/report_tax.cgi @@ -10,31 +10,45 @@ ) ) %> + +Download full results
+as Excel spreadsheet + <% include('/elements/table-grid.html') %> - + Sales - - Rate - - Tax owed + + Rate + + Tax owed % unless ( $cgi->param('show_taxclasses') ) { - Tax invoiced + Tax invoiced + + Tax credited + + Tax collected % } - Total - - Non-taxable
(tax-exempt customer) - - Non-taxable
(tax-exempt package) - - Non-taxable
(monthly exemption) - - Taxable + Total + + Non-taxable + + Non-taxable + + Non-taxable + + Taxable + + + + (tax-exempt customer) + (tax-exempt package) + (monthly exemption) % my $bgcolor1 = '#eeeeee'; @@ -118,6 +132,15 @@ <% &$money_sprintf( $region->{'tax'} ) %> + <<%$tdh%>> - + <<%$tdh%> ALIGN="right"> + <% &$money_sprintf( $region->{'credit'} ) %> + + <<%$tdh%>> = + <<%$tdh%> ALIGN="right"> + <% &$money_sprintf( $region->{'tax'} - $region->{'credit'} ) %> + % } @@ -132,6 +155,10 @@ Tax invoiced + + Tax credited + + Tax collected % #some false laziness w/above @@ -154,6 +181,12 @@ % $bgcolor = $bgcolor1; % } % my $td = qq(TD CLASS="grid" BGCOLOR="$bgcolor"); +% my $tdh = qq(TD CLASS="grid" BGCOLOR="$bgcolor"); +% +% #? +% my $invlink = $region->{'url_param_inv'} +% ? ';'. $region->{'url_param_inv'} +% : $link; <<%$td%>><% $region->{'label'} %> @@ -161,6 +194,15 @@ <% &$money_sprintf( $region->{'tax'} ) %> + <<%$td%>> - + <<%$tdh%> ALIGN="right"> + <% &$money_sprintf( $region->{'credit'} ) %> + + <<%$td%>> = + <<%$tdh%> ALIGN="right"> + <% &$money_sprintf( $region->{'tax'} - $region->{'credit'} ) %> + % } @@ -178,6 +220,15 @@ <% &$money_sprintf( $tot_tax ) %> + <<%$td%>> - + <<%$td%> ALIGN="right"> + <% &$money_sprintf( $tot_credit ) %> + + <<%$td%>> = + <<%$td%> ALIGN="right"> + <% &$money_sprintf( $tot_tax - $tot_credit ) %> + @@ -224,7 +275,10 @@ sub gotcust { my $table = shift; my $prefix = @_ ? shift : ''; " - ( $table.${prefix}county = cust_main_county.county + ( $table.${prefix}city = cust_main_county.city + OR cust_main_county.city = '' + OR cust_main_county.city IS NULL ) + AND ( $table.${prefix}county = cust_main_county.county OR cust_main_county.county = '' OR cust_main_county.county IS NULL ) AND ( $table.${prefix}state = cust_main_county.state @@ -292,10 +346,11 @@ foreach my $r ( qsearch({ 'table' => 'cust_main_county', $regions{$label}->{$_} = $r->$_() for (qw( county state country )); #taxname? + my @url_param = qw( county state country taxname ); + push @url_param, 'city' if $cgi->param('show_cities') && $r->city(); + $regions{$label}->{'url_param'} = - join(';', map "$_=".uri_escape($r->$_()), - qw( county state country taxname ) - ); + join(';', map "$_=".uri_escape($r->$_()), @url_param ); my @param = @base_param; my $mywhere = $where; @@ -433,7 +488,7 @@ foreach my $r ( qsearch({ 'table' => 'cust_main_county', } -my $distinct = "country, state, county, +my $distinct = "country, state, county, city, CASE WHEN taxname IS NULL THEN '' ELSE taxname END AS taxname"; my $taxclass_distinct = #a little bit unsure of this part... test? @@ -463,9 +518,18 @@ if ( $conf->exists('tax-pkg_address') ) { $taxwhere =~ s/cust_pkg\.locationnum/cust_bill_pkg_tax_location.locationnum/g; } +my $creditfromwhere = $taxfromwhere. + " JOIN cust_credit_bill_pkg USING (billpkgnum"; +$creditfromwhere .= " ,billpkgtaxlocationnum" + if $conf->exists('tax-pkg_address'); +$creditfromwhere .= ")"; + $taxfromwhere .= " $taxwhere "; #AND payby != 'COMP' "; +$creditfromwhere .= " $taxwhere AND billpkgtaxratelocationnum IS NULL"; #AND payby != 'COMP' "; + my @taxparam = @base_param; + #should i be a cust_main_county method or something #need to pass in $taxfromwhere & @taxparam??? my $_taxamount_sub = sub { @@ -483,6 +547,21 @@ my $_taxamount_sub = sub { scalar_sql($r, \@taxparam, $sql ); }; +my $_creditamount_sub = sub { + my $r = shift; + + #match itemdesc if necessary! + my $named_tax = + $r->taxname + ? 'AND itemdesc = '. dbh->quote($r->taxname) + : "AND ( itemdesc IS NULL OR itemdesc = '' OR itemdesc = 'Tax' )"; + + my $sql = "SELECT SUM(cust_credit_bill_pkg.amount) ". + " $creditfromwhere AND cust_bill_pkg.pkgnum = 0 $named_tax"; + + scalar_sql($r, \@taxparam, $sql ); +}; + #tax-report_groups filtering my($group_op, $group_value) = ( '', '' ); if ( $cgi->param('report_group') =~ /^(=|!=) (.*)$/ ) { @@ -503,6 +582,7 @@ my $group_test = sub { }; my $tot_tax = 0; +my $tot_credit = 0; #foreach my $label ( keys %regions ) { foreach my $r ( qsearch(\%qsearch) ) { @@ -521,6 +601,13 @@ foreach my $r ( qsearch(\%qsearch) ) { $regions{$label}->{'tax'} += $x; $tot_tax += $x unless $cgi->param('show_taxclasses'); + ## calculate credit for this region + + $x = &{$_creditamount_sub}($r); + + $regions{$label}->{'credit'} += $x; + $tot_credit += $x unless $cgi->param('show_taxclasses'); + } my %base_regions = (); @@ -541,6 +628,14 @@ if ( $cgi->param('show_taxclasses') ) { $base_regions{$base_label}->{'tax'} += $x; $tot_tax += $x; + + ## calculate credit for this region + + $x = &{$_creditamount_sub}($r); + + $base_regions{$base_label}->{'credit'} += $x; + $tot_credit += $x; + } } @@ -553,7 +648,7 @@ my @regions = keys %regions; #calculate totals my( $total, $tot_taxable, $tot_owed ) = ( 0, 0, 0 ); -my( $exempt_cust, $exempt_pkg, $exempt_monthly ) = ( 0, 0, 0 ); +my( $exempt_cust, $exempt_pkg, $exempt_monthly, $tot_credit ) = ( 0, 0, 0, 0 ); my %taxclasses = (); my %county = (); my %state = (); @@ -565,6 +660,7 @@ foreach (@regions) { $exempt_cust += $regions{$_}->{'exempt_cust'}; $exempt_pkg += $regions{$_}->{'exempt_pkg'}; $exempt_monthly += $regions{$_}->{'exempt_monthly'}; + $tot_credit += $regions{$_}->{'credit'}; $taxclasses{$regions{$_}->{'taxclass'}} = 1 if $regions{$_}->{'taxclass'}; $county{$regions{$_}->{'county'}} = 1; @@ -620,6 +716,7 @@ push @regions, { 'rate' => '', 'owed' => $tot_owed, 'tax' => $tot_tax, + 'credit' => $tot_credit, }; #-- @@ -636,8 +733,9 @@ sub getlabel { my $label; if ( $r->tax == 0 - && ! scalar( qsearch('cust_main_county', { 'state' => $r->state, + && ! scalar( qsearch('cust_main_county', { 'city' => $r->city, 'county' => $r->county, + 'state' => $r->state, 'country' => $r->country, 'tax' => { op=>'>', value=>0 }, } @@ -656,6 +754,7 @@ sub getlabel { $label = $r->country; $label = $r->state.", $label" if $r->state; $label = $r->county." county, $label" if $r->county; + $label = $r->city. ", $label" if $r->city && $cgi->param('show_cities'); $label = "$label (". $r->taxclass. ")" if $r->taxclass && $cgi->param('show_taxclasses') @@ -692,5 +791,6 @@ $dateagentlink .= ';agentnum='. $cgi->param('agentnum') if length($agentname); my $baselink = $p. "search/cust_bill_pkg.cgi?$dateagentlink"; my $exemptlink = $p. "search/cust_tax_exempt_pkg.cgi?$dateagentlink"; +my $creditlink = $p. "search/cust_credit_bill_pkg.html?$dateagentlink";