Holds are now shifted and reordered by date placed.
---
 C4/Reserves.pm       |   32 ++++++++++++++++++++++++++++++++
 cataloguing/merge.pl |    5 +++++
 2 files changed, 37 insertions(+), 0 deletions(-)

diff --git a/C4/Reserves.pm b/C4/Reserves.pm
index 8373840..58ddbfe 100644
--- a/C4/Reserves.pm
+++ b/C4/Reserves.pm
@@ -3,6 +3,7 @@ package C4::Reserves;
 # Copyright 2000-2002 Katipo Communications
 #           2006 SAN Ouest Provence
 #           2007-2010 BibLibre Paul POULAIN
+#           2011 Catalyst IT
 #
 # This file is part of Koha.
 #
@@ -121,6 +122,7 @@ BEGIN {
         &AlterPriority
         &ToggleLowestPriority
     );
+    @EXPORT_OK = qw( MergeHolds );
 }    
 
 =head2 AddReserve
@@ -1794,6 +1796,36 @@ sub _ShiftPriorityByDateAndPriority {
     return $new_priority;  # so the caller knows what priority they wind up 
receiving
 }
 
+=head2 MergeHolds
+
+  MergeHolds($dbh,$to_biblio, $from_biblio);
+
+This shifts the holds from C<$from_biblio> to C<$to_biblio> and reorders them 
by the date they were placed
+
+=cut
+
+sub MergeHolds {
+    my ($dbh,$to_biblio,$from_biblio) = @_;
+    my $sth = $dbh->prepare("SELECT count(*) as reservenumber FROM reserves 
WHERE biblionumber = ?");
+    $sth->execute($from_biblio);
+    if (my $data = $sth->fetchrow_hashref()){ 
+       # holds exist on old record if not we don't need to do anything
+       $sth = $dbh->prepare("UPDATE reserves SET biblionumber = ? WHERE 
biblionumber = ?");
+       $sth->execute($to_biblio,$from_biblio);
+       # Reorder by date
+       $sth = $dbh->prepare("SELECT * FROM reserves WHERE biblionumber = ? 
ORDER BY reservedate ASC");
+       my $upd_sth = $dbh->prepare("UPDATE reserves SET priority = ? WHERE 
biblionumber = ? AND borrowernumber = ? 
+            AND reservedate = ? AND constrainttype = ? AND (itemnumber = ? or 
itemnumber is NULL) ");
+        $sth->execute($to_biblio);
+        my $priority = 1;
+        while (my $reserve = $sth->fetchrow_hashref()){
+           
$upd_sth->execute($priority,$to_biblio,$reserve->{'borrowernumber'},$reserve->{'reservedate'},$reserve->{'constrainttype'},$reserve->{'itemnumber'});
+           $priority++;
+       }
+    }
+}
+
+
 =head1 AUTHOR
 
 Koha Development Team <http://koha-community.org/>
diff --git a/cataloguing/merge.pl b/cataloguing/merge.pl
index cc2d01d..f32991e 100755
--- a/cataloguing/merge.pl
+++ b/cataloguing/merge.pl
@@ -2,6 +2,7 @@
 
 
 # Copyright 2009 BibLibre
+# Parts Copyright Catalyst IT 2011
 #
 # This file is part of Koha.
 #
@@ -26,6 +27,7 @@ use C4::Auth;
 use C4::Items;
 use C4::Biblio;
 use C4::Serials;
+use C4::Reserves qw/MergeHolds/;
 
 my $input = new CGI;
 my @biblionumber = $input->param('biblionumber');
@@ -101,6 +103,8 @@ if ($merge) {
 
     # Deleting the other record
     if (scalar(@errors) == 0) {
+       # Move holds
+       MergeHolds($dbh,$tobiblio,$frombiblio);
        my $error = DelBiblio($frombiblio);
        push @errors, $error if ($error); 
     }
@@ -252,3 +256,4 @@ sub createKey(){
 }
 
 
+    
-- 
1.7.4.1

_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-patches
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/

Reply via email to