keep in-db circ consistent with script circs WRT dissallowing checkouts and renewals...
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 22 Feb 2010 14:18:21 +0000 (14:18 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 22 Feb 2010 14:18:21 +0000 (14:18 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@15607 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm

index 06ae061..6f64625 100644 (file)
@@ -669,16 +669,21 @@ sub mk_env {
     # Grab the patron
     # --------------------------------------------------------------------------
     my $patron;
+       my $flesh = {
+               flesh => 1,
+               flesh_fields => {au => [ qw/ card / ]}
+       };
+
        if( $self->patron_id ) {
-               $patron = $e->retrieve_actor_user($self->patron_id) or return $e->event;
+               $patron = $e->retrieve_actor_user([$self->patron_id, $flesh]) or return $e->event;
 
        } elsif( $self->patron_barcode ) {
 
                my $card = $e->search_actor_card( 
                        {barcode => $self->patron_barcode})->[0] or return $e->event;
 
-               $patron = $e->search_actor_user( 
-                       {card => $card->id})->[0] or return $e->event;
+               $patron = $e->search_actor_user([ 
+                       {card => $card->id}, $flesh])->[0] or return $e->event;
 
        } else {
                if( my $copy = $self->copy ) {
@@ -686,7 +691,7 @@ sub mk_env {
                                {target_copy => $copy->id, checkin_time => undef});
 
                        if( my $circ = $circs->[0] ) {
-                               $patron = $e->retrieve_actor_user($circ->usr)
+                               $patron = $e->retrieve_actor_user([$circ->usr, $flesh])
                                        or return $e->event;
                        }
                }
@@ -694,6 +699,23 @@ sub mk_env {
 
     return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND'))
         unless $self->patron($patron) or $self->is_checkin;
+
+    unless($self->is_checkin) {
+
+        # Check for inactivity and patron reg. expiration
+
+        $self->bail_on_events(OpenILS::Event->new('PATRON_INACTIVE'))
+                       unless $U->is_true($patron->active);
+       
+               $self->bail_on_events(OpenILS::Event->new('PATRON_CARD_INACTIVE'))
+                       unless $U->is_true($patron->card->active);
+       
+               my $expire = DateTime::Format::ISO8601->new->parse_datetime(
+                       cleanse_ISO8601($patron->expire_date));
+       
+               $self->bail_on_events(OpenILS::Event->new('PATRON_ACCOUNT_EXPIRED'))
+                       if( CORE::time > $expire->epoch ) ;
+    }
 }
 
 # --------------------------------------------------------------------------