From 5d3f5023019f0d09688ebb44d35259fd2ec9990a Mon Sep 17 00:00:00 2001 From: Christophe Croullebois Date: Wed, 10 Jul 2013 16:57:12 +0200 Subject: [PATCH] Bug 10573: French translation for printing a basketgroup If you want to print a basketgroup with pdf format, it will be in English. The pdf is done with layout2pages.pm or layout3pages.pm, which call layout2pages.pdf or layout3pages.pdf. This patch adds layout3pagesfr.pm in src/acqui/pdfformat/ which calls layout3pagesfr.pdf. And adds in basketgroup.pl the check for layout3pagesfr To use it you have to change the systempreferences to pdfformat::layout3pagesfr Signed-off-by: Bernardo Gonzalez Kriegel Comment: Work as described, koha-qa reports some tab errors. Corrected in a followup. Please, always add a test plan, it's easier to test. Test: 1) apply the patch 2) change syspref OrderPdfFormat to pdfformat::layout3pagesfr 3) select a vendor 4) create a basket group (empty works) 5) close basket group 6) print basket group 7) PDF is in french Signed-off-by: Katrin Fischer This works nicely, although it would be better if we could find a more general solution to make the templates editable and translatable. Signed-off-by: Galen Charlton (cherry picked from commit a7fe13a52f320e6aded1f3313f721bd7fd73fb52) Signed-off-by: Tomas Cohen Arazi I don't like the approach, but I wouldn't hold this one until a proper solution comes up. --- acqui/basketgroup.pl | 2 +- acqui/pdfformat/layout3pagesfr.pm | 439 ++++++++++++++++++ .../intranet-tmpl/prog/pdf/layout3pagesfr.odt | Bin 0 -> 13284 bytes .../intranet-tmpl/prog/pdf/layout3pagesfr.pdf | Bin 0 -> 24394 bytes 4 files changed, 440 insertions(+), 1 deletion(-) create mode 100644 acqui/pdfformat/layout3pagesfr.pm create mode 100644 koha-tmpl/intranet-tmpl/prog/pdf/layout3pagesfr.odt create mode 100644 koha-tmpl/intranet-tmpl/prog/pdf/layout3pagesfr.pdf diff --git a/acqui/basketgroup.pl b/acqui/basketgroup.pl index d6bd5d1f4a..eba1255169 100755 --- a/acqui/basketgroup.pl +++ b/acqui/basketgroup.pl @@ -186,7 +186,7 @@ sub printbasketgrouppdf{ my ($basketgroupid) = @_; my $pdfformat = C4::Context->preference("OrderPdfFormat"); - if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages'){ + if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages' || $pdfformat eq 'pdfformat::layout3pagesfr'){ eval { eval "require $pdfformat"; import $pdfformat; diff --git a/acqui/pdfformat/layout3pagesfr.pm b/acqui/pdfformat/layout3pagesfr.pm new file mode 100644 index 0000000000..dc4a152cb1 --- /dev/null +++ b/acqui/pdfformat/layout3pagesfr.pm @@ -0,0 +1,439 @@ +#!/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::layout3pagesfr; +use vars qw($VERSION @ISA @EXPORT); +use Number::Format qw(format_price); +use MIME::Base64; +use List::MoreUtils qw/uniq/; +use strict; +use warnings; +use utf8; + +use C4::Branch qw(GetBranchDetail GetBranchName); + +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 $number = 3; + for my $basket (@$baskets){ + my $page = $pdf->page(); + + # print basket header (box) + my $box = $page->gfx; + $box->rectxy(($width - 10)/mm, ($height - 5)/mm, 10/mm, ($height - 25)/mm); + $box->stroke; +# $box->restore(); + + # create a text + my $text = $page->text; + # add basketgroup number + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 6/mm ); + $text->translate(20/mm, ($height-15)/mm); + $text->text("Commande N°".$basketgroup->{'id'}.". Panier N° ".$basket->{basketno}.". ".$basket->{booksellernote}); + $text->translate(20/mm, ($height-20)/mm); + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 4/mm ); + $text->text( ( $basket->{billingplace} ? "Facturation à " . C4::Branch::GetBranchName( $basket->{billingplace} ) : "" ) + . ( $basket->{billingplace} and $basket->{deliveryplace} ? " et " : "" ) + . ( $basket->{deliveryplace} ? "livraison à " . C4::Branch::GetBranchName( $basket->{deliveryplace}) : "" ) + ); + + my $pdftable = new PDF::Table(); + my $abaskets; + my $arrbasket; + my @keys = ('Document', 'Qte', 'Prix', 'Prix net', '% Remise', 'Remise', 'Taux TVA', 'Total HT', 'Total TTC'); + for my $bkey (@keys) { + push(@$arrbasket, $bkey); + } + push(@$abaskets, $arrbasket); + foreach my $line (@{$orders->{$basket->{basketno}}}) { + $arrbasket = undef; + push( @$arrbasket, + $line->{title} . " / " . $line->{author} . ( $line->{isbn} ? " ISBN : " . $line->{isbn} : '' ) . ( $line->{en} ? " EN : " . $line->{en} : '' ) . ", " . $line->{itemtype} . ( $line->{publishercode} ? ' published by '. $line->{publishercode} : ""), + $line->{quantity}, + $num->format_price($line->{rrpgste}), + $num->format_price($line->{rrpgsti}), + $num->format_price($line->{discount}).'%', + $num->format_price($line->{rrpgste} - $line->{ecostgste}), + $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 => 270/mm, + next_y => 285/mm, + start_h => 250/mm, + next_h => 250/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 => 9, + bg_color => 'gray', + repeat => 1, + }, + column_props => [ + { + min_w => 85/mm, # Minimum column width. + }, + { + justify => 'right', # One of left|right , + }, + { + justify => 'right', # One of left|right , + }, + { + justify => 'right', # One of left|right , + }, + { + justify => 'right', # One of left|right , + }, + { + justify => 'right', # One of left|right , + }, + { + justify => 'right', # One of left|right , + }, + { + justify => 'right', # One of left|right , + }, + { + justify => 'right', # One of left|right , + }, + ], + ); + } + $pdf->mediabox($width/mm, $height/mm); +} + +sub printbaskets { + my ($pdf, $basketgroup, $hbaskets, $bookseller, $GSTrate, $orders) = @_; + + # get library name + my $libraryname = C4::Context->preference("LibraryName"); + + 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($width/mm, $height/mm); + my $page = $pdf->openpage(2); + # create a text + my $text = $page->text; + + # add basketgroup number + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 6/mm ); + $text->translate(($width-40)/mm, ($height-53)/mm); + $text->text("".$basketgroup->{'id'}); + # 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); + my $pdftable = new PDF::Table(); + my $abaskets; + my $arrbasket; + # header of the table + my @keys = ('Lot', 'Panier', 'Prix', 'Prix net', 'Taux TVA', 'TVA', 'Remise', 'Total HT', 'Total TTC'); + for my $bkey (@keys) { + push(@$arrbasket, $bkey); + } + my ($grandtotalrrpgsti, $grandtotalrrpgste, $grandtotalgsti, $grandtotalgste, $grandtotalgstvalue, $grandtotaldiscount); + # calculate each basket total + push(@$abaskets, $arrbasket); + for my $basket (@$hbaskets) { + my @gst; + $arrbasket = undef; + my ($totalrrpgste, $totalrrpgsti, $totalgste, $totalgsti, $totalgstvalue, $totaldiscount); + my $ords = $orders->{$basket->{basketno}}; + my $ordlength = @$ords; + foreach my $ord (@$ords) { + $totalgste += $ord->{totalgste}; + $totalgsti += $ord->{totalgsti}; + $totalgstvalue += $ord->{gstvalue}; + $totaldiscount += ($ord->{rrpgste} - $ord->{ecostgste} ) * $ord->{quantity}; + $totalrrpgste += $ord->{rrpgste} * $ord->{quantity}; + $totalrrpgsti += $ord->{rrpgsti} * $ord->{quantity}; + push @gst, $ord->{gstrate}; + } + @gst = uniq map { $_ * 100 } @gst; + $totalgsti = $num->round($totalgsti); + $totalgste = $num->round($totalgste); + $grandtotalrrpgste += $totalrrpgste; + $grandtotalrrpgsti += $totalrrpgsti; + $grandtotalgsti += $totalgsti; + $grandtotalgste += $totalgste; + $grandtotalgstvalue += $totalgstvalue; + $grandtotaldiscount += $totaldiscount; + my @gst_string = map{$num->format_price( $_ ) . '%'} @gst; + push(@$arrbasket, + $basket->{contractname}, + $basket->{basketname} . ' (No. ' . $basket->{basketno} . ')', + $num->format_price($totalrrpgste), + $num->format_price($totalrrpgsti), + "@gst_string", + $num->format_price($totalgstvalue), + $num->format_price($totaldiscount), + $num->format_price($totalgste), + $num->format_price($totalgsti) + ); + push(@$abaskets, $arrbasket); + } + # now, push total + undef $arrbasket; + push @$arrbasket,'','Total', $num->format_price($grandtotalrrpgste), $num->format_price($grandtotalrrpgsti), '', $num->format_price($grandtotalgstvalue), $num->format_price($grandtotaldiscount), $num->format_price($grandtotalgste), $num->format_price($grandtotalgsti); + push @$abaskets,$arrbasket; + # height is width and width is height in this function, as the pdf is in landscape mode for the Tables. + + $pdftable->table($pdf, $page, $abaskets, + x => 5/mm, + w => ($width - 10)/mm, + start_y => 230/mm, + next_y => 230/mm, + start_h => 230/mm, + next_h => 230/mm, + font => $pdf->corefont("Times", -encoding => "utf8"), + font_size => 3/mm, + padding => 5, + padding_right => 10, + background_color_odd => "lightgray", + header_props => { + bg_color => 'gray', + repeat => 1, + }, + column_props => [ + { + }, + { + }, + { + justify => 'right', + }, + { + justify => 'right', + }, + { + justify => 'right', + }, + { + justify => 'right', + }, + { + justify => 'right', + }, + ], + ); + $pdf->mediabox($height/mm, $width/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) = @_; + for (my $i=1;$i <= $pdf->pages;$i++) { + my $page = $pdf->openpage($i); + my $text = $page->text; + $text->font( $pdf->corefont("Times", -encoding => "utf8"), 3/mm ); + $text->translate(10/mm, 10/mm); + $text->text("Page $i / ".$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/layout3pagesfr.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 the 2nd page (orders summary) + printbaskets($pdf, $basketgroup, $baskets, $bookseller, $GST, $orders); + # 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/layout3pagesfr.odt b/koha-tmpl/intranet-tmpl/prog/pdf/layout3pagesfr.odt new file mode 100644 index 0000000000000000000000000000000000000000..041c011a100b6bcd2112a907a151dfc25475ae4e GIT binary patch literal 13284 zcmch8XIKt07IAohAcr4L^4X2EE&llIY-GkO9oM* zWC4LY=(4(gyL9Uc2%HmU3x=A)K#n$Gr~{`1*u_EpFJ#&~ z%HlMr0Knz(oeb;%7*pF z#9?M;5D-}Oss#>&DnMEU6bcvpQ6)j=Xb%Wu{U~v< zhCr<(=qwx@Y(=@aoSmIHo%uLn_U2qXA|fJO-)rgqXv!4yr<|>$z4dn~QxF%}8hqJp zI2R8m57(9KrH21isY}^kRf54_e>Qa4haX-1-W)GCH$T^p>#LT`?M+Rs|CIlw0|;3@ zE^{tZpaYP@2?BP$O-K8O9e*)6FP-F-buZPB6#uS_IT#AI2Rgv)C6ys2_F%Q|=I7$$ z6rfjzKpkC-bc6+s1o>%ysWh^+hgpI_4qSW!+%`P)cO4=g zD!?PkbEVC9)DNK_D6lD_|4?%dkSoX<4432+_(SdA%Ks{C>WH`_h`vjzYw~a_@`{bUz9qHbC<~3lWd%cS)GZ<$b>ry(+c+Me+)63$zEC+XHPau7r8`|KMREk@o89JzP{I_M9^U?o_YbA(Kb9bYMez!|Z&G8J4&VAQzjN+zM^{ zb|OJFU`JqPkWw**&JwW&Z*X6ouaJu7k$8f3>vms({aDuBt?N3CEiZZt>}C2TE?%E5 zom9ZwMMJJ-`-&@qjMwyiG+bnp791Jb*2f=JX%=BI@xCIFHwh;p(R8`Cv7)=O`T1VE z^_i*C?L&vCc(y3b-QzZs9mvix5ou|y7H7=fm6uG?9g^t%X z%#km+>H&6KUOjP5)5fe%P3W~Bk69^fgB>4fN~%_2K71EZcCfN5+_l84xtEw86s;wy zv7z_EY)`@`=6=R5a0DG*|4HVBH`=HOkS|>Crh6X?esqmConMO!f9&nAckc%I7loZf zsviS)S9z5BZr^AoY(8qAq5@A+_23ns#CB3HL}zORC{pU7?-LY!pz$Eh=;rbto{8Za z^V1TI%?ozNV%%l8ZB5t4*L+qNr%@KTvgGSjsUbeA@~uSkn;Y2<=4!EjdN~N%=htOG z8j2xQvY3-=|GM2;?46q2%)+?6_SFv{G*qm_INE#j5##;}bB)Z71zEW94&bKLw@&>>N1e{->%sjQB=#9N4nWzc5q2hveLWYC` z77OusuRHa*3QUlBDj!28O&piO-HH~-WWael5h-g`W67pqOC#sa=iGqyh$Y2dJ>Lvp zQH=LV%H(~|GS)N*8xw}{%h~2wCayC$SXhW(tM=(e39_EEq5w9L5IR>)Ks&Nh3|0IZ zHS-AM+Vm9067xy{{ha5$h zo`Cis+{J$R)#JB;&j}MKm}$t5r90Ci+O0 z>rA2tHk}3!>msMFd)nGpTJh#htOh-Ky6OFeJ}QBa+)s)xy=6e)6DjC?U^pw4*)Z#t z(w$154rKKl%%EG(`!nD4IRt|IUb1%rYQ~zL38%_8o|+L(UcW`%-<*dvqN6}gONr(D zK?uk*l3Cwc-i={%4b$s^TIk3%-#&QVgLYFRysu9Lf$;15a9=<|W_2r7JCXOnuqcI7 z9=>7bx7#Ddx?6%HhEftwnnRU~1dwz!> z!nz^w&A|ZffsmQZe!U(-(HSTcNis|y|BzB)D+7HU%i zew(a2V)I0DAoSD-7WFEthIIV5&pAhpyFEErNOX*M-4|ETb3H>pO@Ru_}nc>zwI#N zSoz77nssYC7H79_n$v8nLgjvux4BU(7VS96mABb=WET%enFF5N6qkIZMLx25jzMz_(4v!ag=#CrK6& zC^SBBOFJ*y4s|p1*#D|tRDE_*1R6h01A2T8o!Nc=M1!gyOAMXvjC|?Z2SvpUXB4a8 z5o1R4bu^jAtec$pBi7aNJgs5e?Mli2eBtS9E?dAbXHu{bgCbG zd5nF>p>n^#&?x@H$uu#WY$l3{E6QD@fnmNu0xy{=HNysj0mTUv&ks|kYyC)Sa<(qG zwOhgt9em^7WBFR!wAMF7BU4<%^FKaj;8)DaNu1gm-4117l7HXSA~SY;@^tTApR*oI zYLv`G%25krvXm4VRv+7rOp`FV#!?urNkDV|0BIl0gG{?P=)bFEX z2t7yub)f+OVGIDkKd*t+|-+aP74y(&ppK890)=xvlfAvR4BbH zXHlm$c*alV^k{$(T$-U6l5U-)RyMmyK1Moy>j3n){N|*cZpC}f+D~7^MnvY07s3Y2 z`^^d9jIyk(UzOfYZSS1R_NtzTdzG2d* zd&;|YII{~4J3V?-W>C{LlMD;Bh`LQ@IFN)-{&+QFOlRF?zIym`nZ)KhznfJvo(Icf3ZV);1;=kQZ4iN%Ge zI2&2B6Hf{&NVm^;0>0c-hN0i?ifVW73+9*3KG+|KqQ9X*+Una&$tc^+W=*;NVl<|P zyf^hWISN~K=0Wx2lh*ZqN48>I=(J^0_kP0 z!1paWPsKk)L2Wf(+kZUOfK?nJNm-+&OG^Cu7C%!{;?ew_3Hub#%EXJ3_=qvkP3(g* zEaeOibD(|NQ+Z!x0M`9Lj6GCY<#%}b<~|JX?Cj$y{i`fZDd#C-Gcz@FYGMxq-J87_ z*LzukuVWq3_yeG&o%z`Ij2!`JV*&>+6SH2_pBa3apHdEpfbO*S9G3amOPueiSkXAyHf}s*uJRu%SSllRt+;El7?36z^o%vO1*wELG$!!r=)6NUCW__%)8U&sdgPT}5cpL*ak*yuV^d=d5FRcJe4$tR*jC+MrwOzOZ? zULBjAp6_N-PWDM`m1lg6lusZZ%&YVbYmY(2F2@_s{(@PCH8H0Hmv>nj%50%Nrd7A) zBB#B1lq9}Pp{wCGE^(B+Z4dY8D=;{Sed2T`Sz@D5aO9lmk%*{(IljAyH3)IWt9e}& z;Hc-v*3R=a>JMPX<4k&KD9k6643AhGl zu%c1VJun1O8bUp5FGuwDIGwymfcA_k^3J zYfX|Qyj4o+DX?y^-<%mj@+E1j^_=){otL*8&|9}Y!?rUvnfLkFcN)7?bLrt5ejHf1 z&xoIER=5gNK0cq8DAzW*7W#pvO_R*hQRuRU-NYmH1{a${eb1b#7c{<+#kHpSjT1-< ztrqO`XLLOz4+X@7Dg)yBlGErYP(Et2>#-4r?&}1aqICPR6cBvt#U9Es9#eXY(uF=0 z1UGF55vKSEfP>|N)O67qo7F7VitQho+;=i$9+L=;wF_H<4pUFM~Sio z>9QD(NCwv@+tETHaj_f$a?HEVmNrg_rR>V)SlNN(_0n{M!S>f`m9L`?>~7k=c88HY zyQ>0g4JLAay&>A*Rz1!BWi^q>HOe!q#4g92LsiRCH@O#I=^Hz5>}j~F;#{k#$jkaW zH&8QI9eAZ(RrMC+W;h&lryUs6Or%^#wj7=~m7+Df&kfofg@)QM^c1wA&wL}FLcJzE zjx4BC9V8!#v8oY}d|p^T7Vay|8aRSc^ywi!wMCe|RX^)v)+)jauOw6f{?uQK^##*!_5kIu}_Yyt+XOM^*wHGC(g?+WN zulWiq7UIVBB=?||o-WR!jUUfUZJ=|hI(3JHw<}yrO9issMTMqs%QF!^WcX?<19OfE zh?%k32Grm=Kb=E|Pg*4!CN_xIxWmsD7B^0MtyXtu{Ml9)Ke+B}t&JX!9#8u3yKTqp zpCj!(b!`+k_GAdwJE0Zzy4Mi(QEk+#-uXo8a=9LE`%vtJ4gg#TT`kvFFA+l?C-soy z0sxl>8DhECv~aXBfdV1ca4v_dQ%+l`d4RgA0uB}h7D5C^Nl{h<@%J47fCRv}hB$MR zP6u-~od;JFP%r$yyfc427|=h3R)N#K?? zhWDII$tL!6np$^_NrRP9#MMoUuza95o4Z+4B5z>Jv7!cML{jrZ3d*aJN$_P`=ROWA z5}kN7qqRf#&j*;39-2XZ`t-TvQ=k8w>5A~8!DnK)m6G+_(@nk? z=Z%#8KA}(b1h$O+jfJijuNGyP2x9}8t9~E9(hCXe1n}?qp87tpP^YFdl9=s57A{T7 z4Fa~^%vU7f0J!~au}6!&G#u`ScMi$A-zL-ddx=Ylv`TRa86Dqtdusft#WAy%N6>36 z?B3jzVQt5t2FRgXRs(gN|A`#dOU+KXwYL`~BLa51@?6g*Ah1FX-M;i?6>{<$uHCI) z&&1dkiB5bw&xri9fE{nw&vzDc^wHs7(oh#XmuE8E`?rGnf^&q`$MzS@Gb6oOc}U4q z9qy+eXoY(2P*nKlbG}_Y7OYCL;hE&Ok9pUUuNpQS;F?wCS0y5qVLhG_teBJhe9_LK z=-&Fvh)e=inwA%54mn8dWGBXVhZxniz6qL42!;06m@MG+8!lP5Wa4grtNsGKz>y_{ zZ`XE+U3}dpL^e?0N18$N0HFToET>2lE5htzkaZ?xe4b+LaCSIX1nM)$fD1`PY|ZTL zM=+VO$59tnj_GbaKck@%?Mzqc3TQslu_bh=`&>5G%aH)<`CpDEvYB_tz+9Yy{_!QUyuC$TUN=_iXd}F!%`*;;cKVd z$NZMVOkxXkTKG)Z_#(+f@6o;gRBDa7;!?NS{9EL;599qMEA+%Tm6*c zYj@tHX_**to50^q{g_GzqpuWlkA2h|DPd&e$^H zLxapS0Buni<7O;*i_~oWL*fjO)wDn-3!3$O zgKb)khY}s#khQaIVz#Zgm<-6w{2CTj<77-A}+-R|pwBk>)St;vOvRtom@~0Dp z8%NsIbT5O%gR8?zQcG02`SfGUGTNH>CK4#hPzPyQvYaNW2PWFsuIO9+7ZT zv>S+eo@MxXu@gw%`J{bbqjevh*ji_~;{LP7r*kKF2qqMEmLDiE^-{hPTuTz}8L_=h zG~sW^u{T9g@9w(g5kd}4?sEOv1>Wpo167qT5S64Nr8hxAufp;*eL1#v94c*i~8WBk-xu=Q;)}o)2z|7 zLXU0xm7GI1#!|S@hSdA(RhA|gJ?5mgD290D!_kp>aJ{au#F^UN`Kssbr|A8YSrivX z=8KYs_2rCaW`m#-@cmp^vf%uDbU&q)B~9ErA=tT(yXyg|IUZ?WegEquqMf#y!o;N0 z8T}cc+pUr$#J2xI5cYk%;qaW+Jkx-^NK^z@wb_wZy*-;(z*%IRB z;ruj0A_-7KlH`<9uP2f<*zv0}+%Z}e1QQ(-B9qr6>Oh+ns$?hHZME3gL|hx!JuDVT zviwxpW(78L561K2zV+VbPBysHbSADofd2oIQ4V(szdg`8-s2sDD|8qp?YDVaoIU5z zTW`z@XkjLy-5Tx1keZ-- z52>jWrKK{I=X6gzD-48naRO(Nksh}I?QG7HPo#3;uNOY>YRywr5 zNV90P!eubwHL|YYRB&3O_c6{Ll#6uCKItv6hFSV`qO+`WMbcc5i`=UleA36#q>tv{|*M8YL=c>{e zKcvxW^IsQi4Rh+AUA94KBxNNNbpMVcu1kuKXbY7t0hlZmE}U8lG??|I-hIr zrm|*Vi?d&84>DeVwYx*#@E)9#WA%J@t^bYDera53gWcD`7q8yDn&|K(r&2f2A6n_i z3jFFH&3V|N=o9!g(@t%6IXTG0adK~KuV3yA@Z}pS^C#s0ny;N2Ki+_+Dd2xQ?s_>_ z=k@S3HRQCV14yHeq|lgOjeRQgE9;eq7-hQPQ7TH zqjAAxBr|9@&cNm3n3!GNB35aBpHN?NQCtA-_|Q@3r7NM!wxJ;HOgN#?N&WbcG7TC% zmVYt&HLiQMx5~L0AhVvj1l&PO{&VuUNzzMK@dzQ8ljC7JHd}j)o!Q=bCg%Rt8*^hR z)OtJAW_r!_vHy4nUl%t+TKIJQ)Dv?Ss@lrTuf{_Iv*zrCoXSoc;R5$sgl(WI_JK%v z&!2@hzGXicWXK_nX}>USzi&iU6<+0rN!>j8$JnE2%9*~JY12T z(`_4d|CZ3Q5TqD#?1pAAt6B1f-A)y1y1G_t=R8R5aTwmZ-_2G@!5Z)Ir~uE?@hqvq z;%;I*X@e&4Md+b6^-}1;qw3x)RjtH_`$4bnN9m_GIo%ZyK9R*qTb{Ik*SgLC#hA zF{w&UltZ9E+;pp509{ZE)1!N>>`RLzgUF|BW%l1Ux#KK2oT>|uV&|e%3Y?a}NP?Hv z4@*^UJ3kitu(mIp80$Qh|531lbG& zEh%A8x}q?>WF7l;=j7K%UIu6}d-0Q`HyAg`?9Qi`nQo|fF7Dk1YnPMZn}-2Y?wgyrti7on24QBi z7Aw7n!nhkUV*JKdNm=CPQ>>qYXU5$#C0&=N8K)`>3Js^I_AG;t^9rAJmW#G`i?$1K+sKY^i4RkT(lgj+15 zAx%_0)<^akrt;Kt<)CXPv&60mojGe8|dirpS4Tj8#>jldZex|WknqIT|bep4stts{sd=Csw7eSTtQ%v z>C$p%5^t*z9ys6`@|ESToO*;Q|4bB!GZ`4v3}XIAbOM~0%NAzqXp4x5apd}8@xQ~- z{0;7VbOD^}F2unGXbb-r@ZUA+0E1cE0-<2*|0V7+?7H3Wh{h?u7D@jqN3M|=A} zKCmEvf1(ibfXlZsm+7CMsLMAwa0gdJbjy$E1eLI9LHxR-M`T!2lpNDF@dYy*hXZdc zyiri6%Eq5YGslO}W6^^rj}H=W$pyS(C_KE~^bx-?Vd0D2$KLBon>EQ{k443}b1L6& z`>ePV^yp9r#IDxV%qNF6yqun2J>8xSpkE-EZlz=8i?({R&jPkYi-5l?Zmvm*JeF5) z8)eKQe@IDXBim#z1X;3z^=LS?lEsV8FrStRh^^&BJgDG{fo2t2N1jaLqs-X8=l>q|9IX za+M0}`i6G)@8&$5=@h2cL=}E?E1d#A@uu+GS%0FNCI}d z@K(pD1J+a4N@uV*fqF9$1rK2eZp|B zi(56eXNsS?)B(w+1@}5x2c~I5n(Fm(8XZ9Bla?MHG3@qFCfE z-jhI|D%_Adfw_`LXYrv9DM6wod|7T{+e<+8Dq5&ZeWM{W1BojXOR7UA{b`M##~PGw zd1q?Cg#q*?51W_?`~>;CQJdzPuAk1xZ$j8vuVJ%gcJ6TM^c23aR(Dy$6d(p&s|zB~ z8o&@`n#AsGXiTyQ%zZl@)P>$kn)vo^iP}52Oi|;~!$(-B*_E?IPi`n#`Ep7=)V&Qmm!Q}Y3}Ai5hldX0?}_vBOi*>Lm+RDIfR6ocuWf6k$In_fWg2R$dj z?YBNRyQ%0;V0m5r4lx!cKW@zfg%9R6EF{Q6%Vb)mF7z5mSpbgv%tnpGeA!<~?^NrP zOa*7~&qX<)%LMQvzhs7Uc;hyljanx|J~1!zMO1l1aolQT<5AW`+wNAx&Jl-rCAc!3 z*^7%ls0)u+rla8wTn&t*qMA<{lovHFe@WhwuP25n#DEg)DABDFb(J0mI-e-*pfLA%o z9*U>yOUiXUqX?hM%ruRPT`%zK*M5{G2Kpx%?>FEfRriLNQcTHLM4BGH11+p6=P-}f zXYB?n7o#&2rf2jpy{v1n@oR0pGbYV|j+IfSuK0PCQ#n1`EvQA2OHPVU8=u2Td3(pl zm*wj~^SMv-q?gRyHqG`XiwxU^`#Bl_ypo*WeE5?FK8hzw5|+4VuWO{ppT7bvo?y`c z=Z7tKAZ&}n_<8=8y7COfH*Ft#+Z?%pr=Vi>B)Ur(NTR#;T0y~KDq?*qVwn&*wYAhm zUJVgtx&y2Z$9M^~?lWoRuwEelkj5%f*L6Q6R`|=I2-560E>B#Xq?-%fgNd~>M*|K? zC1KdsDuc@?SdQ1~+?0boQ$OOL`JAIizLMl^n-ZtE&$IW!EZLnh z`)4mW@FG@8i$HS_wDs$`y(gk`&o{!H#&0{%TBXZSddU}3IetkinV~*=SpN*5V2ql) zwh?@BFT>TI&V|B9j!l@^@odjt#E7SUTE=QNkbf&Zg+%yTXh1x%09M4({#%b{UV+Ex>C6dBM@|_Q_un`lzUPx<(uK>OKblWz2iPqTQHdgN8aKo$u)G!&lASb_<wX5E|pSeN)eau3(g{&GF!#ok4?!zEC0Y`1GT|^$x^w7`3R2DC%yjKp!JH zwt%O``DjNoxjz~k@0Gu^h8uyAx^sm81w7-vxp(B9$?zr@eMVLeE49)iK?r7jesj8b zhX8l8s^3^eCf+xEWrysJ!nbkr`Q$Wp=1-@GhJ3FsBK)PMcsp0y+ctL_ z=S7s$lNV*W{d0yBpgN37b)s7$8-8O=HwbZ=^q)Ku;U24-iesC5?^q}lY$!$FcoX3bAHZ7-*`-%fujm%@@F=sTgD1Vdx^sOkt z+co{U{Ou7%8GZ~wR59VBoccm@6>8}p2~K*OzhQsdW|HxCj-P3f0N5d74vwA*xj?fs zK8Y|{Ny}@2(jMni%ibq7BJ}8?j;R~@6o==3!Tssn>vCrXC2W zR*}<`=1@|V=lXMVi-?oR*SrsHp~atBCB8A;HDIQdD*RY>4RZ)t`OAc~Pm|BBK$wx3 zrKDC=mv$-0bGr_RrX3&Q+(rN@@n+p&G?Mc+y=#+`-@3Y$=1v-aV6x(E{Vd>MMg6*C zWPurjJv|leWICoeW3RkFZVoQv6Z$c!y@R;VmNS?-fd_9YcLc_OA|oB=(KDv2UASM> zF%K}7KOXAnF;{ID5e_)^QOw^`p~{IiZ`w7?G8HdYhx5CbhRZy`6IQq*@Z8*+(UjUO zJPFtO+RnskshzX`#u3UGLt9MRMz+Tt6N$3y_OI+W&^_MkQ*fgva4*#{yg2Kz^E@@p zi^n9E8SCEYohKtT83$_pT!u#ZEo@9^fkUpNpu;Z&4Mdm~*V2K;lB{N=9bXS#}+{~h&vIQ&n93gYxK^z(Ap zbcMRww*49vbLsv3Os^1O^}j}g{*L_h1KnlR%+C~!Ao?YS<_dVVW&i#A-A|w#!Uq5J zHSdb$O7UNvu)iuEN%vPL?sw#`PRL)8^9bahqZ;9|T_LYD|EVbeaOp4nOcaR6=Jy@% zuP)19Z}3kX;=dPuy#Q$Z4bT5@Vg8xyuS$je4cV_Q&41(qVeBK=IfjK4ZezvF(Lf-WcapQ()FAEtTr`>2Qry302ogn(QW L0DzwB^6LKp1SPX^ literal 0 HcmV?d00001 diff --git a/koha-tmpl/intranet-tmpl/prog/pdf/layout3pagesfr.pdf b/koha-tmpl/intranet-tmpl/prog/pdf/layout3pagesfr.pdf new file mode 100644 index 0000000000000000000000000000000000000000..07e70577ab6613ee1d9d67af409b03f0e8b3a40d GIT binary patch literal 24394 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 literal 0 HcmV?d00001 -- 2.39.5