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

Reply via email to