function saisie_nouveau_conges($user_login, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, $onglet, $DEBUG = FALSE) { //$DEBUG=TRUE; if ($DEBUG) { echo 'user_login = '******', year_calendrier_saisie_debut = ' . $year_calendrier_saisie_debut . ', mois_calendrier_saisie_debut = ' . $mois_calendrier_saisie_debut . ', year_calendrier_saisie_fin = ' . $year_calendrier_saisie_fin . ', mois_calendrier_saisie_fin = ' . $mois_calendrier_saisie_fin . ', onglet = ' . $onglet . '<br>'; } $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $mois_calendrier_saisie_debut_prec = 0; $year_calendrier_saisie_debut_prec = 0; $mois_calendrier_saisie_debut_suiv = 0; $year_calendrier_saisie_debut_suiv = 0; $mois_calendrier_saisie_fin_prec = 0; $year_calendrier_saisie_fin_prec = 0; $mois_calendrier_saisie_fin_suiv = 0; $year_calendrier_saisie_fin_suiv = 0; init_tab_jours_fermeture($user_login); echo '<form name="form1" action="' . $PHP_SELF . '?session=' . $session . '&onglet=' . $onglet . '" method="POST">'; // il faut indiquer le champ de formulaire 'login_user' car il est récupéré par le javascript qui apelle le calcul automatique. echo '<table cellpadding="0" cellspacing="5" border="0">'; echo '<tr align="center">'; echo '<td>'; echo '<table cellpadding="0" cellspacing="0" border="0">'; echo '<tr align="center">'; echo '<td>'; echo '<fieldset class="cal_saisie">'; echo '<table cellpadding="0" cellspacing="0" border="0">'; echo '<tr align="center">'; echo "<td>\n"; /******************************************************************/ // affichage du calendrier de saisie de la date de DEBUT de congès /******************************************************************/ echo '<table cellpadding="0" cellspacing="0" width="250" border="0">'; echo '<tr>'; init_var_navigation_mois_year($mois_calendrier_saisie_debut, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut_prec, $year_calendrier_saisie_debut_prec, $mois_calendrier_saisie_debut_suiv, $year_calendrier_saisie_debut_suiv, $mois_calendrier_saisie_fin, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin_prec, $year_calendrier_saisie_fin_prec, $mois_calendrier_saisie_fin_suiv, $year_calendrier_saisie_fin_suiv); // affichage des boutons de défilement // recul du mois saisie début echo '<td align="center" class="big">'; echo '<a href="' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut_prec . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut_prec . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin . '&user_login='******'&onglet=' . $onglet . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simfirs.gif" width="16" height="16" border="0" alt="' . _('divers_mois_precedent') . '" title="' . _('divers_mois_precedent') . '"> '; echo '</a>'; echo '</td>'; echo '<td align="center" class="big">' . _('divers_debut_maj') . ' :</td>'; // affichage des boutons de défilement // avance du mois saisie début // si le mois de saisie fin est antérieur ou égal au mois de saisie début, on avance les 2 , sinon on avance que le mois de saisie début if ($year_calendrier_saisie_debut_suiv == $year_calendrier_saisie_fin && $mois_calendrier_saisie_debut_suiv >= $mois_calendrier_saisie_fin || $year_calendrier_saisie_debut_suiv > $year_calendrier_saisie_fin) { $lien_mois_debut_suivant = $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut_suiv . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut_suiv . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_debut_suiv . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_debut_suiv . '&user_login='******'&onglet=' . $onglet; } else { $lien_mois_debut_suivant = $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut_suiv . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut_suiv . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin . '&user_login='******'&onglet=' . $onglet; } echo '<td align="center" class="big">'; echo '<a href="' . $lien_mois_debut_suivant . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simlast.gif" width="16" height="16" border="0" alt="' . _('divers_mois_suivant') . '" title="' . _('divers_mois_suivant') . '"> '; echo '</a>'; echo '</td>'; echo '</tr>'; echo '</table>'; /*** calendrier saisie date debut ***/ affiche_calendrier_saisie_date($user_login, $year_calendrier_saisie_debut, $mois_calendrier_saisie_debut, 'new_debut', $DEBUG); echo '</td>'; /**************************************************/ /* cellule 2 : boutons radio matin ou après midi */ echo '<td align="left">'; echo '<input type="radio" name="new_demi_jour_deb" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { // attention : IE6 : bug avec les "OnChange" sur les boutons radio!!! (on remplace par OnClick) if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="am" checked><b><u>' . _('form_am') . '</u></b><br><br>'; echo '<input type="radio" name="new_demi_jour_deb" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="pm"><b><u>' . _('form_pm') . '</u></b><br><br>'; echo '</td>'; /**************************************************/ echo '</tr>'; echo '</table>'; echo '</fieldset>'; echo '</td>'; echo '</tr>'; echo '<tr align="center">'; echo '<td><img src="' . TEMPLATE_PATH . 'img/shim.gif" width="15" height="10" border="0" vspace="0" hspace="0"></td>'; echo '</tr>'; echo '<tr align="center">'; echo '<td>'; echo '<fieldset class="cal_saisie">'; echo '<table cellpadding="0" cellspacing="0" border="0">'; echo '<tr align="center">'; echo '<td>'; /******************************************************************/ // affichage du calendrier de saisie de la date de FIN de congès /******************************************************************/ echo '<table cellpadding="0" cellspacing="0" width="250" border="0">'; echo '<tr>'; $mois_calendrier_saisie_fin_prec = $mois_calendrier_saisie_fin == 1 ? 12 : $mois_calendrier_saisie_fin - 1; $mois_calendrier_saisie_fin_suiv = $mois_calendrier_saisie_fin == 12 ? 1 : $mois_calendrier_saisie_fin + 1; // affichage des boutons de défilement // recul du mois saisie fin // si le mois de saisie fin est antérieur ou égal au mois de saisie début, on recule les 2 , sinon on recule que le mois de saisie fin if ($year_calendrier_saisie_debut == $year_calendrier_saisie_fin_prec && $mois_calendrier_saisie_debut >= $mois_calendrier_saisie_fin_prec || $year_calendrier_saisie_debut > $year_calendrier_saisie_fin_prec) { $lien_mois_fin_precedent = '' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_fin_prec . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_fin_prec . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin_prec . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin_prec . '&user_login='******'&onglet=' . $onglet; } else { $lien_mois_fin_precedent = '' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin_prec . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin_prec . '&user_login='******'&onglet=' . $onglet; } echo '<td align="center" class="big">'; echo '<a href="' . $lien_mois_fin_precedent . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simfirs.gif" width="16" height="16" border="0" alt="' . _('divers_mois_precedent') . '" title="' . _('divers_mois_precedent') . '">'; echo ' </a>'; echo '</td>'; echo '<td align="center" class="big">' . _('divers_fin_maj') . ' :</td>'; // affichage des boutons de défilement // avance du mois saisie fin echo '<td align="center" class="big">'; echo '<a href="' . $PHP_SELF . '?session=' . $session . '&year_calendrier_saisie_debut=' . $year_calendrier_saisie_debut . '&mois_calendrier_saisie_debut=' . $mois_calendrier_saisie_debut . '&year_calendrier_saisie_fin=' . $year_calendrier_saisie_fin_suiv . '&mois_calendrier_saisie_fin=' . $mois_calendrier_saisie_fin_suiv . '&user_login='******'&onglet=' . $onglet . '">'; echo ' <img src="' . TEMPLATE_PATH . 'img/simlast.gif" width="16" height="16" border="0" alt="' . _('divers_mois_suivant') . '" title="' . _('divers_mois_suivant') . '"> '; echo '</a>'; echo '</td>'; echo '</tr>'; echo '</table>'; /*** calendrier saisie date fin ***/ affiche_calendrier_saisie_date($user_login, $year_calendrier_saisie_fin, $mois_calendrier_saisie_fin, 'new_fin', $DEBUG); echo '</td>'; /**************************************************/ /* cellule 2 : boutons radio matin ou après midi */ echo '<td align="left">'; echo '<input type="radio" name="new_demi_jour_fin" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { // attention : IE6 : bug avec les "OnChange" sur les boutons radio!!! (on remplace par OnClick) if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="am"><b><u>' . _('form_am') . '</u></b><br><br>'; echo '<input type="radio" name="new_demi_jour_fin" '; if ($_SESSION['config']['rempli_auto_champ_nb_jours_pris']) { if (isset($_SERVER['HTTP_USER_AGENT']) && stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE') != FALSE) { echo 'onClick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return true;"'; } else { echo 'onChange="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;"'; } } echo 'value="pm" checked><b><u>' . _('form_pm') . '</u></b><br><br>'; echo '</td>'; /**************************************************/ echo '</tr>'; echo '</table>'; echo '</fieldset>'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '</td>'; echo '<td><img src="' . TEMPLATE_PATH . 'img/shim.gif" width="15" height="2" border="0" vspace="0" hspace="0"></td>'; echo '<td>'; /*******************/ /* formulaire */ /*******************/ echo '<table cellpadding="0" cellspacing="2" border="0" >'; echo '<tr>'; echo '<td valign="top">'; echo '<table cellpadding="2" cellspacing="3" border="0" >'; // echo '<input type="hidden" name="login_user" value="'.'.$_SESSION['userlogin'].'.'">'; echo '<input type="hidden" name="login_user" value="' . $user_login . '">'; echo '<input type="hidden" name="session" value="' . $session . '">'; // bouton 'compter les jours' if ($_SESSION['config']['affiche_bouton_calcul_nb_jours_pris']) { echo '<tr><td colspan="2">'; echo '<input type="button" onclick="compter_jours(new_debut, new_fin, login_user, new_demi_jour_deb, new_demi_jour_fin);return false;" value="' . _('saisie_conges_compter_jours') . '">'; echo '</td></tr>'; } // zones de texte echo '<tr align="center"><td><b>' . _('saisie_conges_nb_jours') . '</b></td><td><b>' . _('divers_comment_maj_1') . '</b></td></tr>'; if ($_SESSION['config']['disable_saise_champ_nb_jours_pris']) { // zone de texte en readonly et grisée $text_nb_jours = '<input type="text" name="new_nb_jours" size="10" maxlength="30" value="" style="background-color: #D4D4D4; " readonly="readonly">'; } else { $text_nb_jours = '<input type="text" name="new_nb_jours" size="10" maxlength="30" value="">'; } $text_commentaire = '<input type="text" name="new_comment" size="25" maxlength="30" value="">'; echo '<tr align="center">'; echo '<td>' . $text_nb_jours . '</td><td>' . $text_commentaire . '</td>'; echo '</tr>'; echo '<tr align="center"><td><img src="' . TEMPLATE_PATH . 'img/shim.gif" width="15" height="10" border="0" vspace="0" hspace="0"></td><td></td></tr>'; echo '<tr align="center">'; echo '<td colspan=2>'; echo '<input type="hidden" name="user_login" value="' . $user_login . '">'; echo '<input type="hidden" name="new_demande_conges" value=1>'; // boutons du formulaire // les classes "button_type_submit" et "button_type_cancel" // servent à choisir leur position (droite gauche) dans vos feuilles de style (voir style.css) echo '<input type="submit" class="button_type_submit" value="' . _('form_submit') . '"> <input type="reset" class="button_type_cancel" value="' . _('form_cancel') . '">'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '</td>'; /*****************/ /* boutons radio */ /*****************/ // recup d tableau des types de conges $tab_type_conges = recup_tableau_types_conges($DEBUG); // recup du tableau des types d'absence $tab_type_absence = recup_tableau_types_absence($DEBUG); // recup d tableau des types de conges exceptionnels $tab_type_conges_exceptionnels = recup_tableau_types_conges_exceptionnels($DEBUG); $already_checked = false; echo '<td align="left" valign="top">'; // si le user a droit de saisir une demande de conges ET si on est PAS dans une fenetre de responsable // OU si le user n'a pas droit de saisir une demande de conges ET si on est dans une fenetre de responsable // OU si le user est un RH ou un admin if ($_SESSION['config']['user_saisie_demande'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['user_saisie_demande'] == FALSE && $user_login != $_SESSION['userlogin'] || is_hr($_SESSION['userlogin']) || is_admin($_SESSION['userlogin'])) { // congés echo '<b><i><u>' . _('divers_conges') . ' :</u></i></b><br>'; foreach ($tab_type_conges as $id => $libelle) { if ($id == 1) { echo '<input type="radio" name="new_type" value="' . $id . '" checked> ' . $libelle . '<br>'; $already_checked = true; } else { echo '<input type="radio" name="new_type" value="' . $id . '"> ' . $libelle . '<br>'; } } } // si le user a droit de saisir une mission ET si on est PAS dans une fenetre de responsable // OU si le resp a droit de saisir une mission ET si on est PAS dans une fenetre dd'utilisateur // OU si le resp a droit de saisir une mission ET si le resp est resp de lui meme if ($_SESSION['config']['user_saisie_mission'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['resp_saisie_mission'] && $user_login != $_SESSION['userlogin'] || $_SESSION['config']['resp_saisie_mission'] && is_resp_of_user($_SESSION['userlogin'], $user_login, $DEBUG)) { echo '<br>'; // absences echo '<b><i><u>' . _('divers_absences') . ' :</u></i></b><br>'; foreach ($tab_type_absence as $id => $libelle) { if (!$already_checked) { echo '<input type="radio" name="new_type" value="' . $id . '" checked> ' . $libelle . '<br>'; $already_checked = true; } else { echo '<input type="radio" name="new_type" value="' . $id . '"> ' . $libelle . '<br>'; } } } // si le user a droit de saisir une demande de conges ET si on est PAS dans une fenetre de responsable // OU si le user n'a pas droit de saisir une demande de conges ET si on est dans une fenetre de responsable // OU si c'est un HR if ($_SESSION['config']['gestion_conges_exceptionnels'] && ($_SESSION['config']['user_saisie_demande'] && $user_login == $_SESSION['userlogin'] || $_SESSION['config']['user_saisie_demande'] == FALSE && $user_login != $_SESSION['userlogin'] || is_hr($_SESSION['userlogin']))) { echo '<br>'; // congés exceptionnels echo '<b><i><u>' . _('divers_conges_exceptionnels') . ' :</u></i></b><br>'; foreach ($tab_type_conges_exceptionnels as $id => $libelle) { if ($id == 1) { echo '<input type="radio" name="new_type" value="' . $id . '" checked> ' . $libelle . '<br>'; } else { echo '<input type="radio" name="new_type" value="' . $id . '"> ' . $libelle . '<br>'; } } } echo '</td>'; echo '</tr>'; echo '</table>'; echo '</td>'; echo '</tr>'; echo '</table>'; echo '</form>'; }
function compter($user, $num_current_periode, $date_debut, $date_fin, $opt_debut, $opt_fin, &$comment, $DEBUG = FALSE, $num_update = null) { // verif si date_debut est bien anterieure à date_fin // ou si meme jour mais debut l'apres midi et fin le matin if (strtotime($date_debut) > strtotime($date_fin) || $date_debut == $date_fin && $opt_debut == "pm" && $opt_fin == "am") { $comment = _('calcul_nb_jours_commentaire_bad_date'); return 0; } if ($date_debut != 0 && $date_fin != 0) { // On ne peut pas calculer si, pour l'année considérée, les jours feries ont ete saisis if (verif_jours_feries_saisis($date_debut, $DEBUG, $num_update) == FALSE || verif_jours_feries_saisis($date_fin, $DEBUG, $num_update) == FALSE) { $comment = _('calcul_impossible') . "<br>\n" . _('jours_feries_non_saisis') . "<br>\n" . _('contacter_admin') . "<br>\n"; return 0; } /************************************************************/ // 1 : on fabrique un tableau de jours (divisé chacun en 2 demi-jour) de la date_debut à la date_fin // 2 : on verifie que le conges demandé ne chevauche pas une periode deja posée // 3 : on affecte à 0 ou 1 chaque demi jour, en fonction de s'il est travaillé ou pas // 4 : à la fin , on parcours le tableau en comptant le nb de demi-jour à 1, on multiplie ce total par 0.5, ça donne le nb de jours du conges ! $nb_jours = 0; /************************************************************/ // 1 : fabrication et initialisation du tableau des demi-jours de la date_debut à la date_fin $tab_periode_calcul = make_tab_demi_jours_periode($date_debut, $date_fin, $opt_debut, $opt_fin, $DEBUG); /************************************************************/ // 2 : on verifie que le conges demandé ne chevauche pas une periode deja posée if (verif_periode_chevauche_periode_user($date_debut, $date_fin, $user, $num_current_periode, $tab_periode_calcul, $comment, $DEBUG, $num_update)) { return 0; } /************************************************************/ // 3 : on affecte à 0 ou 1 chaque demi jour, en fonction de s'il est travaillé ou pas // on initialise le tableau global des jours fériés s'il ne l'est pas déjà : if (!isset($_SESSION["tab_j_feries"])) { init_tab_jours_feries(); //print_r($_SESSION["tab_j_feries"]); // verif DEBUG } // on initialise le tableau global des jours fermés s'il ne l'est pas déjà : if (!isset($_SESSION["tab_j_fermeture"])) { init_tab_jours_fermeture($user, $DEBUG); //print_r($_SESSION["tab_j_fermeture"]); // verif DEBUG } $current_day = $date_debut; $date_limite = jour_suivant($date_fin); // on va avancer jour par jour jusqu'à la date limite et voir si chaque jour est travaillé, férié, rtt, etc ... while ($current_day != $date_limite) { // calcul du timestamp du jour courant $pieces = explode("-", $current_day); // date de la forme yyyy-mm-jj $y = $pieces[0]; $m = $pieces[1]; $j = $pieces[2]; $timestamp_du_jour = mktime(0, 0, 0, $m, $j, $y); // on regarde si le jour est travaillé ou pas dans la config de l'appli $j_name = date("D", $timestamp_du_jour); if ($j_name == "Sat" && $_SESSION['config']['samedi_travail'] == FALSE || $j_name == "Sun" && $_SESSION['config']['dimanche_travail'] == FALSE) { // on ne compte ce jour à 0 $tab_periode_calcul[$current_day]['am'] = 0; $tab_periode_calcul[$current_day]['pm'] = 0; } elseif (est_chome($timestamp_du_jour)) { // on ne compte ce jour à 0 $tab_periode_calcul[$current_day]['am'] = 0; $tab_periode_calcul[$current_day]['pm'] = 0; } else { /***************/ // verif des rtt ou temp partiel (dans la table rtt) $val_matin = "N"; $val_aprem = "N"; recup_infos_artt_du_jour($user, $timestamp_du_jour, $val_matin, $val_aprem); if ($val_matin == "Y") { // rtt le matin $tab_periode_calcul[$current_day]['am'] = 0; } if ($val_aprem == "Y") { // rtt l'après midi $tab_periode_calcul[$current_day]['pm'] = 0; } } $current_day = jour_suivant($current_day); } if ($DEBUG) { echo "tab_periode_calcul :<br>\n"; print_r($tab_periode_calcul); echo "<br>\n"; } /************************************************************/ // 3 : on va avancer jour par jour jusqu'à la date limite pour compter le nb de demi jour à 1 $current_day = $date_debut; $date_limite = jour_suivant($date_fin); while ($current_day != $date_limite) { $nb_jours = $nb_jours + $tab_periode_calcul[$current_day]['am'] + $tab_periode_calcul[$current_day]['pm']; $current_day = jour_suivant($current_day); } $nb_jours = $nb_jours * 0.5; return $nb_jours; } else { return 0; } }
function commit_new_fermeture($new_date_debut, $new_date_fin, $groupe_id, $id_type_conges, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); // on transforme les formats des dates $tab_date_debut = explode("/", $new_date_debut); // date au format d/m/Y $date_debut = $tab_date_debut[2] . "-" . $tab_date_debut[1] . "-" . $tab_date_debut[0]; $tab_date_fin = explode("/", $new_date_fin); // date au format d/m/Y $date_fin = $tab_date_fin[2] . "-" . $tab_date_fin[1] . "-" . $tab_date_fin[0]; if ($DEBUG) { echo "date_debut = {$date_debut} // date_fin = {$date_fin}<br>\n"; } /*****************************/ // on construit le tableau des users affectés par les fermetures saisies : if ($groupe_id == 0) { // fermeture pour tous ! $list_users = get_list_all_users($DEBUG); } else { $list_users = get_list_users_du_groupe($groupe_id, $DEBUG); } $tab_users = explode(",", $list_users); if ($DEBUG) { echo "tab_users =<br>\n"; print_r($tab_users); echo "<br>\n"; } //****************************** // !!!! // type d'absence à modifier .... // $id_type_conges = 1 ; //"cp" : conges payes //calcul de l'ID de de la fermeture (en fait l'ID de la saisie de fermeture) $new_fermeture_id = get_last_fermeture_id($DEBUG) + 1; /***********************************************/ /** enregistrement des jours de fermetures **/ $tab_fermeture = array(); for ($current_date = $date_debut; $current_date <= $date_fin; $current_date = jour_suivant($current_date)) { $tab_fermeture[] = $current_date; } if ($DEBUG) { echo "tab_fermeture =<br>\n"; print_r($tab_fermeture); echo "<br>\n"; } // on insere les nouvelles dates saisies dans conges_jours_fermeture $result = insert_year_fermeture($new_fermeture_id, $tab_fermeture, $groupe_id, $DEBUG); $opt_debut = 'am'; $opt_fin = 'pm'; /*********************************************************/ /** insersion des jours de fermetures pour chaque user **/ foreach ($tab_users as $current_login) { $current_login = trim($current_login); // on enleve les quotes qui ont été ajoutées lors de la creation de la liste $current_login = trim($current_login, "\\'"); // on compte le nb de jour à enlever au user (par periode et au total) // on ne met à jour la table conges_periode $nb_jours = 0; $comment = ""; // $nb_jours = compter($current_login, $date_debut, $date_fin, $opt_debut, $opt_fin, $comment, $DEBUG); $nb_jours = compter($current_login, "", $date_debut, $date_fin, $opt_debut, $opt_fin, $comment, $DEBUG); if ($DEBUG) { echo "<br>user_login : "******" nbjours : " . $nb_jours . "<br>\n"; } // on ne met à jour la table conges_periode . $commentaire = _('divers_fermeture'); $etat = "ok"; $num_periode = insert_dans_periode($current_login, $date_debut, $opt_debut, $date_fin, $opt_fin, $nb_jours, $commentaire, $id_type_conges, $etat, $new_fermeture_id, $DEBUG); // mise à jour du solde de jours de conges pour l'utilisateur $current_login if ($nb_jours != 0) { soustrait_solde_et_reliquat_user($current_login, "", $nb_jours, $id_type_conges, $date_debut, $opt_debut, $date_fin, $opt_fin, $DEBUG); } } // on recharge les jours fermés dans les variables de session init_tab_jours_fermeture($_SESSION['userlogin'], $DEBUG); echo '<div class="wrapper">'; if ($result) { echo "<br>" . _('form_modif_ok') . "<br><br>\n"; } else { echo "<br>" . _('form_modif_not_ok') . " !<br><br>\n"; } $comment_log = "saisie des jours de fermeture de {$date_debut} a {$date_fin}"; log_action(0, "", "", $comment_log, $DEBUG); echo "<form action=\"{$PHP_SELF}?session={$session}\" method=\"POST\">\n"; echo "<input class=\"btn btn-success\" type=\"submit\" value=\"" . _('form_ok') . "\">\n"; echo "</form>\n"; echo '</div>'; }