@@ -, +, @@
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,
--