Lines 17-29
Link Here
|
17 |
# You should have received a copy of the GNU General Public License |
17 |
# You should have received a copy of the GNU General Public License |
18 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
18 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
19 |
|
19 |
|
20 |
# Modification by D.Ulm, actually works (as long as indep. branches not turned on) |
20 |
use Modern::Perl; |
21 |
# Someone let me know what indep. branches is supposed to do and I'll make that part work too |
|
|
22 |
# |
23 |
# The reserve pull lists *works* as long as not for indepencdant branches, I can fix! |
24 |
|
25 |
use strict; |
26 |
#use warnings; FIXME - Bug 2505 |
27 |
|
21 |
|
28 |
use constant PULL_INTERVAL => 2; |
22 |
use constant PULL_INTERVAL => 2; |
29 |
|
23 |
|
Lines 37-45
use Koha::DateUtils;
Link Here
|
37 |
use DateTime::Duration; |
31 |
use DateTime::Duration; |
38 |
|
32 |
|
39 |
my $input = new CGI; |
33 |
my $input = new CGI; |
40 |
my $startdate=$input->param('from'); |
34 |
my $startdate = $input->param('from'); |
41 |
my $enddate=$input->param('to'); |
35 |
my $enddate = $input->param('to'); |
42 |
my $run_report = ( not defined $input->param('run_report') ) ? 1 : $input->param('run_report'); |
|
|
43 |
|
36 |
|
44 |
my $theme = $input->param('theme'); # only used if allowthemeoverride is set |
37 |
my $theme = $input->param('theme'); # only used if allowthemeoverride is set |
45 |
|
38 |
|
Lines 55-66
my ( $template, $loggedinuser, $cookie ) = get_template_and_user(
Link Here
|
55 |
); |
48 |
); |
56 |
|
49 |
|
57 |
my $today = dt_from_string; |
50 |
my $today = dt_from_string; |
58 |
$startdate =~ s/^\s+//; |
|
|
59 |
$startdate =~ s/\s+$//; |
60 |
$enddate =~ s/^\s+//; |
61 |
$enddate =~ s/\s+$//; |
62 |
|
51 |
|
63 |
if ( $startdate ) { |
52 |
if ( $startdate ) { |
|
|
53 |
$startdate =~ s/^\s+//; |
54 |
$startdate =~ s/\s+$//; |
64 |
$startdate = eval{dt_from_string( $startdate )}; |
55 |
$startdate = eval{dt_from_string( $startdate )}; |
65 |
} |
56 |
} |
66 |
unless ( $startdate ){ |
57 |
unless ( $startdate ){ |
Lines 70-75
unless ( $startdate ){
Link Here
|
70 |
} |
61 |
} |
71 |
|
62 |
|
72 |
if ( $enddate ) { |
63 |
if ( $enddate ) { |
|
|
64 |
$enddate =~ s/^\s+//; |
65 |
$enddate =~ s/\s+$//; |
73 |
$enddate = eval{dt_from_string( $enddate )}; |
66 |
$enddate = eval{dt_from_string( $enddate )}; |
74 |
} |
67 |
} |
75 |
unless ( $enddate ) { |
68 |
unless ( $enddate ) { |
Lines 78-109
unless ( $enddate ) {
Link Here
|
78 |
} |
71 |
} |
79 |
|
72 |
|
80 |
my @reservedata; |
73 |
my @reservedata; |
81 |
if ( $run_report ) { |
74 |
my $dbh = C4::Context->dbh; |
82 |
my $dbh = C4::Context->dbh; |
75 |
my $sqldatewhere = ""; |
83 |
my $sqldatewhere = ""; |
76 |
my $startdate_iso = output_pref({ dt => $startdate, dateformat => 'iso', dateonly => 1 }); |
84 |
my $startdate_iso = output_pref({ dt => $startdate, dateformat => 'iso', dateonly => 1 }); |
77 |
my $enddate_iso = output_pref({ dt => $enddate, dateformat => 'iso', dateonly => 1 }); |
85 |
my $enddate_iso = output_pref({ dt => $enddate, dateformat => 'iso', dateonly => 1 }); |
|
|
86 |
$debug and warn $startdate_iso. "\n" . $enddate_iso; |
87 |
my @query_params = (); |
88 |
if ($startdate_iso) { |
89 |
$sqldatewhere .= " AND reservedate >= ?"; |
90 |
push @query_params, $startdate_iso; |
91 |
} |
92 |
if ($enddate_iso) { |
93 |
$sqldatewhere .= " AND reservedate <= ?"; |
94 |
push @query_params, $enddate_iso; |
95 |
} |
96 |
|
78 |
|
97 |
my $strsth = |
79 |
$debug and warn $startdate_iso. "\n" . $enddate_iso; |
|
|
80 |
|
81 |
my @query_params = (); |
82 |
|
83 |
if ($startdate_iso) { |
84 |
$sqldatewhere .= " AND reservedate >= ?"; |
85 |
push @query_params, $startdate_iso; |
86 |
} |
87 |
if ($enddate_iso) { |
88 |
$sqldatewhere .= " AND reservedate <= ?"; |
89 |
push @query_params, $enddate_iso; |
90 |
} |
91 |
|
92 |
my $strsth = |
98 |
"SELECT min(reservedate) as l_reservedate, |
93 |
"SELECT min(reservedate) as l_reservedate, |
99 |
reserves.borrowernumber as borrowernumber, |
94 |
reserves.borrowernumber as borrowernumber, |
100 |
GROUP_CONCAT(DISTINCT items.holdingbranch |
95 |
GROUP_CONCAT(DISTINCT items.holdingbranch |
101 |
ORDER BY items.itemnumber SEPARATOR '|') l_holdingbranch, |
96 |
ORDER BY items.itemnumber SEPARATOR '|') l_holdingbranch, |
102 |
reserves.biblionumber, |
97 |
reserves.biblionumber, |
103 |
reserves.branchcode, |
98 |
reserves.branchcode as l_branch, |
104 |
GROUP_CONCAT(DISTINCT reserves.branchcode |
|
|
105 |
ORDER BY items.itemnumber SEPARATOR ', ') l_branch, |
106 |
items.holdingbranch as branch, |
107 |
GROUP_CONCAT(DISTINCT items.itype |
99 |
GROUP_CONCAT(DISTINCT items.itype |
108 |
ORDER BY items.itemnumber SEPARATOR '|') l_itype, |
100 |
ORDER BY items.itemnumber SEPARATOR '|') l_itype, |
109 |
GROUP_CONCAT(DISTINCT items.location |
101 |
GROUP_CONCAT(DISTINCT items.location |
Lines 114-124
if ( $run_report ) {
Link Here
|
114 |
ORDER BY items.itemnumber SEPARATOR '<br/>') l_enumchron, |
106 |
ORDER BY items.itemnumber SEPARATOR '<br/>') l_enumchron, |
115 |
GROUP_CONCAT(DISTINCT items.copynumber |
107 |
GROUP_CONCAT(DISTINCT items.copynumber |
116 |
ORDER BY items.itemnumber SEPARATOR '<br/>') l_copynumber, |
108 |
ORDER BY items.itemnumber SEPARATOR '<br/>') l_copynumber, |
117 |
items.itemnumber, |
|
|
118 |
notificationdate, |
119 |
reminderdate, |
120 |
max(priority) as priority, |
121 |
reserves.found, |
122 |
biblio.title, |
109 |
biblio.title, |
123 |
biblio.author, |
110 |
biblio.author, |
124 |
count(DISTINCT items.itemnumber) as icount, |
111 |
count(DISTINCT items.itemnumber) as icount, |
Lines 133-139
if ( $run_report ) {
Link Here
|
133 |
$sqldatewhere |
120 |
$sqldatewhere |
134 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber) |
121 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber) |
135 |
AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL) |
122 |
AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL) |
136 |
AND items.itemnumber NOT IN (select itemnumber FROM reserves where found='W') |
123 |
AND items.itemnumber NOT IN (select itemnumber FROM reserves where found IS NOT NULL) |
137 |
AND issues.itemnumber IS NULL |
124 |
AND issues.itemnumber IS NULL |
138 |
AND reserves.priority <> 0 |
125 |
AND reserves.priority <> 0 |
139 |
AND reserves.suspend = 0 |
126 |
AND reserves.suspend = 0 |
Lines 143-201
if ( $run_report ) {
Link Here
|
143 |
# multiple patrons have a hold on an item |
130 |
# multiple patrons have a hold on an item |
144 |
|
131 |
|
145 |
|
132 |
|
146 |
if (C4::Context->preference('IndependentBranches')){ |
133 |
if (C4::Context->preference('IndependentBranches')){ |
147 |
$strsth .= " AND items.holdingbranch=? "; |
134 |
$strsth .= " AND items.holdingbranch=? "; |
148 |
push @query_params, C4::Context->userenv->{'branch'}; |
135 |
push @query_params, C4::Context->userenv->{'branch'}; |
149 |
} |
136 |
} |
150 |
$strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title "; |
137 |
$strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title "; |
151 |
|
138 |
|
152 |
my $sth = $dbh->prepare($strsth); |
139 |
my $sth = $dbh->prepare($strsth); |
153 |
$sth->execute(@query_params); |
140 |
$sth->execute(@query_params); |
154 |
|
141 |
|
155 |
while ( my $data = $sth->fetchrow_hashref ) { |
142 |
while ( my $data = $sth->fetchrow_hashref ) { |
156 |
my $record = Koha::Biblios->find($data->{biblionumber}); |
143 |
my $record = Koha::Biblios->find($data->{biblionumber}); |
157 |
if ($record){ |
144 |
if ($record){ |
158 |
$data->{subtitle} = [ $record->subtitles ]; |
145 |
$data->{subtitle} = [ $record->subtitles ]; |
159 |
} |
|
|
160 |
push( |
161 |
@reservedata, |
162 |
{ |
163 |
reservedate => $data->{l_reservedate}, |
164 |
priority => $data->{priority}, |
165 |
name => $data->{l_patron}, |
166 |
title => $data->{title}, |
167 |
subtitle => $data->{subtitle}, |
168 |
author => $data->{author}, |
169 |
borrowernumber => $data->{borrowernumber}, |
170 |
itemnum => $data->{itemnumber}, |
171 |
phone => $data->{phone}, |
172 |
email => $data->{email}, |
173 |
biblionumber => $data->{biblionumber}, |
174 |
statusw => ( $data->{found} eq "W" ), |
175 |
statusf => ( $data->{found} eq "F" ), |
176 |
holdingbranches => [split('\|', $data->{l_holdingbranch})],, |
177 |
branch => $data->{l_branch}, |
178 |
itemcallnumber => $data->{l_itemcallnumber}, |
179 |
enumchron => $data->{l_enumchron}, |
180 |
copyno => $data->{l_copynumber}, |
181 |
notificationdate=> $data->{notificationdate}, |
182 |
reminderdate => $data->{reminderdate}, |
183 |
count => $data->{icount}, |
184 |
rcount => $data->{rcount}, |
185 |
pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, |
186 |
itypes => [split('\|', $data->{l_itype})], |
187 |
locations => [split('\|', $data->{l_location})], |
188 |
} |
189 |
); |
190 |
} |
146 |
} |
191 |
$sth->finish; |
147 |
push( |
|
|
148 |
@reservedata, { |
149 |
reservedate => $data->{l_reservedate}, |
150 |
name => $data->{l_patron}, |
151 |
title => $data->{title}, |
152 |
subtitle => $data->{subtitle}, |
153 |
author => $data->{author}, |
154 |
borrowernumber => $data->{borrowernumber}, |
155 |
biblionumber => $data->{biblionumber}, |
156 |
holdingbranches => [split('\|', $data->{l_holdingbranch})], |
157 |
branch => $data->{l_branch}, |
158 |
itemcallnumber => $data->{l_itemcallnumber}, |
159 |
enumchron => $data->{l_enumchron}, |
160 |
copyno => $data->{l_copynumber}, |
161 |
count => $data->{icount}, |
162 |
rcount => $data->{rcount}, |
163 |
pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, |
164 |
itypes => [split('\|', $data->{l_itype})], |
165 |
locations => [split('\|', $data->{l_location})], |
166 |
} |
167 |
); |
192 |
} |
168 |
} |
|
|
169 |
$sth->finish; |
193 |
|
170 |
|
194 |
$template->param( |
171 |
$template->param( |
195 |
todaysdate => $today, |
172 |
todaysdate => $today, |
196 |
from => $startdate, |
173 |
from => $startdate, |
197 |
to => $enddate, |
174 |
to => $enddate, |
198 |
run_report => $run_report, |
|
|
199 |
reserveloop => \@reservedata, |
175 |
reserveloop => \@reservedata, |
200 |
"BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, |
176 |
"BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, |
201 |
HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL, |
177 |
HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL, |