<TD>
<SELECT NAME="<%$name%>_payby"
- onChange="<%$name%>_payby_changed(this)"
+ ID="<%$id%>_payby"
+ onChange="payby_changed(this)"
>
% foreach my $payby (@payby) {
<OPTION VALUE="<% $payby %>"
ID = "<%$id%>_paycvv"
SIZE = 2
MAXLENGTH = 4
- VALUE = "<% $cgi->param($name.'_paycvv') %>"
+ VALUE = "<% scalar($cgi->param($name.'_paycvv')) || ('*' x length($cust_payby->paycvv)) %>"
onChange = "<% $onchange %>"
>
- <BR><FONT SIZE="-1"><% mt('CVV2') |h %> (<A HREF="javascript:void(0);" onClick="overlib( OLiframeContent('<%$p%>docs/cvv2.html', 480, 275, 'cvv2_popup' ), CAPTION, 'CVV2 Help', STICKY, AUTOSTATUSCAP, CLOSECLICK, DRAGGABLE ); return false;"><% mt('help') |h %></A>)</FONT>
+ <BR><FONT SIZE="-1"><% mt('CVV2') |h %> <& /elements/popup_link.html,
+ 'action' => $p.'docs/cvv2.html',
+ 'label' => mt('(help)'),
+ 'actionlabel' => 'CVV2 Help',
+ 'width' => 480,
+ 'height' => 275,
+ 'nocenter' => 1,
+ #popup_name => 'cvv2_popup',
+ &></FONT>
</TD>
<TD ID="<%$id%>_td_payname" <%$card_display%>>
</SELECT>
<BR><FONT SIZE="-1"><% mt('Account type') |h %></FONT>
</TD>
-
-% my( $account, $aba ) = split('@',
-% ( $cgi->param($name.'_payby') || $cust_payby->payby ) =~ /^(CHEK|DCHK)$/
-% ? $cgi->param($name.'_payinfo')
-% : $cust_payby->payinfo
-% );
-% my $branch = '';
-% ($branch,$aba) = split('\.',$aba)
-% if $echeck_country eq 'CA';
+
+% my ( $account, $aba, $branch ) = ( '', '', '' );
+% if ( $cgi->param($name.'_payby') =~ /^(CHEK|DCHK)$/ ) {
+% $account = $cgi->param($name.'_payinfo1');
+% $aba = $cgi->param($name.'_payinfo2');
+% $branch = $cgi->param($name.'_payinfo3');
+% } elsif ( $cust_payby->payby =~ /^(CHEK|DCHK)$/ ) {
+% ( $account, $aba ) = split('@', $cust_payby->payinfo);
+% ( $branch, $aba ) = split('\.',$aba)
+% if $echeck_country eq 'CA';
+% }
%
% #false laziness w/view/cust_main/billing.html and misc/payment.cgi
% my $routing_label = $echeck_country eq 'US' ? 'ABA/Routing #'
<& /elements/select-state.html,
'prefix' => $name. '_pay',
'empty' => emt('(choose)'),
- 'state' => $cgi->param($name.'_paystate')
- || $cust_payby->paystate,
+ 'state' => ( scalar($cgi->param($name.'_paystate'))
+ || $cust_payby->paystate ),
#was cust_main->country in 3.x, but this will do until/unlesss
# someone needs to track foreign bank states
- 'country' => scalar($conf->config('countrydefault')) || 'US',
+ 'country' => ( scalar($conf->config('countrydefault')) || 'US' ),
&>
<BR><FONT SIZE="-1"><% mt('Bank state') |h %></FONT>
</TD>
</TABLE>
% }
-% unless ( $opt{'html_only'} ) {
+% unless ( $opt{'html_only'} || $payby_changed_init ) {
<SCRIPT TYPE="text/javascript">
- function <%$name%>_payby_changed(what) {
+ function payby_changed(what) {
+ var field_match = what.id.match(/(.*)_payby$/);
+ var field_id = field_match[1];
var payby = what.options[what.selectedIndex].value;
if ( payby == 'CARD' ) {
- document.getElementById('<%$id%>_td_payinfo').style.display = '';
- document.getElementById('<%$id%>_td_paydate').style.display = '';
- document.getElementById('<%$id%>_td_paycvv').style.display = '';
- document.getElementById('<%$id%>_td_payname').style.display = '';
- document.getElementById('<%$id%>_td_payinfo1').style.display = 'none';
- document.getElementById('<%$id%>_td_payinfo2').style.display = 'none';
- document.getElementById('<%$id%>_td_paytype').style.display = 'none';
- document.getElementById('<%$id%>_td_payname_CHEK').style.display = 'none';
- var td_payinfo3 = document.getElementById('<%$id%>_td_payinfo3');
+ document.getElementById(field_id+'_td_payinfo').style.display = '';
+ document.getElementById(field_id+'_td_paydate').style.display = '';
+ document.getElementById(field_id+'_td_paycvv').style.display = '';
+ document.getElementById(field_id+'_td_payname').style.display = '';
+ document.getElementById(field_id+'_td_payinfo1').style.display = 'none';
+ document.getElementById(field_id+'_td_payinfo2').style.display = 'none';
+ document.getElementById(field_id+'_td_paytype').style.display = 'none';
+ document.getElementById(field_id+'_td_payname_CHEK').style.display = 'none';
+ var td_payinfo3 = document.getElementById(field_id+'_td_payinfo3');
if ( td_payinfo3 ) {
td_payinfo3.style.display = 'none';
}
- var td_paystate = document.getElementById('<%$id%>_td_paystate');
+ var td_paystate = document.getElementById(field_id+'_td_paystate');
if ( td_paystate ) {
td_paystate.style.display = 'none';
}
} else if ( payby == 'CHEK' ) {
- document.getElementById('<%$id%>_td_payinfo').style.display = 'none';
- document.getElementById('<%$id%>_td_paydate').style.display = 'none';
- document.getElementById('<%$id%>_td_paycvv').style.display = 'none';
- document.getElementById('<%$id%>_td_payname').style.display = 'none';
- document.getElementById('<%$id%>_td_payinfo1').style.display = '';
- document.getElementById('<%$id%>_td_payinfo2').style.display = '';
- document.getElementById('<%$id%>_td_paytype').style.display = '';
- document.getElementById('<%$id%>_td_payname_CHEK').style.display = '';
- var td_payinfo3 = document.getElementById('<%$id%>_td_payinfo3');
+ document.getElementById(field_id+'_td_payinfo').style.display = 'none';
+ document.getElementById(field_id+'_td_paydate').style.display = 'none';
+ document.getElementById(field_id+'_td_paycvv').style.display = 'none';
+ document.getElementById(field_id+'_td_payname').style.display = 'none';
+ document.getElementById(field_id+'_td_payinfo1').style.display = '';
+ document.getElementById(field_id+'_td_payinfo2').style.display = '';
+ document.getElementById(field_id+'_td_paytype').style.display = '';
+ document.getElementById(field_id+'_td_payname_CHEK').style.display = '';
+ var td_payinfo3 = document.getElementById(field_id+'_td_payinfo3');
if ( td_payinfo3 ) {
td_payinfo3.style.display = '';
}
- var td_paystate = document.getElementById('<%$id%>_td_paystate');
+ var td_paystate = document.getElementById(field_id+'_td_paystate');
if ( td_paystate ) {
td_paystate.style.display = '';
}
} else {
alert( 'unknown payby ' + payby );
}
+ spawn_custpaybynum(what);
}
</SCRIPT>
+% $payby_changed_init = 1;
% }
+<%once>
+my $payby_changed_init = 0;
+</%once>
<%init>
my( %opt ) = @_;
} else {
$cust_payby = new FS::cust_payby {};
}
-my $sel_payby = $cust_payby->payby;
-$sel_payby = 'CARD' if $sel_payby eq 'DCRD' || $sel_payby eq '';
-$sel_payby = 'CHEK' if $sel_payby eq 'DCHK';
+my $sel_payby = $cgi->param($name.'_payby') || $cust_payby->payby;
+# convert DCRD to CARD + no weight, and the same for DCHK/CHEK
+if ($sel_payby eq 'DCRD') {
+ $sel_payby = 'CARD';
+ $cust_payby->weight('');
+} elsif ($sel_payby eq 'DCHK') {
+ $sel_payby = 'CHEK';
+ $cust_payby->weight('');
+} elsif (!$sel_payby) {
+ # default
+ $sel_payby = 'CARD';
+}
my @payby = FS::payby->cust_payby;
my %conf_payby = map { $_=>1 } $conf->config('payby');