Bug 12812: Longoverdue.pl --mark-returned doesn't return items
authorKyle M Hall <kyle@bywatetsolutions.com>
Thu, 8 Feb 2018 11:39:39 +0000 (06:39 -0500)
committerFridolin Somers <fridolin.somers@biblibre.com>
Tue, 10 Apr 2018 07:31:26 +0000 (09:31 +0200)
The longoverdue.pl option --mark-returned doesn't work unless the
--charge option is used as well.

Test Plan:
1) Run long overdue with --mark-returned and not --charge,
   note your items are marked lost but not returned
2) Apply this patch
3) Repeat step 1, the items should now get returned!

Tested with (for example):
misc/cronjobs/longoverdue.pl --lost 10=1 --mark-returned --verbose
--confirm

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit 93c5c8e4c85ed3330184de2c6ea06ab73803656b)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>

misc/cronjobs/longoverdue.pl

index a0907a2..23fe27a 100755 (executable)
@@ -308,7 +308,12 @@ foreach my $startrange (sort keys %$lost) {
             printf ("Due %s: item %5s from borrower %5s to lost: %s\n", $row->{date_due}, $row->{itemnumber}, $row->{borrowernumber}, $lostvalue) if($verbose);
             if($confirm) {
                 ModItem({ itemlost => $lostvalue }, $row->{'biblionumber'}, $row->{'itemnumber'});
-                LostItem($row->{'itemnumber'}, $mark_returned) if( $charge && $charge eq $lostvalue);
+                if ( $charge && $charge eq $lostvalue ) {
+                    LostItem( $row->{'itemnumber'}, $mark_returned );
+                } elsif ( $mark_returned ) {
+                    my $patron = Koha::Patrons->find( $row->{borrowernumber} );
+                    MarkIssueReturned($row->{borrowernumber},$row->{itemnumber},undef,undef,$patron->privacy)
+                }
             }
             $count++;
         }