From be9ddb167495ff91bade04c66a728020bf168449 Mon Sep 17 00:00:00 2001
From: Ere Maijala <ere.maijala@helsinki.fi>
Date: Fri, 15 Nov 2019 15:07:06 +0200
Subject: [PATCH] Alma: Display item status according to process type. (#1498)

---
 languages/en.ini                             |  1 +
 languages/fi.ini                             |  1 +
 languages/sv.ini                             |  1 +
 module/VuFind/src/VuFind/ILS/Driver/Alma.php | 25 +++++++++++++++++++-
 4 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/languages/en.ini b/languages/en.ini
index fdca305cfb8..ae7571224fc 100644
--- a/languages/en.ini
+++ b/languages/en.ini
@@ -1067,6 +1067,7 @@ Start a new Basic Search = "Start a new Basic Search"
 Start Page = "Start Page"
 starting from = "starting from"
 Status = "Status"
+status_transit = "In Transit"
 status_unknown_message = "Live Status Unavailable"
 Storage Retrieval Requests = "Storage Retrieval Requests"
 storage_retrieval_request_available = "Available for Pickup"
diff --git a/languages/fi.ini b/languages/fi.ini
index 769729c0d75..bfc09828930 100644
--- a/languages/fi.ini
+++ b/languages/fi.ini
@@ -1001,6 +1001,7 @@ Start a new Basic Search = "Aloita uusi perushaku"
 Start Page = "Ensimmäinen sivu"
 starting from = "Alkaen"
 Status = "Tila"
+status_transit = "Kuljetuksessa"
 status_unknown_message = "Reaaliaikaista tietoa ei saatavissa"
 Storage Retrieval Requests = "Varastotilaukset"
 storage_retrieval_request_available = "Noudettavissa"
diff --git a/languages/sv.ini b/languages/sv.ini
index d32a7c0a82f..4d223dc61ad 100644
--- a/languages/sv.ini
+++ b/languages/sv.ini
@@ -995,6 +995,7 @@ Start a new Basic Search = "Gör en ny enkel sökning"
 Start Page = "Förstasidan"
 starting from = "Från och med"
 Status = "Status"
+status_transit = "På väg"
 status_unknown_message = "Status otillgänglig"
 Storage Retrieval Requests = "Magasinsbeställningar"
 storage_retrieval_request_available = "Kan avhämtas"
diff --git a/module/VuFind/src/VuFind/ILS/Driver/Alma.php b/module/VuFind/src/VuFind/ILS/Driver/Alma.php
index c625a3aa647..b8228ab810c 100644
--- a/module/VuFind/src/VuFind/ILS/Driver/Alma.php
+++ b/module/VuFind/src/VuFind/ILS/Driver/Alma.php
@@ -281,7 +281,6 @@ class Alma extends AbstractBase implements \VuFindHttp\HttpServiceAwareInterface
 
         // Correct copy count in case of paging
         $copyCount = $options['offset'] ?? 0;
-        $patronId = $patron['id'] ?? null;
 
         // Paging parameters for paginated API call. The "limit" tells the API how
         // many items the call should return at once (e. g. 10). The "offset" defines
@@ -323,6 +322,13 @@ class Alma extends AbstractBase implements \VuFindHttp\HttpServiceAwareInterface
                 $itemNotes = !empty($item->item_data->public_note)
                     ? [(string)$item->item_data->public_note] : null;
 
+                $processType = (string)($item->item_data->process_type ?? '');
+                if ($processType && 'LOAN' !== $processType) {
+                    $status = $this->getTranslatableStatusString(
+                        $item->item_data->process_type
+                    );
+                }
+
                 $description = null;
                 if (!empty($item->item_data->description)) {
                     $number = (string)$item->item_data->description;
@@ -1788,6 +1794,23 @@ class Alma extends AbstractBase implements \VuFindHttp\HttpServiceAwareInterface
         return new \VuFind\I18n\TranslatableString($value, $desc);
     }
 
+    /**
+     * Gets a translatable string from an element with content and a desc attribute.
+     *
+     * @param SimpleXMLElement $element XML element
+     *
+     * @return \VuFind\I18n\TranslatableString
+     */
+    protected function getTranslatableStatusString($element)
+    {
+        if (null === $element) {
+            return null;
+        }
+        $value = 'status_' . strtolower((string)$element);
+        $desc = (string)($element->attributes()->desc ?? $value);
+        return new \VuFind\I18n\TranslatableString($value, $desc);
+    }
+
     /**
      * Get a MARC subfield from a MARC field
      *
-- 
GitLab