enable CardFortress in test database, #71513
[freeside.git] / FS / FS / bill_batch.pm
index fb41e0e..827c102 100644 (file)
@@ -58,25 +58,37 @@ sub print_pdf {
   my $self = shift;
   my $job = shift;
   $job->update_statustext(0) if $job;
-  my @invoices = sort { $a->invnum <=> $b->invnum } $self->cust_bill_batch;
-  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;
     }
   }
@@ -122,13 +134,11 @@ Returns the agent (see L<FS::agent>) for this invoice batch.
 
 =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});