X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FPrint.pm;h=042f1224400c63ca1494836c38d23771bddacf35;hb=a2f1bf834f4d758a991266b577b85ed232218e0d;hp=821b8795050dd03b7df2d6274aa8e2774f6826ca;hpb=4ec4fd9552ac92c29bd40b641eaac49d810d919a;p=koha.git diff --git a/C4/Print.pm b/C4/Print.pm index 821b879505..042f122440 100644 --- a/C4/Print.pm +++ b/C4/Print.pm @@ -1,44 +1,118 @@ package C4::Print; #assumes C4/Print.pm + +# Copyright 2000-2002 Katipo Communications +# +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place, +# Suite 330, Boston, MA 02111-1307 USA + use strict; require Exporter; #use C4::InterfaceCDK; +use C4::Context; + + use vars qw($VERSION @ISA @EXPORT); # set the version for version checking $VERSION = 0.01; +=head1 NAME + +C4::Print - Koha module dealing with printing + +=head1 SYNOPSIS + + use C4::Print; + +=head1 DESCRIPTION + +The functions in this module handle sending text to a printer. + +=head1 FUNCTIONS + +=over 2 + +=cut + @ISA = qw(Exporter); -@EXPORT = qw(&remoteprint &printreserve); +@EXPORT = qw(&remoteprint &printreserve &printslip); +=item remoteprint + + &remoteprint($env, $items, $borrower); + +Prints the list of items in C<$items> to a printer. + +C<$env> is a reference-to-hash. C<$env-E{queue}> specifies the +queue to print to; if it is empty or has the special value C, +C<&remoteprint> will print to the file F. + +C<$borrower> is a reference-to-hash giving information about a patron. +This may be gotten from C<&getpatroninformation>. The patron's name +will be printed in the output. + +C<$items> is a reference-to-list, where each element is a +reference-to-hash describing a borrowed item. C<$items> may be gotten +from C<¤tissues>. + +=cut +#' +# FIXME - It'd be nifty if this could generate pretty PostScript. sub remoteprint { my ($env,$items,$borrower)=@_; - #open (FILE,">/tmp/olwen"); - #print FILE "queue $env->{'queue'}"; - #close FILE; - #debug_msg($env,"In print"); - my $file=time; + + (return) unless (C4::Context->boolean_preference('printcirculationslips')); + my $file=time; # FIXME - Not used my $queue = $env->{'queue'}; + # FIXME - If 'queue' is undefined or empty, then presumably it should + # mean "use the default queue", whatever the default is. Presumably + # the default depends on the physical location of the machine. + # FIXME - Perhaps "print to file" should be a supported option. Just + # set the queue to "file" (or " file", if real queues aren't allowed + # to have spaces in them). Or perhaps if $queue eq "" and + # $env->{file} ne "", then that should mean "print to $env->{file}". if ($queue eq "" || $queue eq 'nulllp') { open (PRINTER,">/tmp/kohaiss"); - } else { - open(PRINTER, "| lpr -P $queue") or die "Couldn't write to queue:$queue!\n"; - } + } else { + # FIXME - This assumes that 'lpr' exists, and works as expected. + # This is a reasonable assumption, but only because every other + # printing package has a wrapper script called 'lpr'. It'd still + # be better to be able to customize this. + open(PRINTER, "| lpr -P $queue > /dev/null") or die "Couldn't write to queue:$queue!\n"; + } # print $queue; #open (FILE,">/tmp/$file"); my $i=0; - my $brdata = $env->{'brdata'}; + my $brdata = $env->{'brdata'}; # FIXME - Not used + # FIXME - This is HLT-specific. Put this stuff in a customizable + # site-specific file somewhere. print PRINTER "Horowhenua Library Trust\r\n"; # print PRINTER "$brdata->{'branchname'}\r\n"; - print PRINTER "Phone: 368-1953\r\n"; - print PRINTER "Fax: 367-9218\r\n"; + print PRINTER "Phone: 368-1953\r\n"; + print PRINTER "Fax: 367-9218\r\n"; print PRINTER "Email: renewals\@library.org.nz\r\n\r\n\r\n"; print PRINTER "$borrower->{'cardnumber'}\r\n"; print PRINTER "$borrower->{'title'} $borrower->{'initials'} $borrower->{'surname'}\r\n"; + # FIXME - Use for ($i = 0; $items->[$i]; $i++) + # Or better yet, foreach $item (@{$items}) while ($items->[$i]){ # print $i; my $itemdata = $items->[$i]; + # FIXME - This is just begging for a Perl format. print PRINTER "$i $itemdata->{'title'}\r\n"; print PRINTER "$itemdata->{'barcode'}"; print PRINTER " "x15; @@ -48,7 +122,7 @@ sub remoteprint { print PRINTER "\r\n\r\n\r\n\r\n\r\n\r\n\r\n"; if ($env->{'printtype'} eq "docket"){ #print chr(27).chr(105); - } + } close PRINTER; #system("lpr /tmp/$file"); } @@ -57,25 +131,82 @@ sub printreserve { my($env, $branchname, $bordata, $itemdata)=@_; my $file=time; my $printer = $env->{'printer'}; + (return) unless (C4::Context->boolean_preference('printreserveslips')); + if ($printer eq "" || $printer eq 'nulllp') { + open (PRINTER,">>/tmp/kohares"); + } else { + open (PRINTER, "| lpr -P $printer >/dev/null") or die "Couldn't write to queue:$!\n"; + } + my @da = localtime(time()); + my $todaysdate = "$da[2]:$da[1] $da[3]/$da[4]/$da[5]"; + +#(1900+$datearr[5]).sprintf ("%0.2d", ($datearr[4]+1)).sprintf ("%0.2d", $datearr[3]); + my $slip = <<"EOF"; +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Date: $todaysdate; + +ITEM RESERVED: +$itemdata->{'title'} ($itemdata->{'author'}) +barcode: $itemdata->{'barcode'} + +COLLECT AT: $branchname + +BORROWER: +$bordata->{'surname'}, $bordata->{'firstname'} +card number: $bordata->{'cardnumber'} +Phone: $bordata->{'phone'} +$bordata->{'streetaddress'} +$bordata->{'suburb'} +$bordata->{'town'} +$bordata->{'emailaddress'} + + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +EOF + print PRINTER $slip; + close PRINTER; + return $slip; +} + +=item printslip + + &printslip($env, $text) + +Prints the string C<$text> to a printer. C<$env-E{queue}> +specifies the queue to print to. + +If C<$env-E{queue}> is empty or set to C, C<&printslip> +will print to the file F. + +=cut +#' +# FIXME - There's also a &printslip in circ/circulation.pl +sub printslip { + my($env, $slip)=@_; + my $printer = $env->{'printer'}; + (return) unless (C4::Context->boolean_preference('printcirculationslips')); if ($printer eq "" || $printer eq 'nulllp') { open (PRINTER,">/tmp/kohares"); } else { - open (PRINTER, "| lpr -P $printer") or die "Couldn't write to queue:$!\n"; - } - print PRINTER "Collect at $branchname \r\n\r\n"; - print PRINTER "$bordata->{'surname'}; $bordata->{'firstname'}\r\n"; - print PRINTER "$bordata->{'cardnumber'}\r\n"; - print PRINTER "Phone: $bordata->{'phone'}\r\n"; - print PRINTER "$bordata->{'streetaddress'}\r\n"; - print PRINTER "$bordata->{'suburb'}\r\n"; - print PRINTER "$bordata->{'town'}\r\n"; - print PRINTER "$bordata->{'emailaddress'}\r\n\r\n"; - print PRINTER "$itemdata->{'barcode'}\r\n"; - print PRINTER "$itemdata->{'title'}\r\n"; - print PRINTER "$itemdata->{'author'}"; - print PRINTER "\r\n\r\n\r\n\r\n\r\n\r\n\r\n"; + open (PRINTER, "| lpr -P $printer >/dev/null") or die "Couldn't write to queue:$!\n"; + } + print PRINTER $slip; close PRINTER; } + END { } # module clean-up code here (global destructor) - - + +1; +__END__ + +=back + +=head1 AUTHOR + +Koha Developement team + +=head1 SEE ALSO + +C4::Circulation::Circ2(3) + +=cut