function traite_all_demande_en_cours($tab_bt_radio, $tab_text_refus, $DEBUG = FALSE)
{
    $PHP_SELF = $_SERVER['PHP_SELF'];
    $session = session_id();
    while ($elem_tableau = each($tab_bt_radio)) {
        $champs = explode("--", $elem_tableau['value']);
        $user_login = $champs[0];
        $user_nb_jours_pris = $champs[1];
        $type_abs = $champs[2];
        // id du type de conges demandé
        $date_deb = $champs[3];
        $demi_jour_deb = $champs[4];
        $date_fin = $champs[5];
        $demi_jour_fin = $champs[6];
        $reponse = $champs[7];
        $numero = $elem_tableau['key'];
        $numero_int = (int) $numero;
        echo "{$numero}---{$user_login}---{$user_nb_jours_pris}---{$reponse}<br>\n";
        /* Modification de la table conges_periode */
        if (strcmp($reponse, "VALID") == 0) {
            /* UPDATE table "conges_periode" */
            $sql1 = "UPDATE conges_periode SET p_etat=\"valid\", p_date_traitement=NOW() WHERE p_num={$numero_int}";
            /* On valide l'UPDATE dans la table "conges_periode" ! */
            $ReqLog1 = SQL::query($sql1);
            // Log de l'action
            log_action($numero_int, "valid", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : {$reponse}", $DEBUG);
            //envoi d'un mail d'alerte au user et au responsable du resp (pour double validation) (si demandé dans config de php_conges)
            if ($_SESSION['config']['mail_prem_valid_conges_alerte_user']) {
                alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "valid_conges", $DEBUG);
            }
        }
        if (strcmp($reponse, "OK") == 0) {
            /* UPDATE table "conges_periode" */
            $sql1 = "UPDATE conges_periode SET p_etat=\"ok\", p_date_traitement=NOW() WHERE p_num={$numero_int}";
            /* On valide l'UPDATE dans la table "conges_periode" ! */
            $ReqLog1 = SQL::query($sql1);
            // Log de l'action
            log_action($numero_int, "ok", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : {$reponse}", $DEBUG);
            /* UPDATE table "conges_solde_user" (jours restants) */
            soustrait_solde_et_reliquat_user($user_login, $numero_int, $user_nb_jours_pris, $type_abs, $date_deb, $demi_jour_deb, $date_fin, $demi_jour_fin, $DEBUG);
            //          soustrait_solde_user($user_login, $user_nb_jours_pris, $type_abs, $DEBUG);
            //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
            if ($_SESSION['config']['mail_valid_conges_alerte_user']) {
                alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "accept_conges", $DEBUG);
            }
        } elseif (strcmp($reponse, "not_OK") == 0) {
            // recup du motif de refus
            $motif_refus = addslashes($tab_text_refus[$numero_int]);
            $sql1 = "UPDATE conges_periode SET p_etat=\"refus\", p_motif_refus='{$motif_refus}', p_date_traitement=NOW() WHERE p_num={$numero_int}";
            //echo "$sql1<br>\n");
            // Log de l'action
            log_action($numero_int, "refus", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : refus", $DEBUG);
            /* On valide l'UPDATE dans la table ! */
            $ReqLog1 = SQL::query($sql1);
            //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
            if ($_SESSION['config']['mail_refus_conges_alerte_user']) {
                alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "refus_conges", $DEBUG);
            }
        }
    }
}
Пример #2
0
function traite_all_demande_en_cours($tab_bt_radio, $tab_text_refus, $DEBUG = FALSE)
{
    $PHP_SELF = $_SERVER['PHP_SELF'];
    $session = session_id();
    while ($elem_tableau = each($tab_bt_radio)) {
        $champs = explode("--", $elem_tableau['value']);
        $user_login = $champs[0];
        $user_nb_jours_pris = $champs[1];
        $type_abs = $champs[2];
        // id du type de conges demandé
        $date_deb = $champs[3];
        $demi_jour_deb = $champs[4];
        $date_fin = $champs[5];
        $demi_jour_fin = $champs[6];
        $reponse = $champs[7];
        $numero = $elem_tableau['key'];
        $numero_int = (int) $numero;
        echo "{$numero}---{$user_login}---{$user_nb_jours_pris}---{$reponse}<br>\n";
        /* Modification de la table conges_periode */
        if (strcmp($reponse, "OK") == 0) {
            /* UPDATE table "conges_periode" */
            $sql1 = 'UPDATE conges_periode SET p_etat=\'ok\', p_date_traitement=NOW() WHERE p_num=\'' . SQL::quote($numero_int) . '\' AND ( p_etat=\'valid\' OR p_etat=\'demande\' );';
            /* On valide l'UPDATE dans la table "conges_periode" ! */
            $ReqLog1 = SQL::query($sql1);
            if ($ReqLog1 && SQL::getVar('affected_rows')) {
                // Log de l'action
                log_action($numero_int, "ok", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : {$reponse}", $DEBUG);
                /* UPDATE table "conges_solde_user" (jours restants) */
                soustrait_solde_et_reliquat_user($user_login, $numero_int, $user_nb_jours_pris, $type_abs, $date_deb, $demi_jour_deb, $date_fin, $demi_jour_fin, $DEBUG);
                //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
                if ($_SESSION['config']['mail_valid_conges_alerte_user']) {
                    alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "accept_conges", $DEBUG);
                }
            }
        } elseif (strcmp($reponse, "not_OK") == 0) {
            // recup du motif de refus
            $motif_refus = addslashes($tab_text_refus[$numero_int]);
            $sql1 = 'UPDATE conges_periode SET p_etat=\'refus\', p_motif_refus=\'' . $motif_refus . '\', p_date_traitement=NOW() WHERE p_num=\'' . SQL::quote($numero_int) . '\' AND ( p_etat=\'valid\' OR p_etat=\'demande\' );';
            /* On valide l'UPDATE dans la table ! */
            $ReqLog1 = SQL::query($sql1);
            if ($ReqLog1 && SQL::getVar('affected_rows')) {
                // Log de l'action
                log_action($numero_int, "refus", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : refus", $DEBUG);
                //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
                if ($_SESSION['config']['mail_refus_conges_alerte_user']) {
                    alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "refus_conges", $DEBUG);
                }
            }
        }
    }
    if ($DEBUG) {
        echo "<form action=\"{$PHP_SELF}?sesssion={$session}&onglet=traitement_demande\" 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";
        /* APPEL D'UNE AUTRE PAGE au bout d'une tempo de 2secondes */
        echo "<META HTTP-EQUIV=REFRESH CONTENT=\"2; URL={$PHP_SELF}?session={$session}&onglet=traitement_demandes\">";
    }
    //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
    if ($_SESSION['config']['mail_refus_conges_alerte_user']) {
        alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "refus_conges", $DEBUG);
    }
}
Пример #3
0
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";

}
Пример #4
0
 public static function traite_all_demande_en_cours($tab_bt_radio, $tab_text_refus)
 {
     $PHP_SELF = $_SERVER['PHP_SELF'];
     $session = session_id();
     $return = '';
     while ($elem_tableau = each($tab_bt_radio)) {
         $champs = explode("--", $elem_tableau['value']);
         $user_login = $champs[0];
         $user_nb_jours_pris = $champs[1];
         $type_abs = $champs[2];
         // id du type de conges demandé
         $date_deb = $champs[3];
         $demi_jour_deb = $champs[4];
         $date_fin = $champs[5];
         $demi_jour_fin = $champs[6];
         $reponse = $champs[7];
         $numero = $elem_tableau['key'];
         $numero_int = (int) $numero;
         $return .= $numero . '---' . $user_login . '---' . $user_nb_jours_pris . '---' . $reponse . '<br>';
         /* Modification de la table conges_periode */
         if (strcmp($reponse, "VALID") == 0) {
             /* UPDATE table "conges_periode" */
             $sql1 = 'UPDATE conges_periode SET p_etat=\'valid\', p_date_traitement=NOW() WHERE p_num="' . \includes\SQL::quote($numero_int) . '" AND p_etat=\'demande\';';
             /* On valide l'UPDATE dans la table "conges_periode" ! */
             $ReqLog1 = \includes\SQL::query($sql1);
             if ($ReqLog1 && \includes\SQL::getVar('affected_rows')) {
                 // Log de l'action
                 log_action($numero_int, "valid", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : {$reponse}");
                 //envoi d'un mail d'alerte au user et au responsable du resp (pour double validation) (si demandé dans config de libertempo)
                 if ($_SESSION['config']['mail_prem_valid_conges_alerte_user']) {
                     alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "valid_conges");
                 }
             }
         }
         if (strcmp($reponse, "OK") == 0) {
             /* UPDATE table "conges_periode" */
             $sql1 = 'UPDATE conges_periode SET p_etat="ok", p_date_traitement=NOW() WHERE p_num="' . \includes\SQL::quote($numero_int) . '" AND ( p_etat=\'valid\' OR p_etat=\'demande\' );';
             /* On valide l'UPDATE dans la table "conges_periode" ! */
             $ReqLog1 = \includes\SQL::query($sql1);
             if ($ReqLog1 && \includes\SQL::getVar('affected_rows')) {
                 // Log de l'action
                 log_action($numero_int, "ok", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : {$reponse}");
                 /* UPDATE table "conges_solde_user" (jours restants) */
                 soustrait_solde_et_reliquat_user($user_login, $numero_int, $user_nb_jours_pris, $type_abs, $date_deb, $demi_jour_deb, $date_fin, $demi_jour_fin);
                 //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
                 if ($_SESSION['config']['mail_valid_conges_alerte_user']) {
                     alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "accept_conges");
                 }
             }
         } elseif (strcmp($reponse, "not_OK") == 0) {
             // recup du motif de refus
             $motif_refus = addslashes($tab_text_refus[$numero_int]);
             $sql1 = 'UPDATE conges_periode SET p_etat=\'refus\', p_motif_refus=\'' . $motif_refus . '\', p_date_traitement=NOW() WHERE p_num="' . \includes\SQL::quote($numero_int) . '" AND ( p_etat=\'valid\' OR p_etat=\'demande\' );';
             /* On valide l'UPDATE dans la table ! */
             $ReqLog1 = \includes\SQL::query($sql1);
             if ($ReqLog1 && \includes\SQL::getVar('affected_rows')) {
                 // Log de l'action
                 log_action($numero_int, "refus", $user_login, "traite demande {$numero} ({$user_login}) ({$user_nb_jours_pris} jours) : refus");
                 //envoi d'un mail d'alerte au user (si demandé dans config de php_conges)
                 if ($_SESSION['config']['mail_refus_conges_alerte_user']) {
                     alerte_mail($_SESSION['userlogin'], $user_login, $numero_int, "refus_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 . '&onglet=traitement_demandes">';
     return $return;
 }
Пример #5
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;
 }
Пример #6
0
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>';
}