LP1525394: Return Titles for All Hold Types in SIP
authorJason Boyer <jboyer@equinoxinitiative.org>
Mon, 9 Sep 2019 19:29:47 +0000 (15:29 -0400)
committerJason Boyer <JBoyer@equinoxOLI.org>
Mon, 19 Jul 2021 17:17:33 +0000 (13:17 -0400)
The SIP Patron Status Response message can include hold
titles if requested by the SIP client. This commit
adds Issuance holds to the previous commit addressing
part holds, and should finally represent full coverage
for our hold types.

Signed-off-by: Jason Boyer <jboyer@equinoxinitiative.org>
Open-ILS/src/perlmods/lib/OpenILS/SIP/Patron.pm

index ea31a54..ef487c3 100644 (file)
@@ -725,6 +725,10 @@ sub __hold_to_title {
         $e->retrieve_asset_call_number($hold->target))
         if $hold->hold_type eq 'V';
 
+    return __issuance_to_title(
+        $e, $hold->target) # starts with the issuance id because there's more involved for I holds.
+        if $hold->hold_type eq 'I';
+
     return __record_to_title(
         $e, $hold->target) if $hold->hold_type eq 'T';
 
@@ -757,6 +761,25 @@ sub __volume_to_title {
     return __record_to_title($e, $volume->record);
 }
 
+sub __issuance_to_title {
+    my( $e, $issuance_id ) = @_;
+    my $bre_id = $e->json_query(
+    {
+        select => { ssub => ['record_entry'] },
+        from => {
+            ssub => {
+                siss => {
+                    field => 'subscription',
+                    fkey => 'id',
+                    filter => { id => $issuance_id }
+                }
+            }
+        }
+    })->[0]->{record_entry};
+
+    return __record_to_title($e, $bre_id);
+}
+
 
 sub __record_to_title {
     my( $e, $title_id ) = @_;