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

}
Beispiel #5
0
 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;
 }
Beispiel #6
0
 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>';
}