use strict;
use warnings;
+use Carp;
use C4::Input;
use C4::Auth;
use CGI;
use C4::Bookseller qw/GetBookSellerFromId/;
-use C4::Acquisition qw/CloseBasketgroup ReOpenBasketgroup GetOrders GetBasketsByBasketgroup GetBasketsByBookseller ModBasketgroup NewBasketgroup DelBasketgroup GetBasketgroups ModBasket GetBasketgroup GetBasket/;
+use C4::Acquisition qw/CloseBasketgroup ReOpenBasketgroup GetOrders GetBasketsByBasketgroup GetBasketsByBookseller ModBasketgroup NewBasketgroup DelBasketgroup GetBasketgroups ModBasket GetBasketgroup GetBasket GetBasketGroupAsCSV/;
use C4::Bookseller qw/GetBookSellerFromId/;
use C4::Branch qw/GetBranches/;
use C4::Members qw/GetMember/;
-my $input=new CGI;
+our $input=new CGI;
-my ($template, $loggedinuser, $cookie)
+our ($template, $loggedinuser, $cookie)
= get_template_and_user({template_name => "acqui/basketgroup.tmpl",
query => $input,
type => "intranet",
my ($basketgroupid) = @_;
my $pdfformat = C4::Context->preference("OrderPdfFormat");
- eval "use $pdfformat";
- # FIXME consider what would happen if $pdfformat does not
- # contain the name of a valid Perl module.
+ 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 "<h1>Invalid PDF Format set</h1>";
+ print "Please go to the systempreferences and set a valid pdfformat";
+ exit;
+ }
my $basketgroup = GetBasketgroup($basketgroupid);
my $bookseller = GetBookSellerFromId($basketgroup->{'booksellerid'});
#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}){
} 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);
}
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);
);
my $pdf = printpdf($basketgroup, $bookseller, $baskets, \%orders, $bookseller->{gstrate} // C4::Context->preference("gist")) || die "pdf generation failed";
print $pdf;
+
}
-my $op = $input->param('op');
+my $op = $input->param('op') || 'display';
my $booksellerid = $input->param('booksellerid');
$template->param(booksellerid => $booksellerid);
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);
$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
my $borrower = GetMember( ( 'borrowernumber' => $loggedinuser ) );
$billingplace = $billingplace || $borrower->{'branchcode'};
$deliveryplace = $deliveryplace || $borrower->{'branchcode'};
-
- my $branches = GetBranches;
-
- # Build the combobox to select the billing place
- my @billingplaceloop;
- for (sort keys %$branches) {
- my $selected = 1 if $_ eq $billingplace;
- my %row = (
- value => $_,
- selected => $selected,
- 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 = (
- value => $_,
- selected => $selected,
- branchname => $branches->{$_}->{branchname},
- );
- push @deliveryplaceloop, \%row;
- }
- $template->param( deliveryplaceloop => \@deliveryplaceloop );
+
+ my $branches = C4::Branch::GetBranchesLoop( $billingplace );
+ $template->param( billingplaceloop => $branches );
+ $branches = C4::Branch::GetBranchesLoop( $deliveryplace );
+ $template->param( deliveryplaceloop => $branches );
$template->param( booksellerid => $booksellerid );
}
printbasketgrouppdf($basketgroupid);
exit;
+}elsif ( $op eq "export" ) {
+ my $basketgroupid = $input->param('basketgroupid');
+ print $input->header(
+ -type => 'text/csv',
+ -attachment => 'basketgroup' . $basketgroupid . '.csv',
+ );
+ print GetBasketGroupAsCSV( $basketgroupid, $input );
+ exit;
}elsif( $op eq "delete"){
my $basketgroupid = $input->param('basketgroupid');
DelBasketgroup($basketgroupid);
} 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){
}
}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);
}