diff options
Diffstat (limited to 'fs_selfservice/FS-SelfService')
8 files changed, 232 insertions, 57 deletions
diff --git a/fs_selfservice/FS-SelfService/SelfService.pm b/fs_selfservice/FS-SelfService/SelfService.pm index 847222d72..e01d17b6a 100644 --- a/fs_selfservice/FS-SelfService/SelfService.pm +++ b/fs_selfservice/FS-SelfService/SelfService.pm @@ -33,6 +33,13 @@ $socket .= '.'.$tag if defined $tag && length($tag); 'switch_cust' => 'MyAccount/switch_cust', 'customer_info' => 'MyAccount/customer_info', 'customer_info_short' => 'MyAccount/customer_info_short', + + 'contact_passwd' => 'MyAccount/contact/contact_passwd', + 'list_contacts' => 'MyAccount/contact/list_contacts', + 'edit_contact' => 'MyAccount/contact/edit_contact', + 'delete_contact' => 'MyAccount/contact/delete_contact', + 'new_contact' => 'MyAccount/contact/new_contact', + 'billing_history' => 'MyAccount/billing_history', 'edit_info' => 'MyAccount/edit_info', #add to ss cgi! 'invoice' => 'MyAccount/invoice', @@ -531,7 +538,7 @@ Invoice text =item list_invoices HASHREF -Returns a list of all customer invoices. Takes a hash references with a single +Returns a list of all customer invoices. Takes a hash reference with a single key, session_id. Returns a hash reference with the following keys: @@ -1219,7 +1226,7 @@ error message on errors. Provisions an account (svc_acct). -Takes a hash references as parameter with the following keys: +Takes a hash reference as parameter with the following keys: =over 4 @@ -1247,7 +1254,7 @@ svcpart or service definition to provision Provisions a phone number (svc_phone). -Takes a hash references as parameter with the following keys: +Takes a hash reference as parameter with the following keys: =over 4 @@ -1289,7 +1296,7 @@ E911 Address (optional) Provisions a customer PBX (svc_pbx). -Takes a hash references as parameter with the following keys: +Takes a hash reference as parameter with the following keys: =over 4 @@ -1321,7 +1328,7 @@ svcpart or service definition to provision Provisions an external service (svc_external). -Takes a hash references as parameter with the following keys: +Takes a hash reference as parameter with the following keys: =over 4 @@ -1345,6 +1352,146 @@ svcpart or service definition to provision =back +=head2 "MY ACCOUNT" CONTACT FUNCTIONS + +=over 4 + +=item contact_passwd + +Changes the password for the currently-logged in contact. + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item new_password + +=back + +Returns a hash reference with a single parameter, B<error>, which contains an +error message, or empty on success. + +=item list_contacts + +Takes a hash reference as parameter with a single key, B<session_id>. + +Returns a hash reference with two parameters: B<error>, which contains an error +message, or empty on success, and B<contacts>, a list of contacts. + +B<contacts> is an array reference of hash references (i.e. an array of structs, + in XML-RPC). Each hash reference (struct) has the following keys: + +=over4 + +=item contactnum + +=item class + +Contact class name (contact type). + +=item first + +First name + +=item last + +Last name + +=item title + +Position ("Director of Silly Walks"), NOT honorific ("Mr." or "Mrs.") + +=item emailaddress + +Comma-separated list of email addresses + +=item comment + +=item selfservice_access + +Y when enabled + +=back + +=item edit_contact + +Updates information for the currently-logged in contact, or (optionally) the +specified contact. + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item contactnum + +If already logged in as a contact, this is optional. + +=item first + +=item last + +=item emailaddress + +=back + +Returns a hash reference with a single parameter, B<error>, which contains an +error message, or empty on success. + +=item new_contact + +Creates a new contact. + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item first + +=item last + +=item emailaddress + +=item classnum + +Optional contact classnum (TODO: or name) + +=item comment + +=item selfservice_access + +Y to enable self-service access + +=item _password + +=back + +Returns a hash reference with a single parameter, B<error>, which contains an +error message, or empty on success. + +=item delete_contact + +Deletes a contact. (Note: Cannot at this time delete the currently-logged in +contact.) + +Takes a hash reference as parameter with the following keys: + +=over 4 + +=item session_id + +=item contactnum + +=back + +Returns a hash reference with a single parameter, B<error>, which contains an +error message, or empty on success. + =head2 "MY ACCOUNT" QUOTATION FUNCTIONS All of these functions require the user to be logged in, and the 'session_id' @@ -1357,12 +1504,33 @@ key to be included in the argument hashref.` Returns a hashref listing this customer's active self-service quotations. Contents are: -- 'quotations', an arrayref containing an element for each quotation. - - quotationnum, the primary key - - _date, the date it was started - - num_pkgs, the number of packages - - total_setup, the sum of setup fees - - total_recur, the sum of recurring charges +=over 4 + +=item quotations + +an arrayref containing an element for each quotation. + +=item quotationnum + +the primary key + +=item _date + +the date it was started + +=item num_pkgs + +the number of packages + +=item total_setup + +the sum of setup fees + +=item total_recur + +the sum of recurring charges + +=back =item quotation_new HASHREF diff --git a/fs_selfservice/FS-SelfService/cgi/history.html b/fs_selfservice/FS-SelfService/cgi/history.html index 00fdfa5ef..0b6f9ceda 100644 --- a/fs_selfservice/FS-SelfService/cgi/history.html +++ b/fs_selfservice/FS-SelfService/cgi/history.html @@ -1,39 +1,14 @@ -<%= include('header', 'Billing History') %> +<%= include('header', 'Payment History') %> <%= -my $balance = 0; -my $style = 'text-align: left; margin: 0; padding: 0 1em 0 0;'; -my $moneystyle = 'text-align: right; margin: 0; padding: 0 1em 0 0;'; -my $col1 = "#ffffff"; -my $col2 = "#dddddd"; -my $col = $col1; -foreach my $item (@history) { - $balance += $$item{'amount'}; - $$item{'amount'} =~ s/^(-?)/$1$money_char/; - $out .= <<EOF; - <TR> - <TD style="$style background: $col;">$$item{'date_pretty'}</TD> - <TD style="$style background: $col;">$$item{'description'}</TD> - <TD style="$moneystyle background: $col;">$$item{'amount'}</TD> - </TR> -EOF - $col = $col eq $col1 ? $col2 : $col1; -} -$balance = sprintf('%.2f',$balance); -$balance =~ s/^(-?)/$1$money_char/; -$out = <<EOF; -<P>Balance: <B>$balance</B></P> -<TABLE style="margin: 0;" CELLSPACING="0"> - <TR> - <TH style="$style background: #ff9999;">Date</TH> - <TH style="$style background: #ff9999;">Description</TH> - <TH style="$moneystyle background: #ff9999;">Amount</TH> - </TR> -$out -</TABLE> -EOF +my $out = mason_comp( + 'session_id' => $session_id, + 'comp' => '/elements/customer-statement.html', + 'args' => [ + 'history' => \@history, + ] +); +$out->{'output'} || $out->{'error'}; %> -</TABLE> - <%= include('footer') %> 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 6a28d804f..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', @@ -67,7 +67,7 @@ push @menu, { title=>' ' }; push @menu, - { title=>'View Payment History', url=>'history', size=>'+1' }, + { title=>'View payment history', url=>'history', size=>'+1' }, ; unless( $hide_usage ){ diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 4c666cb14..b2ebaef69 100755 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -583,10 +583,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, ], ); diff --git a/fs_selfservice/FS-SelfService/cgi/small_custview.html b/fs_selfservice/FS-SelfService/cgi/small_custview.html index 919df5631..bcbdbdaa6 100644 --- a/fs_selfservice/FS-SelfService/cgi/small_custview.html +++ b/fs_selfservice/FS-SelfService/cgi/small_custview.html @@ -59,10 +59,17 @@ Customer #<B><%= $display_custnum %></B> </TR></TABLE> -<%= unless ( $access_pkgnum ) { - $OUT .= '<BR>Balance: <B>$'. $balance. '</B><BR>'; - } - ''; +<%= +unless ( $access_pkgnum ) { + if ($balance >= 0) { + $OUT .= '<BR>Balance: <B>'. $balance_pretty . '</B><BR>'; + } else { + my $credit_balance_pretty = $balance_pretty; + $credit_balance_pretty =~ s/-//; + $OUT .= '<BR>Credit Balance: <B>'. $credit_balance_pretty . '</B><BR>'; + } +} +''; %> </DIV> |