rename WebExternalAutoInfo to WebRemoteUserAutocreateInfo, #37318
[freeside.git] / rt / lib / RT / Ticket_Vendor.pm
index 604a84a..a55bb7b 100644 (file)
@@ -13,4 +13,84 @@ sub SetPriority {
   $Ticket->SUPER::SetPriority($value);
 }
 
+=head2 Touch
+
+Creates a Touch transaction (a null transaction).  Like Comment and 
+Correspond but without any content.
+
+=cut
+
+sub Touch {
+    my $self = shift;
+    my %args = (
+        TimeTaken => 0,
+        ActivateScrips => 1,
+        CommitScrips => 1,
+        CustomFields => {},
+        @_
+    );
+    unless ( $self->CurrentUserHasRight('ModifyTicket')
+              or $self->CurrentUserHasRight('CommentOnTicket')
+              or $self->CurrentUserHasRight('ReplyToTicket')) {
+        return ( 0, $self->loc("Permission Denied"));
+    }
+    $self->_NewTransaction(
+        Type => 'Touch',
+        TimeTaken => $args{'TimeTaken'},
+        ActivateScrips => $args{'ActivateScrips'},
+        CommitScrips => $args{'CommitScrips'},
+        CustomFields => $args{'CustomFields'},
+    );
+}
+
+
+=head2 MissingRequiredFields {
+
+Return all custom fields with the Required flag set for which this object
+doesn't have any non-empty values.
+
+=cut
+
+sub MissingRequiredFields {
+    my $self = shift;
+    my $CustomFields = $self->CustomFields;
+    my @results;
+    while ( my $CF = $CustomFields->Next ) {
+        next if !$CF->Required;
+        if ( !length($self->FirstCustomFieldValue($CF->Id) || '') )  {
+            push @results, $CF;
+        }
+    }
+    return @results;
+}
+
+# Declare the 'WillResolve' field
+sub _VendorAccessible {
+    {
+        WillResolve =>
+        {read => 1, write => 1, sql_type => 11, length => 0, is_blob => 0, is_numeric => 0, type => 'datetime', default => ''},
+    },
+};
+
+sub WillResolveObj {
+  my $self = shift;
+
+  my $time = new RT::Date( $self->CurrentUser );
+
+  if ( my $willresolve = $self->WillResolve ) {
+    $time->Set( Format => 'sql', Value => $willresolve );
+  }
+  else {
+    $time->Set( Format => 'unix', Value => -1 );
+  }
+
+  return $time;
+}
+
+sub WillResolveAsString {
+  my $self = shift;
+  return $self->WillResolveObj->AsString();
+}
+
+
 1;