diff --git a/Koha/SimpleMARC.pm b/Koha/SimpleMARC.pm index 2867dc1cd6..8b2fc651c4 100644 --- a/Koha/SimpleMARC.pm +++ b/Koha/SimpleMARC.pm @@ -141,8 +141,8 @@ sub copy_and_replace_field { if ( ! ( $record && $fromFieldName && $toFieldName ) ) { return; } - if ( not $fromSubfieldName or $fromSubfieldName eq '' - or not $toSubfieldName or $toSubfieldName eq '' + if ( !defined $fromSubfieldName or $fromSubfieldName eq '' + or !defined $toSubfieldName or $toSubfieldName eq '' ) { _copy_move_field( { record => $record, @@ -480,9 +480,9 @@ sub move_field { my $regex = $params->{regex}; my $field_numbers = $params->{field_numbers} // []; - if ( not $fromSubfieldName + if ( !defined $fromSubfieldName or $fromSubfieldName eq '' - or not $toSubfieldName + or !defined $toSubfieldName or $toSubfieldName eq '' ) { _copy_move_field( { record => $record, @@ -564,6 +564,7 @@ sub _delete_subfield { foreach my $field ( @fields ) { $field->delete_subfield( code => $subfieldName ); + $record->delete_field( $field ) unless $field->subfields(); } } diff --git a/t/db_dependent/MarcModificationTemplates.t b/t/db_dependent/MarcModificationTemplates.t index 7fcd222ea5..fa148f9771 100755 --- a/t/db_dependent/MarcModificationTemplates.t +++ b/t/db_dependent/MarcModificationTemplates.t @@ -700,6 +700,11 @@ sub expected_record_0 { my $record = MARC::Record->new; $record->leader('03174nam a2200445 a 4500'); my @fields = ( + MARC::Field->new( + 100, '1', ' ', + a => 'Knuth, Donald Ervin', + d => '1938', + ), MARC::Field->new( 245, '1', '4', 0 => '12345', @@ -713,9 +718,7 @@ sub expected_record_0 { 9 => '462', ), MARC::Field->new( - 600, '1', ' ', - a => 'Knuth, Donald Ervin', - d => '1938', + 600, ' ', ' ', 0 => 'TestUpdated', ), MARC::Field->new( @@ -723,9 +726,7 @@ sub expected_record_0 { 0 => 'TestUpdated', ), MARC::Field->new( - 100, '1', ' ', - a => 'Knuth, Donald Ervin', - d => '1938', + 100, ' ', ' ', 0 => 'TestUpdated', ), MARC::Field->new( @@ -733,10 +734,8 @@ sub expected_record_0 { 0 => 'TestUpdated', ), MARC::Field->new( - 700, '1', '4', + 700, ' ', ' ', 0 => '12345', - a => 'The art of computer programming', - c => 'Donald E. Knuth.', ), ); $record->append_fields(@fields);