From a98226b64b17e899159a1e9391e5ce8a587d7d37 Mon Sep 17 00:00:00 2001 From: Henri-Damien LAURENT Date: Fri, 21 Nov 2008 22:37:04 +0100 Subject: [PATCH] Update MARC to add 099$c and 099$d fields, with : This allow the acquisition date sorting in UNIMARC. Signed-off-by: Henri-Damien LAURENT --- ...MARC_sync_date_created_with_marc_biblio.pl | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 misc/maintenance/UNIMARC_sync_date_created_with_marc_biblio.pl diff --git a/misc/maintenance/UNIMARC_sync_date_created_with_marc_biblio.pl b/misc/maintenance/UNIMARC_sync_date_created_with_marc_biblio.pl new file mode 100644 index 0000000000..c94a5a4eed --- /dev/null +++ b/misc/maintenance/UNIMARC_sync_date_created_with_marc_biblio.pl @@ -0,0 +1,73 @@ +#!/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); + + 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"; +} -- 2.39.5