Bug 8455 - Check ins processed through "Check Out" tab of the Patron Record ignore...
authorDavid Cook <dcook@prosentient.com.au>
Tue, 17 Jul 2012 08:30:13 +0000 (18:30 +1000)
committerPaul Poulain <paul.poulain@biblibre.com>
Thu, 2 Aug 2012 14:44:52 +0000 (16:44 +0200)
If you check-in an item through the "Check Out" tab of the Patron Record, the return/check-in ignores the "InProcessingToShelvingCart" and "ReturnToShelvingCart" circulation system preferences. Or rather, there just isn't any logic to handle them in the renewscript.pl file.

I'm pretty much just bringing the code straight across from returns.pl, although some minor changes need to be made due to context.

Both system preferences are important to include, since you can check-out an in processing item to a patron. While a regular check-in will clear the in processing status, a check-in through the Patron module will cause the item to have its status returned to "In Processing" rather than going to "Shelving Cart", if the preference is set, of course.

To test the scenario, turn on one of (or both of) these settings and try checking books in through the Circulation module and the Patron module.

Before the patch, you will see that only the Circulation module will change the shelving location.

After the patch, you should see identical behaviour.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
http://bugs.koha-community.org/show_bug.cgi?id=7189

reserve/renewscript.pl

index ad03d88..30d8256 100755 (executable)
@@ -25,6 +25,8 @@ use strict;
 use warnings;
 use CGI;
 use C4::Circulation;
+use C4::Context;
+use C4::Items;
 use C4::Auth;
 use URI::Escape;
 use Koha::DateUtils;
@@ -91,6 +93,26 @@ foreach my $itemno (@data) {
 my $failedreturn = q{};
 foreach my $barcode (@barcodes) {
     # check status before renewing issue
+
+    #System Preference Handling During Check-in In Patron Module
+    my $itemnumber;
+    $itemnumber = GetItemnumberFromBarcode($barcode);
+    if ($itemnumber) {
+        if ( C4::Context->preference("InProcessingToShelvingCart") ) {
+            my $item = GetItem( $itemnumber );
+            if ( $item->{'location'} eq 'PROC' ) {
+                $item->{'location'} = 'CART';
+                ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} );
+            }
+        }
+
+        if ( C4::Context->preference("ReturnToShelvingCart") ) {
+            my $item = GetItem( $itemnumber );
+            $item->{'location'} = 'CART';
+            ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} );
+        }
+    }
+
    my ( $returned, $messages, $issueinformation, $borrower ) = 
     AddReturn($barcode, $branch, $exemptfine);
    $failedreturn.="&failedreturn=$barcode" unless ($returned);