X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FHoldsQueue.pm;h=1015763dd867875e5e59669307a5728af8968c31;hb=26a779eded6fe24abe0be904da64e0186c3d91ec;hp=e5f29c72bc3b7f7453a98cdae927d9acd10d739b;hpb=43418ae9f088f023b1d398ab30faaebb9c00cbf5;p=koha.git diff --git a/C4/HoldsQueue.pm b/C4/HoldsQueue.pm index e5f29c72bc..1015763dd8 100755 --- a/C4/HoldsQueue.pm +++ b/C4/HoldsQueue.pm @@ -29,6 +29,8 @@ use C4::Circulation; use C4::Members; use C4::Biblio; use Koha::DateUtils; +use Koha::Items; +use Koha::Patrons; use List::Util qw(shuffle); use List::MoreUtils qw(any); @@ -100,7 +102,7 @@ sub UpdateTransportCostMatrix { my $sth = $dbh->prepare("INSERT INTO transport_cost (frombranch, tobranch, cost, disable_transfer) VALUES (?, ?, ?, ?)"); - $dbh->do("TRUNCATE TABLE transport_cost"); + $dbh->do("DELETE FROM transport_cost"); foreach (@$records) { my $cost = $_->{cost}; my $from = $_->{frombranch}; @@ -109,7 +111,7 @@ sub UpdateTransportCostMatrix { $cost ||= 0; } elsif ( !defined ($cost) || ($cost !~ m/(0|[1-9][0-9]*)(\.[0-9]*)?/o) ) { - warn "Invalid $from -> $to cost $cost - must be a number >= 0, disablig"; + warn "Invalid $from -> $to cost $cost - must be a number >= 0, disabling"; $cost = 0; $_->{disable_transfer} = 1; } @@ -145,7 +147,7 @@ sub GetHoldsQueueItems { $sth->execute(@bind_params); my $items = []; while ( my $row = $sth->fetchrow_hashref ){ - my $record = GetMarcBiblio($row->{biblionumber}); + my $record = GetMarcBiblio({ biblionumber => $row->{biblionumber} }); if ($record){ $row->{subtitle} = [ map { $_->{subfield} } @{ GetRecordValue( 'subtitle', $record, '' ) } ]; $row->{parts} = GetRecordValue('parts',$record,'')->[0]->{subfield}; @@ -397,6 +399,7 @@ sub MapItemsToHoldRequests { C4::Context->preference('LocalHoldsPriorityItemControl'); foreach my $request (@$hold_requests) { + next if (defined($request->{itemnumber})); #skip item level holds in local priority checking last if $num_items_remaining == 0; my $local_hold_match; @@ -422,7 +425,8 @@ sub MapItemsToHoldRequests { if ($local_hold_match) { if ( exists $items_by_itemnumber{ $item->{itemnumber} } - and not exists $allocated_items{ $item->{itemnumber} } ) + and not exists $allocated_items{ $item->{itemnumber} } + and not $request->{allocated}) { $item_map{ $item->{itemnumber} } = { borrowernumber => $request->{borrowernumber}, @@ -435,6 +439,7 @@ sub MapItemsToHoldRequests { reservenotes => $request->{reservenotes}, }; $allocated_items{ $item->{itemnumber} }++; + $request->{allocated} = 1; $num_items_remaining--; } } @@ -444,6 +449,7 @@ sub MapItemsToHoldRequests { foreach my $request (@$hold_requests) { last if $num_items_remaining == 0; + next if $request->{allocated}; # is this an item-level request? if (defined($request->{itemnumber})) { @@ -494,6 +500,7 @@ sub MapItemsToHoldRequests { my $pull_branches; foreach my $request (@$hold_requests) { last if $num_items_remaining == 0; + next if $request->{allocated}; next if defined($request->{itemnumber}); # already handled these # look for local match first @@ -668,18 +675,18 @@ sub CreatePicklistFromItemMap { my $reservenotes = $mapped_item->{reservenotes}; my $item_level = $mapped_item->{item_level}; - my $item = GetItem($itemnumber); - my $barcode = $item->{barcode}; - my $itemcallnumber = $item->{itemcallnumber}; + my $item = Koha::Items->find($itemnumber); + my $barcode = $item->barcode; + my $itemcallnumber = $item->itemcallnumber; - my $borrower = GetMember('borrowernumber'=>$borrowernumber); - my $cardnumber = $borrower->{'cardnumber'}; - my $surname = $borrower->{'surname'}; - my $firstname = $borrower->{'firstname'}; - my $phone = $borrower->{'phone'}; + my $patron = Koha::Patrons->find( $borrowernumber ); + my $cardnumber = $patron->cardnumber; + my $surname = $patron->surname; + my $firstname = $patron->firstname; + my $phone = $patron->phone; - my $bib = GetBiblioData($biblionumber); - my $title = $bib->{title}; + my $biblio = Koha::Biblios->find( $biblionumber ); + my $title = $biblio->title; $sth_load->execute($biblionumber, $itemnumber, $barcode, $surname, $firstname, $phone, $borrowernumber, $cardnumber, $reservedate, $title, $itemcallnumber,