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