C4::Reserves - Koha functions for dealing with reservation.
use C4::Reserves;
this modules provides somes functions to deal with reservations. Reserves are stored in reserves table. The following columns contains important values : - priority >0 : then the reserve is at 1st stage, and not yet affected to any item. =0 : then the reserve is being dealed - found : NULL : means the patron requested the 1st available, and we haven't choosen the item W(aiting) : the reserve has an itemnumber affected, and is on the way F(inished) : the reserve has been completed, and is done - itemnumber : empty : the reserve is still unaffected to an item filled: the reserve is attached to an item The complete workflow is : ==== 1st use case ==== patron request a document, 1st available : P >0, F=NULL, I=NULL a library having it run "transfertodo", and clic on the list if there is no transfer to do, the reserve waiting patron can pick it up P =0, F=W, I=filled if there is a transfer to do, write in branchtransfer P =0, F=NULL, I=filled The pickup library recieve the book, it check in P =0, F=W, I=filled The patron borrow the book P =0, F=F, I=filled ==== 2nd use case ==== patron requests a document, a given item, If pickup is holding branch P =0, F=W, I=filled If transfer needed, write in branchtransfer P =0, F=NULL, I=filled The pickup library recieve the book, it checks it in P =0, F=W, I=filled The patron borrow the book P =0, F=F, I=filled
AddReserve($branch,$borrowernumber,$biblionumber,$constraint,$bibitems,$priority,$notes,$title,$checkitem,$found)
@borrowerreserv=&GetReserves($biblionumber,$itemnumber,$borrowernumber);
this function get the list of reservation for an $biblionumber
, $itemnumber
or $borrowernumber
given on input arg. Only 1 argument has to be passed.
( $reservedate, $borrowernumber, $branchcode ) = GetReservesFromItemnumber($itemnumber); TODO :: Description here
$borrowerreserv = GetReservesFromBorrowernumber($borrowernumber,$tatus); TODO :: Descritpion
$number = &GetReserveCount($borrowernumber);
this function returns the number of reservation for a borrower given on input arg.
($messages,$nextreservinfo)=$GetOtherReserves(itemnumber);
Check queued list of this document and check if this document must be transfered
$fee = GetReserveFee($borrowernumber,$biblionumber,$constraint,$biblionumber);
Calculate the fee for a reserve
@transreserv = GetReservesToBranch( $frombranch );
Get reserve list for a given branch
@transreserv = GetReservesForBranch($frombranch);
($status, $reserve) = &CheckReserves($itemnumber);
Find a book in the reserves.
$itemnumber
is the book's item number.
As I understand it, &CheckReserves
looks for the given item in the reserves. If it is found, that's a match, and $status
is set to Waiting
.
Otherwise, it finds the most important item in the reserves with the same biblio number as this book (I'm not clear on this) and returns it with $status
set to Reserved
.
&CheckReserves
returns a two-element list:
$status
is either Waiting
, Reserved
(see above), or 0.
$reserve
is the reserve item that matched. It is a reference-to-hash whose keys are mostly the fields of the reserves table in the Koha database.
&CancelReserve($biblionumber, $itemnumber, $borrowernumber);
Cancels a reserve.
Use either $biblionumber
or $itemnumber
to specify the item to cancel, but not both: if both are given, &CancelReserve
does nothing.
$borrowernumber
is the borrower number of the patron on whose behalf the book was reserved.
If $biblionumber
was given, &CancelReserve
also adjusts the priorities of the other people who are waiting on the book.
&ModReserve($rank,$biblio,$borrower,$branch)
&ModReserveFill($reserve);
Fill a reserve. If I understand this correctly, this means that the reserved book has been found and given to the patron who reserved it.
$reserve
specifies the reserve to fill. It is a reference-to-hash whose keys are fields from the reserves table in the Koha database.
&ModReserveStatus($itemnumber, $newstatus);
Update the reserve status for the active (priority=0) reserve.
$itemnumber is the itemnumber the reserve is on
$newstatus is the new status.
&ModReserveAffect($itemnumber,$borrowernumber,$diffBranchSend);
This function affect an item and a status for a given reserve The itemnumber parameter is used to find the biblionumber. with the biblionumber & the borrowernumber, we can affect the itemnumber to the correct reserve.
if $transferToDo is not set, then the status is set to "Waiting" as well. otherwise, a transfer is on the way, and the end of the transfer will take care of the waiting status
($messages,$nextreservinfo) = &ModReserveCancelAll($itemnumber,$borrowernumber);
function to cancel reserv,check other reserves, and transfer document if it's necessary
&ModReserveMinusPriority($itemnumber,$borrowernumber,$biblionumber)
Reduce the values of queuded list
&GetReserveInfo($borrowernumber,$biblionumber);
Get item and borrower details for a current hold. Current implementation this query should have a single result.
&_FixPriority($biblio,$borrowernumber,$rank);
Only used internally (so don't export it) Changed how this functions works # Now just gets an array of reserves in the rank order and updates them with the array index (+1 as array starts from 0) and if $rank is supplied will splice item from the array and splice it back in again in new priority rank
@results = &_Findgroupreserve($biblioitemnumber, $biblionumber);
****** FIXME ****** I don't know what this does, because I don't understand how reserve constraints work. I think the idea is that you reserve a particular biblio, and the constraint allows you to restrict it to a given biblioitem (e.g., if you want to borrow the audio book edition of "The Prophet", rather than the first available publication).
&_Findgroupreserve
returns : @results
is an array of references-to-hash whose keys are mostly fields from the reserves table of the Koha database, plus biblioitemnumber
.
Koha Developement team <info@koha.org>