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; |