[Koha-patches] [[HEAD][reconciliation][replace]] Findgroupreserve update : Factorizing code

Henri-Damien LAURENT henridamien.laurent at biblibre.com
Mon Aug 31 12:23:05 CEST 2009


---
 C4/Reserves.pm |   52 +++++++++-------------------------------------------
 1 files changed, 9 insertions(+), 43 deletions(-)

diff --git a/C4/Reserves.pm b/C4/Reserves.pm
index 11846e7..8fdd6e2 100644
--- a/C4/Reserves.pm
+++ b/C4/Reserves.pm
@@ -1259,8 +1259,8 @@ sub _Findgroupreserve {
     my ( $bibitem, $biblio, $itemnumber ) = @_;
     my $dbh   = C4::Context->dbh;
 
-    # TODO: consolidate at least the SELECT portion of the first 2 queries to a common $select var.
     # check for exact targetted match
+	# This select is valid for both item_level and biblio_level
     my $item_level_target_query = qq/
         SELECT reserves.biblionumber        AS biblionumber,
                reserves.borrowernumber      AS borrowernumber,
@@ -1275,48 +1275,16 @@ sub _Findgroupreserve {
                reserves.itemnumber          AS itemnumber
         FROM reserves
         JOIN biblioitems USING (biblionumber)
-        JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber)
-        WHERE found IS NULL
-        AND priority > 0
-        AND item_level_request = 1
-        AND itemnumber = ?
-    /;
-    my $sth = $dbh->prepare($item_level_target_query);
-    $sth->execute($itemnumber);
-    my @results;
-    if ( my $data = $sth->fetchrow_hashref ) {
-        push( @results, $data );
-    }
-    return @results if @results;
-    
-    # check for title-level targetted match
-    my $title_level_target_query = qq/
-        SELECT reserves.biblionumber        AS biblionumber,
-               reserves.borrowernumber      AS borrowernumber,
-               reserves.reservedate         AS reservedate,
-               reserves.branchcode          AS branchcode,
-               reserves.cancellationdate    AS cancellationdate,
-               reserves.found               AS found,
-               reserves.reservenotes        AS reservenotes,
-               reserves.priority            AS priority,
-               reserves.timestamp           AS timestamp,
-               biblioitems.biblioitemnumber AS biblioitemnumber,
-               reserves.itemnumber          AS itemnumber
-        FROM reserves
-        JOIN biblioitems USING (biblionumber)
         JOIN hold_fill_targets USING (biblionumber, borrowernumber)
         WHERE found IS NULL
         AND priority > 0
-        AND item_level_request = 0
-        AND hold_fill_targets.itemnumber = ?
+        AND holds_fill_targets.itemnumber = ?
+
     /;
-    $sth = $dbh->prepare($title_level_target_query);
+    my $sth = $dbh->prepare($item_level_target_query);
     $sth->execute($itemnumber);
-    @results = ();
-    if ( my $data = $sth->fetchrow_hashref ) {
-        push( @results, $data );
-    }
-    return @results if @results;
+	my $data = $sth->fetchall_arrayref({});
+    return @$data if ($data);
 
     my $query = qq/
         SELECT reserves.biblionumber               AS biblionumber,
@@ -1341,11 +1309,9 @@ sub _Findgroupreserve {
     /;
     $sth = $dbh->prepare($query);
     $sth->execute( $biblio, $bibitem, $itemnumber );
-    @results = ();
-    while ( my $data = $sth->fetchrow_hashref ) {
-        push( @results, $data );
-    }
-    return @results;
+    $data = $sth->fetchall_arrayref({});
+    return @$data if ($data);
+	return undef;
 }
 
 =item _koha_notify_reserve
-- 
1.6.0.4




More information about the Koha-patches mailing list