bug 614150: bail out on ACTOR_USER_NOT_FOUND
authorgmc <gmc@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 6 Aug 2010 01:21:31 +0000 (01:21 +0000)
committergmc <gmc@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Fri, 6 Aug 2010 01:21:31 +0000 (01:21 +0000)
This fixes a bug where uploading an offline checkout
that refers to a missing patron returns an INTERNAL_SERVER_ERROR
instead of ACTOR_USER_NOT_FOUND.  More generally, this avoids
an exception in case case where a circ operation is made
without checking the existence of the patron record beforehand.

mk_env could use a better name, too.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
git-svn-id: svn://svn.open-ils.org/ILS/trunk@17113 dcc99617-32d9-48b4-a31d-7c20da2025e4

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

index a8aca9f..de040e3 100644 (file)
@@ -677,15 +677,17 @@ sub mk_env {
        };
 
        if( $self->patron_id ) {
-               $patron = $e->retrieve_actor_user([$self->patron_id, $flesh]) or return $e->event;
+               $patron = $e->retrieve_actor_user([$self->patron_id, $flesh])
+                       or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND'));
 
        } elsif( $self->patron_barcode ) {
 
-               my $card = $e->search_actor_card( 
-                       {barcode => $self->patron_barcode})->[0] or return $e->event;
+               # note: throwing ACTOR_USER_NOT_FOUND instead of ACTOR_CARD_NOT_FOUND is intentional
+               my $card = $e->search_actor_card({barcode => $self->patron_barcode})->[0] 
+                       or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND'));
 
-               $patron = $e->search_actor_user([ 
-                       {card => $card->id}, $flesh])->[0] or return $e->event;
+               $patron = $e->search_actor_user([{card => $card->id}, $flesh])->[0]
+                       or return $self->bail_on_events(OpenILS::Event->new('ACTOR_USER_NOT_FOUND'));
 
        } else {
                if( my $copy = $self->copy ) {