summaryrefslogtreecommitdiff
path: root/fs_selfservice/FS-SelfService/cgi
diff options
context:
space:
mode:
authorJonathan Prykop <jonathan@freeside.biz>2015-05-29 23:05:00 -0500
committerJonathan Prykop <jonathan@freeside.biz>2015-05-29 23:05:00 -0500
commit3846acae1c2a7ecb275e400cf3802ada6bc89ed2 (patch)
treec576ed2f5e3b2eb58ff64ac55721706186d25ed7 /fs_selfservice/FS-SelfService/cgi
parentd0ba32be1771276ed7f54c987c0e23cf496108bd (diff)
RT#25929: Customer self-service forward editing
Diffstat (limited to 'fs_selfservice/FS-SelfService/cgi')
-rw-r--r--fs_selfservice/FS-SelfService/cgi/myaccount_menu.html2
-rw-r--r--fs_selfservice/FS-SelfService/cgi/provision_list.html2
-rw-r--r--fs_selfservice/FS-SelfService/cgi/provision_svc_forward.html29
-rwxr-xr-xfs_selfservice/FS-SelfService/cgi/selfservice.cgi34
4 files changed, 62 insertions, 5 deletions
diff --git a/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html b/fs_selfservice/FS-SelfService/cgi/myaccount_menu.html
index 4802178d0..999c62da0 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 ) { #XXXFIXME "enable selfservice prepay features" flag or something, eventually per-pkg or something really fancy
+if ( ($balance || 0) > 0 ) { #XXXFIXME "enable selfservice prepay features" flag or something, 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/provision_list.html b/fs_selfservice/FS-SelfService/cgi/provision_list.html
index b558337de..086c79e57 100644
--- a/fs_selfservice/FS-SelfService/cgi/provision_list.html
+++ b/fs_selfservice/FS-SelfService/cgi/provision_list.html
@@ -96,7 +96,7 @@ foreach my $pkg (
'('. $part_svc->{'num_avail'}. ' available)'.
'</TD></TR>'
#self-service only supports these services so far
- if grep { $part_svc->{'svcdb'} eq $_ } qw( svc_acct svc_external );
+ if grep { $part_svc->{'svcdb'} eq $_ } qw( svc_acct svc_external svc_forward );
$col = $col eq $col1 ? $col2 : $col1;
}
diff --git a/fs_selfservice/FS-SelfService/cgi/provision_svc_forward.html b/fs_selfservice/FS-SelfService/cgi/provision_svc_forward.html
new file mode 100644
index 000000000..470066323
--- /dev/null
+++ b/fs_selfservice/FS-SelfService/cgi/provision_svc_forward.html
@@ -0,0 +1,29 @@
+<%= include('header', 'Setup forward') %>
+
+<FORM name="OneTrueForm" action="<%= $selfurl %>" METHOD="POST">
+<INPUT TYPE="hidden" NAME="action" VALUE="process_svc_forward">
+
+<%= '<P><B>' . $error . '</B></P>' if $error %>
+
+<%=
+my $out = mason_comp(
+ 'session_id' => $session_id,
+ 'comp' => '/edit/elements/svc_forward.html',
+ 'args' => [
+ 'svcnum' => $svcnum,
+ 'pkgnum' => $pkgnum,
+ 'svcpart' => $svcpart,
+ 'srcsvc' => $srcsvc,
+ 'dstsvc' => $dstsvc,
+ 'src' => $src,
+ 'dst' => $dst,
+ 'email' => \%forward_emails,
+ ]
+);
+$out->{'output'} || $out->{'error'};
+%>
+
+<INPUT TYPE="submit" VALUE="Setup">
+</FORM>
+
+<%= include('footer') %>
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
index 8fec01121..0e60791ba 100755
--- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
+++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
@@ -15,7 +15,7 @@ use FS::SelfService qw(
access_info login_info login customer_info edit_info invoice
payment_info process_payment realtime_collect process_prepay
list_pkgs order_pkg signup_info order_recharge
- part_svc_info provision_acct provision_external provision_phone
+ part_svc_info provision_acct provision_external provision_phone provision_forward
unprovision_svc change_pkg suspend_pkg domainselector
list_svcs list_svc_usage list_cdr_usage list_support_usage
myaccount_passwd list_invoices create_ticket get_ticket did_report
@@ -70,6 +70,7 @@ my @actions = ( qw(
process_svc_acct
process_svc_phone
process_svc_external
+ process_svc_forward
delete_svc
view_usage
view_usage_details
@@ -861,7 +862,7 @@ sub provision_svc {
my $result = part_svc_info(
'session_id' => $session_id,
- map { $_ => $cgi->param($_) } qw( pkgnum svcpart svcnum ),
+ map { $_ => ($cgi->param($_) || '') } qw( pkgnum svcpart svcnum ),
);
die $result->{'error'} if exists $result->{'error'} && $result->{'error'};
@@ -947,6 +948,33 @@ sub process_svc_external {
);
}
+sub process_svc_forward {
+
+ my $result = provision_forward (
+ 'session_id' => $session_id,
+ map { $_ => $cgi->param($_) || '' } qw(
+ pkgnum svcpart srcsvc src dstsvc dst )
+ );
+
+ if ( exists $result->{'error'} && $result->{'error'} ) {
+ #warn "$result $result->{'error'}";
+ $action = 'provision_svc_forward';
+ return {
+ $cgi->Vars,
+ %{ part_svc_info( 'session_id' => $session_id,
+ map { $_ => $cgi->param($_) } qw( svcnum pkgnum svcpart )
+ )
+ },
+ 'error' => $result->{'error'},
+ };
+ } else {
+ #just go to setup services page, results will be visible there
+ $action = 'provision';
+ return provision();
+ }
+
+}
+
sub delete_svc {
unprovision_svc(
'session_id' => $session_id,
@@ -1157,7 +1185,7 @@ package FS::SelfService::_selfservicecgi;
use HTML::Entities;
use FS::SelfService qw(
- regionselector popselector domainselector location_form didselector
+ regionselector popselector domainselector location_form didselector mason_comp
);
#false laziness w/agent.cgi