Lines 197-219
sub AddReserve {
Link Here
|
197 |
# Don't add itemtype limit if specific item is selected |
197 |
# Don't add itemtype limit if specific item is selected |
198 |
$itemtype = undef if $checkitem; |
198 |
$itemtype = undef if $checkitem; |
199 |
|
199 |
|
200 |
# updates take place here |
200 |
# Create reserves with with originalholdtype="B" if biblio level hold and "I" if item level hold |
201 |
my $hold = Koha::Hold->new( |
201 |
my $hold; |
202 |
{ |
202 |
if (!($checkitem)) { |
203 |
borrowernumber => $borrowernumber, |
203 |
# updates take place here |
204 |
biblionumber => $biblionumber, |
204 |
$hold = Koha::Hold->new( |
205 |
reservedate => $resdate, |
205 |
{ |
206 |
branchcode => $branch, |
206 |
borrowernumber => $borrowernumber, |
207 |
priority => $priority, |
207 |
biblionumber => $biblionumber, |
208 |
reservenotes => $notes, |
208 |
reservedate => $resdate, |
209 |
itemnumber => $checkitem, |
209 |
branchcode => $branch, |
210 |
found => $found, |
210 |
priority => $priority, |
211 |
waitingdate => $waitingdate, |
211 |
reservenotes => $notes, |
212 |
expirationdate => $expdate, |
212 |
itemnumber => $checkitem, |
213 |
itemtype => $itemtype, |
213 |
found => $found, |
214 |
} |
214 |
waitingdate => $waitingdate, |
215 |
)->store(); |
215 |
expirationdate => $expdate, |
216 |
$hold->set_waiting() if $found eq 'W'; |
216 |
itemtype => $itemtype, |
|
|
217 |
originalholdtype => 'B', |
218 |
} |
219 |
)->store(); |
220 |
$hold->set_waiting() if $found eq 'W'; |
221 |
} else { |
222 |
# updates take place here |
223 |
$hold = Koha::Hold->new( |
224 |
{ |
225 |
borrowernumber => $borrowernumber, |
226 |
biblionumber => $biblionumber, |
227 |
reservedate => $resdate, |
228 |
branchcode => $branch, |
229 |
priority => $priority, |
230 |
reservenotes => $notes, |
231 |
itemnumber => $checkitem, |
232 |
found => $found, |
233 |
waitingdate => $waitingdate, |
234 |
expirationdate => $expdate, |
235 |
itemtype => $itemtype, |
236 |
originalholdtype => 'I', |
237 |
} |
238 |
)->store(); |
239 |
$hold->set_waiting() if $found eq 'W'; |
240 |
} |
217 |
|
241 |
|
218 |
logaction( 'HOLDS', 'CREATE', $hold->id, Dumper($hold->unblessed) ) |
242 |
logaction( 'HOLDS', 'CREATE', $hold->id, Dumper($hold->unblessed) ) |
219 |
if C4::Context->preference('HoldsLog'); |
243 |
if C4::Context->preference('HoldsLog'); |
Lines 1383-1388
when _FixPriority calls itself.
Link Here
|
1383 |
|
1407 |
|
1384 |
sub _FixPriority { |
1408 |
sub _FixPriority { |
1385 |
my ( $params ) = @_; |
1409 |
my ( $params ) = @_; |
|
|
1410 |
warn Dumper($params); |
1386 |
my $reserve_id = $params->{reserve_id}; |
1411 |
my $reserve_id = $params->{reserve_id}; |
1387 |
my $rank = $params->{rank} // ''; |
1412 |
my $rank = $params->{rank} // ''; |
1388 |
my $ignoreSetLowestRank = $params->{ignoreSetLowestRank}; |
1413 |
my $ignoreSetLowestRank = $params->{ignoreSetLowestRank}; |
Lines 1391-1401
sub _FixPriority {
Link Here
|
1391 |
my $dbh = C4::Context->dbh; |
1416 |
my $dbh = C4::Context->dbh; |
1392 |
|
1417 |
|
1393 |
my $hold; |
1418 |
my $hold; |
|
|
1419 |
warn $reserve_id; |
1394 |
if ( $reserve_id ) { |
1420 |
if ( $reserve_id ) { |
1395 |
$hold = Koha::Holds->find( $reserve_id ); |
1421 |
$hold = Koha::Holds->find( $reserve_id ); |
1396 |
return unless $hold; |
1422 |
return unless $hold; |
1397 |
} |
1423 |
} |
1398 |
|
1424 |
warn Dumper($hold); |
1399 |
unless ( $biblionumber ) { # FIXME This is a very weird API |
1425 |
unless ( $biblionumber ) { # FIXME This is a very weird API |
1400 |
$biblionumber = $hold->biblionumber; |
1426 |
$biblionumber = $hold->biblionumber; |
1401 |
} |
1427 |
} |
Lines 1511-1517
sub _Findgroupreserve {
Link Here
|
1511 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
1537 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
1512 |
reserves.itemnumber AS itemnumber, |
1538 |
reserves.itemnumber AS itemnumber, |
1513 |
reserves.reserve_id AS reserve_id, |
1539 |
reserves.reserve_id AS reserve_id, |
1514 |
reserves.itemtype AS itemtype |
1540 |
reserves.itemtype AS itemtype, |
|
|
1541 |
reserves.originalholdtype AS originalholdtype |
1515 |
FROM reserves |
1542 |
FROM reserves |
1516 |
JOIN biblioitems USING (biblionumber) |
1543 |
JOIN biblioitems USING (biblionumber) |
1517 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber) |
1544 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber) |
Lines 1546-1552
sub _Findgroupreserve {
Link Here
|
1546 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
1573 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
1547 |
reserves.itemnumber AS itemnumber, |
1574 |
reserves.itemnumber AS itemnumber, |
1548 |
reserves.reserve_id AS reserve_id, |
1575 |
reserves.reserve_id AS reserve_id, |
1549 |
reserves.itemtype AS itemtype |
1576 |
reserves.itemtype AS itemtype, |
|
|
1577 |
reserves.originalholdtype AS originalholdtype |
1550 |
FROM reserves |
1578 |
FROM reserves |
1551 |
JOIN biblioitems USING (biblionumber) |
1579 |
JOIN biblioitems USING (biblionumber) |
1552 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber) |
1580 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber) |
Lines 1580-1586
sub _Findgroupreserve {
Link Here
|
1580 |
reserves.timestamp AS timestamp, |
1608 |
reserves.timestamp AS timestamp, |
1581 |
reserves.itemnumber AS itemnumber, |
1609 |
reserves.itemnumber AS itemnumber, |
1582 |
reserves.reserve_id AS reserve_id, |
1610 |
reserves.reserve_id AS reserve_id, |
1583 |
reserves.itemtype AS itemtype |
1611 |
reserves.itemtype AS itemtype, |
|
|
1612 |
reserves.originalholdtype AS originalholdtype |
1584 |
FROM reserves |
1613 |
FROM reserves |
1585 |
WHERE reserves.biblionumber = ? |
1614 |
WHERE reserves.biblionumber = ? |
1586 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1615 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
Lines 1897-1905
sub RevertWaitingStatus {
Link Here
|
1897 |
"; |
1926 |
"; |
1898 |
$sth = $dbh->prepare( $query ); |
1927 |
$sth = $dbh->prepare( $query ); |
1899 |
$sth->execute( $reserve->{'reserve_id'} ); |
1928 |
$sth->execute( $reserve->{'reserve_id'} ); |
|
|
1929 |
warn $reserve->{reserve_id}; |
1900 |
_FixPriority( { biblionumber => $reserve->{biblionumber} } ); |
1930 |
_FixPriority( { biblionumber => $reserve->{biblionumber} } ); |
1901 |
} |
1931 |
} |
1902 |
|
1932 |
|
|
|
1933 |
|
1934 |
=head2 RevertItemLevelHoldToBibLevelHold |
1935 |
|
1936 |
RevertItemLevelHoldToBibLevelHold({ reserveid => $reserveid }); |
1937 |
|
1938 |
Reverts a item level hold (which was originally a bib-level hold, which is determined by the value of reserves.originalholdtype) back to a bib-level hold. |
1939 |
|
1940 |
=cut |
1941 |
|
1942 |
sub RevertItemLevelHoldToBibLevelHold { |
1943 |
my ( $params ) = @_; |
1944 |
my $reserve_id = $params->{'reserveid'}; |
1945 |
|
1946 |
return unless ( $reserve_id ); |
1947 |
my $dbh = C4::Context->dbh; |
1948 |
|
1949 |
#Get the waiting reserve we want to revert |
1950 |
my $query = " |
1951 |
SELECT * FROM reserves |
1952 |
WHERE reserve_id = ? |
1953 |
AND itemnumber IS NOT NULL |
1954 |
"; |
1955 |
my $sth = $dbh->prepare( $query ); |
1956 |
$sth->execute( $reserve_id ); |
1957 |
my $reserve = $sth->fetchrow_hashref(); |
1958 |
|
1959 |
## Set the itemnumber to 'NULL' |
1960 |
$query = " |
1961 |
UPDATE reserves |
1962 |
SET |
1963 |
itemnumber = NULL |
1964 |
WHERE |
1965 |
reserve_id = ? |
1966 |
"; |
1967 |
$sth = $dbh->prepare( $query ); |
1968 |
$sth->execute( $reserve_id ); |
1969 |
} |
1970 |
|
1903 |
=head2 ReserveSlip |
1971 |
=head2 ReserveSlip |
1904 |
|
1972 |
|
1905 |
ReserveSlip( |
1973 |
ReserveSlip( |