From 5d5e7f7248d786938c08c867c9ad8f855f92c532 Mon Sep 17 00:00:00 2001 From: levinse Date: Thu, 14 Jul 2011 03:46:17 +0000 Subject: [PATCH] view/set svc_phone forwardst and email from self-service, RT13622 --- FS/FS/ClientAPI/MyAccount.pm | 34 +++++++++++++++++++++- .../FS-SelfService/cgi/provision_list.html | 11 ++++++- .../FS-SelfService/cgi/provision_svc_phone.html | 13 ++++++++- fs_selfservice/FS-SelfService/cgi/selfservice.cgi | 6 ++-- 4 files changed, 58 insertions(+), 6 deletions(-) diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 014434a05..46bb90d25 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -1050,6 +1050,10 @@ sub list_pkgs { if $context eq 'agent' && $conf->exists('agent-showpasswords') && $_->part_svc->svcdb eq 'svc_acct'; + $ref->{svchash} = { $_->svc_x->hash } if + $_->part_svc->svcdb eq 'svc_phone'; + $ref->{svchash}->{svcpart} = $_->part_svc->svcpart + if $_->part_svc->svcdb eq 'svc_phone'; # hack $ref; } $_->cust_svc ], @@ -1644,6 +1648,23 @@ sub provision_phone { my @bulkdid; @bulkdid = @{$p->{'bulkdid'}} if $p->{'bulkdid'}; + if($p->{'svcnum'} && $p->{'svcnum'} =~ /^\d+$/){ + my($context, $session, $custnum) = _custoragent_session_custnum($p); + return { 'error' => $session } if $context eq 'error'; + + my $svc_phone = qsearchs('svc_phone', { svcnum => $p->{'svcnum'} }); + return { 'error' => 'service not found' } unless $svc_phone; + return { 'error' => 'invalid svcnum' } + if $svc_phone && $svc_phone->cust_svc->cust_pkg->custnum != $custnum; + + $svc_phone->email($p->{'email'}) + if $svc_phone->email ne $p->{'email'} && $p->{'email'} =~ /^([\w\.\d@]+|)$/; + $svc_phone->forwarddst($p->{'forwarddst'}) + if $svc_phone->forwarddst ne $p->{'forwarddst'} + && $p->{'forwarddst'} =~ /^(\d+|)$/; + return { 'error' => $svc_phone->replace }; + } + # single DID LNP unless($p->{'lnp'}) { $p->{'lnp_desired_due_date'} = parse_datetime($p->{'lnp_desired_due_date'}); @@ -1806,7 +1827,7 @@ sub part_svc_info { my $conf = new FS::Conf; - return { + my $ret = { 'svc' => $part_svc->svc, 'svcdb' => $part_svc->svcdb, 'pkgnum' => $pkgnum, @@ -1825,6 +1846,17 @@ sub part_svc_info { }; + if ($p->{'svcnum'} && $p->{'svcnum'} =~ /^\d+$/ + && $ret->{'svcdb'} eq 'svc_phone') { + $ret->{'svcnum'} = $p->{'svcnum'}; + my $svc_phone = qsearchs('svc_phone', { svcnum => $p->{'svcnum'} }); + if ( $svc_phone && $svc_phone->cust_svc->cust_pkg->custnum == $custnum ) { + $ret->{'email'} = $svc_phone->email; + $ret->{'forwarddst'} = $svc_phone->forwarddst; + } + } + + $ret; } sub unprovision_svc { diff --git a/fs_selfservice/FS-SelfService/cgi/provision_list.html b/fs_selfservice/FS-SelfService/cgi/provision_list.html index a1a519490..22054e644 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision_list.html +++ b/fs_selfservice/FS-SelfService/cgi/provision_list.html @@ -39,6 +39,14 @@ foreach my $pkg ( "$td>". $cust_svc->{label}[1]. ''; $OUT .= '
password: '. encode_entities($cust_svc->{_password}). '' if exists($cust_svc->{_password}); + if ( exists($cust_svc->{svchash}) ) { + $OUT .= '
Email: '. encode_entities($cust_svc->{svchash}->{email}). '' + if exists($cust_svc->{svchash}->{email}) + && length($cust_svc->{svchash}->{email}); + $OUT .= '
Forward to: '. encode_entities($cust_svc->{svchash}->{forwarddst}). '' + if exists($cust_svc->{svchash}->{forwarddst}) + && length($cust_svc->{svchash}->{forwarddst}); + } $OUT .= ''. "$td>"; @@ -50,7 +58,8 @@ foreach my $pkg ( unless ( $cust_svc->{'svcnum'} == $svcnum ) { $OUT .= qq!(!. 'delete)'; - + $OUT .= qq!
(modify)! + if ( exists($cust_svc->{svchash}) && $cust_svc->{label}[2] eq 'svc_phone' ); } $OUT .= '
'; $col = $col eq $col1 ? $col2 : $col1; diff --git a/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html b/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html index ab9827e93..9a07e7da1 100644 --- a/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html +++ b/fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html @@ -25,16 +25,27 @@ if($error) { if($lnp) { $OUT .= "" . qq!! - . lnp_textfield(phonenum,"Phone Number") + . lnp_textfield("phonenum","Phone Number") . lnp_textfield("lnp_desired_due_date","Requested Port-In Date") . lnp_textfield("lnp_other_provider","Current Provider") . lnp_textfield("lnp_other_provider_account","Current Provider's Account #") . "
"; } else { + if ( $svcnum ) { + $OUT .= qq!!; + $OUT .= qq!!; + $OUT .= qq! +
Email
Forward to + +
!; + } + else { didselector('field' => 'phonenum', 'svcpart' => $svcpart, 'bulknum' => $numavail, ); + } } %>

diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi index 58f2d0f1b..8f1c4a568 100644 --- a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi +++ b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi @@ -722,7 +722,7 @@ sub provision_svc { my $result = part_svc_info( 'session_id' => $session_id, - map { $_ => $cgi->param($_) } qw( pkgnum svcpart ), + map { $_ => $cgi->param($_) } qw( pkgnum svcpart svcnum ), ); die $result->{'error'} if exists $result->{'error'} && $result->{'error'}; @@ -756,7 +756,7 @@ sub process_svc_phone { 'session_id' => $session_id, 'bulkdid' => [ @bulkdid ], 'countrycode' => '1', - map { $_ => $cgi->param($_) } qw( pkgnum svcpart phonenum ) + map { $_ => $cgi->param($_) } qw( pkgnum svcpart phonenum svcnum email forwarddst ) ); } @@ -765,7 +765,7 @@ sub process_svc_phone { return { $cgi->Vars, %{ part_svc_info( 'session_id' => $session_id, - map { $_ => $cgi->param($_) } qw( pkgnum svcpart ) + map { $_ => $cgi->param($_) } qw( pkgnum svcpart svcnum ) ) }, 'error' => $result->{'error'}, -- 2.11.0