[rt-users] Scrip to automatically set Owner based on a Custom Field
Emmanuel Lacour
elacour at easter-eggs.com
Fri Oct 30 02:59:16 EDT 2009
On Thu, Oct 29, 2009 at 04:50:47PM -0700, jrummel wrote:
>
> Hi everyone,
>
> I have a select-one Custom Field called "Product" with 5 products in it.
> Based on what product is selected (on create), I would like a specific user
> to be set as the Owner (ex: ticket is created with "Product A" selected, so
> John Smith works on Product A, thus should automatically be the Owner).
> Does anyone know the what my Custom Action would look like to accomplish
> this?
>
You should use two customfields, one ticket customfield used to set the
product for the ticket, another _user_ customfield to set the list of
product a user works on in the user profile. Then your action will
compare those values and set the owner.
Here is a not tested code to help you:
my $Ticket = $self->TicketObj;
# Get products selected for this ticket
my $T_product = $Ticket->FirstCustomFieldValue ( 'Product' );
# Try to find a User with this product
my $user_found = undef;
my $Users = RT::Users->new ( $RT::SystemUser );
while ( my $User = $Users->Next () )
{
my $U_products = $User->CustomFieldValues ( 'Products' );
while ( my $product = $U_products->Next )
{
if ( $product->Content eq $T_product )
{
$user_found = $User;
last;
}
}
}
if ( $user_found && $user_found->Id ) {
$RT::Logger->debug("User ".$user_found->Name." found for product ".$T_product." Ticket ".$Ticket->Id );
$Ticket->SetOwner( $user_found );
} else {
return 0;
}
return 1;
More information about the rt-users
mailing list