Bug 17755: Introduce Koha::Object::Limit::Library
[srvgit] / Koha / Hold.pm
index 707622d..ba75a52 100644 (file)
@@ -20,11 +20,13 @@ package Koha::Hold;
 use Modern::Perl;
 
 use Carp;
+use Data::Dumper qw(Dumper);
 
 use C4::Context qw(preference);
+use C4::Log;
 
 use Koha::DateUtils qw(dt_from_string);
-use Koha::Borrowers;
+use Koha::Patrons;
 use Koha::Biblios;
 use Koha::Items;
 use Koha::Libraries;
@@ -50,18 +52,21 @@ my $hold = $hold->suspend_hold( $suspend_until_dt );
 sub suspend_hold {
     my ( $self, $dt ) = @_;
 
+    $dt = $dt ? $dt->clone()->truncate( to => 'day' ) : undef;
+
     if ( $self->is_waiting ) {    # We can't suspend waiting holds
         carp "Unable to suspend waiting hold!";
         return $self;
     }
 
-    $dt ||= undef;
-
     $self->suspend(1);
     $self->suspend_until( $dt );
 
     $self->store();
 
+    logaction( 'HOLDS', 'SUSPEND', $self->reserve_id, Dumper($self->unblessed) )
+        if C4::Context->preference('HoldsLog');
+
     return $self;
 }
 
@@ -79,9 +84,29 @@ sub resume {
 
     $self->store();
 
+    logaction( 'HOLDS', 'RESUME', $self->reserve_id, Dumper($self->unblessed) )
+        if C4::Context->preference('HoldsLog');
+
     return $self;
 }
 
+=head3 delete
+
+$hold->delete();
+
+=cut
+
+sub delete {
+    my ( $self ) = @_;
+
+    my $deleted = $self->SUPER::delete($self);
+
+    logaction( 'HOLDS', 'DELETE', $self->reserve_id, Dumper($self->unblessed) )
+        if C4::Context->preference('HoldsLog');
+
+    return $deleted;
+}
+
 =head3 waiting_expires_on
 
 Returns a DateTime for the date a waiting holds expires on.
@@ -223,23 +248,35 @@ sub branch {
 
 =head3 borrower
 
-Returns the related Koha::Borrower object for this Hold
+Returns the related Koha::Patron object for this Hold
 
 =cut
 
 sub borrower {
     my ($self) = @_;
 
-    $self->{_borrower} ||= Koha::Borrowers->find( $self->borrowernumber() );
+    $self->{_borrower} ||= Koha::Patrons->find( $self->borrowernumber() );
 
     return $self->{_borrower};
 }
 
+=head3 is_suspended
+
+my $bool = $hold->is_suspended();
+
+=cut
+
+sub is_suspended {
+    my ( $self ) = @_;
+
+    return $self->suspend();
+}
+
 =head3 type
 
 =cut
 
-sub type {
+sub _type {
     return 'Reserve';
 }