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 136-142
if ( $run_report ) {
Link Here
|
136 |
$sqldatewhere |
123 |
$sqldatewhere |
137 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber) |
124 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = items.itemnumber) |
138 |
AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL) |
125 |
AND items.itemnumber NOT IN (SELECT itemnumber FROM branchtransfers where datearrived IS NULL) |
139 |
AND items.itemnumber NOT IN (select itemnumber FROM reserves where found='W') |
126 |
AND items.itemnumber NOT IN (select itemnumber FROM reserves where found IS NOT NULL) |
140 |
AND issues.itemnumber IS NULL |
127 |
AND issues.itemnumber IS NULL |
141 |
AND reserves.priority <> 0 |
128 |
AND reserves.priority <> 0 |
142 |
AND reserves.suspend = 0 |
129 |
AND reserves.suspend = 0 |
Lines 146-205
if ( $run_report ) {
Link Here
|
146 |
# multiple patrons have a hold on an item |
133 |
# multiple patrons have a hold on an item |
147 |
|
134 |
|
148 |
|
135 |
|
149 |
if (C4::Context->preference('IndependentBranches')){ |
136 |
if (C4::Context->preference('IndependentBranches')){ |
150 |
$strsth .= " AND items.holdingbranch=? "; |
137 |
$strsth .= " AND items.holdingbranch=? "; |
151 |
push @query_params, C4::Context->userenv->{'branch'}; |
138 |
push @query_params, C4::Context->userenv->{'branch'}; |
152 |
} |
139 |
} |
153 |
$strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title "; |
140 |
$strsth .= " GROUP BY reserves.biblionumber ORDER BY biblio.title "; |
154 |
|
141 |
|
155 |
my $sth = $dbh->prepare($strsth); |
142 |
my $sth = $dbh->prepare($strsth); |
156 |
$sth->execute(@query_params); |
143 |
$sth->execute(@query_params); |
157 |
|
144 |
|
158 |
while ( my $data = $sth->fetchrow_hashref ) { |
145 |
while ( my $data = $sth->fetchrow_hashref ) { |
159 |
my $record = Koha::Biblios->find($data->{biblionumber}); |
146 |
my $record = Koha::Biblios->find($data->{biblionumber}); |
160 |
if ($record){ |
147 |
if ($record){ |
161 |
$data->{subtitle} = [ $record->subtitles ]; |
148 |
$data->{subtitle} = [ $record->subtitles ]; |
162 |
} |
|
|
163 |
push( |
164 |
@reservedata, |
165 |
{ |
166 |
reservedate => $data->{l_reservedate}, |
167 |
priority => $data->{priority}, |
168 |
firstname => $data->{firstname} || '', |
169 |
surname => $data->{surname}, |
170 |
title => $data->{title}, |
171 |
subtitle => $data->{subtitle}, |
172 |
author => $data->{author}, |
173 |
borrowernumber => $data->{borrowernumber}, |
174 |
itemnum => $data->{itemnumber}, |
175 |
phone => $data->{phone}, |
176 |
email => $data->{email}, |
177 |
biblionumber => $data->{biblionumber}, |
178 |
statusw => ( $data->{found} eq "W" ), |
179 |
statusf => ( $data->{found} eq "F" ), |
180 |
holdingbranches => [split('\|', $data->{l_holdingbranch})],, |
181 |
branch => $data->{l_branch}, |
182 |
itemcallnumber => $data->{l_itemcallnumber}, |
183 |
enumchron => $data->{l_enumchron}, |
184 |
copyno => $data->{l_copynumber}, |
185 |
notificationdate=> $data->{notificationdate}, |
186 |
reminderdate => $data->{reminderdate}, |
187 |
count => $data->{icount}, |
188 |
rcount => $data->{rcount}, |
189 |
pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, |
190 |
itypes => [split('\|', $data->{l_itype})], |
191 |
locations => [split('\|', $data->{l_location})], |
192 |
} |
193 |
); |
194 |
} |
149 |
} |
195 |
$sth->finish; |
150 |
push( |
|
|
151 |
@reservedata, { |
152 |
reservedate => $data->{l_reservedate}, |
153 |
firstname => $data->{firstname} || '', |
154 |
surname => $data->{surname}, |
155 |
title => $data->{title}, |
156 |
subtitle => $data->{subtitle}, |
157 |
author => $data->{author}, |
158 |
borrowernumber => $data->{borrowernumber}, |
159 |
biblionumber => $data->{biblionumber}, |
160 |
holdingbranches => [split('\|', $data->{l_holdingbranch})], |
161 |
branch => $data->{l_branch}, |
162 |
itemcallnumber => $data->{l_itemcallnumber}, |
163 |
enumchron => $data->{l_enumchron}, |
164 |
copyno => $data->{l_copynumber}, |
165 |
count => $data->{icount}, |
166 |
rcount => $data->{rcount}, |
167 |
pullcount => $data->{icount} <= $data->{rcount} ? $data->{icount} : $data->{rcount}, |
168 |
itypes => [split('\|', $data->{l_itype})], |
169 |
locations => [split('\|', $data->{l_location})], |
170 |
} |
171 |
); |
196 |
} |
172 |
} |
|
|
173 |
$sth->finish; |
197 |
|
174 |
|
198 |
$template->param( |
175 |
$template->param( |
199 |
todaysdate => $today, |
176 |
todaysdate => $today, |
200 |
from => $startdate, |
177 |
from => $startdate, |
201 |
to => $enddate, |
178 |
to => $enddate, |
202 |
run_report => $run_report, |
|
|
203 |
reserveloop => \@reservedata, |
179 |
reserveloop => \@reservedata, |
204 |
"BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, |
180 |
"BiblioDefaultView".C4::Context->preference("BiblioDefaultView") => 1, |
205 |
HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL, |
181 |
HoldsToPullStartDate => C4::Context->preference('HoldsToPullStartDate') || PULL_INTERVAL, |