public static function ajout_global_groupe($choix_groupe, $tab_new_nb_conges_all, $tab_calcul_proportionnel, $tab_new_comment_all) { // $tab_new_nb_conges_all[$id_conges]= nb_jours // $tab_calcul_proportionnel[$id_conges]= TRUE / FALSE $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $return = ''; // recup de la liste des users d'un groupe donné $list_users = get_list_users_du_groupe($choix_groupe); foreach ($tab_new_nb_conges_all as $id_conges => $nb_jours) { if ($nb_jours != 0) { $comment = $tab_new_comment_all[$id_conges]; $sql1 = "SELECT u_login, u_quotite FROM conges_users WHERE u_login IN ({$list_users}) ORDER BY u_login "; $ReqLog1 = \includes\SQL::query($sql1); while ($resultat1 = $ReqLog1->fetch_array()) { $current_login = $resultat1["u_login"]; $current_quotite = $resultat1["u_quotite"]; if (!isset($tab_calcul_proportionnel[$id_conges]) || $tab_calcul_proportionnel[$id_conges] != TRUE) { $nb_conges = $nb_jours; } else { // pour arrondir au 1/2 le + proche on fait x 2, on arrondit, puis on divise par 2 $nb_conges = ROUND($nb_jours * ($current_quotite / 100) * 2) / 2; } $nb_conges_ok = verif_saisie_decimal($nb_conges); if ($nb_conges_ok) { // 1 : on update conges_solde_user $req_update = "UPDATE conges_solde_user SET su_solde = su_solde+{$nb_conges}\n WHERE su_login = '******' AND su_abs_id = {$id_conges} "; $ReqLog_update = \includes\SQL::query($req_update); // 2 : on insert l'ajout de conges dans la table periode // recup du nom du groupe $groupename = get_group_name_from_id($choix_groupe); $commentaire = _('resp_ajout_conges_comment_periode_groupe') . " {$groupename}"; // ajout conges \responsable\Fonctions::insert_ajout_dans_periode($current_login, $nb_conges, $id_conges, $commentaire); } } $group_name = get_group_name_from_id($choix_groupe); // 3 : Enregistrement du commentaire relatif à l'ajout de jours de congés if (!isset($tab_calcul_proportionnel[$id_conges]) || $tab_calcul_proportionnel[$id_conges] != TRUE) { $comment_log = "ajout conges pour groupe {$group_name} ({$nb_jours} jour(s)) ({$comment}) (calcul proportionnel : No)"; } else { $comment_log = "ajout conges pour groupe {$group_name} ({$nb_jours} jour(s)) ({$comment}) (calcul proportionnel : Yes)"; } log_action(0, "ajout", "groupe", $comment_log); } } $return .= ' ' . _('form_modif_ok') . '<br><br>'; redirect(ROOT_PATH . 'responsable/resp_index.php?session=' . $session); return $return; }
function recup_tableau_des_users_a_afficher($select_groupe, $DEBUG = FALSE) { // si acces sans authentification est permis : alors droit de voir tout le monde // sinon, on verifie si le user a le droite de voir tout le monde if ($_SESSION['config']['consult_calendrier_sans_auth'] && !isset($_SESSION['userlogin'])) { //si gestion des groupes et un groupe a ete selectionne if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_du_groupe($select_groupe, $DEBUG); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si groupe vide) $sql1 = $sql1 . " AND u_login IN ({$list_users}) ORDER BY u_nom, u_prenom "; } } else { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; //$sql1 = $sql1." WHERE u_login!='conges' AND u_resp_login = '******' ORDER BY u_nom, u_prenom"; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' ORDER BY u_nom, u_prenom"; } } else { //construction de la requete sql pour recupérer les users à afficher : //si le user a le droit de voir tout le monde $user_see_all_in_calendrier = get_user_see_all($_SESSION['userlogin']); if ($user_see_all_in_calendrier) { //si gestion des groupes et un groupe a ete selectionne if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_du_groupe($select_groupe, $DEBUG); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si groupe vide) $sql1 = $sql1 . " AND u_login IN ({$list_users}) "; } $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } else { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; //$sql1 = $sql1." WHERE u_login!='conges' AND u_resp_login = '******' ORDER BY u_nom, u_prenom"; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' ORDER BY u_nom, u_prenom"; } } else { //si gestion des groupes et un groupe a ete selectionne if ($_SESSION['config']['gestion_groupes'] && $select_groupe != 0) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; $sql1 = $sql1 . ' AND ( u_login = \'' . SQL::quote($_SESSION['userlogin']) . '\' '; //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_du_groupe($select_groupe, $DEBUG); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si groupe vide) $sql1 = $sql1 . " OR u_login IN ({$list_users}) "; } $sql1 = $sql1 . " ) "; $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } else { if (!is_resp($_SESSION['userlogin'])) { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; //si affichage par groupe : on affiche les membres des groupes du user ($_SESSION['userlogin']) if ($_SESSION['config']['gestion_groupes'] && $_SESSION['config']['affiche_groupe_in_calendrier']) { //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_des_groupes_du_user($_SESSION['userlogin']); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si n'est membre d'aucun groupe) $sql1 = $sql1 . " AND u_login IN ({$list_users}) "; } } $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } else { $sql1 = "SELECT DISTINCT u_login, u_nom, u_prenom, u_quotite FROM conges_users "; $sql1 = $sql1 . " WHERE u_login!='conges' AND u_login!='admin' "; if ($_SESSION['userlogin'] != "conges") { $sql1 = $sql1 . ' AND ( u_login = \'' . SQL::quote($_SESSION['userlogin']) . '\' '; //si affichage par groupe : on affiche les membres des groupes du user ($_SESSION['userlogin']) if ($_SESSION['config']['gestion_groupes'] && $_SESSION['config']['affiche_groupe_in_calendrier']) { //recup de la liste des users des groupes dont le user est membre $list_users = get_list_users_des_groupes_du_user($_SESSION['userlogin']); if ($list_users != "") { //si la liste n'est pas vide ( serait le cas si n'est membre d'aucun groupe) $sql1 = $sql1 . " OR u_login IN ({$list_users}) "; } } //recup de la liste des users dont le user est responsable $list_users_2 = get_list_all_users_du_resp($_SESSION['userlogin'], $DEBUG); if ($list_users_2 != "") { //si la liste n'est pas vide ( serait le cas si n'est responsable d'aucun groupe) $sql1 = $sql1 . " OR u_login IN ({$list_users_2}) "; } if ($_SESSION['config']['double_validation_conges']) { $list_groupes_3 = get_list_login_du_grand_resp($_SESSION['userlogin']); if (count($list_groupes_3) > 0) { $list_groupes_3 = array_map("SQL::quote", $list_groupes_3); $list_groupes_3 = '\'' . implode('\', \'', $list_groupes_3) . '\''; $sql1 = $sql1 . " OR u_login IN ( {$list_groupes_3} ) "; } } $sql1 = $sql1 . " ) "; } $sql1 = $sql1 . " ORDER BY u_nom, u_prenom"; } } } } $ReqLog = SQL::query($sql1); $tab_all_users = array(); while ($resultat = $ReqLog->fetch_array()) { $tab_user = array(); $tab_user['nom'] = $resultat["u_nom"]; $tab_user['prenom'] = $resultat["u_prenom"]; $tab_user['quotite'] = $resultat["u_quotite"]; $sql_login = $resultat["u_login"]; $tab_all_users[$sql_login] = $tab_user; } return $tab_all_users; }
function recup_infos_all_users_du_groupe($group_id) { $tab = array(); // recup de la liste de tous les users du groupe ... $list_all_users_du_groupe = get_list_users_du_groupe($group_id); $list_groupes_double_validation = get_list_groupes_double_valid(); if (strlen($list_all_users_du_groupe) != 0) { $tab_users_du_groupe = explode(",", $list_all_users_du_groupe); foreach ($tab_users_du_groupe as $current_login) { $current_login = trim($current_login); $current_login = trim($current_login, "\\'"); // on enleve les quotes qui ont été ajouté lors de la creation de la liste $tab[$current_login] = recup_infos_du_user($current_login, $list_groupes_double_validation); } } return $tab; }
function ajout_global_groupe($choix_groupe, $tab_new_nb_conges_all, $tab_calcul_proportionnel, $tab_new_comment_all, $DEBUG = FALSE) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); // recup de la liste des users d'un groupe donné $list_users = get_list_users_du_groupe($choix_groupe, $DEBUG); foreach ($tab_new_nb_conges_all as $id_conges => $nb_jours) { if ($nb_jours != 0) { $comment = $tab_new_comment_all[$id_conges]; $sql1 = "SELECT u_login, u_quotite FROM conges_users WHERE u_login IN ({$list_users}) ORDER BY u_login "; $ReqLog1 = SQL::query($sql1); while ($resultat1 = $ReqLog1->fetch_array()) { $current_login = $resultat1["u_login"]; $current_quotite = $resultat1["u_quotite"]; if (!isset($tab_calcul_proportionnel[$id_conges]) || $tab_calcul_proportionnel[$id_conges] != TRUE) { $nb_conges = $nb_jours; } else { // pour arrondir au 1/2 le + proche on fait x 2, on arrondit, puis on divise par 2 $nb_conges = ROUND($nb_jours * ($current_quotite / 100) * 2) / 2; } $valid = verif_saisie_decimal($nb_conges, $DEBUG); if ($valid) { // 1 : on update conges_solde_user $req_update = 'UPDATE conges_solde_user SET su_solde = su_solde+ ' . intval($nb_conges) . ' WHERE su_login = \'' . SQL::quote($current_login) . '\' AND su_abs_id = ' . intval($id_conges) . ';'; $ReqLog_update = SQL::query($req_update); // 2 : on insert l'ajout de conges dans la table periode // recup du nom du groupe $groupename = get_group_name_from_id($choix_groupe, $DEBUG); $commentaire = _('resp_ajout_conges_comment_periode_groupe') . " {$groupename}"; // ajout conges insert_ajout_dans_periode($DEBUG, $current_login, $nb_conges, $id_conges, $commentaire); } } $group_name = get_group_name_from_id($choix_groupe, $DEBUG); if (!isset($tab_calcul_proportionnel[$id_conges]) || $tab_calcul_proportionnel[$id_conges] != TRUE) { $comment_log = "ajout conges pour groupe {$group_name} ({$nb_jours} jour(s)) ({$comment}) (calcul proportionnel : No)"; } else { $comment_log = "ajout conges pour groupe {$group_name} ({$nb_jours} jour(s)) ({$comment}) (calcul proportionnel : Yes)"; } log_action(0, "ajout", "groupe", $comment_log, $DEBUG); } } }
function ajout_global_groupe($choix_groupe, $tab_new_nb_conges_all, $tab_calcul_proportionnel, $tab_new_comment_all, $DEBUG=FALSE) { // $tab_new_nb_conges_all[$id_conges]= nb_jours // $tab_calcul_proportionnel[$id_conges]= TRUE / FALSE $PHP_SELF=$_SERVER['PHP_SELF']; $session=session_id() ; // recup de la liste des users d'un groupe donné $list_users = get_list_users_du_groupe($choix_groupe, $DEBUG); foreach($tab_new_nb_conges_all as $id_conges => $nb_jours) { if($nb_jours!=0) { $comment = $tab_new_comment_all[$id_conges]; $sql1="SELECT u_login, u_quotite FROM conges_users WHERE u_login IN ($list_users) ORDER BY u_login "; $ReqLog1 = SQL::query($sql1); while ($resultat1 = $ReqLog1->fetch_array()) { $current_login =$resultat1["u_login"]; $current_quotite=$resultat1["u_quotite"]; if( (!isset($tab_calcul_proportionnel[$id_conges])) || ($tab_calcul_proportionnel[$id_conges]!=TRUE) ) $nb_conges=$nb_jours; else // pour arrondir au 1/2 le + proche on fait x 2, on arrondit, puis on divise par 2 $nb_conges = (ROUND(($nb_jours*($current_quotite/100))*2))/2 ; // 1 : on update conges_solde_user $req_update = "UPDATE conges_solde_user SET su_solde = su_solde+$nb_conges WHERE su_login = '******' AND su_abs_id = $id_conges "; $ReqLog_update = SQL::query($req_update); // 2 : on insert l'ajout de conges dans la table periode // recup du nom du groupe $groupename= get_group_name_from_id($choix_groupe, $DEBUG); $commentaire = _('resp_ajout_conges_comment_periode_groupe') ." $groupename"; // ajout conges insert_ajout_dans_periode($DEBUG, $current_login, $nb_conges, $id_conges, $commentaire); /* // 3 : Enregistrement du commentaire relatif à l'ajout de jours de congés $sql_comment = "INSERT INTO conges_historique_ajout (ha_login, ha_date, ha_abs_id, ha_nb_jours, ha_commentaire) VALUES ('$current_login', NOW(), $id_conges, $nb_conges , '$comment')"; $ReqLog_comment = SQL::query($sql_comment) ; */ } $group_name = get_group_name_from_id($choix_groupe, $DEBUG); if( (!isset($tab_calcul_proportionnel[$id_conges])) || ($tab_calcul_proportionnel[$id_conges]!=TRUE) ) $comment_log = "ajout conges pour groupe $group_name ($nb_jours jour(s)) ($comment) (calcul proportionnel : No)"; else $comment_log = "ajout conges pour groupe $group_name ($nb_jours jour(s)) ($comment) (calcul proportionnel : Yes)"; log_action(0, "ajout", "groupe", $comment_log, $DEBUG); } } if( $DEBUG ) { echo "<form action=\"$PHP_SELF\" method=\"POST\">\n" ; echo "<input type=\"hidden\" name=\"session\" value=\"$session\">\n"; echo "<input type=\"submit\" value=\"". _('form_ok') ."\">\n"; echo "</form>\n" ; } else { echo " ". _('form_modif_ok') ." <br><br> \n"; redirect( ROOT_PATH .'responsable/resp_index.php?session=' . $session ); } }
function verif_periode_chevauche_periode_groupe($date_debut, $date_fin, $num_current_periode = '', $tab_periode_calcul, $groupe_id, $DEBUG = FALSE) { /*****************************/ // 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"; } 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, "\\'"); $comment = ""; if (verif_periode_chevauche_periode_user($date_debut, $date_fin, $current_login, $num_current_periode, $tab_periode_calcul, $comment, $DEBUG)) { return TRUE; } } }
public static function commit_new_fermeture($new_date_debut, $new_date_fin, $groupe_id, $id_type_conges) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $return = ''; // 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]; /*****************************/ // 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(); } else { $list_users = get_list_users_du_groupe($groupe_id); } $tab_users = explode(",", $list_users); //****************************** // !!!! // 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 = \hr\Fonctions::get_last_fermeture_id() + 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; } // on insere les nouvelles dates saisies dans conges_jours_fermeture $result = \hr\Fonctions::insert_year_fermeture($new_fermeture_id, $tab_fermeture, $groupe_id); $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, "\\'"); if (is_active($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); // 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); // 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); } } } // on recharge les jours fermés dans les variables de session init_tab_jours_fermeture($_SESSION['userlogin']); $return .= '<div class="wrapper">'; if ($result) { $return .= '<br>' . _('form_modif_ok') . '<br><br>'; } else { $return .= '<br>' . _('form_modif_not_ok') . ' !<br><br>'; } $comment_log = "saisie des jours de fermeture de {$date_debut} a {$date_fin}"; log_action(0, "", "", $comment_log); $return .= '<form action="' . $PHP_SELF . '?session=' . $session . '" method="POST">'; $return .= '<input class="btn btn-success" type="submit" value="' . _('form_ok') . '">'; $return .= '</form>'; $return .= '</div>'; return $return; }