From 5f34dd06ec66b11a914e49eb611714ea4c72771d Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 8 Nov 2018 14:49:10 +0100 Subject: [PATCH] Bug 21774: Cloned item subfields disappear when editing an item Bug 10306 changed behavior on cloning item subfields by no longer splitting constructions like 'A | B' in item fields like ccode. If it is really recommended to clone item subfields, I am not so sure about. But this patch at least restores the possibility to do so while we discuss if we should ;) Test plan: [1] Run Items.t [2] Make an item subfield repeatable in framework. And test edit items. Signed-off-by: Marcel de Rooy Signed-off-by: Fridolin Somers Signed-off-by: Tomas Cohen Arazi Works as expected. Also fixes the display of collections on the items table (on editing items). Signed-off-by: Nick Clemens --- C4/Items.pm | 4 +--- t/db_dependent/Items.t | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/C4/Items.pm b/C4/Items.pm index cf05a4c207..3b006c686e 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -1348,9 +1348,7 @@ sub Item2Marc { } keys %{ $itemrecord } }; my $framework = C4::Biblio::GetFrameworkCode( $biblionumber ); - my $itemmarc = C4::Biblio::TransformKohaToMarc( - $mungeditem, { no_split => 1}, - ); + my $itemmarc = C4::Biblio::TransformKohaToMarc( $mungeditem ); # Bug 21774: no_split parameter removed to allow cloned subfields my ( $itemtag, $itemsubfield ) = C4::Biblio::GetMarcFromKohaField( "items.itemnumber", $framework, ); diff --git a/t/db_dependent/Items.t b/t/db_dependent/Items.t index a7a3a7fbc6..bc7aaa9feb 100755 --- a/t/db_dependent/Items.t +++ b/t/db_dependent/Items.t @@ -33,7 +33,7 @@ use Koha::Caches; use t::lib::Mocks; use t::lib::TestBuilder; -use Test::More tests => 14; +use Test::More tests => 15; use Test::Warn; @@ -934,6 +934,28 @@ subtest 'Check add_to_rota method' => sub { $schema->storage->txn_rollback; }; +subtest 'Split subfields in Item2Marc (Bug 21774)' => sub { + plan tests => 3; + $schema->storage->txn_begin; + + my $builder = t::lib::TestBuilder->new; + my $biblio = $builder->build({ source => 'Biblio', value => { frameworkcode => q{} } }); + my $item = $builder->build({ source => 'Item', value => { biblionumber => $biblio->{biblionumber}, ccode => 'A|B' } }); + + Koha::MarcSubfieldStructures->search({ tagfield => '952', tagsubfield => '8' })->delete; # theoretical precaution + Koha::MarcSubfieldStructures->search({ kohafield => 'items.ccode' })->delete; + my $mapping = Koha::MarcSubfieldStructure->new({ frameworkcode => q{}, tagfield => '952', tagsubfield => '8', kohafield => 'items.ccode' })->store; + + # Start testing + my $marc = C4::Items::Item2Marc( $item, $biblio->{biblionumber} ); + my @subs = $marc->subfield( $mapping->tagfield, $mapping->tagsubfield ); + is( @subs, 2, 'Expect two subfields' ); + is( $subs[0], 'A', 'First subfield matches' ); + is( $subs[1], 'B', 'Second subfield matches' ); + + $schema->storage->txn_rollback; +}; + # Helper method to set up a Biblio. sub get_biblio { my ( $frameworkcode ) = @_; -- 2.39.5