|
Lines 1-163
Link Here
|
| 1 |
#!/usr/bin/perl |
|
|
| 2 |
|
| 3 |
#origninally script to provide intranet (librarian) advanced search facility |
| 4 |
#now script to do searching for acquisitions |
| 5 |
|
| 6 |
# Copyright 2000-2002 Katipo Communications |
| 7 |
# Copyright 2008-2009 BibLibre SARL |
| 8 |
# |
| 9 |
# This file is part of Koha. |
| 10 |
# |
| 11 |
# Koha is free software; you can redistribute it and/or modify it |
| 12 |
# under the terms of the GNU General Public License as published by |
| 13 |
# the Free Software Foundation; either version 3 of the License, or |
| 14 |
# (at your option) any later version. |
| 15 |
# |
| 16 |
# Koha is distributed in the hope that it will be useful, but |
| 17 |
# WITHOUT ANY WARRANTY; without even the implied warranty of |
| 18 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 19 |
# GNU General Public License for more details. |
| 20 |
# |
| 21 |
# You should have received a copy of the GNU General Public License |
| 22 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
| 23 |
|
| 24 |
=head1 NAME |
| 25 |
|
| 26 |
neworderbiblio.pl |
| 27 |
|
| 28 |
=head1 DESCRIPTION |
| 29 |
|
| 30 |
this script allows to perform a new order from an existing record. |
| 31 |
|
| 32 |
=head1 CGI PARAMETERS |
| 33 |
|
| 34 |
=over 4 |
| 35 |
|
| 36 |
=item search |
| 37 |
the title the librarian has typed to search an existing record. |
| 38 |
|
| 39 |
=item q |
| 40 |
the keyword the librarian has typed to search an existing record. |
| 41 |
|
| 42 |
=item author |
| 43 |
the author of the new record. |
| 44 |
|
| 45 |
=item num |
| 46 |
the number of result per page to display |
| 47 |
|
| 48 |
=item booksellerid |
| 49 |
the id of the bookseller this script has to add an order. |
| 50 |
|
| 51 |
=item basketno |
| 52 |
the basket number to know on which basket this script have to add a new order. |
| 53 |
|
| 54 |
=back |
| 55 |
|
| 56 |
=cut |
| 57 |
|
| 58 |
use Modern::Perl; |
| 59 |
|
| 60 |
use C4::Search; |
| 61 |
use CGI qw ( -utf8 ); |
| 62 |
use C4::Biblio; |
| 63 |
use C4::Auth; |
| 64 |
use C4::Output; |
| 65 |
use C4::Koha; |
| 66 |
use C4::Budgets qw/ GetBudgetHierarchy /; |
| 67 |
use C4::Languages qw(getlanguage); |
| 68 |
|
| 69 |
use Koha::Acquisition::Booksellers; |
| 70 |
use Koha::SearchEngine; |
| 71 |
use Koha::SearchEngine::Search; |
| 72 |
use Koha::SearchEngine::QueryBuilder; |
| 73 |
use Koha::Patrons; |
| 74 |
|
| 75 |
my $input = new CGI; |
| 76 |
|
| 77 |
#getting all CGI params into a hash. |
| 78 |
my $params = $input->Vars; |
| 79 |
|
| 80 |
my $page = $params->{'page'} || 1; |
| 81 |
my $query = $params->{'q'}; |
| 82 |
my $results_per_page = $params->{'num'} || 20; |
| 83 |
my $booksellerid = $params->{'booksellerid'}; |
| 84 |
my $basketno = $params->{'basketno'}; |
| 85 |
my $sub = $params->{'sub'}; |
| 86 |
my $bookseller = Koha::Acquisition::Booksellers->find( $booksellerid ); |
| 87 |
my $lang = C4::Languages::getlanguage($input); |
| 88 |
|
| 89 |
# getting the template |
| 90 |
my ( $template, $loggedinuser, $cookie ) = get_template_and_user( |
| 91 |
{ |
| 92 |
template_name => "acqui/neworderbiblio.tt", |
| 93 |
query => $input, |
| 94 |
type => "intranet", |
| 95 |
authnotrequired => 0, |
| 96 |
flagsrequired => { acquisition => 'order_manage' }, |
| 97 |
} |
| 98 |
); |
| 99 |
|
| 100 |
output_and_exit( $input, $cookie, $template, 'unknown_vendor') unless $bookseller; |
| 101 |
|
| 102 |
# Searching the catalog. |
| 103 |
|
| 104 |
my @operands = $query; |
| 105 |
my $QParser; |
| 106 |
$QParser = C4::Context->queryparser if (C4::Context->preference('UseQueryParser')); |
| 107 |
my $builtquery; |
| 108 |
my $builder = Koha::SearchEngine::QueryBuilder->new({index => $Koha::SearchEngine::BIBLIOS_INDEX}); |
| 109 |
my $searcher = Koha::SearchEngine::Search->new({index => $Koha::SearchEngine::BIBLIOS_INDEX}); |
| 110 |
if ($QParser) { |
| 111 |
$builtquery = $query; |
| 112 |
} else { |
| 113 |
( undef, $builtquery, undef, undef, undef, undef, undef, undef, undef, undef ) = |
| 114 |
$builder->build_query_compat( undef, \@operands, undef, undef, undef, 0, $lang ); |
| 115 |
} |
| 116 |
my ( $error, $marcresults, $total_hits ) = $searcher->simple_search_compat($builtquery, $results_per_page * ($page - 1), $results_per_page); |
| 117 |
|
| 118 |
if (defined $error) { |
| 119 |
$template->param( |
| 120 |
query_error => $error, |
| 121 |
basketno => $basketno, |
| 122 |
booksellerid => $bookseller->id, |
| 123 |
name => $bookseller->name, |
| 124 |
); |
| 125 |
output_html_with_http_headers $input, $cookie, $template->output; |
| 126 |
exit; |
| 127 |
} |
| 128 |
|
| 129 |
my @results; |
| 130 |
|
| 131 |
foreach my $result ( @{$marcresults} ) { |
| 132 |
my $marcrecord = C4::Search::new_record_from_zebra( 'biblioserver', $result ); |
| 133 |
my $biblio = TransformMarcToKoha( $marcrecord, '' ); |
| 134 |
|
| 135 |
$biblio->{booksellerid} = $booksellerid; |
| 136 |
push @results, $biblio; |
| 137 |
|
| 138 |
} |
| 139 |
|
| 140 |
my $patron = Koha::Patrons->find( $loggedinuser ); |
| 141 |
my $budgets = GetBudgetHierarchy(q{},$patron->branchcode,$patron->borrowernumber); |
| 142 |
my $has_budgets = 0; |
| 143 |
foreach my $r (@{$budgets}) { |
| 144 |
if (!defined $r->{budget_amount} || $r->{budget_amount} == 0) { |
| 145 |
next; |
| 146 |
} |
| 147 |
$has_budgets = 1; |
| 148 |
last; |
| 149 |
} |
| 150 |
|
| 151 |
$template->param( |
| 152 |
has_budgets => $has_budgets, |
| 153 |
basketno => $basketno, |
| 154 |
booksellerid => $bookseller->id, |
| 155 |
name => $bookseller->name, |
| 156 |
resultsloop => \@results, |
| 157 |
total => $total_hits, |
| 158 |
query => $query, |
| 159 |
pagination_bar => pagination_bar( "/cgi-bin/koha/acqui/neworderbiblio.pl?q=$query&booksellerid=$booksellerid&basketno=$basketno&", getnbpages( $total_hits, $results_per_page ), $page, 'page' ), |
| 160 |
); |
| 161 |
|
| 162 |
# BUILD THE TEMPLATE |
| 163 |
output_html_with_http_headers $input, $cookie, $template->output; |