[freeside-commits] branch FREESIDE_2_3_BRANCH updated. 162a27fe7ce0c2707026d0e74a60079918cdc899

Mark Wells mark at 420.am
Thu Jan 16 20:41:13 PST 2014


The branch, FREESIDE_2_3_BRANCH has been updated
       via  162a27fe7ce0c2707026d0e74a60079918cdc899 (commit)
      from  f85aefbd0f63cdcd3ea93e3c2f6ab4c413ee562f (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 162a27fe7ce0c2707026d0e74a60079918cdc899
Author: Mark Wells <mark at freeside.biz>
Date:   Thu Jan 16 20:09:24 2014 -0800

    when sending statements as payment receipts, ensure the payment appears on the statement, #24850

diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm
index e56ddf7..26288bf 100644
--- a/FS/FS/cust_bill.pm
+++ b/FS/FS/cust_bill.pm
@@ -2004,7 +2004,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);
 
@@ -3356,7 +3356,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'});
@@ -3382,13 +3384,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'};
@@ -5338,14 +5344,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;
   }
@@ -5373,18 +5387,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/cust_bill.pm |   58 ++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 43 insertions(+), 15 deletions(-)




More information about the freeside-commits mailing list