|
Lines 452-464
sub CanItemBeReserved{
Link Here
|
| 452 |
my $dbh = C4::Context->dbh; |
452 |
my $dbh = C4::Context->dbh; |
| 453 |
my $allowedreserves = 0; |
453 |
my $allowedreserves = 0; |
| 454 |
|
454 |
|
| 455 |
my $controlbranch = C4::Context->preference('ReservesControlBranch'); |
|
|
| 456 |
my $itype = C4::Context->preference('item-level_itypes') ? "itype" : "itemtype"; |
| 457 |
|
| 458 |
# we retrieve borrowers and items informations # |
455 |
# we retrieve borrowers and items informations # |
| 459 |
my $item = GetItem($itemnumber); |
456 |
my $item = GetItem($itemnumber); |
|
|
457 |
|
| 458 |
# If an item is damaged and we don't allow holds on damaged items, we can stop right here |
| 459 |
return 0 if ( $item->{damaged} && !C4::Context->preference('AllowHoldsOnDamagedItems') ); |
| 460 |
|
| 460 |
my $borrower = C4::Members::GetMember('borrowernumber'=>$borrowernumber); |
461 |
my $borrower = C4::Members::GetMember('borrowernumber'=>$borrowernumber); |
| 461 |
|
462 |
|
|
|
463 |
my $controlbranch = C4::Context->preference('ReservesControlBranch'); |
| 464 |
my $itype = C4::Context->preference('item-level_itypes') ? "itype" : "itemtype"; |
| 465 |
|
| 462 |
# we retrieve user rights on this itemtype and branchcode |
466 |
# we retrieve user rights on this itemtype and branchcode |
| 463 |
my $sth = $dbh->prepare("SELECT categorycode, itemtype, branchcode, reservesallowed |
467 |
my $sth = $dbh->prepare("SELECT categorycode, itemtype, branchcode, reservesallowed |
| 464 |
FROM issuingrules |
468 |
FROM issuingrules |
|
Lines 856-862
sub CheckReserves {
Link Here
|
| 856 |
items.biblioitemnumber, |
860 |
items.biblioitemnumber, |
| 857 |
itemtypes.notforloan, |
861 |
itemtypes.notforloan, |
| 858 |
items.notforloan AS itemnotforloan, |
862 |
items.notforloan AS itemnotforloan, |
| 859 |
items.itemnumber |
863 |
items.itemnumber, |
|
|
864 |
items.damaged |
| 860 |
FROM items |
865 |
FROM items |
| 861 |
LEFT JOIN biblioitems ON items.biblioitemnumber = biblioitems.biblioitemnumber |
866 |
LEFT JOIN biblioitems ON items.biblioitemnumber = biblioitems.biblioitemnumber |
| 862 |
LEFT JOIN itemtypes ON items.itype = itemtypes.itemtype |
867 |
LEFT JOIN itemtypes ON items.itype = itemtypes.itemtype |
|
Lines 868-874
sub CheckReserves {
Link Here
|
| 868 |
items.biblioitemnumber, |
873 |
items.biblioitemnumber, |
| 869 |
itemtypes.notforloan, |
874 |
itemtypes.notforloan, |
| 870 |
items.notforloan AS itemnotforloan, |
875 |
items.notforloan AS itemnotforloan, |
| 871 |
items.itemnumber |
876 |
items.itemnumber, |
|
|
877 |
items.damaged |
| 872 |
FROM items |
878 |
FROM items |
| 873 |
LEFT JOIN biblioitems ON items.biblioitemnumber = biblioitems.biblioitemnumber |
879 |
LEFT JOIN biblioitems ON items.biblioitemnumber = biblioitems.biblioitemnumber |
| 874 |
LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype |
880 |
LEFT JOIN itemtypes ON biblioitems.itemtype = itemtypes.itemtype |
|
Lines 884-896
sub CheckReserves {
Link Here
|
| 884 |
$sth->execute($barcode); |
890 |
$sth->execute($barcode); |
| 885 |
} |
891 |
} |
| 886 |
# note: we get the itemnumber because we might have started w/ just the barcode. Now we know for sure we have it. |
892 |
# note: we get the itemnumber because we might have started w/ just the barcode. Now we know for sure we have it. |
| 887 |
my ( $biblio, $bibitem, $notforloan_per_itemtype, $notforloan_per_item, $itemnumber ) = $sth->fetchrow_array; |
893 |
my ( $biblio, $bibitem, $notforloan_per_itemtype, $notforloan_per_item, $itemnumber, $damaged ) = $sth->fetchrow_array; |
|
|
894 |
|
| 895 |
return if ( $damaged && !C4::Context->preference('AllowHoldsOnDamagedItems') ); |
| 888 |
|
896 |
|
| 889 |
return ( '' ) unless $itemnumber; # bail if we got nothing. |
897 |
return unless $itemnumber; # bail if we got nothing. |
| 890 |
|
898 |
|
| 891 |
# if item is not for loan it cannot be reserved either..... |
899 |
# if item is not for loan it cannot be reserved either..... |
| 892 |
# execpt where items.notforloan < 0 : This indicates the item is holdable. |
900 |
# execpt where items.notforloan < 0 : This indicates the item is holdable. |
| 893 |
return ( '' ) if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype; |
901 |
return if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype; |
| 894 |
|
902 |
|
| 895 |
# Find this item in the reserves |
903 |
# Find this item in the reserves |
| 896 |
my @reserves = _Findgroupreserve( $bibitem, $biblio, $itemnumber, $lookahead_days); |
904 |
my @reserves = _Findgroupreserve( $bibitem, $biblio, $itemnumber, $lookahead_days); |