summaryrefslogtreecommitdiff
path: root/FS/FS/svc_Common.pm
diff options
context:
space:
mode:
authorivan <ivan>2011-02-14 21:43:01 +0000
committerivan <ivan>2011-02-14 21:43:01 +0000
commit7d1cf3b75da3ba9aab3667cdc0125e25bbc76438 (patch)
tree946e931184b1c7d4b913b592f4fdef955f0cdff2 /FS/FS/svc_Common.pm
parente356f2ebb6564fe8d5333fc89bb4583ee3cd1fb1 (diff)
finish fixing declined signup of prepaid package provisioning to RADIUS anyway, RT#10122
Diffstat (limited to 'FS/FS/svc_Common.pm')
-rw-r--r--FS/FS/svc_Common.pm34
1 files changed, 34 insertions, 0 deletions
diff --git a/FS/FS/svc_Common.pm b/FS/FS/svc_Common.pm
index 3d8fe16..5c6e16b 100644
--- a/FS/FS/svc_Common.pm
+++ b/FS/FS/svc_Common.pm
@@ -414,6 +414,15 @@ sub expire {
Replaces OLD_RECORD with this one. If there is an error, returns the error,
otherwise returns false.
+Currently available options are: I<export_args> and I<depend_jobnum>.
+
+If I<depend_jobnum> is set (to a scalar jobnum or an array reference of
+jobnums), all provisioning jobs will have a dependancy on the supplied
+jobnum(s) (they will not run until the specific job(s) complete(s)).
+
+If I<export_args> is set to an array reference, the referenced list will be
+passed to export commands.
+
=cut
sub replace {
@@ -428,6 +437,13 @@ sub replace {
? shift
: { @_ };
+ my @jobnums = ();
+ local $FS::queue::jobnums = \@jobnums;
+ warn "[$me] replace: set \$FS::queue::jobnums to $FS::queue::jobnums\n"
+ if $DEBUG;
+ my $depend_jobnums = $options->{'depend_jobnum'} || [];
+ $depend_jobnums = [ $depend_jobnums ] unless ref($depend_jobnums);
+
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
local $SIG{QUIT} = 'IGNORE';
@@ -473,6 +489,9 @@ sub replace {
#new-style exports!
unless ( $noexport_hack ) {
+ warn "[$me] replace: \$FS::queue::jobnums is $FS::queue::jobnums\n"
+ if $DEBUG;
+
my $export_args = $options->{'export_args'} || [];
#not quite false laziness, but same pattern as FS::svc_acct::replace and
@@ -521,6 +540,21 @@ sub replace {
}
}
+ foreach my $depend_jobnum ( @$depend_jobnums ) {
+ warn "[$me] inserting dependancies on supplied job $depend_jobnum\n"
+ if $DEBUG;
+ foreach my $jobnum ( @jobnums ) {
+ my $queue = qsearchs('queue', { 'jobnum' => $jobnum } );
+ warn "[$me] inserting dependancy for job $jobnum on $depend_jobnum\n"
+ if $DEBUG;
+ my $error = $queue->depend_insert($depend_jobnum);
+ if ( $error ) {
+ $dbh->rollback if $oldAutoCommit;
+ return "error queuing job dependancy: $error";
+ }
+ }
+ }
+
}
$dbh->commit or die $dbh->errstr if $oldAutoCommit;