[freeside-commits] branch master updated. 76bf98af668225a893150347998aea8cc0856c7d
Jonathan Prykop
jonathan at 420.am
Wed Jul 15 20:11:10 PDT 2015
The branch, master has been updated
via 76bf98af668225a893150347998aea8cc0856c7d (commit)
via edba2cf4853c062f7f8bf4a41cd429559b548ffc (commit)
from 5eb1ba22744c6fd98c8a47a3923794a1591122a9 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 76bf98af668225a893150347998aea8cc0856c7d
Author: Jonathan Prykop <jonathan at freeside.biz>
Date: Wed Jul 15 22:10:12 2015 -0500
fixed Cancel customer link in new menu
diff --git a/httemplate/view/cust_main/menu.html b/httemplate/view/cust_main/menu.html
index c2547dd..f8ccc69 100644
--- a/httemplate/view/cust_main/menu.html
+++ b/httemplate/view/cust_main/menu.html
@@ -224,7 +224,7 @@ my @menu = (
},
{
label => 'Cancel',
- popup => "misc/suspend_cust.html?custnum=$custnum",
+ popup => "misc/cancel_cust.html?custnum=$custnum",
acl => 'Cancel customer',
condition => sub { shift->ncancelled_pkgs > 0 },
actionlabel => 'Confirm Cancellation',
commit edba2cf4853c062f7f8bf4a41cd429559b548ffc
Author: Jonathan Prykop <jonathan at freeside.biz>
Date: Wed Jul 15 22:07:27 2015 -0500
RT#37125: Include discounts in report: customer accounting summary
diff --git a/FS/FS/Report/Table.pm b/FS/FS/Report/Table.pm
index 0a0d24a..ffa1172 100644
--- a/FS/FS/Report/Table.pm
+++ b/FS/FS/Report/Table.pm
@@ -272,17 +272,53 @@ sub netrefunds {
sub discounted {
my( $self, $speriod, $eperiod, $agentnum, %opt) = @_;
- $self->scalar_sql('SELECT SUM(cust_bill_pkg_discount.amount)
- FROM cust_bill_pkg_discount
- JOIN cust_bill_pkg USING ( billpkgnum )
- JOIN cust_bill USING ( invnum )
- JOIN cust_main USING ( custnum )
- WHERE '. $self->in_time_period_and_agent( $speriod,
- $eperiod,
- $agentnum,
- 'cust_bill._date'
- ).
- $self->for_opts(%opt)
+
+ my $sql = 'SELECT SUM(';
+ if ($opt{'setuprecur'}) {
+ $sql .= <<EOF;
+CASE
+ WHEN discount.setup = 'Y'
+ AND ((COALESCE(cust_bill_pkg.unitsetup,0) > 0)
+ OR (COALESCE(cust_bill_pkg.unitrecur,0) > 0))
+ THEN
+EOF
+ if ($opt{'setuprecur'} eq 'setup') {
+ $sql .= ' (COALESCE(cust_bill_pkg.unitsetup,0)';
+ } elsif ($opt{'setuprecur'} eq 'recur') {
+ $sql .= ' (COALESCE(cust_bill_pkg.unitrecur,0)';
+ } else {
+ die 'Unrecognized value for setuprecur';
+ }
+ $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
+ } else {
+ $sql .= "cust_bill_pkg_discount.amount\n";
+ }
+ $sql .= <<EOF;
+) FROM cust_bill_pkg_discount
+ JOIN cust_bill_pkg USING ( billpkgnum )
+ JOIN cust_bill USING ( invnum )
+ JOIN cust_main USING ( custnum )
+EOF
+ if ($opt{'setuprecur'}) {
+ $sql .= <<EOF;
+ JOIN cust_pkg_discount USING ( pkgdiscountnum )
+ LEFT JOIN discount USING ( discountnum )
+EOF
+ }
+ $self->scalar_sql(
+ $sql
+ . 'WHERE '
+ . $self->in_time_period_and_agent( $speriod,
+ $eperiod,
+ $agentnum,
+ 'cust_bill._date'
+ )
+ . $self->for_opts(%opt)
);
}
diff --git a/httemplate/search/customer_accounting_summary.html b/httemplate/search/customer_accounting_summary.html
index 0dab7ce..744b313 100644
--- a/httemplate/search/customer_accounting_summary.html
+++ b/httemplate/search/customer_accounting_summary.html
@@ -141,9 +141,20 @@ $title .= 'Customer Accounting Summary Report';
my @items = ('netsales', 'cashflow');
my @params = ( [], [] );
-my $setuprecur = '';
-if ( $cgi->param('setuprecur') ) {
- $setuprecur = 1;
+my $grossdiscount = $cgi->param('grossdiscount');
+my $setuprecur = $cgi->param('setuprecur');
+if ($setuprecur && $grossdiscount) {
+ #see blocks below for more details on each option
+ @items = ('gross', 'discounted', 'receipts', 'gross', 'discounted', 'receipts');
+ @params = (
+ [ setuprecur => 'setup' ],
+ [ setuprecur => 'setup' ],
+ [ setuprecur => 'setup' ],
+ [ setuprecur => 'recur' ],
+ [ setuprecur => 'recur' ],
+ [ setuprecur => 'recur' ],
+ );
+} elsif ($setuprecur) {
# instead of 'cashflow' (payments - refunds), use 'receipts'
# (applied payments), because it's divisible into setup and recur.
@items = ('netsales', 'receipts', 'netsales', 'receipts');
@@ -153,7 +164,14 @@ if ( $cgi->param('setuprecur') ) {
[ setuprecur => 'recur' ],
[ setuprecur => 'recur' ],
);
+} elsif ($grossdiscount) {
+ # instead of 'netsales' (invoiced - netcredits)
+ # use 'gross' (invoiced + discounted) and 'discounted' (sum of discounts on invoices)
+ @items = ('gross', 'discounted', 'cashflow');
+ @params = ( [], [], [] );
}
+
+
my @labels = ();
my @cross_params = ();
@@ -208,7 +226,7 @@ $cells[0] = [
{ header => 1, rowspan => 2, colspan => ($setuprecur ? 4 : 3) },
($setuprecur ? '' : ()),
map {
- { header => 1, colspan => 2, value => time2str('%b %Y', $_) },
+ { header => 1, colspan => ($grossdiscount ? 3 : 2), value => time2str('%b %Y', $_) },
''
} @{ $data->{speriod} }
];
@@ -218,8 +236,14 @@ $rows[1] = {};
$cells[1] = [ '',
($setuprecur ? '' : ()),
map {
- ( { header => 1, value => mt('Billed') },
- { header => 1, value => mt('Paid') }
+ ( ($grossdiscount
+ ? (
+ { header => 1, value => mt('Gross') },
+ { header => 1, value => mt('Discount') }
+ )
+ : { header => 1, value => mt('Billed') }
+ ),
+ { header => 1, value => mt('Paid') },
) } (1..$ncols)
];
@@ -256,12 +280,12 @@ foreach my $cust_main (@cust_main) { # correspond to cross_params
header => 1 };
}
for my $col (0..$ncols-1) { # the month
- for my $subcol (0..1) { # the billed/paid axis
- my $item = $subrow * 2 + $subcol;
+ for my $subcol (0..($grossdiscount ? 2 : 1)) { # the billed/paid or gross/discount/paid axis
+ my $item = $subrow * ($grossdiscount ? 3 : 2) + $subcol;
my $value = $data->{data}[$item][$col][$row];
$skip = 0 if abs($value) > 0.005;
push @thisrow, { value => sprintf('%0.2f', $value), format => 'money' };
- $total[( ($ncols * $subrow) + $col ) * 2 + $subcol] += $value;
+ $total[( ($ncols * $subrow) + $col ) * ($grossdiscount ? 3 : 2) + $subcol] += $value;
} #subcol
} #col
push @cells, \@thisrow;
@@ -294,8 +318,8 @@ for my $subrow (0..($setuprecur ? 1 : 0)) {
{ value => $subrow ? mt('recurring') : mt('setup'),
header => 1 };
}
- for my $col (0..($ncols * 2)-1) { # month and billed/paid axis
- my $value = $total[($subrow * $ncols * 2) + $col];
+ for my $col (0..($ncols * ($grossdiscount ? 3 : 2))-1) { # month and billed/paid or gross/discount/paid axis
+ my $value = $total[($subrow * $ncols * ($grossdiscount ? 3 : 2)) + $col];
push @thisrow, { value => sprintf('%0.2f', $value), format => 'money' };
}
push @cells, \@thisrow;
diff --git a/httemplate/search/report_customer_accounting_summary.html b/httemplate/search/report_customer_accounting_summary.html
index 8206f34..bdcdbcc 100755
--- a/httemplate/search/report_customer_accounting_summary.html
+++ b/httemplate/search/report_customer_accounting_summary.html
@@ -37,6 +37,11 @@
'value' => 1,
&>
+ <& /elements/tr-checkbox.html,
+ 'label' => 'Show Gross & Discounted',
+ 'field' => 'grossdiscount',
+ 'value' => 1,
+ &>
</TABLE>
-----------------------------------------------------------------------
Summary of changes:
FS/FS/Report/Table.pm | 58 ++++++++++++++++----
httemplate/search/customer_accounting_summary.html | 46 ++++++++++++----
.../search/report_customer_accounting_summary.html | 5 ++
httemplate/view/cust_main/menu.html | 2 +-
4 files changed, 88 insertions(+), 23 deletions(-)
More information about the freeside-commits
mailing list