|
Lines 42-47
use Koha::CirculationRules;
Link Here
|
| 42 |
use Koha::Database; |
42 |
use Koha::Database; |
| 43 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
43 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
| 44 |
use Koha::Holds; |
44 |
use Koha::Holds; |
|
|
45 |
use Koha::HoldGroup; |
| 45 |
use Koha::ItemTypes; |
46 |
use Koha::ItemTypes; |
| 46 |
use Koha::Items; |
47 |
use Koha::Items; |
| 47 |
use Koha::Libraries; |
48 |
use Koha::Libraries; |
|
Lines 1373-1378
sub ModReserveAffect {
Link Here
|
| 1373 |
|
1374 |
|
| 1374 |
if ($transferToDo) { |
1375 |
if ($transferToDo) { |
| 1375 |
$hold->set_transfer(); |
1376 |
$hold->set_transfer(); |
|
|
1377 |
$hold->set_as_hold_group_target(); |
| 1376 |
} elsif ( C4::Context->preference('HoldsNeedProcessingSIP') |
1378 |
} elsif ( C4::Context->preference('HoldsNeedProcessingSIP') |
| 1377 |
&& C4::Context->interface eq 'sip' |
1379 |
&& C4::Context->interface eq 'sip' |
| 1378 |
&& !$already_on_shelf ) |
1380 |
&& !$already_on_shelf ) |
|
Lines 1386-1399
sub ModReserveAffect {
Link Here
|
| 1386 |
my $transfer = $hold->item->get_transfer; |
1388 |
my $transfer = $hold->item->get_transfer; |
| 1387 |
$transfer->receive if $transfer; |
1389 |
$transfer->receive if $transfer; |
| 1388 |
|
1390 |
|
| 1389 |
# if this hold was part of a group, cancel other holds in the group |
1391 |
$hold->set_as_hold_group_target(); |
| 1390 |
if ( $hold->hold_group_id ) { |
|
|
| 1391 |
my @holds = $hold->hold_group->holds->as_list; |
| 1392 |
foreach my $h (@holds) { |
| 1393 |
push @reserve_ids, $h->reserve_id; |
| 1394 |
$h->cancel unless $h->reserve_id == $hold->reserve_id; |
| 1395 |
} |
| 1396 |
} |
| 1397 |
} |
1392 |
} |
| 1398 |
|
1393 |
|
| 1399 |
_koha_notify_hold_changed($hold) if $notify_library; |
1394 |
_koha_notify_hold_changed($hold) if $notify_library; |
|
Lines 1882-1887
sub _Findgroupreserve {
Link Here
|
| 1882 |
my ( $biblionumber, $itemnumber, $lookahead, $ignore_borrowers ) = @_; |
1877 |
my ( $biblionumber, $itemnumber, $lookahead, $ignore_borrowers ) = @_; |
| 1883 |
my $dbh = C4::Context->dbh; |
1878 |
my $dbh = C4::Context->dbh; |
| 1884 |
|
1879 |
|
|
|
1880 |
my $skip_non_target_holds_query = Koha::HoldGroup::skip_non_target_holds_query('sql'); |
| 1881 |
my $skip_non_target_holds_query_sql = $skip_non_target_holds_query ? " $skip_non_target_holds_query" : ''; |
| 1882 |
|
| 1885 |
# check for targeted match form the holds queue |
1883 |
# check for targeted match form the holds queue |
| 1886 |
my $hold_target_query = qq{ |
1884 |
my $hold_target_query = qq{ |
| 1887 |
SELECT reserves.biblionumber AS biblionumber, |
1885 |
SELECT reserves.biblionumber AS biblionumber, |
|
Lines 1898-1904
sub _Findgroupreserve {
Link Here
|
| 1898 |
reserves.reserve_id AS reserve_id, |
1896 |
reserves.reserve_id AS reserve_id, |
| 1899 |
reserves.itemtype AS itemtype, |
1897 |
reserves.itemtype AS itemtype, |
| 1900 |
reserves.non_priority AS non_priority, |
1898 |
reserves.non_priority AS non_priority, |
| 1901 |
reserves.item_group_id AS item_group_id |
1899 |
reserves.item_group_id AS item_group_id, |
|
|
1900 |
reserves.hold_group_id AS hold_group_id |
| 1902 |
FROM reserves |
1901 |
FROM reserves |
| 1903 |
JOIN biblioitems USING (biblionumber) |
1902 |
JOIN biblioitems USING (biblionumber) |
| 1904 |
JOIN hold_fill_targets USING (reserve_id) |
1903 |
JOIN hold_fill_targets USING (reserve_id) |
|
Lines 1907-1912
sub _Findgroupreserve {
Link Here
|
| 1907 |
AND hold_fill_targets.itemnumber = ? |
1906 |
AND hold_fill_targets.itemnumber = ? |
| 1908 |
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1907 |
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
| 1909 |
AND suspend = 0 |
1908 |
AND suspend = 0 |
|
|
1909 |
$skip_non_target_holds_query_sql |
| 1910 |
ORDER BY priority |
1910 |
ORDER BY priority |
| 1911 |
}; |
1911 |
}; |
| 1912 |
my $sth = $dbh->prepare($hold_target_query); |
1912 |
my $sth = $dbh->prepare($hold_target_query); |
|
Lines 1933-1944
sub _Findgroupreserve {
Link Here
|
| 1933 |
reserves.reserve_id AS reserve_id, |
1933 |
reserves.reserve_id AS reserve_id, |
| 1934 |
reserves.itemtype AS itemtype, |
1934 |
reserves.itemtype AS itemtype, |
| 1935 |
reserves.non_priority AS non_priority, |
1935 |
reserves.non_priority AS non_priority, |
| 1936 |
reserves.item_group_id AS item_group_id |
1936 |
reserves.item_group_id AS item_group_id, |
|
|
1937 |
reserves.hold_group_id AS hold_group_id |
| 1937 |
FROM reserves |
1938 |
FROM reserves |
| 1938 |
WHERE reserves.biblionumber = ? |
1939 |
WHERE reserves.biblionumber = ? |
| 1939 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1940 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
| 1940 |
AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1941 |
AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
| 1941 |
AND suspend = 0 |
1942 |
AND suspend = 0 |
|
|
1943 |
$skip_non_target_holds_query_sql |
| 1942 |
ORDER BY priority |
1944 |
ORDER BY priority |
| 1943 |
}; |
1945 |
}; |
| 1944 |
$sth = $dbh->prepare($query); |
1946 |
$sth = $dbh->prepare($query); |