Bug 31203: Add End action to cronjobs and log viewer
[koha-ffzg.git] / misc / batchRepairMissingBiblionumbers.pl
index 920f593..97d619c 100755 (executable)
@@ -3,54 +3,31 @@
 #  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;
 
 # Koha modules used
-
+use Koha::Script;
 use C4::Context;
-use C4::Biblio;
-use MARC::Record;
-use MARC::File::USMARC;
+use C4::Biblio qw( ModBiblioMarc );
+use Koha::Biblios;
 
 
 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 ");
-    $sth->execute();
-
-while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
- my $record = GetMarcBiblio($biblionumber);
-    
-        MARCmodbiblionumber($biblionumber,$biblioitemnumber,$record);
-    
-}
-
-sub MARCmodbiblionumber{
-my ($biblionumber,$biblioitemnumber,$record)=@_;
-
-my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField("biblio.biblionumber","");
-my ($tagfield2,$biblioitemtagsubfield) = &GetMarcFromKohaField("biblio.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;
-    }
-
-if ($update){    
-&ModBiblioMarc($record,'',$biblionumber);
-    print "$biblionumber \n";
+my $sth=$dbh->prepare("SELECT biblio.biblionumber, biblioitemnumber, frameworkcode FROM biblio JOIN biblioitems USING (biblionumber)");
+$sth->execute();
+
+while (my ($biblionumber,$biblioitemnumber,$frameworkcode)=$sth->fetchrow ){
+    my $biblio = Koha::Biblios->find($biblionumber);
+    my $record = $biblio->metadata->record;
+    C4::Biblio::_koha_marc_update_bib_ids($record, $frameworkcode, $biblionumber, $biblioitemnumber);
+    my $biblionumber = eval {ModBiblioMarc( $record, $biblionumber )};
+    if($@){
+        print "Problem with biblionumber : $biblionumber\n";
+        exit -1;
+    }else{
+        print "biblionumber : $biblionumber\r\r";
     }
-
 }
+
 END;