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;
}
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";
'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
} );
}
+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;
'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_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',