=cut
sub copy_field {
- my ( $record, $fromFieldName, $fromSubfieldName, $toFieldName, $toSubfieldName, $regex, $n ) = @_;
+ my ( $record, $fromFieldName, $fromSubfieldName, $toFieldName, $toSubfieldName, $regex, $n, $dont_erase ) = @_;
C4::Koha::Log( "C4::SimpleMARC::copy_field( '$record', '$fromFieldName', '$fromSubfieldName', '$toFieldName', '$toSubfieldName', '$regex', '$n' )" ) if $debug;
if ( ! ( $record && $fromFieldName && $toFieldName ) ) { return; }
}
}
- update_field( $record, $toFieldName, $toSubfieldName, @values );
+ update_field( $record, $toFieldName, $toSubfieldName, @values, $dont_erase );
}
=cut
sub update_field {
- my ( $record, $fieldName, $subfieldName, @values ) = @_;
+ my ( $record, $fieldName, $subfieldName, @values, $dont_erase ) = @_;
C4::Koha::Log( "C4::SimpleMARC::update_field( $record, $fieldName, $subfieldName, @values )" ) if $debug;
if ( ! ( $record && $fieldName ) ) { return; }
my $field;
if ( $subfieldName ) {
if ( my @fields = $record->field( $fieldName ) ) {
- foreach my $field ( @fields ) {
- $field->update( "$subfieldName" => $values[$i++] );
+ unless ( $dont_erase ) {
+ foreach my $field ( @fields ) {
+ $field->update( "$subfieldName" => $values[$i++] );
+ }
+ }
+ if ( $i <= scalar @values - 1 ) {
+ foreach my $field ( @fields ) {
+ foreach my $j ( $i .. scalar( @values ) - 1) {
+ $field->add_subfields( "$subfieldName" => $values[$j] );
+ }
+ }
}
} else {
## Field does not exist, create it.
sub move_field {
my ( $record, $fromFieldName, $fromSubfieldName, $toFieldName, $toSubfieldName, $regex, $n ) = @_;
C4::Koha::Log( "C4::SimpleMARC::move_field( '$record', '$fromFieldName', '$fromSubfieldName', '$toFieldName', '$toSubfieldName', '$regex', '$n' )" ) if $debug;
- copy_field( $record, $fromFieldName, $fromSubfieldName, $toFieldName, $toSubfieldName, $regex, $n );
+ copy_field( $record, $fromFieldName, $fromSubfieldName, $toFieldName, $toSubfieldName, $regex, $n , "don't_erase");
delete_field( $record, $fromFieldName, $fromSubfieldName, $n );
}