RT# 82010 Fix bug where selfservice payment form may not appear
[freeside.git] / fs_selfservice / FS-SelfService / cgi / change_pay.html
index bbe4527..e4f412c 100644 (file)
@@ -1,7 +1,5 @@
-<%= $url = "$selfurl?session=$session_id;action="; ''; %>
-<%= include('header') %>
+<%= include('header', 'Change payment information') %>
 
-<FONT SIZE=4>Change payment information</FONT><BR><BR>
 <%= if ( $error ) { 
   $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">Error: $error</FONT><BR><BR>!;
   }  ''; %>
@@ -14,7 +12,7 @@
   my $preauto = '<TR><TD COLSPAN=3><INPUT TYPE="checkbox" NAME="auto" VALUE="1"';
   my $postauto = '>Charge future payments to this card automatically</TD></TR>';
 
-  my $tail = qq(</TABLE><INPUT TYPE="hidden" NAME="session" VALUE="$session_id">). 
+  my $tail = qq(</TABLE>).
              qq(<INPUT TYPE="hidden" NAME="action" VALUE="process_change_pay">).
              qq(<BR>).
              qq(<INPUT TYPE="submit" NAME="process" ).
                       'PREP'   => qq/Prepaid Card/,
                       'PREPAY' => qq/Prepaid Card/,
                     );
+
+  ## Don't show CHEK or DCHK option if ACH is read only
+  delete( $payby_index{'CHEK'} ) if ($ach_read_only && $payby ne "CHEK");
+  delete( $payby_index{'DCHK'} ) if ($ach_read_only && $payby ne "DCHK");
+
   tie my %options, 'Tie::IxHash', ();
   foreach my $payby_option ( grep { exists( $payby_index{$_} ) } @paybys ) {
     $options{$payby_option} = $payby_index{$payby_option};
@@ -57,6 +60,9 @@
   delete $options{'DCRD'} unless $payby eq 'DCRD' || ! exists $options{'CARD'};
   delete $options{'DCHK'} unless $payby eq 'DCHK' || ! exists $options{'CHEK'};
 
+  $payby = (keys %options)[0]
+    if !$payby && %options;
+
   HTML::Widgets::SelectLayers->new(
     options => \%options,
     selected_layer => $payby,