[Koha-patches] [PATCH] (bug #4518) enhance 2.2 to 3.0 scripts

Nahuel ANGELINETTI nahuel.angelinetti at biblibre.com
Mon May 17 15:43:37 CEST 2010


---
 misc/migration_tools/22_to_30/missing090field.pl   |    4 ++-
 .../22_to_30/move_marc_to_authheader.pl            |    2 +-
 misc/migration_tools/upgradeitems.pl               |   25 +++++++++++++++++--
 3 files changed, 26 insertions(+), 5 deletions(-)

diff --git a/misc/migration_tools/22_to_30/missing090field.pl b/misc/migration_tools/22_to_30/missing090field.pl
index 218ce8b..9e048d3 100755
--- a/misc/migration_tools/22_to_30/missing090field.pl
+++ b/misc/migration_tools/22_to_30/missing090field.pl
@@ -20,7 +20,7 @@ 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;
@@ -34,6 +34,8 @@ while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
 sub MARCmodbiblionumber{
     my ($biblionumber,$biblioitemnumber,$record)=@_;
     
+    return unless $record;
+
     my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField("biblio.biblionumber","");
     my ($tagfield2,$biblioitemtagsubfield) = &GetMarcFromKohaField("biblio.biblioitemnumber","");
         
diff --git a/misc/migration_tools/22_to_30/move_marc_to_authheader.pl b/misc/migration_tools/22_to_30/move_marc_to_authheader.pl
index deffc70..37d7ee4 100755
--- a/misc/migration_tools/22_to_30/move_marc_to_authheader.pl
+++ b/misc/migration_tools/22_to_30/move_marc_to_authheader.pl
@@ -42,7 +42,7 @@ while ( my ( $authid,$authtypecode ) = $sth->fetchrow ) {
     $string=~s/\-//g;
     $string = sprintf("%-*s",26, $string);
     substr($string,9,6,"frey50");
-    unless ($record->subfield(100,"a")){
+    unless ($record->subfield(100,"a") and length($record->subfield(100,"a")) == 26 ){
       $record->insert_fields_ordered(MARC::Field->new(100,"","","a"=>$string));
     }
     if ($record->field(152)){
diff --git a/misc/migration_tools/upgradeitems.pl b/misc/migration_tools/upgradeitems.pl
index 864c91b..70ad573 100755
--- a/misc/migration_tools/upgradeitems.pl
+++ b/misc/migration_tools/upgradeitems.pl
@@ -12,6 +12,8 @@ if (C4::Context->preference("marcflavour") ne "UNIMARC") {
     exit;
 }
 my $rqbiblios=$dbh->prepare("SELECT biblionumber from biblioitems");
+my $rqitemnumber=$dbh->prepare("SELECT itemnumber, biblionumber from items where itemnumber = ? and biblionumber = ?");
+
 $rqbiblios->execute;
 $|=1;
 while (my ($biblionumber)= $rqbiblios->fetchrow_array){
@@ -20,11 +22,28 @@ while (my ($biblionumber)= $rqbiblios->fetchrow_array){
         my $marcitem=MARC::Record->new();
         $marcitem->encoding('UTF-8');
         $marcitem->append_fields($itemfield);    
-        eval{ModItemFromMarc($marcitem,$biblionumber,$itemfield->subfield('9'));};
+
+	
+	my $itemnum;
+	my @itemnumbers = $itemfield->subfield('9');
+        foreach my $itemnumber ( @itemnumbers ){
+		$rqitemnumber->execute($itemnumber, $biblionumber);
+		if( my $row = $rqitemnumber->fetchrow_hashref ){
+			$itemnum = $row->{itemnumber};
+		}
+        }
+
+        eval{
+		if($itemnum){
+			ModItemFromMarc($marcitem,$biblionumber,$itemnum)
+		}else{
+			die("$biblionumber");
+		}
+        };
         print "\r$biblionumber";
        if ($@){
-            warn "$biblionumber : $@";
+            warn "Problem with : $biblionumber : $@";
             warn $record->as_formatted;
        }    
     }  
-}
\ No newline at end of file
+}
-- 
1.7.0.4




More information about the Koha-patches mailing list