From: erickson Date: Mon, 22 Feb 2010 14:19:44 +0000 (+0000) Subject: keep in-db circ consistent with script circs WRT dissallowing checkouts and renewals... X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=96880a5f422e918ce8e4043c5f1ae8a86f864c48;p=Evergreen.git keep in-db circ consistent with script circs WRT dissallowing checkouts and renewals for inactive patrons, inactive cards, and expired patrons git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_6_0@15609 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm index e76901f5dc..d90c9266a5 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Circ/Circulate.pm @@ -550,16 +550,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 ) { @@ -567,7 +572,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; } } @@ -575,6 +580,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 ) ; + } } # --------------------------------------------------------------------------