add forward and spam setting to inter.net portal, RT#13656
authorivan <ivan>
Tue, 29 Nov 2011 01:55:15 +0000 (01:55 +0000)
committerivan <ivan>
Tue, 29 Nov 2011 01:55:15 +0000 (01:55 +0000)
FS/FS/ClientAPI/MyAccount.pm
FS/FS/ClientAPI_XMLRPC.pm
fs_selfservice/FS-SelfService/SelfService.pm

index 2530725..6e56d78 100644 (file)
@@ -27,6 +27,7 @@ use FS::TicketSystem;
 use FS::ClientAPI_SessionCache;
 use FS::cust_svc;
 use FS::svc_acct;
 use FS::ClientAPI_SessionCache;
 use FS::cust_svc;
 use FS::svc_acct;
+use FS::svc_forward;
 use FS::svc_domain;
 use FS::svc_phone;
 use FS::svc_external;
 use FS::svc_domain;
 use FS::svc_phone;
 use FS::svc_external;
@@ -1503,7 +1504,8 @@ sub list_svcs {
 }
 
 sub _customer_svc_x {
 }
 
 sub _customer_svc_x {
-  my($custnum, $svcnum, $table) = @_;
+  my($custnum, $svcnum, $table) = (shift, shift, shift);
+  my $hashref = ref($svcnum) ? $svcnum : { 'svcnum' => $svcnum };
 
   $custnum =~ /^(\d+)$/ or die "illegal custnum";
   my $search = " AND custnum = $1";
 
   $custnum =~ /^(\d+)$/ or die "illegal custnum";
   my $search = " AND custnum = $1";
@@ -1514,7 +1516,7 @@ sub _customer_svc_x {
     'addl_from' => 'LEFT JOIN cust_svc  USING ( svcnum  ) '.
                    'LEFT JOIN cust_pkg  USING ( pkgnum  ) ',#.
                    #'LEFT JOIN cust_main USING ( custnum ) ',
     'addl_from' => 'LEFT JOIN cust_svc  USING ( svcnum  ) '.
                    'LEFT JOIN cust_pkg  USING ( pkgnum  ) ',#.
                    #'LEFT JOIN cust_main USING ( custnum ) ',
-    'hashref'   => { 'svcnum' => $svcnum, },
+    'hashref'   => $hashref,
     'extra_sql' => $search, #important
   } );
 
     'extra_sql' => $search, #important
   } );
 
@@ -1536,6 +1538,61 @@ sub svc_status_html {
 
 }
 
 
 }
 
+sub acct_forward_info {
+  my $p = shift;
+
+  my($context, $session, $custnum) = _custoragent_session_custnum($p);
+  return { 'error' => $session } if $context eq 'error';
+
+  my $svc_forward = _customer_svc_x( $custnum,
+                                     { 'srcsvc' => $p->{'svcnum'} },
+                                     'svc_forward',
+                                   )
+    or return { 'error' => '',
+                'dst'   => '',
+              };
+
+  return { 'error' => '',
+           'dst'   => $svc_forward->dst || $svc_forward->dstsvc_acct->email,
+         };
+
+}
+
+sub process_acct_forward {
+  my $p = shift;
+
+  my($context, $session, $custnum) = _custoragent_session_custnum($p);
+  return { 'error' => $session } if $context eq 'error';
+
+  my $old = _customer_svc_x( $custnum,
+                             { 'srcsvc' => $p->{'svcnum'} },
+                             'svc_forward',
+                           );
+
+  if ( $p->{'dst'} eq '' ) {
+    if ( $old ) {
+      my $error = $old->delete;
+      return { 'error' => $error };
+    }
+    return { 'error' => '' };
+  }
+
+  my $new = new FS::svc_forward { 'srcsvc' => $p->{'svcnum'},
+                                  'dst'    => $p->{'dst'},
+                                };
+
+  my $error;
+  if ( $old ) {
+    $new->svcnum($old->svcnum);
+    $error = $new->replace($old);
+  } else {
+    $error = $new->insert;
+  }
+
+  return { 'error' => $error };
+
+}
+
 sub list_dsl_devices {
   my $p = shift;
 
 sub list_dsl_devices {
   my $p = shift;
 
index d7528df..3adff2f 100644 (file)
@@ -121,6 +121,7 @@ sub ss2clientapi {
   'list_svcs'                 => 'MyAccount/list_svcs',     #add to ss (added?)
   'list_svc_usage'            => 'MyAccount/list_svc_usage',   
   'svc_status_html'           => 'MyAccount/svc_status_html',
   'list_svcs'                 => 'MyAccount/list_svcs',     #add to ss (added?)
   'list_svc_usage'            => 'MyAccount/list_svc_usage',   
   'svc_status_html'           => 'MyAccount/svc_status_html',
+  'acct_forward_info'         => 'MyAccount/acct_forward_info',
   'list_dsl_devices'          => 'MyAccount/list_dsl_devices',   
   'add_dsl_device'            => 'MyAccount/add_dsl_device',   
   'delete_dsl_device'         => 'MyAccount/delete_dsl_device',   
   'list_dsl_devices'          => 'MyAccount/list_dsl_devices',   
   'add_dsl_device'            => 'MyAccount/add_dsl_device',   
   'delete_dsl_device'         => 'MyAccount/delete_dsl_device',   
index 02e068c..95487d9 100644 (file)
@@ -53,6 +53,7 @@ $socket .= '.'.$tag if defined $tag && length($tag);
   'list_svcs'                 => 'MyAccount/list_svcs',     #add to ss (added?)
   'list_svc_usage'            => 'MyAccount/list_svc_usage',   
   'svc_status_html'           => 'MyAccount/svc_status_html',
   'list_svcs'                 => 'MyAccount/list_svcs',     #add to ss (added?)
   'list_svc_usage'            => 'MyAccount/list_svc_usage',   
   'svc_status_html'           => 'MyAccount/svc_status_html',
+  'acct_forward_info'         => 'MyAccount/acct_forward_info',
   'list_dsl_devices'          => 'MyAccount/list_dsl_devices',   
   'add_dsl_device'            => 'MyAccount/add_dsl_device',   
   'delete_dsl_device'         => 'MyAccount/delete_dsl_device',   
   'list_dsl_devices'          => 'MyAccount/list_dsl_devices',   
   'add_dsl_device'            => 'MyAccount/add_dsl_device',   
   'delete_dsl_device'         => 'MyAccount/delete_dsl_device',