Koha Bug 3723: Correct return of Institution in Patron Info Resp user/gmcharlt/patron_info_resp_field_order
authorColin Campbell <colin.campbell@ptfs-europe.com>
Wed, 21 Oct 2009 08:54:18 +0000 (09:54 +0100)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 15 May 2013 17:03:53 +0000 (13:03 -0400)
While the comment correctly notes that the order of variable length
fields is not fixed some units expect mandatory fields to
follow the sequence in the protocol definition and fail
parsing otherwise. Moved institution id to its expected
place in the patron information response.

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
Conflicts:

Sip/MsgType.pm

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Sip/MsgType.pm

index abdeec2..37d6eba 100644 (file)
@@ -941,6 +941,8 @@ sub handle_patron_info {
         $resp .= add_count('patron_info/recall_items',  scalar @{$patron->recall_items });
         $resp .= add_count('patron_info/unavail_holds', scalar @{$patron->unavail_holds});
 
+        $resp .= add_field(FID_INST_ID, $server->{ils}->institution);
+
         # while the patron ID we got from the SC is valid, let's
         # use the one returned from the ILS, just in case...
         $resp .= add_field(FID_PATRON_ID, $patron->id);
@@ -1006,19 +1008,18 @@ sub handle_patron_info {
         # no personal name, and is invalid (if we're using 2.00)
         $resp .= 'YYYY' . (' ' x 10) . $lang . Sip::timestamp();
         $resp .= '0000' x 6;
-        $resp .= add_field(FID_PERSONAL_NAME, '');
 
+        $resp .= add_field(FID_INST_ID, $server->{ils}->institution);
         # the patron ID is invalid, but it's a required field, so
         # just echo it back
         $resp .= add_field(FID_PATRON_ID, $fields->{(FID_PATRON_ID)});
+        $resp .= add_field(FID_PERSONAL_NAME, '');
 
         if ($protocol_version >= 2) {
             $resp .= add_field(FID_VALID_PATRON, 'N');
         }
     }
 
-    $resp .= add_field(FID_INST_ID, $server->{ils}->institution);
-
     $self->write_msg($resp);
 
     return(PATRON_INFO);