[Rtir] Bug in RTIR 1.0.6rc1

Ruediger Riediger ruediger.riediger at sun.com
Thu Dec 2 11:01:42 EST 2004


Looking at the code in /opt/rt3/share/html/RTIR/Display.html and 
.../Incident/BulkReply.html. I have made the example from Display.html, 
BulkReply.html has a similar code snipplet.

The Due is set when an Action is done like:

--- Original code ---
   if (defined $ARGS{'Action'}) {
     if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) {
       my $action = $1;
       my ($res, $msg)=$Ticket->$action();
       push(@Actions, $msg);
     } elsif ($ARGS{'Action'} eq 'Respond' && @UpdateActions) {
       my $date = RT::Date->new($RT::SystemUser);
       $date->SetToNow;
       $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);
       $ARGS{'Due_Date'} = $date->AsString;
     }
   }
----------------------

Here, the OverdueAfter is added and then the next BusinessHour taken: 
$due = first_after("now + OverdueAfter") [something like this].

Now, if we have a weekend on Sat/Sun and OverdueAfter is two days, this 
would result in

now = Fr 23:00, plus 2 days from Overdue = Sun 23:00, next business hour 
  is Mon 0:00. This leaves you 1h.

Shouldn't that be done with $bizhours->add_seconds?
This would set the due to Tue 23:00, skipping the weekend.

--- Changed code ---
   if (defined $ARGS{'Action'}) {
     if ($ARGS{'Action'} =~ /^(Steal|Kill|Take|SetTold)$/) {
       my $action = $1;
       my ($res, $msg)=$Ticket->$action();
       push(@Actions, $msg);
     } elsif ($ARGS{'Action'} eq 'Respond' && @UpdateActions) {
       my $date = RT::Date->new($RT::SystemUser);
       $date->SetToNow;
       ### removed: $date->AddDays($RT::OverdueAfter);
       use Business::Hours;
       my $bizhours = new Business::Hours;
       if ($RT::BusinessHours) {
           $bizhours->business_hours(%$RT::BusinessHours);
       }
       my $due = $bizhours->add_seconds($date->Unix, $RT::OverdueAfter * 
86400);  ### changed
       $date->Set(Format => 'unix', Value => $due);
       $ARGS{'Due_Date'} = $date->AsString;
     }
   }
-------------------


And to answer the question for feedback on RTIR 1.2: too much custom 
code by now to move over :-/

Best regards,

	Ruediger Riediger

-- 
Dr. Ruediger Riediger                              Sun Microsystems GmbH
NSG - SunCERT                                             Komturstr. 18a
mailto:Ruediger.Riediger at Sun.com                          D-12099 Berlin
------------------------------------------------------------------------
NOTICE:  This email message is for the sole use of the intended
recipient(s) and may contain confidential and privileged information.
Any unauthorized review, use, disclosure or distribution is prohibited.
If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
------------------------------------------------------------------------
PGP 2048RSA/0x2C5020E9          964C E189 0FF0 8882  2BAB 65E2 6912 1FF2
------------------------------------------------------------------------


More information about the Rtir mailing list