[Koha-patches] [PATCH] Bug 10452 - AllowHoldsOnDamagedItems should control using damaged items to fulfill holds
Srdjan
srdjan at catalyst.net.nz
Fri Jul 19 07:06:23 CEST 2013
From: Kyle M Hall <kyle at bywatersolutions.com>
AllowHoldsOnDamagedItems will stop item-specific holds from being placed
on damaged items, but does not stop Koha from using damaged items to
fill holds. This seems like incorrect behavior.
Test Plan:
1) Set 'AllowHoldsOnDamagedItems' to "Don't Allow"
2) Pick an item, set it to damaged
3) Place a bib-level hold on this item's record
4) Scan the item though the returns system
5) Koha will ask to use this item to fill the hold, click "ignore"
6) Apply this patch
7) Repeat step 4
8) Koha will not ask to use this item to fill the hold
Signed-off-by: Srdjan <srdjan at catalyst.net.nz>
---
C4/Reserves.pm | 26 ++++++++++++++--------
.../en/modules/admin/preferences/circulation.pref | 2 +-
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/C4/Reserves.pm b/C4/Reserves.pm
index 5ff12e4..b5336f7 100644
--- a/C4/Reserves.pm
+++ b/C4/Reserves.pm
@@ -421,13 +421,17 @@ sub CanItemBeReserved{
my $dbh = C4::Context->dbh;
my $allowedreserves = 0;
- my $controlbranch = C4::Context->preference('ReservesControlBranch');
- my $itype = C4::Context->preference('item-level_itypes') ? "itype" : "itemtype";
-
# we retrieve borrowers and items informations #
- my $item = GetItem($itemnumber);
+ my $item = GetItem($itemnumber);
+
+ # If an item is damaged and we don't allow holds on damaged items, we can stop right here
+ return 0 if ( $item->{damaged} && !C4::Context->preference('AllowHoldsOnDamagedItems') );
+
my $borrower = C4::Members::GetMember('borrowernumber'=>$borrowernumber);
+ my $controlbranch = C4::Context->preference('ReservesControlBranch');
+ my $itype = C4::Context->preference('item-level_itypes') ? "itype" : "itemtype";
+
# we retrieve user rights on this itemtype and branchcode
my $sth = $dbh->prepare("SELECT categorycode, itemtype, branchcode, reservesallowed
FROM issuingrules
@@ -809,7 +813,8 @@ sub CheckReserves {
items.biblioitemnumber,
itemtypes.notforloan,
items.notforloan AS itemnotforloan,
- items.itemnumber
+ items.itemnumber,
+ items.damaged
FROM items
LEFT JOIN biblioitems ON items.biblioitemnumber = biblioitems.biblioitemnumber
LEFT JOIN itemtypes ON items.itype = itemtypes.itemtype
@@ -821,7 +826,8 @@ sub CheckReserves {
items.biblioitemnumber,
itemtypes.notforloan,
items.notforloan AS itemnotforloan,
- items.itemnumber
+ items.itemnumber,
+ items.damaged
FROM items
LEFT JOIN biblioitems ON items.biblioitemnumber = biblioitems.biblioitemnumber
LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype
@@ -837,13 +843,15 @@ sub CheckReserves {
$sth->execute($barcode);
}
# note: we get the itemnumber because we might have started w/ just the barcode. Now we know for sure we have it.
- my ( $biblio, $bibitem, $notforloan_per_itemtype, $notforloan_per_item, $itemnumber ) = $sth->fetchrow_array;
+ my ( $biblio, $bibitem, $notforloan_per_itemtype, $notforloan_per_item, $itemnumber, $damaged ) = $sth->fetchrow_array;
+
+ return if ( $damaged && !C4::Context->preference('AllowHoldsOnDamagedItems') );
- return ( '' ) unless $itemnumber; # bail if we got nothing.
+ return unless $itemnumber; # bail if we got nothing.
# if item is not for loan it cannot be reserved either.....
# execpt where items.notforloan < 0 : This indicates the item is holdable.
- return ( '' ) if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype;
+ return if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype;
# Find this item in the reserves
my @reserves = _Findgroupreserve( $bibitem, $biblio, $itemnumber );
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
index c286ed1..a228efe 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/circulation.pref
@@ -344,7 +344,7 @@ Circulation:
choices:
yes: Allow
no: "Don't allow"
- - hold requests to be placed on damaged items.
+ - hold requests to be placed on and filled by damaged items.
-
- pref: AllowOnShelfHolds
choices:
--
1.8.1.2
More information about the Koha-patches
mailing list