summaryrefslogtreecommitdiff
path: root/FS
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2014-08-09 17:40:49 -0700
committerMark Wells <mark@freeside.biz>2014-08-09 17:40:49 -0700
commita620ce3b904e9a9ba1da9c990f63f7a94acb785c (patch)
tree300c8b84696ee927a6f595891938a2c911d37f4e /FS
parent99c5baf25d3b02a91fdae547ad6fe40ecead508c (diff)
two-sided printing of invoice batches, #29927
Diffstat (limited to 'FS')
-rw-r--r--FS/FS/Conf.pm7
-rw-r--r--FS/FS/bill_batch.pm9
-rw-r--r--FS/FS/cust_bill.pm2
3 files changed, 18 insertions, 0 deletions
diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm
index 8f4d05b3c..616a06c90 100644
--- a/FS/FS/Conf.pm
+++ b/FS/FS/Conf.pm
@@ -1527,6 +1527,13 @@ and customer address. Include units.',
'type' => 'checkbox',
},
+ {
+ 'key' => 'invoice_print_pdf-duplex',
+ 'section' => 'invoicing',
+ 'description' => 'Insert blank pages so that spooled invoices are each an even number of pages. Use this for double-sided printing.',
+ 'type' => 'checkbox',
+ },
+
{
'key' => 'invoice_default_terms',
'section' => 'invoicing',
diff --git a/FS/FS/bill_batch.pm b/FS/FS/bill_batch.pm
index fb41e0e6b..d4f2aec29 100644
--- a/FS/FS/bill_batch.pm
+++ b/FS/FS/bill_batch.pm
@@ -61,6 +61,8 @@ sub print_pdf {
my @invoices = sort { $a->invnum <=> $b->invnum } $self->cust_bill_batch;
return "No invoices in batch ".$self->batchnum.'.' if !@invoices;
+ my $duplex = FS::Conf->exists('invoice_print_pdf-duplex');
+
my $pdf_out;
my $num = 0;
foreach my $invoice (@invoices) {
@@ -73,6 +75,13 @@ sub print_pdf {
else {
$pdf_out = CAM::PDF->new($part);
}
+ 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++;
diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm
index 676f218c7..1b9b34792 100644
--- a/FS/FS/cust_bill.pm
+++ b/FS/FS/cust_bill.pm
@@ -1507,6 +1507,8 @@ sub fax_invoice {
Place this invoice into the open batch (see C<FS::bill_batch>). If there
isn't an open batch, one will be created.
+HASHREF may contain any options to be passed to C<print_pdf>.
+
=cut
sub batch_invoice {