LP1901930 Add some missing SIP fields
authorBill Erickson <berickxx@gmail.com>
Mon, 28 Nov 2022 23:05:18 +0000 (18:05 -0500)
committerBill Erickson <berickxx@gmail.com>
Mon, 28 Nov 2022 23:05:18 +0000 (18:05 -0500)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
Open-ILS/src/perlmods/lib/OpenILS/Application/SIP2.pm

index 85859a2..f7c2a20 100644 (file)
@@ -319,7 +319,7 @@ sub handle_patron_info {
         {PB => $SC->sipymd($patron->dob, 1)},
         {PC => $patron->profile->name},
         {XI => $patron->id},
-        $SC->stat_cat_sip_fields($details->{item})
+        $SC->stat_cat_sip_fields($patron)
     );
 
     $SC->maybe_add_field($response, BD => $details->{patron_address});
@@ -388,11 +388,7 @@ sub patron_response_common_data {
 
         return {
             fixed_fields => [
-                $SC->spacebool(1), # charge denied
-                $SC->spacebool(1), # renew denied
-                $SC->spacebool(1), # recall denied
-                $SC->spacebool(1), # holds denied
-                split('', (' ' x 10)),
+                ' ' x 14,
                 '000', # language
                 $SC->sipdate
             ],
@@ -407,23 +403,30 @@ sub patron_response_common_data {
     }
 
     my $patron = $details->{patron};
+
+    # SIP/JSON clients treat the patron status string as a single
+    # fixed field entry.
+    my $status = 
+          $SC->spacebool($details->{charge_denied})
+        . $SC->spacebool($details->{renew_denied})
+        . $SC->spacebool($details->{recall_denied})
+        . $SC->spacebool($details->{holds_denied})
+        . $SC->spacebool($patron->card->active eq 'f')
+        . $SC->spacebool(0) # too many charged
+        . $SC->spacebool($details->{too_may_overdue})
+        . $SC->spacebool(0) # too many renewals
+        . $SC->spacebool(0) # too many claims retruned
+        . $SC->spacebool(0) # too many lost
+        . $SC->spacebool($details->{too_many_fines})
+        . $SC->spacebool($details->{too_many_fines})
+        . $SC->spacebool(0) # recall overdue
+        . $SC->spacebool($details->{too_many_fines})
+        ;
+
  
     return {
         fixed_fields => [
-            $SC->spacebool($details->{charge_denied}),
-            $SC->spacebool($details->{renew_denied}),
-            $SC->spacebool($details->{recall_denied}),
-            $SC->spacebool($details->{holds_denied}),
-            $SC->spacebool($patron->card->active eq 'f'),
-            $SC->spacebool(0), # too many charged
-            $SC->spacebool($details->{too_may_overdue}),
-            $SC->spacebool(0), # too many renewals
-            $SC->spacebool(0), # too many claims retruned
-            $SC->spacebool(0), # too many lost
-            $SC->spacebool($details->{too_many_fines}),
-            $SC->spacebool($details->{too_many_fines}),
-            $SC->spacebool(0), # recall overdue
-            $SC->spacebool($details->{too_many_fines}),
+            $status,
             '000', # language
             $SC->sipdate
         ],