From ffeb666994327b97e26bc372fd574d05a40e8336 Mon Sep 17 00:00:00 2001 From: Katrin Fischer Date: Wed, 26 Feb 2014 17:50:10 +0100 Subject: [PATCH] Bug 11828: Add German translation of layout2pages PDF template MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit To test: - Switch system preference OrderPdfFormat to pdfformat::layout2pagesde - Create one or more baskets with some orders each. - Add all baskets to one basket group - Print the basket group - Check everything is translated into German and the formatting/layout looks ok Followed test plan and compared English with German printout. German version is OK. Signed-off-by: Marc Véron Signed-off-by: Jonathan Druart Signed-off-by: Galen Charlton --- acqui/basketgroup.pl | 3 +- acqui/pdfformat/layout2pagesde.pm | 264 ++++++++++++++++++ .../intranet-tmpl/prog/pdf/layout2pagesde.odt | Bin 0 -> 12696 bytes .../intranet-tmpl/prog/pdf/layout2pagesde.pdf | Bin 0 -> 23158 bytes 4 files changed, 266 insertions(+), 1 deletion(-) create mode 100644 acqui/pdfformat/layout2pagesde.pm create mode 100644 koha-tmpl/intranet-tmpl/prog/pdf/layout2pagesde.odt create mode 100644 koha-tmpl/intranet-tmpl/prog/pdf/layout2pagesde.pdf diff --git a/acqui/basketgroup.pl b/acqui/basketgroup.pl index 6b2529dfee..b2d8b94c9a 100755 --- a/acqui/basketgroup.pl +++ b/acqui/basketgroup.pl @@ -126,7 +126,8 @@ sub printbasketgrouppdf{ my ($basketgroupid) = @_; my $pdfformat = C4::Context->preference("OrderPdfFormat"); - if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages' || $pdfformat eq 'pdfformat::layout3pagesfr'){ + if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages' || $pdfformat eq 'pdfformat::layout3pagesfr' + || $pdfformat eq 'pdfformat::layout2pagesde'){ eval { eval "require $pdfformat"; import $pdfformat; diff --git a/acqui/pdfformat/layout2pagesde.pm b/acqui/pdfformat/layout2pagesde.pm new file mode 100644 index 0000000000..efdc231435 --- /dev/null +++ b/acqui/pdfformat/layout2pagesde.pm @@ -0,0 +1,264 @@ +#!/usr/bin/perl + +#example script to print a basketgroup +#written 07/11/08 by john.soros@biblibre.com and paul.poulain@biblibre.com + +# Copyright 2008-2009 BibLibre SARL +# +# 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., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +#you can use any PDF::API2 module, all you need to do is return the stringifyed pdf object from the printpdf sub. +package pdfformat::layout2pagesde; +use vars qw($VERSION @ISA @EXPORT); +use Number::Format qw(format_price); +use MIME::Base64; +use strict; +use warnings; +use utf8; + +use C4::Branch qw(GetBranchDetail); + +BEGIN { + use Exporter (); + our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); + # set the version for version checking + $VERSION = 1.00; + @ISA = qw(Exporter); + @EXPORT = qw(printpdf); +} + + +#be careful, all the sizes (height, width, etc...) are in mm, not PostScript points (the default measurment of PDF::API2). +#The constants exported tranform that into PostScript points (/mm for milimeter, /in for inch, pt is postscript point, and as so is there only to show what is happening. +use constant mm => 25.4 / 72; +use constant in => 1 / 72; +use constant pt => 1; + +use PDF::API2; +#A4 paper specs +my ($height, $width) = (297, 210); +use PDF::Table; + +sub printorders { + my ($pdf, $basketgroup, $baskets, $orders) = @_; + + my $cur_format = C4::Context->preference("CurrencyFormat"); + my $num; + + if ( $cur_format eq 'FR' ) { + $num = new Number::Format( + 'decimal_fill' => '2', + 'decimal_point' => ',', + 'int_curr_symbol' => '', + 'mon_thousands_sep' => ' ', + 'thousands_sep' => ' ', + 'mon_decimal_point' => ',' + ); + } else { # US by default.. + $num = new Number::Format( + 'int_curr_symbol' => '', + 'mon_thousands_sep' => ',', + 'mon_decimal_point' => '.' + ); + } + + $pdf->mediabox($height/mm, $width/mm); + my $page = $pdf->page(); + + my $pdftable = new PDF::Table(); + + my $abaskets; + my $arrbasket; + my @keys = ('Bestellung', 'Titel', 'Anz.', 'Preis inkl. MWSt.', 'Rabatt', 'MWSt.', 'Gesamt, exkl. MWSt.', 'Gesamt inkl. MWSt.'); + for my $bkey (@keys) { + push(@$arrbasket, $bkey); + } + push(@$abaskets, $arrbasket); + + for my $basket (@$baskets){ + for my $line (@{$orders->{$basket->{basketno}}}) { + $arrbasket = undef; + push( @$arrbasket, + $basket->{basketno}, + $line->{title} . " / " . $line->{author} . ( $line->{isbn} ? " ISBN: " . $line->{isbn} : '' ) . ( $line->{en} ? " EN: " . $line->{en} : '' ) . ", " . $line->{itemtype} . ( $line->{publishercode} ? 'Verlag:'. $line->{publishercode} : ""), + $line->{quantity}, + $num->format_price($line->{rrpgsti}), + $num->format_price($line->{discount}).'%', + $num->format_price($line->{gstrate} * 100).'%', + $num->format_price($line->{totalgste}), + $num->format_price($line->{totalgsti}), + ); + push(@$abaskets, $arrbasket); + } + } + + $pdftable->table($pdf, $page, $abaskets, + x => 10/mm, + w => ($width - 20)/mm, + start_y => 285/mm, + next_y => 285/mm, + start_h => 260/mm, + next_h => 260/mm, + padding => 5, + padding_right => 5, + background_color_odd => "lightgray", + font => $pdf->corefont("Times", -encoding => "utf8"), + font_size => 3/mm, + header_props => { + font => $pdf->corefont("Times", -encoding => "utf8"), + font_size => 10, + bg_color => 'gray', + repeat => 1, + }, + column_props => [ + { justify => 'left' }, + { min_w => 90/mm }, + { justify => 'right' }, + { justify => 'right' }, + { justify => 'right' }, + { justify => 'right' }, + { justify => 'right' }, + { justify => 'right' }, + ], + ); + + $pdf->mediabox($width/mm, $height/mm); +} + +sub printhead { + my ($pdf, $basketgroup, $bookseller) = @_; + + # get library name + my $libraryname = C4::Context->preference("LibraryName"); + # get branch details + my $billingdetails = GetBranchDetail( $basketgroup->{billingplace} ); + my $deliverydetails = GetBranchDetail( $basketgroup->{deliveryplace} ); + my $freedeliveryplace = $basketgroup->{freedeliveryplace}; + # get the subject + my $subject; + + # open 1st page (with the header) + my $page = $pdf->openpage(1); + + # create a text + my $text = $page->text; + + # print the libraryname in the header + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 6/mm ); + $text->translate(30/mm, ($height-28.5)/mm); + $text->text($libraryname); + + # print order info, on the default PDF + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 8/mm ); + $text->translate(100/mm, ($height-5-48)/mm); + $text->text($basketgroup->{'id'}); + + # print the date + my $today = C4::Dates->today(); + $text->translate(130/mm, ($height-5-48)/mm); + $text->text($today); + + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 4/mm ); + + # print billing infos + $text->translate(100/mm, ($height-86)/mm); + $text->text($libraryname); + $text->translate(100/mm, ($height-97)/mm); + $text->text($billingdetails->{branchname}); + $text->translate(100/mm, ($height-108.5)/mm); + $text->text($billingdetails->{branchphone}); + $text->translate(100/mm, ($height-115.5)/mm); + $text->text($billingdetails->{branchfax}); + $text->translate(100/mm, ($height-122.5)/mm); + $text->text($billingdetails->{branchaddress1}); + $text->translate(100/mm, ($height-127.5)/mm); + $text->text($billingdetails->{branchaddress2}); + $text->translate(100/mm, ($height-132.5)/mm); + $text->text($billingdetails->{branchaddress3}); + $text->translate(100/mm, ($height-137.5)/mm); + $text->text(join(' ', $billingdetails->{branchzip}, $billingdetails->{branchcity}, $billingdetails->{branchcountry})); + $text->translate(100/mm, ($height-147.5)/mm); + $text->text($billingdetails->{branchemail}); + + # print subject + $text->translate(100/mm, ($height-145.5)/mm); + $text->text($subject); + + # print bookseller infos + $text->translate(100/mm, ($height-180)/mm); + $text->text($bookseller->{name}); + $text->translate(100/mm, ($height-185)/mm); + $text->text($bookseller->{postal}); + $text->translate(100/mm, ($height-190)/mm); + $text->text($bookseller->{address1}); + $text->translate(100/mm, ($height-195)/mm); + $text->text($bookseller->{address2}); + $text->translate(100/mm, ($height-200)/mm); + $text->text($bookseller->{address3}); + + # print delivery infos + $text->font( $pdf->corefont("Times-Bold", -encoding => "utf8"), 4/mm ); + $text->translate(50/mm, ($height-237)/mm); + if ($freedeliveryplace) { + my $start = 242; + my @fdp = split('\n', $freedeliveryplace); + foreach (@fdp) { + $text->text($_); + $text->translate( 50 / mm, ( $height - $start ) / mm ); + $start += 5; + } + } else { + $text->text( $deliverydetails->{branchaddress1} ); + $text->translate( 50 / mm, ( $height - 242 ) / mm ); + $text->text( $deliverydetails->{branchaddress2} ); + $text->translate( 50 / mm, ( $height - 247 ) / mm ); + $text->text( $deliverydetails->{branchaddress3} ); + $text->translate( 50 / mm, ( $height - 252 ) / mm ); + $text->text( join( ' ', $deliverydetails->{branchzip}, $deliverydetails->{branchcity}, $deliverydetails->{branchcountry} ) ); + } + $text->translate(50/mm, ($height-262)/mm); + $text->text($basketgroup->{deliverycomment}); +} + +sub printfooters { + my $pdf = shift; + for ( 1..$pdf->pages ) { + my $page = $pdf->openpage($_); + my $text = $page->text; + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 3/mm ); + $text->translate(10/mm, 10/mm); + $text->text("Seite $_ / ".$pdf->pages); + } +} + +sub printpdf { + my ($basketgroup, $bookseller, $baskets, $orders, $GST) = @_; + # open the default PDF that will be used for base (1st page already filled) + my $pdf_template = C4::Context->config('intrahtdocs') . '/' . C4::Context->preference('template') . '/pdf/layout2pagesde.pdf'; + my $pdf = PDF::API2->open($pdf_template); + $pdf->pageLabel( 0, { + -style => 'roman', + } ); # start with roman numbering + # fill the 1st page (basketgroup information) + printhead($pdf, $basketgroup, $bookseller); + # fill other pages (orders) + printorders($pdf, $basketgroup, $baskets, $orders); + # print something on each page (usually the footer, but you could also put a header + printfooters($pdf); + return $pdf->stringify; +} + +1; diff --git a/koha-tmpl/intranet-tmpl/prog/pdf/layout2pagesde.odt b/koha-tmpl/intranet-tmpl/prog/pdf/layout2pagesde.odt new file mode 100644 index 0000000000000000000000000000000000000000..69106d7f27ac5e2e7e3d9fefadaf1efeb2b16d69 GIT binary patch literal 12696 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 literal 0 HcmV?d00001 -- 2.39.5