diff --git a/cosmogramme/VERSIONS_HOTLINE/96549 b/cosmogramme/VERSIONS_HOTLINE/96549 new file mode 100644 index 0000000000000000000000000000000000000000..eaf69e81d9dbba63dc6945659ae294d9477f479c --- /dev/null +++ b/cosmogramme/VERSIONS_HOTLINE/96549 @@ -0,0 +1 @@ + - ticket #96549 : SIGB Orphée : les exemplaires avec la situation "en réserve" sont réservables \ 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 92313530da48edab5c85065e462b181578378985..078bfdbdf0c42d0fff6f87ff9ded79c038fb4882 100644 --- a/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php +++ b/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php @@ -22,6 +22,8 @@ class Class_WebService_SIGB_Orphee_GetLstDmtResponseReader extends Class_WebService_SIGB_AbstractXMLNoticeReader { const CODE_SITUTATION_SORTI = 2; const CODE_SITUTATION_RESERVE = 3; + const CODE_SITUTATION_PERDU = 5; + const CODE_SITUTATION_EN_RESERVE = 10; const CODE_SITUTATION_ARCHIVAGE = 14; const CODE_SITUTATION_CATALOGAGE = 17; @@ -71,8 +73,12 @@ class Class_WebService_SIGB_Orphee_GetLstDmtResponseReader extends Class_WebServ public function endSit($data) { - $reservable = ($data==self::CODE_SITUTATION_SORTI || $data==self::CODE_SITUTATION_RESERVE); + $reservable = in_array($data, [self::CODE_SITUTATION_SORTI, + self::CODE_SITUTATION_RESERVE, + self::CODE_SITUTATION_EN_RESERVE]); + $this->_current_exemplaire->setReservable($reservable); + $visible = ($data!=self::CODE_SITUTATION_ARCHIVAGE && $data!=self::CODE_SITUTATION_CATALOGAGE); $this->_current_exemplaire->setVisibleOPAC($visible); } diff --git a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php index abaffd96125425ddd25d1f19588ce3c3735f9fee..f5f2f310f08417221111acc679cc5147c728b5c9 100644 --- a/tests/library/Class/WebService/SIGB/OrpheeFixtures.php +++ b/tests/library/Class/WebService/SIGB/OrpheeFixtures.php @@ -366,6 +366,48 @@ class OrpheeFixtures { <titre><![CDATA[[Millenium (Larsson, Stieg (1954-2004))]]></titre> <date_edi><![CDATA[2010]]></date_edi> <can_rsv>0</can_rsv> + </document> + + <document> + <no><![CDATA[9876123]]></no> + <ntc><![CDATA[1301700727]]></ntc> + <carte><![CDATA[9876123]]></carte> + <sit><![CDATA[10]]></sit> + <lib_sit><![CDATA[ en reserve]]></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> + </document> + </documents> </datas>'; } diff --git a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php index 253eafa78867fa72f3d6bcbb4a8818d307b82971..e8e44eb4da475ed36f3f04c74cc38b8d225b1686 100644 --- a/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php +++ b/tests/library/Class/WebService/SIGB/OrpheeServiceTest.php @@ -349,7 +349,12 @@ class OrpheeServiceTestGetLstDmntWithMillenium extends OrpheeServiceTestCase { $this->fixture('Class_Exemplaire', ['id' => 6, 'code_barres' => '200014900', - 'id_origine' => 'frOr1301200059']) + 'id_origine' => 'frOr1301200059']), + + $this->fixture('Class_Exemplaire', + ['id' => 7, + 'code_barres' => '9876123', + 'id_origine' => 'frOr1301700727']) ] ]); @@ -504,6 +509,14 @@ class OrpheeServiceTestGetLstDmntWithMillenium extends OrpheeServiceTestCase { $this->assertNotEmpty($exemplaire); $this->assertFalse($exemplaire->isReservable()); } + + + /** @test */ + public function exemplaireByCodeBarre9876123ShouldBeReservable() { + $exemplaire = $this->_orphee->getExemplaire('frOr1301700727', '9876123'); + $this->assertTrue($exemplaire->isReservable()); + } + }