[rt-users] Getting a custom field value and setting the priority

Kenneth Crocker kfcrocker at lbl.gov
Thu Sep 23 14:00:53 EDT 2010


Janet,

We have something that does exactly that, but with different CF values, of
course. We choose to name the CF a name that is different than an RT Ticket
field to avoid confusion when referring to fields and simplified the values,
but here goes:

Name: WorkFlow for Priority
Condition: User-Defined
Action: User-Defined
Template: Blank
Stage: TransactionBatch
*
Custom Condition:*
# Set initial values

my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;

# Continue if the CF "Work Ability" has been changed

if  ($trans->Type eq 'CustomField')
    {my $cf = new RT::CustomField($RT::SystemUser);
        $cf->LoadByName(Queue => $ticket->QueueObj->id,
         Name => "Work Ability");
     return 0 unless $cf->id;
    }

return 1;
==================================
*Custom Action Prep:*
# Set initial values

my $trans = $self->TransactionObj;
my $ticket = $self->TicketObj;
my $ability = $ticket->FirstCustomFieldValue('Work Ability');
my $priority;

if  ($ability = 'Unable')
    {
     $priority = 1;
    }
elsif ($ability = 'impaired')
    {
     $priority = 2;
    }
else
    {
     $priority = 3;
    }

$ticket->SetPriority($priority);

return 1;
==================================
*Custom Action Cleanup:*
return 1;

Basically the same, but I noticed you put a $ in the middle of your Set code
($self->TicketObj->*$SetInitialPriority* = $Priority;)

Hope this helps.

Kenn
LBNL

On Thu, Sep 23, 2010 at 8:15 AM, Bass, Janet E. <janet.bass at nist.gov> wrote:

> I have a custom field called priority
> It has 3 possible values
> 1 Unable to work
> 2 Work is impaired
> 3 Info/Low priority
>
> What I want to do with a scrip is read the value of the custom field
> Priority = Unable to work
> $Value = Unable to work
> Loop through to set the correct value with an if statement
> Then assign that numeric value to the system variable priority
>
> I have tried but nothing set the field I see under The Basic ->priority to
> the value I want
> $self->TicketObj->$SetPriority = $Priority;
> $self->TicketObj->$Priority = $Priority;
> $self->TicketObj->$SetInitialPriority = $Priority;
>
>
> Scrip code (under Custom action cleanup code) I have return 1; under Custom
> action preparation code
>
> my $CFName = 'Priority';
> my $Value = $self->TicketObj->FirstCustomFieldValue( $CFName );
> my $Priority = 3;
> if ($Value =~ /Unable/i)
> {
> $Priority = 1;
> }
> elsif ($Value =~ /impaired/i)
> {
> $Priority = 2;
> }
> else
> {
> $Priority = 3;
> }
>
> $self->TicketObj->$SetPriority = $Priority;
>
> return 1
>
> Thanks for any help
> Janet Bass
>
>
> RT Training in Washington DC, USA on Oct 25 & 26 2010
> Last one this year -- Learn how to get the most out of RT!
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20100923/b9a3e40c/attachment.htm>


More information about the rt-users mailing list