Bug 18276: Remove GetBiblioFromItemNumber - Easy ones
[koha.git] / C4 / SIP / ILS / Transaction / Hold.pm
index a2ca13e..50bc914 100644 (file)
@@ -1,21 +1,17 @@
 #
 # status of a Hold transaction
 
-package ILS::Transaction::Hold;
+package C4::SIP::ILS::Transaction::Hold;
 
-use warnings;
-use strict;
+use Modern::Perl;
 
-use ILS;
-use ILS::Transaction;
+use C4::SIP::ILS::Transaction;
 
 use C4::Reserves;      # AddReserve
 use C4::Members;       # GetMember
-use C4::Biblio;                # GetBiblioFromItemNumber GetBiblioItemByBiblioNumber
-use parent qw(ILS::Transaction);
+use parent qw(C4::SIP::ILS::Transaction);
 
-
-our $VERSION = 3.07.00.049;
+use Koha::Items;
 
 my %fields = (
        expiration_date => 0,
@@ -39,36 +35,35 @@ sub queue_position {
 }
 
 sub do_hold {
-       my $self = shift;
-       unless ($self->{patron}) {
-               $self->screen_msg('do_hold called with undefined patron');
-               $self->ok(0);
-               return $self;
-       }
-       my $borrower = GetMember( 'cardnumber'=>$self->{patron}->id);
-       unless ($borrower) {
-               $self->screen_msg('No borrower matches cardnumber "' . $self->{patron}->id . '".');
-               $self->ok(0);
-               return $self;
-       }
-       my $bib = GetBiblioFromItemNumber(undef, $self->{item}->id);
-       unless ($bib) {
-               $self->screen_msg('No biblio record matches barcode "' . $self->{item}->id . '".');
-               $self->ok(0);
-               return $self;
-       }
-       my $branch = ($self->pickup_location || $self->{patron}->branchcode);
-       unless ($branch) {
-               $self->screen_msg('No branch specified (or found w/ patron).');
-               $self->ok(0);
-               return $self;
-       }
-       my $bibno = $bib->{biblionumber};
-       AddReserve($branch, $borrower->{borrowernumber}, 
-                               $bibno, 'a', GetBiblioItemByBiblioNumber($bibno)) ;
-               # unfortunately no meaningful return value
-       $self->ok(1);
-       return $self;
+    my $self = shift;
+    unless ( $self->{patron} ) {
+        $self->screen_msg('do_hold called with undefined patron');
+        $self->ok(0);
+        return $self;
+    }
+    my $borrower = GetMember( 'cardnumber' => $self->{patron}->id );
+    unless ($borrower) {
+        $self->screen_msg( 'No borrower matches cardnumber "' . $self->{patron}->id . '".' );
+        $self->ok(0);
+        return $self;
+    }
+    my $item = Koha::Items->find({ barcode => $self->{item}->id });
+    unless ($item) {
+        $self->screen_msg( 'No biblio record matches barcode "' . $self->{item}->id . '".' );
+        $self->ok(0);
+        return $self;
+    }
+    my $branch = ( $self->pickup_location || $self->{patron}->branchcode );
+    unless ($branch) {
+        $self->screen_msg('No branch specified (or found w/ patron).');
+        $self->ok(0);
+        return $self;
+    }
+    AddReserve( $branch, $borrower->{borrowernumber}, $item->biblionumber );
+
+    # unfortunately no meaningful return value
+    $self->ok(1);
+    return $self;
 }
 
 sub drop_hold {
@@ -84,11 +79,14 @@ sub drop_hold {
                $self->ok(0);
                return $self;
        }
-       my $bib = GetBiblioFromItemNumber(undef, $self->{item}->id);
-       # FIXME: figure out if it is a item or title hold.  Till then, cancel both.
-       CancelReserve($bib->{biblionumber}, undef, $borrower->{borrowernumber});
-       CancelReserve(undef, $self->{item}->id, $borrower->{borrowernumber});
-               # unfortunately no meaningful return value here either
+    my $item = Koha::Items->find({ barcode => $self->{item}->id });
+
+      CancelReserve({
+            biblionumber   => $item->biblionumber,
+        itemnumber     => $self->{item}->id,
+           borrowernumber => $borrower->{borrowernumber}
+      });
+
        $self->ok(1);
        return $self;
 }
@@ -106,8 +104,8 @@ sub change_hold {
                $self->ok(0);
                return $self;
        }
-       my $bib = GetBiblioFromItemNumber(undef, $self->{item}->id);
-       unless ($bib) {
+    my $item = Koha::Items->find({ barcode => $self->{item}->id });
+    unless ($item) {
                $self->screen_msg('No biblio record matches barcode "' . $self->{item}->id . '".');
                $self->ok(0);
                return $self;
@@ -118,18 +116,11 @@ sub change_hold {
                $self->ok(0);
                return $self;
        }
-       my $bibno = $bib->{biblionumber};
-       ModReserve($bibno, $borrower->{borrowernumber}, $branch, GetBiblioItemByBiblioNumber($bibno));
-               # unfortunately no meaningful return value
-               # ModReserve needs to be fixed to maintain priority by iteself (Feb 2008)
+    ModReserve({ biblionumber => $item->biblionumber, borrowernumber => $borrower->{borrowernumber}, branchcode => $branch });
+
        $self->ok(1);
        return $self;
 }
+
 1;
 __END__
-
-# 11 friggin arguments
-AddReserve($branch,$borrowernumber,$biblionumber,$constraint,$bibitems,$priority,$startdate,$notes,$title,$checkitem,$found)
-
-ModReserve($rank, $biblio, $borrower, $branch , $itemnumber)
-