From 623ac8033085b876cc82dfeeb909be699677862d Mon Sep 17 00:00:00 2001 From: Paul POULAIN Date: Thu, 13 Sep 2007 18:16:14 +0200 Subject: [PATCH] BUGFIXES : 3 (marc_biblio, check biblionumber, ModMarcBiblio API) - use biblio instead of marc_biblio, - better check that biblionumber is correctly stored - fix an buggy API call when ModMarcBiblio Signed-off-by: Chris Cormack --- .../22_to_30/missing090field.pl | 36 ++++++++++++++----- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/misc/migration_tools/22_to_30/missing090field.pl b/misc/migration_tools/22_to_30/missing090field.pl index 79174467db..f32198ff07 100755 --- a/misc/migration_tools/22_to_30/missing090field.pl +++ b/misc/migration_tools/22_to_30/missing090field.pl @@ -14,8 +14,8 @@ use MARC::File::USMARC; $|=1; 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(); +my $sth=$dbh->prepare("select m.biblionumber,b.biblioitemnumber from biblio m left join biblioitems b on b.biblionumber=m.biblionumber"); +$sth->execute(); my $i=1; while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){ @@ -32,18 +32,36 @@ sub MARCmodbiblionumber{ my ($tagfield2,$biblioitemtagsubfield) = &GetMarcFromKohaField("biblio.biblioitemnumber",""); my $update=0; - my @tags = $record->field($tagfield); + my $tag = $record->field($tagfield); +# warn "ICI : ".$record->as_formatted if $record->subfield('090','a') eq '11546'; - if (!@tags){ - my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield => $biblionumber,$biblioitemtagsubfield=>$biblioitemnumber); - $record->append_fields($newrec); - $update=1; +# check that we have biblionumber at the right place, otherwise, update or create the field. + if ($tagfield <10) { + unless ($tag && $tag->data() == $biblionumber) { + if ($tag) { + $tag->update($biblionumber); + } else { + my $newrec = MARC::Field->new( $tagfield, $biblionumber); + $record->insert_fields_ordered($newrec); + } + $update=1; + } + } else { + unless ($tag && $tag->subfield($biblionumtagsubfield) == $biblionumber) { + if($tag) { + $tag->update($tagfield => $biblionumber); + } else { + my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield => $biblionumber,$biblioitemtagsubfield=>$biblioitemnumber); + $record->insert_fields_ordered($newrec); + } + $update=1; + } } if ($update){ - &ModBiblioMarc($record,'',$biblionumber); - print "\n modified : $biblionumber \n"; + &ModBiblioMarc($record,$biblionumber,''); + print "\n modified : $biblionumber \n".$record->as_formatted; } } -- 2.39.5