@@ -, +, @@ --- C4/Items.pm | 58 +++------------------------------------------------- Koha/Item.pm | 8 ++++++++ t/lib/TestBuilder.pm | 9 ++++---- 3 files changed, 15 insertions(+), 60 deletions(-) --- a/C4/Items.pm +++ a/C4/Items.pm @@ -160,66 +160,14 @@ sub AddItemFromMarc { my $localitemmarc = MARC::Record->new; $localitemmarc->append_fields( $source_item_marc->field($itemtag) ); -#RMME - my $item = C4::Biblio::TransformMarcToKoha( $localitemmarc, $frameworkcode, 'items' ); - my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode ); - return AddItem( $item, $biblionumber, $dbh, $frameworkcode, $unlinked_item_subfields ); - my $item_values = C4::Biblio::TransformMarcToKoha( $localitemmarc, $frameworkcode, 'items' ); + my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode ); + $item_values->{more_subfields_xml} = _get_unlinked_subfields_xml($unlinked_item_subfields); $item_values->{biblionumber} = $biblionumber; - # FIXME RM my $unlinked_item_subfields = _get_unlinked_item_subfields( $localitemmarc, $frameworkcode ); - my $item = Koha::Item->new( $item_values ); # FIXME Handle $unlinked_item_subfields + my $item = Koha::Item->new( $item_values )->store; return ( $item->biblionumber, $item->biblioitemnumber, $item->itemnumber ); } -=head2 AddItem - - my ($biblionumber, $biblioitemnumber, $itemnumber) - = AddItem($item, $biblionumber[, $dbh, $frameworkcode, $unlinked_item_subfields]); - -Given a hash containing item column names as keys, -create a new Koha item record. - -The first two optional parameters (C<$dbh> and C<$frameworkcode>) -do not need to be supplied for general use; they exist -simply to allow them to be picked up from AddItemFromMarc. - -The final optional parameter, C<$unlinked_item_subfields>, contains -an arrayref containing subfields present in the original MARC -representation of the item (e.g., from the item editor) that are -not mapped to C columns directly but should instead -be stored in C and included in -the biblio items tag for display and indexing. - -=cut - -sub AddItem { - my $item = shift; - my $biblionumber = shift; - - my $dbh = @_ ? shift : C4::Context->dbh; - my $unlinked_item_subfields; - if (@_) { - $unlinked_item_subfields = shift; - } - - $item->{'more_subfields_xml'} = _get_unlinked_subfields_xml($unlinked_item_subfields); - - my ( $itemnumber, $error ) = _koha_new_item( $item, $item->{barcode} ); - return if $error; - - $item->{'itemnumber'} = $itemnumber; - - C4::Biblio::ModZebra( $item->{biblionumber}, "specialUpdate", "biblioserver" ); - - logaction( "CATALOGUING", "ADD", $itemnumber, "item" ) - if C4::Context->preference("CataloguingLog"); - - _after_item_action_hooks({ action => 'create', item_id => $itemnumber }); - - return ( $item->{biblionumber}, $item->{biblioitemnumber}, $itemnumber ); -} - =head2 AddItemBatchFromMarc ($itemnumber_ref, $error_ref) = AddItemBatchFromMarc($record, --- a/Koha/Item.pm +++ a/Koha/Item.pm @@ -26,7 +26,9 @@ use Koha::Database; use Koha::DateUtils qw( dt_from_string ); use C4::Context; +use C4::Biblio qw( ModZebra ); # FIXME This is terrible, we should move the indexation code outside of C4::Biblio use C4::ClassSource; # FIXME We would like to avoid that +use C4::Log qw( logaction ); use Koha::Checkouts; use Koha::IssuingRules; @@ -87,6 +89,12 @@ sub store { my $cn_sort = GetClassSort($self->cn_source, $self->itemcallnumber, ""); $self->cn_sort($cn_sort); } + + C4::Biblio::ModZebra( $self->biblionumber, "specialUpdate", "biblioserver" ); + + logaction( "CATALOGUING", "ADD", $self->itemnumber, "item" ) + if C4::Context->preference("CataloguingLog"); + } unless ( $self->dateaccessioned ) { --- a/t/lib/TestBuilder.pm +++ a/t/lib/TestBuilder.pm @@ -181,16 +181,15 @@ sub build_sample_item { my $barcode = delete $args->{barcode} || $self->_gen_text( { info => { size => SIZE_BARCODE } } ); - my ( undef, undef, $itemnumber ) = C4::Items::AddItem( + return Koha::Item->new( { + biblionumber => $biblionumber, homebranch => $library, holdingbranch => $library, barcode => $barcode, %$args, - }, - $biblionumber - ); - return Koha::Items->find($itemnumber); + } + )->store->get_from_storage; } # ------------------------------------------------------------------------------ --