@@ -, +, @@ creating holdings --- Koha/Holding.pm | 21 ++++++--------------- Koha/Objects.pm | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 15 deletions(-) --- a/Koha/Holding.pm +++ a/Koha/Holding.pm @@ -182,29 +182,20 @@ sub store { holding_id => $self->holding_id(), format => 'marcxml', schema => $marcflavour, + metadata => $marc_record->as_xml_record($marcflavour), }; - my $metadata_record = Koha::Holdings::Metadatas->find_or_create($metadata); - $metadata_record->metadata($marc_record->as_xml_record($marcflavour)); + Koha::Holdings::Metadatas->update_or_create($metadata); + $guard->commit() if defined $guard; # request that bib be reindexed so that any holdings-derived fields are updated - unless ( $params->{skip_record_index} ){ + unless ( $params->{skip_record_index} ) { my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX }); $indexer->index_records( $self->biblionumber, "specialUpdate", "biblioserver" ); } - if ($result) { - $guard->commit() if defined $guard; - - # request that bib be reindexed so that any holdings-derived fields are updated - unless ( $params->{skip_record_index} ) { - my $indexer = Koha::SearchEngine::Indexer->new({ index => $Koha::SearchEngine::BIBLIOS_INDEX }); - $indexer->index_records( $self->biblionumber, "specialUpdate", "biblioserver" ); - } + logaction('CATALOGUING', $action, $self->holding_id(), 'holding') if C4::Context->preference('CataloguingLog'); - logaction('CATALOGUING', $action, $self->holding_id(), 'holding') if C4::Context->preference('CataloguingLog'); - } - - return $result; + return $self; } =head3 delete --- a/Koha/Objects.pm +++ a/Koha/Objects.pm @@ -102,6 +102,24 @@ sub find { return $object; } +=head3 Koha::Objects->update_or_create(); + +my $object = Koha::Objects->update_or_create( $attrs ); + +=cut + +sub update_or_create { + my ( $self, $params ) = @_; + + my $result = $self->_resultset->update_or_create($params); + + return unless $result; + + my $object = $self->object_class->_new_from_dbic($result); + + return $object; +} + =head3 Koha::Objects->find_or_create(); my $object = Koha::Objects->find_or_create( $attrs ); --