]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Open-ILS/src/perlmods/lib/OpenILS/Application/Trigger/Reactor/MarkItemLongOverdue.pm
LP 1169193 long-overdue automated processing
[working/Evergreen.git] / Open-ILS / src / perlmods / lib / OpenILS / Application / Trigger / Reactor / MarkItemLongOverdue.pm
1 package OpenILS::Application::Trigger::Reactor::MarkItemLongOverdue;
2 use base 'OpenILS::Application::Trigger::Reactor';
3 use strict; use warnings;
4 use Error qw/:try/;
5 use Data::Dumper;
6 use OpenSRF::Utils::Logger qw/:logger/;
7 use OpenILS::Utils::CStoreEditor q/:funcs/;
8 use OpenILS::Application::Cat::AssetCommon;
9 $Data::Dumper::Indent = 0;
10
11
12 sub ABOUT {
13     return <<ABOUT;
14     
15     Marks circulation and corresponding item as long-overdue.  This uses
16     the standard mark-long-overdue functionality, creating billings where 
17     appropriate.
18
19     Required event parameters:
20         "editor" which points to a user ID.  This is the user that effectively
21         performs the action.  For example, when the copy status is updated,
22         this user is entered as the last editor of the copy.
23
24 ABOUT
25 }
26
27 sub handler {
28     my $self = shift;
29     my $env = shift;
30     my $e = new_editor(xact => 1);
31
32     my $requestor = $e->retrieve_actor_user($$env{params}{editor});
33
34     if (!$requestor) {
35         $logger->error("trigger: MarkItemLongOverdue require 'editor' param");
36         return 0;
37     }
38
39     $e->requestor($requestor);
40
41     my $circ = $$env{target};
42     my $evt = OpenILS::Application::Cat::AssetCommon->
43         set_item_long_overdue($e, $circ->target_copy);
44
45     if ($evt) {
46         $logger->error("trigger: MarkItemLongOverdue ".
47             "failed with event $evt->{textcode}");
48         return 0;
49     }
50
51     $e->commit;
52
53     my $ses = OpenSRF::AppSession->create('open-ils.trigger');
54     $ses->request('open-ils.trigger.event.autocreate', 
55         'longoverdue.auto', $circ, $circ->circ_lib);
56
57     return 1;
58 }
59
60 1;