Hi all,

I'm using RT 4.2.8 and would like to prevent ticket resolution in which the owner is "Nobody".
For that I'm doing two steps:

 * * Change the custom condition of scrip "On Resolve Notify
   Requestors" to not notify requesters if Owner is 'Nobody':*

*Description:* On Resolve Notify Requestors
*Condition:* User Defined
*Action:* Notify Requestors
*Template:* resolved in HTML

*Custom condition:*
        if((
                ($self->TransactionObj->Type eq 'Status') or
($self->TransactionObj->Type eq 'Set' and $self->TransactionObj->Field eq 'Status')
            ) and
            $self->TransactionObj->NewValue eq 'resolved'
        ) {
            if($self->TicketObj->Owner == $RT::Nobody->id) {
$RT::Logger->debug("Do not notify requestors if Owner is Nobody");
                return 0;
            } else {
                return 1;
            }
        }

        return 0;

 * *Create scrip to change status from resolved to it's old value:*

*Description:* On Resolve Check Owner
*Condition:* On Resolve
*Action:* User Defined
*Template:* Blank

*       Custom action commits code:*
        # get actor ID
        my $Actor = $self->TransactionObj->Creator;

        # if actor is RT_SystemUser then get out of here
        return 1 if $Actor == $RT::SystemUser->id;

        return 1 unless $self->TicketObj->Owner == $RT::Nobody->id;

my ($status, $msg) = $self->TicketObj->SetStatus($self->TransactionObj->OldValue);
        unless($status) {
            $RT::Logger->error("Error when setting new status: $msg");
            return undef;
        }

        $RT::Logger->debug("Status changed");

        return 1;

/(The scrips above are divided just for separation of concerns purposes)/

It works, but the message that appears confuses the user: "Status changed from 'open' to 'resolved'". But in fact, the status of the ticket is "open" (setted in scrip above).

Actually I would like to "lock" the screen, warning the user that it is necessary to assign an owner before resolving the ticket.

Someone suggests a better solution? How could I lock the screen and display a message to the user?

I tried using the plugin "MandatoryOnTransition" for this purpose, but does not work because it just considers empty fields, and the owner is set to "Nobody", not empty:
Set (% MandatoryOnTransition,
     '*' => {
         '* -> Resolved' => ['TimeWorked', 'Owner'],
     },
);

Please help me.

Thanks in advance.

--
Murillo Azambuja Gonçalves

Reply via email to