@@ -, +, @@ items etc. have not been copied to new item --- Koha/UI/Form/Builder/Item.pm | 14 +++++++- cataloguing/additem.pl | 5 +++ t/db_dependent/Koha/UI/Form/Builder/Item.t | 37 +++++++++++++++++++++- 3 files changed, 54 insertions(+), 2 deletions(-) --- a/Koha/UI/Form/Builder/Item.pm +++ a/Koha/UI/Form/Builder/Item.pm @@ -455,6 +455,14 @@ Flag to add an empty option to the library list. =back +=item ignore_invisible_subfields + +Skip the subfields that are not visible on the editor. + +When duplicating an item we do not want to retrieve the subfields that are hidden. + +=back + =cut sub edit_form { @@ -469,6 +477,7 @@ sub edit_form { my $prefill_with_default_values = $params->{prefill_with_default_values}; my $branch_limit = $params->{branch_limit}; my $default_branches_empty = $params->{default_branches_empty}; + my $ignore_invisible_subfields = $params->{ignore_invisible_subfields} || 0; my $libraries = Koha::Libraries->search( {}, { order_by => ['branchname'] } )->unblessed; @@ -500,6 +509,10 @@ sub edit_form { if grep { $subfield->{kohafield} && $subfield->{kohafield} eq $_ } @$kohafields_to_ignore; + next + if $ignore_invisible_subfields + && ( $subfield->{hidden} > 4 || $subfield->{hidden} <= -4 ); + my $readonly; if ( @$subfields_to_allow && !grep { @@ -507,7 +520,6 @@ sub edit_form { } @$subfields_to_allow ) { - next if $ignore_not_allowed_subfields; $readonly = 1 if $restricted_edition; } --- a/cataloguing/additem.pl +++ a/cataloguing/additem.pl @@ -626,6 +626,11 @@ my $subfields = ), prefill_with_default_values => 1, branch_limit => C4::Context->userenv->{"branch"}, + ( + $op eq 'dupeitem' + ? ( ignore_invisible_subfields => 1 ) + : () + ), } ); --- a/t/db_dependent/Koha/UI/Form/Builder/Item.t +++ a/t/db_dependent/Koha/UI/Form/Builder/Item.t @@ -16,7 +16,7 @@ # along with Koha; if not, see . use Modern::Perl; -use Test::More tests => 7; +use Test::More tests => 8; use Data::Dumper qw( Dumper ); use utf8; @@ -298,6 +298,41 @@ subtest 'subfields_to_allow & ignore_not_allowed_subfields' => sub { is( $subfield, undef, "subfield that is not in the allow list is not returned" ); }; +subtest 'ignore_invisible_subfields' => sub { + plan tests => 2; + + my $biblio = + $builder->build_sample_biblio( { value => { frameworkcode => '' } } ); + my $item = $builder->build_sample_item( + { + issues => 42, + } + ); + + # items.issues is mapped with 952$l + my $subfields = Koha::UI::Form::Builder::Item->new( + { + biblionumber => $biblio->biblionumber, + item => $item->unblessed, + } + )->edit_form; + ( my $subfield ) = grep { $_->{subfield} eq 'l' } @$subfields; + is( $subfield->{marc_value}->{value}, 42, 'items.issues copied' ); + + $subfields = Koha::UI::Form::Builder::Item->new( + { + biblionumber => $biblio->biblionumber, + item => $item->unblessed, + } + )->edit_form( + { + ignore_invisible_subfields => 1 + } + ); + ($subfield) = grep { $_->{subfield} eq 'l' } @$subfields; + is( $subfield->{marc_value}->{value}, + undef, 'items.issues not copied if ignore_invisible_subfields is passed' ); +}; $cache->clear_from_cache("MarcStructure-0-"); $cache->clear_from_cache("MarcStructure-1-"); --