|
Lines 251-293
Items and holds from other libraries will still be included for the given patron
Link Here
|
| 251 |
=cut |
251 |
=cut |
| 252 |
|
252 |
|
| 253 |
sub GetOverdueIssues { |
253 |
sub GetOverdueIssues { |
| 254 |
my ( $patron_branchcode ) = @_; |
254 |
my ($patron_branchcode) = @_; |
| 255 |
|
255 |
|
| 256 |
my $patron_branchcode_filter = $patron_branchcode ? "AND borrowers.branchcode = '$patron_branchcode'" : q{}; |
256 |
my $patron_branchcode_filter = $patron_branchcode ? "AND borrowers.branchcode = '$patron_branchcode'" : q{}; |
| 257 |
|
257 |
|
| 258 |
my $query = "SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname, |
258 |
my $query = |
|
|
259 |
"SELECT borrowers.borrowernumber, borrowers.cardnumber, borrowers.title as patron_title, borrowers.firstname, borrowers.surname, |
| 259 |
borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, issues.date_due, |
260 |
borrowers.phone, borrowers.email, borrowers.branchcode, biblio.biblionumber, biblio.title, items.barcode, issues.date_due, |
| 260 |
max(overduerules.branchcode) as rulebranch, TO_DAYS(NOW())-TO_DAYS(date_due) as daysoverdue, delay1, delay2, delay3, |
261 |
TO_DAYS(NOW())-TO_DAYS(date_due) as daysoverdue, borrowers.categorycode as categorycode, items.itemtype as itemtype, |
| 261 |
issues.branchcode as site, branches.branchname as site_name |
262 |
issues.branchcode as site, branches.branchname as site_name |
| 262 |
FROM borrowers JOIN issues USING (borrowernumber) |
263 |
FROM borrowers JOIN issues USING (borrowernumber) |
| 263 |
JOIN items USING (itemnumber) |
264 |
JOIN items USING (itemnumber) |
| 264 |
JOIN biblio USING (biblionumber) |
265 |
JOIN biblio USING (biblionumber) |
| 265 |
JOIN branches ON (issues.branchcode = branches.branchcode) |
266 |
JOIN branches ON (issues.branchcode = branches.branchcode) |
| 266 |
JOIN overduerules USING (categorycode) |
267 |
WHERE ( overduerules.branchcode = borrowers.branchcode ) |
| 267 |
JOIN overduerules_transport_types USING ( overduerules_id ) |
|
|
| 268 |
WHERE ( overduerules.branchcode = borrowers.branchcode or overduerules.branchcode = '') |
| 269 |
AND overduerules_transport_types.message_transport_type = 'itiva' |
| 270 |
AND ( (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay1 |
| 271 |
OR (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay2 |
| 272 |
OR (TO_DAYS(NOW())-TO_DAYS(date_due) ) = delay3 ) |
| 273 |
$patron_branchcode_filter |
268 |
$patron_branchcode_filter |
| 274 |
GROUP BY items.itemnumber |
269 |
GROUP BY items.itemnumber |
|
|
270 |
ORDER BY items.itemtype, borrowers.categorycode, branches.branchcode |
| 275 |
"; |
271 |
"; |
| 276 |
my $sth = $dbh->prepare($query); |
272 |
my $sth = $dbh->prepare($query); |
| 277 |
$sth->execute(); |
273 |
$sth->execute(); |
|
|
274 |
|
| 275 |
my @trigger_numbers; |
| 276 |
my $triggers = Koha::CirculationRules->search( |
| 277 |
{ rule_name => { 'like' => 'overdue_%_mtt' }, rule_value => { like => '%itiva%' } } ); |
| 278 |
for my $trigger ( $triggers->all ) { |
| 279 |
my $trigger_number = $trigger->rule_name; |
| 280 |
$trigger_number =~ s/(.*)(\d+)(.*)/$2/; |
| 281 |
push @trigger_numbers, $trigger_number unless grep { $_ == $trigger_number } @trigger_numbers; |
| 282 |
} |
| 283 |
my @rules = map { ( "overdue_$_" . "_delay", "overdue_$_" . "_notice", "overdue_$_" . "_mtt" ) } @trigger_numbers; |
| 284 |
|
| 278 |
my @results; |
285 |
my @results; |
| 279 |
while ( my $issue = $sth->fetchrow_hashref() ) { |
286 |
while ( my $issue = $sth->fetchrow_hashref() ) { |
| 280 |
if ( $issue->{'daysoverdue'} == $issue->{'delay1'} ) { |
287 |
my $effective_rules = Koha::CirculationRules->get_effective_rules( |
| 281 |
$issue->{'level'} = 1; |
288 |
{ |
| 282 |
} elsif ( $issue->{'daysoverdue'} == $issue->{'delay2'} ) { |
289 |
categorycode => $issue->{'categorycode'}, |
| 283 |
$issue->{'level'} = 2; |
290 |
branchcode => $issue->{'branchcode'}, |
| 284 |
} elsif ( $issue->{'daysoverdue'} == $issue->{'delay3'} ) { |
291 |
itemtype => $issue->{'itemtype'}, |
| 285 |
$issue->{'level'} = 3; |
292 |
rules => \@rules |
| 286 |
} else { |
293 |
} |
| 287 |
|
294 |
); |
| 288 |
# this shouldn't ever happen, based our SQL criteria |
295 |
|
|
|
296 |
my $i = 1; |
| 297 |
PERIOD: while (1) { |
| 298 |
last PERIOD if ( !defined( $effective_rules->{ "overdue_$i" . '_delay' } ) ); |
| 299 |
if ( $effective_rules->{ "overdue_$i" . '_mtt' } =~ /itiva/ |
| 300 |
&& $issue->{'daysoverdue'} == $effective_rules->{ "overdue_$i" . '_delay' } ) |
| 301 |
{ |
| 302 |
$issue->{'level'} = $i; |
| 303 |
push @results, $issue; |
| 304 |
} |
| 305 |
$i++; |
| 289 |
} |
306 |
} |
| 290 |
push @results, $issue; |
|
|
| 291 |
} |
307 |
} |
| 292 |
return @results; |
308 |
return @results; |
| 293 |
} |
309 |
} |
| 294 |
- |
|
|