diff options
-rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 2 | ||||
-rw-r--r-- | FS/FS/Conf.pm | 7 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/make_ach_payment.html | 10 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/make_payment.html | 9 | ||||
-rwxr-xr-x | fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html | 11 | ||||
-rw-r--r-- | fs_selfservice/FS-SelfService/cgi/myaccount_menu.html | 2 | ||||
-rwxr-xr-x | fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 7 |
7 files changed, 40 insertions, 8 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 804c8510c..c5418bcfa 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -129,7 +129,7 @@ sub skin_info { ), 'menu_disable' => [ $conf->config('selfservice-menu_disable',$agentnum) ], ( map { $_ => $conf->exists("selfservice-$_", $agentnum ) } - qw( menu_skipblanks menu_skipheadings menu_nounderline no_logo ) + qw( menu_skipblanks menu_skipheadings menu_nounderline no_logo enable_payment_without_balance ) ), ( map { $_ => scalar($conf->config_binary("selfservice-$_", $agentnum)) } qw( title_left_image title_right_image diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index c5c0e465b..c9cae933c 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -5872,6 +5872,13 @@ and customer address. Include units.', }, { + 'key' => 'selfservice-enable_payment_without_balance', + 'section' => 'self-service', + 'description' => 'Allow selfservice customers to make payments even if balance is zero or below (resulting in an unapplied payment and negative balance.)', + 'type' => 'checkbox', + }, + + { 'key' => 'logout-timeout', 'section' => 'UI', 'description' => 'If set, automatically log users out of the backoffice after this many minutes.', diff --git a/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html b/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html index e33ad574c..8c2dfe305 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_ach_payment.html @@ -3,19 +3,25 @@ <FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true"> <INPUT TYPE="hidden" NAME="action" VALUE="ach_payment_results"> <TABLE BGCOLOR="#cccccc"> +<%= +if ($balance > 0) { + $OUT .= <<EOF; <TR> <TD ALIGN="right">Amount Due</TD> <TD> <TABLE><TR><TD BGCOLOR="#ffffff"> - $<%=sprintf("%.2f",$balance)%> + $money_char$balance </TD></TR></TABLE> </TD> </TR> +EOF +} +%> <TR> <TD ALIGN="right">Payment amount</TD> <TD> <TABLE><TR><TD BGCOLOR="#ffffff"> - $<INPUT TYPE="text" NAME="amount" SIZE=8 VALUE="<%=sprintf("%.2f",$balance)%>"> + <%= $money_char %><INPUT TYPE="text" NAME="amount" SIZE=8 VALUE="<%= ($balance > 0) ? $balance : '' %>"> </TD></TR></TABLE> </TD> </TR> diff --git a/fs_selfservice/FS-SelfService/cgi/make_payment.html b/fs_selfservice/FS-SelfService/cgi/make_payment.html index 5f5bc1c8e..503901edd 100644 --- a/fs_selfservice/FS-SelfService/cgi/make_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_payment.html @@ -3,14 +3,21 @@ <FORM NAME="OneTrueForm" METHOD="POST" ACTION="<%=$selfurl%>" onSubmit="document.OneTrueForm.process.disabled=true"> <INPUT TYPE="hidden" NAME="action" VALUE="payment_results"> <TABLE BGCOLOR="#cccccc"> + +<%= +if ($balance > 0) { + $OUT .= <<EOF; <TR> <TH ALIGN="right">Amount Due</TH> <TD COLSPAN=7> <TABLE><TR><TD BGCOLOR="#ffffff"> - <FONT COLOR="#000000">$<%=sprintf("%.2f",$balance)%></FONT> + $money_char$balance </TD></TR></TABLE> </TD> </TR> +EOF +} +%> <%= $tr_amount_fee %> diff --git a/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html b/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html index 9a5678e8f..8c5b1a85a 100755 --- a/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html +++ b/fs_selfservice/FS-SelfService/cgi/make_thirdparty_payment.html @@ -8,16 +8,23 @@ onSubmit="document.OneTrueForm.process.disabled=true"> <INPUT TYPE="hidden" NAME="action" VALUE="post_thirdparty_payment"> <INPUT TYPE="hidden" NAME="payby_method" VALUE="<%= $payby_method %>"> <TABLE BGCOLOR="#cccccc"> +<%= +if ($balance > 0) { + $OUT .= <<EOF; <TR> <TH ALIGN="right">Balance due</TH> <TD COLSPAN=7> - <SPAN STYLE="background-color: #ffffff;">$<%=sprintf("%.2f", $balance)%> + <SPAN STYLE="background-color: #ffffff;">$money_char$balance</SPAN> </TD> </TR> +EOF +} +%> + <TR> <TH ALIGN="right">Payment amount</TH> <TD COLSPAN=7> - $<INPUT TYPE="text" NAME="amount" SIZE=8 VALUE="<%=sprintf("%.2f", $balance)%>"> + <%= $money_char %><INPUT TYPE="text" NAME="amount" SIZE=8 VALUE="<%= ($balance > 0) ? $balance : '' %>"> </TD> </TR> <TR><TH></TH> diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html b/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html index 61926bd86..6af5e5ec0 100644 --- a/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html +++ b/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html @@ -28,7 +28,7 @@ my %payby_mode; # $payby_mode{FOO} is true if FOO is thirdparty, false if it's B::OP, # nonexistent if it's not supported -if ( ($balance || 0) > 0 ) { #XXXFIXME "enable selfservice prepay features" flag or something, eventually per-pkg or something really fancy +if ( $enable_payment_without_balance || (($balance || 0) > 0) ) { #eventually per-pkg or something really fancy if ( exists( $payby_mode{CARD} ) ) { push @menu, { title => 'Recharge my account with a credit card', diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 2a8b2b6c4..4199f7005 100755 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -569,10 +569,15 @@ sub make_payment { my $payment_info = payment_info( 'session_id' => $session_id ); + my $amount = + ($payment_info->{'balance'} && ($payment_info->{'balance'} > 0)) + ? $payment_info->{'balance'} + : ''; + my $tr_amount_fee = mason_comp( 'session_id' => $session_id, 'comp' => '/elements/tr-amount_fee.html', - 'args' => [ 'amount' => $payment_info->{'balance'}, + 'args' => [ 'amount' => $amount, ], ); |