@@ -, +, @@ according to manual to a different location. --- C4/Circulation.pm | 12 +++++++++ circ/returns.pl | 8 ------ t/db_dependent/Circulation/Returns.t | 50 ++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 8 deletions(-) create mode 100644 t/db_dependent/Circulation/Returns.t --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -1774,6 +1774,18 @@ sub AddReturn { } my $item = GetItem($itemnumber) or die "GetItem($itemnumber) failed"; + + if ( $item->{'location'} eq 'PROC' ) { + if ( C4::Context->preference("InProcessingToShelvingCart") ) { + $item->{'location'} = 'CART'; + } + else { + $item->{location} = $item->{permanent_location}; + } + + ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} ); + } + # full item data, but no borrowernumber or checkout info (no issue) # we know GetItem should work because GetItemnumberFromBarcode worked my $hbr = GetBranchItemRule($item->{'homebranch'}, $item->{'itype'})->{'returnbranch'} || "homebranch"; --- a/circ/returns.pl +++ a/circ/returns.pl @@ -237,14 +237,6 @@ if ($barcode) { $barcode = barcodedecode($barcode) if C4::Context->preference('itemBarcodeInputFilter'); $itemnumber = GetItemnumberFromBarcode($barcode); - if ( C4::Context->preference("InProcessingToShelvingCart") ) { - my $item = GetItem( $itemnumber ); - if ( $item->{'location'} eq 'PROC' ) { - $item->{'location'} = 'CART'; - ModItem( $item, $item->{'biblionumber'}, $item->{'itemnumber'} ); - } - } - # # save the return # --- a/t/db_dependent/Circulation/Returns.t +++ a/t/db_dependent/Circulation/Returns.t @@ -0,0 +1,50 @@ +use Modern::Perl; +use Test::More tests => 2; + +use C4::Biblio; +use C4::Circulation; +use C4::Items; +use C4::Members; +use Koha::DateUtils; + +use MARC::Record; + +*C4::Context::userenv = \&Mock_userenv; + +my $dbh = C4::Context->dbh; +$dbh->{AutoCommit} = 0; +$dbh->{RaiseError} = 1; + +my $record = MARC::Record->new(); +my ( $biblionumber, $biblioitemnumber ) = AddBiblio( $record, '' ); + +my ( undef, undef, $itemnumber ) = AddItem( + { + homebranch => 'CPL', + holdingbranch => 'CPL', + barcode => 'i_dont_exist', + location => 'PROC', + permanent_location => 'TEST' + }, + $biblionumber +); + +my $item; + +C4::Context->set_preference( "InProcessingToShelvingCart", 1 ); +AddReturn( 'i_dont_exist', 'CPL' ); +$item = GetItem($itemnumber); +is( $item->{location}, 'CART', "InProcessingToShelvingCart functions as intended" ); + +$item->{location} = 'PROC'; +ModItem( $item, undef, $itemnumber ); + +C4::Context->set_preference( "InProcessingToShelvingCart", 0 ); +AddReturn( 'i_dont_exist', 'CPL' ); +$item = GetItem($itemnumber); +is( $item->{location}, 'TEST', "InProcessingToShelvingCart functions as intended" ); + +# C4::Context->userenv +sub Mock_userenv { + return { branch => 'CPL' }; +} --