[freeside-commits] freeside/bin rt-setup-support-time,NONE,1.1

Mark Wells mark at wavetail.420.am
Wed Feb 16 23:10:42 PST 2011


Update of /home/cvs/cvsroot/freeside/bin
In directory wavetail.420.am:/tmp/cvs-serv18487/bin

Added Files:
	rt-setup-support-time 
Log Message:
setup script, RT#11168


--- NEW FILE: rt-setup-support-time ---
#!/usr/bin/perl
use FS::UID 'adminsuidsetup';
use FS::TicketSystem;
use strict;

my $fieldname = 'Support time';
my $queue = 0; #global; change to a queue id if desired

my $fsuser = shift @ARGV or die "Usage: rt-setup-support-time user\n";

my $dbh = adminsuidsetup($fsuser);
FS::TicketSystem->init;
my $session = FS::TicketSystem->session();
my $CurrentUser = $session->{CurrentUser}
  or die "rt-setup-support-time must run as a valid RT user.\n";

$RT::Handle->BeginTransaction;

sub try {
  my ($val, $msg) = @_;
  if ( !$val ) {
    $RT::Handle->Rollback;
    die "$msg (reverted changes)\n";
  }
}

my $TicketCF = RT::CustomField->new($CurrentUser);
$TicketCF->LoadByCols(
  Name => $fieldname,
  LookupType => 'RT::Queue-RT::Ticket',
);
if (!defined($TicketCF->Id)) {
  print "Creating ticket custom field.\n";
  try( $TicketCF->Create(
    Name  => $fieldname,
    Type  => 'TimeValue',
    MaxValues => 1,
    LookupType => 'RT::Queue-RT::Ticket',
  ) );
  my $OCF = RT::ObjectCustomField->new($CurrentUser);
  try( $OCF->Create(
    CustomField => $TicketCF->Id,
    ObjectId => $queue,
  ) );
}

my $TxnCF = RT::CustomField->new($CurrentUser);
$TxnCF->LoadByCols(
  Name => $fieldname,
  LookupType => 'RT::Queue-RT::Ticket-RT::Transaction',
);
if (!defined($TxnCF->Id)) {
  print "Creating transaction custom field.\n";
  try( $TxnCF->Create(
    Name => $fieldname,
    Type => 'TimeValue',
    MaxValues => 1,
    LookupType => 'RT::Queue-RT::Ticket-RT::Transaction',
    UILocation => 'TimeWorked',
  ) );
  my $OCF = RT::ObjectCustomField->new($CurrentUser);
  try( $OCF->Create(
    CustomField => $TxnCF->Id,
    ObjectId => $queue,
  ) );
}

my $ScripCondition = RT::ScripCondition->new($CurrentUser);
$ScripCondition->Load('On Update');
if (!defined($ScripCondition->Id)) {
  print "Creating On Update condition.\n";
  try( $ScripCondition->Create(
    Name => 'On Update',
    Description => 'Whenever a ticket is updated',
    ExecModule => 'AnyTransaction',
    ApplicableTransTypes => 'Any',
  ) );
}

my $ScripAction = RT::ScripAction->new($CurrentUser);
$ScripAction->Load("Update $fieldname");
if (!defined($ScripAction->Id)) {
  print "Creating Update $fieldname action.\n";
  try( $ScripAction->Create(
    Name => "Update $fieldname",
    Description => 'Increment ticket time',
    ExecModule => 'Accumulate',
    Argument => $fieldname,
  ) );
}

my $Template = RT::Template->new($CurrentUser);
$Template->Load('Blank');
try(0, "No blank template found") if !$Template->Id;

my $Scrip = RT::Scrip->new($CurrentUser);
$Scrip->LoadByCols(
  ScripCondition => $ScripCondition->Id,
  ScripAction    => $ScripAction->Id,
  Queue          => $queue);
if (!defined($Scrip->Id)) {
  print "Creating scrip.\n";
  try( $Scrip->Create(
    Description => "On Transaction Update $fieldname",
    ScripCondition => $ScripCondition->Id,
    ScripAction => $ScripAction->Id,
    Stage => 'TransactionCreate',
    Queue => $queue,
    Template => $Template->Id,
  ) );
}

$RT::Handle->Commit;
print "Done.\n";




More information about the freeside-commits mailing list