FFZG: pdfformat/ffzg.pm changed location
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 26 Mar 2019 17:24:02 +0000 (18:24 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 26 Mar 2019 17:25:49 +0000 (18:25 +0100)
Koha/pdfformat/ffzg.pm [new file with mode: 0644]
acqui/pdfformat/ffzg.pm [deleted file]

diff --git a/Koha/pdfformat/ffzg.pm b/Koha/pdfformat/ffzg.pm
new file mode 100644 (file)
index 0000000..0487886
--- /dev/null
@@ -0,0 +1,417 @@
+package Koha::pdfformat::ffzg;
+
+#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 3 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, see <http://www.gnu.org/licenses>.
+
+#you can use any PDF::API2 module, all you need to do is return the stringifyed pdf object from the printpdf sub.
+use vars qw($VERSION @ISA @EXPORT);
+use MIME::Base64;
+use List::MoreUtils qw/uniq/;
+use strict;
+use warnings;
+use utf8;
+
+use Koha::Number::Price;
+use Koha::DateUtils;
+
+use Data::Dump qw(dump); # FIXME
+
+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 transform 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 _pdf_font {
+       my ($pdf, $font) = @_;
+       # $font = Times, Times-Bold
+
+       my $mapping = {
+               'Times'      => '/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf',
+               'Times-Bold' => '/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf',
+       };
+
+       if ( my $ttf = $mapping->{$font} ) {
+#              warn "XXX using $ttf font insted of $font";
+               return $pdf->ttfont( $ttf );
+
+       } else {
+               warn "ERROR: can't find ttf font $font, fallback to corefont";
+               return $pdf->corefont($font, -encoding => "utf8");
+       }
+
+}
+
+
+sub printhead {
+    my ($pdf, $basketgroup, $bookseller) = @_;
+
+    # get library name
+    my $libraryname = C4::Context->preference("LibraryName");
+    # get branch details
+    my $freedeliveryplace = $basketgroup->{freedeliveryplace};
+warn "XXX freedeliveryplace = ", dump($freedeliveryplace);
+
+    # open 1st page (with the header)
+    my $page = $pdf->openpage(1);
+
+    # create a text
+    my $text = $page->text;
+       $text->fillcolor('black');
+#      $text->fillcolor('red');
+
+
+    # print order info, on the default PDF
+    $text->font( _pdf_font( $pdf, "Times-Bold" ), 12/pt );
+#    $text->translate(100/mm,  ($height-24)/mm);
+       $text->translate(283/pt, 774/pt);
+       $text->text( $basketgroup->{'id'} . '-' . $basketgroup->{'ffzg_nr'} . '/' . $basketgroup->{'ffzg_year'} );
+
+    $text->font( _pdf_font( $pdf, "Times" ), 10/pt );
+
+    # print the date FIXME
+#    $text->translate(140/mm,  ($height-24)/mm);
+    $text->translate(420.75/pt,  773.93/pt);
+    $text->text($basketgroup->{ffzg_date});
+
+#warn "XXX bookseller ", dump( $bookseller );
+
+    # print bookseller infos
+       my $y_pt = 727;
+       foreach my $line ( $bookseller->name, split(/[\n\r]+/, $bookseller->postal) ) {
+           $text->translate(336/pt, $y_pt/pt);
+               $text->text($line);
+               $y_pt -= 12;
+       }
+
+       # Lokacija za isporuku -- Zbirka...
+    $text->translate(62/pt, 590/pt);
+    $text->text($basketgroup->{deliverycomment});
+
+    $text->translate(58/pt, 556/pt);
+    $text->text("Narudžbenicu ispisala: " . C4::Context->userenv->{"firstname"} . " " .  C4::Context->userenv->{"surname"} );
+#    $text->translate(58/pt, 556/pt - 10/pt);
+#      $text->text("basketgroup: " . $basketgroup->{'id'});
+
+}
+
+sub print_tables {
+    my ($pdf, $basketgroup, $baskets, $orders) = @_;
+
+    my $cur_format = C4::Context->preference("CurrencyFormat");
+
+       my $a_titles = [[
+               'Rbr.',
+               'košarica / narudžba',
+               'Naslov',
+               'Kol.',
+               'Cijena bez PDV-a',
+               'Cijena s PDV-om',
+               'Popust %',
+               'Popust iznos',
+               'Porez',
+               'Ukupno bez PDV-a',
+               'Ukupno s PDV-om'
+       ]];
+
+       my $rbr = 1;
+
+       my $order_total;
+       my $basket_totals;
+
+    for my $basket (@$baskets){
+
+#warn "XXX basket = ",dump( $basket );
+
+               my $basket_total;
+
+        my $titleinfo;
+        foreach my $order (@{$orders->{$basket->{basketno}}}) {
+#warn "XXX order = ",dump($order);
+
+                       $order->{discount_value} = $order->{rrp_tax_excluded} - $order->{ecost_tax_excluded};
+                       $basket_total->{$_} += $order->{$_} foreach (qw( total_tax_excluded total_tax_included tax_value quantity ));
+                       $basket_total->{$_} += $order->{$_} * $order->{quantity} foreach (qw( rrp_tax_excluded rrp_tax_included ecost_tax_excluded discount_value ));
+                       push @{$basket_total->{tax_rate}}, $order->{tax_rate};
+
+            $titleinfo = "";
+            if ( C4::Context->preference("marcflavour") eq 'UNIMARC' ) {
+                $titleinfo =  $order->{title} . " / " . $order->{author} .
+                    ( $order->{isbn} ? " ISBN: " . $order->{isbn} : '' ) .
+                    ( $order->{en} ? " EN: " . $order->{en} : '' ) .
+                    ( $order->{itemtype} ? ", " . $order->{itemtype} : '' ) .
+                    ( $order->{edition} ? ", " . $order->{edition} : '' ) .
+                    ( $order->{publishercode} ? ' published by '. $order->{publishercode} : '') .
+                    ( $order->{publicationyear} ? ', '. $order->{publicationyear} : '');
+            }
+            else { # MARC21, NORMARC
+                $titleinfo =  $order->{title} . " " . $order->{author} .
+                    ( $order->{isbn} ? " ISBN: " . $order->{isbn} : '' ) .
+                    ( $order->{en} ? " EN: " . $order->{en} : '' ) .
+                    ( $order->{itemtype} ? " " . $order->{itemtype} : '' ) .
+                    ( $order->{edition} ? ", " . $order->{edition} : '' ) .
+                    ( $order->{publishercode} ? ' published by '. $order->{publishercode} : '') .
+                    ( $order->{copyrightdate} ? ' '. $order->{copyrightdate} : '');
+            }
+
+            push @$a_titles, [
+                               $rbr++ . '.',
+                               $basket->{basketno} . ' / ' . $order->{ordernumber},
+                $titleinfo, #. ($order->{order_vendornote} ? "\n----------------\nNote for vendor : " . $order->{order_vendornote} : '' ),
+                $order->{quantity},
+                Koha::Number::Price->new( $order->{rrp_tax_excluded} )->format,
+                Koha::Number::Price->new( $order->{rrp_tax_included} )->format,
+                Koha::Number::Price->new( $order->{discount} )->format . '%',
+                Koha::Number::Price->new( $order->{discount_value})->format,
+                Koha::Number::Price->new( $order->{tax_rate} * 100 )->format . '%',
+                Koha::Number::Price->new( $order->{total_tax_excluded} )->format,
+                Koha::Number::Price->new( $order->{total_tax_included} )->format,
+            ];
+        }
+
+               $basket_total->{$_} = $basket->{$_} foreach qw( basketname basketno );
+               $basket_total->{tax_rate} = join(" ", map { Koha::Number::Price->new($_ * 100)->format . '%' } uniq @{ $basket_total->{tax_rate} } );
+
+               push @$basket_totals, $basket_total;
+
+               $order_total->{$_} += $basket_total->{$_} foreach qw( rrp_tax_excluded rrp_tax_included total_tax_excluded total_tax_included tax_value quantity ecost_tax_excluded discount_value );
+               push @{$order_total->{tax_rate}}, $basket_total->{tax_rate};
+    }
+
+       $order_total->{tax_rate} = join(" ", uniq @{ $order_total->{tax_rate} } );
+
+warn "XXX basket_totals = ",dump( $basket_totals );
+warn "XXX order_total = ", dump( $order_total );
+
+       push @$a_titles, [
+               '',
+               '',
+               'Ukupno:',
+               $order_total->{quantity},
+               Koha::Number::Price->new( $order_total->{rrp_tax_excluded} )->format,
+               Koha::Number::Price->new( $order_total->{rrp_tax_included} )->format,
+               '', # discount
+               Koha::Number::Price->new( $order_total->{discount_value})->format,
+               '', # tax_rate
+               Koha::Number::Price->new( $order_total->{total_tax_excluded} )->format,
+               Koha::Number::Price->new( $order_total->{total_tax_included} )->format,
+       ];
+
+       my $a_baskets = [[
+               'Br. košarice',
+       'Košarica',
+               'Cijena bez PDV-a',
+               'Cijena s PDV-om',
+               'Porez',
+               'Iznos poreza',
+               'Popust iznos',
+               'Ukupno bez PDV-a',
+               'Ukupno s PDV-om',
+       ]];
+       foreach my $basket_total ( @$basket_totals ) {
+               push @$a_baskets, [ map {
+                               m/^basket/
+                               ? $basket_total->{$_}
+                               : Koha::Number::Price->new($basket_total->{$_})->format . ( m/^tax_rate$/ ? '%' : '' )
+                       } qw(
+                       basketno
+                       basketname
+                       rrp_tax_excluded
+                       rrp_tax_included
+                       tax_rate
+                       tax_value
+                       discount_value
+                       total_tax_excluded
+                       total_tax_included
+               ) ];
+       }
+       push @$a_baskets, [ '', 'Ukupno', map { Koha::Number::Price->new($order_total->{$_})->format } qw(
+               rrp_tax_excluded
+               rrp_tax_included
+               tax_rate
+               tax_value
+               discount_value
+               total_tax_excluded
+               total_tax_included
+       ) ];
+       $a_baskets->[-1]->[4] = ''; # remove tax_rate from total
+
+    $pdf->mediabox($height/mm, $width/mm);
+       my $page = $pdf->openpage(1);
+       my $pdftable = new PDF::Table();
+
+       my ($end_page, $pages_spanned, $table_bot_y) =
+       $pdftable->table($pdf, $page, $a_titles,
+               x => 10/mm, # 57/pt
+               w => ($width - 20)/mm,
+               start_y => 470/pt,
+               next_y  => $height/mm - 25/mm,
+               start_h => $height/mm - 470/pt, # - 25/mm,
+               next_h  => $height/mm - ( 2 * 25/mm ),
+               padding => 3,
+               padding_top => 2,
+               background_color_odd  => "lightgray",
+               font       => _pdf_font( $pdf, "Times" ),
+               font_size => 8/pt,
+               header_props   =>    {
+                       font       => _pdf_font( $pdf, "Times" ),
+                       font_size  => 8/pt,
+                       font_color => 'white',
+                       bg_color   => 'gray',
+                       repeat     => 1,
+               },
+               column_props => [
+                       {}, # rbr
+                       {}, # basket/order
+                       { min_w => 55/mm },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+               ],
+       );
+
+       $table_bot_y -= 10/mm;
+
+       if ( $table_bot_y < 25/mm + ( 3 + @$a_baskets ) * 12/pt ) {
+               warn "XXX force baskets to next page\n";
+               $table_bot_y = $height/mm - 25/mm;
+               $end_page = $pdf->page();
+       }
+
+       my $text = $end_page->text;
+       $text->font( _pdf_font( $pdf, "Times" ), 10/pt );
+       $text->translate(20/mm, $table_bot_y );
+#      $text->fillcolor('red');
+       $text->text("Trošak po košaricama");
+
+       $table_bot_y -= 5/mm;
+       $page = $end_page;
+
+       $pdftable->table($pdf, $page, $a_baskets,
+               x => 10/mm, # 57/pt
+               w => ($width - 20)/mm,
+               start_y => $table_bot_y,
+               next_y  => 250/mm,
+               start_h => 250/mm,
+               next_h  => 250/mm,
+               padding => 3,
+               padding_top => 2,
+               background_color_odd  => "lightgray",
+               font       => _pdf_font( $pdf, "Times" ),
+               font_size => 8/pt,
+               header_props   =>    {
+                       font       => _pdf_font( $pdf, "Times" ),
+                       font_size  => 8/pt,
+                       font_color => 'white',
+                       bg_color   => 'gray',
+                       repeat     => 1,
+               },
+               column_props => [
+                       {},
+                       {},
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+                       { justify => 'right' },
+               ],
+       );
+
+}
+sub printfooters {
+       my ($pdf, $basketgroup) = @_;
+       for (my $i=1;$i <= $pdf->pages;$i++) {
+               my $page = $pdf->openpage($i);
+               my $text = $page->text;
+               $text->font( _pdf_font( $pdf, "Times" ), 3/mm );
+               $text->translate(10/mm,  10/mm);
+               $text->text("Page $i / ".$pdf->pages);
+#              $text->text("Page $i / ".$pdf->pages . "    basketgroup: " . $basketgroup->{id});
+               $text->translate($width/mm - 40/mm,  10/mm);
+               $text->text("basketgroup: " . $basketgroup->{id});
+       }
+}
+
+sub printpdf {
+    my ($basketgroup, $bookseller, $baskets, $orders, $GST) = @_;
+warn "XXX basketgroup = ",dump($basketgroup);
+
+       if ( ! $basketgroup->{ffzg_year} ) {
+               if ( $basketgroup->{ffzg_date} =~ m/^(\d\d\d\d)-(\d\d)-(\d\d)\s.*/ ) {
+                       my ( $yyyy, $mm, $dd ) = ( $1, $2, $3 );
+                       my $dbh = C4::Context->dbh;
+                       $dbh->begin_work;
+                       my $sth = $dbh->prepare(qq{ select max(ffzg_nr) from aqbasketgroups where ffzg_year = ? });
+                       $sth->execute( $yyyy );
+                       my ($nr) = $sth->fetchrow_array;
+                       $nr++;
+                       $sth = $dbh->prepare(qq{ update aqbasketgroups set ffzg_year = ?, ffzg_nr = ? where id = ? });
+                       $sth->execute( $yyyy, $nr, $basketgroup->{id} );
+
+                       $dbh->commit;
+                       warn "XXX ",$basketgroup->{id}, " basketgroup got $yyyy-$nr\n";
+
+                       $basketgroup->{ffzg_year} = $yyyy;
+                       $basketgroup->{ffzg_nr}   = $nr;
+               }
+       }
+
+       $basketgroup->{ffzg_date} =~ s/\s.+//; # strip time from datetime
+
+    # 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/ffzg-narudzbenica.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);
+
+    print_tables($pdf, $basketgroup, $baskets, $orders);
+
+
+    # print something on each page (usually the footer, but you could also put a header
+    printfooters($pdf, $basketgroup);
+    return $pdf->stringify;
+}
+
+1;
diff --git a/acqui/pdfformat/ffzg.pm b/acqui/pdfformat/ffzg.pm
deleted file mode 100644 (file)
index d3ec40a..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-#!/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 3 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, see <http://www.gnu.org/licenses>.
-
-#you can use any PDF::API2 module, all you need to do is return the stringifyed pdf object from the printpdf sub.
-package pdfformat::ffzg;
-use vars qw($VERSION @ISA @EXPORT);
-use MIME::Base64;
-use List::MoreUtils qw/uniq/;
-use strict;
-use warnings;
-use utf8;
-
-use Koha::Number::Price;
-use Koha::DateUtils;
-
-use Data::Dump qw(dump); # FIXME
-
-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 transform 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 _pdf_font {
-       my ($pdf, $font) = @_;
-       # $font = Times, Times-Bold
-
-       my $mapping = {
-               'Times'      => '/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf',
-               'Times-Bold' => '/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed-Bold.ttf',
-       };
-
-       if ( my $ttf = $mapping->{$font} ) {
-#              warn "XXX using $ttf font insted of $font";
-               return $pdf->ttfont( $ttf );
-
-       } else {
-               warn "ERROR: can't find ttf font $font, fallback to corefont";
-               return $pdf->corefont($font, -encoding => "utf8");
-       }
-
-}
-
-
-sub printhead {
-    my ($pdf, $basketgroup, $bookseller) = @_;
-
-    # get library name
-    my $libraryname = C4::Context->preference("LibraryName");
-    # get branch details
-    my $freedeliveryplace = $basketgroup->{freedeliveryplace};
-warn "XXX freedeliveryplace = ", dump($freedeliveryplace);
-
-    # open 1st page (with the header)
-    my $page = $pdf->openpage(1);
-
-    # create a text
-    my $text = $page->text;
-       $text->fillcolor('black');
-#      $text->fillcolor('red');
-
-
-    # print order info, on the default PDF
-    $text->font( _pdf_font( $pdf, "Times-Bold" ), 12/pt );
-#    $text->translate(100/mm,  ($height-24)/mm);
-       $text->translate(283/pt, 774/pt);
-       $text->text( $basketgroup->{'id'} . '-' . $basketgroup->{'ffzg_nr'} . '/' . $basketgroup->{'ffzg_year'} );
-
-    $text->font( _pdf_font( $pdf, "Times" ), 10/pt );
-
-    # print the date FIXME
-#    $text->translate(140/mm,  ($height-24)/mm);
-    $text->translate(420.75/pt,  773.93/pt);
-    $text->text($basketgroup->{ffzg_date});
-
-#warn "XXX bookseller ", dump( $bookseller );
-
-    # print bookseller infos
-       my $y_pt = 727;
-       foreach my $line ( $bookseller->name, split(/[\n\r]+/, $bookseller->postal) ) {
-           $text->translate(336/pt, $y_pt/pt);
-               $text->text($line);
-               $y_pt -= 12;
-       }
-
-       # Lokacija za isporuku -- Zbirka...
-    $text->translate(62/pt, 590/pt);
-    $text->text($basketgroup->{deliverycomment});
-
-    $text->translate(58/pt, 556/pt);
-    $text->text("Narudžbenicu ispisala: " . C4::Context->userenv->{"firstname"} . " " .  C4::Context->userenv->{"surname"} );
-#    $text->translate(58/pt, 556/pt - 10/pt);
-#      $text->text("basketgroup: " . $basketgroup->{'id'});
-
-}
-
-sub print_tables {
-    my ($pdf, $basketgroup, $baskets, $orders) = @_;
-
-    my $cur_format = C4::Context->preference("CurrencyFormat");
-
-       my $a_titles = [[
-               'Rbr.',
-               'košarica / narudžba',
-               'Naslov',
-               'Kol.',
-               'Cijena bez PDV-a',
-               'Cijena s PDV-om',
-               'Popust %',
-               'Popust iznos',
-               'Porez',
-               'Ukupno bez PDV-a',
-               'Ukupno s PDV-om'
-       ]];
-
-       my $rbr = 1;
-
-       my $order_total;
-       my $basket_totals;
-
-    for my $basket (@$baskets){
-
-#warn "XXX basket = ",dump( $basket );
-
-               my $basket_total;
-
-        my $titleinfo;
-        foreach my $order (@{$orders->{$basket->{basketno}}}) {
-#warn "XXX order = ",dump($order);
-
-                       $order->{discount_value} = $order->{rrp_tax_excluded} - $order->{ecost_tax_excluded};
-                       $basket_total->{$_} += $order->{$_} foreach (qw( total_tax_excluded total_tax_included tax_value quantity ));
-                       $basket_total->{$_} += $order->{$_} * $order->{quantity} foreach (qw( rrp_tax_excluded rrp_tax_included ecost_tax_excluded discount_value ));
-                       push @{$basket_total->{tax_rate}}, $order->{tax_rate};
-
-            $titleinfo = "";
-            if ( C4::Context->preference("marcflavour") eq 'UNIMARC' ) {
-                $titleinfo =  $order->{title} . " / " . $order->{author} .
-                    ( $order->{isbn} ? " ISBN: " . $order->{isbn} : '' ) .
-                    ( $order->{en} ? " EN: " . $order->{en} : '' ) .
-                    ( $order->{itemtype} ? ", " . $order->{itemtype} : '' ) .
-                    ( $order->{edition} ? ", " . $order->{edition} : '' ) .
-                    ( $order->{publishercode} ? ' published by '. $order->{publishercode} : '') .
-                    ( $order->{publicationyear} ? ', '. $order->{publicationyear} : '');
-            }
-            else { # MARC21, NORMARC
-                $titleinfo =  $order->{title} . " " . $order->{author} .
-                    ( $order->{isbn} ? " ISBN: " . $order->{isbn} : '' ) .
-                    ( $order->{en} ? " EN: " . $order->{en} : '' ) .
-                    ( $order->{itemtype} ? " " . $order->{itemtype} : '' ) .
-                    ( $order->{edition} ? ", " . $order->{edition} : '' ) .
-                    ( $order->{publishercode} ? ' published by '. $order->{publishercode} : '') .
-                    ( $order->{copyrightdate} ? ' '. $order->{copyrightdate} : '');
-            }
-
-            push @$a_titles, [
-                               $rbr++ . '.',
-                               $basket->{basketno} . ' / ' . $order->{ordernumber},
-                $titleinfo, #. ($order->{order_vendornote} ? "\n----------------\nNote for vendor : " . $order->{order_vendornote} : '' ),
-                $order->{quantity},
-                Koha::Number::Price->new( $order->{rrp_tax_excluded} )->format,
-                Koha::Number::Price->new( $order->{rrp_tax_included} )->format,
-                Koha::Number::Price->new( $order->{discount} )->format . '%',
-                Koha::Number::Price->new( $order->{discount_value})->format,
-                Koha::Number::Price->new( $order->{tax_rate} * 100 )->format . '%',
-                Koha::Number::Price->new( $order->{total_tax_excluded} )->format,
-                Koha::Number::Price->new( $order->{total_tax_included} )->format,
-            ];
-        }
-
-               $basket_total->{$_} = $basket->{$_} foreach qw( basketname basketno );
-               $basket_total->{tax_rate} = join(" ", map { Koha::Number::Price->new($_ * 100)->format . '%' } uniq @{ $basket_total->{tax_rate} } );
-
-               push @$basket_totals, $basket_total;
-
-               $order_total->{$_} += $basket_total->{$_} foreach qw( rrp_tax_excluded rrp_tax_included total_tax_excluded total_tax_included tax_value quantity ecost_tax_excluded discount_value );
-               push @{$order_total->{tax_rate}}, $basket_total->{tax_rate};
-    }
-
-       $order_total->{tax_rate} = join(" ", uniq @{ $order_total->{tax_rate} } );
-
-warn "XXX basket_totals = ",dump( $basket_totals );
-warn "XXX order_total = ", dump( $order_total );
-
-       push @$a_titles, [
-               '',
-               '',
-               'Ukupno:',
-               $order_total->{quantity},
-               Koha::Number::Price->new( $order_total->{rrp_tax_excluded} )->format,
-               Koha::Number::Price->new( $order_total->{rrp_tax_included} )->format,
-               '', # discount
-               Koha::Number::Price->new( $order_total->{discount_value})->format,
-               '', # tax_rate
-               Koha::Number::Price->new( $order_total->{total_tax_excluded} )->format,
-               Koha::Number::Price->new( $order_total->{total_tax_included} )->format,
-       ];
-
-       my $a_baskets = [[
-               'Br. košarice',
-       'Košarica',
-               'Cijena bez PDV-a',
-               'Cijena s PDV-om',
-               'Porez',
-               'Iznos poreza',
-               'Popust iznos',
-               'Ukupno bez PDV-a',
-               'Ukupno s PDV-om',
-       ]];
-       foreach my $basket_total ( @$basket_totals ) {
-               push @$a_baskets, [ map {
-                               m/^basket/
-                               ? $basket_total->{$_}
-                               : Koha::Number::Price->new($basket_total->{$_})->format . ( m/^tax_rate$/ ? '%' : '' )
-                       } qw(
-                       basketno
-                       basketname
-                       rrp_tax_excluded
-                       rrp_tax_included
-                       tax_rate
-                       tax_value
-                       discount_value
-                       total_tax_excluded
-                       total_tax_included
-               ) ];
-       }
-       push @$a_baskets, [ '', 'Ukupno', map { Koha::Number::Price->new($order_total->{$_})->format } qw(
-               rrp_tax_excluded
-               rrp_tax_included
-               tax_rate
-               tax_value
-               discount_value
-               total_tax_excluded
-               total_tax_included
-       ) ];
-       $a_baskets->[-1]->[4] = ''; # remove tax_rate from total
-
-    $pdf->mediabox($height/mm, $width/mm);
-       my $page = $pdf->openpage(1);
-       my $pdftable = new PDF::Table();
-
-       my ($end_page, $pages_spanned, $table_bot_y) =
-       $pdftable->table($pdf, $page, $a_titles,
-               x => 10/mm, # 57/pt
-               w => ($width - 20)/mm,
-               start_y => 470/pt,
-               next_y  => $height/mm - 25/mm,
-               start_h => $height/mm - 470/pt, # - 25/mm,
-               next_h  => $height/mm - ( 2 * 25/mm ),
-               padding => 3,
-               padding_top => 2,
-               background_color_odd  => "lightgray",
-               font       => _pdf_font( $pdf, "Times" ),
-               font_size => 8/pt,
-               header_props   =>    {
-                       font       => _pdf_font( $pdf, "Times" ),
-                       font_size  => 8/pt,
-                       font_color => 'white',
-                       bg_color   => 'gray',
-                       repeat     => 1,
-               },
-               column_props => [
-                       {}, # rbr
-                       {}, # basket/order
-                       { min_w => 55/mm },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-               ],
-       );
-
-       $table_bot_y -= 10/mm;
-
-       if ( $table_bot_y < 25/mm + ( 3 + @$a_baskets ) * 12/pt ) {
-               warn "XXX force baskets to next page\n";
-               $table_bot_y = $height/mm - 25/mm;
-               $end_page = $pdf->page();
-       }
-
-       my $text = $end_page->text;
-       $text->font( _pdf_font( $pdf, "Times" ), 10/pt );
-       $text->translate(20/mm, $table_bot_y );
-#      $text->fillcolor('red');
-       $text->text("Trošak po košaricama");
-
-       $table_bot_y -= 5/mm;
-       $page = $end_page;
-
-       $pdftable->table($pdf, $page, $a_baskets,
-               x => 10/mm, # 57/pt
-               w => ($width - 20)/mm,
-               start_y => $table_bot_y,
-               next_y  => 250/mm,
-               start_h => 250/mm,
-               next_h  => 250/mm,
-               padding => 3,
-               padding_top => 2,
-               background_color_odd  => "lightgray",
-               font       => _pdf_font( $pdf, "Times" ),
-               font_size => 8/pt,
-               header_props   =>    {
-                       font       => _pdf_font( $pdf, "Times" ),
-                       font_size  => 8/pt,
-                       font_color => 'white',
-                       bg_color   => 'gray',
-                       repeat     => 1,
-               },
-               column_props => [
-                       {},
-                       {},
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-                       { justify => 'right' },
-               ],
-       );
-
-}
-sub printfooters {
-       my ($pdf, $basketgroup) = @_;
-       for (my $i=1;$i <= $pdf->pages;$i++) {
-               my $page = $pdf->openpage($i);
-               my $text = $page->text;
-               $text->font( _pdf_font( $pdf, "Times" ), 3/mm );
-               $text->translate(10/mm,  10/mm);
-               $text->text("Page $i / ".$pdf->pages);
-#              $text->text("Page $i / ".$pdf->pages . "    basketgroup: " . $basketgroup->{id});
-               $text->translate($width/mm - 40/mm,  10/mm);
-               $text->text("basketgroup: " . $basketgroup->{id});
-       }
-}
-
-sub printpdf {
-    my ($basketgroup, $bookseller, $baskets, $orders, $GST) = @_;
-warn "XXX basketgroup = ",dump($basketgroup);
-
-       if ( ! $basketgroup->{ffzg_year} ) {
-               if ( $basketgroup->{ffzg_date} =~ m/^(\d\d\d\d)-(\d\d)-(\d\d)\s.*/ ) {
-                       my ( $yyyy, $mm, $dd ) = ( $1, $2, $3 );
-                       my $dbh = C4::Context->dbh;
-                       $dbh->begin_work;
-                       my $sth = $dbh->prepare(qq{ select max(ffzg_nr) from aqbasketgroups where ffzg_year = ? });
-                       $sth->execute( $yyyy );
-                       my ($nr) = $sth->fetchrow_array;
-                       $nr++;
-                       $sth = $dbh->prepare(qq{ update aqbasketgroups set ffzg_year = ?, ffzg_nr = ? where id = ? });
-                       $sth->execute( $yyyy, $nr, $basketgroup->{id} );
-
-                       $dbh->commit;
-                       warn "XXX ",$basketgroup->{id}, " basketgroup got $yyyy-$nr\n";
-
-                       $basketgroup->{ffzg_year} = $yyyy;
-                       $basketgroup->{ffzg_nr}   = $nr;
-               }
-       }
-
-       $basketgroup->{ffzg_date} =~ s/\s.+//; # strip time from datetime
-
-    # 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/ffzg-narudzbenica.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);
-
-    print_tables($pdf, $basketgroup, $baskets, $orders);
-
-
-    # print something on each page (usually the footer, but you could also put a header
-    printfooters($pdf, $basketgroup);
-    return $pdf->stringify;
-}
-
-1;