The Uploader a écritMais rien ne m'empêche de le faire aujourd'hui, sauf que j'en ai tellement bavé que je vais laisser ça de côté.
c'est justement en laissant ton code de côté que tu en baves..
"Je factoriserai mon code demain" c'est jamais bon.. (bon faut pas tomber dans l'excès inverse non plus)
Voilà le code du bouton ajouter selon 2 cas, ajout pour un utilisateur ou plusieurs en même temps avec controle congé, RTT, Maladie, Maladie Enfant.
C'est pas parfait mais ça fonctionne.
// Recherche l'enregistrement
Jc est un entier
Dc est une Date = SAI_DateA
Sannée est une Date =Gauche(SAI_DateA, 4)
Sannée..Année-=1
Sai_année_suivant est une Date = Gauche(SAI_DateA, 4)
DateDebutConge est une Date = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge est un Date = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
M est une chaîne = Gauche(Date, 6)
d est un entier = Droite(DateFinMois(M),2)
param_mois,Param_annee sont des chaînes
ChaineJourMois est une chaîne = Droite(Date,4)
ChaineMois est une chaîne = Gauche(ChaineJourMois,2)
Param_annee = Gauche(Date, 4)
param_mois = ChaineMois
DateDebut est une Date = Param_annee+param_mois+"01"
DateFin est une Date = Param_annee+param_mois+d
SELON SEL_Ajout
// ------------------------------- Ajouter un ou plusieurs événements à un Utilisateur --------------------------------
CAS 1
// Evenement CONGE N
SI COMBO_Evénement..ValeurAffichée = "CONGE JOURNEE" OU COMBO_Evénement..ValeurAffichée ="CONGE DEMI JOURNEE" ALORS
POUR Jc = 1 A SAI_JourC
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI DateVersJour(Dc) > 5 ALORS
Dc..Jour+=1
SINON
SI Dc > dateFinConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sai_année_suivant..Année++
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
SI Dc < DateDebutConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sannée..Année-=1
Sai_année_suivant = Gauche(SAI_DateA, 4)
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,SAI_Employé,DateDebutConge,dateFinConge)
SI REQ_Conge_restant.CongéN_Restant > 0 ALORS
// on enlève un jour de congé N
// Recherche l'enregistrement
HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
SI HTrouve() ALORS
resN est un numérique = Conge.CongéN_Restant
resMN est un numérique
SI COMBO_Evénement..ValeurAffichée = "CONGE JOURNEE" ALORS
resMN = resN-1
FIN
SI COMBO_Evénement..ValeurAffichée = "CONGE DEMI JOURNEE" ALORS
resMN = resN-0.5
FIN
Conge.CongéN_Restant = resMN
Conge.Total_conge_restant = resMN+Conge.CongéN_1_Restant
HModifie(Conge)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = SAI_Employé
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
Dc..Jour+=1
SINON
Info("Plus ou Pas de congé N disponible")
FIN
FIN
FIN
PageFermeDialogue()
SINON
// Evenement CONGE N-1
SI COMBO_Evénement..ValeurAffichée ="C N-1 JOURNEE" OU COMBO_Evénement..ValeurAffichée ="C N-1 DEMI JOURNEE" ALORS
POUR Jc = 1 A SAI_JourC
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI DateVersJour(Dc) > 5 ALORS
Dc..Jour+=1
SINON
SI Dc > dateFinConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sai_année_suivant..Année++
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
SI Dc < DateDebutConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sannée..Année-=1
Sai_année_suivant = Gauche(SAI_DateA, 4)
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,SAI_Employé,DateDebutConge,dateFinConge)
SI REQ_Conge_restant.CongéN_1_Restant > 0 ALORS
// on enlève un jour de congé N-1
// Recherche l'enregistrement
HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
SI HTrouve() ALORS
resN1 est un numérique = Conge.CongéN_1_Restant
resMN1 est un numérique
SI COMBO_Evénement..ValeurAffichée = "C N-1 JOURNEE" ALORS
resMN1 = resN1-1
FIN
SI COMBO_Evénement..ValeurAffichée = "C N-1 DEMI JOURNEE" ALORS
resMN1 = resN1-0.5
FIN
Conge.CongéN_1_Restant = resMN1
Conge.Total_conge_restant = resMN1+Conge.CongéN_Restant
HModifie(Conge)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = SAI_Employé
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
Dc..Jour+=1
SINON
Info("Plus ou Pas de congé N-1 disponible")
FIN
FIN
FIN
PageFermeDialogue()
SINON
// Evenement RTT
SI COMBO_Evénement..ValeurAffichée ="RTT JOURNEE" OU COMBO_Evénement..ValeurAffichée ="RTT DEMI JOURNEE" ALORS
POUR Jc = 1 A SAI_JourC
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI DateVersJour(Dc) > 5 ALORS
Dc..Jour+=1
SINON
HExécuteRequête(REQ_RTT_restant,hRequêteDéfaut,SAI_Employé,Dc..Année)
SI REQ_RTT_restant.RTT_Restant > 0 ALORS
// on enlève un jour de RTT
// Recherche l'enregistrement
HLitRecherchePremier(RTT,IDRTT,REQ_RTT_restant.IDRTT)
SI HTrouve() ALORS
resRTT est un numérique = RTT.RTT_restant
resMRTT est un numérique
SI COMBO_Evénement..ValeurAffichée = "RTT JOURNEE" ALORS
resMRTT = resRTT-1
FIN
SI COMBO_Evénement..ValeurAffichée = "RTT DEMI JOURNEE" ALORS
resMRTT = resRTT-0.5
FIN
RTT.RTT_restant = resMRTT
HModifie(RTT)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = SAI_Employé
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
Dc..Jour+=1
SINON
Info("Plus ou Pas de RTT disponible")
FIN
FIN
FIN
PageFermeDialogue()
SINON
// Evenement MALADIE
SI COMBO_Evénement..ValeurAffichée ="MALADIE" ALORS
POUR Jc = 1 A SAI_JourC
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI DateVersJour(Dc) > 5 ALORS
Dc..Jour+=1
SINON
HExécuteRequête(REQ_Maladie_Pris,hRequêteDéfaut,SAI_Employé,Dc..Année)
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
// on ajout un jour de congé Maladie
// Recherche l'enregistrement
HLitRecherchePremier(Maladie,IDMaladie,REQ_Maladie_Pris.IDMaladie)
SI HTrouve() ALORS
resMALADIE est un numérique = Maladie.Maladie_pris
ResMMALADIE est un numérique = resMALADIE+1
Maladie.Maladie_pris = ResMMALADIE
HModifie(Maladie)
SINON
Maladie.Année = Gauche(SAI_DateA,4)
Maladie.IDUtilisateur = SAI_Employé
Maladie.Maladie_pris = "1"
HAjoute(Maladie)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = SAI_Employé
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
Dc..Jour+=1
FIN
FIN
PageFermeDialogue()
SINON
// Evenement MALADIE ENFANT
SI COMBO_Evénement..ValeurAffichée ="MALADIE ENFANT" ALORS
POUR Jc = 1 A SAI_JourC
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI DateVersJour(Dc) > 5 ALORS
Dc..Jour+=1
SINON
HExécuteRequête(REQ_MaladieEnfant_Pris,hRequêteDéfaut,SAI_Employé,Dc..Année)
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
// on ajout un jour de congé Maladie
// Recherche l'enregistrement
HLitRecherchePremier(Maladie_Enfant,IDMaladieEnfant,REQ_MaladieEnfant_Pris.IDMaladieEnfant)
SI HTrouve() ALORS
resMALADIEENFANT est un numérique = Maladie_Enfant.MaladieEnfant_pris
ResMMALADIEENFANT est un numérique = resMALADIEENFANT+1
Maladie_Enfant.MaladieEnfant_pris = ResMMALADIEENFANT
SI ResMMALADIEENFANT <= 6 ALORS HModifie(Maladie_Enfant)
SINON
Maladie_Enfant.Année = Gauche(SAI_DateA,4)
Maladie_Enfant.IDUtilisateur = SAI_Employé
Maladie_Enfant.MaladieEnfant_pris = "1"
HAjoute(Maladie_Enfant)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = SAI_Employé
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
SI ResMMALADIEENFANT <= 6 ALORS
HAjoute(Lieu)
SINON
Info("On ne peut pas prendre plus de 6 congés CONGE MALADIE par an")
FIN
Dc..Jour+=1
FIN
FIN
PageFermeDialogue()
SINON
// Evenement autre
POUR Jc = 1 A SAI_JourC
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI DateVersJour(Dc) > 5 ALORS
Dc..Jour+=1
SINON
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = SAI_Employé
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
Dc..Jour+=1
FIN
FIN
PageFermeDialogue()
FIN
FIN
FIN
FIN
FIN
// ------------------------------- Ajouter un événement à Tous les Utilisateurs --------------------------------
CAS 2
POUR Jc = 1 A SAI_JourC
SI DateVersJour(Dc) > 5 ALORS
Dc..Jour+=1
SINON
HExécuteRequête(REQ_Utilisateur_présent,Cadil,hRequêteDéfaut,DateDebut,DateFin)
HLitPremier(REQ_Utilisateur_présent,IDUtilisateur)
TANTQUE PAS HEnDehors()
sIdU est une chaîne = REQ_Utilisateur_présent.IDUtilisateur
// Evenement CONGE N
SI COMBO_Evénement..ValeurAffichée ="CONGE JOURNEE" OU COMBO_Evénement..ValeurAffichée ="CONGE DEMI JOURNEE" ALORS
SI Dc > dateFinConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sai_année_suivant..Année++
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
SI Dc < DateDebutConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sannée..Année-=1
Sai_année_suivant = Gauche(SAI_DateA, 4)
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,sIdU,DateDebutConge,dateFinConge)
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI REQ_Conge_restant.CongéN_Restant > 0 ALORS
// on enlève un jour de congé N
// Recherche l'enregistrement
HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
SI HTrouve() ALORS
resN_ est un numérique = Conge.CongéN_Restant
resMN_ est un numérique
SI COMBO_Evénement..ValeurAffichée = "CONGE JOURNEE" ALORS
resMN_ = resN-1
FIN
SI COMBO_Evénement..ValeurAffichée = "CONGE DEMI JOURNEE" ALORS
resMN_ = resN-0.5
FIN
Conge.CongéN_Restant = resMN_
Conge.Total_conge_restant = resN_+resMN_
HModifie(Conge)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = sIdU
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
SINON
Info("Plus ou Pas de congé N disponible")
FIN
SINON
// Evenement CONGE N-1
SI COMBO_Evénement..ValeurAffichée ="C N-1 JOURNEE" OU COMBO_Evénement..ValeurAffichée ="C N-1 DEMI JOURNEE" ALORS
SI Dc > dateFinConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sai_année_suivant..Année++
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
SI Dc < DateDebutConge ALORS
Sannée = Gauche(SAI_DateA, 4)
Sannée..Année-=1
Sai_année_suivant = Gauche(SAI_DateA, 4)
DateDebutConge = ChaîneVersDate("01/06/"+Sannée,"JJ/MM/AAAA")
dateFinConge = ChaîneVersDate("31/05/"+Sai_année_suivant,"JJ/MM/AAAA")
FIN
HExécuteRequête(REQ_Conge_restant,hRequêteDéfaut,sIdU,DateDebutConge,dateFinConge)
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI REQ_Conge_restant.CongéN_1_Restant > 0 ALORS
// on enlève un jour de congé N-1
// Recherche l'enregistrement
HLitRecherchePremier(Conge,IDConge,REQ_Conge_restant.IDConge)
SI HTrouve() ALORS
resN_1 est un numérique = Conge.CongéN_1_Restant
ResMN_1 est un numérique
SI COMBO_Evénement..ValeurAffichée = "C N-1 JOURNEE" ALORS
ResMN_1 = resN_1-1
FIN
SI COMBO_Evénement..ValeurAffichée = "C N-1 DEMI JOURNEE" ALORS
ResMN_1 = resN_1-0.5
FIN
Conge.CongéN_1_Restant = ResMN_1
Conge.Total_conge_restant = ResMN_1+resN_1
HModifie(Conge)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = sIdU
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
SINON
Info("Plus ou Pas de congé N-1 disponible")
FIN
SINON
// Evenement RTT
SI COMBO_Evénement..ValeurAffichée ="RTT JOURNEE" OU COMBO_Evénement..ValeurAffichée ="RTT DEMI JOURNEE" ALORS
HExécuteRequête(REQ_RTT_restant,hRequêteDéfaut,sIdU,Dc..Année)
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
SI REQ_RTT_restant.RTT_Restant > 0 ALORS
// on enlève un jour de congé N-1
// Recherche l'enregistrement
HLitRecherchePremier(RTT,IDRTT,REQ_RTT_restant.IDRTT)
SI HTrouve() ALORS
resRTT_ est un numérique = RTT.RTT_restant
ResMRTT_ est un numérique
SI COMBO_Evénement..ValeurAffichée = "RTT JOURNEE" ALORS
ResMRTT_ = resRTT_-1
FIN
SI COMBO_Evénement..ValeurAffichée = "RTT DEMI JOURNEE" ALORS
ResMRTT_ = resRTT_-0.5
FIN
RTT.RTT_restant = ResMRTT_
HModifie(RTT)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = sIdU
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
SINON
Info("Plus ou Pas de RTT disponible")
FIN
SINON
// Evenement Maladie
SI COMBO_Evénement..ValeurAffichée ="MALADIE" ALORS
HExécuteRequête(REQ_Maladie_Pris,hRequêteDéfaut,sIdU,Dc..Année)
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
// on ajout un jour de congé Maladie
// Recherche l'enregistrement
HLitRecherchePremier(Maladie,IDMaladie,REQ_Maladie_Pris.IDMaladie)
SI HTrouve() ALORS
resMALADIE_ est un numérique = Maladie.Maladie_pris
ResMMALADIE_ est un numérique = resMALADIE_+1
Maladie.Maladie_pris = ResMMALADIE_
HModifie(Maladie)
SINON
Maladie.Année = Gauche(SAI_DateA,4)
Maladie.IDUtilisateur = SAI_Employé
Maladie.Maladie_pris = "1"
HAjoute(Maladie)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = sIdU
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
SINON
// Evenement MALADIE ENFANT
SI COMBO_Evénement..ValeurAffichée ="MALADIE ENFANT" ALORS
HExécuteRequête(REQ_MaladieEnfant_Pris,hRequêteDéfaut,SAI_Employé,Dc..Année)
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
// on ajout un jour de congé Maladie
// Recherche l'enregistrement
HLitRecherchePremier(Maladie_Enfant,IDMaladieEnfant,REQ_MaladieEnfant_Pris.IDMaladieEnfant)
SI HTrouve() ALORS
resMALADIEENFANT_ est un numérique = Maladie_Enfant.MaladieEnfant_pris
ResMMALADIEENFANT_ est un numérique = resMALADIEENFANT_+1
Maladie_Enfant.MaladieEnfant_pris = ResMMALADIEENFANT_
SI ResMMALADIEENFANT_ <= 6 ALORS HModifie(Maladie_Enfant)
SINON
Maladie_Enfant.Année = Gauche(SAI_DateA,4)
Maladie_Enfant.IDUtilisateur = SAI_Employé
Maladie_Enfant.MaladieEnfant_pris = "1"
HAjoute(Maladie_Enfant)
FIN
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = SAI_Employé
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
SI ResMMALADIEENFANT_ <= 6 ALORS
HAjoute(Lieu)
SINON
Info("On ne peut pas prendre plus de 6 congés CONGE MALADIE par an")
FIN
SINON
// Autre Evenement
EcranVersFichier(PAGE_Fiche_AjoutModifSup_Action)
Lieu.DateA = Dc
Lieu.Année = DateVersChaîne(Dc,"AAAA")
Lieu.IDUtilisateur = sIdU
Lieu.LieuSujet = SAI_Lieu
Lieu.IDEvenement = COMBO_Evénement..ValeurMémorisée
HAjoute(Lieu)
FIN
FIN
FIN
FIN
FIN
HLitSuivant(REQ_Utilisateur_présent,IDUtilisateur)
FIN
Dc..Jour+=1
FIN
FIN
PageFermeDialogue()
AUTRE CAS
FIN