feat: hide ticket validation button for HR ticket is older than 48 hours

This commit is contained in:
Kheireddine Mehdi
2025-11-20 13:33:55 +01:00
parent 8371783324
commit f1f398a84b
2 changed files with 54 additions and 37 deletions

View File

@ -714,7 +714,7 @@
from glpi_tickets from glpi_tickets
where id = ?' LIMIT 1"; where id = ? LIMIT 1";
$stmt = $DB->prepare($query); $stmt = $DB->prepare($query);
@ -1106,7 +1106,7 @@
// closing hr tickets after 1 day // closing hr tickets after 2 days
function close_hr_tickets(){ function close_hr_tickets(){
global $DB; global $DB;
$stmt = $DB->prepare("update glpi_tickets set status = 6 , closedate = now() where id in ( SELECT $stmt = $DB->prepare("update glpi_tickets set status = 6 , closedate = now() where id in ( SELECT
@ -1122,3 +1122,22 @@
return $stmt->execute(); 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');
}
}

View File

@ -7385,21 +7385,40 @@ abstract class CommonITILObject extends CommonDBTM {
echo "</div>"; echo "</div>";
} }
//sophal block validation =>
//clôturer la modification du validation (autorisation absence,entree .......) 48h aprees l envoi
/*
if (strpos($item['type'], 'Validation') > 0 && if (strpos($item['type'], 'Validation') > 0 &&
(isset($item_i['can_answer']) && $item_i['can_answer'])) { (isset($item_i['can_answer']) && $item_i['can_answer'])) {
$detail_ticket = get_detail_ticket($_GET['id']); // sophal
$itilcategories_ids = array(15, 16 , 12, 38 , 36); // prevent validators to update validations after 48 hours from tickets creation ( excluding weekends )
$date_fin = date('Y-m-d H:i:s',strtotime('+48 hour',strtotime($detail_ticket['date']))); $detail_ticket = get_detail_ticket($_GET['id']);
$courant_date = date('Y-m-d H:i:s'); $itilcategories_ids = array(15, 16 , 12, 38 , 36, 72);
$requisition_date = new DateTime($detail_ticket['requisition_date']);
if(in_array($detail_ticket['itilcategories_id'],$itilcategories_ids)){ $max_date = getMaxTicketValidationDateTime($requisition_date);
if($date_fin <= $courant_date){
$item_i['can_answer'] = 0; $courant_date = new DateTime(); // current datetime
$validateur_res = explode("=>", $item_i['content']);
if (!(in_array($detail_ticket['itilcategories_id'], $itilcategories_ids))
|| $max_date >= $courant_date) {
$form_url = $item['type']::getFormURL();
echo "<form id='validationanswers_id_{$item_i['id']}' class='center' action='$form_url' method='post'>";
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 "<button type='submit' class='submit approve' name='approval_action' value='approve'>";
echo "<i class='far fa-thumbs-up'></i>&nbsp;&nbsp;".__('Approve')."</button>";
echo "<button type='submit' class='submit refuse very_small_space' name='approval_action' value='refuse'>";
echo "<i class='far fa-thumbs-down'></i>&nbsp;&nbsp;".__('Refuse')."</button>";
Html::closeForm();
} else {
$item_i['can_answer'] = 0;
echo '<style> echo '<style>
.alert { .alert {
position: relative; position: relative;
@ -7415,33 +7434,12 @@ abstract class CommonITILObject extends CommonDBTM {
} }
</style>'; </style>';
echo '<div class="alert alert-danger" role="alert"> echo '<div class="alert alert-danger" role="alert">
'.get_fullname_user($item_i['users_id_validate']).' => vous avez dépassé le délai<strong> de validation</strong> (48 hours) vous avez dépassé le délai<strong> de validation</strong> (48 hours)
</div>'; </div>';
} }
}
} }
*/
//sophal
if (strpos($item['type'], 'Validation') > 0 &&
(isset($item_i['can_answer']) && $item_i['can_answer'])) {
$form_url = $item['type']::getFormURL();
echo "<form id='validationanswers_id_{$item_i['id']}' class='center' action='$form_url' method='post'>";
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 "<button type='submit' class='submit approve' name='approval_action' value='approve'>";
echo "<i class='far fa-thumbs-up'></i>&nbsp;&nbsp;".__('Approve')."</button>";
echo "<button type='submit' class='submit refuse very_small_space' name='approval_action' value='refuse'>";
echo "<i class='far fa-thumbs-down'></i>&nbsp;&nbsp;".__('Refuse')."</button>";
Html::closeForm();
}
if ($item['type'] == 'Solution' && $item_i['status'] != CommonITILValidation::WAITING && $item_i['status'] != CommonITILValidation::NONE) { if ($item['type'] == 'Solution' && $item_i['status'] != CommonITILValidation::WAITING && $item_i['status'] != CommonITILValidation::NONE) {
echo "<div class='users_id_approval' id='users_id_approval_".$item_i['users_id_approval']."'>"; echo "<div class='users_id_approval' id='users_id_approval_".$item_i['users_id_approval']."'>";
$user->getFromDB($item_i['users_id_approval']); $user->getFromDB($item_i['users_id_approval']);