Bug 29697: Replace GetMarcBiblio occurrences with $biblio->metadata->record
[srvgit] / misc / migration_tools / upgradeitems.pl
1 #!/usr/bin/perl
2
3 use strict;
4 #use warnings; FIXME - Bug 2505
5
6 use Koha::Script;
7 use C4::Context;
8 use C4::Items qw( ModItemFromMarc );
9 use Koha::Biblios;
10
11 my $dbh=C4::Context->dbh;
12
13 if (C4::Context->preference("marcflavour") ne "UNIMARC") {
14     print "this script is for UNIMARC only\n";
15     exit;
16 }
17 my $rqbiblios=$dbh->prepare("SELECT biblionumber from biblioitems");
18 my $rqitemnumber=$dbh->prepare("SELECT itemnumber, biblionumber from items where itemnumber = ? and biblionumber = ?");
19
20 $rqbiblios->execute;
21 $|=1;
22 while (my ($biblionumber)= $rqbiblios->fetchrow_array){
23     my $biblio = Koha::Biblios->find($biblionumber);
24     my $record = $biblio->metadata->record;
25     foreach my $itemfield ($record->field('995')){
26         my $marcitem=MARC::Record->new();
27         $marcitem->encoding('UTF-8');
28         $marcitem->append_fields($itemfield);    
29
30         
31         my $itemnum;
32         my @itemnumbers = $itemfield->subfield('9');
33         foreach my $itemnumber ( @itemnumbers ){
34                 $rqitemnumber->execute($itemnumber, $biblionumber);
35                 if( my $row = $rqitemnumber->fetchrow_hashref ){
36                         $itemnum = $row->{itemnumber};
37                 }
38         }
39
40         eval{
41                 if($itemnum){
42                         ModItemFromMarc($marcitem,$biblionumber,$itemnum)
43                 }else{
44                         die("$biblionumber");
45                 }
46         };
47         print "\r$biblionumber";
48        if ($@){
49             warn "Problem with : $biblionumber : $@";
50             warn $record->as_formatted;
51        }    
52     }  
53 }