diff options
author | Mark Wells <mark@freeside.biz> | 2014-03-06 20:40:39 -0800 |
---|---|---|
committer | Mark Wells <mark@freeside.biz> | 2014-03-06 20:40:39 -0800 |
commit | dbd79d059c9353da8d521fce4ee2ce8cc3349a54 (patch) | |
tree | 96c27f661cfd3fb48d0ac15865958a0fcf06a843 /FS | |
parent | 144670c57ac321235202003682550fb2990873e3 (diff) |
fix vendor tax report in light of non-package fees and cust_payby refactoring, #27964
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/tax_rate.pm | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/FS/FS/tax_rate.pm b/FS/FS/tax_rate.pm index 451600432..9e458e27f 100644 --- a/FS/FS/tax_rate.pm +++ b/FS/FS/tax_rate.pm @@ -1826,6 +1826,12 @@ sub browse_queries { =item queue_liability_report PARAMS Launches a tax liability report. + +PARAMS needs to be a base64-encoded Storable hash containing: +- beginning: the start date, as a I<user-readable string> (not a timestamp). +- end: the end date of the report, likewise. +- agentnum: the agent to limit the report to, if any. + =cut sub queue_liability_report { @@ -1849,8 +1855,12 @@ sub queue_liability_report { =item generate_liability_report PARAMS -Generates a tax liability report. Provide a hash including desired -agentnum, beginning, and ending +Generates a tax liability report. PARAMS must include: + +- beginning, as a timestamp +- ending, as a timestamp +- p: the Freeside root URL, for generating links +- agentnum (optional) =cut @@ -1912,11 +1922,16 @@ sub generate_liability_report { my %taxes = (); my %basetaxes = (); my $calculated = 0; + + # get all distinct tuples of (tax name, state, county, city, locationtaxid) + # for taxes that have been charged + # (state, county, city are from tax_rate_location, not from customer data) my @tax_and_location = qsearch({ table => 'cust_bill_pkg', select => $select, hashref => { pkgpart => 0 }, addl_from => $addl_from, extra_sql => $where, + debug => 1, }); $count = scalar(@tax_and_location); foreach my $t ( @tax_and_location ) { @@ -1940,15 +1955,17 @@ sub generate_liability_report { $taxes{$label}->{'url_param'} = join(';', map { "$_=". uri_escape($t->$_) } @params); - my $payby_itemdesc_loc = - " payby != 'COMP' ". - "AND ( itemdesc = ? OR ? = '' AND itemdesc IS NULL ) ". + my $itemdesc_loc = + # " payby != 'COMP' ". # breaks the entire report under 4.x + # # and unnecessary since COMP accounts don't + # # get taxes calculated in the first place + " ( itemdesc = ? OR ? = '' AND itemdesc IS NULL ) ". "AND ". FS::tax_rate_location->location_sql( map { $_ => $t->$_ } @taxparams ); my $taxwhere = - "FROM cust_bill_pkg $addl_from $where AND $payby_itemdesc_loc"; + "FROM cust_bill_pkg $addl_from $where AND $itemdesc_loc"; my $sql = "SELECT SUM(amount) $taxwhere AND cust_bill_pkg.pkgnum = 0"; @@ -1959,7 +1976,7 @@ sub generate_liability_report { my $creditfrom = "JOIN cust_credit_bill_pkg USING (billpkgnum,billpkgtaxratelocationnum)"; my $creditwhere = - "FROM cust_bill_pkg $addl_from $creditfrom $where AND $payby_itemdesc_loc"; + "FROM cust_bill_pkg $addl_from $creditfrom $where AND $itemdesc_loc"; $sql = "SELECT SUM(cust_credit_bill_pkg.amount) ". " $creditwhere AND cust_bill_pkg.pkgnum = 0"; @@ -2023,7 +2040,8 @@ sub generate_liability_report { my $dateagentlink = "begin=$args{beginning};end=$args{ending}"; $dateagentlink .= ';agentnum='. $args{agentnum} if length($agentname); - my $baselink = $args{p}. "search/cust_bill_pkg.cgi?$dateagentlink"; + my $baselink = $args{p}. "search/cust_bill_pkg.cgi?vendortax=1;" . + $dateagentlink; my $creditlink = $args{p}. "search/cust_credit_bill_pkg.html?$dateagentlink"; print $report <<EOF; |