|
Lines 110-115
BEGIN {
Link Here
|
| 110 |
&ModReserveStatus |
110 |
&ModReserveStatus |
| 111 |
&ModReserveCancelAll |
111 |
&ModReserveCancelAll |
| 112 |
&ModReserveMinusPriority |
112 |
&ModReserveMinusPriority |
|
|
113 |
&MoveReserve |
| 113 |
|
114 |
|
| 114 |
&CheckReserves |
115 |
&CheckReserves |
| 115 |
&CanBookBeReserved |
116 |
&CanBookBeReserved |
|
Lines 526-532
sub GetOtherReserves {
Link Here
|
| 526 |
my ($itemnumber) = @_; |
527 |
my ($itemnumber) = @_; |
| 527 |
my $messages; |
528 |
my $messages; |
| 528 |
my $nextreservinfo; |
529 |
my $nextreservinfo; |
| 529 |
my ( $restype, $checkreserves ) = CheckReserves($itemnumber); |
530 |
my ( undef, $checkreserves, undef ) = CheckReserves($itemnumber); |
| 530 |
if ($checkreserves) { |
531 |
if ($checkreserves) { |
| 531 |
my $iteminfo = GetItem($itemnumber); |
532 |
my $iteminfo = GetItem($itemnumber); |
| 532 |
if ( $iteminfo->{'holdingbranch'} ne $checkreserves->{'branchcode'} ) { |
533 |
if ( $iteminfo->{'holdingbranch'} ne $checkreserves->{'branchcode'} ) { |
|
Lines 741-748
sub GetReserveStatus {
Link Here
|
| 741 |
|
742 |
|
| 742 |
=head2 CheckReserves |
743 |
=head2 CheckReserves |
| 743 |
|
744 |
|
| 744 |
($status, $reserve) = &CheckReserves($itemnumber); |
745 |
($status, $reserve, $all_reserves) = &CheckReserves($itemnumber); |
| 745 |
($status, $reserve) = &CheckReserves(undef, $barcode); |
746 |
($status, $reserve, $all_reserves) = &CheckReserves(undef, $barcode); |
| 746 |
|
747 |
|
| 747 |
Find a book in the reserves. |
748 |
Find a book in the reserves. |
| 748 |
|
749 |
|
|
Lines 807-817
sub CheckReserves {
Link Here
|
| 807 |
# note: we get the itemnumber because we might have started w/ just the barcode. Now we know for sure we have it. |
808 |
# note: we get the itemnumber because we might have started w/ just the barcode. Now we know for sure we have it. |
| 808 |
my ( $biblio, $bibitem, $notforloan_per_itemtype, $notforloan_per_item, $itemnumber ) = $sth->fetchrow_array; |
809 |
my ( $biblio, $bibitem, $notforloan_per_itemtype, $notforloan_per_item, $itemnumber ) = $sth->fetchrow_array; |
| 809 |
|
810 |
|
| 810 |
return ( 0, 0 ) unless $itemnumber; # bail if we got nothing. |
811 |
return ( '' ) unless $itemnumber; # bail if we got nothing. |
| 811 |
|
812 |
|
| 812 |
# if item is not for loan it cannot be reserved either..... |
813 |
# if item is not for loan it cannot be reserved either..... |
| 813 |
# execpt where items.notforloan < 0 : This indicates the item is holdable. |
814 |
# execpt where items.notforloan < 0 : This indicates the item is holdable. |
| 814 |
return ( 0, 0 ) if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype; |
815 |
return ( '' ) if ( $notforloan_per_item > 0 ) or $notforloan_per_itemtype; |
| 815 |
|
816 |
|
| 816 |
# Find this item in the reserves |
817 |
# Find this item in the reserves |
| 817 |
my @reserves = _Findgroupreserve( $bibitem, $biblio, $itemnumber ); |
818 |
my @reserves = _Findgroupreserve( $bibitem, $biblio, $itemnumber ); |
|
Lines 825-831
sub CheckReserves {
Link Here
|
| 825 |
my $priority = 10000000; |
826 |
my $priority = 10000000; |
| 826 |
foreach my $res (@reserves) { |
827 |
foreach my $res (@reserves) { |
| 827 |
if ( $res->{'itemnumber'} == $itemnumber && $res->{'priority'} == 0) { |
828 |
if ( $res->{'itemnumber'} == $itemnumber && $res->{'priority'} == 0) { |
| 828 |
return ( "Waiting", $res ); # Found it |
829 |
return ( "Waiting", $res, \@reserves ); # Found it |
| 829 |
} else { |
830 |
} else { |
| 830 |
# See if this item is more important than what we've got so far |
831 |
# See if this item is more important than what we've got so far |
| 831 |
if ( $res->{'priority'} && $res->{'priority'} < $priority ) { |
832 |
if ( $res->{'priority'} && $res->{'priority'} < $priority ) { |
|
Lines 846-856
sub CheckReserves {
Link Here
|
| 846 |
# We return the most important (i.e. next) reservation. |
847 |
# We return the most important (i.e. next) reservation. |
| 847 |
if ($highest) { |
848 |
if ($highest) { |
| 848 |
$highest->{'itemnumber'} = $item; |
849 |
$highest->{'itemnumber'} = $item; |
| 849 |
return ( "Reserved", $highest ); |
850 |
return ( "Reserved", $highest, \@reserves ); |
| 850 |
} |
|
|
| 851 |
else { |
| 852 |
return ( 0, 0 ); |
| 853 |
} |
851 |
} |
|
|
852 |
|
| 853 |
return ( '' ); |
| 854 |
} |
854 |
} |
| 855 |
|
855 |
|
| 856 |
=head2 CancelExpiredReserves |
856 |
=head2 CancelExpiredReserves |
|
Lines 1819-1824
sub _ShiftPriorityByDateAndPriority {
Link Here
|
| 1819 |
return $new_priority; # so the caller knows what priority they wind up receiving |
1819 |
return $new_priority; # so the caller knows what priority they wind up receiving |
| 1820 |
} |
1820 |
} |
| 1821 |
|
1821 |
|
|
|
1822 |
=head2 MoveReserve |
| 1823 |
|
| 1824 |
MoveReserve( $itemnumber, $borrowernumber, $cancelreserve ) |
| 1825 |
|
| 1826 |
Use when checking out an item to handle reserves |
| 1827 |
If $cancelreserve boolean is set to true, it will remove existing reserve |
| 1828 |
|
| 1829 |
=cut |
| 1830 |
|
| 1831 |
sub MoveReserve { |
| 1832 |
my ( $itemnumber, $borrowernumber, $cancelreserve ) = @_; |
| 1833 |
|
| 1834 |
my ( $restype, $res, $all_reserves ) = CheckReserves( $itemnumber ); |
| 1835 |
return unless $res; |
| 1836 |
|
| 1837 |
my $biblionumber = $res->{biblionumber}; |
| 1838 |
my $biblioitemnumber = $res->{biblioitemnumber}; |
| 1839 |
|
| 1840 |
if ($res->{borrowernumber} == $borrowernumber) { |
| 1841 |
ModReserveFill($res); |
| 1842 |
} |
| 1843 |
else { |
| 1844 |
# warn "Reserved"; |
| 1845 |
# The item is reserved by someone else. |
| 1846 |
# Find this item in the reserves |
| 1847 |
|
| 1848 |
my $borr_res; |
| 1849 |
foreach (@$all_reserves) { |
| 1850 |
$_->{'borrowernumber'} == $borrowernumber or next; |
| 1851 |
$_->{'biblionumber'} == $biblionumber or next; |
| 1852 |
|
| 1853 |
$borr_res = $_; |
| 1854 |
last; |
| 1855 |
} |
| 1856 |
|
| 1857 |
if ( $borr_res ) { |
| 1858 |
# The item is reserved by the current patron |
| 1859 |
ModReserveFill($borr_res); |
| 1860 |
} |
| 1861 |
|
| 1862 |
if ($cancelreserve) { # cancel reserves on this item |
| 1863 |
CancelReserve(0, $res->{'itemnumber'}, $res->{'borrowernumber'}); |
| 1864 |
CancelReserve($res->{'biblionumber'}, 0, $res->{'borrowernumber'}); |
| 1865 |
} |
| 1866 |
} |
| 1867 |
} |
| 1868 |
|
| 1822 |
=head2 MergeHolds |
1869 |
=head2 MergeHolds |
| 1823 |
|
1870 |
|
| 1824 |
MergeHolds($dbh,$to_biblio, $from_biblio); |
1871 |
MergeHolds($dbh,$to_biblio, $from_biblio); |