summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-07-20 19:24:48 -0500
committerJonathan Prykop <jonathan@freeside.biz>2015-07-20 19:24:48 -0500
commit86b44a7897af8265bcd87603fbf2632489ca10b8 (patch)
tree80a3e492a25b21bf3b094a14a0b863dea948b4d1
parentf97cd91298d3cbfd380741cf4a64d402d3628ecd (diff)
RT#37125: Include discounts in report: customer accounting summary [some fixes]
-rw-r--r--FS/FS/Report/Table.pm20
-rwxr-xr-xhttemplate/search/report_customer_accounting_summary.html9
2 files changed, 21 insertions, 8 deletions
diff --git a/FS/FS/Report/Table.pm b/FS/FS/Report/Table.pm
index ffa117240..63e5318c3 100644
--- a/FS/FS/Report/Table.pm
+++ b/FS/FS/Report/Table.pm
@@ -229,7 +229,8 @@ sub receipts { #net payments
my $sql = 'SELECT SUM(cust_bill_pay.amount) FROM cust_bill_pay';
if ( $opt{'setuprecur'} ) {
$sql = 'SELECT SUM('.
- FS::cust_bill_pkg->paid_sql($speriod, $eperiod, %opt).
+ #in practice, but not appearance, paid_sql accepts end before start
+ FS::cust_bill_pkg->paid_sql($eperiod, $speriod, %opt).
') FROM cust_bill_pkg';
}
@@ -275,6 +276,11 @@ sub discounted {
my $sql = 'SELECT SUM(';
if ($opt{'setuprecur'}) {
+ # (This isn't exact but it works in most cases.)
+ # When splitting into setup/recur values,
+ # if the discount is allowed to apply to setup fees (discount.setup = 'Y')
+ # then split it between the "setup" and "recurring" rows in proportion to
+ # the "unitsetup" and "unitrecur" fields of the line item.
$sql .= <<EOF;
CASE
WHEN discount.setup = 'Y'
@@ -291,11 +297,15 @@ EOF
}
$sql .= ' / (COALESCE(cust_bill_pkg.unitsetup,0) + COALESCE(cust_bill_pkg.unitrecur,0)))';
$sql .= " * cust_bill_pkg_discount.amount\n";
- $sql .= <<EOF;
- ELSE cust_bill_pkg_discount.amount
-END
-EOF
+ # Otherwise, show it all as "recurring"
+ if ($opt{'setuprecur'} eq 'setup') {
+ $sql .= " ELSE 0\n";
+ } elsif ($opt{'setuprecur'} eq 'recur') {
+ $sql .= " ELSE cust_bill_pkg_discount.amount\n";
+ }
+ $sql .= "END\n";
} else {
+ # simple case, no setuprecur
$sql .= "cust_bill_pkg_discount.amount\n";
}
$sql .= <<EOF;
diff --git a/httemplate/search/report_customer_accounting_summary.html b/httemplate/search/report_customer_accounting_summary.html
index bdcdbccd1..cd8622ee3 100755
--- a/httemplate/search/report_customer_accounting_summary.html
+++ b/httemplate/search/report_customer_accounting_summary.html
@@ -38,9 +38,12 @@
&>
<& /elements/tr-checkbox.html,
- 'label' => 'Show Gross &amp; Discounted',
- 'field' => 'grossdiscount',
- 'value' => 1,
+ 'label' => 'Show Gross &amp; Discounted',
+ 'field' => 'grossdiscount',
+ 'value' => 1,
+ 'curr_value' => defined($cgi->param('grossdiscount'))
+ ? scalar($cgi->param('grossdiscount'))
+ : 1, #default to on in v4
&>
</TABLE>