@ -54,13 +54,30 @@ my ( $template, $borrowernumber, $cookie ) = get_template_and_user(
}
) ;
my $ multihold = $ input - > param ( 'multi_hold' ) ;
$ template - > param ( multi_hold = > $ multihold ) ;
# get Branches and Itemtypes
my $ branches = GetBranches ( ) ;
my $ itemtypes = GetItemTypes ( ) ;
# get biblio information....
my $ biblionumber = $ input - > param ( 'biblionumber' ) ;
my $ dat = GetBiblioData ( $ biblionumber ) ;
my $ default = C4::Context - > userenv - > { branch } ;
my @ values ;
my % label_of ;
foreach my $ branchcode ( sort keys % { $ branches } ) {
push @ values , $ branchcode ;
$ label_of { $ branchcode } = $ branches - > { $ branchcode } - > { branchname } ;
}
my $ CGIbranch = CGI:: scrolling_list (
- name = > 'pickup' ,
- id = > 'pickup' ,
- values = > \ @ values ,
- default = > $ default ,
- labels = > \ % label_of ,
- size = > 1 ,
- multiple = > 0 ,
) ;
# Select borrowers infos
my $ findborrower = $ input - > param ( 'findborrower' ) ;
@ -181,321 +198,355 @@ if ($borrowerslist) {
) ;
}
# get existing reserves .....
my ( $ count , $ reserves ) = GetReservesFromBiblionumber ( $ biblionumber ) ;
my $ totalcount = $ count ;
my $ alreadyreserved ;
# FIXME launch another time GetMemberDetails perhaps until
my $ borrowerinfo = GetMemberDetails ( 0 , $ cardnumber ) ;
foreach my $ res ( @$ reserves ) {
if ( ( $ res - > { found } eq 'W' ) ) {
$ count - - ;
}
if ( $ borrowerinfo - > { borrowernumber } eq $ res - > { borrowernumber } ) {
$ warnings = 1 ;
$ alreadyreserved = 1 ;
}
}
$ template - > param ( alreadyreserved = > $ alreadyreserved ,
messages = > $ messages ,
warnings = > $ warnings ) ;
# FIXME think @optionloop, is maybe obsolete, or must be switchable by a systeme preference fixed rank or not
# make priorities options
my @ optionloop ;
for ( 1 .. $ count + 1 ) {
push (
@ optionloop ,
{
num = > $ _ ,
selected = > ( $ _ == $ count + 1 ) ,
}
) ;
}
# adding a fixed value for priority options
my $ fixedRank = $ count + 1 ;
my @ branchcodes ;
my % itemnumbers_of_biblioitem ;
my @ itemnumbers ;
if ( my $ items = get_itemnumbers_of ( $ biblionumber ) - > { $ biblionumber } ) {
@ itemnumbers = @$ items ;
}
else {
$ template - > param ( 'noitems' = > 1 ) ;
}
my $ iteminfos_of = GetItemInfosOf ( @ itemnumbers ) ;
foreach my $ itemnumber ( @ itemnumbers ) {
my $ biblioitemnumber = $ iteminfos_of - > { $ itemnumber } - > { biblioitemnumber } ;
push ( @ { $ itemnumbers_of_biblioitem { $ biblioitemnumber } } , $ itemnumber ) ;
my @ biblionumbers = ( ) ;
my $ biblionumbers = $ input - > param ( 'biblionumbers' ) ;
if ( $ multihold ) {
@ biblionumbers = split '/' , $ biblionumbers ;
} else {
push @ biblionumbers , $ input - > param ( 'biblionumber' ) ;
}
my @ biblioitemnumbers = keys % itemnumbers_of_biblioitem ;
my $ notforloan_label_of = get_notforloan_label_of ( ) ;
my $ biblioiteminfos_of = GetBiblioItemInfosOf ( @ biblioitemnumbers ) ;
my @ bibitemloop ;
my @ biblioloop = ( ) ;
foreach my $ biblionumber ( @ biblionumbers ) {
foreach my $ biblioitemnumber ( @ biblioitemnumbers ) {
my $ biblioitem = $ biblioiteminfos_of - > { $ biblioitemnumber } ;
my $ num_available ;
my $ num_override ;
my % biblioloopiter = ( ) ;
$ biblioitem - > { description } =
$ itemtypes - > { $ biblioitem - > { itemtype } } { description } ;
my $ dat = GetBiblioData ( $ biblionumber ) ;
foreach my $ itemnumber ( @ { $ itemnumbers_of_biblioitem { $ biblioitemnumber } } ) {
my $ item = $ iteminfos_of - > { $ itemnumber } ;
# get existing reserves .....
my ( $ count , $ reserves ) = GetReservesFromBiblionumber ( $ biblionumber ) ;
my $ totalcount = $ count ;
my $ alreadyreserved ;
unless ( C4::Context - > preference ( 'item-level_itypes' ) ) {
$ item - > { itype } = $ biblioitem - > { itemtype } ;
foreach my $ res ( @$ reserves ) {
if ( ( $ res - > { found } eq 'W' ) ) {
$ count - - ;
}
$ item - > { itypename } = $ itemtypes - > { $ item - > { itype } } { description } ;
$ item - > { imageurl } = getitemtypeimagelocation ( 'intranet' , $ itemtypes - > { $ item - > { itype } } { imageurl } ) ;
$ item - > { homebranchname } = $ branches - > { $ item - > { homebranch } } { branchname } ;
# if the holdingbranch is different than the homebranch, we show the
# holdingbranch of the document too
if ( $ item - > { homebranch } ne $ item - > { holdingbranch } ) {
$ item - > { holdingbranchname } =
$ branches - > { $ item - > { holdingbranch } } { branchname } ;
if ( $ borrowerinfo - > { borrowernumber } eq $ res - > { borrowernumber } ) {
$ warnings = 1 ;
$ alreadyreserved = 1 ;
$ biblioloopiter { warn } = 1 ;
$ biblioloopiter { alreadyres } = 1 ;
}
# add information
$ item - > { itemcallnumber } = $ item - > { itemcallnumber } ;
# if the item is currently on loan, we display its return date and
# change the background color
my $ issues = GetItemIssue ( $ itemnumber ) ;
if ( $ issues - > { 'date_due' } ) {
$ item - > { date_due } = format_date ( $ issues - > { 'date_due' } ) ;
$ item - > { backgroundcolor } = 'onloan' ;
}
# checking reserve
my ( $ reservedate , $ reservedfor , $ expectedAt ) = GetReservesFromItemnumber ( $ itemnumber ) ;
my $ ItemBorrowerReserveInfo = GetMemberDetails ( $ reservedfor , 0 ) ;
if ( defined $ reservedate ) {
$ item - > { backgroundcolor } = 'reserved' ;
$ item - > { reservedate } = format_date ( $ reservedate ) ;
$ item - > { ReservedForBorrowernumber } = $ reservedfor ;
$ item - > { ReservedForSurname } = $ ItemBorrowerReserveInfo - > { 'surname' } ;
$ item - > { ReservedForFirstname } = $ ItemBorrowerReserveInfo - > { 'firstname' } ;
$ item - > { ExpectedAtLibrary } = $ branches - > { $ expectedAt } { branchname } ;
}
# Management of the notforloan document
if ( $ item - > { notforloan } ) {
$ item - > { backgroundcolor } = 'other' ;
$ item - > { notforloanvalue } =
$ notforloan_label_of - > { $ item - > { notforloan } } ;
}
# Management of lost or long overdue items
if ( $ item - > { itemlost } ) {
# FIXME localized strings should never be in Perl code
$ item - > { message } =
$ item - > { itemlost } == 1 ? "(lost)"
: $ item - > { itemlost } == 2 ? "(long overdue)"
: "" ;
$ item - > { backgroundcolor } = 'other' ;
}
# Check the transit status
my ( $ transfertwhen , $ transfertfrom , $ transfertto ) =
GetTransfers ( $ itemnumber ) ;
}
if ( $ transfertwhen ne '' ) {
$ item - > { transfertwhen } = format_date ( $ transfertwhen ) ;
$ item - > { transfertfrom } =
$ branches - > { $ transfertfrom } { branchname } ;
$ item - > { transfertto } = $ branches - > { $ transfertto } { branchname } ;
$ item - > { nocancel } = 1 ;
}
$ template - > param ( alreadyreserved = > $ alreadyreserved ,
messages = > $ messages ,
warnings = > $ warnings ) ;
# FIXME think @optionloop, is maybe obsolete, or must be switchable by a systeme preference fixed rank or not
# make priorities options
my @ optionloop ;
for ( 1 .. $ count + 1 ) {
push (
@ optionloop ,
{
num = > $ _ ,
selected = > ( $ _ == $ count + 1 ) ,
}
) ;
}
# adding a fixed value for priority options
my $ fixedRank = $ count + 1 ;
# If there is no loan, return and transfer, we show a checkbox.
$ item - > { notforloan } = $ item - > { notforloan } || 0 ;
my @ branchcodes ;
my % itemnumbers_of_biblioitem ;
my @ itemnumbers ;
# if independent branches is on we need to check if the person can reserve
# for branches they arent logged in to
if ( C4::Context - > preference ( "IndependantBranches" ) ) {
if ( ! C4::Context - > preference ( "canreservefromotherbranches" ) ) {
# cant reserve items so need to check if item homebranch and userenv branch match if not we cant reserve
my $ userenv = C4::Context - > userenv ;
if ( ( $ userenv ) && ( $ userenv - > { flags } != 1 ) ) {
$ item - > { cantreserve } = 1 if ( $ item - > { homebranch } ne $ userenv - > { branch } ) ;
## $items is array of 'item' table numbers
if ( my $ items = get_itemnumbers_of ( $ biblionumber ) - > { $ biblionumber } ) {
@ itemnumbers = @$ items ;
}
else {
$ template - > param ( 'noitems' = > 1 ) ;
$ biblioloopiter { noitems } = 1 ;
}
## Hash of item number to 'item' table fields
my $ iteminfos_of = GetItemInfosOf ( @ itemnumbers ) ;
## Here we go backwards again to create hash of biblioitemnumber to itemnumbers,
## when by definition all of the itemnumber have the same biblioitemnumber
foreach my $ itemnumber ( @ itemnumbers ) {
my $ biblioitemnumber = $ iteminfos_of - > { $ itemnumber } - > { biblioitemnumber } ;
push ( @ { $ itemnumbers_of_biblioitem { $ biblioitemnumber } } , $ itemnumber ) ;
}
## Should be same as biblionumber
my @ biblioitemnumbers = keys % itemnumbers_of_biblioitem ;
my $ notforloan_label_of = get_notforloan_label_of ( ) ;
## Hash of biblioitemnumber to 'biblioitem' table records
my $ biblioiteminfos_of = GetBiblioItemInfosOf ( @ biblioitemnumbers ) ;
my @ bibitemloop ;
foreach my $ biblioitemnumber ( @ biblioitemnumbers ) {
my $ biblioitem = $ biblioiteminfos_of - > { $ biblioitemnumber } ;
my $ num_available ;
my $ num_override ;
$ biblioitem - > { description } =
$ itemtypes - > { $ biblioitem - > { itemtype } } { description } ;
$ biblioloopiter { description } = $ biblioitem - > { description } ;
$ biblioloopiter { itypename } = $ biblioitem - > { description } ;
$ biblioloopiter { imageurl } =
getitemtypeimagelocation ( 'intranet' , $ itemtypes - > { $ biblioitem - > { itemtype } } { imageurl } ) ;
foreach my $ itemnumber ( @ { $ itemnumbers_of_biblioitem { $ biblioitemnumber } } ) {
my $ item = $ iteminfos_of - > { $ itemnumber } ;
unless ( C4::Context - > preference ( 'item-level_itypes' ) ) {
$ item - > { itype } = $ biblioitem - > { itemtype } ;
}
$ item - > { itypename } = $ itemtypes - > { $ item - > { itype } } { description } ;
$ item - > { imageurl } = getitemtypeimagelocation ( 'intranet' , $ itemtypes - > { $ item - > { itype } } { imageurl } ) ;
$ item - > { homebranchname } = $ branches - > { $ item - > { homebranch } } { branchname } ;
# if the holdingbranch is different than the homebranch, we show the
# holdingbranch of the document too
if ( $ item - > { homebranch } ne $ item - > { holdingbranch } ) {
$ item - > { holdingbranchname } =
$ branches - > { $ item - > { holdingbranch } } { branchname } ;
}
# add information
$ item - > { itemcallnumber } = $ item - > { itemcallnumber } ;
# if the item is currently on loan, we display its return date and
# change the background color
my $ issues = GetItemIssue ( $ itemnumber ) ;
if ( $ issues - > { 'date_due' } ) {
$ item - > { date_due } = format_date ( $ issues - > { 'date_due' } ) ;
$ item - > { backgroundcolor } = 'onloan' ;
}
# checking reserve
my ( $ reservedate , $ reservedfor , $ expectedAt ) = GetReservesFromItemnumber ( $ itemnumber ) ;
my $ ItemBorrowerReserveInfo = GetMemberDetails ( $ reservedfor , 0 ) ;
if ( defined $ reservedate ) {
$ item - > { backgroundcolor } = 'reserved' ;
$ item - > { reservedate } = format_date ( $ reservedate ) ;
$ item - > { ReservedForBorrowernumber } = $ reservedfor ;
$ item - > { ReservedForSurname } = $ ItemBorrowerReserveInfo - > { 'surname' } ;
$ item - > { ReservedForFirstname } = $ ItemBorrowerReserveInfo - > { 'firstname' } ;
$ item - > { ExpectedAtLibrary } = $ branches - > { $ expectedAt } { branchname } ;
}
# Management of the notforloan document
if ( $ item - > { notforloan } ) {
$ item - > { backgroundcolor } = 'other' ;
$ item - > { notforloanvalue } =
$ notforloan_label_of - > { $ item - > { notforloan } } ;
}
# Management of lost or long overdue items
if ( $ item - > { itemlost } ) {
# FIXME localized strings should never be in Perl code
$ item - > { message } =
$ item - > { itemlost } == 1 ? "(lost)"
: $ item - > { itemlost } == 2 ? "(long overdue)"
: "" ;
$ item - > { backgroundcolor } = 'other' ;
}
# Check the transit status
my ( $ transfertwhen , $ transfertfrom , $ transfertto ) =
GetTransfers ( $ itemnumber ) ;
if ( $ transfertwhen ne '' ) {
$ item - > { transfertwhen } = format_date ( $ transfertwhen ) ;
$ item - > { transfertfrom } =
$ branches - > { $ transfertfrom } { branchname } ;
$ item - > { transfertto } = $ branches - > { $ transfertto } { branchname } ;
$ item - > { nocancel } = 1 ;
}
# If there is no loan, return and transfer, we show a checkbox.
$ item - > { notforloan } = $ item - > { notforloan } || 0 ;
# if independent branches is on we need to check if the person can reserve
# for branches they arent logged in to
if ( C4::Context - > preference ( "IndependantBranches" ) ) {
if ( ! C4::Context - > preference ( "canreservefromotherbranches" ) ) {
# cant reserve items so need to check if item homebranch and userenv branch match if not we cant reserve
my $ userenv = C4::Context - > userenv ;
if ( ( $ userenv ) && ( $ userenv - > { flags } != 1 ) ) {
$ item - > { cantreserve } = 1 if ( $ item - > { homebranch } ne $ userenv - > { branch } ) ;
}
}
}
}
my $ branchitemrule = GetBranchItemRule ( $ item - > { 'homebranch' } , $ item - > { 'itype' } ) ;
my $ policy_holdallowed = 1 ;
$ item - > { 'holdallowed' } = $ branchitemrule - > { 'holdallowed' } ;
if ( $ branchitemrule - > { 'holdallowed' } == 0 ||
( $ branchitemrule - > { 'holdallowed' } == 1 && $ borrowerinfo - > { 'branchcode' } ne $ item - > { 'homebranch' } ) ) {
$ policy_holdallowed = 0 ;
}
if ( IsAvailableForItemLevelRequest ( $ itemnumber ) and not $ item - > { cantreserve } ) {
if ( not $ policy_holdallowed and C4::Context - > preference ( 'AllowHoldPolicyOverride' ) ) {
$ item - > { override } = 1 ;
$ num_override + + ;
} elsif ( $ policy_holdallowed ) {
$ item - > { available } = 1 ;
$ num_available + + ;
my $ branchitemrule = GetBranchItemRule ( $ item - > { 'homebranch' } , $ item - > { 'itype' } ) ;
my $ policy_holdallowed = 1 ;
$ item - > { 'holdallowed' } = $ branchitemrule - > { 'holdallowed' } ;
if ( $ branchitemrule - > { 'holdallowed' } == 0 ||
( $ branchitemrule - > { 'holdallowed' } == 1 && $ borrowerinfo - > { 'branchcode' } ne $ item - > { 'homebranch' } ) ) {
$ policy_holdallowed = 0 ;
}
if ( IsAvailableForItemLevelRequest ( $ itemnumber ) and not $ item - > { cantreserve } ) {
if ( not $ policy_holdallowed and C4::Context - > preference ( 'AllowHoldPolicyOverride' ) ) {
$ item - > { override } = 1 ;
$ num_override + + ;
} elsif ( $ policy_holdallowed ) {
$ item - > { available } = 1 ;
$ num_available + + ;
}
}
# If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
# FIXME: move this to a pm
my $ sth2 = $ dbh - > prepare ( "SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'" ) ;
$ sth2 - > execute ( $ item - > { ReservedForBorrowernumber } , $ item - > { itemnumber } ) ;
while ( my $ wait_hashref = $ sth2 - > fetchrow_hashref ) {
$ item - > { waitingdate } = format_date ( $ wait_hashref - > { waitingdate } ) ;
}
push @ { $ biblioitem - > { itemloop } } , $ item ;
}
# If none of the conditions hold true, then neither override nor available is set and the item cannot be checked
# FIXME: move this to a pm
my $ sth2 = $ dbh - > prepare ( "SELECT * FROM reserves WHERE borrowernumber=? AND itemnumber=? AND found='W'" ) ;
$ sth2 - > execute ( $ item - > { ReservedForBorrowernumber } , $ item - > { itemnumber } ) ;
while ( my $ wait_hashref = $ sth2 - > fetchrow_hashref ) {
$ item - > { waitingdate } = format_date ( $ wait_hashref - > { waitingdate } ) ;
if ( $ num_override == scalar ( @ { $ biblioitem - > { itemloop } } ) ) { # That is, if all items require an override
$ template - > param ( override_required = > 1 ) ;
} elsif ( $ num_available == 0 ) {
$ template - > param ( none_available = > 1 ) ;
$ template - > param ( warnings = > 1 ) ;
$ biblioloopiter { warn } = 1 ;
$ biblioloopiter { none_avail } = 1 ;
}
push @ { $ biblioitem - > { itemloop } } , $ item ;
}
if ( $ num_override == scalar ( @ { $ biblioitem - > { itemloop } } ) ) { # That is, if all items require an override
$ template - > param ( override_required = > 1 ) ;
} elsif ( $ num_available == 0 ) {
$ template - > param ( none_available = > 1 ) ;
$ template - > param ( warnings = > 1 ) ;
}
push @ bibitemloop , $ biblioitem ;
}
# existingreserves building
my @ reserveloop ;
( $ count , $ reserves ) = GetReservesFromBiblionumber ( $ biblionumber ) ;
foreach my $ res ( sort { $ a - > { found } cmp $ b - > { found } } @$ reserves ) {
my % reserve ;
my @ optionloop ;
for ( my $ i = 1 ; $ i <= $ totalcount ; $ i + + ) {
push (
@ optionloop ,
{
num = > $ i ,
selected = > ( $ i == $ res - > { priority } ) ,
}
) ;
}
my @ branchloop ;
foreach my $ br ( keys %$ branches ) {
my % abranch ;
$ abranch { 'selected' } = ( $ br eq $ res - > { 'branchcode' } ) ;
$ abranch { 'branch' } = $ br ;
$ abranch { 'branchname' } = $ branches - > { $ br } - > { 'branchname' } ;
push ( @ branchloop , \ % abranch ) ;
push @ bibitemloop , $ biblioitem ;
}
if ( ( $ res - > { 'found' } eq 'W' ) ) {
my $ item = $ res - > { 'itemnumber' } ;
$ item = GetBiblioFromItemNumber ( $ item , undef ) ;
$ reserve { 'wait' } = 1 ;
$ reserve { 'holdingbranch' } = $ item - > { 'holdingbranch' } ;
$ reserve { 'biblionumber' } = $ item - > { 'biblionumber' } ;
$ reserve { 'barcodenumber' } = $ item - > { 'barcode' } ;
$ reserve { 'wbrcode' } = $ res - > { 'branchcode' } ;
$ reserve { 'itemnumber' } = $ res - > { 'itemnumber' } ;
$ reserve { 'wbrname' } = $ branches - > { $ res - > { 'branchcode' } } - > { 'branchname' } ;
if ( $ reserve { 'holdingbranch' } eq $ reserve { 'wbrcode' } ) {
$ reserve { 'atdestination' } = 1 ;
# existingreserves building
my @ reserveloop ;
( $ count , $ reserves ) = GetReservesFromBiblionumber ( $ biblionumber ) ;
foreach my $ res ( sort { $ a - > { found } cmp $ b - > { found } } @$ reserves ) {
my % reserve ;
my @ optionloop ;
for ( my $ i = 1 ; $ i <= $ totalcount ; $ i + + ) {
push (
@ optionloop ,
{
num = > $ i ,
selected = > ( $ i == $ res - > { priority } ) ,
}
) ;
}
# set found to 1 if reserve is waiting for patron pickup
$ reserve { 'found' } = 1 if $ res - > { 'found' } eq 'W' ;
} elsif ( $ res - > { priority } > 0 ) {
if ( defined ( $ res - > { itemnumber } ) ) {
my $ item = GetItem ( $ res - > { itemnumber } ) ;
$ reserve { 'itemnumber' } = $ res - > { 'itemnumber' } ;
my @ branchloop ;
foreach my $ br ( keys %$ branches ) {
my % abranch ;
$ abranch { 'selected' } = ( $ br eq $ res - > { 'branchcode' } ) ;
$ abranch { 'branch' } = $ br ;
$ abranch { 'branchname' } = $ branches - > { $ br } - > { 'branchname' } ;
push ( @ branchloop , \ % abranch ) ;
}
if ( ( $ res - > { 'found' } eq 'W' ) ) {
my $ item = $ res - > { 'itemnumber' } ;
$ item = GetBiblioFromItemNumber ( $ item , undef ) ;
$ reserve { 'wait' } = 1 ;
$ reserve { 'holdingbranch' } = $ item - > { 'holdingbranch' } ;
$ reserve { 'biblionumber' } = $ item - > { 'biblionumber' } ;
$ reserve { 'barcodenumber' } = $ item - > { 'barcode' } ;
$ reserve { 'item_level_hold' } = 1 ;
$ reserve { 'wbrcode' } = $ res - > { 'branchcode' } ;
$ reserve { 'itemnumber' } = $ res - > { 'itemnumber' } ;
$ reserve { 'wbrname' } = $ branches - > { $ res - > { 'branchcode' } } - > { 'branchname' } ;
if ( $ reserve { 'holdingbranch' } eq $ reserve { 'wbrcode' } ) {
$ reserve { 'atdestination' } = 1 ;
}
# set found to 1 if reserve is waiting for patron pickup
$ reserve { 'found' } = 1 if $ res - > { 'found' } eq 'W' ;
} elsif ( $ res - > { priority } > 0 ) {
if ( defined ( $ res - > { itemnumber } ) ) {
my $ item = GetItem ( $ res - > { itemnumber } ) ;
$ reserve { 'itemnumber' } = $ res - > { 'itemnumber' } ;
$ reserve { 'barcodenumber' } = $ item - > { 'barcode' } ;
$ reserve { 'item_level_hold' } = 1 ;
}
}
# get borrowers reserve info
my $ reserveborrowerinfo = GetMemberDetails ( $ res - > { 'borrowernumber' } , 0 ) ;
$ reserve { 'date' } = format_date ( $ res - > { 'reservedate' } ) ;
$ reserve { 'borrowernumber' } = $ res - > { 'borrowernumber' } ;
$ reserve { 'biblionumber' } = $ res - > { 'biblionumber' } ;
$ reserve { 'borrowernumber' } = $ res - > { 'borrowernumber' } ;
$ reserve { 'firstname' } = $ reserveborrowerinfo - > { 'firstname' } ;
$ reserve { 'surname' } = $ reserveborrowerinfo - > { 'surname' } ;
$ reserve { 'notes' } = $ res - > { 'reservenotes' } ;
$ reserve { 'wait' } =
( ( $ res - > { 'found' } eq 'W' ) or ( $ res - > { 'priority' } eq '0' ) ) ;
$ reserve { 'constrainttypea' } = ( $ res - > { 'constrainttype' } eq 'a' ) ;
$ reserve { 'constrainttypeo' } = ( $ res - > { 'constrainttype' } eq 'o' ) ;
$ reserve { 'voldesc' } = $ res - > { 'volumeddesc' } ;
$ reserve { 'ccode' } = $ res - > { 'ccode' } ;
$ reserve { 'barcode' } = $ res - > { 'barcode' } ;
$ reserve { 'priority' } = $ res - > { 'priority' } ;
$ reserve { 'branchloop' } = \ @ branchloop ;
$ reserve { 'optionloop' } = \ @ optionloop ;
push ( @ reserveloop , \ % reserve ) ;
}
# get borrowers reserve info
my $ reserveborrowerinfo = GetMemberDetails ( $ res - > { 'borrowernumber' } , 0 ) ;
$ reserve { 'date' } = format_date ( $ res - > { 'reservedate' } ) ;
$ reserve { 'borrowernumber' } = $ res - > { 'borrowernumber' } ;
$ reserve { 'biblionumber' } = $ res - > { 'biblionumber' } ;
$ reserve { 'borrowernumber' } = $ res - > { 'borrowernumber' } ;
$ reserve { 'firstname' } = $ reserveborrowerinfo - > { 'firstname' } ;
$ reserve { 'surname' } = $ reserveborrowerinfo - > { 'surname' } ;
$ reserve { 'notes' } = $ res - > { 'reservenotes' } ;
$ reserve { 'wait' } =
( ( $ res - > { 'found' } eq 'W' ) or ( $ res - > { 'priority' } eq '0' ) ) ;
$ reserve { 'constrainttypea' } = ( $ res - > { 'constrainttype' } eq 'a' ) ;
$ reserve { 'constrainttypeo' } = ( $ res - > { 'constrainttype' } eq 'o' ) ;
$ reserve { 'voldesc' } = $ res - > { 'volumeddesc' } ;
$ reserve { 'ccode' } = $ res - > { 'ccode' } ;
$ reserve { 'barcode' } = $ res - > { 'barcode' } ;
$ reserve { 'priority' } = $ res - > { 'priority' } ;
$ reserve { 'branchloop' } = \ @ branchloop ;
$ reserve { 'optionloop' } = \ @ optionloop ;
push ( @ reserveloop , \ % reserve ) ;
}
# get the time for the form name...
my $ time = time ( ) ;
$ template - > param (
CGIbranch = > $ CGIbranch ,
my $ default = C4::Context - > userenv - > { branch } ;
my @ values ;
my % label_of ;
time = > $ time ,
fixedRank = > $ fixedRank ,
) ;
# display infos
$ template - > param (
optionloop = > \ @ optionloop ,
bibitemloop = > \ @ bibitemloop ,
date = > $ date ,
biblionumber = > $ biblionumber ,
findborrower = > $ findborrower ,
cardnumber = > $ cardnumber ,
CGIselectborrower = > $ CGIselectborrower ,
title = > $ dat - > { title } ,
author = > $ dat - > { author } ,
holdsview = > 1 ,
borrower_branchname = > $ branches - > { $ borrowerinfo - > { 'branchcode' } } - > { 'branchname' } ,
borrower_branchcode = > $ borrowerinfo - > { 'branchcode' } ,
) ;
$ biblioloopiter { biblionumber } = $ biblionumber ;
$ biblioloopiter { title } = $ dat - > { title } ;
$ biblioloopiter { rank } = $ fixedRank ;
$ biblioloopiter { reserveloop } = \ @ reserveloop ;
if ( @ reserveloop ) {
$ template - > param ( reserveloop = > \ @ reserveloop ) ;
}
foreach my $ branchcode ( sort keys % { $ branches } ) {
push @ values , $ branchcode ;
$ label_of { $ branchcode } = $ branches - > { $ branchcode } - > { branchname } ;
push @ biblioloop , \ % biblioloopiter ;
}
my $ CGIbranch = CGI:: scrolling_list (
- name = > 'pickup' ,
- id = > 'pickup' ,
- values = > \ @ values ,
- default = > $ default ,
- labels = > \ % label_of ,
- size = > 1 ,
- multiple = > 0 ,
) ;
# get the time for the form name...
my $ time = time ( ) ;
$ template - > param (
CGIbranch = > $ CGIbranch ,
reserveloop = > \ @ reserveloop ,
time = > $ time ,
fixedRank = > $ fixedRank ,
) ;
# display infos
$ template - > param (
optionloop = > \ @ optionloop ,
bibitemloop = > \ @ bibitemloop ,
date = > $ date ,
biblionumber = > $ biblionumber ,
findborrower = > $ findborrower ,
cardnumber = > $ cardnumber ,
CGIselectborrower = > $ CGIselectborrower ,
title = > $ dat - > { title } ,
author = > $ dat - > { author } ,
holdsview = > 1 ,
borrower_branchname = > $ branches - > { $ borrowerinfo - > { 'branchcode' } } - > { 'branchname' } ,
borrower_branchcode = > $ borrowerinfo - > { 'branchcode' } ,
) ;
$ template - > param ( biblioloop = > \ @ biblioloop ) ;
$ template - > param ( biblionumbers = > $ biblionumbers ) ;
if ( $ multihold ) {
$ template - > param ( multi_hold = > 1 ) ;
}
# printout the page
output_html_with_http_headers $ input , $ cookie , $ template - > output ;