From ca58c6752b31fdae99dd1fd5e17e9b41c85248dc Mon Sep 17 00:00:00 2001
From: Laurent Laffont <llaffont@afi-sa.fr>
Date: Mon, 10 Feb 2020 14:27:58 +0100
Subject: [PATCH] hotline #105277 dilicom PNB, CSV export, add library column

---
 VERSIONS_HOTLINE/105277                       |  1 +
 library/Class/Loan/Pnb.php                    | 11 ++++-
 library/Class/TableDescription/PNBLoans.php   |  2 +-
 .../MobileApplication/RestfulApiTest.php      |  6 ++-
 tests/scenarios/PnbDilicom/PnbDilicomTest.php | 41 +++++++++++++++++--
 5 files changed, 54 insertions(+), 7 deletions(-)
 create mode 100644 VERSIONS_HOTLINE/105277

diff --git a/VERSIONS_HOTLINE/105277 b/VERSIONS_HOTLINE/105277
new file mode 100644
index 00000000000..36f4d235932
--- /dev/null
+++ b/VERSIONS_HOTLINE/105277
@@ -0,0 +1 @@
+ - ticket #105277 : Dilicom PNB, export CSV des prêts : ajout de la colonne "Bibliothèque" qui contient le libellé de la bibliothèque des abonnés
\ No newline at end of file
diff --git a/library/Class/Loan/Pnb.php b/library/Class/Loan/Pnb.php
index a62cc93ca09..a1fe01601e9 100644
--- a/library/Class/Loan/Pnb.php
+++ b/library/Class/Loan/Pnb.php
@@ -151,7 +151,16 @@ class Class_Loan_Pnb extends Storm_Model_Abstract {
 
 
   public function getBibliotheque() {
-    return '';
+    return $this->hasUser()
+      ? $this->getUser()->getLibelleBib()
+      : '';
+  }
+
+
+  public function getUser() {
+    if ($user = parent::_get('user'))
+      return $user;
+    return Class_Users::findFirstBy(['idabon' => $this->getSubscriberId()]);
   }
 
 
diff --git a/library/Class/TableDescription/PNBLoans.php b/library/Class/TableDescription/PNBLoans.php
index 9081be9c188..4d75227d10f 100644
--- a/library/Class/TableDescription/PNBLoans.php
+++ b/library/Class/TableDescription/PNBLoans.php
@@ -37,7 +37,7 @@ class Class_TableDescription_PNBLoans extends Class_TableDescription {
       ->addColumn($this->_('Genre'), 'first_kind')
       ->addColumn($this->_('Section'), 'first_section')
       ->addColumn($this->_('Catégorie'), 'category')
-      ;
+      ->addColumn($this->_('Bibliothèque'), 'bibliotheque');
   }
 
 
diff --git a/tests/scenarios/MobileApplication/RestfulApiTest.php b/tests/scenarios/MobileApplication/RestfulApiTest.php
index 625e537587b..eaab02d151f 100644
--- a/tests/scenarios/MobileApplication/RestfulApiTest.php
+++ b/tests/scenarios/MobileApplication/RestfulApiTest.php
@@ -31,6 +31,10 @@ abstract class Scenario_MobileApplication_RestfulApi_UserAccountTestCase extends
 
     Class_CommSigb::setInstance($this->_sigb = $this->mock());
 
+    $this->fixture('Class_Bib',
+                   ['id' => 1,
+                    'libelle' => 'Vaise-sur-Ravoire']);
+
     $puppy = $this->fixture('Class_Users',
                             ['id' => 345,
                              'pseudo' => 'Puppy',
@@ -173,7 +177,7 @@ class Scenario_MobileApplication_RestfulApi_UserAccountLoansWithTokenTest extend
                          'author' => 'Collodi',
                          'date_due' => '2022-05-02',
                          'loaned_by' => 'puppy',
-                         'library' => ''
+                         'library' => 'Vaise-sur-Ravoire'
                          ],
                         $this->_json['loans'][2]);
   }
diff --git a/tests/scenarios/PnbDilicom/PnbDilicomTest.php b/tests/scenarios/PnbDilicom/PnbDilicomTest.php
index 957fa5b08f8..54ef87fea73 100644
--- a/tests/scenarios/PnbDilicom/PnbDilicomTest.php
+++ b/tests/scenarios/PnbDilicom/PnbDilicomTest.php
@@ -3626,7 +3626,38 @@ class PnbDilicomAdminAlbumControllerExportLoansCsvTest extends PnbDilicomAdminAl
   public function setUp() {
     parent::setUp();
 
-    Class_Album_UsageConstraints::setTimeSource(new TimeSourceForTest('2015-12-04 14:14:14'));
+    $this->fixture('Class_Users',
+                   ['id' => 7,
+                    'nom' => 'boum',
+                    'login'=>'boum',
+                    'password'=>'secret',
+                    'id_site' => 1,
+                    'idabon' => '9878']);
+
+    $this->fixture('Class_Bib', ['id' => 1,
+                                 'libelle' => 'SomewhereInCode',
+                                 'gln' => '333']);
+
+    $this->fixture('Class_Loan_Pnb',
+                   ['id' => 4,
+                    'record_origin_id' => 'Dilicom-3663608260879',
+                    'subscriber_id' => 9879,
+                    'user_id' => 7,
+                    'expected_return_date' => '2020-01-20 13:57:33',
+                    'loan_date' => '2020-01-06 13:57:33',
+                    'loan_link' => 'https://pnb-dilicom.centprod.com/v2//XXXXXXXX.do',
+                    'order_line_id' => '82377a045ce56ef0a072a8b']);
+
+    $this->fixture('Class_Loan_Pnb',
+                   ['id' => 5,
+                    'record_origin_id' => 'Dilicom-3663608260879',
+                    'subscriber_id' => 9878,
+                    'user_id' => 12321,
+                    'expected_return_date' => '2020-02-20 13:57:33',
+                    'loan_date' => '2020-02-06 13:57:33',
+                    'loan_link' => 'https://pnb-dilicom.centprod.com/v2//XXXXXXXX.do',
+                    'order_line_id' => '82377a045ce56ef0a072a8b']);
+
     $this->dispatch('admin/album/dilicom-export-loans-csv', true);
   }
 
@@ -3648,9 +3679,11 @@ class PnbDilicomAdminAlbumControllerExportLoansCsvTest extends PnbDilicomAdminAl
 
   /** @test */
   public function csvShouldContainsAlbumsItems() {
-    $this->assertEquals('Date;Titre;"Date de commande";Auteur;Éditeur;Collection;Année;Genre;Section;Catégorie
-16/12/2016;"Hell is from here to eternity";30/03/2015;"Iron Maiden";EMI;"Temple Of Rock";1992;"Heavy Metal";"Espace métal";Fondu
-13/11/2017;"Hell is from here to eternity";30/03/2015;"Iron Maiden";EMI;"Temple Of Rock";1992;"Heavy Metal";"Espace métal";Fondu
+    $this->assertEquals('Date;Titre;"Date de commande";Auteur;Éditeur;Collection;Année;Genre;Section;Catégorie;Bibliothèque
+16/12/2016;"Hell is from here to eternity";30/03/2015;"Iron Maiden";EMI;"Temple Of Rock";1992;"Heavy Metal";"Espace métal";Fondu;
+13/11/2017;"Hell is from here to eternity";30/03/2015;"Iron Maiden";EMI;"Temple Of Rock";1992;"Heavy Metal";"Espace métal";Fondu;
+06/01/2020;"Hell is from here to eternity";;"Iron Maiden";EMI;"Temple Of Rock";1992;"Heavy Metal";"Espace métal";Fondu;SomewhereInCode
+06/02/2020;"Hell is from here to eternity";;"Iron Maiden";EMI;"Temple Of Rock";1992;"Heavy Metal";"Espace métal";Fondu;SomewhereInCode
 ',
                         $this->_response->getBody());
   }
-- 
GitLab