@@ -, +, @@ --- C4/AuthoritiesMarc.pm | 10 ++++++++++ 1 files changed, 10 insertions(+), 0 deletions(-) --- a/C4/AuthoritiesMarc.pm +++ a/C4/AuthoritiesMarc.pm @@ -1300,6 +1300,13 @@ sub merge { $oConnection->destroy(); } #warn scalar(@reccache)." biblios to update"; + #Get a list of authority controlled subfields + $sth = $dbh->prepare("select distinct tagsubfield from auth_subfield_structure where authtypecode=? and tagfield=? and tab >=0"); + $sth->execute($authtypecodeto, $auth_tag_to_report_to); + my @subfields_controlled_by_auth_to; + while (my ($tagsubfield) = $sth->fetchrow) { + push @subfields_controlled_by_auth_to, $tagsubfield ; + } # Get All candidate Tags for the change # (This will reduce the search scope in marc records). $sth = $dbh->prepare("select distinct tagfield from marc_subfield_structure where authtypecode=?"); @@ -1332,6 +1339,9 @@ sub merge { $field_to->add_subfields($subfield->[0] =>$subfield->[1]); $exclude.= $subfield->[0]; } + foreach my $subt (@subfields_controlled_by_auth_to) { + $exclude.= $subt; + } $exclude='['.$exclude.']'; # add subfields in $field not included in @record_to my @restore= grep {$_->[0]!~/$exclude/} $field->subfields(); --