@@ -, +, @@ creating holdings --- Koha/Holding.pm | 19 +++++++------------ Koha/Objects.pm | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 12 deletions(-) --- a/Koha/Holding.pm +++ a/Koha/Holding.pm @@ -175,22 +175,17 @@ 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)); - - $result = $metadata_record->store() ? $self : undef; - - if ($result) { - $guard->commit() if defined $guard; + 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 - C4::Biblio::ModZebra( $self->biblionumber(), 'specialUpdate', 'biblioserver' ); + # request that bib be reindexed so that any holdings-derived fields are updated + C4::Biblio::ModZebra( $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 ); --