use FS::Conf;
use FS::Record qw(qsearch qsearchs dbdef);
use FS::Msgcat qw(gettext);
+use FS::Misc qw(card_types);
use FS::ClientAPI_SessionCache;
use FS::agent;
use FS::cust_main_county;
'payby' => [ $conf->config('signup_server-payby') ],
+ 'card_types' => card_types(),
+
'cvv_enabled' => defined dbdef->table('cust_main')->column('paycvv'),
'ship_enabled' => defined dbdef->table('cust_main')->column('ship_last'),
'countrydefault' => $conf->config('countrydefault') || 'US',
'refnum' => $conf->config('signup_server-default_refnum'),
- };
+ 'default_pkgpart' => $conf->config('signup_server-default_pkgpart'),
+ };
- if ($conf->exists('signup_server-classnum2') || $conf->exists('signup_server-classnum3')) {
- $signup_info->{optional_packages} = [];
+ my @addl = qw( signup_server-classnum2 signup_server-classnum3 );
- if (my $classnum = $conf->config('signup_server-classnum2')) {
- my @pkgs = map { $_->hashref } FS::Record::qsearch( 'part_pkg', { classnum => $classnum } );
- push @{$signup_info->{optional_packages}}, \@pkgs;
- }
+ if ( grep { $conf->exists($_) } @addl ) {
+
+ $signup_info->{optional_packages} = [];
- if (my $classnum = $conf->config('signup_server-classnum3')) {
- my @pkgs = map { $_->hashref } FS::Record::qsearch( 'part_pkg', { classnum => $classnum } );
- push @{$signup_info->{optional_packages}}, \@pkgs;
- }
+ foreach my $addl ( @addl ) {
+ my $classnum = $conf->config($addl) or next;
+ my @pkgs = map { $_->hashref }
+ qsearch( 'part_pkg', { classnum => $classnum } );
+ push @{$signup_info->{optional_packages}}, \@pkgs;
+ }
}
} else {
return { 'error' => "Can't resume session" }; #better error message
}
+ }elsif( exists $packet->{'customer_session_id'} ) {
+ my $cache = new FS::ClientAPI_SessionCache( {
+ 'namespace' => 'FS::ClientAPI::MyAccount',
+ } );
+ $session = $cache->get($packet->{'customer_session_id'});
+ if ( $session ) {
+ my $custnum = $session->{'custnum'};
+ my $cust_main = qsearchs('cust_main', { 'custnum' => $custnum });
+ return { 'error' => "Can't find your customer record" } unless $cust_main;
+ $agentnum = $cust_main->agentnum;
+ } else {
+ return { 'error' => "Can't resume session" }; #better error message
+ }
}
$signup_info->{'part_pkg'} = [];
# delete $signup_info->{'part_pkg'};
#}
- if ( $session ) {
+ if ( exists $packet->{'session_id'} ) {
my $agent_signup_info = { %$signup_info };
delete $agent_signup_info->{agentnum2part_pkg};
$agent_signup_info->{'agent'} = $session->{'agent'};