diff --git a/VERSIONS_HOTLINE/82155 b/VERSIONS_HOTLINE/82155 new file mode 100644 index 0000000000000000000000000000000000000000..fe84d94d8c1ad696fa5145217a3ce0c8ff9abba4 --- /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/Exemplaire.php b/library/Class/WebService/SIGB/Orphee/Exemplaire.php index e2675a91994151f9364da46a0987af939e1609bf..10f213da01fdc9b8f4b596921ed60e3a8802b644 100644 --- a/library/Class/WebService/SIGB/Orphee/Exemplaire.php +++ b/library/Class/WebService/SIGB/Orphee/Exemplaire.php @@ -22,7 +22,9 @@ class Class_WebService_SIGB_Orphee_Exemplaire extends Class_WebService_SIGB_Exem CONST DISPO_LIBRE = 'En rayon'; - protected $_allow_hold_available_items; + protected + $_allow_hold_available_items, + $_flag_can_hold = null; public function __construct($id, $allow_hold_available_items=null) { parent::__construct($id); @@ -31,11 +33,20 @@ class Class_WebService_SIGB_Orphee_Exemplaire extends Class_WebService_SIGB_Exem public function isReservable() { + if ($this->_flag_can_hold !== null) + return $this->_flag_can_hold; + return parent::isReservable() || ( $this->isDisponible() && $this->_allow_hold_available_items ); } + public function setFlagCanHold($flag) { + $this->_flag_can_hold = $flag; + return $this; + } + + public function isDisponible() { return strtolower(self::DISPO_LIBRE) == strtolower(trim($this->disponibilite)); } diff --git a/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php b/library/Class/WebService/SIGB/Orphee/GetLstDmtResponseReader.php index 4b203f3722ecf437cbc4ad413fe072798d9305b3..92313530da48edab5c85065e462b181578378985 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 + ->setFlagCanHold('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 d4788e1d868a24427df53131bdd3a02d3773906c..abaffd96125425ddd25d1f19588ce3c3735f9fee 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> + <can_rsv>1</can_rsv> + <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> + </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 efcceec424e619c437b18ffd4eb960d7b4ca8813..defadebe3d46013d3fc99d2aa6026bb9414e13f1 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()); + } }