$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
return $self->WillResolveObj->AsString();
}
+=head2 IsUnreplied
+
+Returns true if there's a Correspond or Create transaction more recent than
+the Told date of this ticket (or the ticket has no Told date) and the ticket
+is not rejected or resolved.
+
+=cut
+
+sub IsUnreplied {
+ my $self = shift;
+ return 0 if $self->Status eq 'resolved'
+ or $self->Status eq 'rejected';
+
+ my $Told = $self->Told || '1970-01-01';
+ my $Txns = $self->Transactions;
+ $Txns->Limit(FIELD => 'Type',
+ OPERATOR => 'IN',
+ VALUE => [ 'Correspond', 'Create' ]);
+ $Txns->Limit(FIELD => 'Created',
+ OPERATOR => '>',
+ VALUE => $Told);
+ $Txns->Count ? 1 : 0;
+}
1;