summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2014-03-06 20:40:39 -0800
committerMark Wells <mark@freeside.biz>2014-03-06 20:40:39 -0800
commitdbd79d059c9353da8d521fce4ee2ce8cc3349a54 (patch)
tree96c27f661cfd3fb48d0ac15865958a0fcf06a843 /FS
parent144670c57ac321235202003682550fb2990873e3 (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.pm34
1 files changed, 26 insertions, 8 deletions
diff --git a/FS/FS/tax_rate.pm b/FS/FS/tax_rate.pm
index 4516004..9e458e2 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;