diff --git a/functionsophalglpi.php b/functionsophalglpi.php index ea329724..d5744aea 100644 --- a/functionsophalglpi.php +++ b/functionsophalglpi.php @@ -714,7 +714,7 @@ from glpi_tickets - where id = ?' LIMIT 1"; + where id = ? LIMIT 1"; $stmt = $DB->prepare($query); @@ -1106,7 +1106,7 @@ - // closing hr tickets after 1 day + // closing hr tickets after 2 days function close_hr_tickets(){ global $DB; $stmt = $DB->prepare("update glpi_tickets set status = 6 , closedate = now() where id in ( SELECT @@ -1122,3 +1122,22 @@ return $stmt->execute(); } + function getMaxTicketValidationDateTime(DateTime $requisition_date): DateTime { + $weekday = (int) $requisition_date->format('N'); // 1 (Mon) to 7 (Sun) + + if ($weekday === 5) { // Friday + $sunday = clone $requisition_date; + $sunday->modify('+2 days')->setTime(0, 0); + return $sunday->modify('+48 hours'); + } elseif ($weekday === 6) { // Saturday + $sunday = clone $requisition_date; + $sunday->modify('+1 day')->setTime(0, 0); + return $sunday->modify('+48 hours'); + } elseif (in_array($weekday, [3, 4])) { // Wednesday or Thursday + $result = clone $requisition_date; + return $result->modify('+96 hours'); + } else { + $result = clone $requisition_date; + return $result->modify('+48 hours'); + } + } diff --git a/inc/commonitilobject.class.php b/inc/commonitilobject.class.php index 7db11f84..cd9e8e0b 100644 --- a/inc/commonitilobject.class.php +++ b/inc/commonitilobject.class.php @@ -7385,21 +7385,40 @@ abstract class CommonITILObject extends CommonDBTM { echo ""; } - //sophal block validation => - //clôturer la modification du validation (autorisation absence,entree .......) 48h aprees l envoi - /* + if (strpos($item['type'], 'Validation') > 0 && (isset($item_i['can_answer']) && $item_i['can_answer'])) { - $detail_ticket = get_detail_ticket($_GET['id']); - $itilcategories_ids = array(15, 16 , 12, 38 , 36); - $date_fin = date('Y-m-d H:i:s',strtotime('+48 hour',strtotime($detail_ticket['date']))); - $courant_date = date('Y-m-d H:i:s'); - - if(in_array($detail_ticket['itilcategories_id'],$itilcategories_ids)){ - if($date_fin <= $courant_date){ - $item_i['can_answer'] = 0; - $validateur_res = explode("=>", $item_i['content']); + // sophal + // prevent validators to update validations after 48 hours from tickets creation ( excluding weekends ) + $detail_ticket = get_detail_ticket($_GET['id']); + $itilcategories_ids = array(15, 16 , 12, 38 , 36, 72); + $requisition_date = new DateTime($detail_ticket['requisition_date']); + $max_date = getMaxTicketValidationDateTime($requisition_date); + + $courant_date = new DateTime(); // current datetime + + if (!(in_array($detail_ticket['itilcategories_id'], $itilcategories_ids)) + || $max_date >= $courant_date) { + + + $form_url = $item['type']::getFormURL(); + echo "
"; + echo Html::hidden('id', ['value' => $item_i['id']]); + echo Html::hidden('users_id_validate', ['value' => $item_i['users_id_validate']]); + Html::textarea([ + 'name' => 'comment_validation', + 'rows' => 5 + ]); + echo ""; + + echo ""; + Html::closeForm(); + } else { + + $item_i['can_answer'] = 0; echo ''; echo ''; - } - } + } } - */ - //sophal - - if (strpos($item['type'], 'Validation') > 0 && - (isset($item_i['can_answer']) && $item_i['can_answer'])) { - $form_url = $item['type']::getFormURL(); - echo ""; - echo Html::hidden('id', ['value' => $item_i['id']]); - echo Html::hidden('users_id_validate', ['value' => $item_i['users_id_validate']]); - Html::textarea([ - 'name' => 'comment_validation', - 'rows' => 5 - ]); - echo ""; - - echo ""; - Html::closeForm(); - } if ($item['type'] == 'Solution' && $item_i['status'] != CommonITILValidation::WAITING && $item_i['status'] != CommonITILValidation::NONE) { echo "
"; $user->getFromDB($item_i['users_id_approval']);