fixing nomenclature on files in misc/, adding a few new utilities
[wip/koha-chris_n.git] / misc / batchRepairMissingBiblionumbers.pl
1 #!/usr/bin/perl
2 # This script finds and fixes missing biblionumber/biblioitemnumber fields in Koha
3 #  Written by TG on 01/10/2005
4 #  Revised by Joshua Ferraro on 03/31/2006
5 use strict;
6 BEGIN {
7     # find Koha's Perl modules
8     # test carefully before changing this
9     use FindBin;
10     eval { require "$FindBin::Bin/kohalib.pl" };
11 }
12
13 # Koha modules used
14
15 use C4::Context;
16 use C4::Biblio;
17 use MARC::Record;
18 use MARC::File::USMARC;
19
20
21 my $dbh = C4::Context->dbh;
22
23 my $sth=$dbh->prepare("select m.biblionumber,b.biblioitemnumber from marc_biblio m left join biblioitems b on b.biblionumber=m.biblionumber ");
24     $sth->execute();
25
26 while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
27  my $record = GetMarcBiblio($biblionumber);
28     
29         MARCmodbiblionumber($biblionumber,$biblioitemnumber,$record);
30     
31 }
32
33 sub MARCmodbiblionumber{
34 my ($biblionumber,$biblioitemnumber,$record)=@_;
35
36 my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField("biblio.biblionumber","");
37 my ($tagfield2,$biblioitemtagsubfield) = &GetMarcFromKohaField("biblio.biblioitemnumber","");
38     
39 my $update=0;
40       my @tags = $record->field($tagfield);
41
42 if (!@tags){
43          
44 my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield => $biblionumber,$biblioitemtagsubfield=>$biblioitemnumber);
45     $record->append_fields($newrec);
46  $update=1;
47     }
48
49  
50 if ($update){    
51 &ModBiblioMarc($record,'',$biblionumber);
52     print "$biblionumber \n";
53     }
54
55 }
56 END;