Bug 17844: Replace C4::Koha::get_notforloan_label_of with Koha::AuthorisedValues
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 4 Jan 2017 10:38:34 +0000 (11:38 +0100)
committerKyle M Hall <kyle@bywatersolutions.com>
Fri, 31 Mar 2017 10:11:08 +0000 (10:11 +0000)
This patch is more a bugfix than a refactoring.
Indeed the C4::Koha::get_notforloan_label_of behaviors were buggy:
1/ It does not display the opac description at the OPAC, but always the
staff description
2/ It does not care of the framework of the biblio, but retrieve the
first row of the marc_subfield_structure mapped with items.notforloan

These 2 bugs can easily be fixed using the
Koha::AuthorisedValues->search_by_koha_field

Steps to recreate the issues:
- Create 2 authorised value categories for not for loan (NFL1 and NFL2)
with the same values. Define a different description for the OPAC.
- Define link 952$7 to NFL1 for the default framework and to NFL2 for
the BK framework
- Create 2 bibliographic records (B1 using NFL1 and B2 using NFL2) with
2 items each (1 item should have a not for loan value)
- Go to the "Place a hold" view for this record.
- In the item list, you should see the not for loan value
=> The staff description of NFL1 will always be used, even for the OPAC

Test plan:
- Recreate the issues without this patchset
- Apply this patchset
- Recreate the steps to recreate the issues
=> The staff description of NFL2 should be displayed for the B2 item
=> The opac description of NFL2 should be displayed for the B2 item at
the OPAC

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

opac/opac-reserve.pl
reserve/request.pl

index e304066..743a3ca 100755 (executable)
@@ -32,6 +32,7 @@ use C4::Context;
 use C4::Members;
 use C4::Overdues;
 use C4::Debug;
+use Koha::AuthorisedValues;
 use Koha::DateUtils;
 use Koha::Libraries;
 use Koha::Patrons;
@@ -384,7 +385,6 @@ unless ($noreserves) {
 # and items for each biblionumber.
 #
 #
-my $notforloan_label_of = get_notforloan_label_of();
 
 my $biblioLoop = [];
 my $numBibsAvailable = 0;
@@ -407,9 +407,10 @@ foreach my $biblioNum (@biblionumbers) {
         &get_out($query, $cookie, $template->output);
     }
 
+    my $frameworkcode = GetFrameworkCode( $biblioData->{biblionumber} );
     $biblioLoopIter{biblionumber} = $biblioData->{biblionumber};
     $biblioLoopIter{title} = $biblioData->{title};
-    $biblioLoopIter{subtitle} = GetRecordValue('subtitle', $record, GetFrameworkCode($biblioData->{biblionumber}));
+    $biblioLoopIter{subtitle} = GetRecordValue('subtitle', $record, $frameworkcode);
     $biblioLoopIter{author} = $biblioData->{author};
     $biblioLoopIter{rank} = $biblioData->{rank};
     $biblioLoopIter{reservecount} = $biblioData->{reservecount};
@@ -432,6 +433,9 @@ foreach my $biblioNum (@biblionumbers) {
         }
     }
 
+    my @notforloan_avs = Koha::AuthorisedValues->search_by_koha_field({ kohafield => 'items.notforloan', frameworkcode => $frameworkcode });
+    my $notforloan_label_of = { map { $_->authorised_value => $_->opac_description } @notforloan_avs };
+
     $biblioLoopIter{itemLoop} = [];
     my $numCopiesAvailable = 0;
     my $numCopiesOPACAvailable = 0;
index a022c99..a3b0c93 100755 (executable)
@@ -321,11 +321,13 @@ foreach my $biblionumber (@biblionumbers) {
     ## Should be same as biblionumber
     my @biblioitemnumbers = keys %itemnumbers_of_biblioitem;
 
-    my $notforloan_label_of = get_notforloan_label_of();
-
     ## Hash of biblioitemnumber to 'biblioitem' table records
     my $biblioiteminfos_of  = GetBiblioItemInfosOf(@biblioitemnumbers);
 
+    my $frameworkcode = GetFrameworkCode( $biblionumber );
+    my @notforloan_avs = Koha::AuthorisedValues->search_by_koha_field({ kohafield => 'items.notforloan', frameworkcode => $frameworkcode });
+    my $notforloan_label_of = { map { $_->authorised_value => $_->lib } @notforloan_avs };
+
     my @bibitemloop;
 
     my @available_itemtypes;