Lines 1447-1454
sub merge {
Link Here
|
1447 |
# We only need it in loose merge mode; replaces the former $exclude |
1447 |
# We only need it in loose merge mode; replaces the former $exclude |
1448 |
? {} |
1448 |
? {} |
1449 |
: { map { ( $_->[0], 1 ); } ( @record_from, @record_to ) }; |
1449 |
: { map { ( $_->[0], 1 ); } ( @record_from, @record_to ) }; |
1450 |
# And we need to add $9 in order not to duplicate |
|
|
1451 |
$skip_subfields->{9} = 1 if !$overwrite; |
1452 |
|
1450 |
|
1453 |
my $counteditedbiblio = 0; |
1451 |
my $counteditedbiblio = 0; |
1454 |
foreach my $biblionumber ( @biblionumbers ) { |
1452 |
foreach my $biblionumber ( @biblionumbers ) { |
Lines 1477-1494
sub merge {
Link Here
|
1477 |
$newtag, |
1475 |
$newtag, |
1478 |
$field->indicator(1), |
1476 |
$field->indicator(1), |
1479 |
$field->indicator(2), |
1477 |
$field->indicator(2), |
1480 |
"9" => $mergeto, |
1478 |
9 => $mergeto, # Needed to create field, will be moved |
1481 |
); |
1479 |
); |
1482 |
foreach my $subfield ( grep { $_->[0] ne '9' } @record_to ) { |
1480 |
my ( @prefix, @postfix ); |
1483 |
$field_to->add_subfields( $subfield->[0] => $subfield->[1] ); |
|
|
1484 |
} |
1485 |
if ( !$overwrite ) { |
1481 |
if ( !$overwrite ) { |
1486 |
# add subfields back in loose mode, check skip_subfields |
1482 |
# add subfields back in loose mode, check skip_subfields |
|
|
1483 |
# The first extra subfields will be in front of the |
1484 |
# controlled block, the rest at the end. |
1485 |
my $prefix_flag = 1; |
1487 |
foreach my $subfield ( $field->subfields ) { |
1486 |
foreach my $subfield ( $field->subfields ) { |
1488 |
next if $skip_subfields->{ $subfield->[0] }; |
1487 |
next if $subfield->[0] eq '9'; # skip but leave flag |
1489 |
$field_to->add_subfields( $subfield->[0], $subfield->[1] ); |
1488 |
if ( $skip_subfields->{ $subfield->[0] } ) { |
|
|
1489 |
# This marks the beginning of the controlled block |
1490 |
$prefix_flag = 0; |
1491 |
next; |
1492 |
} |
1493 |
if ($prefix_flag) { |
1494 |
push @prefix, [ $subfield->[0], $subfield->[1] ]; |
1495 |
} else { |
1496 |
push @postfix, [ $subfield->[0], $subfield->[1] ]; |
1497 |
} |
1490 |
} |
1498 |
} |
1491 |
} |
1499 |
} |
|
|
1500 |
foreach my $subfield ( @prefix, @record_to, @postfix ) { |
1501 |
$field_to->add_subfields($subfield->[0] => $subfield->[1]); |
1502 |
} |
1503 |
# Move $9 to the end |
1504 |
$field_to->delete_subfield( code => '9' ); |
1505 |
$field_to->add_subfields( 9 => $mergeto ); |
1506 |
|
1492 |
if ($tags_new && @$tags_new) { |
1507 |
if ($tags_new && @$tags_new) { |
1493 |
$marcrecord->delete_field($field); |
1508 |
$marcrecord->delete_field($field); |
1494 |
append_fields_ordered( $marcrecord, $field_to ); |
1509 |
append_fields_ordered( $marcrecord, $field_to ); |
1495 |
- |
|
|