public computeDate ( $start_date, $additional_delay ) : due | ||
$start_date | datetime start date | |
$additional_delay | integer additional delay to add or substract (for waiting time) (default 0) | |
리턴 | due | date time (NULL if sla not exists) |
function computeDate($start_date, $additional_delay = 0)
{
if (isset($this->fields['id'])) {
$delay = $this->getSLTTime();
// Based on a calendar
if ($this->fields['calendars_id'] > 0) {
$cal = new Calendar();
$work_in_days = $this->fields['definition_time'] == 'day';
if ($cal->getFromDB($this->fields['calendars_id'])) {
return $cal->computeEndDate($start_date, $delay, $additional_delay, $work_in_days, $this->fields['end_of_working_day']);
}
}
// No calendar defined or invalid calendar
if ($this->fields['number_time'] >= 0) {
$starttime = strtotime($start_date);
$endtime = $starttime + $delay + $additional_delay;
return date('Y-m-d H:i:s', $endtime);
}
}
return NULL;
}
/** * Get Datas to be added for SLT add * * @param $slts_id SLT id * @param $entities_id entity ID of the ticket * @param $date begin date of the ticket * @param $type type of SLT * * @since version 9.1 (before getDatasToAddSla without type parameter) * * @return array of datas to add in ticket **/ function getDatasToAddSLT($slts_id, $entities_id, $date, $type) { list($dateField, $sltField) = SLT::getSltFieldNames($type); $calendars_id = Entity::getUsedConfig('calendars_id', $entities_id); $data = array(); $slt = new SLT(); if ($slt->getFromDB($slts_id)) { $slt->setTicketCalendar($calendars_id); if ($slt->fields['type'] == SLT::TTR) { $data["ttr_slalevels_id"] = SlaLevel::getFirstSltLevel($slts_id); } // Compute due_date $data[$dateField] = $slt->computeDate($date); $data['sla_waiting_duration'] = 0; } else { $data["ttr_slalevels_id"] = 0; $data[$sltField] = 0; $data['sla_waiting_duration'] = 0; } return $data; }