diff options
| author | ivan <ivan> | 2011-11-29 01:55:15 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2011-11-29 01:55:15 +0000 | 
| commit | 0252d7f4d44ef775659353341ebd7d371631f58a (patch) | |
| tree | 341167a6e3488250cad376cb583162ab1f3198a2 /FS | |
| parent | 5fef26f41acb87904f2ce95a4dda0e50d34f995b (diff) | |
add forward and spam setting to inter.net portal, RT#13656
Diffstat (limited to 'FS')
| -rw-r--r-- | FS/FS/ClientAPI/MyAccount.pm | 61 | ||||
| -rw-r--r-- | FS/FS/ClientAPI_XMLRPC.pm | 1 | 
2 files changed, 60 insertions, 2 deletions
diff --git a/FS/FS/ClientAPI/MyAccount.pm b/FS/FS/ClientAPI/MyAccount.pm index 2530725ef..6e56d782d 100644 --- a/FS/FS/ClientAPI/MyAccount.pm +++ b/FS/FS/ClientAPI/MyAccount.pm @@ -27,6 +27,7 @@ use FS::TicketSystem;  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; @@ -1503,7 +1504,8 @@ sub list_svcs {  }  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"; @@ -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 ) ', -    'hashref'   => { 'svcnum' => $svcnum, }, +    'hashref'   => $hashref,      '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; diff --git a/FS/FS/ClientAPI_XMLRPC.pm b/FS/FS/ClientAPI_XMLRPC.pm index d7528df67..3adff2f61 100644 --- a/FS/FS/ClientAPI_XMLRPC.pm +++ b/FS/FS/ClientAPI_XMLRPC.pm @@ -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', +  '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',     | 
