function new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type, $DEBUG = FALSE) { //conversion des dates $new_debut = convert_date($new_debut); $new_fin = convert_date($new_fin); // print_r($new_fin); //$new_nb_jours = get_nb_jour($new_debut, $new_fin, $new_demi_jour_deb, $new_demi_jour_fin); $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); // echo " $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type<br><br>\n"; // exit; // verif validité des valeurs saisies $valid = verif_saisie_new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment); // verifie que le solde de conges sera encore positif après validation if ($_SESSION['config']['solde_toujours_positif']) { $valid = $valid && verif_solde_user($_SESSION['userlogin'], $new_type, $new_nb_jours, $DEBUG); } if ($valid) { if (in_array(get_type_abs($new_type, $DEBUG), array('conges', 'conges_exceptionnels'))) { $new_etat = 'demande'; } else { $new_etat = 'ok'; } $new_comment = addslashes($new_comment); $periode_num = insert_dans_periode($_SESSION['userlogin'], $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type, $new_etat, 0, $DEBUG); if ($periode_num != 0) { echo schars(_('form_modif_ok')) . ' !<br><br>' . "\n"; //envoi d'un mail d'alerte au responsable (si demandé dans config de php_conges) if ($_SESSION['config']['mail_new_demande_alerte_resp']) { alerte_mail($_SESSION['userlogin'], ":responsable:", $periode_num, "new_demande", $DEBUG); } } else { echo schars(_('form_modif_not_ok')) . ' !<br><br>' . "\n"; } } else { echo schars(_('resp_traite_user_valeurs_not_ok')) . ' !<br><br>' . "\n"; } /* RETOUR PAGE PRINCIPALE */ // echo '<form action="'.$PHP_SELF.'?session='.$session.'" method="POST">'; // echo '<input type="submit" value="'. _('form_retour') .'">'; // echo '</form>'; echo "<a class=\"btn\" href=\"{$PHP_SELF}?session={$session}\">" . _('form_retour') . "</a>\n"; }
function insert_ajout_dans_periode($DEBUG, $login, $nb_jours, $id_type_abs, $commentaire) { $date_today = date("Y-m-d"); $result = insert_dans_periode($login, $date_today, "am", $date_today, "am", $nb_jours, $commentaire, $id_type_abs, "ajout", 0, $DEBUG); }
function cloture_current_year_for_login($current_login, $tab_current_user, $tab_type_conges, $commentaire, $DEBUG = FALSE) { // si le num d'exercice du user est < à celui de l'appli (il n'a pas encore été basculé): on le bascule d'exercice if ($tab_current_user['num_exercice'] < $_SESSION['config']['num_exercice']) { // calcule de la date limite d'utilisation des reliquats (si on utilise une date limite et qu'elle n'est pas encore calculée) set_nouvelle_date_limite_reliquat($DEBUG); //tableau de tableaux les nb et soldes de conges d'un user (indicé par id de conges) $tab_conges_current_user = $tab_current_user['conges']; foreach ($tab_type_conges as $id_conges => $libelle) { $user_nb_jours_ajout_an = $tab_conges_current_user[$libelle]['nb_an']; $user_solde_actuel = $tab_conges_current_user[$libelle]['solde']; $user_reliquat_actuel = $tab_conges_current_user[$libelle]['reliquat']; if ($DEBUG) { echo "{$current_login} --- {$id_conges} --- {$user_nb_jours_ajout_an}<br>\n"; } /**********************************************/ /* Modification de la table conges_solde_user */ if ($_SESSION['config']['autorise_reliquats_exercice']) { // ATTENTION : si le solde du user est négatif, on ne compte pas de reliquat et le nouveau solde est nb_jours_an + le solde actuel (qui est négatif) if ($user_solde_actuel > 0) { //calcul du reliquat pour l'exercice suivant if ($_SESSION['config']['nb_maxi_jours_reliquats'] != 0) { if ($user_solde_actuel <= $_SESSION['config']['nb_maxi_jours_reliquats']) { $new_reliquat = $user_solde_actuel; } else { $new_reliquat = $_SESSION['config']['nb_maxi_jours_reliquats']; } } else { $new_reliquat = $user_reliquat_actuel + $user_solde_actuel; } // // update D'ABORD du reliquat $sql_reliquat = 'UPDATE conges_solde_user SET su_reliquat = ' . $new_reliquat . ' WHERE su_login=\'' . SQL::quote($current_login) . '\' AND su_abs_id = ' . $id_conges; $ReqLog_reliquat = SQL::query($sql_reliquat); } else { $new_reliquat = $user_solde_actuel; } // qui est nul ou negatif $new_solde = $user_nb_jours_ajout_an + $new_reliquat; // update du solde $sql_solde = 'UPDATE conges_solde_user SET su_solde = ' . intval($new_solde) . ' WHERE su_login=\'' . SQL::quote($current_login) . '\' AND su_abs_id = ' . intval($id_conges) . ';'; $ReqLog_solde = SQL::query($sql_solde); } else { // ATTENTION : meme si on accepte pas les reliquats, si le solde du user est négatif, il faut le reporter: le nouveau solde est nb_jours_an + le solde actuel (qui est négatif) if ($user_solde_actuel < 0) { $new_solde = $user_nb_jours_ajout_an + $user_solde_actuel; } else { $new_solde = $user_nb_jours_ajout_an; } $sql_solde = 'UPDATE conges_solde_user SET su_solde = ' . intval($new_solde) . ' WHERE su_login=\'' . SQL::quote($current_login) . '\' AND su_abs_id = ' . intval($id_conges) . ';'; $ReqLog_solde = SQL::query($sql_solde); } /* Modification de la table conges_users */ // ATTENTION : ne pas faire "SET u_num_exercice = u_num_exercice+1" dans la requete SQL car on incrémenterait pour chaque type d'absence ! $new_num_exercice = $_SESSION['config']['num_exercice']; $sql2 = 'UPDATE conges_users SET u_num_exercice = ' . $new_num_exercice . ' WHERE u_login=\'' . SQL::quote($current_login) . '\' '; $ReqLog2 = SQL::query($sql2); // on insert l'ajout de conges dans la table periode (avec le commentaire) $date_today = date("Y-m-d"); insert_dans_periode($current_login, $date_today, "am", $date_today, "am", $user_nb_jours_ajout_an, $commentaire, $id_conges, "ajout", 0, $DEBUG); } // on incrémente le num_exercice de l'application si tous les users on été basculés. update_appli_num_exercice($DEBUG); } }
function new_conges($user_login, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type_id, $DEBUG=FALSE) { $PHP_SELF=$_SERVER['PHP_SELF']; $session=session_id(); // verif validité des valeurs saisies $valid=verif_saisie_new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment); if($valid) { echo "$user_login---$new_debut _ $new_demi_jour_deb---$new_fin _ $new_demi_jour_fin---$new_nb_jours---$new_comment---$new_type_id<br>\n"; // recup dans un tableau de tableau les infos des types de conges et absences $tab_tout_type_abs = recup_tableau_tout_types_abs( $DEBUG); /**********************************/ /* insert dans conges_periode */ /**********************************/ $new_etat="ok"; $result=insert_dans_periode($user_login, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type_id, $new_etat, 0, $DEBUG); /************************************************/ /* UPDATE table "conges_solde_user" (jours restants) */ // on retranche les jours seulement pour des conges pris (pas pour les absences) // donc seulement si le type de l'absence qu'on annule est un "conges" if(isset($tab_tout_type_abs[$new_type_id]['type']) && $tab_tout_type_abs[$new_type_id]['type']=="conges") { $user_nb_jours_pris_float=(float) $new_nb_jours ; soustrait_solde_et_reliquat_user($user_login, "", $user_nb_jours_pris_float, $new_type_id, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin , $DEBUG); } $comment_log = "saisie conges par le responsable pour $user_login ($new_nb_jours jour(s)) type_conges = $new_type_id ( de $new_debut $new_demi_jour_deb a $new_fin $new_demi_jour_fin) ($new_comment)"; log_action(0, "", $user_login, $comment_log, $DEBUG); if($result) echo _('form_modif_ok') ."<br><br> \n"; else echo _('form_modif_not_ok') ."<br><br> \n"; } else { echo _('resp_traite_user_valeurs_not_ok') ."<br><br> \n"; } /* APPEL D'UNE AUTRE PAGE */ echo "<form action=\"$PHP_SELF?session=$session&onglet=traite_user&user_login=$user_login\" method=\"POST\"> \n"; echo "<input type=\"submit\" value=\"". _('form_retour') ."\">\n"; echo "</form> \n"; }
public static function new_conges($user_login, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type_id) { $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); $return = ''; //conversion des dates $new_debut = convert_date($new_debut); $new_fin = convert_date($new_fin); // verif validité des valeurs saisies $valid = verif_saisie_new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment); if ($valid) { $return .= $user_login . '---' . $new_debut . '_' . $new_demi_jour_deb . '---' . $new_fin . '_' . $new_demi_jour_fin . '---' . $new_nb_jours . '---' . $new_comment . '---' . $new_type_id . '<br>'; // recup dans un tableau de tableau les infos des types de conges et absences $tab_tout_type_abs = recup_tableau_tout_types_abs(); /**********************************/ /* insert dans conges_periode */ /**********************************/ $new_etat = "ok"; $result = insert_dans_periode($user_login, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type_id, $new_etat, 0); /************************************************/ /* UPDATE table "conges_solde_user" (jours restants) */ // on retranche les jours seulement pour des conges pris (pas pour les absences) // donc seulement si le type de l'absence qu'on annule est un "conges" if (isset($tab_tout_type_abs[$new_type_id]['type']) && $tab_tout_type_abs[$new_type_id]['type'] == "conges") { $user_nb_jours_pris_float = (double) $new_nb_jours; soustrait_solde_et_reliquat_user($user_login, "", $user_nb_jours_pris_float, $new_type_id, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin); } $comment_log = "saisie conges par le responsable pour {$user_login} ({$new_nb_jours} jour(s)) type_conges = {$new_type_id} ( de {$new_debut} {$new_demi_jour_deb} a {$new_fin} {$new_demi_jour_fin}) ({$new_comment})"; log_action(0, "", $user_login, $comment_log); if ($result) { $return .= _('form_modif_ok') . '<br><br>'; } else { $return .= _('form_modif_not_ok') . '<br><br>'; } } else { $return .= _('resp_traite_user_valeurs_not_ok') . '<br><br>'; } /* APPEL D'UNE AUTRE PAGE */ $return .= '<form action="' . $PHP_SELF . '?session=' . $session . '&onglet=traite_user&user_login='******'" method="POST">'; $return .= '<input class="btn" type="submit" value="' . _('form_retour') . '">'; $return .= '</form>'; return $return; }
public static function new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type) { //conversion des dates $new_debut = convert_date($new_debut); $new_fin = convert_date($new_fin); $return = ''; $PHP_SELF = $_SERVER['PHP_SELF']; $session = session_id(); // verif validité des valeurs saisies $valid = verif_saisie_new_demande($new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment); // verifie que le solde de conges sera encore positif après validation if ($_SESSION['config']['solde_toujours_positif']) { $valid = $valid && \utilisateur\Fonctions::verif_solde_user($_SESSION['userlogin'], $new_type, $new_nb_jours); } if ($valid) { if (in_array(\utilisateur\Fonctions::get_type_abs($new_type), array('conges', 'conges_exceptionnels'))) { $resp_du_user = get_tab_resp_du_user($_SESSION['userlogin']); if (array_key_exists('conges', $resp_du_user) || empty($resp_du_user)) { $new_etat = 'ok'; soustrait_solde_et_reliquat_user($_SESSION['userlogin'], "", $new_nb_jours, $new_type, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin); } else { $new_etat = 'demande'; } } else { $new_etat = 'ok'; } $new_comment = addslashes($new_comment); $periode_num = insert_dans_periode($_SESSION['userlogin'], $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $new_type, $new_etat, 0); if ($periode_num != 0) { $return .= schars(_('form_modif_ok')) . ' !<br><br>.'; //envoi d'un mail d'alerte au responsable (si demandé dans config de php_conges) if ($_SESSION['config']['mail_new_demande_alerte_resp']) { if (in_array(\utilisateur\Fonctions::get_type_abs($new_type), array('absences'))) { alerte_mail($_SESSION['userlogin'], ":responsable:", $periode_num, "new_absence"); } else { alerte_mail($_SESSION['userlogin'], ":responsable:", $periode_num, "new_demande"); } } } else { $return .= schars(_('form_modif_not_ok')) . ' !<br><br>.'; } } else { $return .= schars(_('resp_traite_user_valeurs_not_ok')) . ' !<br><br>.'; } $return .= '<a class="btn" href="' . $PHP_SELF . '?session=' . $session . '">' . _('form_retour') . '</a>'; return $return; }
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>'; }