diff --git a/Koha/Schema/Result/Biblio.pm b/Koha/Schema/Result/Biblio.pm index 2a8c28ea3b..5f2e39930c 100644 --- a/Koha/Schema/Result/Biblio.pm +++ b/Koha/Schema/Result/Biblio.pm @@ -331,6 +331,10 @@ __PACKAGE__->many_to_many("sets", "oai_sets_biblios", "set"); # Created by DBIx::Class::Schema::Loader v0.07025 @ 2013-10-14 20:56:21 # DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:0//8OGf7OteNnwT03g4QsA +__PACKAGE__->belongs_to( + "biblioitem", + "Koha::Schema::Result::Biblioitem", + { "foreign.biblionumber" => "self.biblionumber" } +); -# You can replace this text with custom content, and it will be preserved on regeneration 1; diff --git a/Koha/Schema/Result/Item.pm b/Koha/Schema/Result/Item.pm index 4e46ac7b5f..656de69512 100644 --- a/Koha/Schema/Result/Item.pm +++ b/Koha/Schema/Result/Item.pm @@ -618,4 +618,21 @@ __PACKAGE__->belongs_to( { "foreign.biblionumber" => "self.biblionumber" } ); +__PACKAGE__->belongs_to( + "biblioitem", + "Koha::Schema::Result::Biblioitem", + { biblioitemnumber => "biblioitemnumber" }, +); + +use C4::Context; +sub itemtype { + my ( $self ) = @_; + + if ( C4::Context->preference('item-level_itypes') ) { + return $self->itype(); + } else { + return $self->biblioitem()->itemtype(); + } +} + 1; diff --git a/t/db_dependent/Items.t b/t/db_dependent/Items.t index 5ec8d3452f..a4bdd1cf5f 100755 --- a/t/db_dependent/Items.t +++ b/t/db_dependent/Items.t @@ -20,6 +20,7 @@ use Modern::Perl; use MARC::Record; use C4::Biblio; +use Koha::Database; use Test::More tests => 3; @@ -142,6 +143,42 @@ subtest 'GetHiddenItemnumbers tests' => sub { $dbh->rollback; }; +subtest q{Test Koha::Database->schema()->resultset('Item')->itemtype()} => sub { + + plan tests => 2; + + # Start transaction + $dbh->{AutoCommit} = 0; + $dbh->{RaiseError} = 1; + + my $schema = Koha::Database->new()->schema(); + + my $biblio = + $schema->resultset('Biblio')->create( + { + title => "Test title", + biblioitems => [ + { + itemtype => 'BIB_LEVEL', + items => [ { itype => "ITEM_LEVEL" } ] + } + ] + } + ); + + my $biblioitem = $biblio->biblioitem(); + my ( $item ) = $biblioitem->items(); + + C4::Context->set_preference( 'item-level_itypes', 0 ); + ok( $item->itemtype() eq 'BIB_LEVEL', '$item->itemtype() returns biblioitem.itemtype when item-level_itypes is disabled' ); + + C4::Context->set_preference( 'item-level_itypes', 1 ); + ok( $item->itemtype() eq 'ITEM_LEVEL', '$item->itemtype() returns items.itype when item-level_itypes is disabled' ); + + + $dbh->rollback; +}; + # Helper method to set up a Biblio. sub get_biblio { my $bib = MARC::Record->new();