|
Lines 198-220
sub AddReserve {
Link Here
|
| 198 |
# Don't add itemtype limit if specific item is selected |
198 |
# Don't add itemtype limit if specific item is selected |
| 199 |
$itemtype = undef if $checkitem; |
199 |
$itemtype = undef if $checkitem; |
| 200 |
|
200 |
|
| 201 |
# updates take place here |
201 |
# Create reserves with with originalholdtype="B" if biblio level hold and "I" if item level hold |
| 202 |
my $hold = Koha::Hold->new( |
202 |
my $hold; |
| 203 |
{ |
203 |
if (!($checkitem)) { |
| 204 |
borrowernumber => $borrowernumber, |
204 |
# updates take place here |
| 205 |
biblionumber => $biblionumber, |
205 |
$hold = Koha::Hold->new( |
| 206 |
reservedate => $resdate, |
206 |
{ |
| 207 |
branchcode => $branch, |
207 |
borrowernumber => $borrowernumber, |
| 208 |
priority => $priority, |
208 |
biblionumber => $biblionumber, |
| 209 |
reservenotes => $notes, |
209 |
reservedate => $resdate, |
| 210 |
itemnumber => $checkitem, |
210 |
branchcode => $branch, |
| 211 |
found => $found, |
211 |
priority => $priority, |
| 212 |
waitingdate => $waitingdate, |
212 |
reservenotes => $notes, |
| 213 |
expirationdate => $expdate, |
213 |
itemnumber => $checkitem, |
| 214 |
itemtype => $itemtype, |
214 |
found => $found, |
| 215 |
} |
215 |
waitingdate => $waitingdate, |
| 216 |
)->store(); |
216 |
expirationdate => $expdate, |
| 217 |
$hold->set_waiting() if $found eq 'W'; |
217 |
itemtype => $itemtype, |
|
|
218 |
originalholdtype => 'B', |
| 219 |
} |
| 220 |
)->store(); |
| 221 |
$hold->set_waiting() if $found eq 'W'; |
| 222 |
} else { |
| 223 |
# updates take place here |
| 224 |
$hold = Koha::Hold->new( |
| 225 |
{ |
| 226 |
borrowernumber => $borrowernumber, |
| 227 |
biblionumber => $biblionumber, |
| 228 |
reservedate => $resdate, |
| 229 |
branchcode => $branch, |
| 230 |
priority => $priority, |
| 231 |
reservenotes => $notes, |
| 232 |
itemnumber => $checkitem, |
| 233 |
found => $found, |
| 234 |
waitingdate => $waitingdate, |
| 235 |
expirationdate => $expdate, |
| 236 |
itemtype => $itemtype, |
| 237 |
originalholdtype => 'I', |
| 238 |
} |
| 239 |
)->store(); |
| 240 |
$hold->set_waiting() if $found eq 'W'; |
| 241 |
} |
| 218 |
|
242 |
|
| 219 |
logaction( 'HOLDS', 'CREATE', $hold->id, Dumper($hold->unblessed) ) |
243 |
logaction( 'HOLDS', 'CREATE', $hold->id, Dumper($hold->unblessed) ) |
| 220 |
if C4::Context->preference('HoldsLog'); |
244 |
if C4::Context->preference('HoldsLog'); |
|
Lines 1379-1384
when _FixPriority calls itself.
Link Here
|
| 1379 |
|
1403 |
|
| 1380 |
sub _FixPriority { |
1404 |
sub _FixPriority { |
| 1381 |
my ( $params ) = @_; |
1405 |
my ( $params ) = @_; |
|
|
1406 |
warn Dumper($params); |
| 1382 |
my $reserve_id = $params->{reserve_id}; |
1407 |
my $reserve_id = $params->{reserve_id}; |
| 1383 |
my $rank = $params->{rank} // ''; |
1408 |
my $rank = $params->{rank} // ''; |
| 1384 |
my $ignoreSetLowestRank = $params->{ignoreSetLowestRank}; |
1409 |
my $ignoreSetLowestRank = $params->{ignoreSetLowestRank}; |
|
Lines 1387-1397
sub _FixPriority {
Link Here
|
| 1387 |
my $dbh = C4::Context->dbh; |
1412 |
my $dbh = C4::Context->dbh; |
| 1388 |
|
1413 |
|
| 1389 |
my $hold; |
1414 |
my $hold; |
|
|
1415 |
warn $reserve_id; |
| 1390 |
if ( $reserve_id ) { |
1416 |
if ( $reserve_id ) { |
| 1391 |
$hold = Koha::Holds->find( $reserve_id ); |
1417 |
$hold = Koha::Holds->find( $reserve_id ); |
| 1392 |
return unless $hold; |
1418 |
return unless $hold; |
| 1393 |
} |
1419 |
} |
| 1394 |
|
1420 |
warn Dumper($hold); |
| 1395 |
unless ( $biblionumber ) { # FIXME This is a very weird API |
1421 |
unless ( $biblionumber ) { # FIXME This is a very weird API |
| 1396 |
$biblionumber = $hold->biblionumber; |
1422 |
$biblionumber = $hold->biblionumber; |
| 1397 |
} |
1423 |
} |
|
Lines 1507-1513
sub _Findgroupreserve {
Link Here
|
| 1507 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
1533 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
| 1508 |
reserves.itemnumber AS itemnumber, |
1534 |
reserves.itemnumber AS itemnumber, |
| 1509 |
reserves.reserve_id AS reserve_id, |
1535 |
reserves.reserve_id AS reserve_id, |
| 1510 |
reserves.itemtype AS itemtype |
1536 |
reserves.itemtype AS itemtype, |
|
|
1537 |
reserves.originalholdtype AS originalholdtype |
| 1511 |
FROM reserves |
1538 |
FROM reserves |
| 1512 |
JOIN biblioitems USING (biblionumber) |
1539 |
JOIN biblioitems USING (biblionumber) |
| 1513 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber) |
1540 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber, itemnumber) |
|
Lines 1542-1548
sub _Findgroupreserve {
Link Here
|
| 1542 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
1569 |
biblioitems.biblioitemnumber AS biblioitemnumber, |
| 1543 |
reserves.itemnumber AS itemnumber, |
1570 |
reserves.itemnumber AS itemnumber, |
| 1544 |
reserves.reserve_id AS reserve_id, |
1571 |
reserves.reserve_id AS reserve_id, |
| 1545 |
reserves.itemtype AS itemtype |
1572 |
reserves.itemtype AS itemtype, |
|
|
1573 |
reserves.originalholdtype AS originalholdtype |
| 1546 |
FROM reserves |
1574 |
FROM reserves |
| 1547 |
JOIN biblioitems USING (biblionumber) |
1575 |
JOIN biblioitems USING (biblionumber) |
| 1548 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber) |
1576 |
JOIN hold_fill_targets USING (biblionumber, borrowernumber) |
|
Lines 1576-1582
sub _Findgroupreserve {
Link Here
|
| 1576 |
reserves.timestamp AS timestamp, |
1604 |
reserves.timestamp AS timestamp, |
| 1577 |
reserves.itemnumber AS itemnumber, |
1605 |
reserves.itemnumber AS itemnumber, |
| 1578 |
reserves.reserve_id AS reserve_id, |
1606 |
reserves.reserve_id AS reserve_id, |
| 1579 |
reserves.itemtype AS itemtype |
1607 |
reserves.itemtype AS itemtype, |
|
|
1608 |
reserves.originalholdtype AS originalholdtype |
| 1580 |
FROM reserves |
1609 |
FROM reserves |
| 1581 |
WHERE reserves.biblionumber = ? |
1610 |
WHERE reserves.biblionumber = ? |
| 1582 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1611 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
|
Lines 1893-1901
sub RevertWaitingStatus {
Link Here
|
| 1893 |
"; |
1922 |
"; |
| 1894 |
$sth = $dbh->prepare( $query ); |
1923 |
$sth = $dbh->prepare( $query ); |
| 1895 |
$sth->execute( $reserve->{'reserve_id'} ); |
1924 |
$sth->execute( $reserve->{'reserve_id'} ); |
|
|
1925 |
warn $reserve->{reserve_id}; |
| 1896 |
_FixPriority( { biblionumber => $reserve->{biblionumber} } ); |
1926 |
_FixPriority( { biblionumber => $reserve->{biblionumber} } ); |
| 1897 |
} |
1927 |
} |
| 1898 |
|
1928 |
|
|
|
1929 |
|
| 1930 |
=head2 RevertItemLevelHoldToBibLevelHold |
| 1931 |
|
| 1932 |
RevertItemLevelHoldToBibLevelHold({ reserveid => $reserveid }); |
| 1933 |
|
| 1934 |
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. |
| 1935 |
|
| 1936 |
=cut |
| 1937 |
|
| 1938 |
sub RevertItemLevelHoldToBibLevelHold { |
| 1939 |
my ( $params ) = @_; |
| 1940 |
my $reserve_id = $params->{'reserveid'}; |
| 1941 |
|
| 1942 |
return unless ( $reserve_id ); |
| 1943 |
my $dbh = C4::Context->dbh; |
| 1944 |
|
| 1945 |
#Get the waiting reserve we want to revert |
| 1946 |
my $query = " |
| 1947 |
SELECT * FROM reserves |
| 1948 |
WHERE reserve_id = ? |
| 1949 |
AND itemnumber IS NOT NULL |
| 1950 |
"; |
| 1951 |
my $sth = $dbh->prepare( $query ); |
| 1952 |
$sth->execute( $reserve_id ); |
| 1953 |
my $reserve = $sth->fetchrow_hashref(); |
| 1954 |
|
| 1955 |
## Set the itemnumber to 'NULL' |
| 1956 |
$query = " |
| 1957 |
UPDATE reserves |
| 1958 |
SET |
| 1959 |
itemnumber = NULL |
| 1960 |
WHERE |
| 1961 |
reserve_id = ? |
| 1962 |
"; |
| 1963 |
$sth = $dbh->prepare( $query ); |
| 1964 |
$sth->execute( $reserve_id ); |
| 1965 |
} |
| 1966 |
|
| 1899 |
=head2 ReserveSlip |
1967 |
=head2 ReserveSlip |
| 1900 |
|
1968 |
|
| 1901 |
ReserveSlip( |
1969 |
ReserveSlip( |