[Koha-patches] [PATCH] batchRepairBiblionumbers was using an outdated table :

Nahuel ANGELINETTI nahuel.angelinetti at biblibre.com
Sat Apr 18 17:57:08 CEST 2009


From: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>

---
 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




More information about the Koha-patches mailing list