Filling Dates fields with scrip

Hello

I want to fill the fields Starts, Started and Due after ticket creation, for
this I´m using the code bellow on custom action in “on create” condition

my $now = RT::Date->new($RT::SystemUser);
my $sla = RT::Date->new($RT::SystemUser);
$now->SetToNow;
$sla->SetToNow;
$sla->AddSeconds(+3600);
$self->TicketObj->SetStarts( $now->ISO );
$self->TicketObj->SetStarted( $now->ISO );
$self->TicketObj->SetDue( $sla->ISO );
return 1;

This works, but if user that create tickts already fill these fields I don´t
want to overwrite the user information, I tryed the following code in place
of the code above, but doesn´t work.

my $now = RT::Date->new($RT::SystemUser);
my $sla = RT::Date->new($RT::SystemUser);
$now->SetToNow;
$sla->SetToNow;
$sla->AddSeconds(+3600);
if ( $self->TicketObj->Starts == undef ){
$self->TicketObj->SetStarts( $now->ISO );
}
if ( $self->TicketObj->Started == undef ){
$self->TicketObj->SetStarted( $now->ISO );
}
if ( $self->TicketObj->Due == undef ){
$self->TicketObj->SetDue( $sla->ISO );
}
return 1;

How can I test if user already fill these fields?

Thanks

Cristiano

I don’t think the dates will ever be ‘undef’. Instead, check for a default date. I believe that date is ‘1970-01-01 00:00:00’ in our system.

if ( $self->TicketObj->Started eq ‘1970-01-01 00:00:00’ ) {From: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Cristiano da Costa
Sent: Wednesday, February 01, 2006 8:31 AM
To: rt-users@lists.bestpractical.com
Subject: [rt-users] Filling Dates fields with scrip

Hello
 
I want to fill the fields Starts, Started and Due after ticket creation, for this I´m using the code bellow on custom action in "on create" condition
 

my $now = RT::Date->new($RT::SystemUser);
my $sla = RT::Date->new($RT::SystemUser);
$now->SetToNow;
$sla->SetToNow;
$sla->AddSeconds(+3600);
$self->TicketObj->SetStarts( $now->ISO ); 
$self->TicketObj->SetStarted( $now->ISO );
$self->TicketObj->SetDue( $sla->ISO );
return 1;

This works, but if user that create tickts already fill these fields I don´t want to overwrite the user information, I tryed the following code in place of the code above, but doesn´t work.

my $now = RT::Date->new($RT::SystemUser);
my $sla = RT::Date->new($RT::SystemUser);
$now->SetToNow;
$sla->SetToNow;
$sla->AddSeconds(+3600);
if ( $self->TicketObj->Starts == undef ){ 
$self->TicketObj->SetStarts( $now->ISO );
}
if ( $self->TicketObj->Started == undef ){
$self->TicketObj->SetStarted( $now->ISO );
}
if ( $self->TicketObj->Due == undef ){
$self->TicketObj->SetDue( $sla->ISO );
}
return 1;

How can I test if user already fill these fields?

 

Thanks

 

Cristiano

Hello Eric

I want to set a different SLA if user filled the field Start, bellow is my
code, but doesn´t work.

Can you give me some tip?

my $now = RT::Date->new($RT::SystemUser);
my $sla = RT::Date->new($RT::SystemUser);
$now->SetToNow;
$sla->SetToNow;
$sla->AddSeconds(+14400);

if ( $self->TicketObj->Starts eq ‘1970-01-01 00:00:00’ ) {
$self->TicketObj->SetStarts( $now->ISO );
}
else {
$sla = $self->TicketObj->Starts;
$sla->AddSeconds(+14400);
}

if ( $self->TicketObj->Started eq ‘1970-01-01 00:00:00’ ) {
$self->TicketObj->SetStarted( $now->ISO );
}
if ( $self->TicketObj->Due eq ‘1970-01-01 00:00:00’ ) {
$self->TicketObj->SetDue( $sla->ISO );
}
return 1;

Sds

CristianoOn 2/1/06, Schultz, Eric ESchultz@corp.untd.com wrote:

I don’t think the dates will ever be ‘undef’. Instead, check for a
default date. I believe that date is ‘1970-01-01 00:00:00’ in our system.

if ( $self->TicketObj->Started eq ‘1970-01-01 00:00:00’ ) {


    From: rt-users-bounces@lists.bestpractical.com [mailto:

rt-users-bounces@lists.bestpractical.com] On Behalf Of Cristiano da Costa
Sent: Wednesday, February 01, 2006 8:31 AM
To: rt-users@lists.bestpractical.com
Subject: [rt-users] Filling Dates fields with scrip

    Hello

    I want to fill the fields Starts, Started and Due after ticket

creation, for this I´m using the code bellow on custom action in "on create"
condition

    my $now = RT::Date->new($RT::SystemUser);
    my $sla = RT::Date->new($RT::SystemUser);
    $now->SetToNow;
    $sla->SetToNow;
    $sla->AddSeconds(+3600);
    $self->TicketObj->SetStarts( $now->ISO );
    $self->TicketObj->SetStarted( $now->ISO );
    $self->TicketObj->SetDue( $sla->ISO );
    return 1;

    This works, but if user that create tickts already fill these

fields I don´t want to overwrite the user information, I tryed the following
code in place of the code above, but doesn´t work.

    my $now = RT::Date->new($RT::SystemUser);
    my $sla = RT::Date->new($RT::SystemUser);
    $now->SetToNow;
    $sla->SetToNow;
    $sla->AddSeconds(+3600);
    if ( $self->TicketObj->Starts == undef ){
    $self->TicketObj->SetStarts( $now->ISO );
    }
    if ( $self->TicketObj->Started == undef ){
    $self->TicketObj->SetStarted( $now->ISO );
    }
    if ( $self->TicketObj->Due == undef ){
    $self->TicketObj->SetDue( $sla->ISO );
    }
    return 1;

    How can I test if user already fill these fields?



    Thanks



    Cristiano

What doesn’t work about it? It doesn’t reset the date? It always resets the date even if information was already filled out?From: Cristiano da Costa [mailto:crsurf@gmail.com]
Sent: Thursday, February 09, 2006 5:33 AM
To: Schultz, Eric
Cc: rt-users@lists.bestpractical.com
Subject: Re: [rt-users] Filling Dates fields with scrip

Hello Eric

 
I want to set a different SLA if user filled the field Start, bellow is my code, but doesn´t work.

Can you give me some tip?

 

my $now = RT::Date->new($RT::SystemUser);
my $sla = RT::Date->new($RT::SystemUser);
$now->SetToNow;
$sla->SetToNow;
$sla->AddSeconds(+14400);

if ( $self->TicketObj->Starts eq '1970-01-01 00:00:00' ) {
$self->TicketObj->SetStarts( $now->ISO );
}
else {
$sla = $self->TicketObj->Starts;
$sla->AddSeconds(+14400);
}

if ( $self->TicketObj->Started eq '1970-01-01 00:00:00' ) {
$self->TicketObj->SetStarted( $now->ISO );
}
if ( $self->TicketObj->Due eq '1970-01-01 00:00:00' ) {
$self->TicketObj->SetDue( $sla->ISO ); 
}
return 1;

Sds

Cristiano

Not sure if this will help, but this was from a scrip in my test RT database (for the customcommitcode):

-------------------------------------------------------------------

my $date = RT::Date->new($RT::SystemUser);
$date->SetToNow;
if ($self->TicketObj->StartsObj->AsString eq “Not set”) {
$self->TicketObj->SetStarts($date->ISO);
}
if ($self->TicketObj->DueObj->AsString eq “Not set”) {
$date->AddDays($RT::OverdueAfter);
use Business::Hours;
my $bizhours = new Business::Hours;
if ($RT::BusinessHours) {
$bizhours->business_hours(%$RT::BusinessHours);
}
my $due = $bizhours->first_after($date->Unix);
$date->Set(Format => ‘unix’, Value => $due);
$self->TicketObj->SetDue($date->ISO);
}
return 1;

-------------------------------------------------------------------

I believe that shows you how to “properly” check if one of the date portions of the ticket object is set.From: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Schultz, Eric
Sent: Thursday, February 09, 2006 8:26 AM
To: Cristiano da Costa
Cc: rt-users@lists.bestpractical.com
Subject: RE: [rt-users] Filling Dates fields with scrip

What doesn't work about it?  It doesn't reset the date?  It always resets the date even if information was already filled out?



	From: Cristiano da Costa [mailto:crsurf@gmail.com] 
	Sent: Thursday, February 09, 2006 5:33 AM
	To: Schultz, Eric
	Cc: rt-users@lists.bestpractical.com
	Subject: Re: [rt-users] Filling Dates fields with scrip
	
	
	Hello Eric
	
	 
	I want to set a different SLA if user filled the field Start, bellow is my code, but doesn´t work.
	
	Can you give me some tip?
	
	 

	my $now = RT::Date->new($RT::SystemUser);
	my $sla = RT::Date->new($RT::SystemUser);
	$now->SetToNow;
	$sla->SetToNow;
	$sla->AddSeconds(+14400);

	if ( $self->TicketObj->Starts eq '1970-01-01 00:00:00' ) {
	$self->TicketObj->SetStarts( $now->ISO );
	}
	else {
	$sla = $self->TicketObj->Starts;
	$sla->AddSeconds(+14400);
	}

	if ( $self->TicketObj->Started eq '1970-01-01 00:00:00' ) {
	$self->TicketObj->SetStarted( $now->ISO );
	}
	if ( $self->TicketObj->Due eq '1970-01-01 00:00:00' ) {
	$self->TicketObj->SetDue( $sla->ISO ); 
	}
	return 1;

	Sds

	Cristiano