summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlevinse <levinse>2011-07-14 03:46:17 +0000
committerlevinse <levinse>2011-07-14 03:46:17 +0000
commit5d5e7f7248d786938c08c867c9ad8f855f92c532 (patch)
tree10d4a7ff29463eaf4d0b196084660b6897ad879e
parented9cbf0068524b98c0dfdc71183199f4e4333f5e (diff)
view/set svc_phone forwardst and email from self-service, RT13622
-rw-r--r--FS/FS/ClientAPI/MyAccount.pm34
-rw-r--r--fs_selfservice/FS-SelfService/cgi/provision_list.html11
-rw-r--r--fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html13
-rw-r--r--fs_selfservice/FS-SelfService/cgi/selfservice.cgi6
4 files changed, 58 insertions, 6 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm
index 014434a..46bb90d 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 a1a5194..22054e6 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><B>". $cust_svc->{label}[1]. '</B>';
$OUT .= '<BR><I>password: '. encode_entities($cust_svc->{_password}). '</I>'
if exists($cust_svc->{_password});
+ if ( exists($cust_svc->{svchash}) ) {
+ $OUT .= '<BR><I>Email: '. encode_entities($cust_svc->{svchash}->{email}). '</I>'
+ if exists($cust_svc->{svchash}->{email})
+ && length($cust_svc->{svchash}->{email});
+ $OUT .= '<BR><I>Forward to: '. encode_entities($cust_svc->{svchash}->{forwarddst}). '</I>'
+ if exists($cust_svc->{svchash}->{forwarddst})
+ && length($cust_svc->{svchash}->{forwarddst});
+ }
$OUT .= '</TD>'.
"$td><FONT SIZE=-1>";
@@ -50,7 +58,8 @@ foreach my $pkg (
unless ( $cust_svc->{'svcnum'} == $svcnum ) {
$OUT .= qq!(<A HREF="javascript:areyousure('${url}delete_svc;svcnum=$cust_svc->{svcnum}', 'This will permanently delete the $cust_svc->{label}[1] $cust_svc->{label}[0]. Are you sure?')">!.
'delete</A>)';
-
+ $OUT .= qq!<BR>(<A HREF="${url}provision_svc;pkgnum=$pkg->{pkgnum};svcpart=$cust_svc->{'svcpart'};svcnum=$cust_svc->{'svcnum'}">modify</A>)!
+ if ( exists($cust_svc->{svchash}) && $cust_svc->{label}[2] eq 'svc_phone' );
}
$OUT .= '</FONT></TD></TR>';
$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 ab9827e..9a07e7d 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 .= "<table>"
. qq!<input type="hidden" name="lnp" value="1">!
- . 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 #")
. "</table>";
} else {
+ if ( $svcnum ) {
+ $OUT .= qq!<INPUT TYPE="hidden" NAME="svcnum" VALUE="$svcnum">!;
+ $OUT .= qq!<INPUT TYPE="hidden" NAME="phonenum" VALUE="">!;
+ $OUT .= qq!<TABLE><TR><TD>Email</TD><TD><INPUT TYPE="text" NAME="email"
+ VALUE="$email"></TD></TR>
+ <TR><TD>Forward to</TD><TD>
+ <INPUT TYPE="text" NAME="forwarddst" VALUE="$forwarddst">
+ </TD></TR></TABLE>!;
+ }
+ else {
didselector('field' => 'phonenum',
'svcpart' => $svcpart,
'bulknum' => $numavail,
);
+ }
}
%>
<BR><BR><INPUT TYPE="submit" VALUE="Setup">
diff --git a/fs_selfservice/FS-SelfService/cgi/selfservice.cgi b/fs_selfservice/FS-SelfService/cgi/selfservice.cgi
index 58f2d0f..8f1c4a5 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'},