[rt-users] Slightly OT: Business::Hours question

Gene LeDuc gleduc at mail.sdsu.edu
Fri Apr 20 16:05:38 EDT 2007


Hi All,

A little OT, but also related to RT.  I'm getting an unexpected result 
using Business::Hours to compute a due date in an RT ticket (I lifted the 
example from the wiki).  Since a real week is 5 business days and each 
business day is 8.5 hours, 1 business week should be exactly 42.5 business 
hours.  Doing the math using real days sets the due date for a ticket 
created on Friday and due in 5 days to next Wednesday, but using business 
days (Sat/Sun are not business days), it should be 2 days later, next 
Friday.  I'd appreciate it if anyone familiar with this module would take a 
quick look at my code and point out what I'm doing wrong.

Here is the code (with some debug logs) from my scrip:
### Set due date so that it accounts for business days
use Business::Hours;
my $duedate = RT::Date->new($RT::SystemUser);
my $daysuntildue = 5;
my $secondsuntildue = $daysuntildue * 8.5 * 60 * 60;

$RT::Logger->debug("$MyName: daysuntildue: $daysuntildue, seconds: 
$secondsuntildue");
my $hours = Business::Hours->new();
$hours->business_hours(
   { 0 => { Name => 'Sunday', Start => undef, End => undef },
     1 => { Name => 'Monday', Start => '08:00', End => '16:30' },
     2 => { Name => 'Tuesday', Start => '08:00', End => '16:30' },
     3 => { Name => 'Wednesday', Start => '08:00', End => '16:30' },
     4 => { Name => 'Thursday', Start => '08:00', End => '16:30' },
     5 => { Name => 'Friday', Start => '08:00', End => '16:30' },
     6 => { Name => 'Saturday', Start => undef, End => undef }
   } );
my $curtime = time;
my $bus_hours_duetime = $hours->add_seconds ($curtime, $secondsuntildue);
$RT::Logger->debug("$MyName: curtime: $curtime, bus_hours_duetime: 
$bus_hours_duetime");

The debug log entries for this scrip show that $bus_hours_duetime is 
-1.  The docs at cpan seem to indicate that this means there are no 
business hours within 30 days of $curtime.  If so, I must have messed up 
setting my business hours, but I can't see where.

[Fri Apr 20 18:32:46 2007] [debug]: Scrip DNS:35:Commit (New Ticket): 
daysuntildue: 5, seconds: 153000 ((eval 327):30)
[Fri Apr 20 18:32:46 2007] [debug]: Scrip DNS:35:Commit (New Ticket): 
curtime: 1177093966, bus_hours_duetime: -1 ((eval 327):43)

Thanks,
Gene



-- 
Gene LeDuc, GSEC
Security Analyst
San Diego State University 




More information about the rt-users mailing list