X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2FClientAPI%2FSignup.pm;h=7bbdaff016bb5479206212e65c234e5f1ca9cdd3;hb=716be4fdacc0995d54a0df8c77268606f23fa768;hp=26d3612cb18f4857bbb7fdf9c43aa6dda2bc2bca;hpb=8b69219cd572abe6c2f2873d3a5306f8ae513fc9;p=freeside.git diff --git a/FS/FS/ClientAPI/Signup.pm b/FS/FS/ClientAPI/Signup.pm index 26d3612cb..7bbdaff01 100644 --- a/FS/FS/ClientAPI/Signup.pm +++ b/FS/FS/ClientAPI/Signup.pm @@ -26,6 +26,15 @@ use FS::payby; $DEBUG = 0; $me = '[FS::ClientAPI::Signup]'; +sub clear_cache { + warn "$me clear_cache called\n" if $DEBUG; + my $cache = new FS::ClientAPI_SessionCache( { + 'namespace' => 'FS::ClientAPI::Signup', + } ); + $cache->clear(); + return {}; +} + sub signup_info { my $packet = shift; @@ -90,7 +99,7 @@ sub signup_info { ], 'agent' => [ map { my $agent = $_; - { map { $_ => $agent->get($_) } @agent_fields } + +{ map { $_ => $agent->get($_) } @agent_fields } } qsearch('agent', { 'disabled' => '' } ) ], @@ -386,9 +395,14 @@ sub signup_info { my $agent_signup_info = { %$signup_info }; delete $agent_signup_info->{agentnum2part_pkg}; $agent_signup_info->{'agent'} = $session->{'agent'}; - $agent_signup_info; - } else { - $signup_info; + return $agent_signup_info; + } + elsif ( exists $packet->{'keys'} ) { + my @keys = @{ $packet->{'keys'} }; + return { map { $_ => $signup_info->{$_} } @keys }; + } + else { + return $signup_info; } } @@ -437,6 +451,9 @@ sub new_customer { unless $packet->{'popnum'} || !scalar(qsearch('svc_acct_pop',{} )); } + elsif ( $svc_x eq 'svc_pbx' ) { + #possibly some validation will be needed + } my $agentnum; if ( exists $packet->{'session_id'} ) { @@ -571,23 +588,26 @@ sub new_customer { } $svc->child_objects( \@acct_snarf ); - push @svc, $svc; } elsif ( $svc_x eq 'svc_phone' ) { - my $svc = new FS::svc_phone ( { + push @svc, new FS::svc_phone ( { 'svcpart' => $svcpart, map { $_ => $packet->{$_} } qw( countrycode phonenum sip_password pin ), } ); - push @svc, $svc; + } elsif ( $svc_x eq 'svc_pbx' ) { + push @svc, new FS::svc_pbx ( { + 'svcpart' => $svcpart, + map { $_ => $packet->{$_} } + qw( id title ), + } ); + } else { die "unknown signup service $svc_x"; } - my $y = $svc[0]->setdefault; # arguably should be in new method - return { 'error' => $y } if $y && !ref($y); if ($packet->{'mac_addr'} && $conf->exists('signup_server-mac_addr_svcparts')) { @@ -606,15 +626,16 @@ sub new_customer { '_password' => '', #blank as requested (set passwordmin to 0) }; - my $y = $svc->setdefault; # arguably should be in new method - return { 'error' => $y } if $y && !ref($y); - push @svc, $svc; } - #$error = $svc->check; - #return { 'error' => $error } if $error; + foreach my $svc ( @svc ) { + my $y = $svc->setdefault; # arguably should be in new method + return { 'error' => $y } if $y && !ref($y); + #$error = $svc->check; + #return { 'error' => $error } if $error; + } #setup a job dependancy to delay provisioning my $placeholder = new FS::queue ( { @@ -708,14 +729,20 @@ sub new_customer { my %return = ( 'error' => '', 'signup_service' => $svc_x, + 'svcnum' => $svc[0]->svcnum, + 'custnum' => $cust_main->custnum, ); if ( $svc_x eq 'svc_acct' ) { $return{$_} = $svc[0]->$_() for qw( username _password ); } elsif ( $svc_x eq 'svc_phone' ) { $return{$_} = $svc[0]->$_() for qw( countrycode phonenum sip_password pin ); + } elsif ( $svc_x eq 'svc_pbx' ) { + #$return{$_} = $svc[0]->$_() for qw( ) #nothing yet } else { - die "unknown signup service $svc_x"; + return { 'error' => "configuration error: unknown signup service $svc_x" }; + #die "unknown signup service $svc_x"; + # return an error that's visible to someone somewhere } return \%return;