use strict;
use vars qw( @ISA @EXPORT_OK $DEBUG $conf $jobnums);
use Exporter;
+use MIME::Base64;
+use Storable qw( nfreeze thaw );
use FS::UID qw(myconnect);
use FS::Conf;
use FS::Record qw( qsearch qsearchs dbh );
use FS::queue_arg;
use FS::queue_depend;
use FS::cust_svc;
+use FS::CGI qw (rooturl);
@ISA = qw(FS::Record);
@EXPORT_OK = qw( joblisting );
=item svcnum
-Optional link to service (see L<FS::cust_svc>)
+Optional link to service (see L<FS::cust_svc>).
+
+=item custnum
+
+Optional link to customer (see L<FS::cust_main>).
+
+=item secure
+
+Secure flag, 'Y' indicates that when using encryption, the job needs to be
+run on a machine with the private key.
+
+=cut
=back
#false laziness w/part_export.pm
sub insert {
- my $self = shift;
+ my( $self, @args ) = @_;
local $SIG{HUP} = 'IGNORE';
local $SIG{INT} = 'IGNORE';
local $FS::UID::AutoCommit = 0;
my $dbh = dbh;
+ my %args = ();
+ {
+ no warnings "misc";
+ %args = @args;
+ }
+
+ $self->custnum( $args{'custnum'} ) if $args{'custnum'};
+
my $error = $self->SUPER::insert;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
return $error;
}
- foreach my $arg ( @_ ) {
+ foreach my $arg ( @args ) {
+ my $freeze = ref($arg) ? 'Y' : '';
my $queue_arg = new FS::queue_arg ( {
'jobnum' => $self->jobnum,
- 'arg' => $arg,
+ 'frozen' => $freeze,
+ 'arg' => $freeze ? encode_base64(nfreeze($arg)) : $arg,# always freeze?
} );
$error = $queue_arg->insert;
if ( $error ) {
my @del = qsearch( 'queue_arg', { 'jobnum' => $self->jobnum } );
push @del, qsearch( 'queue_depend', { 'depend_jobnum' => $self->jobnum } );
+ my $reportname = '';
+ if ( $self->status =~/^done/ ) {
+ my $dropstring = rooturl(). '/misc/queued_report\?report=';
+ if ($self->statustext =~ /.*$dropstring([.\w]+)\>/) {
+ $reportname = "$FS::UID::cache_dir/cache.$FS::UID::datasrc/report.$1";
+ }
+ }
+
my $error = $self->SUPER::delete;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
}
$dbh->commit or die $dbh->errstr if $oldAutoCommit;
+
+ unlink $reportname if $reportname;
'';
$self->ut_numbern('jobnum')
|| $self->ut_anything('job')
|| $self->ut_numbern('_date')
- || $self->ut_enum('status',['', qw( new locked failed )])
+ || $self->ut_enum('status',['', qw( new locked failed done )])
|| $self->ut_anything('statustext')
|| $self->ut_numbern('svcnum')
;
sub args {
my $self = shift;
- map $_->arg, qsearch( 'queue_arg',
- { 'jobnum' => $self->jobnum },
- '',
- 'ORDER BY argnum'
- );
+ map { $_->frozen ? thaw(decode_base64($_->arg)) : $_->arg }
+ qsearch( 'queue_arg',
+ { 'jobnum' => $self->jobnum },
+ '',
+ 'ORDER BY argnum'
+ );
}
=item cust_svc