future ticket resolve fixes, #13583
[freeside.git] / rt / lib / RT / Action / SetWillResolve.pm
index 807b3c6..2f9f619 100644 (file)
@@ -8,18 +8,26 @@ sub Describe  {
   return (ref $self ." will set a ticket's future resolve date to the argument.");
 }
 
-sub Prepare  {
-    return 1;
+sub Prepare {
+    my $self = shift;
+    my $DateObj = RT::Date->new( $self->CurrentUser );
+    if ( length($self->Argument) ) {
+        $DateObj->Set(
+            Format => 'unknown',
+            Value  => $self->Argument
+        )
+    }
+    else { # special case: treat Argument => '' as "never"
+        $DateObj->Unix(-1);
+    }
+    $self->{new_value} = $DateObj->ISO;
+    # if the before and after values are string-equivalent, don't bother
+    return ($DateObj->AsString ne $self->TicketObj->WillResolveAsString);
 }
 
 sub Commit {
     my $self = shift;
-    my $DateObj = RT::Date->new( $self->CurrentUser );
-    $DateObj->Set(
-      Format => 'unknown', 
-      Value  => $self->Argument,
-    );
-    $self->TicketObj->SetWillResolve( $DateObj->ISO );
+    $self->TicketObj->SetWillResolve( $self->{new_value} );
 }
 
 RT::Base->_ImportOverlays();