Bug 14828: Use Koha::ItemType[s] everywhere C4::ItemType was used
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 15 Sep 2015 16:03:04 +0000 (17:03 +0100)
committerBrendan Gallagher <brendan@bywatersolutions.com>
Wed, 27 Jan 2016 20:46:58 +0000 (20:46 +0000)
This patch mainly replaces C4::ItemType->all with
Koha::ItemTypes->search.

Test plan:
At the places where the C4::ItemType module was used, confirm there is
no regression:
- acqui/neworderempty.pl
- catalogue/itemsearch.pl
- admin/item_circulation_alerts.pl
and the 2 cataloguing plugins:
- marc21_linking_section.pl
- unimarc_field_4XX.pl

QA step:
prove t/db_dependent/HoldsQueue.t should return green
Note that the tests were buggy.

Signed-off-by: Marc VĂ©ron <veron@veron.ch>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Brendan Gallagher brendan@bywatersolutions.com
C4/ItemCirculationAlertPreference.pm
acqui/neworderempty.pl
admin/item_circulation_alerts.pl
catalogue/itemsearch.pl
cataloguing/value_builder/marc21_linking_section.pl
cataloguing/value_builder/unimarc_field_4XX.pl
circ/returns.pl
koha-tmpl/intranet-tmpl/prog/en/modules/admin/item_circulation_alerts.tt
t/db_dependent/HoldsQueue.t

index 90b4cfd..4f04a25 100644 (file)
@@ -21,9 +21,10 @@ use strict;
 use warnings;
 use C4::Context;
 use C4::Category;
-use C4::ItemType;
 use Carp qw(carp croak);
 
+use Koha::ItemTypes;
+
 our $AUTOLOAD;
 
 # helper function for validating \%opts
@@ -331,7 +332,7 @@ sub grid {
     my @branch_prefs = $class->find($where);
     my @default_prefs = $class->find({ branchcode => '*', notification => $where->{notification} });
     my @cc = C4::Category->all;
-    my @it = C4::ItemType->all;
+    my @it = Koha::ItemTypes->search;
     my $notification = $where->{notification};
     my %disabled = map {
         my $key = $_->categorycode . "-" . $_->item_type . "-" . $notification;
index 4a37815..efd6648 100755 (executable)
@@ -89,6 +89,7 @@ use C4::Search qw/FindDuplicate/;
 use C4::ImportBatch qw/GetImportRecordMarc SetImportRecordStatus/;
 
 use Koha::Acquisition::Bookseller;
+use Koha::ItemTypes;
 
 our $input           = new CGI;
 my $booksellerid    = $input->param('booksellerid');   # FIXME: else ERROR!
@@ -303,7 +304,7 @@ if (C4::Context->preference('AcqCreateItem') eq 'ordering' && !$ordernumber) {
 }
 # Get the item types list, but only if item_level_itype is YES. Otherwise, it will be in the item, no need to display it in the biblio
 my @itemtypes;
-@itemtypes = C4::ItemType->all unless C4::Context->preference('item-level_itypes');
+@itemtypes = Koha::ItemTypes->search unless C4::Context->preference('item-level_itypes');
 
 if ( defined $subscriptionid ) {
     my $lastOrderReceived = GetLastOrderReceivedFromSubscriptionid $subscriptionid;
index 684a12d..ca253aa 100755 (executable)
@@ -28,24 +28,14 @@ use C4::Auth;
 use C4::Context;
 use C4::Branch;
 use C4::Category;
-use C4::ItemType;
 use C4::ItemCirculationAlertPreference;
 use C4::Output;
 
+use Koha::ItemTypes;
+
 # shortcut for long package name
 our $preferences = 'C4::ItemCirculationAlertPreference';
 
-# prepend "br_" to column name and replace spaces with "<br/>"
-sub br {
-    my ($data, @keys) = @_;
-    for (@keys) {
-        my $br = $data->{$_};
-        $br =~ s{\s+}{<br/>}g;
-        $data->{'br_'.$_} = $br;
-    }
-    $data;
-}
-
 # display item circulation alerts
 sub show {
     my ($input) = @_;
@@ -78,9 +68,7 @@ sub show {
     my @categories = (
         C4::Category->all
     );
-    my @item_types = map { br($_, 'description') }  (
-        C4::ItemType->all
-    );
+    my @item_types = Koha::ItemTypes->search;
     my $grid_checkout = $preferences->grid({ branchcode => $branch, notification => 'CHECKOUT' });
     my $grid_checkin  = $preferences->grid({ branchcode => $branch, notification => 'CHECKIN' });
 
index 9f156b2..0378e48 100755 (executable)
@@ -27,9 +27,9 @@ use C4::Items;
 use C4::Biblio;
 use C4::Branch;
 use C4::Koha;
-use C4::ItemType;
 
 use Koha::Item::Search::Field qw(GetItemSearchFields);
+use Koha::ItemTypes;
 
 my $cgi = new CGI;
 my %params = $cgi->Vars;
@@ -262,10 +262,12 @@ if ($format eq 'html') {
             label => $location->{lib} // $location->{authorised_value},
         };
     }
-    my @itemtypes = C4::ItemType->all();
-    foreach my $itemtype (@itemtypes) {
-        $itemtype->{value} = $itemtype->{itemtype};
-        $itemtype->{label} = $itemtype->{translated_description};
+    my @itemtypes;
+    foreach my $itemtype ( Koha::ItemTypes->search ) {
+        push @itemtypes, {
+            value => $itemtype->itemtype,
+            label => $itemtype->translated_description,
+        };
     }
     my $ccode_avcode = GetAuthValCode('items.ccode') || 'CCODE';
     my $ccodes = GetAuthorisedValues($ccode_avcode);
index bcb9624..b32474c 100755 (executable)
@@ -32,7 +32,8 @@ use C4::Biblio;
 use C4::Koha;
 use MARC::Record;
 use C4::Branch;
-use C4::ItemType;
+
+use Koha::ItemTypes;
 
 my $builder = sub {
     my ( $params ) = @_;
@@ -303,7 +304,7 @@ my $launcher = sub {
             }
         );
 
-        my @itemtypes = C4::ItemType->all;
+        my @itemtypes = Koha::ItemTypes->search;
 
         $template->param(
             itypeloop => \@itemtypes,
index 3fba406..092b0f1 100755 (executable)
@@ -32,7 +32,8 @@ use C4::Biblio;
 use C4::Koha;
 use MARC::Record;
 use C4::Branch;    # GetBranches
-use C4::ItemType;
+
+use Koha::ItemTypes;
 
 sub plugin_javascript {
     my ( $dbh, $record, $tagslib, $field_number, $tabloop ) = @_;
@@ -507,7 +508,7 @@ sub plugin {
             }
         );
 
-        my @itemtypes = C4::ItemType->all;
+        my @itemtypes = Koha::ItemTypes->search;
 
         $template->param(    #classlist => $classlist,
             itypeloop    => \@itemtypes,
index 21e7abd..8ff9350 100755 (executable)
@@ -265,16 +265,16 @@ if ($barcode) {
 
     # Check if we should display a checkin message, based on the the item
     # type of the checked in item
-    my $itemtype = C4::ItemType->get( $biblio->{'itemtype'} );
-    if ( $itemtype->{'checkinmsg'} ) {
+    my $itemtype = Koha::ItemTypes->find( $biblio->{'itemtype'} );
+    if ( $itemtype->checkinmsg ) {
         $template->param(
-            checkinmsg     => $itemtype->{'checkinmsg'},
-            checkinmsgtype => $itemtype->{'checkinmsgtype'},
+            checkinmsg     => $itemtype->checkinmsg,
+            checkinmsgtype => $itemtype->checkinmsgtype,
         );
     }
 
     # make sure return branch respects home branch circulation rules, default to homebranch
-    my $hbr = GetBranchItemRule($biblio->{'homebranch'}, $itemtype->{itemtype})->{'returnbranch'} || "homebranch";
+    my $hbr = GetBranchItemRule($biblio->{'homebranch'}, $itemtype->itemtype)->{'returnbranch'} || "homebranch";
     my $returnbranch = $biblio->{$hbr} ;
 
     $template->param(
index ad451e1..b55709c 100644 (file)
@@ -157,7 +157,7 @@ $(function(){
 <tr>
   <th>&nbsp;</th>
   [% FOREACH item_type IN item_types %]
-  <th>[% item_type.br_description %]</th>
+  <th>[% item_type.description %]</th>
   [% END %]
 </tr>
 </thead>
@@ -181,7 +181,7 @@ $(function(){
 <tr>
   <th>&nbsp;</th>
   [% FOREACH item_type IN item_types %]
-  <th>[% item_type.br_description %]</th>
+  <th>[% item_type.description %]</th>
   [% END %]
 </tr>
 </thead>
index 85c00b7..dd9f0b0 100755 (executable)
@@ -15,12 +15,13 @@ use Data::Dumper;
 use Test::More tests => 23;
 
 use C4::Branch;
-use C4::ItemType;
 use C4::Members;
 use Koha::Database;
 
 use t::lib::TestBuilder;
 
+use Koha::ItemTypes;
+
 BEGIN {
     use FindBin;
     use lib $FindBin::Bin;
@@ -60,10 +61,8 @@ my $borrower_branchcode = $borrower->{branchcode};
 my @branchcodes = ( $library1->{branchcode}, $library2->{branchcode}, $library3->{branchcode} );
 my @other_branches = ( $library2->{branchcode}, $library3->{branchcode} );
 my $least_cost_branch_code = pop @other_branches;
-my @item_types = C4::ItemType->all;
-my @for_loan = grep { $_->{notforloan} == 0 } @item_types
-  or BAIL_OUT("No adequate itemtype");
-my $itemtype = $for_loan[0]->{itemtype};
+my $itemtype = Koha::ItemTypes->search({ notforloan => 1 })->next;
+$itemtype or BAIL_OUT("No adequate itemtype"); #FIXME Should be $itemtype = $itemtype->itemtype
 
 #Set up the stage
 # Sysprefs and cost matrix
@@ -179,7 +178,7 @@ $dbh->do("DELETE FROM default_circ_rules");
 
 C4::Context->set_preference('UseTransportCostMatrix', 0);
 
-( $itemtype ) = @{ $dbh->selectrow_arrayref("SELECT itemtype FROM itemtypes LIMIT 1") };
+$itemtype = Koha::ItemTypes->search->next->itemtype;
 
 $library1 = $builder->build({
     source => 'Branch',
@@ -309,7 +308,7 @@ is( @$holds_queue, 3, "Holds queue filling correct number for holds for default
 #warn "HOLDS QUEUE: " . Data::Dumper::Dumper( $holds_queue );
 
 # Bug 14297
-$itemtype = $item_types[0]->{itemtype};
+$itemtype = Koha::ItemTypes->search->next->itemtype;
 $borrowernumber = $borrower3->{borrowernumber};
 my $library_A = $library1->{branchcode};
 my $library_B = $library2->{branchcode};
@@ -366,7 +365,7 @@ is( @$holds_queue, 1, "Bug 14297 - Holds Queue building ignoring holds where pic
 # End Bug 14297
 
 # Bug 15062
-$itemtype = $item_types[0]->{itemtype};
+$itemtype = Koha::ItemTypes->search->next->itemtype;
 $borrowernumber = $borrower2->{borrowernumber};
 $library_A = $library1->{branchcode};
 $library_B = $library2->{branchcode};