package FS::bill_batch;
+use base qw(FS::Record);
use strict;
-use vars qw( @ISA $me $DEBUG );
+use vars qw( $me $DEBUG );
use CAM::PDF;
use FS::Conf;
-use FS::Record qw( qsearch qsearchs dbh );
-use FS::agent;
-use FS::cust_bill_batch;
-@ISA = qw( FS::Record );
$me = '[ FS::bill_batch ]';
-$DEBUG=0;
+$DEBUG = 0;
sub table { 'bill_batch' }
my $self = shift;
my $job = shift;
$job->update_statustext(0) if $job;
- my @invoices = sort { $a->invnum <=> $b->invnum }
- qsearch('cust_bill_batch', { batchnum => $self->batchnum });
- return "No invoices in batch ".$self->batchnum.'.' if !@invoices;
+ my @cust_bill_batch = sort { $a->invnum <=> $b->invnum }
+ $self->cust_bill_batch;
+ return "No invoices in batch ".$self->batchnum.'.' if !@cust_bill_batch;
+
+ my $conf = FS::Conf->new;
+ my $duplex = $conf->exists('invoice_print_pdf-duplex');
my $pdf_out;
my $num = 0;
- foreach my $invoice (@invoices) {
- my $part = $invoice->cust_bill->print_pdf({$invoice->options});
- die 'Failed creating PDF from invoice '.$invoice->invnum.'\n' if !$part;
+ foreach my $cust_bill_batch (@cust_bill_batch) {
+ my $part =
+ $cust_bill_batch->cust_bill->print_pdf({$cust_bill_batch->options});
+ die 'Failed creating PDF from invoice '.$cust_bill_batch->invnum.'\n'
+ if !$part;
if($pdf_out) {
$pdf_out->appendPDF(CAM::PDF->new($part));
- }
- else {
+ } else {
$pdf_out = CAM::PDF->new($part);
}
- if($job) {
+ if ( $duplex ) {
+ my $n = $pdf_out->numPages;
+ if ( $n % 2 == 1 ) {
+ # then insert a blank page so we end on an even number
+ $pdf_out->duplicatePage($n, 1);
+ }
+ }
+ if ($job) {
# update progressbar
$num++;
- my $error = $job->update_statustext(int(100 * $num/scalar(@invoices)));
+ my $error = $job->update_statustext(int(100 * $num/scalar(@cust_bill_batch)));
die $error if $error;
}
}
Returns the agent (see L<FS::agent>) for this invoice batch.
-=cut
-
-sub agent {
- my $self = shift;
- qsearchs( 'agent', { 'agentnum' => $self->agentnum } );
-}
-
=back
=head1 SUBROUTINES
=cut
-use Storable 'thaw';
use Data::Dumper;
-use MIME::Base64;
sub process_print_pdf {
my $job = shift;
- my $param = thaw(decode_base64(shift));
+ my $param = shift;
warn Dumper($param) if $DEBUG;
die "no batchnum specified!\n" if ! exists($param->{batchnum});
my $batch = FS::bill_batch->by_key($param->{batchnum});