X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=acqui%2Fbasketgroup.pl;h=3300cea9baf2ec2e2a45c689851c38e651344a14;hb=HEAD;hp=aba32d4c6ebe9a7b4720d5e4f4f1467afbbfda3f;hpb=a75a9264e19fe658f475c8a8ee40e0b1ca53dbd2;p=koha_gimpoz diff --git a/acqui/basketgroup.pl b/acqui/basketgroup.pl index aba32d4c6e..3300cea9ba 100755 --- a/acqui/basketgroup.pl +++ b/acqui/basketgroup.pl @@ -4,6 +4,7 @@ #written by john.soros@biblibre.com 01/10/2008 # Copyright 2008 - 2009 BibLibre SARL +# Parts Copyright Catalyst 2010 # # This file is part of Koha. # @@ -44,6 +45,7 @@ The bookseller who we want to display the baskets (and basketgroups) of. use strict; use warnings; +use Carp; use C4::Input; use C4::Auth; @@ -58,7 +60,7 @@ use C4::Members qw/GetMember/; my $input=new CGI; -my ($template, $loggedinuser, $cookie) +our ($template, $loggedinuser, $cookie) = get_template_and_user({template_name => "acqui/basketgroup.tmpl", query => $input, type => "intranet", @@ -183,8 +185,21 @@ sub printbasketgrouppdf{ my ($basketgroupid) = @_; my $pdfformat = C4::Context->preference("OrderPdfFormat"); - eval "use $pdfformat" ; - eval "use C4::Branch"; + if ($pdfformat eq 'pdfformat::layout3pages' || $pdfformat eq 'pdfformat::layout2pages'){ + eval { + eval "require $pdfformat"; + import $pdfformat; + }; + if ($@){ + } + } + else { + print $input->header; + print $input->start_html; # FIXME Should do a nicer page + print "

Invalid PDF Format set

"; + print "Please go to the systempreferences and set a valid pdfformat"; + exit; + } my $basketgroup = GetBasketgroup($basketgroupid); my $bookseller = GetBookSellerFromId($basketgroup->{'booksellerid'}); @@ -200,8 +215,20 @@ sub printbasketgrouppdf{ #isbn, itemtype, author, title, publishercode, quantity, listprice ecost discount gstrate my @ba_order; if ( $ord->{biblionumber} && $ord->{quantity}> 0 ) { - eval "use C4::Biblio"; - eval "use C4::Koha"; + eval { + require C4::Biblio; + import C4::Biblio; + }; + if ($@){ + croak $@; + } + eval { + require C4::Koha; + import C4::Koha; + }; + if ($@){ + croak $@; + } my $bib = GetBiblioData($ord->{biblionumber}); my $itemtypes = GetItemTypes(); if($ord->{isbn}){ @@ -209,8 +236,8 @@ sub printbasketgrouppdf{ } else { push(@ba_order, undef); } - if ($ord->{itemtype}){ - push(@ba_order, $itemtypes->{$bib->{itemtype}}->{description}) if $bib->{itemtype}; + if ($ord->{itemtype} and $bib->{itemtype}){ + push(@ba_order, $itemtypes->{$bib->{itemtype}}->{description}); } else { push(@ba_order, undef); } @@ -224,10 +251,13 @@ sub printbasketgrouppdf{ push(@ba_orders, \@ba_order); # Editor Number my $en; - if (C4::Context->preference("marcflavour") eq 'UNIMARC') { - $en = MARC::Record::new_from_xml($ord->{marcxml},'UTF-8')->subfield('345',"b"); - } elsif (C4::Context->preference("marcflavour") eq 'MARC21') { - $en = MARC::Record::new_from_xml($ord->{marcxml},'UTF-8')->subfield('037',"a"); + my $marcrecord=eval{MARC::Record::new_from_xml( $ord->{marcxml},'UTF-8' )}; + if ($marcrecord){ + if ( C4::Context->preference("marcflavour") eq 'UNIMARC' ) { + $en = $marcrecord->subfield( '345', "b" ); + } elsif ( C4::Context->preference("marcflavour") eq 'MARC21' ) { + $en = $marcrecord->subfield( '037', "a" ); + } } if($en){ push(@ba_order, $en); @@ -244,7 +274,7 @@ sub printbasketgrouppdf{ ); my $pdf = printpdf($basketgroup, $bookseller, $baskets, \%orders, $bookseller->{gstrate} // C4::Context->preference("gist")) || die "pdf generation failed"; print $pdf; - exit; + } my $op = $input->param('op'); @@ -272,6 +302,7 @@ if ( $op eq "add" ) { my $basketgroupid = $input->param('basketgroupid'); my $billingplace; my $deliveryplace; + my $freedeliveryplace; if ( $basketgroupid ) { # Get the selected baskets in the basketgroup to display them my $selecteds = GetBasketsByBasketgroup($basketgroupid); @@ -286,9 +317,11 @@ if ( $op eq "add" ) { $template->param( name => $basketgroup->{name}, deliverycomment => $basketgroup->{deliverycomment}, + freedeliveryplace => $basketgroup->{freedeliveryplace}, ); $billingplace = $basketgroup->{billingplace}; $deliveryplace = $basketgroup->{deliveryplace}; + $freedeliveryplace = $basketgroup->{freedeliveryplace}; } # determine default billing and delivery places depending on librarian homebranch and existing basketgroup data @@ -301,26 +334,22 @@ if ( $op eq "add" ) { # Build the combobox to select the billing place my @billingplaceloop; for (sort keys %$branches) { - my $selected = 1 if $_ eq $billingplace; - my %row = ( + push @billingplaceloop, { value => $_, - selected => $selected, + selected => $_ eq $billingplace, branchname => $branches->{$_}->{branchname}, - ); - push @billingplaceloop, \%row; + }; } $template->param( billingplaceloop => \@billingplaceloop ); # Build the combobox to select the delivery place my @deliveryplaceloop; for (sort keys %$branches) { - my $selected = 1 if $_ eq $deliveryplace; - my %row = ( + push @deliveryplaceloop, { value => $_, - selected => $selected, + selected => $_ eq $deliveryplace, branchname => $branches->{$_}->{branchname}, - ); - push @deliveryplaceloop, \%row; + }; } $template->param( deliveryplaceloop => \@deliveryplaceloop ); @@ -382,10 +411,12 @@ if ( $op eq "add" ) { CloseBasketgroup($basketgroupid); printbasketgrouppdf($basketgroupid); + exit; }elsif ($op eq 'print'){ my $basketgroupid = $input->param('basketgroupid'); printbasketgrouppdf($basketgroupid); + exit; }elsif( $op eq "delete"){ my $basketgroupid = $input->param('basketgroupid'); DelBasketgroup($basketgroupid); @@ -402,25 +433,27 @@ if ( $op eq "add" ) { } elsif ( $op eq 'attachbasket') { # Getting parameters - my $basketgroup = {}; - my @baskets = $input->param('basket'); - my $basketgroupid = $input->param('basketgroupid'); - my $basketgroupname = $input->param('basketgroupname'); - my $booksellerid = $input->param('booksellerid'); - my $billingplace = $input->param('billingplace'); - my $deliveryplace = $input->param('deliveryplace'); - my $deliverycomment = $input->param('deliverycomment'); - my $close = $input->param('close') ? 1 : 0; + my $basketgroup = {}; + my @baskets = $input->param('basket'); + my $basketgroupid = $input->param('basketgroupid'); + my $basketgroupname = $input->param('basketgroupname'); + my $booksellerid = $input->param('booksellerid'); + my $billingplace = $input->param('billingplace'); + my $deliveryplace = $input->param('deliveryplace'); + my $freedeliveryplace = $input->param('freedeliveryplace'); + my $deliverycomment = $input->param('deliverycomment'); + my $close = $input->param('close') ? 1 : 0; # If we got a basketgroupname, we create a basketgroup if ($basketgroupid) { $basketgroup = { - name => $basketgroupname, - id => $basketgroupid, - basketlist => \@baskets, - billingplace => $billingplace, - deliveryplace => $deliveryplace, - deliverycomment => $deliverycomment, - closed => $close, + name => $basketgroupname, + id => $basketgroupid, + basketlist => \@baskets, + billingplace => $billingplace, + deliveryplace => $deliveryplace, + freedeliveryplace => $freedeliveryplace, + deliverycomment => $deliverycomment, + closed => $close, }; ModBasketgroup($basketgroup); if($close){ @@ -428,12 +461,13 @@ if ( $op eq "add" ) { } }else{ $basketgroup = { - name => $basketgroupname, - booksellerid => $booksellerid, - basketlist => \@baskets, - deliveryplace => $deliveryplace, - deliverycomment => $deliverycomment, - closed => $close, + name => $basketgroupname, + booksellerid => $booksellerid, + basketlist => \@baskets, + deliveryplace => $deliveryplace, + freedeliveryplace => $freedeliveryplace, + deliverycomment => $deliverycomment, + closed => $close, }; $basketgroupid = NewBasketgroup($basketgroup); }