view/set svc_phone forwardst and email from self-service, RT13622
authorlevinse <levinse>
Thu, 14 Jul 2011 03:46:18 +0000 (03:46 +0000)
committerlevinse <levinse>
Thu, 14 Jul 2011 03:46:18 +0000 (03:46 +0000)
FS/FS/ClientAPI/MyAccount.pm
fs_selfservice/FS-SelfService/cgi/provision_list.html
fs_selfservice/FS-SelfService/cgi/provision_svc_phone.html
fs_selfservice/FS-SelfService/cgi/selfservice.cgi

index 379f87e..2d2ea01 100644 (file)
@@ -1039,6 +1039,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
                               ],
@@ -1601,6 +1605,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'});
@@ -1763,7 +1784,7 @@ sub part_svc_info {
 
   my $conf = new FS::Conf;
 
-  return {
+  my $ret = {
     'svc'     => $part_svc->svc,
     'svcdb'   => $part_svc->svcdb,
     'pkgnum'  => $pkgnum,
@@ -1782,6 +1803,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 {
index a1a5194..22054e6 100644 (file)
@@ -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;
index ab9827e..9a07e7d 100644 (file)
@@ -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">
index 5b2d298..049c4df 100644 (file)
@@ -700,7 +700,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'};
 
@@ -734,7 +734,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 )
        );
     }
 
@@ -743,7 +743,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'},