Bug 7016 Followup: Add new GetItemnumberForBiblio subroutine
authorIan Walls <ian.walls@bywatersolutions.com>
Fri, 6 Jan 2012 14:53:49 +0000 (09:53 -0500)
committerPaul Poulain <paul.poulain@biblibre.com>
Wed, 18 Apr 2012 14:48:25 +0000 (16:48 +0200)
Adds a new subroutine in C4::Items, GetItemnumbersForBiblio, which takes a
single biblionumber, and returns an array of all the corresponding itemnumbers.

This patch also replaces the usage of get_itemnumbers_of in C4::Reserves::CanBookBeReserved
with this new subroutine, as the output is more consistent with what we were
lookng for (this is what fixes the bug issue).

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
C4/Items.pm
C4/Reserves.pm

index 4915884..59eaa69 100644 (file)
@@ -70,6 +70,7 @@ BEGIN {
         GetItemsInfo
        GetItemsLocationInfo
        GetHostItemsInfo
+        GetItemnumbersForBiblio
         get_itemnumbers_of
        get_hostitemnumbers_of
         GetItemnumberFromBarcode
@@ -1497,6 +1498,26 @@ sub  GetLastAcquisitions {
        return @results;
 }
 
+=head2 GetItemnumberForBiblio
+
+  my @itemnumbers = GetItemnumbersForBiblio($biblionumber);
+
+Given a single biblionumber, return an array of all the corresponding itemnumbers
+
+=cut
+
+sub GetItemnumbersForBiblio {
+    my $biblionumber = shift;
+    my @items;
+    my $dbh = C4::Context->dbh;
+    my $sth = $dbh->prepare("SELECT itemnumber FROM items WHERE biblionumber = ?");
+    $sth->execute($biblionumber);
+    while (my $result = $sth->fetchrow_hashref) {
+        push @items, $result->{'itemnumber'};
+    }
+    return \@items;
+}
+
 =head2 get_itemnumbers_of
 
   my @itemnumbers_of = get_itemnumbers_of(@biblionumbers);
index f12c23f..2b91567 100644 (file)
@@ -383,7 +383,7 @@ sub GetReservesFromBorrowernumber {
 sub CanBookBeReserved{
     my ($borrowernumber, $biblionumber) = @_;
 
-    my @items = get_itemnumbers_of($biblionumber);
+    my @items = GetItemnumbersForBiblio($biblionumber);
     #get items linked via host records
     my @hostitems = get_hostitemnumbers_of($biblionumber);
     if (@hostitems){