TransportCostMatrix();
Returns Transport Cost Matrix as a hashref <to branch code> => <from branch code> => cost
UpdateTransportCostMatrix($records);
Updates full Transport Cost Matrix table. $records is an arrayref of records. Records: { frombranch => <code>, tobranch => <code>, cost => <figure>, disable_transfer => <0,1> }
GetHoldsQueueItems({ branchlimit => $branch, itemtypeslimit => $itype, ccodeslimit => $ccode, locationslimit => $location );
Returns hold queue for a holding branch. If branch is omitted, then whole queue is returned
CreateQueue();
Top level function that turns reserves into tmp_holdsqueue and hold_fill_targets.
my $biblionumber_aref = GetBibsWithPendingHoldRequests();
Return an arrayref of the biblionumbers of all bibs that have one or more unfilled hold requests.
my $requests = GetPendingHoldRequestsForBib( { biblionumber => $biblionumber, unallocated => $unallocated } );
Returns an arrayref of hashrefs to pending, unfilled hold requests on the bib identified by $biblionumber. Optionally returns only unallocated holds. The following keys are present in each hashref:
biblionumber borrowernumber itemnumber priority branchcode reservedate reservenotes borrowerbranch
The arrayref is sorted in order of increasing priority.
my $available_items = GetItemsAvailableToFillHoldRequestsForBib($biblionumber, $branches_ar);
Returns an arrayref of items available to fill hold requests for the bib identified by $biblionumber
. An item is available to fill a hold request if and only if:
* it is not on loan * it is not withdrawn * it is not marked notforloan * it is not currently in transit * it is not lost * it is not sitting on the hold shelf * it is not damaged (unless AllowHoldsOnDamagedItems is on)
_checkHoldPolicy($item, $request) check if item agrees with hold policies
my $item_map = MapItemsToHoldRequests($hold_requests, $available_items, $branches, $transport_cost_matrix) Parameters: $hold_requests is a hash containing hold information built by GetPendingHoldRequestsForBib $available_items is a hash containing item information built by GetItemsAvailableToFillHoldRequestsForBib $branches is an arrayref to a list of branches filled by load_branches_to_pull_from $transport_cost_matrix is a hash of hashes with branchcodes as keys, listing the cost to transfer from that branch to another Returns a hash of hashes with itemnumbers as keys, each itemnumber containing a hash with the information about the hold it has been mapped to. This routine attempts to match the holds in the following priority 1 - If local holds priority is enabled we check all requests to see if local matches can be found 2 - We check for item level matches and fill those 3 - We now loop the remaining requests in priority order attempting to fill with a - Items where HoldsQueuePrioritizeBranch matches either from items held at the pickup branch, or at the least cost branch (if Transport Cost Matrix is being used) b - Items where the homebranch of the item and the pickup library match c - Items from the least cost branch (or items at the pickup location if available) d - Any item that can fill the hold
my $bool = _can_item_fill_request( $item, $request, $libraries ); This is an internal function of MapItemsToHoldRequests for checking an item against a hold. It uses the custom hashes for item and hold information used by that routine
my $result = update_queue_for_biblio( { biblio_id => $biblio_id, [ branches_to_use => $branches_to_use, transport_cost_matrix => $transport_cost_matrix, delete => $delete, unallocated => $unallocated, ] } );
Given a biblio_id, this method calculates and sets the holds queue entries for the biblio's holds, and the hold fill targets (items).
It return a hashref containing:
TransportCostMatrix
.Note: All the optional parameters will be calculated in the method if omitted. They are allowed to be passed to avoid calculating them many times inside loops.