From 248a965bc02219efbd521fef96fe065f51b145b0 Mon Sep 17 00:00:00 2001
From: lbrun <leo@sandbox.pergame.net>
Date: Fri, 27 Nov 2015 11:22:49 +0100
Subject: [PATCH] 
 hotline#33773_vsmart_impossible_de_se_connecter_a_son_compte_lecteur_lorsque_une_consultation_est_reservee:
 add verif + tests

---
 VERSIONS_HOTLINE/33773                        |  1 +
 .../WebService/SIGB/VSmart/BorrowerReader.php | 32 +++++++++++++------
 .../Class/WebService/SIGB/VSmartFixtures.php  | 17 ++++++++--
 3 files changed, 38 insertions(+), 12 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/33773

diff --git a/VERSIONS_HOTLINE/33773 b/VERSIONS_HOTLINE/33773
new file mode 100644
index 00000000000..8466a20a9d2
--- /dev/null
+++ b/VERSIONS_HOTLINE/33773
@@ -0,0 +1 @@
+ - ticket #33773 : VSmart: Impossible de se connecter a son compte lecteur lorsque une consultation est reservée
\ No newline at end of file
diff --git a/library/Class/WebService/SIGB/VSmart/BorrowerReader.php b/library/Class/WebService/SIGB/VSmart/BorrowerReader.php
index fe701a3c069..fc4af0e04d6 100644
--- a/library/Class/WebService/SIGB/VSmart/BorrowerReader.php
+++ b/library/Class/WebService/SIGB/VSmart/BorrowerReader.php
@@ -16,7 +16,7 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
 class Class_WebService_SIGB_VSmart_BorrowerReader {
@@ -27,7 +27,7 @@ class Class_WebService_SIGB_VSmart_BorrowerReader {
   protected $_sigb_service;
 
   protected $_xml_parser;
-
+  protected $_current_exemplaire_operation;
 
   /**
    *
@@ -110,11 +110,17 @@ class Class_WebService_SIGB_VSmart_BorrowerReader {
   }
 
 
+  public function endReservation() {
+    $this->_current_exemplaire_operation = null;
+  }
+
+
   /**
    * @param string $data
    */
   public function endLoan($data) {
     $this->_emprunteur->empruntsAdd($this->_current_exemplaire_operation);
+    $this->_current_exemplaire_operation = null;
   }
 
 
@@ -130,7 +136,9 @@ class Class_WebService_SIGB_VSmart_BorrowerReader {
    * @param string $data
    */
   public function endTitle($data) {
-    $this->_current_exemplaire_operation->getExemplaire()->setTitre($data);
+    xdebug_break();
+    if ($this->_current_exemplaire_operation)
+      $this->_current_exemplaire_operation->getExemplaire()->setTitre($data);
   }
 
 
@@ -138,7 +146,8 @@ class Class_WebService_SIGB_VSmart_BorrowerReader {
    * @param string $data
    */
   public function endDueDate($data) {
-    $this->_current_exemplaire_operation->setDateRetour($data);
+    if ($this->_current_exemplaire_operation)
+      $this->_current_exemplaire_operation->setDateRetour($data);
   }
 
 
@@ -146,10 +155,11 @@ class Class_WebService_SIGB_VSmart_BorrowerReader {
    * @param string $data
    */
   public function endItemBarcode($data) {
-    $this->_current_exemplaire_operation->setId($data)
-      ->getExemplaire()
-      ->setId($data)
-      ->setCodeBarre($data);
+    if ($this->_current_exemplaire_operation)
+      $this->_current_exemplaire_operation->setId($data)
+                                          ->getExemplaire()
+                                          ->setId($data)
+                                          ->setCodeBarre($data);
   }
 
 
@@ -157,7 +167,8 @@ class Class_WebService_SIGB_VSmart_BorrowerReader {
    * @param string $data
    */
   public function endPlaceInQueue($data) {
-    $this->_current_exemplaire_operation->setRang($data);
+    if ($this->_current_exemplaire_operation)
+      $this->_current_exemplaire_operation->setRang($data);
   }
 
 
@@ -165,7 +176,8 @@ class Class_WebService_SIGB_VSmart_BorrowerReader {
    * @param string $data
    */
   public function endReservationNumber($data) {
-    $this->_current_exemplaire_operation->setId($data);
+    if ($this->_current_exemplaire_operation)
+      $this->_current_exemplaire_operation->setId($data);
   }
 
 
diff --git a/tests/library/Class/WebService/SIGB/VSmartFixtures.php b/tests/library/Class/WebService/SIGB/VSmartFixtures.php
index 5dce65080cb..81f395920a7 100644
--- a/tests/library/Class/WebService/SIGB/VSmartFixtures.php
+++ b/tests/library/Class/WebService/SIGB/VSmartFixtures.php
@@ -16,7 +16,7 @@
  *
  * You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
  * along with BOKEH; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA 
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA
  */
 
 class VSmartFixtures {
@@ -178,7 +178,20 @@ class VSmartFixtures {
                 </Items>
               </Reservation>
             </Reservations>
-            <StackRequests />
+            <StackRequests>
+              <StackRequest>
+                <RequestNumber>DC00001093</RequestNumber>
+                <Status>Active</Status>
+                <RequestDateTime>26/11/2015 12:14:27</RequestDateTime>
+                <ExpiryDateTime>24/02/2016 23:59:00</ExpiryDateTime>
+                <Delivery>Liv</Delivery>
+                <HeldItem>RES_MCP271095</HeldItem>
+                <RecordId>1.179920</RecordId>
+                <Title>A Moulins...le marché cou</Title>
+                <MaterialType>LDA</MaterialType>
+                <MaterialType>LDA</MaterialType>
+              </StackRequest>
+            </StackRequests>
         </Borrower>
     </VubisSmart>';
   }
-- 
GitLab