@@ -, +, @@
location
---
C4/Circulation.pm | 5 ++++
C4/Items.pm | 24 ++++++++++++++++++
.../en/modules/admin/preferences/circulation.pref | 6 +++++
t/db_dependent/Circulation/issue.t | 29 +++++++++++++++++++++-
4 files changed, 63 insertions(+), 1 deletion(-)
--- a/C4/Circulation.pm
+++ a/C4/Circulation.pm
@@ -1450,6 +1450,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_object->itemnumber );
+ }
+
ModItem(
{
issues => $item_object->issues + 1,
--- a/C4/Items.pm
+++ a/C4/Items.pm
@@ -47,6 +47,7 @@ BEGIN {
DelItemCheck
MoveItemFromBiblio
CartToShelf
+ BlankShelvingLocation
GetAnalyticsCount
SearchItemsByField
SearchItems
@@ -140,6 +141,29 @@ 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
@@ -533,6 +533,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 the item when is 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 => 45;
+use Test::More tests => 47;
use DateTime::Duration;
use t::lib::Mocks;
@@ -423,7 +423,34 @@ ok( $item2->location eq '' , q{UpdateItemLocationOnCheckin updates location valu
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,
--