if ($e->commit) {
+
+
my %cache_data = (
hold => [],
transit => [],
- shelf => []
+ shelf => [],
+
+ # if requested, find any holds on our shelf whose pickup lib
+ # has been changed to some other branch and include those in
+ # the clear-shelf cache. But, only add them to the pl_changed
+ # list if they are not otherwise getting canceled by this process.
+ pl_changed => 1 ? # TODO ORG SETTING
+ pickup_lib_changed_on_shelf_holds($e, $org_id, @hold_ids) : []
);
for my $hold (@holds) {
}
}
+# returns IDs for holds that are on the holds shelf but
+# have had their pickup_libs change while on the shelf.
+sub pickup_lib_changed_on_shelf_holds {
+ my $e = shift;
+ my $org_id = shift;
+ my $ignore_holds = shift;
+
+ my $query = {
+ select => { alhr => ['id'] },
+ from => {
+ alhr => {
+ acp => {
+ field => 'id',
+ fkey => 'current_copy'
+ },
+ }
+ },
+ where => {
+ '+acp' => { status => OILS_COPY_STATUS_ON_HOLDS_SHELF },
+ '+alhr' => {
+ capture_time => { "!=" => undef },
+ fulfillment_time => undef,
+ current_shelf_lib => $org_id,
+ pickup_lib => {'!=' => {'+alhr' => 'current_shelf_lib'}}
+ }
+ }
+ };
+
+ $query->{where}->{'+alhr'}->{id} = {'!=' => $ignore_holds} if $ignore_holds;
+
+ my $hold_ids = $e->json_query($query);
+ return map { $_->{id} } @$hold_ids;
+}
+
__PACKAGE__->register_method(
method => 'usr_hold_summary',
api_name => 'open-ils.circ.holds.user_summary',