RT#30600: Auto Apply for CC payments [no_invnum flag]
authorJonathan Prykop <jonathan@freeside.biz>
Thu, 25 Feb 2016 17:27:03 +0000 (11:27 -0600)
committerJonathan Prykop <jonathan@freeside.biz>
Thu, 25 Feb 2016 17:27:03 +0000 (11:27 -0600)
FS/FS/cust_main/Billing_Realtime.pm
httemplate/misc/process/payment.cgi

index e2a0267..53070df 100644 (file)
@@ -154,9 +154,13 @@ 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<no_invnum> can be set to true to prevent that default invnum from being set.
+
 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<no_auto_apply> can be set to true to set that flag on the resulting payment
+(prevents payment from being applied by B<apply_payments> or B<apply_payments_and_credits>,
+but will still be applied if I<invnum> exists...use with I<no_invnum> for intended effect.)
 
 I<quiet> can be set true to surpress email decline notices.
 
@@ -279,7 +283,7 @@ sub _bop_defaults {
   }
 
   # Default invoice number if the customer has exactly one open invoice.
-  if( ! $options->{'invnum'} ) {
+  unless ( $options->{'invnum'} || $options->{'no_invnum'} ) {
     $options->{'invnum'} = '';
     my @open = $self->open_cust_bill;
     $options->{'invnum'} = $open[0]->invnum if scalar(@open) == 1;
index a3cfbae..d232fe7 100644 (file)
@@ -232,6 +232,7 @@ if ( $cgi->param('batch') ) {
     'paynum_ref' => \$paynum,
     'discount_term' => $discount_term,
     'no_auto_apply' => ($cgi->param('apply') eq 'never') ? 'Y' : '',
+    'no_invnum'     => 1,
     map { $_ => scalar($cgi->param($_)) } @{$payby2fields{$payby}}
   );
   errorpage($error) if $error;