use Tie::RefHash;
use FS::Conf;
use FS::Record qw(qsearch qsearchs dbdef);
+use FS::Msgcat qw(gettext);
use FS::agent;
use FS::cust_main_county;
use FS::part_pkg;
use FS::cust_pkg;
use FS::svc_acct;
use FS::acct_snarf;
-use FS::Msgcat qw(gettext);
+use FS::queue;
use FS::ClientAPI; #hmm
FS::ClientAPI->register_handlers(
)
],
+ 'part_referral' =>
+ [
+ map { $_->hashref }
+ qsearch('part_referral',
+ dbdef->table('part_referral')->column('disabled')
+ ? { 'disabled' => '' }
+ : {}
+ )
+ ],
+
'agentnum2part_pkg' =>
{
map {
'countrydefault' => $conf->config('countrydefault') || 'US',
+ 'refnum' => $conf->config('signup_server-default_refnum'),
+
};
if (
my @acct_snarf;
my $snarfnum = 1;
- while ( length($packet->{"snarf_machine$snarfnum"}) ) {
+ while ( exists($packet->{"snarf_machine$snarfnum"})
+ && length($packet->{"snarf_machine$snarfnum"}) ) {
my $acct_snarf = new FS::acct_snarf ( {
'machine' => $packet->{"snarf_machine$snarfnum"},
'protocol' => $packet->{"snarf_protocol$snarfnum"},
$error = $svc_acct->check;
return { 'error' => $error } if $error;
+ #setup a job dependancy to delay provisioning
+ my $placeholder = new FS::queue ( {
+ 'job' => 'FS::ClientAPI::Signup::__placeholder',
+ 'status' => 'locked',
+ } );
+ $error = $placeholder->insert;
+ return { 'error' => $error } if $error;
+
use Tie::RefHash;
tie my %hash, 'Tie::RefHash';
%hash = ( $cust_pkg => [ $svc_acct ] );
#msgcat
- $error = $cust_main->insert( \%hash, \@invoicing_list, 'noexport' => 1 );
- return { 'error' => $error } if $error;
+ $error = $cust_main->insert(
+ \%hash,
+ \@invoicing_list,
+ 'depend_jobnum' => $placeholder->jobnum,
+ );
+ if ( $error ) {
+ my $perror = $placeholder->delete;
+ $error .= " (Additionally, error removing placeholder: $perror)" if $perror;
+ return { 'error' => $error };
+ }
if ( $conf->exists('signup_server-realtime') ) {
local $FS::svc_Common::noexport_hack = 1;
$cust_main->cancel('quiet'=>1);
+ my $perror = $placeholder->depended_delete;
+ warn "error removing provisioning jobs after decline: $perror" if $perror;
+ unless ( $perror ) {
+ $perror = $placeholder->delete;
+ warn "error removing placeholder after decline: $perror" if $perror;
+ }
+
return { 'error' => '_decline' };
}
}
- $cust_main->reexport;
+
+ $error = $placeholder->delete;
+ return { 'error' => $error } if $error;
return { error => '' };