Bug 17317: ILSDI: Getavailability method with id_type=bib implementation
authorLyon3 Team <koha@univ-lyon3.fr>
Tue, 20 Sep 2016 10:13:23 +0000 (12:13 +0200)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 23 Dec 2016 11:38:46 +0000 (11:38 +0000)
To test this patch you should try to send a query to you opac formatted
this way :
http://[your-opac-domain-name]/cgi-bin/koha/ilsdi.pl?service=GetAvailability&id=[biblionumber]&id_type=bib

You should get availability status for all the items of the matched
bibliographic record.

Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

C4/ILSDI/Services.pm

index e8ae7c0..03f6085 100644 (file)
@@ -136,19 +136,32 @@ sub GetAvailability {
             my $msg;
             my $biblioitem = ( GetBiblioItemByBiblioNumber( $id, undef ) )[0];
             if ($biblioitem) {
-
+                my $biblioitemnumber = $biblioitem->{'biblioitemnumber'};
+                my $items            = (GetItemsByBiblioitemnumber($biblioitemnumber))[0];
+
+                # We loop over the items to clean them
+                my $itemnumber;
+                foreach my $item (@$items) {
+                    $itemnumber=$item->{'itemnumber'};
+                    my ( $biblionumber, $status, $msg, $location ) = _availability($itemnumber);
+                    $out .= "  <dlf:record>\n";
+                    $out .= "    <dlf:bibliographic id=\"" . ( $biblionumber || $itemnumber ) . "\" />\n";
+                    $out .= "    <dlf:items>\n";
+                    $out .= "      <dlf:item id=\"" . $itemnumber . "\">\n";
+                    $out .= "        <dlf:simpleavailability>\n";
+                    $out .= "          <dlf:identifier>" . $itemnumber . "</dlf:identifier>\n";
+                    $out .= "          <dlf:availabilitystatus>" . $status . "</dlf:availabilitystatus>\n";
+                    if ($msg)      { $out .= "          <dlf:availabilitymsg>" . $msg . "</dlf:availabilitymsg>\n"; }
+                    if ($location) { $out .= "          <dlf:location>" . $location . "</dlf:location>\n"; }
+                    $out .= "        </dlf:simpleavailability>\n";
+                    $out .= "      </dlf:item>\n";
+                    $out .= "    </dlf:items>\n";
+                    $out .= "  </dlf:record>\n";
+                }
             } else {
                 $status = "unknown";
                 $msg    = "Error: could not retrieve availability for this ID";
             }
-            $out .= "  <dlf:record>\n";
-            $out .= "    <dlf:bibliographic id=\"" . $id . "\" />\n";
-            $out .= "    <dlf:simpleavailability>\n";
-            $out .= "      <dlf:identifier>" . $id . "</dlf:identifier>\n";
-            $out .= "      <dlf:availabilitystatus>" . $status . "</dlf:availabilitystatus>\n";
-            $out .= "      <dlf:availabilitymsg>" . $msg . "</dlf:availabilitymsg>\n";
-            $out .= "    </dlf:simpleavailability>\n";
-            $out .= "  </dlf:record>\n";
         }
     }
     $out .= "</dlf:collection>\n";