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 1244-1249
sub ModReserveAffect {
Link Here
|
1244 |
|
1245 |
|
1245 |
if ($transferToDo) { |
1246 |
if ($transferToDo) { |
1246 |
$hold->set_transfer(); |
1247 |
$hold->set_transfer(); |
|
|
1248 |
$hold->set_as_hold_group_target(); |
1247 |
} elsif ( C4::Context->preference('HoldsNeedProcessingSIP') |
1249 |
} elsif ( C4::Context->preference('HoldsNeedProcessingSIP') |
1248 |
&& C4::Context->interface eq 'sip' |
1250 |
&& C4::Context->interface eq 'sip' |
1249 |
&& !$already_on_shelf ) |
1251 |
&& !$already_on_shelf ) |
Lines 1257-1270
sub ModReserveAffect {
Link Here
|
1257 |
my $transfer = $hold->item->get_transfer; |
1259 |
my $transfer = $hold->item->get_transfer; |
1258 |
$transfer->receive if $transfer; |
1260 |
$transfer->receive if $transfer; |
1259 |
|
1261 |
|
1260 |
# if this hold was part of a group, cancel other holds in the group |
1262 |
$hold->set_as_hold_group_target(); |
1261 |
if ( $hold->hold_group_id ) { |
|
|
1262 |
my @holds = $hold->hold_group->holds->as_list; |
1263 |
foreach my $h (@holds) { |
1264 |
push @reserve_ids, $h->reserve_id; |
1265 |
$h->cancel unless $h->reserve_id == $hold->reserve_id; |
1266 |
} |
1267 |
} |
1268 |
} |
1263 |
} |
1269 |
|
1264 |
|
1270 |
_koha_notify_hold_changed($hold) if $notify_library; |
1265 |
_koha_notify_hold_changed($hold) if $notify_library; |
Lines 1753-1758
sub _Findgroupreserve {
Link Here
|
1753 |
my ( $biblionumber, $itemnumber, $lookahead, $ignore_borrowers ) = @_; |
1748 |
my ( $biblionumber, $itemnumber, $lookahead, $ignore_borrowers ) = @_; |
1754 |
my $dbh = C4::Context->dbh; |
1749 |
my $dbh = C4::Context->dbh; |
1755 |
|
1750 |
|
|
|
1751 |
my $skip_non_target_holds_query = Koha::HoldGroup::skip_non_target_holds_query('sql'); |
1752 |
my $skip_non_target_holds_query_sql = $skip_non_target_holds_query ? " $skip_non_target_holds_query" : ''; |
1753 |
|
1756 |
# check for targeted match form the holds queue |
1754 |
# check for targeted match form the holds queue |
1757 |
my $hold_target_query = qq{ |
1755 |
my $hold_target_query = qq{ |
1758 |
SELECT reserves.biblionumber AS biblionumber, |
1756 |
SELECT reserves.biblionumber AS biblionumber, |
Lines 1769-1775
sub _Findgroupreserve {
Link Here
|
1769 |
reserves.reserve_id AS reserve_id, |
1767 |
reserves.reserve_id AS reserve_id, |
1770 |
reserves.itemtype AS itemtype, |
1768 |
reserves.itemtype AS itemtype, |
1771 |
reserves.non_priority AS non_priority, |
1769 |
reserves.non_priority AS non_priority, |
1772 |
reserves.item_group_id AS item_group_id |
1770 |
reserves.item_group_id AS item_group_id, |
|
|
1771 |
reserves.hold_group_id AS hold_group_id |
1773 |
FROM reserves |
1772 |
FROM reserves |
1774 |
JOIN biblioitems USING (biblionumber) |
1773 |
JOIN biblioitems USING (biblionumber) |
1775 |
JOIN hold_fill_targets USING (reserve_id) |
1774 |
JOIN hold_fill_targets USING (reserve_id) |
Lines 1778-1783
sub _Findgroupreserve {
Link Here
|
1778 |
AND hold_fill_targets.itemnumber = ? |
1777 |
AND hold_fill_targets.itemnumber = ? |
1779 |
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1778 |
AND reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1780 |
AND suspend = 0 |
1779 |
AND suspend = 0 |
|
|
1780 |
$skip_non_target_holds_query_sql |
1781 |
ORDER BY priority |
1781 |
ORDER BY priority |
1782 |
}; |
1782 |
}; |
1783 |
my $sth = $dbh->prepare($hold_target_query); |
1783 |
my $sth = $dbh->prepare($hold_target_query); |
Lines 1804-1815
sub _Findgroupreserve {
Link Here
|
1804 |
reserves.reserve_id AS reserve_id, |
1804 |
reserves.reserve_id AS reserve_id, |
1805 |
reserves.itemtype AS itemtype, |
1805 |
reserves.itemtype AS itemtype, |
1806 |
reserves.non_priority AS non_priority, |
1806 |
reserves.non_priority AS non_priority, |
1807 |
reserves.item_group_id AS item_group_id |
1807 |
reserves.item_group_id AS item_group_id, |
|
|
1808 |
reserves.hold_group_id AS hold_group_id |
1808 |
FROM reserves |
1809 |
FROM reserves |
1809 |
WHERE reserves.biblionumber = ? |
1810 |
WHERE reserves.biblionumber = ? |
1810 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1811 |
AND (reserves.itemnumber IS NULL OR reserves.itemnumber = ?) |
1811 |
AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1812 |
AND reserves.reservedate <= DATE_ADD(NOW(),INTERVAL ? DAY) |
1812 |
AND suspend = 0 |
1813 |
AND suspend = 0 |
|
|
1814 |
$skip_non_target_holds_query_sql |
1813 |
ORDER BY priority |
1815 |
ORDER BY priority |
1814 |
}; |
1816 |
}; |
1815 |
$sth = $dbh->prepare($query); |
1817 |
$sth = $dbh->prepare($query); |