From f0d46d47468de72b4e292866c8b15009cc943327 Mon Sep 17 00:00:00 2001
From: Arthur Suzuki <arthur.suzuki@biblibre.com>
Date: Thu, 9 Jun 2022 15:52:25 +0200
Subject: [PATCH] hotline#144097 : Koha : Use biblionumber instead of
 biblioitemnumber for webservice call

---
 VERSIONS_HOTLINE/144097                       |  1 +
 .../SIGB/Koha/GetRecordsResponseReader.php    |  4 +-
 tests/fixtures/KohaFixtures.php               | 96 +++++++++++++++++++
 .../Class/WebService/SIGB/KohaTest.php        | 24 +++++
 4 files changed, 123 insertions(+), 2 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/144097

diff --git a/VERSIONS_HOTLINE/144097 b/VERSIONS_HOTLINE/144097
new file mode 100644
index 00000000000..6970f489dee
--- /dev/null
+++ b/VERSIONS_HOTLINE/144097
@@ -0,0 +1 @@
+ - correctif #144097 : SIGB Koha ; correction de l'identifiant pour la notice utilisé lors de l'appel webservice 
\ No newline at end of file
diff --git a/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php b/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
index 57ce34ea82d..2ff3ccccebc 100644
--- a/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
+++ b/library/Class/WebService/SIGB/Koha/GetRecordsResponseReader.php
@@ -98,8 +98,8 @@ class Class_WebService_SIGB_Koha_GetRecordsResponseReader {
 
     $record = $doc->record;
 
-    if ($this->_hasChild('biblioitemnumber', $record))
-      $this->_record->setId((string)$record->biblioitemnumber);
+    if ($this->_hasChild('biblionumber', $record))
+      $this->_record->setId((string)$record->biblionumber);
 
     foreach($record->reserves->reserve as $xml_hold)
       $this->_handleHold($xml_hold);
diff --git a/tests/fixtures/KohaFixtures.php b/tests/fixtures/KohaFixtures.php
index fdf30583011..6af1681958a 100644
--- a/tests/fixtures/KohaFixtures.php
+++ b/tests/fixtures/KohaFixtures.php
@@ -311,6 +311,102 @@ class KohaFixtures {
   }
 
 
+  public static function xmlGetRecordOneJardinEnfanceWithWrongBiblioitemnumber() {
+    return
+      '<?xml version="1.0" encoding="ISO-8859-1" ?>
+      <GetRecords>
+        <record>
+          <isbn>9782862749198</isbn>
+          <marcxml>
+            <record
+                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+                xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/ standards/marcxml/schema/MARC21slim.xsd"
+                xmlns="http://www.loc.gov/MARC21/slim">
+              <leader>00397nac a22001451u 4500</leader>
+              <datafield tag="010" ind1=" " ind2=" ">
+                <subfield code="a">9782862749198</subfield>
+              </datafield>
+              <datafield tag="090" ind1=" " ind2=" ">
+                <subfield code="a">1</subfield>
+              </datafield>
+              <datafield tag="101" ind1=" " ind2=" ">
+                <subfield code="a">fre</subfield>
+              </datafield>
+              <datafield tag="100" ind1=" " ind2=" ">
+                <subfield code="a">20080725              frey50       </subfield>
+              </datafield>
+              <datafield tag="200" ind1=" " ind2=" ">
+                <subfield code="a">Jardins d\'enfance</subfield>
+                <subfield code="b">LITT</subfield>
+                <subfield code="f">Abécassis, Eliette</subfield>
+              </datafield>
+              <datafield tag="210" ind1=" " ind2=" ">
+                <subfield code="c">cherche midi éditeur</subfield>
+                <subfield code="d">11/2001</subfield>
+              </datafield>
+              <datafield tag="215" ind1=" " ind2=" ">
+                <subfield code="a">180</subfield>
+              </datafield>
+              <datafield tag="225" ind1=" " ind2=" ">
+                <subfield code="a">nouvelles</subfield>
+              </datafield>
+              <datafield tag="995" ind1=" " ind2=" ">
+                <subfield code="9">1</subfield>
+                <subfield code="c">BIB</subfield>
+                <subfield code="2">0</subfield>
+                <subfield code="k">R ABE</subfield>
+                <subfield code="o">0</subfield>
+                <subfield code="e">Secteur Adulte</subfield>
+                <subfield code="b">BIB</subfield>
+                <subfield code="j">7786000200</subfield>
+                <subfield code="q">a</subfield>
+                <subfield code="r">2</subfield>
+                <subfield code="s">Achats</subfield>
+              </datafield>
+              <controlfield tag="001">1</controlfield>
+            </record>
+          </marcxml>
+          <publicationyear>2001</publicationyear>
+          <collectiontitle>nouvelles</collectiontitle>
+          <pages>180</pages>
+          <issues>
+          </issues>
+          <itemtype>LITT</itemtype>
+          <biblionumber>1</biblionumber>
+          <timestamp>2008-09-03 18:43:19</timestamp>
+          <cn_sort>_</cn_sort>
+          <publishercode>cherche midi éditeur</publishercode>
+          <reserves>
+          </reserves>
+          <items>
+            <item>
+              <biblioitemnumber>2</biblioitemnumber>
+              <wthdrawn>0</wthdrawn>
+              <holdingbranchname>Bibliothèque Jean Prunier</holdingbranchname>
+              <notforloan>0</notforloan>
+              <replacementpricedate>2008-08-20</replacementpricedate>
+              <itemnumber>1</itemnumber>
+              <location>Secteur Adulte</location>
+              <itemcallnumber>R ABE</itemcallnumber>
+              <date_due>2011-08-20</date_due>
+              <itemlost>0</itemlost>
+              <datelastseen>2008-08-20</datelastseen>
+              <homebranch>BIB</homebranch>
+              <homebranchname>Bibliothèque Jean Prunier</homebranchname>
+              <biblionumber>1</biblionumber>
+              <holdingbranch>BIB</holdingbranch>
+              <timestamp>2008-08-20 17:15:51</timestamp>
+              <damaged>0</damaged>
+              <cn_sort>R_ABE</cn_sort>
+              <dateaccessioned>2008-08-20</dateaccessioned>
+            </item>
+          </items>
+          <biblioitemnumber>2</biblioitemnumber>
+        </record>
+     </GetRecords>';
+  }
+
+
   public static function xmlGetRecordOneJardinEnfance() {
     return
       '<?xml version="1.0" encoding="ISO-8859-1" ?>
diff --git a/tests/library/Class/WebService/SIGB/KohaTest.php b/tests/library/Class/WebService/SIGB/KohaTest.php
index 748e86be959..029d4e74b2a 100644
--- a/tests/library/Class/WebService/SIGB/KohaTest.php
+++ b/tests/library/Class/WebService/SIGB/KohaTest.php
@@ -204,6 +204,30 @@ class KohaServiceGetNoticeJardinEnfantTest extends KohaTestCase {
 
 
 
+
+
+class KohaServiceGetNoticeJardinEnfantWithInconsistantBiblioitemnumberTest extends KohaTestCase {
+  public function setUp() {
+    parent::setUp();
+
+    $this->mock_web_client
+      ->whenCalled('open_url')
+      ->with('http://cat-aficg55.biblibre.com/cgi-bin/koha/ilsdi.pl?service=GetRecords&id=1')
+      ->answers(KohaFixtures::xmlGetRecordOneJardinEnfanceWithWrongBiblioitemnumber());
+
+    $this->jardins_enfant = $this->service->getNotice('1');
+  }
+
+
+  /** @test */
+  public function noticeIdShouldBe1() {
+    $this->assertEquals('1', $this->jardins_enfant->getId());
+  }
+}
+
+
+
+
 abstract class KohaServiceGetNoticeHarryPotterTestCase extends KohaTestCase {
   public function setUp() {
     parent::setUp();
-- 
GitLab