[freeside-commits] branch master updated. f16b7061d422461897e2a929fd47e2a7eecbaa64
Mark Wells
mark at 420.am
Thu Jan 16 20:41:14 PST 2014
The branch, master has been updated
via f16b7061d422461897e2a929fd47e2a7eecbaa64 (commit)
from 667092dd41cd5ffffbaa9fa0bb93b998aed565bd (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 f16b7061d422461897e2a929fd47e2a7eecbaa64
Author: Mark Wells <mark at freeside.biz>
Date: Thu Jan 16 20:40:20 2014 -0800
when sending statements as payment receipts, ensure the payment appears on the statement, #24850
diff --git a/FS/FS/Template_Mixin.pm b/FS/FS/Template_Mixin.pm
index 2d9be61..990f31f 100644
--- a/FS/FS/Template_Mixin.pm
+++ b/FS/FS/Template_Mixin.pm
@@ -1223,7 +1223,9 @@ sub print_generic {
# credits
my $credittotal = 0;
- foreach my $credit ( $self->_items_credits('trim_len'=>60) ) {
+ foreach my $credit (
+ $self->_items_credits( 'template' => $template, 'trim_len' => 60 )
+ ) {
my $total;
$total->{'total_item'} = &$escape_function($credit->{'description'});
@@ -1249,13 +1251,17 @@ sub print_generic {
$invoice_data{'credittotal'} = sprintf('%.2f', $credittotal);
#credits (again)
- foreach my $credit ( $self->_items_credits('trim_len'=>32) ) {
+ foreach my $credit (
+ $self->_items_credits( 'template' => $template, 'trim_len'=>32 )
+ ) {
push @buf, [ $credit->{'description'}, $money_char.$credit->{'amount'} ];
}
# payments
my $paymenttotal = 0;
- foreach my $payment ( $self->_items_payments ) {
+ foreach my $payment (
+ $self->_items_payments( 'template' => $template )
+ ) {
my $total = {};
$total->{'total_item'} = &$escape_function($payment->{'description'});
$paymenttotal += $payment->{'amount'};
diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm
index 9a971dd..63ae884 100644
--- a/FS/FS/cust_bill.pm
+++ b/FS/FS/cust_bill.pm
@@ -1971,7 +1971,7 @@ sub print_csv {
my $pmt_cr_applied = 0;
$pmt_cr_applied += $_->{'amount'}
- foreach ( $self->_items_payments, $self->_items_credits ) ;
+ foreach ( $self->_items_payments(%opt), $self->_items_credits(%opt) ) ;
my $totaldue = sprintf('%.2f', $self->owed + $previous_balance);
@@ -2998,14 +2998,22 @@ sub _items_credits {
#credits
my @objects;
if ( $self->conf->exists('previous_balance-payments_since') ) {
- my $date = 0;
- $date = $self->previous_bill->_date if $self->previous_bill;
- @objects = qsearch('cust_credit', {
- 'custnum' => $self->custnum,
- '_date' => {op => '>=', value => $date},
+ if ( $opt{'template'} eq 'statement' ) {
+ # then the current bill is a "statement" (i.e. an invoice sent as
+ # a payment receipt)
+ # and in that case we want to see payments on or after THIS invoice
+ @objects = qsearch('cust_credit', {
+ 'custnum' => $self->custnum,
+ '_date' => {op => '>=', value => $self->_date},
});
- # hard to do this in the qsearch...
- @objects = grep { $_->_date < $self->_date } @objects;
+ } else {
+ my $date = 0;
+ $date = $self->previous_bill->_date if $self->previous_bill;
+ @objects = qsearch('cust_credit', {
+ 'custnum' => $self->custnum,
+ '_date' => {op => '>=', value => $date},
+ });
+ }
} else {
@objects = $self->cust_credited;
}
@@ -3033,18 +3041,32 @@ sub _items_credits {
sub _items_payments {
my $self = shift;
+ my %opt = @_;
my @b;
my $detailed = $self->conf->exists('invoice_payment_details');
my @objects;
if ( $self->conf->exists('previous_balance-payments_since') ) {
- my $date = 0;
- $date = $self->previous_bill->_date if $self->previous_bill;
- @objects = qsearch('cust_pay', {
+ # then show payments dated on/after the previous bill...
+ if ( $opt{'template'} eq 'statement' ) {
+ # then the current bill is a "statement" (i.e. an invoice sent as
+ # a payment receipt)
+ # and in that case we want to see payments on or after THIS invoice
+ @objects = qsearch('cust_pay', {
+ 'custnum' => $self->custnum,
+ '_date' => {op => '>=', value => $self->_date},
+ });
+ } else {
+ # the normal case: payments on or after the previous invoice
+ my $date = 0;
+ $date = $self->previous_bill->_date if $self->previous_bill;
+ @objects = qsearch('cust_pay', {
'custnum' => $self->custnum,
'_date' => {op => '>=', value => $date},
});
- @objects = grep { $_->_date < $self->_date } @objects;
+ # and before the current bill...
+ @objects = grep { $_->_date < $self->_date } @objects;
+ }
} else {
@objects = $self->cust_bill_pay;
}
-----------------------------------------------------------------------
Summary of changes:
FS/FS/Template_Mixin.pm | 12 +++++++++---
FS/FS/cust_bill.pm | 46 ++++++++++++++++++++++++++++++++++------------
2 files changed, 43 insertions(+), 15 deletions(-)
More information about the freeside-commits
mailing list