From: Ivan Kohler Date: Wed, 30 Jan 2013 08:13:54 +0000 (-0800) Subject: per-agent lpr command, RT#18549 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=c3a7e8855edbe4f836543184d5a7543e04255a43 per-agent lpr command, RT#18549 --- diff --git a/FS/FS/Conf.pm b/FS/FS/Conf.pm index 9a064b6c6..25d472742 100644 --- a/FS/FS/Conf.pm +++ b/FS/FS/Conf.pm @@ -1616,6 +1616,7 @@ and customer address. Include units.', 'section' => 'required', 'description' => 'Print command for paper invoices, for example `lpr -h\'', 'type' => 'text', + 'per_agent' => 1, }, { diff --git a/FS/FS/Misc.pm b/FS/FS/Misc.pm index 096ec8a4c..5e89abc0c 100644 --- a/FS/FS/Misc.pm +++ b/FS/FS/Misc.pm @@ -800,16 +800,32 @@ sub _pslatex { } -=item do_print ARRAYREF +=item do_print ARRAYREF [, OPTION => VALUE ... ] Sends the lines in ARRAYREF to the printer. +Options available are: + +=over 4 + +=item agentnum + +Uses this agent's 'lpr' configuration setting override instead of the global +value. + +=item lpr + +Uses this command instead of the configured lpr command (overrides both the +global value and agentnum). + =cut sub do_print { - my $data = shift; + my( $data, %opt ) = @_; - my $lpr = $conf->config('lpr'); + my $lpr = ( exists($opt{'lpr'}) && $opt{'lpr'} ) + ? $opt{'lpr'} + : $conf->config('lpr', $opt{'agentnum'} ); my $outerr = ''; run3 $lpr, $data, \$outerr, \$outerr; diff --git a/FS/FS/cust_bill.pm b/FS/FS/cust_bill.pm index e7622d712..b3ae29011 100644 --- a/FS/FS/cust_bill.pm +++ b/FS/FS/cust_bill.pm @@ -1584,7 +1584,10 @@ sub print { $self->batch_invoice(\%opt); } else { - do_print $self->lpr_data(\%opt); + do_print( + $self->lpr_data(\%opt), + 'agentnum' => $self->cust_main->agentnum, + ); } } diff --git a/FS/FS/cust_main.pm b/FS/FS/cust_main.pm index 45d57cd79..1920e9fe6 100644 --- a/FS/FS/cust_main.pm +++ b/FS/FS/cust_main.pm @@ -4917,7 +4917,10 @@ sub queueable_print { sub print { my ($self, $template) = (shift, shift); - do_print [ $self->print_ps($template) ]; + do_print( + [ $self->print_ps($template) ], + 'agentnum' => $self->agentnum, + ); } #these three subs should just go away once agent stuff is all config overrides diff --git a/FS/FS/msg_template.pm b/FS/FS/msg_template.pm index e38346a66..011ce24d8 100644 --- a/FS/FS/msg_template.pm +++ b/FS/FS/msg_template.pm @@ -484,13 +484,15 @@ Render a PDF and send it to the printer. OPTIONS are as for 'render'. =cut sub print { - my $file = render(@_); - my @lpr = $conf->config('lpr'); - run ([@lpr, '-r'], '<', $file) + my( $self, %opt ) = @_; + my $file = $self->render(%opt); + + my $lpr = $conf->config('lpr', $opt{'cust_main'}->agentnum ); + + run ( $lpr, '<', $file) or die "lpr error:\n$?\n"; } - # helper sub for package dates my $ymd = sub { $_[0] ? time2str('%Y-%m-%d', $_[0]) : '' };