From 227cee59d68e5a643d2d4fc652c24f47f5e11f6c Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Thu, 8 Oct 2009 12:13:13 +0000 Subject: [PATCH] Bug 3701 : BugFix - ReturnToShelvingCart If the ReturnToShelvingCart syspref is on, and something needs to go in transit, the shelving cart setting is overriding the transit. What seems to be happening is this: * Item is checked in, and flagged as needing to go in transit from A to B. * Item is immediately flagged as shelving cart, though. Current display says both shelving cart and in transit. * After the cart-to-shelf script runs, item comes out of transit and shows as being available at the destination library, although it hasn't arrived yet and no one has manually checked it in. Signed-off-by: Jonathan Druart Signed-off-by: Paul Poulain Signed-off-by: Chris Cormack --- C4/Circulation.pm | 3 +++ C4/Items.pm | 38 +++++++++++++++++++++++++++++++++----- circ/returns.pl | 6 ------ 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/C4/Circulation.pm b/C4/Circulation.pm index 39006e92e9..67390550f8 100644 --- a/C4/Circulation.pm +++ b/C4/Circulation.pm @@ -1652,12 +1652,15 @@ sub AddReturn { ); $sth->execute( $item->{'itemnumber'} ); # if we have a reservation with valid transfer, we can set it's status to 'W' + ShelfToCart( $item->{'itemnumber'} ) if ( C4::Context->preference("ReturnToShelvingCart") ); C4::Reserves::ModReserveStatus($item->{'itemnumber'}, 'W'); } else { $messages->{'WrongTransfer'} = $tobranch; $messages->{'WrongTransferItem'} = $item->{'itemnumber'}; } $validTransfert = 1; + } else { + ShelfToCart( $item->{'itemnumber'} ) if ( C4::Context->preference("ReturnToShelvingCart") ); } # fix up the accounts..... diff --git a/C4/Items.pm b/C4/Items.pm index 30de1b3b47..fcf3d6dc31 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -48,7 +48,7 @@ BEGIN { AddItem AddItemBatchFromMarc ModItemFromMarc - Item2Marc + Item2Marc ModItem ModDateLastSeen ModItemTransfer @@ -72,10 +72,12 @@ BEGIN { GetItemnumberFromBarcode GetBarcodeFromItemnumber GetHiddenItemnumbers - DelItemCheck - MoveItemFromBiblio - GetLatestAcquisitions + DelItemCheck + MoveItemFromBiblio + GetLatestAcquisitions + CartToShelf + ShelfToCart GetAnalyticsCount GetItemHolds @@ -190,7 +192,30 @@ sub CartToShelf { } my $item = GetItem($itemnumber); - $item->{location} = $item->{permanent_location}; + if ( $item->{location} eq 'CART' ) { + $item->{location} = $item->{permanent_location}; + ModItem($item, undef, $itemnumber); + } +} + +=head2 ShelfToCart + + ShelfToCart($itemnumber); + +Set the current shelving location of the item +to shelving cart ('CART'). + +=cut + +sub ShelfToCart { + my ( $itemnumber ) = @_; + + unless ( $itemnumber ) { + croak "FAILED ShelfToCart() - no itemnumber supplied"; + } + + my $item = GetItem($itemnumber); + $item->{'location'} = 'CART'; ModItem($item, undef, $itemnumber); } @@ -542,6 +567,9 @@ sub ModItemTransfer { my $dbh = C4::Context->dbh; + # Remove the 'shelving cart' location status if it is being used. + CartToShelf( $itemnumber ) if ( C4::Context->preference("ReturnToShelvingCart") ); + #new entry in branchtransfers.... my $sth = $dbh->prepare( "INSERT INTO branchtransfers (itemnumber, frombranch, datesent, tobranch) diff --git a/circ/returns.pl b/circ/returns.pl index bd60d42978..24672ba4db 100755 --- a/circ/returns.pl +++ b/circ/returns.pl @@ -212,12 +212,6 @@ if ($barcode) { } } - if ( C4::Context->preference("ReturnToShelvingCart") ) { - my $item = GetItem( $itemnumber ); - $item->{'location'} = 'CART'; - ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} ); - } - # # save the return # -- 2.39.5