Ejemplo n.º 1
0
function commit_update($u_login_to_update, &$tab_new_user, &$tab_new_jours_an, &$tab_new_solde, &$tab_new_reliquat, $tab_checkbox_sem_imp, $tab_checkbox_sem_p, $DEBUG = FALSE)
{
    //$DEBUG=TRUE;
    $PHP_SELF = $_SERVER['PHP_SELF'];
    $session = session_id();
    $result = TRUE;
    // recup du tableau des types de conges (seulement les conges)
    $tab_type_conges = recup_tableau_types_conges($DEBUG);
    $tab_type_conges_excep = array();
    if ($_SESSION['config']['gestion_conges_exceptionnels']) {
        $tab_type_conges_excep = recup_tableau_types_conges_exceptionnels($DEBUG);
    }
    if ($DEBUG) {
        echo "tab_new_jours_an = <br>\n";
        print_r($tab_new_jours_an);
        echo "<br>\n";
        echo "tab_new_solde = <br>\n";
        print_r($tab_new_solde);
        echo "<br>\n";
        echo "tab_new_reliquat = <br>\n";
        print_r($tab_new_reliquat);
        echo "<br>\n";
        echo "tab_type_conges = <br>\n";
        print_r($tab_type_conges);
        echo "<br>\n";
        echo "tab_type_conges_excep = <br>\n";
        print_r($tab_type_conges_excep);
        echo "<br>\n";
    }
    echo "{$u_login_to_update}---" . $tab_new_user['nom'] . "---" . $tab_new_user['prenom'] . "---" . $tab_new_user['quotite'] . "---" . $tab_new_user['is_resp'] . "---" . $tab_new_user['resp_login'] . "---" . $tab_new_user['is_admin'] . "---" . $tab_new_user['is_hr'] . "---" . $tab_new_user['is_active'] . "---" . $tab_new_user['see_all'] . "---" . $tab_new_user['email'] . "---" . $tab_new_user['login'] . "<br>\n";
    $valid_1 = TRUE;
    $valid_2 = TRUE;
    $valid_3 = TRUE;
    $valid_reliquat = TRUE;
    // verification de la validite de la saisie du nombre de jours annuels et du solde pour chaque type de conges
    foreach ($tab_type_conges as $id_conges => $libelle) {
        $valid_1 = $valid_1 && verif_saisie_decimal($tab_new_jours_an[$id_conges], $DEBUG);
        //verif la bonne saisie du nombre d?cimal
        $valid_2 = $valid_2 && verif_saisie_decimal($tab_new_solde[$id_conges], $DEBUG);
        //verif la bonne saisie du nombre d?cimal
        $valid_reliquat = $valid_reliquat && verif_saisie_decimal($tab_new_reliquat[$id_conges], $DEBUG);
        //verif la bonne saisie du nombre d?cimal
    }
    // si l'application gere les conges exceptionnels ET si des types de conges exceptionnels ont été définis
    if ($_SESSION['config']['gestion_conges_exceptionnels'] && count($tab_type_conges_excep) > 0) {
        $valid_3 = TRUE;
        // vérification de la validité de la saisie du nombre de jours annuels et du solde pour chaque type de conges exceptionnels
        foreach ($tab_type_conges_excep as $id_conges => $libelle) {
            $valid_3 = $valid_3 && verif_saisie_decimal($tab_new_solde[$id_conges], $DEBUG);
            //verif la bonne saisie du nombre décimal
        }
    } else {
        $valid_3 = TRUE;
    }
    if ($DEBUG) {
        echo "valid_1 = {$valid_1}  //  valid_2 = {$valid_2}  //  valid_3 = {$valid_3}  //  valid_reliquat = {$valid_reliquat} <br>\n";
    }
    // si aucune erreur de saisie n'a ete commise
    if ($valid_1 && $valid_2 && $valid_3 && $valid_reliquat) {
        // UPDATE de la table conges_users
        $sql = 'UPDATE conges_users SET u_nom=\'' . SQL::quote($tab_new_user['nom']) . '\', u_prenom=\'' . SQL::quote($tab_new_user['prenom']) . '\', u_is_resp=\'' . SQL::quote($tab_new_user['is_resp']) . '\', u_resp_login=\'' . SQL::quote($tab_new_user['resp_login']) . '\',u_is_admin=\'' . SQL::quote($tab_new_user['is_admin']) . '\',u_is_hr=\'' . SQL::quote($tab_new_user['is_hr']) . '\',u_is_active=\'' . SQL::quote($tab_new_user['is_active']) . '\',u_see_all=\'' . SQL::quote($tab_new_user['see_all']) . '\',u_login=\'' . SQL::quote($tab_new_user['login']) . '\',u_quotite=\'' . SQL::quote($tab_new_user['quotite']) . '\',u_email=\'' . SQL::quote($tab_new_user['email']) . '\' WHERE u_login=\'' . SQL::quote($u_login_to_update) . '\'';
        SQL::query($sql);
        /*************************************/
        /* Mise a jour de la table conges_solde_user   */
        foreach ($tab_type_conges as $id_conges => $libelle) {
            $sql = 'REPLACE INTO conges_solde_user SET su_nb_an=\'' . strtr(round_to_half($tab_new_jours_an[$id_conges]), ",", ".") . '\',su_solde=\'' . strtr(round_to_half($tab_new_solde[$id_conges]), ",", ".") . '\',su_reliquat=\'' . strtr(round_to_half($tab_new_reliquat[$id_conges]), ",", ".") . '\',su_login=\'' . SQL::quote($u_login_to_update) . '\',su_abs_id=' . intval($id_conges) . ';';
            echo $sql;
            SQL::query($sql);
        }
        if ($_SESSION['config']['gestion_conges_exceptionnels']) {
            foreach ($tab_type_conges_excep as $id_conges => $libelle) {
                $sql = 'REPLACE INTO conges_solde_user SET su_nb_an=0, su_solde=\'' . strtr(round_to_half($tab_new_solde[$id_conges]), ",", ".") . '\', su_reliquat=\'' . strtr(round_to_half($tab_new_reliquat[$id_conges]), ",", ".") . '\', su_login=\'' . SQL::quote($u_login_to_update) . '\', su_abs_id=' . intval($id_conges) . ';';
                echo $sql;
                SQL::query($sql);
            }
        }
        /*************************************/
        /* Mise a jour de la table artt si besoin :   */
        $tab_grille_rtt_actuelle = get_current_grille_rtt($u_login_to_update, $DEBUG);
        $tab_new_grille_rtt = tab_grille_rtt_from_checkbox($tab_checkbox_sem_imp, $tab_checkbox_sem_p, $DEBUG);
        if ($tab_grille_rtt_actuelle != $tab_new_grille_rtt) {
            /*	if($tab_grille_rtt_actuelle==$tab_new_grille_rtt)
            	{
            	    // on ne touche pas à la table artt
            	}
            	else
            	{
            */
            $new_date_deb_grille = $tab_new_user['year'] . "-" . $tab_new_user['mois'] . "-" . $tab_new_user['jour'];
            /****************************/
            /***   phase 1 :  ***/
            // si la derniere grille est ancienne, on l'update (on update la date de fin de grille)
            // sinon, si la derniere grille date d'aujourd'hui, on la supprime
            // on regarde si la grille artt a deja été modifiée aujourd'hui :
            $sql = 'SELECT a_date_fin_grille FROM conges_artt
			WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\' AND a_date_debut_grille=\'' . SQL::quote($new_date_deb_grille) . '\';';
            $result_grille = SQL::query($sql);
            $count_grille = $result_grille->num_rows;
            if ($count_grille == 0) {
                // date de fin de la grille précedent :
                // $new_date_fin_grille = $new_date_deb_grille -1 jour !
                $new_jour_num = (int) $tab_new_user['jour'];
                $new_mois_num = (int) $tab_new_user['mois'];
                $new_year_num = (int) $tab_new_user['year'];
                $new_date_fin_grille = date("Y-m-d", mktime(0, 0, 0, $new_mois_num, $new_jour_num - 1, $new_year_num));
                // int mktime(int hour, int minute, int second, int month, int day, int year )
                // UPDATE de la table conges_artt
                // en fait, on update la dernière grille (on update la date de fin de grille), et on ajoute une nouvelle
                // grille (avec sa date de début de grille)
                // on update la dernière grille (on update la date de fin de grille)
                $sql = 'UPDATE conges_artt SET a_date_fin_grille=\'' . SQL::quote($new_date_fin_grille) . '\' WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\'  AND a_date_fin_grille=\'9999-12-31\' ';
                SQL::query($sql);
            } else {
                $sql = 'DELETE FROM conges_artt WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\' AND a_date_debut_grille=\'' . SQL::quote($new_date_deb_grille);
                SQL::query($sql);
            }
            /****************************/
            /***   phase 2 :  ***/
            // on Insert la nouvelle grille (celle qui commence aujourd'hui)
            //  on met à 'Y' les demi-journées de rtt (et seulement celles là)
            $list_columns = "";
            $list_valeurs = "";
            $i = 0;
            if ($tab_checkbox_sem_imp != "") {
                while (list($key, $val) = each($tab_checkbox_sem_imp)) {
                    if ($i != 0) {
                        $list_columns = $list_columns . ", ";
                        $list_valeurs = $list_valeurs . ", ";
                    }
                    $list_columns = $list_columns . " {$key} ";
                    $list_valeurs = $list_valeurs . " '{$val}' ";
                    $i = $i + 1;
                }
            }
            if ($tab_checkbox_sem_p != "") {
                while (list($key, $val) = each($tab_checkbox_sem_p)) {
                    if ($i != 0) {
                        $list_columns = $list_columns . ", ";
                        $list_valeurs = $list_valeurs . ", ";
                    }
                    $list_columns = $list_columns . " {$key} ";
                    $list_valeurs = $list_valeurs . " '{$val}' ";
                    $i = $i + 1;
                }
            }
            if ($list_columns != "" && $list_valeurs != "") {
                $sql = "INSERT INTO conges_artt (a_login, {$list_columns}, a_date_debut_grille ) VALUES ('{$u_login_to_update}', {$list_valeurs}, '{$new_date_deb_grille}') ";
                SQL::query($sql);
            }
        }
        // Si changement du login, (on a dèja updaté la table users (mais pas les responsables !!!)) on update toutes les autres tables
        // (les grilles artt, les periodes de conges et les échanges de rtt, etc ....) avec le nouveau login
        if ($tab_new_user['login'] != $u_login_to_update) {
            // update table artt
            $sql = 'UPDATE conges_artt SET a_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE a_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
            // update table echange_rtt
            $sql = 'UPDATE conges_echange_rtt SET e_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE e_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
            // update table edition_papier
            $sql = 'UPDATE conges_edition_papier SET ep_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE ep_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
            // update table groupe_grd_resp
            $sql = 'UPDATE conges_groupe_grd_resp SET ggr_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE ggr_login=\'' . SQL::quote($u_login_to_update) . '\'  ';
            SQL::query($sql);
            // update table groupe_resp
            $sql = 'UPDATE conges_groupe_resp SET gr_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE gr_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
            // update table conges_groupe_users
            $sql = 'UPDATE conges_groupe_users SET gu_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE gu_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
            // update table periode
            $sql = 'UPDATE conges_periode SET p_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE p_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
            // update table conges_solde_user
            $sql = 'UPDATE conges_solde_user SET su_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE su_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
            // update table conges_users
            $sql = 'UPDATE conges_users SET u_resp_login=\'' . SQL::quote($tab_new_user['login']) . '\' WHERE u_resp_login=\'' . SQL::quote($u_login_to_update) . '\' ';
            SQL::query($sql);
        }
        if ($tab_new_user['login'] != $u_login_to_update) {
            $comment_log = "modif_user (old_login = {$u_login_to_update})  new_login = "******"modif_user login = {$u_login_to_update}";
        }
        log_action(0, "", $u_login_to_update, $comment_log, $DEBUG);
        echo _('form_modif_ok') . " !<br><br> \n";
    } else {
        echo _('form_modif_not_ok') . " !<br><br> \n";
    }
}
Ejemplo n.º 2
0
function soustrait_solde_et_reliquat_user($user_login, $num_current_periode, $user_nb_jours_pris, $type_abs, $date_deb, $demi_jour_deb, $date_fin, $demi_jour_fin)
{
    $VerifDec = verif_saisie_decimal($user_nb_jours_pris);
    //si on autorise les reliquats
    if ($_SESSION['config']['autorise_reliquats_exercice']) {
        //recup du reliquat du user pour ce type d'absence
        $reliquat = get_reliquat_user_conges($user_login, $type_abs);
        //echo "reliquat = $reliquat<br>\n";
        // s'il y a une date limite d'utilisationdes reliquats (au format jj-mm)
        if ($_SESSION['config']['jour_mois_limite_reliquats'] != 0) {
            //si date_fin_conges < date_limite_reliquat => alors on décompte dans reliquats
            if ($date_fin < $_SESSION['config']['date_limite_reliquats']) {
                if ($reliquat > $user_nb_jours_pris) {
                    $new_reliquat = $reliquat - $user_nb_jours_pris;
                } else {
                    $new_reliquat = 0;
                }
            } elseif ($date_deb >= $_SESSION['config']['date_limite_reliquats']) {
                $new_reliquat = $reliquat;
            } else {
                include_once 'fonctions_calcul.php';
                $comment = "calcul reliquat -> date limite";
                $nb_reliquats_a_deduire = compter($user_login, $num_current_periode, $date_deb, $_SESSION['config']['date_limite_reliquats'], $demi_jour_deb, "pm", $comment);
                if ($reliquat > $nb_reliquats_a_deduire) {
                    $new_reliquat = $reliquat - $nb_reliquats_a_deduire;
                } else {
                    $new_reliquat = 0;
                }
            }
        } else {
            if ($reliquat > $user_nb_jours_pris) {
                $new_reliquat = $reliquat - $user_nb_jours_pris;
            } else {
                $new_reliquat = 0;
            }
        }
        $VerifDec = verif_saisie_decimal($user_nb_jours_pris);
        $VerifDec = verif_saisie_decimal($new_reliquat);
        $sql2 = 'UPDATE conges_solde_user SET su_solde=su_solde-' . \includes\SQL::quote($user_nb_jours_pris) . ', su_reliquat=' . \includes\SQL::quote($new_reliquat) . ' WHERE su_login="******"  AND su_abs_id=' . \includes\SQL::quote($type_abs) . ' ';
    } else {
        $VerifDec = verif_saisie_decimal($user_nb_jours_pris);
        $VerifDec = verif_saisie_decimal($new_reliquat);
        $sql2 = 'UPDATE conges_solde_user SET su_solde=su_solde-' . \includes\SQL::quote($user_nb_jours_pris) . ' WHERE su_login=\'' . \includes\SQL::quote($user_login) . '\'  AND su_abs_id=\'' . $type_abs . '\' ';
    }
    $ReqLog2 = \includes\SQL::query($sql2);
}
Ejemplo n.º 3
0
function verif_new_param(&$tab_new_user, &$tab_new_jours_an, &$tab_new_solde, $DEBUG = FALSE)
{
    $PHP_SELF = $_SERVER['PHP_SELF'];
    $session = session_id();
    foreach ($tab_new_jours_an as $id_cong => $jours_an) {
        $valid = verif_saisie_decimal($tab_new_jours_an[$id_cong], $DEBUG);
        //verif la bonne saisie du nombre décimal
        $valid = verif_saisie_decimal($tab_new_solde[$id_cong], $DEBUG);
        //verif la bonne saisie du nombre décimal
    }
    if ($DEBUG) {
        echo "tab_new_jours_an = ";
        print_r($tab_new_jours_an);
        echo "<br>\n";
        echo "tab_new_solde = ";
        print_r($tab_new_solde);
        echo "<br>\n";
    }
    // verif des parametres reçus :
    // si on travaille avec la base dbconges, on teste tout, mais si on travaille avec ldap, on ne teste pas les champs qui viennent de ldap ...
    if (!$_SESSION['config']['export_users_from_ldap'] && (strlen($tab_new_user['nom']) == 0 || strlen($tab_new_user['prenom']) == 0 || strlen($tab_new_user['password1']) == 0 || strlen($tab_new_user['password2']) == 0 || strcmp($tab_new_user['password1'], $tab_new_user['password2']) != 0 || strlen($tab_new_user['login']) == 0 || strlen($tab_new_user['quotite']) == 0 || $tab_new_user['quotite'] > 100) || !preg_match('/^[a-z\\d_]{2,20}$/i', $tab_new_user['login']) || !preg_match('/^[a-z\\d\\sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ-]{2,20}$/i', $tab_new_user['nom']) || !preg_match('/^[a-z\\d\\sàáâãäåçèéêëìíîïðòóôõöùúûüýÿ-]{2,20}$/i', $tab_new_user['prenom']) || $_SESSION['config']['export_users_from_ldap'] && (strlen($tab_new_user['login']) == 0 || strlen($tab_new_user['quotite']) == 0 || $tab_new_user['quotite'] > 100)) {
        echo "<h3><font color=\"red\"> " . _('admin_verif_param_invalides') . " </font></h3>\n";
        // affichage des param :
        echo $tab_new_user['login'] . "---" . $tab_new_user['nom'] . "---" . $tab_new_user['prenom'] . "---" . $tab_new_user['quotite'] . "---" . $tab_new_user['is_resp'] . "---" . $tab_new_user['resp_login'] . "<br>\n";
        foreach ($tab_new_jours_an as $id_cong => $jours_an) {
            echo $tab_new_jours_an[$id_cong] . "---" . $tab_new_solde[$id_cong] . "<br>\n";
        }
        echo "<form action=\"{$PHP_SELF}?session={$session}&onglet=ajout-user\" method=\"POST\">\n";
        echo "<input type=\"hidden\" name=\"new_login\" value=\"" . $tab_new_user['login'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_nom\" value=\"" . $tab_new_user['nom'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_prenom\" value=\"" . $tab_new_user['prenom'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_is_resp\" value=\"" . $tab_new_user['is_resp'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_resp_login\" value=\"" . $tab_new_user['resp_login'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_is_admin\" value=\"" . $tab_new_user['is_admin'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_is_hr\" value=\"" . $tab_new_user['is_hr'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_see_all\" value=\"" . $tab_new_user['see_all'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_quotite\" value=\"" . $tab_new_user['quotite'] . "\">\n";
        echo "<input type=\"hidden\" name=\"new_email\" value=\"" . $tab_new_user['email'] . "\">\n";
        foreach ($tab_new_jours_an as $id_cong => $jours_an) {
            echo "<input type=\"hidden\" name=\"tab_new_jours_an[{$id_cong}]\" value=\"" . $tab_new_jours_an[$id_cong] . "\">\n";
            echo "<input type=\"hidden\" name=\"tab_new_solde[{$id_cong}]\" value=\"" . $tab_new_solde[$id_cong] . "\">\n";
        }
        echo "<input type=\"hidden\" name=\"saisie_user\" value=\"faux\">\n";
        echo "<input type=\"submit\" value=\"" . _('form_redo') . "\">\n";
        echo "</form>\n";
        return 1;
    } else {
        // verif si le login demandé n'existe pas déjà ....
        $sql_verif = 'SELECT u_login FROM conges_users WHERE u_login=\'' . SQL::quote($tab_new_user['login']) . '\'';
        $ReqLog_verif = SQL::query($sql_verif);
        $num_verif = $ReqLog_verif->num_rows;
        if ($num_verif != 0) {
            echo "<h3><font color=\"red\"> " . _('admin_verif_login_exist') . " </font></h3>\n";
            echo "<form action=\"{$PHP_SELF}?session={$session}&onglet=ajout-user\" method=\"POST\">\n";
            echo "<input type=\"hidden\" name=\"new_login\" value=\"" . $tab_new_user['login'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_nom\" value=\"" . $tab_new_user['nom'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_prenom\" value=\"" . $tab_new_user['prenom'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_is_resp\" value=\"" . $tab_new_user['is_resp'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_resp_login\" value=\"" . $tab_new_user['resp_login'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_is_admin\" value=\"" . $tab_new_user['is_admin'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_is_hr\" value=\"" . $tab_new_user['is_hr'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_quotite\" value=\"" . $tab_new_user['quotite'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_email\" value=\"" . $tab_new_user['email'] . "\">\n";
            foreach ($tab_new_jours_an as $id_cong => $jours_an) {
                echo "<input type=\"hidden\" name=\"tab_new_jours_an[{$id_cong}]\" value=\"" . $tab_new_jours_an[$id_cong] . "\">\n";
                echo "<input type=\"hidden\" name=\"tab_new_solde[{$id_cong}]\" value=\"" . $tab_new_solde[$id_cong] . "\">\n";
            }
            echo "<input type=\"hidden\" name=\"saisie_user\" value=\"faux\">\n";
            echo "<input type=\"submit\" value=\"" . _('form_redo') . "\">\n";
            echo "</form>\n";
            return 1;
        } elseif ($_SESSION['config']['where_to_find_user_email'] == "dbconges" && strrchr($tab_new_user['email'], "@") == FALSE) {
            echo "<h3> " . _('admin_verif_bad_mail') . " </h3>\n";
            echo "<form action=\"{$PHP_SELF}?session={$session}&onglet=ajout-user\" method=\"POST\">\n";
            echo "<input type=\"hidden\" name=\"new_login\" value=\"" . $tab_new_user['login'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_nom\" value=\"" . $tab_new_user['nom'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_prenom\" value=\"" . $tab_new_user['prenom'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_is_resp\" value=\"" . $tab_new_user['is_resp'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_resp_login\" value=\"" . $tab_new_user['resp_login'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_is_admin\" value=\"" . $tab_new_user['is_admin'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_is_hr\" value=\"" . $tab_new_user['is_hr'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_quotite\" value=\"" . $tab_new_user['quotite'] . "\">\n";
            echo "<input type=\"hidden\" name=\"new_email\" value=\"" . $tab_new_user['email'] . "\">\n";
            foreach ($tab_new_jours_an as $id_cong => $jours_an) {
                echo "<input type=\"hidden\" name=\"tab_new_jours_an[{$id_cong}]\" value=\"" . $tab_new_jours_an[$id_cong] . "\">\n";
                echo "<input type=\"hidden\" name=\"tab_new_solde[{$id_cong}]\" value=\"" . $tab_new_solde[$id_cong] . "\">\n";
            }
            echo "<input type=\"hidden\" name=\"saisie_user\" value=\"faux\">\n";
            echo "<input class=\"btn\" type=\"submit\" value=\"" . _('form_redo') . "\">\n";
            echo "</form>\n";
            return 1;
        } else {
            return 0;
        }
    }
}
Ejemplo n.º 4
0
 public static function verif_new_param(&$tab_new_user, &$tab_new_jours_an, &$tab_new_solde, &$return = null)
 {
     $PHP_SELF = $_SERVER['PHP_SELF'];
     $session = session_id();
     $return = '';
     foreach ($tab_new_jours_an as $id_cong => $jours_an) {
         $valid = verif_saisie_decimal($tab_new_jours_an[$id_cong]);
         //verif la bonne saisie du nombre décimal
         $valid = verif_saisie_decimal($tab_new_solde[$id_cong]);
         //verif la bonne saisie du nombre décimal
     }
     // verif des parametres reçus :
     // si on travaille avec la base dbconges, on teste tout, mais si on travaille avec ldap, on ne teste pas les champs qui viennent de ldap ...
     if (!\admin\Fonctions::test_form_add_user($tab_new_user)) {
         $return .= '<h3><font color="red">' . _('admin_verif_param_invalides') . '</font></h3>';
         // affichage des param :
         $return .= htmlentities($tab_new_user['login']) . '---' . htmlentities($tab_new_user['nom']) . '---' . htmlentities($tab_new_user['prenom']) . '---' . htmlentities($tab_new_user['quotite']) . '---' . htmlentities($tab_new_user['is_resp']) . '---' . htmlentities($tab_new_user['resp_login']) . '<br>';
         foreach ($tab_new_jours_an as $id_cong => $jours_an) {
             $return .= $tab_new_jours_an[$id_cong] . '---' . $tab_new_solde[$id_cong] . '<br>';
         }
         $return .= '<form action="' . $PHP_SELF . '?session=' . $session . '&onglet=ajout-user" method="POST">';
         $return .= '<input type="hidden" name="new_login" value="' . $tab_new_user['login'] . '">';
         $return .= '<input type="hidden" name="new_nom" value="' . $tab_new_user['nom'] . '">';
         $return .= '<input type="hidden" name="new_prenom" value="' . $tab_new_user['prenom'] . '">';
         $return .= '<input type="hidden" name="new_is_resp" value="' . $tab_new_user['is_resp'] . '">';
         $return .= '<input type="hidden" name="new_resp_login" value="' . $tab_new_user['resp_login'] . '">';
         $return .= '<input type="hidden" name="new_is_admin" value="' . $tab_new_user['is_admin'] . '">';
         $return .= '<input type="hidden" name="new_is_hr" value="' . $tab_new_user['is_hr'] . '">';
         $return .= '<input type="hidden" name="new_see_all" value="' . $tab_new_user['see_all'] . '">';
         $return .= '<input type="hidden" name="new_quotite" value="' . $tab_new_user['quotite'] . '">';
         $return .= '<input type="hidden" name="new_email" value="' . $tab_new_user['email'] . '">';
         foreach ($tab_new_jours_an as $id_cong => $jours_an) {
             $return .= '<input type="hidden" name="tab_new_jours_an[$id_cong]" value="' . $tab_new_jours_an[$id_cong] . '">';
             $return .= '<input type="hidden" name="tab_new_solde[' . $id_cong . ']" value="' . $tab_new_solde[$id_cong] . '">';
         }
         $return .= '<input type="hidden" name="saisie_user" value="faux">';
         $return .= '<input type="submit" value="' . _('form_redo') . '"">';
         $return .= '</form>';
         return true;
     } else {
         // verif si le login demandé n'existe pas déjà ....
         $sql_verif = 'SELECT u_login FROM conges_users WHERE u_login="******"';
         $ReqLog_verif = \includes\SQL::query($sql_verif);
         $num_verif = $ReqLog_verif->num_rows;
         if ($num_verif != 0) {
             $return .= '<h3><font color="red">' . _('admin_verif_login_exist') . '</font></h3>';
             $return .= '<form action="' . $PHP_SELF . '?session=' . $session . '&onglet=ajout-user" method="POST">';
             $return .= '<input type="hidden" name="new_login" value="' . $tab_new_user['login'] . '">';
             $return .= '<input type="hidden" name="new_nom" value="' . $tab_new_user['nom'] . '">';
             $return .= '<input type="hidden" name="new_prenom" value="' . $tab_new_user['prenom'] . '">';
             $return .= '<input type="hidden" name="new_is_resp" value="' . $tab_new_user['is_resp'] . '">';
             $return .= '<input type="hidden" name="new_resp_login" value="' . $tab_new_user['resp_login'] . '">';
             $return .= '<input type="hidden" name="new_is_admin" value="' . $tab_new_user['is_admin'] . '">';
             $return .= '<input type="hidden" name="new_is_hr" value="' . $tab_new_user['is_hr'] . '">';
             $return .= '<input type="hidden" name="new_quotite" value="' . $tab_new_user['quotite'] . '">';
             $return .= '<input type="hidden" name="new_email" value="' . $tab_new_user['email'] . '">';
             foreach ($tab_new_jours_an as $id_cong => $jours_an) {
                 $return .= '<input type="hidden" name="tab_new_jours_an[' . $id_cong . ']" value="' . $tab_new_jours_an[$id_cong] . '">';
                 $return .= '<input type="hidden" name="tab_new_solde[' . $id_cong . ']" value="' . $tab_new_solde[$id_cong] . '">';
             }
             $return .= '<input type="hidden" name="saisie_user" value="faux">';
             $return .= '<input type="submit" value="' . _('form_redo') . '">';
             $return .= '</form>';
             return true;
         } elseif ($_SESSION['config']['where_to_find_user_email'] == "dbconges" && strrchr($tab_new_user['email'], "@") == FALSE) {
             $return .= '<h3>' . _('admin_verif_bad_mail') . '</h3>';
             $return .= '<form action="' . $PHP_SELF . '?session=' . $session . '&onglet=ajout-user" method="POST">';
             $return .= '<input type="hidden" name="new_login" value="' . $tab_new_user['login'] . '">';
             $return .= '<input type="hidden" name="new_nom" value="' . $tab_new_user['nom'] . '">';
             $return .= '<input type="hidden" name="new_prenom" value="' . $tab_new_user['prenom'] . '">';
             $return .= '<input type="hidden" name="new_is_resp" value="' . $tab_new_user['is_resp'] . '">';
             $return .= '<input type="hidden" name="new_resp_login" value="' . $tab_new_user['resp_login'] . '">';
             $return .= '<input type="hidden" name="new_is_admin" value="' . $tab_new_user['is_admin'] . '">';
             $return .= '<input type="hidden" name="new_is_hr" value="' . $tab_new_user['is_hr'] . '">';
             $return .= '<input type="hidden" name="new_quotite" value="' . $tab_new_user['quotite'] . '">';
             $return .= '<input type="hidden" name="new_email" value="' . $tab_new_user['email'] . '">';
             foreach ($tab_new_jours_an as $id_cong => $jours_an) {
                 $return .= '<input type="hidden" name="tab_new_jours_an[' . $id_cong . ']" value="' . $tab_new_jours_an[$id_cong] . '">';
                 $return .= '<input type="hidden" name="tab_new_solde[' . $id_cong . ']" value="' . $tab_new_solde[$id_cong] . '">';
             }
             $return .= '<input type="hidden" name="saisie_user" value="faux">';
             $return .= '<input class="btn" type="submit" value="' . _('form_redo') . '">';
             $return .= '</form>';
             return true;
         } else {
             return false;
         }
     }
 }
Ejemplo n.º 5
0
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);
        }
    }
}
Ejemplo n.º 6
0
 public static function annule_conges($user_login, $tab_checkbox_annule, $tab_text_annul)
 {
     $PHP_SELF = $_SERVER['PHP_SELF'];
     $session = session_id();
     $return = '';
     // recup dans un tableau de tableau les infos des types de conges et absences
     $tab_tout_type_abs = recup_tableau_tout_types_abs();
     while ($elem_tableau = each($tab_checkbox_annule)) {
         $champs = explode("--", $elem_tableau['value']);
         $user_login = $champs[0];
         $user_nb_jours_pris_float = $champs[1];
         $VerifDec = verif_saisie_decimal($user_nb_jours_pris_float);
         $numero = $elem_tableau['key'];
         $numero_int = (int) $numero;
         $user_type_abs_id = $champs[2];
         $motif_annul = addslashes($tab_text_annul[$numero_int]);
         /* UPDATE table "conges_periode" */
         $sql1 = 'UPDATE conges_periode SET p_etat="annul", p_motif_refus="' . \includes\SQL::quote($motif_annul) . '", p_date_traitement=NOW() WHERE p_num="' . \includes\SQL::quote($numero_int) . '" AND p_etat=\'ok\';';
         $ReqLog1 = \includes\SQL::query($sql1);
         if ($ReqLog1 && \includes\SQL::getVar('affected_rows')) {
             // Log de l'action
             log_action($numero_int, "annul", $user_login, "annulation conges {$numero} ({$user_login}) ({$user_nb_jours_pris_float} jours)");
             /* UPDATE table "conges_solde_user" (jours restants) */
             // on re-crédite 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 ($tab_tout_type_abs[$user_type_abs_id]['type'] == "conges") {
                 $sql2 = 'UPDATE conges_solde_user SET su_solde = su_solde+"' . \includes\SQL::quote($user_nb_jours_pris_float) . '" WHERE su_login="******" AND su_abs_id="' . \includes\SQL::quote($user_type_abs_id) . '";';
                 $ReqLog2 = \includes\SQL::query($sql2);
             }
             //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
             if ($_SESSION['config']['mail_annul_conges_alerte_user']) {
                 alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "annul_conges");
             }
         }
     }
     $return .= _('form_modif_ok') . '<br><br>';
     /* APPEL D'UNE AUTRE PAGE au bout d'une tempo de 2secondes */
     $return .= '<META HTTP-EQUIV=REFRESH CONTENT="2; URL=' . $PHP_SELF . '?session=' . $session . '&user_login='******'">';
     return $return;
 }
Ejemplo n.º 7
0
function ajout_conges($tab_champ_saisie, $tab_commentaire_saisie,  $DEBUG=FALSE) 
{
	$PHP_SELF=$_SERVER['PHP_SELF'];
	$session=session_id(); 

	foreach($tab_champ_saisie as $user_name => $tab_conges)   // tab_champ_saisie[$current_login][$id_conges]=valeur du nb de jours ajouté saisi
	{
	  foreach($tab_conges as $id_conges => $user_nb_jours_ajout)
	  {
	    $valid=verif_saisie_decimal($user_nb_jours_ajout, $DEBUG);   //verif la bonne saisie du nombre décimal
	    if($valid)
	    {
	      $user_nb_jours_ajout_float =(float) $user_nb_jours_ajout ;
	      if( $DEBUG ) {echo "$user_name --- $id_conges --- $user_nb_jours_ajout_float<br>\n";}

	      if($user_nb_jours_ajout_float!=0)
	      {
			/* Modification de la table conges_users */
			$sql1 = "UPDATE conges_solde_user SET su_solde = su_solde+$user_nb_jours_ajout_float WHERE su_login='******' AND su_abs_id = $id_conges " ;
			/* On valide l'UPDATE dans la table ! */
			$ReqLog1 = SQL::query($sql1) ;
			
/*			// Enregistrement du commentaire relatif à l'ajout de jours de congés 
			$comment = $tab_commentaire_saisie[$user_name];
			$sql1 = "INSERT INTO conges_historique_ajout (ha_login, ha_date, ha_abs_id, ha_nb_jours, ha_commentaire)
					  VALUES ('$user_name', NOW(), $id_conges, $user_nb_jours_ajout_float , '$comment')";
			$ReqLog1 = SQL::query($sql1) ;
*/	
			// on insert l'ajout de conges dans la table periode
			$commentaire =  _('resp_ajout_conges_comment_periode_user') ;
			insert_ajout_dans_periode($DEBUG, $user_name, $user_nb_jours_ajout_float, $id_conges, $commentaire);
	      }
	    }
	  }
	}

	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";
		/* APPEL D'UNE AUTRE PAGE au bout d'une tempo de 2secondes */
		echo "<META HTTP-EQUIV=REFRESH CONTENT=\"2; URL=$PHP_SELF?session=$session\">";
	}

}
Ejemplo n.º 8
0
 public static function modifier($p_num_to_update, $new_debut, $new_demi_jour_deb, $new_fin, $new_demi_jour_fin, $new_nb_jours, $new_comment, $p_etat, $onglet)
 {
     $PHP_SELF = $_SERVER['PHP_SELF'];
     $session = session_id();
     $return = '';
     $VerifNb = verif_saisie_decimal($new_nb_jours);
     $sql1 = "UPDATE conges_periode\n            SET p_date_deb='{$new_debut}', p_demi_jour_deb='{$new_demi_jour_deb}', p_date_fin='{$new_fin}', p_demi_jour_fin='{$new_demi_jour_fin}', p_nb_jours='{$new_nb_jours}', p_commentaire='{$new_comment}', ";
     if ($p_etat == "demande") {
         $sql1 = $sql1 . " p_date_demande=NOW() ";
     } else {
         $sql1 = $sql1 . " p_date_traitement=NOW() ";
     }
     $sql1 = $sql1 . "    WHERE p_num='{$p_num_to_update}' AND p_login='******'userlogin'] . "' ;";
     $result = \includes\SQL::query($sql1);
     if ($_SESSION['config']['mail_modif_demande_alerte_resp']) {
         alerte_mail($_SESSION['userlogin'], ":responsable:", $p_num_to_update, "modif_demande_conges");
     }
     $comment_log = "modification de demande num {$p_num_to_update} ({$new_nb_jours} jour(s)) ( de {$new_debut} {$new_demi_jour_deb} a {$new_fin} {$new_demi_jour_fin}) ({$new_comment})";
     log_action($p_num_to_update, "{$p_etat}", $_SESSION['userlogin'], $comment_log);
     $return .= _('form_modif_ok') . '<br><br>';
     /* APPEL D'UNE AUTRE PAGE */
     $return .= '<form action="' . ROOT_PATH . 'utilisateur/user_index.php?session=' . $session . '&onglet=demandes_en_cours" method="POST">';
     $return .= '<input class="btn" type="submit" value="' . _('form_submit') . '">';
     $return .= '</form>';
     return $return;
 }
Ejemplo n.º 9
0
 public static function cloture_current_year_for_login($current_login, $tab_current_user, $tab_type_conges, $commentaire)
 {
     $return = '';
     // 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)
         \hr\Fonctions::set_nouvelle_date_limite_reliquat();
         //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'];
             /**********************************************/
             /* 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;
                     }
                     $VerifDec = verif_saisie_decimal($new_reliquat);
                     //
                     // update D'ABORD du reliquat
                     $sql_reliquat = 'UPDATE conges_solde_user SET su_reliquat = ' . $new_reliquat . ' WHERE su_login="******"  AND su_abs_id = ' . $id_conges;
                     $ReqLog_reliquat = \includes\SQL::query($sql_reliquat);
                 } else {
                     $new_reliquat = $user_solde_actuel;
                     // qui est nul ou negatif
                 }
                 $new_solde = $user_nb_jours_ajout_an + $new_reliquat;
                 $VerifDec = verif_saisie_decimal($new_solde);
                 // update du solde
                 $sql_solde = 'UPDATE conges_solde_user SET su_solde = ' . $new_solde . ' WHERE su_login="******"  AND su_abs_id = ' . intval($id_conges) . ';';
                 $ReqLog_solde = \includes\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;
                     // qui est nul ou negatif
                 } else {
                     $new_solde = $user_nb_jours_ajout_an;
                 }
                 $VerifDec = verif_saisie_decimal($new_solde);
                 $sql_solde = 'UPDATE conges_solde_user SET su_solde = ' . $new_solde . ' WHERE su_login="******" AND su_abs_id = ' . intval($id_conges) . ';';
                 $ReqLog_solde = \includes\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="******"  ';
             $ReqLog2 = \includes\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);
         }
         // on incrémente le num_exercice de l'application si tous les users ont été basculés.
         \hr\Fonctions::update_appli_num_exercice();
     }
     return $return;
 }
Ejemplo n.º 10
0
function compter($user, $num_current_periode, $date_debut, $date_fin, $opt_debut, $opt_fin, &$comment, $num_update = null)
{
    $date_debut = convert_date($date_debut);
    $date_fin = convert_date($date_fin);
    // 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, $num_update) == FALSE || verif_jours_feries_saisis($date_fin, $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);
        /************************************************************/
        // 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, $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();
        }
        // 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);
        }
        $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
            if (substr_count($current_day, '/')) {
                $pieces = explode("/", $current_day);
                // date de la forme jj/mm/yyyy
                $y = $pieces[2];
                $m = $pieces[1];
                $j = $pieces[0];
            } else {
                $pieces = explode("-", $current_day);
                // date de la forme yyyy-mm-dd
                $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);
        }
        /************************************************************/
        // 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;
        $VerifDec = verif_saisie_decimal($nb_jours);
        return $nb_jours;
    } else {
        return 0;
    }
}
Ejemplo n.º 11
0
function ajout_conges($tab_champ_saisie, $tab_commentaire_saisie, $DEBUG = FALSE)
{
    $PHP_SELF = $_SERVER['PHP_SELF'];
    $session = session_id();
    foreach ($tab_champ_saisie as $user_name => $tab_conges) {
        foreach ($tab_conges as $id_conges => $user_nb_jours_ajout) {
            $valid = verif_saisie_decimal($user_nb_jours_ajout, $DEBUG);
            //verif la bonne saisie du nombre décimal
            if ($valid) {
                $user_nb_jours_ajout_float = (double) $user_nb_jours_ajout;
                if ($DEBUG) {
                    echo "{$user_name} --- {$id_conges} --- {$user_nb_jours_ajout_float}<br>\n";
                }
                if ($user_nb_jours_ajout_float != 0) {
                    /* Modification de la table conges_users */
                    $sql1 = 'UPDATE conges_solde_user SET su_solde = su_solde+' . floatval($user_nb_jours_ajout_float) . ' WHERE su_login=\'' . SQL::quote($user_name) . '\' AND su_abs_id = \'' . SQL::quote($id_conges) . '\';';
                    /* On valide l'UPDATE dans la table ! */
                    $ReqLog1 = SQL::query($sql1);
                    /*			// Enregistrement du commentaire relatif à l'ajout de jours de congés 
                    			$comment = $tab_commentaire_saisie[$user_name];
                    			$sql1 = "INSERT INTO conges_historique_ajout (ha_login, ha_date, ha_abs_id, ha_nb_jours, ha_commentaire)
                    					  VALUES ('$user_name', NOW(), $id_conges, $user_nb_jours_ajout_float , '$comment')";
                    			$ReqLog1 = SQL::query($sql1) ;
                    */
                    // on insert l'ajout de conges dans la table periode
                    $commentaire = _('resp_ajout_conges_comment_periode_user');
                    insert_ajout_dans_periode($DEBUG, $user_name, $user_nb_jours_ajout_float, $id_conges, $commentaire);
                }
            }
        }
    }
}
Ejemplo n.º 12
0
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;
                }
                $nb_conges_ok = verif_saisie_decimal($nb_conges, $DEBUG);
                if ($nb_conges_ok) {
                    // 1 : on update conges_solde_user
                    $req_update = "UPDATE conges_solde_user SET su_solde = su_solde+{$nb_conges}\n\t\t\t\t\t\t\tWHERE  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);
                }
            }
            $group_name = get_group_name_from_id($choix_groupe, $DEBUG);
            // 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, $DEBUG);
        }
    }
    if ($DEBUG) {
        echo "<form action=\"{$PHP_SELF}\" method=\"POST\">\n";
        echo "<input type=\"hidden\" name=\"session\" value=\"{$session}\">\n";
        echo "<input class=\"btn\" 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);
    }
}