@@ -, +, @@ after all are copied - Delete the first 651, there were none, so nothing happened - Take the first 650, add it to the end of the 651 group (there were none, so it became the first 651) - Delete the first 651, which was the field we just copied - Take the second 650 and add it to the end of the 651 group (whihc had none, because we deleted it) --- Koha/SimpleMARC.pm | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) --- a/Koha/SimpleMARC.pm +++ a/Koha/SimpleMARC.pm @@ -575,13 +575,7 @@ sub _copy_move_field { @from_fields = map { $_ <= @from_fields ? $from_fields[ $_ - 1 ] : () } @$field_numbers; } - if ( $action eq 'replace' ) { - my @to_fields = $record->field( $toFieldName ); - for my $to_field ( @to_fields ) { - $record->delete_field( $to_field ); - } - } - + my @new_fields; for my $from_field ( @from_fields ) { my $new_field = $from_field->clone; $new_field->{_tag} = $toFieldName; # Should be replaced by set_tag, introduced by MARC::Field 2.0.4 @@ -595,8 +589,15 @@ sub _copy_move_field { if ( $action eq 'move' ) { $record->delete_field( $from_field ) } - $record->insert_grouped_field( $new_field ); + elsif ( $action eq 'replace' ) { + my @to_fields = $record->field( $toFieldName ); + if( @to_fields ) { + $record->delete_field( $to_fields[0] ); + } + } + unshift @new_fields, $new_field; } + $record->insert_fields_ordered( @new_fields ); } sub _copy_move_subfield { --