From 53923cbd025c163e45680c6fc985f2981e438dae Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Tue, 29 Jul 2014 12:39:15 -0400 Subject: [PATCH] Bug 11872 - Lost overdue items should not generate fines An item can be marked as lost by longoverdue.pl, but left checked out to the patron. In this case, the item will continue to accrue fines. Test Plan: 1) Check out an item and back date it so it is overdue and should generate fines. 2) Mark the item as lost by either using longoverdue.pl, or just by setting itemlost to 1 by directly accessing the database 3) Run fines.pl 4) Note the overdue generated a fine 5) Repeat steps 1-2 6) Apply this patch 7) Run fines.pl 8) Note a fine was not generated Signed-off-by: Jonathan Druart Signed-off-by: Martin Renvoize Signed-off-by: Tomas Cohen Arazi --- C4/Overdues.pm | 4 ++-- misc/cronjobs/fines.pl | 2 ++ misc/cronjobs/staticfines.pl | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/C4/Overdues.pm b/C4/Overdues.pm index 185584fa80..1797923702 100644 --- a/C4/Overdues.pm +++ b/C4/Overdues.pm @@ -109,14 +109,14 @@ sub Getoverdues { my $statement; if ( C4::Context->preference('item-level_itypes') ) { $statement = " - SELECT issues.*, items.itype as itemtype, items.homebranch, items.barcode + SELECT issues.*, items.itype as itemtype, items.homebranch, items.barcode, items.itemlost FROM issues LEFT JOIN items USING (itemnumber) WHERE date_due < NOW() "; } else { $statement = " - SELECT issues.*, biblioitems.itemtype, items.itype, items.homebranch, items.barcode + SELECT issues.*, biblioitems.itemtype, items.itype, items.homebranch, items.barcode, items.itemlost FROM issues LEFT JOIN items USING (itemnumber) LEFT JOIN biblioitems USING (biblioitemnumber) diff --git a/misc/cronjobs/fines.pl b/misc/cronjobs/fines.pl index 02bde14bf1..38c344a330 100755 --- a/misc/cronjobs/fines.pl +++ b/misc/cronjobs/fines.pl @@ -95,6 +95,8 @@ if ($filename) { my $counted = 0; my $overdues = Getoverdues(); for my $overdue ( @{$overdues} ) { + next if $overdue->{itemlost}; + if ( !defined $overdue->{borrowernumber} ) { carp "ERROR in Getoverdues : issues.borrowernumber IS NULL. Repair 'issues' table now! Skipping record.\n"; diff --git a/misc/cronjobs/staticfines.pl b/misc/cronjobs/staticfines.pl index 2520fc5841..d8d406d4a6 100755 --- a/misc/cronjobs/staticfines.pl +++ b/misc/cronjobs/staticfines.pl @@ -138,6 +138,7 @@ my ($tyear, $tmonth, $tday) = split( /-/, $today_iso ); $today_days = Date_to_Days( $tyear, $tmonth, $tday ); for ( my $i = 0 ; $i < scalar(@$data) ; $i++ ) { + next if $data->[$i]->{'itemlost'}; my $datedue; my $datedue_days; eval { -- 2.39.5