summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Burger <burgerc@freeside.biz>2017-07-10 09:52:54 -0400
committerChristopher Burger <burgerc@freeside.biz>2017-08-02 16:24:39 -0400
commit31f1e1bd302bd88d97d56b20dffad5c5f2388261 (patch)
tree145ad9c2d0a2e4dd444a31683438a77a2dd770b7
parent57290f5ec7acdfd413cbd6c24026ce153efd9f14 (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.pm1
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--fs_selfservice/FS-SelfService/cgi/change_pay.html8
-rw-r--r--fs_selfservice/FS-SelfService/cgi/check.html103
-rw-r--r--fs_selfservice/FS-SelfService/cgi/make_ach_payment.html28
-rw-r--r--ng_selfservice/elements/check.php94
-rw-r--r--ng_selfservice/payment_ach.php10
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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;holder<BR>Social&nbsp;';
- $OUT .= 'security&nbsp;or&nbsp;tax&nbsp;ID&nbsp;#</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&nbsp;holder<BR>Social&nbsp;';
+ $OUT .= 'security&nbsp;or&nbsp;tax&nbsp;ID&nbsp;#</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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;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&nbsp;holder<BR>Social&nbsp;security&nbsp;or&nbsp;tax&nbsp;ID&nbsp;#</TD><TD>
- <INPUT TYPE="text" SIZE=32 MAXLENGTH=80 NAME="ss" VALUE="<? echo $ss; ?>">
- </TD></TR><TR>
+ <TR>
+ <TD ALIGN="right">Account&nbsp;holder<BR>Social&nbsp;security&nbsp;or&nbsp;tax&nbsp;ID&nbsp;#</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&nbsp;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&nbsp;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; ?>">