[Koha-patches] [PATCH] batchRepairBiblionumbers was using an outdated table :
Nahuel ANGELINETTI
nahuel.angelinetti at biblibre.com
Sat Apr 18 17:57:08 CEST 2009
From: Henri-Damien LAURENT <henridamien.laurent at biblibre.com>
---
misc/batchRepairMissingBiblionumbers.pl | 55 +++++++++++++++++++++---------
1 files changed, 38 insertions(+), 17 deletions(-)
diff --git a/misc/batchRepairMissingBiblionumbers.pl b/misc/batchRepairMissingBiblionumbers.pl
index 920f593..9fe0d73 100755
--- a/misc/batchRepairMissingBiblionumbers.pl
+++ b/misc/batchRepairMissingBiblionumbers.pl
@@ -19,8 +19,13 @@ use MARC::File::USMARC;
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 ");
+my %kohafields;
+foreach my $kohafield qw(biblio.biblionumber biblioitems.biblioitemnumber){
+ my %hash;
+ @hash{qw(tag subfield)} = &GetMarcFromKohaField("$kohafield","");
+ $kohafields{$kohafield}=\%hash;
+}
+my $sth=$dbh->prepare("select biblionumber,biblioitemnumber from biblioitems ");
$sth->execute();
while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
@@ -32,25 +37,41 @@ while (my ($biblionumber,$biblioitemnumber)=$sth->fetchrow ){
sub MARCmodbiblionumber{
my ($biblionumber,$biblioitemnumber,$record)=@_;
-
-my ($tagfield,$biblionumtagsubfield) = &GetMarcFromKohaField("biblio.biblionumber","");
-my ($tagfield2,$biblioitemtagsubfield) = &GetMarcFromKohaField("biblio.biblioitemnumber","");
-
+$kohafields{'biblio.biblionumber'}{'value'}=$biblionumber;
+$kohafields{'biblioitems.biblioitemnumber'}{'value'}=$biblioitemnumber;
my $update=0;
- my @tags = $record->field($tagfield);
-
-if (!@tags){
-
-my $newrec = MARC::Field->new( $tagfield,'','', $biblionumtagsubfield => $biblionumber,$biblioitemtagsubfield=>$biblioitemnumber);
- $record->append_fields($newrec);
- $update=1;
- }
-
-
+foreach my $kohafield (keys %kohafields){
+ my $tag=$kohafields{$kohafield}{'tag'};
+ my $subfield=$kohafields{$kohafield}{'subfield'};
+ my @tags = $record->field($tag);
+ if (!@tags){
+ if ($tag>010){
+ my $newrec = MARC::Field->new( $tag,'','', $subfield => $kohafields{$kohafield}{'value'});
+ $record->append_fields($newrec);
+ $update=1;
+ }
+ else {
+ my $newrec = MARC::Field->new( $tag, $kohafields{$kohafield}{'value'});
+ $record->append_fields($newrec);
+ $update=1;
+ }
+ }
+ else{
+ if (@tags>1){
+ warn "too many tags for $biblionumber $biblioitemnumber $tag $subfield";
+ }
+ elsif ($tag>010) {
+ $record->field($tag)->update($subfield, $kohafields{$kohafield}{'value'});
+ $update=1
+ }
+ else {
+ next;
+ }
+ }
+}
if ($update){
&ModBiblioMarc($record,'',$biblionumber);
print "$biblionumber \n";
}
-
}
END;
--
1.5.6.3
More information about the Koha-patches
mailing list