From f5cbbc67e3a0daec3da5f7422b5fa3bba7eb1729 Mon Sep 17 00:00:00 2001 From: Hammat Wele Date: Thu, 24 Apr 2025 16:13:32 +0000 Subject: [PATCH] Bug 17015: (follow-up) Special update to fix bz39631 with DiscreteCalendar --- misc/cronjobs/longoverdue.pl | 37 +++++++++++------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/misc/cronjobs/longoverdue.pl b/misc/cronjobs/longoverdue.pl index 16bda1bb77..d5232a9cf2 100755 --- a/misc/cronjobs/longoverdue.pl +++ b/misc/cronjobs/longoverdue.pl @@ -351,18 +351,7 @@ sub longoverdue_sth { SELECT items.itemnumber, borrowernumber, date_due, itemlost FROM issues, items WHERE items.itemnumber = issues.itemnumber - "; - if ( !C4::Context->preference('OverdueNoticeCalendar') ) { - $query .= " - AND DATE_SUB(CURDATE(), INTERVAL ? DAY) > date_due - AND DATE_SUB(CURDATE(), INTERVAL ? DAY) <= date_due - "; - } else { - $query .= " - AND TO_DAYS(NOW())-TO_DAYS(issues.date_due) >= 0 - "; - } - $query .= " + AND TO_DAYS(NOW())-TO_DAYS(issues.date_due) >= 0 AND itemlost <> ? $skip_lost_values_sql ORDER BY date_due @@ -482,11 +471,7 @@ foreach my $startrange ( sort keys %$lost ) { $verbose and printf "\nRange %s\nDue %3s - %3s days ago (%s to %s), lost => %s\n", ++$i, $startrange, $endrange, $date2, $date1, $lostvalue; - if ( C4::Context->preference('OverdueNoticeCalendar') ) { - $sth_items->execute($lostvalue); - } else { - $sth_items->execute( $startrange, $endrange, $lostvalue ); - } + $sth_items->execute($lostvalue); $count = 0; ITEM: while ( my $row = $sth_items->fetchrow_hashref ) { my $patron; @@ -513,6 +498,8 @@ foreach my $startrange ( sort keys %$lost ) { } next ITEM unless ( $branches_to_process{$lib} ); } + my $date = dt_from_string(); + my $days_between = $date->delta_days( dt_from_string( $row->{date_due} ) ); if ( C4::Context->preference('OverdueNoticeCalendar') ) { my $lib; if ( $circ_control_pref eq 'PatronLibrary' ) { @@ -520,22 +507,20 @@ foreach my $startrange ( sort keys %$lost ) { $lib = $patron->branchcode(); } elsif ( $circ_control_pref eq 'PickupLibrary' ) { $lib = C4::Context->userenv->{'branch'}; - } else { # ( $circ_control_pref eq 'ItemHomeLibrary' ) + } else { if ( $circ_control_pref eq 'homebranch' ) { $lib = Koha::Items->find( $row->{itemnumber} )->homebranch(); - } else { # ( $circ_control_pref eq 'holdingbranch' ) + } else { $lib = Koha::Items->find( $row->{itemnumber} )->holdingbranch(); } } - my $calendar = Koha::DiscreteCalendar->new({ branchcode => $lib }); - my $date_to_run = dt_from_string(); - my $days_between = $calendar->days_between( dt_from_string( $row->{date_due} ), $date_to_run ); - $days_between = $days_between->in_units('days'); - my $longoverdue_days = C4::Context->preference('DefaultLongOverdueDays'); - if ( $days_between < $longoverdue_days ) { - next; + if ($lib) { + my $calendar = Koha::DiscreteCalendar->new( { branchcode => $lib } ); + $days_between = $calendar->days_between( dt_from_string( $row->{date_due} ), $date ); } } + $days_between = $days_between->in_units('days'); + next ITEM if ( $days_between < $startrange ); if ($filter_itemtypes) { my $it = uc Koha::Items->find( $row->{itemnumber} )->effective_itemtype(); next ITEM unless ( $itemtype_to_process{$it} ); -- 2.34.1