Beispiel #1
0
 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;
 }