X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FItems.pm;h=2f32c988ef39c2a2ac0a0505cc82183bf274a6d0;hb=26bee7eee7d3e4602bc5e757278f600224fcbdf5;hp=9c853384c9e71e05695c036aa51aaace992b825b;hpb=49b167e8486e19a20f055e1ce9cde30f82cfc55e;p=koha_gimpoz diff --git a/C4/Items.pm b/C4/Items.pm index 9c853384c9..2f32c988ef 100644 --- a/C4/Items.pm +++ b/C4/Items.pm @@ -26,13 +26,10 @@ use C4::Context; use C4::Koha; use C4::Biblio; use C4::Dates qw/format_date format_date_in_iso/; +use C4::Search qw/SimpleSearch/; use MARC::Record; use C4::ClassSource; use C4::Log; -use C4::Branch; -require C4::Reserves; -use C4::Charset; -use C4::Acquisition; use List::MoreUtils qw/any/; use Data::Dumper; # used as part of logging item record changes, not just for # debugging; so please don't remove this @@ -640,6 +637,7 @@ item that has a given branch code. sub CheckItemPreSave { my $item_ref = shift; + require C4::Branch; my %errors = (); @@ -656,7 +654,7 @@ sub CheckItemPreSave { # check for valid home branch if (exists $item_ref->{'homebranch'} and defined $item_ref->{'homebranch'}) { - my $branch_name = GetBranchName($item_ref->{'homebranch'}); + my $branch_name = C4::Branch::GetBranchName($item_ref->{'homebranch'}); unless (defined $branch_name) { # relies on fact that branches.branchname is a non-NULL column, # so GetBranchName returns undef only if branch does not exist @@ -666,7 +664,7 @@ sub CheckItemPreSave { # check for valid holding branch if (exists $item_ref->{'holdingbranch'} and defined $item_ref->{'holdingbranch'}) { - my $branch_name = GetBranchName($item_ref->{'holdingbranch'}); + my $branch_name = C4::Branch::GetBranchName($item_ref->{'holdingbranch'}); unless (defined $branch_name) { # relies on fact that branches.branchname is a non-NULL column, # so GetBranchName returns undef only if branch does not exist @@ -1188,14 +1186,15 @@ sub GetItemsInfo { items.notforloan as itemnotforloan, itemtypes.description, itemtypes.notforloan as notforloan_per_itemtype, - branchurl + holding.branchurl FROM items - LEFT JOIN branches ON items.holdingbranch = branches.branchcode + LEFT JOIN branches AS holding ON items.holdingbranch = holding.branchcode + LEFT JOIN branches AS home ON items.homebranch=home.branchcode LEFT JOIN biblio ON biblio.biblionumber = items.biblionumber LEFT JOIN biblioitems ON biblioitems.biblioitemnumber = items.biblioitemnumber LEFT JOIN itemtypes ON itemtypes.itemtype = " . (C4::Context->preference('item-level_itypes') ? 'items.itype' : 'biblioitems.itemtype'); - $query .= " WHERE items.biblionumber = ? ORDER BY branches.branchname,items.dateaccessioned desc" ; + $query .= " WHERE items.biblionumber = ? ORDER BY home.branchname,items.dateaccessioned desc" ; my $sth = $dbh->prepare($query); $sth->execute($biblionumber); my $i = 0; @@ -1210,7 +1209,6 @@ sub GetItemsInfo { my $ssth = $dbh->prepare("SELECT serialseq,publisheddate from serialitems left join serial on serialitems.serialid=serial.serialid where serialitems.itemnumber=? "); while ( my $data = $sth->fetchrow_hashref ) { my $datedue = ''; - my $count_reserves; $isth->execute( $data->{'itemnumber'} ); if ( my $idata = $isth->fetchrow_hashref ) { $data->{borrowernumber} = $idata->{borrowernumber}; @@ -1231,14 +1229,6 @@ sub GetItemsInfo { ($data->{'serialseq'} , $data->{'publisheddate'}) = $ssth->fetchrow_array(); $serial = 1; } - if ( $datedue eq '' ) { - my ( $restype, $reserves, undef ) = - C4::Reserves::CheckReserves( $data->{'itemnumber'} ); -# Previous conditional check with if ($restype) is not needed because a true -# result for one item will result in subsequent items defaulting to this true -# value. - $count_reserves = $restype; - } #get branch information..... my $bsth = $dbh->prepare( "SELECT * FROM branches WHERE branchcode = ? @@ -1249,7 +1239,6 @@ sub GetItemsInfo { $data->{'branchname'} = $bdata->{'branchname'}; } $data->{'datedue'} = $datedue; - $data->{'count_reserves'} = $count_reserves; # get notforloan complete status if applicable my $sthnflstatus = $dbh->prepare( @@ -2182,11 +2171,12 @@ sub MoveItemFromBiblio { ModZebra( $tobiblio, "specialUpdate", "biblioserver", undef, undef ); ModZebra( $frombiblio, "specialUpdate", "biblioserver", undef, undef ); # Checking if the item we want to move is in an order - my $order = GetOrderFromItemnumber($itemnumber); + require C4::Acquisition; + my $order = C4::Acquisition::GetOrderFromItemnumber($itemnumber); if ($order) { # Replacing the biblionumber within the order if necessary $order->{'biblionumber'} = $tobiblio; - ModOrder($order); + C4::Acquisition::ModOrder($order); } return $tobiblio; } @@ -2441,9 +2431,9 @@ sub _get_unlinked_subfields_xml { sub _parse_unlinked_item_subfields_from_xml { my $xml = shift; - + require C4::Charset; return unless defined $xml and $xml ne ""; - my $marc = MARC::Record->new_from_xml(StripNonXmlChars($xml),'UTF-8'); + my $marc = MARC::Record->new_from_xml(C4::Charset::StripNonXmlChars($xml),'UTF-8'); my $unlinked_subfields = []; my @fields = $marc->fields(); if ($#fields > -1) { @@ -2503,6 +2493,45 @@ sub GetItemHolds { } =head1 OTHER FUNCTIONS +=head2 _find_value + + ($indicators, $value) = _find_value($tag, $subfield, $record,$encoding); + +Find the given $subfield in the given $tag in the given +MARC::Record $record. If the subfield is found, returns +the (indicators, value) pair; otherwise, (undef, undef) is +returned. + +PROPOSITION : +Such a function is used in addbiblio AND additem and serial-edit and maybe could be used in Authorities. +I suggest we export it from this module. + +=cut + +sub _find_value { + my ( $tagfield, $insubfield, $record, $encoding ) = @_; + my @result; + my $indicator; + if ( $tagfield < 10 ) { + if ( $record->field($tagfield) ) { + push @result, $record->field($tagfield)->data(); + } else { + push @result, ""; + } + } else { + foreach my $field ( $record->field($tagfield) ) { + my @subfields = $field->subfields(); + foreach my $subfield (@subfields) { + if ( @$subfield[0] eq $insubfield ) { + push @result, @$subfield[1]; + $indicator = $field->indicator(1) . $field->indicator(2); + } + } + } + } + return ( $indicator, @result ); +} + =head2 PrepareItemrecordDisplay