RT# 39340 - created access to payment only via ip address, fixes security by creating...
[freeside.git] / fs_selfservice / FS-SelfService / cgi / change_pay.html
1 <%= include('header', 'Change payment information') %>
2
3 <%= if ( $error ) { 
4   $OUT .= qq!<FONT SIZE="+1" COLOR="#ff0000">Error: $error</FONT><BR><BR>!;
5   }  ''; %>
6
7 <FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true">
8 <%=
9   use Tie::IxHash;
10   use HTML::Widgets::SelectLayers;
11
12   my $preauto = '<TR><TD COLSPAN=3><INPUT TYPE="checkbox" NAME="auto" VALUE="1"';
13   my $postauto = '>Charge future payments to this card automatically</TD></TR>';
14
15   my $tail = qq(</TABLE>).
16              qq(<INPUT TYPE="hidden" NAME="action" VALUE="process_change_pay">).
17              qq(<BR>).
18              qq(<INPUT TYPE="submit" NAME="process" ).
19              qq(VALUE="Save payment information"> ).
20              qq(<!-- onClick="this.disabled=true"> -->);
21
22
23   my %paybychecked = (
24     'BILL' => include('bill'),
25     'CARD' => include('card')."$preauto CHECKED $postauto",
26     'DCRD' => include('card')."$preauto $postauto",
27     'CHEK' => include('check')."$preauto CHECKED $postauto",
28     'DCHK' => include('check')."$preauto $postauto",
29   );
30   my %payby_index = ( 'CARD'   => qq/Credit Card/,
31                       'DCRD'   => qq/Credit Card/,
32                       'CHEK'   => qq/Check/,
33                       'DCHK'   => qq/Check/,
34                       'LECB'   => qq/Phone Bill Billing/,
35                       'BILL'   => qq/Billing/,
36                       'COMP'   => qq/Complimentary/,
37                       'PREP'   => qq/Prepaid Card/,
38                       'PREPAY' => qq/Prepaid Card/,
39                     );
40
41   ## Don't show CHEK or DCHK option if ACH is read only
42   delete( $payby_index{'CHEK'} ) unless !$ach_read_only;
43   delete( $payby_index{'DCHK'} ) unless !$ach_read_only;
44
45   tie my %options, 'Tie::IxHash', ();
46   foreach my $payby_option ( grep { exists( $payby_index{$_} ) } @paybys ) {
47     $options{$payby_option} = $payby_index{$payby_option};
48   }
49   $options{$payby} = $payby_index{$payby}
50     unless exists($options{$payby});
51
52   #don't want to show multiple "Credit card" or "Check" options
53   my %paybyremove = (
54     'CARD' => 'DCRD',
55     'DCRD' => 'CARD',
56     'CHEK' => 'DCHK',
57     'DCHK' => 'CHEK',
58   );
59   delete( $options{ $paybyremove{$payby} } );
60   delete $options{'DCRD'} unless $payby eq 'DCRD' || ! exists $options{'CARD'};
61   delete $options{'DCHK'} unless $payby eq 'DCHK' || ! exists $options{'CHEK'};
62
63   ## set default layer to first payby.
64   @p = keys %options; $payby = $p[0];
65
66   HTML::Widgets::SelectLayers->new(
67     options => \%options,
68     selected_layer => $payby,
69 #    form_name => 'dummy',
70 #    form_action => 'dummy.cgi',
71     layer_callback => sub { my $layer = shift; use MyLog; use Data::Dumper; MyLog->mylog("my layer $layer\n"); return '<TABLE BGCOLOR="#cccccc">'.$paybychecked{$layer}.qq!<INPUT TYPE="hidden" NAME="payby" VALUE="$layer">$tail!; },
72   )->html;
73
74 %>
75
76 <%= include('footer') %>