@ -265,7 +265,7 @@ sub AddReserve {
= head2 CanBookBeReserved
$ canReserve = & CanBookBeReserved ( $ borrowernumber , $ biblionumber )
$ canReserve = & CanBookBeReserved ( $ borrowernumber , $ biblionumber , $ branchcode )
if ( $ canReserve eq 'OK' ) { #We can reserve this Item! }
See CanItemBeReserved ( ) for possible return values .
@ -273,7 +273,7 @@ See CanItemBeReserved() for possible return values.
= cut
sub CanBookBeReserved {
my ( $ borrowernumber , $ biblionumber ) = @ _ ;
my ( $ borrowernumber , $ biblionumber , $ branchcode ) = @ _ ;
my @ itemnumbers = Koha::Items - > search ( { biblionumber = > $ biblionumber } ) - > get_column ( "itemnumber" ) ;
#get items linked via host records
@ -284,7 +284,7 @@ sub CanBookBeReserved{
my $ canReserve ;
foreach my $ itemnumber ( @ itemnumbers ) {
$ canReserve = CanItemBeReserved ( $ borrowernumber , $ itemnumber ) ;
$ canReserve = CanItemBeReserved ( $ borrowernumber , $ itemnumber , $ branchcode ) ;
return $ canReserve if $ canReserve - > { status } eq 'OK' ;
}
return $ canReserve ;
@ -292,7 +292,7 @@ sub CanBookBeReserved{
= head2 CanItemBeReserved
$ canReserve = & CanItemBeReserved ( $ borrowernumber , $ itemnumber )
$ canReserve = & CanItemBeReserved ( $ borrowernumber , $ itemnumber , $ branchcode )
if ( $ canReserve - > { status } eq 'OK' ) { #We can reserve this Item! }
@ RETURNS { status = > OK } , if the Item can be reserved .
@ -301,11 +301,13 @@ sub CanBookBeReserved{
{ status = > cannotReserveFromOtherBranches } , if syspref 'canreservefromotherbranches' is OK .
{ status = > tooManyReserves , limit = > $ limit } , if the borrower has exceeded their maximum reserve amount .
{ status = > notReservable } , if holds on this item are not allowed
{ status = > libraryNotFound } , if given branchcode is not an existing library
{ status = > libraryNotPickupLocation } , if given branchcode is not configured to be a pickup location
= cut
sub CanItemBeReserved {
my ( $ borrowernumber , $ itemnumber ) = @ _ ;
my ( $ borrowernumber , $ itemnumber , $ branchcode_to ) = @ _ ;
my $ dbh = C4::Context - > dbh ;
my $ ruleitemtype ; # itemtype of the matching issuing rule
@ -458,6 +460,18 @@ sub CanItemBeReserved {
}
}
if ( $ branchcode_to ) {
my $ destination = Koha::Libraries - > find ( {
branchcode = > $ branchcode_to ,
} ) ;
unless ( $ destination ) {
return { status = > 'libraryNotFound' } ;
}
unless ( $ destination - > pickup_location ) {
return { status = > 'libraryNotPickupLocation' } ;
}
}
return { status = > 'OK' } ;
}