Lines 40-45
use Koha::CirculationRules;
Link Here
|
40 |
use Koha::Database; |
40 |
use Koha::Database; |
41 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
41 |
use Koha::DateUtils qw( dt_from_string output_pref ); |
42 |
use Koha::Holds; |
42 |
use Koha::Holds; |
|
|
43 |
use Koha::HoldGroup; |
43 |
use Koha::ItemTypes; |
44 |
use Koha::ItemTypes; |
44 |
use Koha::Items; |
45 |
use Koha::Items; |
45 |
use Koha::Libraries; |
46 |
use Koha::Libraries; |
Lines 1353-1358
sub ModReserveAffect {
Link Here
|
1353 |
|
1354 |
|
1354 |
if ($transferToDo) { |
1355 |
if ($transferToDo) { |
1355 |
$hold->set_transfer(); |
1356 |
$hold->set_transfer(); |
|
|
1357 |
$hold->set_as_hold_group_target(); |
1356 |
} elsif ( C4::Context->preference('HoldsNeedProcessingSIP') |
1358 |
} elsif ( C4::Context->preference('HoldsNeedProcessingSIP') |
1357 |
&& C4::Context->interface eq 'sip' |
1359 |
&& C4::Context->interface eq 'sip' |
1358 |
&& !$already_on_shelf ) |
1360 |
&& !$already_on_shelf ) |
Lines 1366-1379
sub ModReserveAffect {
Link Here
|
1366 |
my $transfer = $hold->item->get_transfer; |
1368 |
my $transfer = $hold->item->get_transfer; |
1367 |
$transfer->receive if $transfer; |
1369 |
$transfer->receive if $transfer; |
1368 |
|
1370 |
|
1369 |
# if this hold was part of a group, cancel other holds in the group |
1371 |
$hold->set_as_hold_group_target(); |
1370 |
if ( $hold->hold_group_id ) { |
|
|
1371 |
my @holds = $hold->hold_group->holds->as_list; |
1372 |
foreach my $h (@holds) { |
1373 |
push @reserve_ids, $h->reserve_id; |
1374 |
$h->cancel unless $h->reserve_id == $hold->reserve_id; |
1375 |
} |
1376 |
} |
1377 |
} |
1372 |
} |
1378 |
|
1373 |
|
1379 |
_koha_notify_hold_changed($hold) if $notify_library; |
1374 |
_koha_notify_hold_changed($hold) if $notify_library; |
Lines 1862-1867
sub _Findgroupreserve {
Link Here
|
1862 |
my ( $biblionumber, $itemnumber, $lookahead, $ignore_borrowers ) = @_; |
1857 |
my ( $biblionumber, $itemnumber, $lookahead, $ignore_borrowers ) = @_; |
1863 |
my $dbh = C4::Context->dbh; |
1858 |
my $dbh = C4::Context->dbh; |
1864 |
|
1859 |
|
|
|
1860 |
my $skip_non_target_holds_query = Koha::HoldGroup::skip_non_target_holds_query('sql'); |
1861 |
my $skip_non_target_holds_query_sql = $skip_non_target_holds_query ? " $skip_non_target_holds_query" : ''; |
1862 |
|
1865 |
# check for targeted match form the holds queue |
1863 |
# check for targeted match form the holds queue |
1866 |
my $hold_target_query = qq{ |
1864 |
my $hold_target_query = qq{ |
1867 |
SELECT reserves.biblionumber AS biblionumber, |
1865 |
SELECT reserves.biblionumber AS biblionumber, |
Lines 1878-1884
sub _Findgroupreserve {
Link Here
|
1878 |
reserves.reserve_id AS reserve_id, |
1876 |
reserves.reserve_id AS reserve_id, |
1879 |
reserves.itemtype AS itemtype, |
1877 |
reserves.itemtype AS itemtype, |
1880 |
reserves.non_priority AS non_priority, |
1878 |
reserves.non_priority AS non_priority, |
1881 |
reserves.item_group_id AS item_group_id |
1879 |
reserves.item_group_id AS item_group_id, |
|
|
1880 |
reserves.hold_group_id AS hold_group_id |
1882 |
FROM reserves |
1881 |
FROM reserves |
1883 |
JOIN biblioitems USING (biblionumber) |
1882 |
JOIN biblioitems USING (biblionumber) |
1884 |
JOIN hold_fill_targets USING (reserve_id) |
1883 |
JOIN hold_fill_targets USING (reserve_id) |
Lines 1887-1892
sub _Findgroupreserve {
Link Here
|
1887 |
AND hold_fill_targets.itemnumber = ? |
1886 |
AND hold_fill_targets.itemnumber = ? |
1888 |
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1887 |
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1889 |
AND suspend = 0 |
1888 |
AND suspend = 0 |
|
|
1889 |
$skip_non_target_holds_query_sql |
1890 |
ORDER BY priority |
1890 |
ORDER BY priority |
1891 |
}; |
1891 |
}; |
1892 |
my $sth = $dbh->prepare($hold_target_query); |
1892 |
my $sth = $dbh->prepare($hold_target_query); |
Lines 1913-1924
sub _Findgroupreserve {
Link Here
|
1913 |
reserves.reserve_id AS reserve_id, |
1913 |
reserves.reserve_id AS reserve_id, |
1914 |
reserves.itemtype AS itemtype, |
1914 |
reserves.itemtype AS itemtype, |
1915 |
reserves.non_priority AS non_priority, |
1915 |
reserves.non_priority AS non_priority, |
1916 |
reserves.item_group_id AS item_group_id |
1916 |
reserves.item_group_id AS item_group_id, |
|
|
1917 |
reserves.hold_group_id AS hold_group_id |
1917 |
FROM reserves |
1918 |
FROM reserves |
1918 |
WHERE reserves.biblionumber = ? |
1919 |
WHERE reserves.biblionumber = ? |
1919 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1920 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1920 |
AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1921 |
AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1921 |
AND suspend = 0 |
1922 |
AND suspend = 0 |
|
|
1923 |
$skip_non_target_holds_query_sql |
1922 |
ORDER BY priority |
1924 |
ORDER BY priority |
1923 |
}; |
1925 |
}; |
1924 |
$sth = $dbh->prepare($query); |
1926 |
$sth = $dbh->prepare($query); |