From cc9aa24ad1d9a179bdc4604bc1f49e356c1df6d1 Mon Sep 17 00:00:00 2001
From: Laurent Laffont <llaffont@afi-sa.fr>
Date: Fri, 23 Nov 2018 14:19:22 +0100
Subject: [PATCH] hotline #82155 handle Can_Rsv WS Orphee

---
 VERSIONS_HOTLINE/82155                        |  1 +
 .../SIGB/Orphee/GetLstDmtResponseReader.php   |  7 ++
 .../Class/WebService/SIGB/OrpheeFixtures.php  | 83 +++++++++++++++++++
 .../WebService/SIGB/OrpheeServiceTest.php     | 26 ++++++
 4 files changed, 117 insertions(+)
 create mode 100644 VERSIONS_HOTLINE/82155

diff --git a/VERSIONS_HOTLINE/82155 b/VERSIONS_HOTLINE/82155
new file mode 100644
index 00000000000..fe84d94d8c1
--- /dev/null
+++ b/VERSIONS_HOTLINE/82155
@@ -0,0 +1 @@
+ - ticket #82155 : SIGB Orphée: prise en compte de la donnée Can_Rsv pour indiquer la réservabilité des exemplaires dans la nouvelle version des web services d'Orphée
\ No newline at end of file
diff --git a/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php b/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php
index 4b203f3722e..56cc0002941 100644
--- a/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php
+++ b/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php
@@ -78,6 +78,13 @@ class Class_WebService_SIGB_Orphee_GetLstDmtResponseReader extends Class_WebServ
   }
 
 
+  public function endCan_Rsv($data) {
+    $this
+      ->_current_exemplaire
+      ->setReservable('1' === $data);
+  }
+
+
   public function endDate_Last_Retour($data) {
     $this->_current_exemplaire->setDateRetour(trim($data));
   }
diff --git a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
index d4788e1d868..ac16e65da1c 100644
--- a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
+++ b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php
@@ -283,6 +283,89 @@ class OrpheeFixtures {
         <titre><![CDATA[[Millenium (Larsson, Stieg (1954-2004))]]></titre>
         <date_edi><![CDATA[2010]]></date_edi>
       </document>
+
+
+      <document>
+        <no><![CDATA[148899]]></no>
+        <ntc><![CDATA[1301700727]]></ntc>
+        <carte><![CDATA[200014899]]></carte>
+        <sit><![CDATA[1]]></sit>
+        <lib_sit><![CDATA[  en rayon]]></lib_sit>
+        <loc><![CDATA[2]]></loc>
+        <lib_loc><![CDATA[  Salle bleue]]></lib_loc>
+        <loc_ori><![CDATA[2]]></loc_ori>
+        <lib_loc_ori><![CDATA[  Salle bleue]]></lib_loc_ori>
+        <cote><![CDATA[952.05 SCO]]></cote>
+        <anx_ori><![CDATA[1]]></anx_ori>
+        <lib_anx_ori><![CDATA[  Bibliothèque]]></lib_anx_ori>
+        <anx_cur><![CDATA[1]]></anx_cur>
+        <lib_anx_cur><![CDATA[  Bibliothèque]]></lib_anx_cur>
+        <anx_nxt><![CDATA[1]]></anx_nxt>
+        <lib_anx_nxt><![CDATA[  Bibliothèque]]></lib_anx_nxt>
+        <no_coll><![CDATA[0]]></no_coll>
+        <site><![CDATA[20]]></site>
+        <lib_site><![CDATA[  Saint Cloud]]></lib_site>
+        <sup><![CDATA[108]]></sup>
+        <lib_sup><![CDATA[  Livre]]></lib_sup>
+        <sec><![CDATA[2]]></sec>
+        <lib_sec><![CDATA[  Adultes]]></lib_sec>
+        <uti><![CDATA[2]]></uti>
+        <lib_uti><![CDATA[  Prêt normal]]></lib_uti>
+        <sta1><![CDATA[98]]></sta1>
+        <lib_sta1><![CDATA[  Docum Adulte]]></lib_sta1>
+        <sta2><![CDATA[57]]></sta2>
+        <lib_sta2><![CDATA[  Histoire]]></lib_sta2>
+        <sta3><![CDATA[0]]></sta3>
+        <lib_sta3 />
+        <date_last_pret><![CDATA[03/05/2018]]></date_last_pret>
+        <date_last_retour><![CDATA[31/08/2018]]></date_last_retour>
+        <droit_resa><![CDATA[0]]></droit_resa>
+        <lib_droit_resa />
+        <titre><![CDATA[[Millenium (Larsson, Stieg (1954-2004))]]></titre>
+        <date_edi><![CDATA[2010]]></date_edi>
+        <can_rsv>1</can_rsv>
+      </document>
+
+
+      <document>
+        <no><![CDATA[148900]]></no>
+        <ntc><![CDATA[1301700727]]></ntc>
+        <carte><![CDATA[200014900]]></carte>
+        <sit><![CDATA[2]]></sit>
+        <lib_sit><![CDATA[  en rayon]]></lib_sit>
+        <loc><![CDATA[2]]></loc>
+        <lib_loc><![CDATA[  Salle bleue]]></lib_loc>
+        <loc_ori><![CDATA[2]]></loc_ori>
+        <lib_loc_ori><![CDATA[  Salle bleue]]></lib_loc_ori>
+        <cote><![CDATA[952.05 SCO]]></cote>
+        <anx_ori><![CDATA[1]]></anx_ori>
+        <lib_anx_ori><![CDATA[  Bibliothèque]]></lib_anx_ori>
+        <anx_cur><![CDATA[1]]></anx_cur>
+        <lib_anx_cur><![CDATA[  Bibliothèque]]></lib_anx_cur>
+        <anx_nxt><![CDATA[1]]></anx_nxt>
+        <lib_anx_nxt><![CDATA[  Bibliothèque]]></lib_anx_nxt>
+        <no_coll><![CDATA[0]]></no_coll>
+        <site><![CDATA[20]]></site>
+        <lib_site><![CDATA[  Saint Cloud]]></lib_site>
+        <sup><![CDATA[108]]></sup>
+        <lib_sup><![CDATA[  Livre]]></lib_sup>
+        <sec><![CDATA[2]]></sec>
+        <lib_sec><![CDATA[  Adultes]]></lib_sec>
+        <uti><![CDATA[2]]></uti>
+        <lib_uti><![CDATA[  Prêt normal]]></lib_uti>
+        <sta1><![CDATA[98]]></sta1>
+        <lib_sta1><![CDATA[  Docum Adulte]]></lib_sta1>
+        <sta2><![CDATA[57]]></sta2>
+        <lib_sta2><![CDATA[  Histoire]]></lib_sta2>
+        <sta3><![CDATA[0]]></sta3>
+        <lib_sta3 />
+        <date_last_pret><![CDATA[03/05/2018]]></date_last_pret>
+        <date_last_retour><![CDATA[31/08/2018]]></date_last_retour>
+        <droit_resa><![CDATA[0]]></droit_resa>
+        <lib_droit_resa />
+        <titre><![CDATA[[Millenium (Larsson, Stieg (1954-2004))]]></titre>
+        <date_edi><![CDATA[2010]]></date_edi>
+        <can_rsv>0</can_rsv>
     </documents>
   </datas>';
   }
diff --git a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
index efcceec424e..defadebe3d4 100644
--- a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
+++ b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php
@@ -328,6 +328,16 @@ class OrpheeServiceTestGetLstDmntWithMillenium extends OrpheeServiceTestCase {
                                                      ['id' => 3,
                                                       'code_barres' => '200019001649',
                                                       'id_origine' => 'frOr1301200059']),
+
+                                      $this->fixture('Class_Exemplaire',
+                                                     ['id' => 5,
+                                                      'code_barres' => '200014899',
+                                                      'id_origine' => 'frOr1301200059']),
+
+                                      $this->fixture('Class_Exemplaire',
+                                                     ['id' => 6,
+                                                      'code_barres' => '200014900',
+                                                      'id_origine' => 'frOr1301200059'])
                     ]
                    ]);
 
@@ -466,6 +476,22 @@ class OrpheeServiceTestGetLstDmntWithMillenium extends OrpheeServiceTestCase {
     $this->assertNotEmpty($exemplaire);
     $this->assertTrue($exemplaire->isDisponible());
   }
+
+
+  /** @test */
+  public function exemplaireByCodeBarre200014899WithCanRsvOneShouldBeHoldable() {
+    $exemplaire = $this->_orphee->getExemplaire('frOr1301700727', '200014899');
+    $this->assertNotEmpty($exemplaire);
+    $this->assertTrue($exemplaire->isReservable());
+  }
+
+
+   /** @test */
+  public function exemplaireByCodeBarre200014900WithCanRsvOneShouldNotBeHoldable() {
+    $exemplaire = $this->_orphee->getExemplaire('frOr1301700727', '200014900');
+    $this->assertNotEmpty($exemplaire);
+    $this->assertFalse($exemplaire->isReservable());
+  }
 }
 
 
-- 
GitLab