Koha-Contrib-Sudoc
view release on metacpan or search on metacpan
lib/Koha/Contrib/Sudoc/Loader/Biblios.pm view on Meta::CPAN
package Koha::Contrib::Sudoc::Loader::Biblios;
# ABSTRACT: Chargeur de notices biblio
$Koha::Contrib::Sudoc::Loader::Biblios::VERSION = '2.49';
use Moose;
extends 'Koha::Contrib::Sudoc::Loader';
use Modern::Perl;
use utf8;
use YAML;
use C4::Biblio qw/ ModBiblio ModBiblioMarc AddBiblio /;
use C4::Items qw/ AddItemBatchFromMarc /;
# On cherche les notices doublons SUDOC. On renvoie la liste des notices
# Koha correspondantes.
sub doublons_sudoc {
my ($self, $record) = @_;
my @doublons;
# On cherche un 035 avec $9 sudoc qui indique une fusion de notices Sudoc 035$a
# contient le PPN de la notice qui a été fusionnée avec la notice en cours de
# traitement.
for my $field ( $record->field('035') ) {
my $sudoc = $field->subfield('9');
next unless $sudoc && $sudoc =~ /sudoc/i;
my $ppn = $field->subfield('a');
my ($biblionumber, $framework, $koha_record) =
$self->sudoc->koha->get_biblio_by_ppn( $ppn );
if ($koha_record) {
$self->log->notice(" Fusion Sudoc du ppn $ppn avec le biblionumber $biblionumber\n");
push @doublons, {
ppn => $ppn,
record => $koha_record,
biblionumber => $biblionumber,
framework => $framework,
};
}
}
return \@doublons;
}
sub handle_record {
my ($self, $record) = @_;
# FIXME Reset de la connexion tous les x enregistrements
$self->sudoc->koha->zconn_reset() unless $self->count % 10;
my $ppn = $record->field('001')->value;
$self->log->notice("Notice #" . $self->count . " ppn $ppn\n");
$self->log->debug( $self->sudoc->record_as_text($record) );
# On déplace le PPN
$self->sudoc->ppn_move($record, $self->sudoc->c->{biblio}->{ppn_move});
$self->converter->build($record);
# Est-ce qu'il faut passer la notice ?
if ( $self->converter->skip($record) ) {
$record = undef;
$self->count_skipped( $self->count_skipped + 1 );
$self->log->notice( " * Ignorée\n" );
return;
}
# On cherche si la notice entrante ne se trouve pas déjà dans le
# catalogue Koha.
( run in 0.593 second using v1.01-cache-2.11-cpan-524268b4103 )