f686fcecba
This patch add the support of acqdate in unimarc, and fix maintenance script for brokend records.
75 lines
1.7 KiB
Perl
Executable file
75 lines
1.7 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
#
|
|
# This script should be used only with UNIMARC flavour
|
|
# It is designed to report some missing information from biblio
|
|
# table into marc data
|
|
#
|
|
use strict;
|
|
use warnings;
|
|
|
|
BEGIN {
|
|
use FindBin;
|
|
eval { require "$FindBin::Bin/../kohalib.pl" };
|
|
}
|
|
|
|
use C4::Biblio;
|
|
|
|
sub updateMarc {
|
|
my $id = shift;
|
|
my $dbh = C4::Context->dbh;
|
|
my $field;
|
|
my $biblio = GetMarcBiblio($id);
|
|
|
|
return unless $biblio;
|
|
|
|
if(!$biblio->field('099'))
|
|
{
|
|
$field = new MARC::Field('099','','',
|
|
'c' => '',
|
|
'd'=>'');
|
|
$biblio->add_fields($field);
|
|
}
|
|
|
|
$field = $biblio->field('099');
|
|
|
|
my $sth = $dbh->prepare("SELECT DATE_FORMAT(datecreated,'%Y-%m-%d') as datecreated,
|
|
DATE_FORMAT(timestamp,'%Y-%m-%d') as timestamp,
|
|
frameworkcode
|
|
FROM biblio
|
|
WHERE biblionumber = ?");
|
|
$sth->execute($id);
|
|
(my $bibliorow = $sth->fetchrow_hashref);
|
|
my $frameworkcode = $bibliorow->{'frameworkcode'};
|
|
|
|
$field->update( 'c' => $bibliorow->{'datecreated'},
|
|
'd' => $bibliorow->{'timestamp'}
|
|
);
|
|
|
|
if(&ModBiblio($biblio, $id, $frameworkcode))
|
|
{
|
|
print "\r$id";
|
|
}
|
|
|
|
}
|
|
|
|
sub process {
|
|
|
|
my $dbh = C4::Context->dbh;
|
|
|
|
my $sth = $dbh->prepare("SELECT biblionumber FROM biblio");
|
|
$sth->execute();
|
|
|
|
while(my $biblios = $sth->fetchrow_hashref)
|
|
{
|
|
updateMarc($biblios->{'biblionumber'});
|
|
print ".";
|
|
}
|
|
|
|
}
|
|
|
|
if (lc(C4::Context->preference('marcflavour')) eq "unimarc"){
|
|
process();
|
|
}
|
|
else {
|
|
print "this script is UNIMARC only and should be used only on unimarc databases\n";
|
|
}
|