#!/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";
}
