From: Henri-Damien LAURENT <[email protected]>
---
misc/batchRepairMissingBiblionumbers.pl | 55 +++++++++++++++++++++---------
1 files changed, 38 insertions(+), 17 deletions(-)
diff --git a/misc/batchRepairMissingBiblionumbers.pl
b/misc/batchRepairMissingBiblionumbers.pl
index 920f593..9fe0d73 100755
--- a/misc/batchRepairMissingBiblionumbers.pl
+++ b/misc/batchRepairMissingBiblionumbers.pl
@@ -19,8 +19,13 @@ use MARC::File::USMARC;
my $dbh = C4::Context->dbh;
-
-my $sth=$dbh->prepare("select m.biblionumber,b.biblioitemnumber from
marc_biblio m left join biblioitems b on b.biblionumber=m.biblionumber ");
+my %kohafields;
+foreach my $kohafield qw(biblio.biblionumber biblioitems.biblioitemnumber){
+ my %hash;
+ @hash{qw(tag subfield)} = &GetMarcFromKohaField("$kohafield","");
+ $kohafields{$kohafield}=\%hash;
+}
+my $sth=$dbh->prepare("select biblionumber,biblioitemnumber from biblioitems
");
$sth->execute();
while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
@@ -32,25 +37,41 @@ while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow
){
sub MARCmodbiblionumber{
my ($biblionumber,$biblioitemnumber,$record)=...@_;
-
-my ($tagfield,$biblionumtagsubfield) =
&GetMarcFromKohaField("biblio.biblionumber","");
-my ($tagfield2,$biblioitemtagsubfield) =
&GetMarcFromKohaField("biblio.biblioitemnumber","");
-
+$kohafields{'biblio.biblionumber'}{'value'}=$biblionumber;
+$kohafields{'biblioitems.biblioitemnumber'}{'value'}=$biblioitemnumber;
my $update=0;
- my @tags = $record->field($tagfield);
-
-if (!...@tags){
-
-my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield =>
$biblionumber,$biblioitemtagsubfield=>$biblioitemnumber);
- $record->append_fields($newrec);
- $update=1;
- }
-
-
+foreach my $kohafield (keys %kohafields){
+ my $tag=$kohafields{$kohafield}{'tag'};
+ my $subfield=$kohafields{$kohafield}{'subfield'};
+ my @tags = $record->field($tag);
+ if (!...@tags){
+ if ($tag>010){
+ my $newrec = MARC::Field->new( $tag,'','', $subfield =>
$kohafields{$kohafield}{'value'});
+ $record->append_fields($newrec);
+ $update=1;
+ }
+ else {
+ my $newrec = MARC::Field->new( $tag,
$kohafields{$kohafield}{'value'});
+ $record->append_fields($newrec);
+ $update=1;
+ }
+ }
+ else{
+ if (@tags>1){
+ warn "too many tags for $biblionumber $biblioitemnumber
$tag $subfield";
+ }
+ elsif ($tag>010) {
+ $record->field($tag)->update($subfield,
$kohafields{$kohafield}{'value'});
+ $update=1
+ }
+ else {
+ next;
+ }
+ }
+}
if ($update){
&ModBiblioMarc($record,'',$biblionumber);
print "$biblionumber \n";
}
-
}
END;
--
1.5.6.3
_______________________________________________
Koha-patches mailing list
[email protected]
http://lists.koha.org/mailman/listinfo/koha-patches