@@ -, +, @@ ACQ framework --- C4/Acquisition.pm | 24 ++++++++++++++++------ t/db_dependent/Acquisition/FillWithDefaultValues.t | 9 ++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) --- a/C4/Acquisition.pm +++ a/C4/Acquisition.pm @@ -3282,18 +3282,30 @@ sub FillWithDefaultValues { my @fields = $record->field($tag); if (@fields) { for my $field (@fields) { - unless ( defined $field->subfield($subfield) ) { + if ( $field->is_control_field ) { + $field->update($defaultvalue) if not defined $field->data; + } + elsif ( not defined $field->subfield($subfield) ) { $field->add_subfields( $subfield => $defaultvalue ); } } } else { - $record->insert_fields_ordered( - MARC::Field->new( - $tag, '', '', $subfield => $defaultvalue - ) - ); + if ( $tag < 10 ) { # is_control_field + $record->insert_fields_ordered( + MARC::Field->new( + $tag, $defaultvalue + ) + ); + } + else { + $record->insert_fields_ordered( + MARC::Field->new( + $tag, '', '', $subfield => $defaultvalue + ) + ); + } } } } --- a/t/db_dependent/Acquisition/FillWithDefaultValues.t +++ a/t/db_dependent/Acquisition/FillWithDefaultValues.t @@ -19,6 +19,11 @@ $biblio_module->mock( 'GetMarcStructure', sub { { + # default for a control field + '008' => { + x => { defaultvalue => $default_x }, + }, + # default value for an existing field '245' => { c => { defaultvalue => $default_author }, @@ -40,6 +45,10 @@ my $record = MARC::Record->new; $record->leader('03174nam a2200445 a 4500'); my @fields = ( MARC::Field->new( + '008', '1', ' ', + '@' => '120829t20132012nyu bk 001 0ceng', + ), + MARC::Field->new( 100, '1', ' ', a => 'Knuth, Donald Ervin', d => '1938', --