Allow copy-ish holds to target, even for part-copies, if they somehow slip through...
authorMike Rylander <mrylander@gmail.com>
Wed, 13 Jun 2012 13:37:54 +0000 (09:37 -0400)
committerBill Erickson <berick@esilibrary.com>
Wed, 22 Aug 2012 19:07:15 +0000 (15:07 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Signed-off-by: Ben Shum <bshum@biblio.org>

Open-ILS/src/perlmods/lib/OpenILS/Application/Storage/Publisher/action.pm

index d80fbaf..640525c 100644 (file)
@@ -1260,17 +1260,18 @@ sub new_hold_copy_targeter {
                                push @$all_copies, $_cp if $_cp;
                        }
 
-            # Force and recall holds bypass pretty much everything
-            if ($hold->hold_type ne 'R' && $hold->hold_type ne 'F') {
-                       # trim unholdables
-                       @$all_copies = grep {   isTrue($_->status->holdable) && 
-                                               isTrue($_->location->holdable) && 
-                                               isTrue($_->holdable) &&
-                                               !isTrue($_->deleted) &&
-                                               (isTrue($hold->mint_condition) ? isTrue($_->mint_condition) : 1) &&
-                                                   ($hold->hold_type ne 'P' ? $_->part_maps->count == 0 : 1)
-                                       } @$all_copies;
-            }
+                       # Force and recall holds bypass pretty much everything
+                       if ($hold->hold_type ne 'R' && $hold->hold_type ne 'F') {
+                               # trim unholdables
+                               @$all_copies = grep {   isTrue($_->status->holdable) && 
+                                                       isTrue($_->location->holdable) && 
+                                                       isTrue($_->holdable) &&
+                                                       !isTrue($_->deleted) &&
+                                                       (isTrue($hold->mint_condition) ? isTrue($_->mint_condition) : 1) &&
+                                                       ( ($hold->hold_type ne 'C' && $hold->hold_type ne 'I') ? # Copy-ish holds can target if they slipped through
+                                                               ($hold->hold_type ne 'P' ? $_->part_maps->count == 0 : 1) : 1 )
+                                               } @$all_copies;
+                       }
 
                        # let 'em know we're still working
                        $client->status( new OpenSRF::DomainObject::oilsContinueStatus );