@@ -, +, @@ shelving location on issue. --- C4/Circulation.pm | 5 +++++ C4/Items.pm | 21 +++++++++++++++++ .../en/modules/admin/preferences/circulation.pref | 6 +++++ t/db_dependent/Circulation/issue.t | 26 +++++++++++++++++++++- 4 files changed, 57 insertions(+), 1 deletion(-) --- a/C4/Circulation.pm +++ a/C4/Circulation.pm @@ -1393,6 +1393,11 @@ sub AddIssue { } } + if ( C4::Context->preference('UpdateItemLocationOnCheckout')) { + # UpdateItemLocationOnCheckout is on, set the value of the shelving location (items.location) to blank upon checkout + BlankShelvingLocation( $item->{itemnumber}); + } + ModItem( { issues => $item->{'issues'}, --- a/C4/Items.pm +++ a/C4/Items.pm @@ -49,6 +49,7 @@ BEGIN { MoveItemFromBiblio GetLastAcquisitions CartToShelf + BlankShelvingLocation GetAnalyticsCount SearchItemsByField SearchItems @@ -184,6 +185,26 @@ sub CartToShelf { } } +=head2 BlankShelvingLocation + + BlankShelvingLocation($itemnumber); + +Set the value of the shelving location to blank when an item is issued or returned. + +This is called by C4::Circulation->AddIssue if the BlankItemLocationOnCheckout syspref is enabled + +=cut + +sub BlankShelvingLocation { + my ($itemnumber) = @_; + unless ($itemnumber) { + croak "Failed BlankShelvingLocation() - no itemnumber supplied"; + } + my $item = GetItem($itemnumber); + $item->{'location'} = ''; + ModItem($item, undef, $itemnumber); +} + =head2 AddItemFromMarc my ($biblionumber, $biblioitemnumber, $itemnumber) --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref +++ a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref @@ -512,6 +512,12 @@ Circulation: -
**Use of an _ALL_ rule will override/ignore any other values** -
Each pair of values should be on a separate line. - + - pref: UpdateItemLocationOnCheckout + choices: + yes: Blank + no: "Don't blank" + - Blank the 952$c (shelving location) field of item when it is issued. + - - pref: UpdateNotForLoanStatusOnCheckin type: textarea class: code --- a/t/db_dependent/Circulation/issue.t +++ a/t/db_dependent/Circulation/issue.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 44; +use Test::More tests => 46; use DateTime::Duration; use t::lib::Mocks; @@ -420,7 +420,31 @@ ok( $item2->{location} eq '' , q{UpdateItemLocationOnCheckin updates location va ok( $item2->{permanent_location} eq '' , q{UpdateItemLocationOnCheckin does not update permanent_location from '' with setting "PROC: _PERM_" } ); +my $itemnumber3; +($biblionumber, $biblioitemnumber, $itemnumber3) = C4::Items::AddItem( + { + barcode => 'barcode_5', + itemcallnumber => 'callnumber5', + homebranch => $branchcode_1, + holdingbranch => $branchcode_1, + location => 'CART', + itype => $itemtype + }, + $biblionumber +); + +#BlankItemLocationOnCheckout +t::lib::Mocks::mock_preference('UpdateItemLocationOnCheckout', 0); +AddIssue($borrower_1, 'barcode_5', $daysago10, 0 , $today, 0); +my $item3 = GetItem($itemnumber3); +ok($item3->{location} eq 'CART', q{UpdateItemLocationOnCheckout does not update item shelving location value from 'CART' to '' when not enabled} ); +t::lib::Mocks::mock_preference('UpdateItemLocationOnCheckout', 1); +if (C4::Context->preference('UpdateItemLocationOnCheckout') ) { + BlankShelvingLocation($itemnumber3); +} +$item3 = GetItem($itemnumber3); +ok($item3->{location} eq '', q{UpdateItemLocationOnCheckout updates item shelving location value from 'CART' to '' when enabled} ); # Bug 14640 - Cancel the hold on checking out if asked my $reserve_id = AddReserve($branchcode_1, $borrower_id1, $biblionumber, --