RT future ticket resolve, #13853
[freeside.git] / rt / lib / RT / Action / ScheduledResolve.pm
1 package RT::Action::ScheduledResolve;
2
3 use strict;
4 use warnings;
5
6 use base qw(RT::Action);
7
8 =head1 DESCRIPTION
9
10 If the ticket's WillResolve date is in the past, set its status to resolved.
11
12 =cut
13
14 sub Prepare {
15     my $self = shift;
16
17     return undef if grep { $self->TicketObj->Status eq $_ } (
18       'resolved',
19       'rejected',
20       'deleted'
21     ); # don't resolve from any of these states.
22     my $time = $self->TicketObj->WillResolveObj->Unix;
23     return ( $time > 0 and $time < time() );
24 }
25
26 sub Commit {
27     my $self = shift;
28
29     my $never = RT::Date->new($self->CurrentUser);
30     $never->Unix(-1);
31     $self->TicketObj->SetWillResolve($never->ISO);
32     $self->TicketObj->SetStatus('resolved');
33 }
34
35 RT::Base->_ImportOverlays();
36
37 1;