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.
'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} )
&>
% }
+% 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
</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; }">
'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;
}
- $cust_main->apply_payments;
+ $cust_main->apply_payments if ($cgi->param('apply') eq 'yes');
}