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; }