[freeside-commits] branch master updated. 05dee44cdb4e93df6963ae396f916705c4086f86

Jonathan Prykop jonathan at 420.am
Thu Feb 25 07:15:01 PST 2016


The branch, master has been updated
       via  05dee44cdb4e93df6963ae396f916705c4086f86 (commit)
      from  82947aebf5bd25d69cf3da8b658b22df76629c9b (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 05dee44cdb4e93df6963ae396f916705c4086f86
Author: Jonathan Prykop <jonathan at freeside.biz>
Date:   Thu Feb 25 09:14:26 2016 -0600

    RT#30600: Auto Apply for CC payments

diff --git a/FS/FS/cust_main/Billing_Realtime.pm b/FS/FS/cust_main/Billing_Realtime.pm
index 747f4af..e2a0267 100644
--- a/FS/FS/cust_main/Billing_Realtime.pm
+++ b/FS/FS/cust_main/Billing_Realtime.pm
@@ -154,7 +154,9 @@ specified invoice.  If the customer has exactly one open invoice, that
 invoice number will be assumed.  If you don't specify an I<invnum> you might 
 want to call the B<apply_payments> method or set the I<apply> option.
 
-I<apply> can be set to true to apply a resulting payment.
+I<apply> can be set to true to run B<apply_payments_and_credits> on success.
+
+I<no_auto_apply> can be set to true to prevent resulting payment from being automatically applied.
 
 I<quiet> can be set true to surpress email decline notices.
 
@@ -903,7 +905,7 @@ sub _realtime_bop_result {
        'processor'      => $payment_gateway->gateway_module,
        'auth'           => $transaction->authorization,
        'order_number'   => $order_number || '',
-
+       'no_auto_apply'  => $options{'no_auto_apply'} ? 'Y' : '',
     } );
     #doesn't hurt to know, even though the dup check is in cust_pay_pending now
     $cust_pay->payunique( $options{payunique} )
diff --git a/httemplate/misc/payment.cgi b/httemplate/misc/payment.cgi
index 02648a8..f30e409 100644
--- a/httemplate/misc/payment.cgi
+++ b/httemplate/misc/payment.cgi
@@ -33,6 +33,57 @@
     &>
 % }
 
+% my $disallow_no_auto_apply = 0;
+% if ( $conf->exists("batch-enable")
+%      || grep $payby eq $_, $conf->config('batch-enable_payby')
+%    ) {
+%
+%     if ( grep $payby eq $_, $conf->config('realtime-disable_payby') ) {
+%       $disallow_no_auto_apply = 1;
+
+          <INPUT TYPE="hidden" NAME="batch" VALUE="1">
+
+%     } else {
+
+          <TR>
+            <TH ALIGN="right">   <% mt('Add to current batch') |h %></TH>
+            <TD>
+              <INPUT TYPE="checkbox" NAME="batch" VALUE="1" ID="batch_checkbox" ONCHANGE="change_batch_checkbox()">
+            </TD>
+          </TR>
+
+%     }
+% }
+
+% unless ($disallow_no_auto_apply) {
+%   # false laziness with edit/cust_pay.cgi
+
+<TR ID="apply_box_row">
+  <TH ALIGN="right"><% mt('Auto-apply to invoices') |h %></TH>
+  <TD COLSPAN=2>
+    <SELECT NAME="apply" ID="apply_box">
+      <OPTION VALUE="yes" SELECTED><% mt('yes') |h %></OPTION> 
+      <OPTION VALUE=""><% mt('not now') |h %></OPTION>
+      <OPTION VALUE="never"><% mt('never') |h %></OPTION>
+    </SELECT>
+  </TD>
+</TR>
+
+% # this can go away if no_auto_apply handling gets added to batch payment processing
+<SCRIPT>
+function change_batch_checkbox () {
+  if (document.getElementById('batch_checkbox').checked) {
+    document.getElementById('apply_box').disabled = true;
+    document.getElementById('apply_box_row').style.display = 'none';
+  } else {
+    document.getElementById('apply_box').disabled = false;
+    document.getElementById('apply_box_row').style.display = '';
+  }
+}
+</SCRIPT>
+
+% }
+
 <SCRIPT TYPE="text/javascript">
   function cust_payby_changed (what) {
     var custpaybynum = what.options[what.selectedIndex].value
@@ -234,26 +285,6 @@
   </TD>
 </TR>
 
-% if ( $conf->exists("batch-enable")
-%      || grep $payby eq $_, $conf->config('batch-enable_payby')
-%    ) {
-%
-%     if ( grep $payby eq $_, $conf->config('realtime-disable_payby') ) {
-
-          <INPUT TYPE="hidden" NAME="batch" VALUE="1">
-
-%     } else {
-
-          <TR>
-            <TD COLSPAN=2>
-              <INPUT TYPE="checkbox" NAME="batch" VALUE="1">
-              <% mt('Add to current batch') |h %> 
-            </TD>
-          </TR>
-
-%     }
-% }
-
 <TR>
   <TD COLSPAN=8>
     <INPUT TYPE="checkbox"<% $auto ? ' CHECKED' : '' %> NAME="auto" VALUE="1" onClick="if (this.checked) { document.OneTrueForm.save.checked=true; }">
diff --git a/httemplate/misc/process/payment.cgi b/httemplate/misc/process/payment.cgi
index 79b43b7..a3cfbae 100644
--- a/httemplate/misc/process/payment.cgi
+++ b/httemplate/misc/process/payment.cgi
@@ -231,6 +231,7 @@ if ( $cgi->param('batch') ) {
     'paycvv'     => $paycvv,
     'paynum_ref' => \$paynum,
     'discount_term' => $discount_term,
+    'no_auto_apply' => ($cgi->param('apply') eq 'never') ? 'Y' : '',
     map { $_ => scalar($cgi->param($_)) } @{$payby2fields{$payby}}
   );
   errorpage($error) if $error;
@@ -251,7 +252,7 @@ if ( $cgi->param('batch') ) {
 
   }
 
-  $cust_main->apply_payments;
+  $cust_main->apply_payments if ($cgi->param('apply') eq 'yes');
 
 }
 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS/cust_main/Billing_Realtime.pm |    6 ++-
 httemplate/misc/payment.cgi         |   71 +++++++++++++++++++++++++----------
 httemplate/misc/process/payment.cgi |    3 +-
 3 files changed, 57 insertions(+), 23 deletions(-)




More information about the freeside-commits mailing list