Lines 1407-1413
sub AddAuthorityTrees{
Link Here
|
1407 |
|
1407 |
|
1408 |
=head2 merge |
1408 |
=head2 merge |
1409 |
|
1409 |
|
1410 |
$ref= &merge(mergefrom,$MARCfrom,$mergeto,$MARCto) |
1410 |
$ref= &merge(mergefrom,$MARCfrom,$mergeto,$MARCto,$overwrite) |
1411 |
|
1411 |
|
1412 |
Could add some feature : Migrating from a typecode to an other for instance. |
1412 |
Could add some feature : Migrating from a typecode to an other for instance. |
1413 |
Then we should add some new parameter : bibliotargettag, authtargettag |
1413 |
Then we should add some new parameter : bibliotargettag, authtargettag |
Lines 1415-1421
Then we should add some new parameter : bibliotargettag, authtargettag
Link Here
|
1415 |
=cut |
1415 |
=cut |
1416 |
|
1416 |
|
1417 |
sub merge { |
1417 |
sub merge { |
1418 |
my ($mergefrom,$MARCfrom,$mergeto,$MARCto) = @_; |
1418 |
my ($mergefrom,$MARCfrom,$mergeto,$MARCto,$overwrite) = @_; |
|
|
1419 |
$overwrite = C4::Context->preference('overwriteSubfieldsOnMerge') unless defined $overwrite; |
1419 |
my ($counteditedbiblio,$countunmodifiedbiblio,$counterrors)=(0,0,0); |
1420 |
my ($counteditedbiblio,$countunmodifiedbiblio,$counterrors)=(0,0,0); |
1420 |
my $dbh=C4::Context->dbh; |
1421 |
my $dbh=C4::Context->dbh; |
1421 |
my $authtypecodefrom = GetAuthTypeCode($mergefrom); |
1422 |
my $authtypecodefrom = GetAuthTypeCode($mergefrom); |
Lines 1491-1507
sub merge {
Link Here
|
1491 |
my $tag=$field->tag(); |
1492 |
my $tag=$field->tag(); |
1492 |
if ($auth_number==$mergefrom) { |
1493 |
if ($auth_number==$mergefrom) { |
1493 |
my $field_to=MARC::Field->new(($tag_to?$tag_to:$tag),$field->indicator(1),$field->indicator(2),"9"=>$mergeto); |
1494 |
my $field_to=MARC::Field->new(($tag_to?$tag_to:$tag),$field->indicator(1),$field->indicator(2),"9"=>$mergeto); |
1494 |
my $exclude='9'; |
1495 |
my $exclude='9'; |
1495 |
foreach my $subfield (grep {$_->[0] ne '9'} @record_to) { |
1496 |
foreach my $subfield (grep {$_->[0] ne '9'} @record_to) { |
1496 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
1497 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
1497 |
$exclude.= $subfield->[0]; |
1498 |
$exclude.= $subfield->[0]; |
1498 |
} |
1499 |
} |
1499 |
$exclude='['.$exclude.']'; |
1500 |
$exclude='['.$exclude.']'; |
1500 |
# add subfields in $field not included in @record_to |
1501 |
unless($overwrite) { |
1501 |
my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); |
1502 |
# add subfields in $field not included in @record_to |
1502 |
foreach my $subfield (@restore) { |
1503 |
my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); |
1503 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
1504 |
foreach my $subfield (@restore) { |
1504 |
} |
1505 |
$field_to->add_subfields($subfield->[0] =>$subfield->[1]); |
|
|
1506 |
} |
1507 |
} |
1508 |
|
1505 |
$marcrecord->delete_field($field); |
1509 |
$marcrecord->delete_field($field); |
1506 |
$marcrecord->insert_grouped_field($field_to); |
1510 |
$marcrecord->insert_grouped_field($field_to); |
1507 |
$update=1; |
1511 |
$update=1; |