rel_3_0 moved to HEAD (introducing new files)
[koha.git] / misc / migration_tools / 22_to_30 / missing090field.pl
1 #!/usr/bin/perl
2 # This script finds and fixes missing 090 fields in Koha for MARC21
3 #  Written by TG on 01/10/2005
4 #  Revised by Joshua Ferraro on 03/31/2006
5 use strict;
6
7 # Koha modules used
8
9 use C4::Context;
10 use C4::Biblio;
11 use MARC::Record;
12 use MARC::File::USMARC;
13
14 $|=1;
15 my $dbh = C4::Context->dbh;
16
17 my $sth=$dbh->prepare("select m.biblionumber,b.biblioitemnumber from marc_biblio m left join biblioitems b on b.biblionumber=m.biblionumber");
18         $sth->execute();
19
20 my $i=1;
21 while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
22  my $record = GetMarcBiblio($biblionumber);
23     print ".";  
24     print "\r$i" unless $i %100;
25     MARCmodbiblionumber($biblionumber,$biblioitemnumber,$record);
26 }
27
28 sub MARCmodbiblionumber{
29     my ($biblionumber,$biblioitemnumber,$record)=@_;
30     
31     my ($tagfield,$biblionumtagsubfield) = &MARCfind_marc_from_kohafield($dbh,"biblio.biblionumber","");
32     my ($tagfield2,$biblioitemtagsubfield) = &MARCfind_marc_from_kohafield($dbh,"biblio.biblioitemnumber","");
33         
34     my $update=0;
35         my @tags = $record->field($tagfield);
36     
37     if (!@tags){
38         my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield => $biblionumber,$biblioitemtagsubfield=>$biblioitemnumber);
39             $record->append_fields($newrec);
40         $update=1;
41     }
42     
43     
44     if ($update){       
45         &MARCmodbiblio($dbh,$biblionumber,$record,'',0);
46         print "\n modified : $biblionumber \n"; 
47     }
48     
49 }
50 END;