Exemplo n.º 1
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)
         \responsable\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;
                     }
                     //
                     // update D'ABORD du reliquat
                     $VerifDec = verif_saisie_decimal($new_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 ="' . \includes\SQL::quote($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 = "' . \includes\SQL::quote($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 on été basculés.
         \responsable\Fonctions::update_appli_num_exercice();
     }
     return $return;
 }