Bug 29697: Replace GetMarcBiblio occurrences with $biblio->metadata->record
[srvgit] / misc / migration_tools / 22_to_30 / missing090field.pl
index 218ce8b..32a11e7 100755 (executable)
@@ -3,30 +3,26 @@
 #  Written by TG on 01/10/2005
 #  Revised by Joshua Ferraro on 03/31/2006
 use strict;
-BEGIN {
-    # find Koha's Perl modules
-    # test carefully before changing this
-    use FindBin;
-    eval { require "$FindBin::Bin/../../kohalib.pl" };
-}
+#use warnings; FIXME - Bug 2505
 
 # Koha modules used
 
 use C4::Context;
-use C4::Biblio;
-use MARC::Record;
+use C4::Biblio qw( GetMarcFromKohaField ModBiblioMarc );
+use Koha::Biblios;
 use MARC::File::USMARC;
 
 $|=1;
 my $dbh = C4::Context->dbh;
 
-my $sth=$dbh->prepare("select m.biblionumber,b.biblioitemnumber from biblio m left join biblioitems b on b.biblionumber=m.biblionumber");
+my $sth=$dbh->prepare("SELECT biblionumber, biblioitemnumber FROM biblioitems");
 $sth->execute();
 
 my $i=1;
 while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
- my $record = GetMarcBiblio($biblionumber);
-    print "."; 
+ my $biblio = Koha::Biblios->find($biblionumber);
+ my $record = $biblio->metadata->record;
+    print ".";
     print "\r$i" unless $i %100;
     MARCmodbiblionumber($biblionumber,$biblioitemnumber,$record);
 }
@@ -34,40 +30,46 @@ while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
 sub MARCmodbiblionumber{
     my ($biblionumber,$biblioitemnumber,$record)=@_;
     
-    my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField("biblio.biblionumber","");
-    my ($tagfield2,$biblioitemtagsubfield) = &GetMarcFromKohaField("biblio.biblioitemnumber","");
+    return unless $record;
+
+    my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField( "biblio.biblionumber" );
+    my ($tagfield2,$biblioitemtagsubfield) = &GetMarcFromKohaField( "biblio.biblioitemnumber" );
         
     my $update=0;
-    my $tag = $record->field($tagfield);
-#     warn "ICI : ".$record->as_formatted if $record->subfield('090','a') eq '11546';
+    if (defined $record) {
+        my $tag = $record->field($tagfield);
+        #warn "ICI : ".$record->as_formatted if $record->subfield('090','a') eq '11546';
     
-# check that we have biblionumber at the right place, otherwise, update or create the field.
-    if ($tagfield <10) {
-        unless ($tag && $tag->data() == $biblionumber) {
-            if ($tag) {
-                $tag->update($biblionumber);
-            } else {
-                my $newrec = MARC::Field->new( $tagfield, $biblionumber);
-                $record->insert_fields_ordered($newrec);
+        # check that we have biblionumber at the right place, otherwise, update or create the field.
+        if ($tagfield <10) {
+            unless ($tag && $tag->data() == $biblionumber) {
+                if ($tag) {
+                    $tag->update($biblionumber);
+                } else {
+                    my $newrec = MARC::Field->new( $tagfield, $biblionumber);
+                    $record->insert_fields_ordered($newrec);
+                }
+                $update=1;
             }
-            $update=1;
-        }
-    } else {
-        unless ($tag && $tag->subfield($biblionumtagsubfield) == $biblionumber) {
-            if($tag) {
-                $tag->update($tagfield => $biblionumber);
-            } else {
-                my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield => $biblionumber,$biblioitemtagsubfield=>$biblioitemnumber);
-                $record->insert_fields_ordered($newrec);
+        } else {
+            unless ($tag && $tag->subfield($biblionumtagsubfield) == $biblionumber) {
+                if($tag) {
+                    $tag->update($tagfield => $biblionumber);
+                } else {
+                    my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield => $biblionumber,$biblioitemtagsubfield=>$biblioitemnumber);
+                    $record->insert_fields_ordered($newrec);
+                }
+                $update=1;
             }
-            $update=1;
         }
+    } else {
+        warn "problem with :".$biblionumber." , record undefined";
     }
-    
-    
-    if ($update){      
-        &ModBiblioMarc($record,$biblionumber,'');
-        print "\n modified : $biblionumber \n";        
+
+
+    if ($update){
+        &ModBiblioMarc($record,$biblionumber);
+        print "\n modified : $biblionumber \n";
     }
     
 }