diff options
author | Christopher Burger <burgerc@freeside.biz> | 2017-07-10 09:52:54 -0400 |
---|---|---|
committer | Christopher Burger <burgerc@freeside.biz> | 2017-08-02 16:24:39 -0400 |
commit | 31f1e1bd302bd88d97d56b20dffad5c5f2388261 (patch) | |
tree | 145ad9c2d0a2e4dd444a31683438a77a2dd770b7 | |
parent | 57290f5ec7acdfd413cbd6c24026ce153efd9f14 (diff) |
RT# 74537 - Added new selfservice config option to make ECHECK readonly on selfservice, updated selfservice and NGselfservice to look for this option
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 1 | ||||
-rw-r--r-- | FS/FS/Conf.pm | 7 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/change_pay.html | 8 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/check.html | 103 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/make_ach_payment.html | 28 | ||||
-rw-r--r-- | ng_selfservice/elements/check.php | 94 | ||||
-rw-r--r-- | ng_selfservice/payment_ach.php | 10 |
7 files changed, 180 insertions, 71 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 558e694..4614af2 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -867,6 +867,7 @@ sub payment_info { 'show_paystate' => $conf->exists('show_bankstate'), 'save_unchecked' => $conf->exists('selfservice-save_unchecked'), + 'ach_read_only' => $conf->exists('selfservice-ACH_info_readonly'), }; diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index c0e7cd0..77add5d 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -6109,6 +6109,13 @@ and customer address. Include units.', }, { + 'key' => 'selfservice-ACH_info_readonly', + 'section' => 'self-service', + 'description' => 'make ACH on self service portal read only', + 'type' => 'checkbox', + }, + + { 'key' => 'selfservice-announcement', 'section' => 'self-service', 'description' => 'HTML announcement to display to all authenticated users on account overview page', diff --git a/fs_selfservice/FS-SelfService/cgi/change_pay.html b/fs_selfservice/FS-SelfService/cgi/change_pay.html index 6898dc7..e38ba76 100644 --- a/fs_selfservice/FS-SelfService/cgi/change_pay.html +++ b/fs_selfservice/FS-SelfService/cgi/change_pay.html @@ -37,6 +37,11 @@ 'PREP' => qq/Prepaid Card/, 'PREPAY' => qq/Prepaid Card/, ); + + ## Don't show CHEK or DCHK option if ACH is read only + delete( $payby_index{'CHEK'} ) unless !$ach_read_only; + delete( $payby_index{'DCHK'} ) unless !$ach_read_only; + tie my %options, 'Tie::IxHash', (); foreach my $payby_option ( grep { exists( $payby_index{$_} ) } @paybys ) { $options{$payby_option} = $payby_index{$payby_option}; @@ -55,6 +60,9 @@ delete $options{'DCRD'} unless $payby eq 'DCRD' || ! exists $options{'CARD'}; delete $options{'DCHK'} unless $payby eq 'DCHK' || ! exists $options{'CHEK'}; + ## setting payby to default to layer if only one. should we always display first layer? + if (keys %options == 1) { @p = keys %options; $payby = $p[0]; } + HTML::Widgets::SelectLayers->new( options => \%options, selected_layer => $payby, diff --git a/fs_selfservice/FS-SelfService/cgi/check.html b/fs_selfservice/FS-SelfService/cgi/check.html index 68753fe..17635c3 100644 --- a/fs_selfservice/FS-SelfService/cgi/check.html +++ b/fs_selfservice/FS-SelfService/cgi/check.html @@ -1,54 +1,97 @@ <TR> <TD ALIGN="right">Account type</TD> - <TD> - <SELECT NAME="paytype"> - <%= foreach ( @paytypes ) { - $selected = $paytype eq $_ ? ' SELECTED' : ''; - $OUT .= qq(<OPTION$selected VALUE="$_">$_\n); - } %> - </SELECT> + <TD <%= ($ach_read_only ? ' BGCOLOR="#ffffff"' : '') %> > + <%= + if ($ach_read_only) { + $OUT = $paytype . '<INPUT TYPE="hidden" NAME="paytype" VALUE="' . $paytype . '">'; + } else { + $OUT .= '<SELECT NAME="paytype">'; + foreach ( @paytypes ) { + $selected = $paytype eq $_ ? ' SELECTED' : ''; + $OUT .= qq(<OPTION$selected VALUE="$_">$_\n); + } + $OUT .= '</SELECT>'; + } + %> </TD> -</TD><TR> +</TR><TR> <TD ALIGN="right">Account number</TD> - <TD><INPUT TYPE="text" NAME="payinfo1" SIZE=10 MAXLENGTH=20 VALUE="<%=$payinfo1%>"></TD> -</TD><TR> + <TD <%= ($ach_read_only ? ' BGCOLOR="#ffffff"' : '') %> > + <%= if ($ach_read_only) { + $OUT = qq! $payinfo1 <INPUT TYPE="hidden" NAME="payinfo1" VALUE="$payinfo1"> !; + } else { + $OUT = qq! <INPUT TYPE="text" NAME="payinfo1" SIZE=10 MAXLENGTH=20 VALUE="$payinfo1"> !; + } + %> + </TD> +</TR><TR> <TD ALIGN="right">ABA/Routing number</TD> - <TD><INPUT TYPE="text" NAME="payinfo2" SIZE=10 MAXLENGTH=9 VALUE="<%=$payinfo2%>"></TD> + <TD <%= ($ach_read_only ? ' BGCOLOR="#ffffff"' : '') %> > + <%= + if ($ach_read_only) { + $OUT = qq! $payinfo2 <INPUT TYPE="hidden" NAME="payinfo2" VALUE="$payinfo2"> !; + } else { + $OUT = qq! <INPUT TYPE="text" NAME="payinfo2" SIZE=10 MAXLENGTH=20 VALUE="$payinfo2"> !; + } + %> + </TD> </TR><TR> <TD ALIGN="right">Bank name</TD> - <TD><INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="payname" VALUE="<%=$payname%>"></TD> -</TR><TR> + <TD <%= ($ach_read_only ? ' BGCOLOR="#ffffff"' : '') %> > + <%= + if ($ach_read_only) { + $OUT = qq! $payname <INPUT TYPE="hidden" NAME="payname" VALUE="$payname"> !; + } else { + $OUT = qq! <INPUT TYPE="text" NAME="payname" SIZE=10 MAXLENGTH=20 VALUE="$payname"> !; + } + %> + </TD> +</TR> <%= $OUT = ''; if ($show_paystate) { - $OUT .= qq!<TD ALIGN="right">Bank state</TD><TD><SELECT NAME="paystate">!; - for ( @states ) { - $OUT .= '<OPTION'. ($_ eq $paystate ? ' SELECTED' : '' ). ">$_\n"; + $OUT .= '<TR><TD ALIGN="right">Bank state</TD><TD' . ($ach_read_only ? ' BGCOLOR="#ffffff"' : '') . '>'; + if ($ach_read_only) { + $OUT .= qq! $paystate <INPUT TYPE="hidden" NAME="paystate" VALUE="$paystate"> !; + } else { + $OUT .= '<SELECT NAME="paystate">'; + for ( @states ) { + $OUT .= '<OPTION'. ($_ eq $paystate ? ' SELECTED' : '' ). ">$_\n"; + } + $OUT .= '</SELECT>'; } - $OUT .= '</SELECT></TD></TR><TR>'; + $OUT .= '</TD></TR>'; } %> <%= $OUT = ''; if ($show_ss) { - $OUT .= '<TD ALIGN="right">Account holder<BR>Social '; - $OUT .= 'security or tax ID #</TD><TD>'; - $OUT .= qq!<INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="ss" VALUE="$ss">!; - $OUT .= '</TD></TR><TR>'; + $OUT .= '<TR><TD ALIGN="right">Account holder<BR>Social '; + $OUT .= 'security or tax ID #</TD><TD' . ($ach_read_only ? ' BGCOLOR="#ffffff"' : '') . '>'; + if ($ach_read_only) { + $OUT .= qq! $ss <INPUT TYPE="hidden" NAME="ss" VALUE="$ss">!; + } else { + $OUT .= qq!<INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="ss" VALUE="$ss">!; + } + $OUT .= '</TD></TR>'; } %> <%= $OUT = ''; if ($show_stateid) { - $OUT .= '<TD ALIGN="right">'; - $OUT .= qq!Account holder<BR>$stateid_label</TD><TD>!; - $OUT .= qq!<INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="stateid" VALUE="$stateid"></TD>!; - $OUT .= qq!<TD ALIGN="right">$stateid_state_label</TD>!; - $OUT .= '<TD><SELECT NAME="stateid_state">'; - for ( @states ) { - $OUT .= '<OPTION'. ($_ eq $stateid_state ? ' SELECTED' : '' ). ">$_\n"; + $OUT .= qq!<TR><TD ALIGN="right">Account holder<BR>$stateid_label</TD>!; + $OUT .= '<TD' . ($ach_read_only ? ' BGCOLOR="#ffffff"' : '') . '>'; + if ($ach_read_only) { + $OUT .= qq! $stateid <INPUT TYPE="hidden" NAME="stateid" VALUE="$stateid">!; + } else { + $OUT .= qq!<INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="stateid" VALUE="$stateid"></TD>!; + $OUT .= qq!<TD ALIGN="right">$stateid_state_label</TD>!; + $OUT .= '<TD><SELECT NAME="stateid_state">'; + for ( @states ) { + $OUT .= '<OPTION'. ($_ eq $stateid_state ? ' SELECTED' : '' ). ">$_\n"; + } + $OUT .='</SELECT>'; } - $OUT .='</SELECT></TD></TR><TR>'; + $OUT .='</TD></TR>'; } %> -</TR> diff --git a/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html b/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html index 8c2dfe3..37fd464 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html @@ -20,24 +20,28 @@ EOF <TR> <TD ALIGN="right">Payment amount</TD> <TD> - <TABLE><TR><TD BGCOLOR="#ffffff"> + <TABLE><TR><TD> <%= $money_char %><INPUT TYPE="text" NAME="amount" SIZE=8 VALUE="<%= ($balance > 0) ? $balance : '' %>"> </TD></TR></TABLE> </TD> </TR> <%= include('discount_term') %> <%= include('check') %> -<TR> - <TD COLSPAN=2> - <INPUT TYPE="checkbox" <%= $save_unchecked ? '' : 'CHECKED' %> NAME="save" VALUE="1"> - Remember this information - </TD> -</TR><TR> - <TD COLSPAN=2> - <INPUT TYPE="checkbox"<%= $payby eq 'CHEK' ? ' CHECKED' : '' %> NAME="auto" VALUE="1" onClick="if (this.checked) { document.OneTrueForm.save.checked=true; }"> - Charge future payments to this account automatically - </TD> -</TR> + +<%= + $OUT = ''; + if ($ach_read_only) { + if ($payby == 'CHEK') { + $OUT .= '<TR><TD COLSPAN=2><INPUT TYPE="hidden" NAME="auto" VALUE="1"></TD></TR>'; + } + } else { + $OUT .= '<TR><TD COLSPAN=2><INPUT TYPE="checkbox"' . ($save_unchecked ? '' : 'CHECKED ') . 'NAME="save" VALUE="1">'; + $OUT .= 'Remember this information</TD></TR>'; + $OUT .= '<TR><TD COLSPAN=2><INPUT TYPE="checkbox"' . ($payby eq 'CHEK' ? ' CHECKED' : '') . 'NAME="auto" VALUE="1" onClick="if (this.checked) { document.OneTrueForm.save.checked=true; }">'; + $OUT .= 'Charge future payments to this account automatically</TD></TR>'; + } +%> + </TABLE> <BR> <INPUT TYPE="hidden" NAME="paybatch" VALUE="<%=$paybatch%>"> diff --git a/ng_selfservice/elements/check.php b/ng_selfservice/elements/check.php index b026c92..fd0cd6d 100644 --- a/ng_selfservice/elements/check.php +++ b/ng_selfservice/elements/check.php @@ -1,50 +1,88 @@ +<? if ($ach_read_only) { $bgShade = 'BGCOLOR="#ffffff"'; } ?> <TR> <TD ALIGN="right">Account type</TD> - <TD> - <SELECT NAME="paytype"> + <TD <? echo $bgShade; ?>> + <? if ($ach_read_only) { echo htmlspecialchars($paytype); ?> + <INPUT TYPE="hidden" NAME="paytype" VALUE="<? echo $paytype; ?>"> + <? } else { ?> + <SELECT NAME="paytype"> <? foreach ( $paytypes AS $pt ) { ?> <OPTION <? if ($pt == $paytype ) { echo 'SELECTED'; } ?> VALUE="<? echo $pt; ?>"><? echo $pt; ?> <? } ?> - </SELECT> + </SELECT> + <? } ?> </TD> </TR><TR> <TD ALIGN="right">Account number</TD> - <TD><INPUT TYPE="text" NAME="payinfo1" SIZE=10 MAXLENGTH=20 VALUE="<? echo $payinfo1; ?>"></TD> -</TD><TR> + <TD <? echo $bgShade; ?>> + <? if ($ach_read_only) { echo htmlspecialchars($payinfo1); ?> + <INPUT TYPE="hidden" NAME="payinfo1" VALUE="<? echo $payinfo1; ?>"> + <? } else { ?> + <INPUT TYPE="text" NAME="payinfo1" SIZE=10 MAXLENGTH=20 VALUE="<? echo $payinfo1; ?>"> + <? } ?> + </TD> +</TR><TR> <TD ALIGN="right">ABA/Routing number</TD> - <TD><INPUT TYPE="text" NAME="payinfo2" SIZE=10 MAXLENGTH=9 VALUE="<? echo $payinfo2; ?>"></TD> + <TD <? echo $bgShade; ?>> + <? if ($ach_read_only) { echo htmlspecialchars($payinfo2); ?> + <INPUT TYPE="hidden" NAME="payinfo2" VALUE="<? echo $payinfo2; ?>"> + <? } else { ?> + <INPUT TYPE="text" NAME="payinfo2" SIZE=10 MAXLENGTH=9 VALUE="<? echo $payinfo2; ?>"></TD> + <? } ?> </TR><TR> <TD ALIGN="right">Bank name</TD> - <TD><INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="payname" VALUE="<? echo $payname; ?>"></TD> + <TD <? echo $bgShade; ?>> + <? if ($ach_read_only) { echo htmlspecialchars($payname); ?> + <INPUT TYPE="hidden" NAME="payname" VALUE="<? echo $payname; ?>"></TD> + <? } else { ?> + <INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="payname" VALUE="<? echo $payname; ?>"></TD> + <? } ?> </TR><TR> <? if ($show_paystate) { ?> - <TD ALIGN="right">Bank state</TD> - <TD> - <SELECT NAME="paystate"> - <? foreach ( $states AS $s ) { ?> - <OPTION <? if ($s == $paystate ) { echo 'SELECTED'; } ?>><? echo $s; ?> - <? } ?> - </SELECT> - </TD> - </TR><TR> + <TR> + <TD ALIGN="right">Bank state</TD> + <TD <? echo $bgShade; ?>> + <? if ($ach_read_only) { echo htmlspecialchars($paystate); ?> + <INPUT TYPE="hidden" NAME="paystate" VALUE="<? echo $paystate; ?>"></TD> + <? } else { ?> + <SELECT NAME="paystate"> + <? foreach ( $states AS $s ) { ?> + <OPTION <? if ($s == $paystate ) { echo 'SELECTED'; } ?>><? echo $s; ?> + <? } ?> + </SELECT></TD> + <? } ?> + </TR> <? } ?> <? if ($show_ss) { ?> - <TD ALIGN="right">Account holder<BR>Social security or tax ID #</TD><TD> - <INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="ss" VALUE="<? echo $ss; ?>"> - </TD></TR><TR> + <TR> + <TD ALIGN="right">Account holder<BR>Social security or tax ID #</TD> + <TD <? echo $bgShade; ?>> + <? if ($ach_read_only) { echo htmlspecialchars($ss); ?> + <INPUT TYPE="hidden" NAME="ss" VALUE="<? echo $ss; ?>"></TD> + <? } else { ?> + <INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="ss" VALUE="<? echo $ss; ?>"></TD> + <? } ?> + </TR> <? } ?> <? if ($show_stateid) { ?> - <TD ALIGN="right"> - Account holder<BR><? echo $stateid_label; ?></TD><TD> - <INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="stateid" VALUE="<? echo $stateid; ?>"></TD> - <TD ALIGN="right"><? echo $stateid_state_label; ?></TD> - <TD><SELECT NAME="stateid_state"> - <? foreach ( $states AS $s ) { ?> - <OPTION <? if ($s == $stateid_state ) { echo 'SELECTED'; } ?>><? echo $s; ?> + <TR> + <TD ALIGN="right">Account holder<BR><? echo $stateid_label; ?></TD> + <TD <? echo $bgShade; ?>> + <? if ($ach_read_only) { echo htmlspecialchars($stateid); ?> + <INPUT TYPE="hidden" NAME="stateid" VALUE="<? echo $stateid; ?>"></TD> + <TD <? echo $bgShade; ?>> <? echo $stateid_state; ?> + <INPUT TYPE="hidden" NAME="stateid_state" VALUE="<? echo $stateid_state; ?>"></TD> + <? } else { ?> + <INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="stateid" VALUE="<? echo $stateid; ?>"></TD> + <TD ALIGN="right"><? echo $stateid_state_label; ?></TD> + <TD><SELECT NAME="stateid_state"> + <? foreach ( $states AS $s ) { ?> + <OPTION <? if ($s == $stateid_state ) { echo 'SELECTED'; } ?>><? echo $s; ?> + <? } ?> + </SELECT></TD> <? } ?> - </SELECT></TD></TR><TR> + </TR> <? } ?> -</TR> diff --git a/ng_selfservice/payment_ach.php b/ng_selfservice/payment_ach.php index e58664f..aebb5e3 100644 --- a/ng_selfservice/payment_ach.php +++ b/ng_selfservice/payment_ach.php @@ -53,7 +53,7 @@ if ( $receipt_html ) { ?> $error = $payment_error; - ?> +?> <? include('elements/error.php'); ?> @@ -81,6 +81,12 @@ if ( $receipt_html ) { ?> <? include('elements/check.php') ?> + <? if ($ach_read_only) { ?> + <? if ( $payby == 'CARD' ) { ?> + <INPUT TYPE="hidden" NAME="auto" VALUE="1"> + <? } ?> + </TD></TR> + <? } else { ?> <TR> <TD COLSPAN=2> <INPUT TYPE="checkbox" <? if ( ! $save_unchecked ) { echo 'CHECKED'; } ?> NAME="save" VALUE="1"> @@ -92,6 +98,8 @@ if ( $receipt_html ) { ?> Charge future payments to this account automatically </TD> </TR> + <? } ?> + </TABLE> <BR> <INPUT TYPE="hidden" NAME="paybatch" VALUE="<? echo $paybatch; ?>"> |