'Aide Administration des Equipes...' 'Menus'
    --Création : 10/12/2004 11:55:14 fpo-FRANCOIS; Modification : 27/10/2008 11:32:51 spi-SOTEZE; 
    SI shift{} ALORS
    	verifierLesDoublons{}
    SINON
    	ouvrirAide {'budgetsTemps\aid.chm::/Créationequip.htm#Créationequip'}--, '-09gestioninterne'}
    	--commandeOS {racine {} +'\bin\keyhh -09gestioninterne ' + racine {} + '\global\aide\budgetsTemps\aid.chm::/creationequipe.htm#creationequipe'}
    FIN SI
###
'Aide Administrateur...' 'Menus'
    --Création : 10/12/2004 11:55:14 fpo-FRANCOIS; Modification : 27/10/2008 11:27:34 spi-SOTEZE; 
    SI shift{} ALORS
    	verifierLesDoublons{}
    SINON
    	ouvrirAide {'administrateur\aideadm.chm'}
    	/*SI NON editer{racine{}+'\global\aide\administrateur\aideadm.chm'} ALORS
		info{'Impossible d''ouvrir le fichier d''aide '+racine{}+'\global\aide\administrateur\aideadm.chm'}
	FIN SI*/
    FIN SI
###
'ouvrirLog' 'Menus'
{a_sQuoi <Chaine>}
    --Création : 22/09/2005 08:27:35 spi-TEZE-S; Modification : 23/09/2005 13:59:07 spi-TEZE-S; 
    
    att_oEditeurLogs ::= 'EditeurLogs'
    SI att_oEditeurLogs = ? ALORS	
    	att_oEditeurLogs := creer{'EditeurLogs'}
    	att_oEditeurLogs.Ouvrir{etat,racine{}+'\props\Traces\Administrateur.log',a_sQuoi}
    SINON
    	att_oEditeurLogs.m_sQuoi := a_sQuoi
    	att_oEditeurLogs.raffraichir{}
    FIN SI
###
'Equipes' 'Menus'
    --Création : 23/09/2005 09:45:43 spi-TEZE-S; Modification : 23/09/2005 11:30:35 spi-TEZE-S; 
    ouvrirLog{'Equipe'}
###
'Profils' 'Menus'
    --Création : 23/09/2005 09:45:33 spi-TEZE-S; Modification : 23/09/2005 11:30:42 spi-TEZE-S; 
    ouvrirLog{'Profil'}
###
'Collaborateurs' 'Menus'
    --Création : 23/09/2005 09:45:26 spi-TEZE-S; Modification : 23/09/2005 11:30:51 spi-TEZE-S; 
    ouvrirLog{'Collaborateur'}
###
'Dossiers' 'Menus'
    --Création : 23/09/2005 09:45:19 spi-TEZE-S; Modification : 23/09/2005 11:30:59 spi-TEZE-S; 
    ouvrirLog{'Dossier'}
###
'Groupes de dossiers' 'Menus'
    --Création : 23/09/2005 09:45:09 spi-TEZE-S; Modification : 23/09/2005 11:31:06 spi-TEZE-S; 
    ouvrirLog{'Groupe'}
###
'Entités' 'Menus'
    --Création : 23/09/2005 09:45:01 spi-TEZE-S; Modification : 23/09/2005 11:31:14 spi-TEZE-S; 
    ouvrirLog{'Entité'}
###
'Divers' 'Menus'
    --Création : 23/09/2005 09:44:48 spi-TEZE-S; Modification : 23/09/2005 11:32:42 spi-TEZE-S; 
    ouvrirLog{'Administrateur'}
###
'majMenu' 'Menus'
    --Création : 10/12/2004 11:49:07 fpo-FRANCOIS; Modification : 18/09/2012 14:43:56 mik-PC016494; 
    |
    	sMenu<Chaine>
    |
    debug{'Appel de EditeurAdministration majMenu'}
    sMenu := 'Fichier'
    SI att_bDroitsEditeurAdmin ALORS
    sMenu+='
	Visionner les traces...
		Entités--Traces des opérations effectuées sur les entités...
		Collaborateurs--Traces des opérations effectuées sur les collaborateurs...
		Profils--Traces des opérations effectuées sur les profils...
		--
		Groupes de dossiers--Traces des opérations effectuées sur les groupes de dossiers...
		Dossiers--Traces des opérations effectuées sur les dossiers...
		--
		Equipes--Traces des opérations effectuées sur les équipes...
		--
		Divers--Traces des ouvertures et fermetures de l''éditeur d''administration...
	--'
    FIN SI

    sMenu+='
	Quitter--Fermeture de l''éditeur d''administration... 
'
    SI nombreDAdministrateurs{0} = 0 ALORS
    	sMenu += '
Traitements
	S''activer en tant qu''administrateur du cabinet
'
    FIN SI
    collaborateur ::= ''
    SI minuscule{collaborateur.nom} = 'tni' OU enDev{'Profils'} ALORS
    sMenu += 'Traitements
	Mettre à jour les droits sur les encours financier
	Mettre à jour les droits sur les encours financier en silencieux
'
    FIN SI
sMenu+='Aide'
    
    SI att_bDroitsEditeurAdmin ALORS
    	sMenu += '
	Aide Administrateur...'
    FIN SI
    SI att_bDroitsEquipes ALORS
    	sMenu += '
	Aide Administration des Equipes...'
    FIN SI 
    SORTIR sMenu
###
'menu_Groupe' 'Menus'
    --Création : 14/04/2005 15:23:38 spi-SOPHIE; Modification : 17/11/2008 11:06:10 spi-SOTEZE; 
    /*Renvoie FAUX s'il n'y a pas le droit d'opérer sur le groupe sélectionné VRAI sinon*/
    --{a_oGrp<Objet>}
    |oGrp<Objet> sChoix<Chaine> sCR<Chaine> bMono<Booléen>|
    sCR := '
'
    oGrp ::= 'ConfigGroupe'	
    SI classe{editeur.objetSelection} = 'ConfigGroupe' ALORS		oGrp := editeur.objetSelection FIN SI
    --SI NON jAiLesDroitsSur{oGrp.repertoire} ALORS	SORTIR FAUX	FIN SI
    
    bMono := NON att_bACoalanet OU (att_bACoalanet ET NON att_bEstVraiMultisites)
    sChoix := 'Forcer la mise à jour'
    SI bMono OU estSitePrimaire{} ALORS
    	SI proprieteEstLocale{racine{}+'\grps', ''} ALORS
    		sChoix += sCR+'Ajouter un groupe de dossiers'
    	FIN SI
    FIN SI
    sChoix += sCR + 'Déclarer un groupe de dossiers déjà existant'
    SI oGrp <> ? ALORS
    	SI majuscule{oGrp.nom} <> 'DOSSIERS INACTIFS' ALORS
    		SI bMono OU estSitePrimaire{} ALORS
    			SI oGrp.sProprio = '' OU oGrp.sProprio = ? OU oGrp.sProprio = nomSiteLocal{} ALORS
    				sChoix += sCR+'Ajouter un dossier à ce groupe'
    			FIN SI
    		FIN SI
    		SI bMono ALORS
    			SI oGrp.estVideDeDossiers{} ALORS
    				sChoix +=sCR+'Supprimer ce groupe de dossiers'
    			FIN SI
    		SINON	SI oGrp.sProprio<>nomSiteLocal{} ALORS
    				sChoix += sCR + 'Rapatrier la racine du groupe de dossiers'
    			FIN SI
    			sChoix += sCR+'Rapatrier les racines et DP distants des dossiers de ce groupe'
    		FIN SI 
    	FIN SI
    	SI shift{} ALORS
    		sChoix += sCR+'Ouvrir le répertoire du groupe de dossiers'
    	FIN SI
    FIN SI
    sChoix := choix{sChoix}
    SI sChoix = 'Ajouter un groupe de dossiers' ALORS	ajouterGrpDos{}
    SINON	SI sChoix # 'Supprimer ce groupe de dossiers' ALORS	supprimerGrpDos{oGrp}
    	SINON	SI sChoix # 'Ajouter un dossier à ce groupe' ALORS	ajouterDossier{oGrp}
    		SINON	SI sChoix = 'Forcer la mise à jour' ALORS
    				att_oLstNoeudsGroupes := ?
    				editeur.majObjets
    			SINON	SI sChoix = 'Ouvrir le répertoire du groupe de dossiers' ALORS
    					SI NON editer{oGrp.repertoire+'\'+oGrp.code} ALORS
    						info{'Impossible de trouver une partie du chemin 
'+oGrp.repertoire+'\'+oGrp.code}
    					FIN SI
    				SINON SI sChoix ='Rapatrier la racine du groupe de dossiers' ALORS
    						SORTIR oGrp.rapatrierGroupeDeDossiers{}
    					SINON	SI sChoix ='Rapatrier les racines et DP distants des dossiers de ce groupe' ALORS
    							SORTIR oGrp.rapatrierDpDossiersDistants{}
    						SINON SI sChoix = 'Déclarer un groupe de dossiers déjà existant' ALORS
    								SORTIR declarerObjetPreexistant{'Groupe de Dossiers'}
    							FIN SI
    						FIN SI
    					FIN SI
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    FIN SI
    
    SORTIR VRAI
###
'menu_Probleme' 'Menus'
{a_oCfgPbl <Objet>}
    --Création : 05/09/2005 12:02:11 spi-TEZE-S; Modification : 05/09/2005 12:11:11 spi-TEZE-S; 
    
    |sChoix<Chaine> oPbl<Objet>|

    oPbl ::= 'ConfigProbleme'
    oPbl := a_oCfgPbl

    sChoix := 'Déplacer'
    SI shift{} ALORS
    	sChoix += '
Ouvrir le répertoire du dossier' 
    FIN SI
    sChoix := choix{sChoix}
    
    SI sChoix = 'Ouvrir le répertoire du dossier' ALORS
    	SI  editer{oPbl.repertoire} ALORS
    		SORTIR VRAI
    	FIN SI
    	info{'Impossible de trouver le répertoire 
'+oPbl.repertoire}
    	SORTIR FAUX
    FIN SI
    SI sChoix = 'Déplacer' ALORS
    	SORTIR 	oPbl.deplacer{}
    FIN SI
    SORTIR FAUX
###
'menu_Dossier' 'Menus'
{a_oConfDoss <Objet>}
    --Création : 14/04/2005 15:40:42 spi-SOPHIE; Modification : 19/05/2011 09:15:25 ylv-PC15749; 
    --Renvoie FAUX s'il n'y a pas le droit d'opérer sur le dossier sélectionné
    --VRAI sinon
    
    
    |
    	oConfDoss<Objet> oDoss<Objet> oGrp<Objet> sChoix<Chaine> sEtatRacine<Chaine> sEtatDp<Chaine>
    |
    
    oGrp ::= 'GroupeDeDossiers'
    oDoss ::= 'Dossier'
    oConfDoss ::= 'ConfigDossier'
    oConfDoss := a_oConfDoss
    
    POUR TOUT groupeDeDossiers TEL QUE majuscule{groupeDeDossiers.nom} = majuscule{oConfDoss.nomGroupe} FAIRE
    	oGrp := groupeDeDossiers
    FIN FAIRE
    
    --Construction du menu
    SI shift{} ALORS
    	sChoix := 'Ouvrir le répertoire du dossier
'
    SINON
    	sChoix := ''
    FIN SI
    oDoss := retournerDossier{oConfDoss.code,oGrp.cheminLogique}
    SI oDoss <> ? ALORS
    	SI majuscule{oConfDoss.nomGroupe} = 'DOSSIERS INACTIFS' ALORS
    		SI oDoss.motDePasseOk ALORS
    			sChoix += 'Restaurer ce dossier'
    		SINON
    			sChoix += 'Déverrouiller'
    		FIN SI
    	SINON
    		SI oDoss.motDePasseOk ALORS
    			sEtatRacine := etatCluster{oDoss.repertoire+'\dossier'}
    			sEtatDp :=  etatCluster{oDoss.repertoire+'\dp\dp'}
    			SI sEtatDp <> 'distant' ET sEtatDp <> 'locke' ET sEtatDp <> 'instable' ET  
    						sEtatRacine <> 'distant' ET sEtatRacine <> 'locke' ET sEtatRacine <> 'instable' ALORS
    				SI att_bACoalanet ET att_bEstVraiMultisites ALORS
    					sChoix += 'Ajouter ou Changer le mot de passe de ce dossier'
    				SINON
    					sChoix +='Ajouter ou Changer le mot de passe de ce dossier
Changer ce dossier de groupe
Archiver ce dossier'
    				FIN SI
    			SINON	SI sEtatDp = 'distant' OU sEtatRacine = 'distant' ALORS
    					sChoix += 'Rapatrier la racine et le DP du dossier'
    				FIN SI
    			FIN SI
    		SINON
    			sChoix += 'Déverrouiller'
    		FIN SI
    	FIN SI
    FIN SI
    --CHOIX
    sChoix := choix{sChoix}
    --Action
    SI sChoix = 'Archiver ce dossier' ALORS	suppressionDossier{oConfDoss, FAUX}
    SINON
    	SI sChoix = 'Changer ce dossier de groupe' OU sChoix # 'Restaurer ce dossier' ALORS deplacerDossier{oConfDoss}
    	SINON
    		SI sChoix = 'Ajouter ou Changer le mot de passe de ce dossier' ALORS 
    			tracer{'Administrateur', 'Dossier', 'Modification', 'Demande', 'Demande d''ajout ou de changement du mot de passe du dossier '+oConfDoss.nom+'('+oConfDoss.code+')',VRAI}
    			oConfDoss.gererMotDePasse{'Modification'}
    			SI oConfDoss.abOkPwd = VRAI ALORS
    				dossier ::= oConfDoss.code
    				dossier.notifierModificationGI2AvecFichier{oConfDoss.code}
    			FIN SI
    		SINON
    			SI sChoix = 'Déverrouiller' ALORS oConfDoss.deverrouiller{FAUX}
    			SINON
    				SI sChoix = 'Ouvrir le répertoire du dossier' ALORS editer{oConfDoss.repertoire}
    				SINON
    					SI sChoix = 'Rapatrier la racine et le DP du dossier' ALORS
    						oConfDoss.rapatrierDpDossierDistant{VRAI}
    					FIN SI
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    FIN SI
    SORTIR VRAI
###
'menu_Entite' 'Menus'

	|
		oEnt<Objet>sChoix<Chaine> bEstLocale<Booléen>CR<Chaine>choixE15<Chaine>
		objAdministrateur<Objet>droitAdminGC<Booléen>
		choixE01<Chaine>choixE02<Chaine>choixE03<Chaine>choixE04<Chaine>choixE05<Chaine>choixE06<Chaine>
		choixE07<Chaine>choixE08<Chaine>choixE09<Chaine>
	|

	objAdministrateur ::= 'Administrateur'
	ed ::= 'Editeur'
	oEnt ::= 'ConfigEntite'

	objAdministrateur := creer{'Administrateur'}

	SI (verifierDroitsProfil{'Gestion interne', ''} <> 2) ALORS
		collaborateur ::= ''
		debug{'Collaborateur : '+collaborateur.nom+' - '+collaborateur.profil}
		SI majuscule{collaborateur.profil} <> 'SYSTEME' ALORS
			SORTIR FAUX
		FIN SI
	FIN SI

	objAdministrateur.GetDroitAdminGestionContacts{}
	droitAdminGC := objAdministrateur.EstDroitAdminGC

	ed := editeur{VRAI}
	oEnt := ed.objetSelection

	CR :='
'
	choixE15 := 'Mettre à jour l''email et le nom complet des collaborateurs'
	choixE01 := 'Ajouter une entité'
	choixE02 := 'Déclarer une entité déjà existante'
	choixE03 := 'Ajouter ou Changer le mot de passe de cette entité'
	choixE04 := 'Déverrouiller'
	choixE05 := 'Rapatrier la racine de l''entité'
	choixE06 := 'Rapatrier tous les collaborateurs distants'
	choixE07 := 'Ouvrir le répertoire de l''entité'
	choixE08 := 'Ajouter un collaborateur'
	choixE09 := 'Actualiser'

	SI att_bACoalanet ALORS	bEstLocale := oEnt.estLocal{} SINON	bEstLocale := VRAI FIN SI

	--Construction du Menu
	sChoix := choixE09
	SI att_bACoalanet ALORS
		SI nomSitePrimaire{} <> '?' ET nomSitePrimaire{} = att_sSiteLocal ALORS
			sChoix += CR + choixE01
		FIN SI
		sChoix += CR + choixE02
	SINON
		sChoix += CR + choixE01
	FIN SI
	SI oEnt  <> ? ALORS
		dossier ::= oEnt.code
		SI dossier.motDePasseOk ALORS
			SI bEstLocale ALORS
				sChoix += CR + choixE03
			FIN SI
		SINON
			sChoix += CR + choixE04
		FIN SI
		SI att_bACoalanet ET NON bEstLocale  ALORS
			SI att_iNumeroOrdreEnCours <0 ALORS
				sChoix += CR + choixE05
			FIN SI
		FIN SI
		SI att_bACoalanet ALORS
			sChoix += CR + choixE06
		FIN SI
		SI shift{} ALORS
			sChoix += CR + '--' + CR + choixE07
		FIN SI
		sChoix += CR + '--'+CR + choixE08

		SI droitAdminGC ALORS
			sChoix += CR + '--' + CR
			sChoix += choixE15
		FIN SI
	FIN SI

	--Demandes
	sChoix := choix{sChoix}
	SI sChoix = choixE01 ALORS
		ajouterEntite{}
		SORTIR VRAI
	FIN SI
	SI sChoix = choixE08 ALORS
		ajouterCollaboDepuisEntite{}
		SORTIR VRAI
	FIN SI
	SI sChoix = choixE15 ALORS
		MajEmailNomCompletCollabosEntite{}
		SORTIR VRAI
	FIN SI

	SI sChoix = choixE03 ALORS
		tracer{'Administrateur', 'Entité', 'Modification', 'Demande', 'Demande d''ajout ou de changement du mot de passe de l''entité '+oEnt.nom, VRAI}
		oEnt.gererMotDePasse{'Modification'}
		SI oEnt.abOkPwd = VRAI ALORS
			dossier ::= oEnt.code
			dossier.notifierModificationGI2AvecFichier{oEnt.code}
		FIN SI
		SORTIR VRAI
	FIN SI
	SI sChoix = choixE04 ALORS
		oEnt.deverrouiller{}
		SORTIR VRAI
	FIN SI
	SI sChoix = choixE09 ALORS
		actualiserEntite{}
		SORTIR VRAI
	FIN SI
	SI sChoix = choixE05 ALORS
		oEnt.rapatrierEntite{}
		SORTIR VRAI
	FIN SI
	SI sChoix = choixE06 ALORS
		oEnt.rapatrierLesCollaborateurs{}
		SORTIR VRAI
	FIN SI
	SI sChoix = choixE07 ALORS
		SI editer{oEnt.repertoire} ALORS
			SORTIR VRAI
		SINON
			info{'Impossible de trouver le chemin ' + oEnt.repertoire}
			SORTIR FAUX
		FIN SI
	FIN SI
	SI sChoix = choixE02 ALORS
		declarerObjetPreexistant{'Entité'}
	FIN SI

	SORTIR VRAI

###
'menu_Collaborateur' 'Menus'

	|
		oColl<Objet>objAdministrateur<Objet>sChoix<Chaine>bLocal<Booléen>droitAdminGC<Booléen>
		CR<Chaine>alesDroitsMotDePasse<Booléen>bCollEstBloqueLoc<Booléen>
		choixC01<Chaine>choixC02<Chaine>choixC03<Chaine>choixC04<Chaine>choixC05<Chaine>choixC15<Chaine>
	|

	objAdministrateur ::= 'Administrateur'
	ed ::= 'Editeur'
	oColl ::= 'ConfigCollaborateur'

	objAdministrateur := creer{'Administrateur'}
	ed := editeur{VRAI}
	oColl := ed.objetSelection

	objAdministrateur.GetDroitAdminGestionContacts{}
	droitAdminGC := objAdministrateur.EstDroitAdminGC

	SI (verifierDroitsProfil{'Gestion interne', ''} <> 2) ALORS
		collaborateur ::= ''
		SI majuscule{collaborateur.profil} <> 'SYSTEME' ALORS
			SORTIR FAUX
		FIN SI
	FIN SI

	choixC01 := 'Désarchiver ce collaborateur'
	choixC02 := 'Archiver ce collaborateur'
	choixC03 := 'Rapatrier les données de ce collaborateur'
	choixC04 := 'Réinitialiser le mot de passe de ce collaborateur'
	choixC05 := 'Ouvrir le répertoire du collaborateur'
	choixC15 := 'Mettre à jour l''email et le nom complet'

	CR := '
'
    
    bCollEstBloqueLoc := oColl.GetEstCollaborateurBloqueArchive{}
	bLocal := oColl.estLocal{}

	alesDroitsMotDePasse := FAUX
	collaborateur ::= ''
	alesDroitsMotDePasse := collaborateur.droitGestionMotDePasse

	sChoix := ''
	SI NON oColl.estLogge{FAUX} ET bLocal ALORS
		SI bCollEstBloqueLoc ALORS
			sChoix := choixC01 + CR
		SINON
			sChoix := choixC02 + CR
		FIN SI
	FIN SI
	SI att_bACoalanet ET NON bLocal ALORS
		SI att_iNumeroOrdreEnCours < 0 ALORS
			sChoix += choixC03 + CR
		FIN SI
	FIN SI
	SI alesDroitsMotDePasse ALORS
		sChoix += choixC04 + CR
	FIN SI

	SI droitAdminGC ALORS
		sChoix += '--' + CR
		sChoix += choixC15 + CR
	FIN SI

	SI shift{} ALORS
		sChoix += choixC05 + CR
	FIN SI
	SI sChoix <> '' ALORS
		sChoix := choix{sChoix}
	FIN SI

	SI sChoix = choixC01 ALORS
		oColl.DesarchiverReactiverCollaborateur{}
	SINON
		SI sChoix = choixC02 ALORS
			oColl.archiverCollaborateur{}
		SINON
			SI sChoix = choixC03 ALORS
				oColl.rapatrierCollaborateur{}
			SINON
				SI sChoix = choixC05 ALORS
					SI editer{oColl.getRepertoireCollaborateur{}} ALORS
						SORTIR VRAI
					FIN SI
					info{'Impossible de trouver le chemin '+oColl.getRepertoireCollaborateur{}}
					SORTIR FAUX
				SINON
					SI sChoix = choixC04 ALORS
						oColl.reinitialiserMotDePasse{}
					SINON
						SI sChoix = choixC15 ALORS
							oColl.MajEmailNomComplet{}
						FINSI
					FIN SI
				FIN SI
			FIN SI
		FIN SI
	FIN SI

	SORTIR VRAI

    /*sChoix := choix{'Changer ce collaborateur d''entité'}
SI sChoix # 'Changer ce collaborateur d''entité' ALORS
	deplacerCollabo{oColl}
SINON
	SI sChoix # 'Archiver ce collaborateur' ALORS
		info{'Non implémenté'}
	FIN SI
FIN SI*/
###
'menu_ProfilCollabo' 'Menus'
    --Création : 18/04/2005 09:49:21 spi-SOPHIE; Modification : 06/01/2015 16:44:44 TNI-PC100391; 
    |oEnt<Objet> sEtat<Chaine> sChoix<Chaine>|
    
    SI (verifierDroitsProfil{'Gestion interne', ''} <> 2) ALORS	
    	collaborateur ::= ''
    	SI majuscule{collaborateur.profil} <> 'SYSTEME' ALORS
    		SORTIR FAUX 
    	FIN SI
    FIN SI
    
    SI att_bACoalanet ALORS
    	SI estVraiMultisites{} ALORS
    		SI estSitePrimaire{} ALORS
    			oEnt ::= 'ConfigEntite'
    			oEnt := getEntitePourAjoutCollabo{}
    			sEtat := etatCluster{nomPhysique{oEnt.repertoire+'\collabos'}} 
    			SI sEtat = 'distant' OU sEtat = 'instable' ALORS
    				SORTIR VRAI
    			FIN SI
    		SINON
    			SORTIR VRAI
    		FIN SI
    	FIN SI
    FIN SI
    
    sChoix := choix{'Ajouter un collaborateur de ce profil dans cette entité'}
    SI sChoix # 'Ajouter un collaborateur de ce profil dans cette entité' ALORS
    	ajouterCollabo{}
    FIN SI
    
    SORTIR VRAI
###
'Equipes_MENU' 'Menus'
    --Création : 17/11/2004 11:35:05 fpo-FRANCOIS; Modification : 17/11/2004 15:08:28 fpo-FRANCOIS; 
    |
    tmp_sChoix <Chaine>
    tmp_oEd <Objet>
    tmp_o<Objet>
    |
    
    tmp_oEd ::= 'Editeur'
    tmp_oEd := editeur{VRAI}
    tmp_o ::= 'ConfigEquipe' 
    tmp_o := tmp_oEd.objetSelection
    
    SI tmp_o <> ? ALORS
    	tmp_sChoix := choix{'Ajouter une équipe
Supprimer cette équipe'}
    SINON
    	tmp_sChoix := choix{'Ajouter une équipe'}
    FIN SI
    
    SI tmp_sChoix # 'Aj*' ALORS
    	SI tmp_o = ? ALORS
    		tmp_o :=  creer{'ConfigEquipe'}
    	FIN SI
    	ajouterEquipe{}
    SINON 
    	SI tmp_sChoix # 'Supp*' ALORS
    		supprimerEquipe{tmp_o}
    	FIN SI
    FIN SI
###
'Profils_MENU' 'Menus'
    --Création : 04/08/2003 16:23:16 sav-SOPHIE2; Modification : 07/09/2005 10:52:47 spi-TEZE-S; 
    |
    tmp_sChoix <Chaine>
    tmp_oEd <Objet>
    tmp_o<Objet>
    |
    
    tmp_oEd ::= 'Editeur'
    tmp_oEd := editeur{VRAI}
    tmp_o ::= 'ConfigProfil' 
    tmp_o := tmp_oEd.objetSelection
    
    
    SI tmp_o <> ? ALORS
    	tmp_sChoix := choix{'Ajouter un profil
Supprimer ce profil'}
    SINON
    	tmp_sChoix := choix{'Ajouter un profil'}
    FIN SI
    
    SI tmp_sChoix # 'Aj*' ALORS
    	SI tmp_o = ? ALORS
    		tmp_o :=  creer{'ConfigProfil'}
    	FIN SI
    	ajouterUnProfil{}
    SINON 
    	SI tmp_sChoix # 'Supp*' ALORS
    		supprimerLeProfil{tmp_o}
    	FIN SI
    FIN SI
###
'Groupes de dossiers_MENU' 'Menus'

	|
		sChoix<Chaine>oCfgDoss<Objet>oCfgPbl<Objet>
	|

	oCfgPbl ::= 'ConfigProbleme'	
	oCfgDoss ::= 'ConfigDossier'		
    
    --menus en fonction de l'objet sélectionné
    SI classe{editeur.objetSelection} = 'ConfigDossier' ALORS
    	oCfgDoss := editeur.objetSelection
    	SI menu_Dossier{oCfgDoss} ALORS
    		SORTIR VRAI
    	FIN SI
    SINON
    	SI classe{editeur.objetSelection} = 'ConfigProbleme' ALORS
    		oCfgPbl := editeur.objetSelection
    		SI menu_Probleme{oCfgPbl} ALORS	
    			SORTIR VRAI
    		FIN SI
    	FIN SI
    FIN SI
    SI menu_Groupe{} ALORS
    	SORTIR VRAI
    FIN SI
    --Si on n'avait aucun droit, on propose quand même d'ajouter un groupe de dossiers
    sChoix :=  choix{'Ajouter un groupe de dossiers
Forcer la mise à jour'}
    SI sChoix # 'Ajouter un groupe de dossiers' ALORS
    	ajouterGrpDos{}
    SINON 	
    	SI sChoix = 'Forcer la mise à jour' ALORS
    		att_oLstNoeudsGroupes := ?
    		editeur.majObjets
    	FIN SI
    FIN SI
    status{''}
    SORTIR VRAI
###
'Saisie en rafale des DP_MENU' 'Menus'
    --Création : 17/08/2005 13:50:45 spi-TEZE-S; Modification : 12/04/2010 16:08:02 llg-PO15890; 
    
    
    |
    sChoix <Chaine>
    oCfgDoss<Objet>
    oCfgGrp<Objet>
    |
    
    
    oCfgDoss ::= 'ConfigDossier'
    oCfgGrp ::= 'ConfigGroupe'
    
    SI classe{editeur.objetSelection} = 'ConfigDossier' ALORS
    	oCfgDoss := editeur.objetSelection
    	SI oCfgDoss.AffichageCadenaOF = 0 ALORS
    		sChoix := choix{'Saisir le mot de passe du dossier'}
    		SI sChoix = 'Saisir le mot de passe du dossier' ALORS
    			SORTIR oCfgDoss.deverrouillerPourSaisieDP{FAUX}
    		FIN SI
    	FIN SI
    FIN SI
    
    SI classe{editeur.objetSelection} = 'ConfigGroupe' ALORS
    	oCfgGrp := editeur.objetSelection
    	sChoix := choix{'Tester les dossiers...'}
    	SI sChoix = 'Tester les dossiers...' ALORS
    		SORTIR oCfgGrp.testerDossiers{}
    	FIN SI
    FIN SI
    status{''}
    SORTIR VRAI
###
'choisirQuoiPuisOuvrirLog' 'Menus'
    --Création : 22/09/2005 08:27:35 spi-TEZE-S; Modification : 07/10/2008 09:14:41 spi-SOTEZE; 
    
    |obj<Objet> s<Chaine> sClasse<Chaine>|
    
    obj := editeur.objetSelection
    SI obj = ? ALORS
    	SI att_sSelectionCOMBO = 'Groupes de dossiers' ALORS
    		s := 'Groupe'
    	SINON SI att_sSelectionCOMBO = 'Entités' ALORS
    			s := 'Entité'
    		SINON SI att_sSelectionCOMBO = 'Profils' ALORS
    				s := 'Profil'
    			SINON	SI att_sSelectionCOMBO = 'Equipes' ALORS
    					s := 'Equipe'
    				SINON
    					info{'Aucune trace à afficher.'}
    					SORTIR FAUX
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    SINON
    	sClasse := classe{obj} 
    	SI sClasse = 'ConfigProbleme' OU sClasse = 'ConfigDossier' ALORS
    		s := 'Dossier'
    	SINON	SI sClasse = 'ConfigGroupe' ALORS
    			s := 'Groupe'
    		SINON	SI sClasse = 'ConfigCollaborateur' ALORS
    				s := 'Collaborateur'
    			SINON	SI sClasse = 'ConfigEntite' ALORS
    					s := 'Entité'
    				SINON	SI sClasse = 'ConfigProfil' ALORS
    						s := 'Profil'
    					SINON	SI sClasse = 'ConfigEquipe' ALORS
    							s := 'Equipe'
    						SINON
    							info{'Aucune trace à afficher.'}
    							SORTIR FAUX
    						FIN SI
    					FIN SI
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    FIN SI
    
    ouvrirLog{s}
    SORTIR VRAI
###
'supprimer' 'Menus'
    --Création : 22/09/2005 17:24:08 spi-TEZE-S; Modification : 05/11/2008 16:56:59 spi-SOTEZE; 
    |obj<Objet> objGrp<Objet>  sClasse<Chaine>|
    
    obj := editeur.objetSelection
    SI obj = ? ALORS
    	info{'Vous n''avez rien sélectionné : aucune suppression associée.'}
    	SORTIR FAUX
    FIN SI
    sClasse := classe{obj} 
    SI att_sSelectionCOMBO = 'Groupes de dossiers' ET sClasse = 'ConfigGroupe' ALORS
    	objGrp ::= 'ConfigGroupe'
    	objGrp := obj
    	SI objGrp.estVideDeDossiers{} ALORS
    		supprimerGrpDos{objGrp}
    	SINON
    		info{'Ce groupe de dossiers contient des dossiers ou répertoires. Suppression impossible !'}
    		SORTIR FAUX
    	FIN SI
    SINON	SI sClasse = 'ConfigProfil' ET att_sSelectionCOMBO = 'Profils' ALORS
    		supprimerLeProfil{obj} 
    	SINON SI sClasse = 'ConfigProbleme' ALORS
    			supprimerDossierAProbleme{obj}
    		SINON SI sClasse = 'ConfigDossier' ALORS
    				SI att_sSelectionCOMBO = 'Groupes de dossiers' ALORS
    					suppressionDossier{obj, FAUX}
    				SINON	SI sClasse = 'ConfigEquipe' ALORS
    						supprimerEquipe{obj}
    					SINON		
    						info{'Aucune suppression associée.' }
    					FIN SI
    				FIN SI
    			SINON
    				info{'Aucune suppression associée.' }
    			FIN SI
    		FIN SI
    	FIN SI
    FIN SI
    SORTIR VRAI
###
'ajouter' 'Menus'

    |obj<Objet> sClasse<Chaine> oNd<Objet> oNdGrp<Objet>|

    oNd ::= 'Noeud'
    oNdGrp ::= 'Noeud'
    obj := editeur.objetSelection
    SI obj = ? ALORS
    	SI att_sSelectionCOMBO = 'Groupes de dossiers' ALORS
    		ajouterGrpDos{}
    	SINON SI att_sSelectionCOMBO = 'Entités' ALORS
    			ajouterEntite{}
    		SINON SI att_sSelectionCOMBO = 'Profils' ALORS
    				ajouterUnProfil{}
    			SINON SI att_sSelectionCOMBO = 'Equipes' ALORS
    					ajouterEquipe{}
    				SINON
    					info{'Aucun ajout associé.'}
    					SORTIR FAUX
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    SINON
    	sClasse := classe{obj} 
    	SI att_sSelectionCOMBO = 'Groupes de dossiers' ET sClasse = 'ConfigGroupe' ALORS
    		ajouterGrpDos{}
    	SINON	SI sClasse = 'ConfigProfil' ALORS
    			SI att_sSelectionCOMBO = 'Profils' ALORS
    				ajouterUnProfil{} 
    			SINON
    				ajouterCollabo{}
    			FIN SI		
    		SINON
    			SI sClasse = 'ConfigEntite' ALORS
    				ajouterEntite{}
    			SINON SI sClasse = 'ConfigEquipe' ALORS
    					ajouterEquipe{}
    				SINON	SI att_sSelectionCOMBO = 'Groupes de dossiers' ET (sClasse = 'ConfigDossier' OU sClasse = 'ConfigProbleme') ALORS
    						oNd := noeud{obj}
    						oNdGrp := oNd.pere
    						editeur.objetSelection := oNdGrp
    						ajouterDossier{oNdGrp.objet}
    					SINON
    						info{'Aucun ajout associé.' }
    					FIN SI
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    FIN SI
    SORTIR VRAI
###
'raffraichir' 'Menus'
    --Création : 21/09/2005 17:10:29 spi-TEZE-S; Modification : 21/09/2005 17:10:38 spi-TEZE-S; 
    
    editeur.majObjets
###
'initialiser' 'Initialisation'
    
    att_oEditeurLogs := ?
    collaborateur ::= ''
    att_sUtilisateurAdministrateur := collaborateur.nom
    --Multisites
    att_iNumeroOrdreEnCours := 0-1
    att_sSiteLocal := nomSiteLocal{}
    att_bACoalanet := aCoalanet{} 
    att_bEstVraiMultisites := FAUX
    
    --Droits
    att_bDroitsEditeurAdmin := (droitsUtilisateur{'Administration'}=2)
    att_bDroitsEquipes := (lireini{racine{}+'\local\bin\coala.ini', 'GI', 'MSDE'} = '1')
    collaboEstSysteme := minuscule{collaborateur.nom}='tni' OU minuscule{collaborateur.nom}='coala' OU minuscule{collaborateur.nom}='systeme' 
    
    SI att_bDroitsEquipes ALORS
    	att_bDroitsEquipes := (droitsUtilisateur{'Facturation'}= 2) OU collaborateur.droitBudgetsParametrage
    FIN SI
    --Couleurs
    att_couleur1 := RVB{0,0,0}
    att_couleur2 := RVB{0,90,0}
    att_couleur3 := RVB{220,150,0}
    --Polices pour propriétés locales
    att_police1Local := 'Arial:14:B'
    att_police2Local := 'Arial:14'
    att_police3Local := 'Arial:14'
    --Polices pour propriétés locales
    att_police1Distant := 'Arial:14:I'
    att_police2Distant := 'Arial:13:I'
    att_police3Distant := 'Arial:13:I'
###
'verifierIni' 'Toutes fonctions'
{a_sQuoi <Chaine>}
    --Création : 30/09/2005 09:26:19 spi-TEZE-S; Modification : 24/10/2013 08:06:57 ylv-PC100383;
    
    |
    sRef<Chaine> s<Chaine> sTmp<Chaine> 
    oLstRef<Objet> oLst<Objet> 
    i<Entier> i2<Entier> iLgRef<Entier>
    |
    SI a_sQuoi <> 'Groupes de dossiers' ET a_sQuoi <> 'Entités' ALORS
    	SORTIR 'Erreur'
    FIN SI
    SI a_sQuoi = 'Groupes de dossiers' ALORS
    	--GROUPES DE DOSSIERS
    	sRef := lireini{racine{}+'\local\bin\coala.ini', 'Configuration', 'DOSSIERS'}
    	SI sRef = ? ALORS sRef :=  '' 	SINON	sRef := minuscule{sRef} 	FIN SI
    	s := lireini{racine{'exe'}+'\'+szRenvNameIniCoalaExe{}, 'Configuration', 'DOSSIERS'}
    	SI s = ? ALORS s:= '' SINON	s := minuscule{s} FIN SI
    	i := 1
    	TANT QUE i<=10 FAIRE
    		sTmp := lireini{racine{}+'\local\bin\coala.ini', 'Configuration', 'DOSSIERS'+i}
    		SI sTmp <> '' ET sTmp <> ? ALORS		sRef += ';' +minuscule{sTmp}	FIN SI
    		sTmp := lireini{racine{'exe'}+'\'+szRenvNameIniCoalaExe{}, 'Configuration', 'DOSSIERS'+i}
    		SI sTmp <> '' ET sTmp <> ? ALORS		s += ';' +minuscule{sTmp}	FIN SI
    		i += 1
    	FIN FAIRE
    SINON SI a_sQuoi = 'Entités' ALORS
    		--ENTITES
    		sTmp := lireini{racine{}+'\local\bin\coala.ini', 'Configuration', 'ENTITES'}
    		SI sTmp <> ? ET  sTmp <>  '' 	ALORS	sRef += ';' +minuscule{sTmp}		FIN SI
    		sTmp := lireini{racine{'exe'}+'\'+szRenvNameIniCoalaExe{}, 'Configuration', 'ENTITES'}
    		SI sTmp <> ? ET sTmp <> '' ALORS	s += ';' +minuscule{sTmp}	FIN SI
    	FIN SI
    FIN SI
    
    --COMPARAISON
    oLst := parserLigneIni{s}
    oLstRef := parserLigneIni{sRef}
    iLgRef := nbElements{oLstRef}
    i := 1
    sTmp := ''
    TANT QUE i<=iLgRef FAIRE
    	sRef := '' + elementDIndice{oLstRef,i}
    	i2 := indiceElement{oLst,sRef} 
    	SI i2 <=0 ALORS
    		sTmp += sRef+  '; '
    	FIN SI
    	i += 1
    FIN FAIRE
    SORTIR sTmp
###
'OBJETS_MENU' 'Toutes fonctions'
	SI (editeur.objetSelection = ?) ALORS
		SORTIR ''
	SINON
		SORTIR 'SELECTION'
	FIN SI
###
'Etats_MENU' 'Toutes fonctions'

	|
		oRafale<Objet>oObjServeurOLE<Objet>oRafaleAssocies<Objet>
		oImportExportDp<Objet>objListeDesDossiers<Objet>
		tmp_cfg <Objet>
	|

	oRafale ::= 'ImportRafale'
	oRafaleAssocies ::= 'ImportRafaleAssocies'
	oObjServeurOLE ::= 'ServeurOLE'
	oImportExportDp ::= 'ImportExportDp'
	objListeDesDossiers ::= 'ListeDesDossiers'

	tmp_cfg := editeur.objetSelection

	SI classe{tmp_cfg} = 'ImportRafale' ALORS
		oRafale := tmp_cfg
		oRafale.CLICKDROIT_MENU{}
	FINSI

	SI classe{tmp_cfg} = 'ImportRafaleAssocies' ALORS
		oRafaleAssocies := tmp_cfg
		oRafaleAssocies.CLICKDROIT_MENU{}
	FINSI

	SI classe{tmp_cfg} = 'ServeurOLE' ALORS
		oObjServeurOLE := tmp_cfg
		oObjServeurOLE.CLICKDROIT_MENU{}
	FINSI

	SI classe{tmp_cfg} = 'ImportExportDp' ALORS
		oImportExportDp := tmp_cfg
		oImportExportDp.CLICKDROIT_MENU{}
	FINSI

	SI classe{tmp_cfg} = 'ListeDesDossiers' ALORS
		objListeDesDossiers := tmp_cfg
		objListeDesDossiers.CLICKDROIT_MENU{}
	FINSI

	SORTIR VRAI
###
'Etats_LISTE' 'Toutes fonctions'

	|
		oLst<Objet>oRafale<Objet>oObjPrincipal<Objet>ndPrincipal<Objet>
		oObjServeurOLE<Objet>
		oImportExportDp<Objet>objListeDesDossiers<Objet>oRafaleAssocies<Objet>
		libListeDesDossiers<Chaine>
	|

	site ::= ''
	oRafale ::= 'ImportRafale'
	oRafaleAssocies ::= 'ImportRafaleAssocies'
	oObjPrincipal ::= 'EditeurAdministration'
	oObjServeurOLE ::= 'ServeurOLE'
	oImportExportDp ::= 'ImportExportDp'
	objListeDesDossiers ::= 'ListeDesDossiers'

	att_sSelectionCOMBO := GetTermeEtatsGE{}
	editeur.listeOnglets := ?
	editeur.listeOnglets2 := ?
	editeur.avecOnglets := VRAI
	editeur.avecDates :=FAUX
	editeur.avecAttributs := VRAI


    oObjPrincipal := creer{'EditeurAdministration'}
    oObjPrincipal !{'DeplacementGroupe'}booleen := FAUX
    oObjPrincipal !{'AjoutCollabo'}booleen := FAUX
    oObjPrincipal !{'AjoutGroupe'}booleen := FAUX
    oObjPrincipal !{'GestionDates'}booleen := FAUX
    ndPrincipal := creerNoeud{GetTermeEtatsGE{}, oObjPrincipal,VRAI}
    
    oLst := creerListe{}
    
    oObjServeurOLE:= creer{'ServeurOLE'}
    oObjServeurOLE!{'Informations document ...'}booleen := FAUX
    oObjServeurOLE!{'Dates ...'}booleen := FAUX
    oObjServeurOLE!{'ServeurOLE'}booleen := FAUX
    oObjServeurOLE!{'ParamètresBalance'}booleen := FAUX
    oObjServeurOLE!{'Temp'}booleen := FAUX
    oObjServeurOLE!{'EspaceExpert'}booleen := FAUX
    oObjServeurOLE!{'GestionCabinet'}booleen := FAUX
    ajouterElement{oLst, creerNoeud{'Serveur OLE',oObjServeurOLE}}
    creerNoeud{'ServeurOLE', 'Serveur OLE', oObjServeurOLE, ndPrincipal}
    
    libListeDesDossiers := 'Liste des Dossiers'
    objListeDesDossiers := creer{'ListeDesDossiers'}
    objListeDesDossiers!{'Informations document ...'}booleen := FAUX
    objListeDesDossiers!{'Dates ...'}booleen := FAUX
    ajouterElement{oLst, creerNoeud{libListeDesDossiers, objListeDesDossiers}}
    creerNoeud{'ListeDesDossiers', libListeDesDossiers, objListeDesDossiers, ndPrincipal}

    --Import/Export Generique
    oImportExportDp := creer{'ImportExportDp'}
    oImportExportDp!{'Informations document ...'}booleen := FAUX
    oImportExportDp!{'Dates ...'}booleen := FAUX
    ajouterElement{oLst, creerNoeud{'Import Export Dossiers Permanent', oImportExportDp}}
    creerNoeud{'Import Export Dossiers Permanent', 'Import Export Dossiers Permanent', oImportExportDp, ndPrincipal}
    
    --Import De dossiers en rafale.
    oRafale := creer{'ImportRafale'}
    oRafale!{'Informations document ...'}booleen := FAUX
    oRafale!{'Dates ...'}booleen := FAUX
    ajouterElement{oLst, creerNoeud{'Import des dossiers en rafale', oRafale}}
    creerNoeud{'Import des dossiers en rafale', 'Import des dossiers en rafale', oRafale, ndPrincipal}    

    --Import des associes en rafale.
    oRafaleAssocies := creer{'ImportRafaleAssocies'}
    oRafaleAssocies!{'Informations document ...'}booleen := FAUX
    oRafaleAssocies!{'Dates ...'}booleen := FAUX
    ajouterElement{oLst, creerNoeud{'Import des associés en rafale', oRafaleAssocies}}
    creerNoeud{'Import des associés en rafale', 'Import des associés en rafale', oRafaleAssocies, ndPrincipal}    

    SORTIR ndPrincipal
###
'Installations_MENU' 'Toutes fonctions'
    
    |
    	CR<Chaine>
    	objAutomateCool<Objet>
    	objAutomates<Objet>objInstallationSqlServer<Objet>objMigrationMsdeSqlServer<Objet>
    	objEspaceExpert<Objet>objLocalisation<Objet>objMobiliteCollabo<Objet>objMaintenanceContactsCollaborateurs<Objet>
    |
    
    CR := '
'
    objAutomateCool ::= 'AutomateCool'
    objAutomates ::= 'Automates'
    objInstallationSqlServer ::= 'InstallationSqlServer'
    objMigrationMsdeSqlServer ::= 'MigrationMsdeSqlServer'
    objEspaceExpert ::= 'EspaceExpert'
    objLocalisation ::= 'PortailLocalisation'
    objMobiliteCollabo ::= 'MobiliteColaborateur'
    objMaintenanceContactsCollaborateurs ::= 'MaintenanceContactsCollaborateurs'
    /*
    SI editeur.libelleSelection = 'Installer la synchronisation' ALORS
    	objAutomateSynchro := editeur.objetSelection
    	objAutomateSynchro .admnistrateurSite_MENU{}
    FINSI
    */
    SI editeur.libelleSelection = 'Installer les services Web' ALORS
    	objAutomateCool := editeur.objetSelection
    	objAutomateCool .admnistrateurSiteWeb_MENU{}
    FINSI
    
    SI editeur.libelleSelection = 'Automates' ALORS
    	objAutomates:= editeur.objetSelection
    	objAutomates.admnistrateurSite_MENU{}
    FINSI
    
    SI editeur.libelleSelection = 'Coala HTTP' ALORS
    	objAutomateCool := editeur.objetSelection
    	objAutomateCool .admnistrateurSiteHttp_MENU{}
    FINSI

    SI editeur.libelleSelection = 'Localisation Version' ALORS
    	objLocalisation := editeur.objetSelection
    	objLocalisation.gestionMenu{}
    FINSI

    SI editeur.libelleSelection = 'Mobilité Collaborateur' ALORS
    	objMobiliteCollabo := editeur.objetSelection
    	objMobiliteCollabo.gestionMenu{}
    FINSI

    SI editeur.libelleSelection = 'Gestion des doublons contacts collaborateurs' ALORS
    	objMaintenanceContactsCollaborateurs := editeur.objetSelection
    	objMaintenanceContactsCollaborateurs.gestionMenu{}
    FINSI 

    SI editeur.libelleSelection = 'Installation SQL Server' ALORS
    	objInstallationSqlServer:= editeur.objetSelection
    	objInstallationSqlServer.admnistrateurSite_MENU{}
    FINSI
    
    SI editeur.libelleSelection = 'Maintenance SQL Server' ALORS
    	objMigrationMsdeSqlServer:= editeur.objetSelection
    	objMigrationMsdeSqlServer.admnistrateurSite_MENU{}
    FINSI

	SI editeur.libelleSelection = 'Maintenance Espace Expert' ALORS
		objEspaceExpert := editeur.objetSelection
		objEspaceExpert.admnistrateurSite_MENU{}
	FINSI

	SI editeur.libelleSelection = 'Politique de gestion des mots de passe' ALORS
		menuHierarchique{'Définir la politique[o]'}
	FINSI

	SI editeur.libelleSelection = 'Base MongoDB' ALORS
		menuHierarchique{'Modifier le mot de passe[o]'}
	FINSI

	SI editeur.libelleSelection = 'Service CoalaHttp' ALORS
		menuHierarchique{'Configuration[o]'}
	FINSI
	SORTIR ''
###
'Définir la politique' 'Toutes fonctions'
	site ::= ''
	SORTIR site.ouvrirEditeurPolitiqueGestionMotsDePasse
###
'Modifier le mot de passe' 'Toutes fonctions'
	site ::= ''
	SORTIR site.ouvrirEditeurModificationMotDePasseMongoDb
###
'Configuration' 'Toutes fonctions'
	--Création : 17/06/2005 17:12:36 spi-TEZE-S; Modification : 05/10/2011 10:34:48 gpa-PC016495; 
	|oFlot<Objet> sCR<Chaine> sElt<Chaine> sCodeCollaboConnecte<Chaine> sLstCollabos<Chaine> connecte<Booléen>collabo_<Chaine> msgCollabos<Chaine>|
	oFlot := flotLecture{contenuRepertoire{racine{}+'\users'}}
	collaborateur ::= ''
	sCR := '
'
	sLstCollabos := ''
	sCodeCollaboConnecte := minuscule{collaborateur.nom}
	collabo_ := '_'+sCodeCollaboConnecte 
	connecte := FAUX
	TANT QUE NON lectureFinie{oFlot} FAIRE
		sElt := minuscule{lire{oFlot,sCR}}
		SI infoFichier{racine{}+'\users\'+sElt} = 'fichier' ALORS
			SI indiceDe{sElt, '.'} = 0 ALORS
				SI sElt <> sCodeCollaboConnecte ET sElt <> collabo_ ALORS
					SI sElt <> 'coala' ET sElt <> 'stad' ET sElt <> 'systeme' ALORS
						SI indiceDe{sElt, '_loc'} = 0 ALORS
							SI indiceDe{sElt, '_ext'} = 0 ALORS
								SI taille{sLstCollabos} > 0 ALORS
									sLstCollabos += ', '
								FIN SI
								sLstCollabos += sElt
								connecte := VRAI
							FIN SI
						FIN SI
					FIN SI
				FIN SI
			FIN SI
		FIN SI
	FIN FAIRE
	msgCollabos := 'Attention ! Les collaborateurs suivant sont connectés :'+sCR + sLstCollabos + sCR + 'Il est vivement conseillé de faire sortir tous les collaborateurs.
Voulez-vous vraiment poursuivre l''activation du protocole Https ?' 

	site ::= ''
	SI NON connecte ALORS 
		SORTIR site.ouvrirEditeurActivationHttps
	SINON
		SI ouiNon{msgCollabos} ALORS
			SORTIR site.ouvrirEditeurActivationHttps			
		FIN SI
	FIN SI
	SORTIR VRAI
###
'construireListePourSaisiesDP' 'Toutes fonctions'
    --Création : 04/11/2008 14:00:15 spi-SOTEZE; Modification : 19/05/2011 09:16:18 ylv-PC15749; 
    |
    lstNoeuds<Objet>  noeudGrp<Objet> noeudDoss<Objet> 
    bMdpOK<Booléen>
    oConfDoss<Objet> oConfGrp<Objet>
    oDossier<Objet>
    sEtatRacine<Chaine>
    sEtatDp<Chaine>
    |
    
    oDossier ::= 'Dossier'
    oConfDoss ::= 'ConfigDossier' 	
    oConfGrp ::= 'ConfigGroupe' 
    lstNoeuds := creerListe{}
    periode.debut := 01.01.94
    cabinet ::= ?
    dossier ::= ?
    
    boiteAttente{'Mise à jour de la liste des groupes de dossiers...'}
    
    
    POUR TOUT groupeDeDossiers TRI nom FAIRE
    	SI groupeDeDossiers.nom <> 'DOSSIERS INACTIFS' ALORS
    		oConfGrp := creer{'ConfigGroupe'} oConfGrp.chargerGroupe{groupeDeDossiers, FAUX}
    		oConfGrp.aAfficher := FAUX
    		---------Liste des Dossiers-------------------------------------------------------
    		noeudGrp:= creerNoeud{groupeDeDossiers.nom,oConfGrp.getLibelle{},oConfGrp, FAUX}
    		POUR TOUT element<Dossier> DE groupeDeDossiers.dossiers TRI nomDossier FAIRE
    			
    			oDossier := retournerDossier{element.CodeDossier,groupeDeDossiers.cheminLogique}
    			bMdpOK:= oDossier.motDePasseOk 
    			
    			sEtatRacine := etatCluster{oDossier.repertoire+'\dossier'}
    			sEtatDp :=  etatCluster{oDossier.repertoire+'\dp\dp'}
    			
    			SI sEtatRacine = 'instable' OU sEtatDp = 'instable' OU sEtatRacine = 'distant' OU sEtatDp = 'distant' ALORS
    				oConfDoss := creer{'ConfigDossier'}
    				oConfDoss.chargerDossierDApresObjet{groupeDeDossiers,oDossier, FAUX}
    				noeudDoss:= creerNoeud{element.CodeDossier+'_'+groupeDeDossiers.nom,oConfDoss.getLibelle{},oConfDoss,noeudGrp}
    			SINON
    				SI bMdpOK ET sEtatRacine <> 'locke' ET sEtatDp <> 'locke' ALORS
    					element.COULEURTEXTE := att_couleur2	element.POLICE := att_police2Local
    					noeudDoss:= creerNoeud{element.CodeDossier+'_'+groupeDeDossiers.nom,element.nomDossier,oDossier,noeudGrp}
    				SINON
    					oConfDoss := creer{'ConfigDossier'}
    					oConfDoss.chargerDossierDApresObjet{groupeDeDossiers,oDossier, FAUX}
    					noeudDoss:= creerNoeud{element.CodeDossier+'_'+groupeDeDossiers.nom,element.nomDossier,oConfDoss,noeudGrp}
    				FIN SI
    			FIN SI
    				
    		FIN FAIRE
    		ajouterElement{lstNoeuds,noeudGrp}
    	FIN SI
    FIN FAIRE
    
    boiteAttente{}
    
    
    SORTIR lstNoeuds
###
'Infos synthétiques des DP_LISTE' 'Toutes fonctions'
    --Création : 20/04/2005 15:20:00 spi-SOPHIE; Modification : 04/11/2008 14:04:03 spi-SOTEZE; 
    att_sSelectionCOMBO := 'Infos synthétiques des DP'
    editeur.listeOnglets := ?
    editeur.listeOnglets2 := ?
    editeur.avecDates := VRAI
    editeur.avecLignes := FAUX
    editeur.avecOnglets := FAUX
    editeur.avecAttributs := VRAI
    SORTIR construireListePourSaisiesDP{}
###
'Saisie en rafale des DP_LISTE' 'Toutes fonctions'
    --Création : 20/04/2005 15:20:00 spi-SOPHIE; Modification : 06/11/2008 09:57:42 spi-SOTEZE; 
    att_sSelectionCOMBO := 'Saisie en rafale des DP'
    editeur.listeOnglets := ?
    editeur.listeOnglets2 := ?
    editeur.avecDates := VRAI
    editeur.avecLignes := FAUX
    editeur.avecOnglets := FAUX
    editeur.avecAttributs := VRAI
    SORTIR construireListePourSaisiesDP{}
###
'NotifierProblemeIni' 'Toutes fonctions'
{a_sEnts <Chaine> a_bEnts <Booléen> a_sGrps <Chaine> a_bGrps <Booléen>}
    --Création : 24/06/2008 10:29:01 spi-SOTEZE; Modification : 26/06/2008 12:20:52 spi-SOTEZE; 
    
    
    SI  a_bEnts ET NON a_bGrps ALORS
    	tracer{'Administrateur', 'Administrateur', 'Ouverture', 'KO', 'Notification que le coala.ini local ne connaît pas les entités : '+a_sEnts,VRAI}
    	info{'ATTENTION : 
Il existe des risques de DOUBLONS si vous souhaitez créer des entités ou des collaborateurs. 
En effet, le client Coala (coala.ini) doit connaître toutes les entités, ce qui n''est pas le cas pour les entités :
'+a_sEnts, 'exclam'}
    	SORTIR VRAI
    FIN SI
    SI NON a_bEnts ET a_bGrps ALORS
    	tracer{'Administrateur', 'Administrateur', 'Ouverture', 'KO', 'Notification que le coala.ini local ne connaît pas les groupes de dossiers : '+a_sGrps,VRAI}
    	info{'ATTENTION : 
Il existe des risques de DOUBLONS si vous souhaitez créer des groupes de dossiers ou des dossiers. 
En effet, le client Coala (coala.ini) doit connaître tous les groupes de dossiers, ce qui n''est pas le cas pour les groupes :
'+a_sGrps, 'exclam'}
    	SORTIR VRAI
    FIN SI
    SI a_bEnts ET a_bGrps ALORS
    	tracer{'Administrateur', 'Administrateur', 'Ouverture', 'KO', 'Le Coala.ini local ne connaît pas tous les groupes et entités : '+a_sGrps+' ; '+a_sEnts,VRAI}
    	info{'ATTENTION : 
Il existe des risques de DOUBLONS si vous souhaitez créer des groupes de dossiers, des dossiers, des entités ou des collaborateurs. 
En effet, le client Coala doit connaître tous les groupes de dossiers et entités. 
Or les groupes de dossiers et/ou entités suivants ne figurent pas dans son coala.ini :
'+a_sGrps+'
'+a_sEnts, 'exclam'}
    	SORTIR VRAI
    FIN SI
    SORTIR FAUX
###
'RemplirCombo' 'Toutes fonctions'

	|
		oLst<Objet> oLstTmp<Objet> i<Entier> sGrps<Chaine> sEnts<Chaine>
	|

	att_bACoalanet := aCoalanet{}
	SI att_bACoalanet ALORS
		att_bEstVraiMultisites := estVraiMultisites{}
	FIN SI

	oLst := creerListe{}
	oLstTmp := creerListe{}
	sGrps := ''
	sEnts := ''
	SI verifierDroitsProfil{'Gestion interne', ''} = 2 OU collaboEstSysteme ALORS --on peut accéder à l'entité si on a les droits en Gestion interne
		sEnts := verifierIni{'Entités'}
		ajouterElement{oLstTmp, 'Entités'}
		--att_sPremiereSelection := 'Entités'
	FIN SI
	SI droitsUtilisateur{'Paramétrage'}=2 ALORS --on peut accéder aux profils si on a les droits en Paramétrage
		--att_sPremiereSelection := 'Profils'
		ajouterElement{oLstTmp, 'Profils'}
	FIN SI
	SI  att_bDroitsEditeurAdmin ALORS
		sGrps := verifierIni{'Groupes de dossiers'}
		ajouterElement{oLstTmp, 'Groupes de dossiers'}
		ajouterElement{oLstTmp, GetTermeEtatsGE{}}
		SI enDev{'BI'} ALORS
			ajouterElement{oLstTmp, 'Stratégie'}
		FIN SI
	FIN SI

	NotifierProblemeIni{sEnts, sEnts <> '', sGrps, sGrps <> ''}
	SI att_bDroitsEquipes ALORS
		ajouterElement{oLstTmp, 'Equipes'}
	FIN SI
	ajouterElement{oLstTmp, 'Saisie en rafale des DP'}
	ajouterElement{oLstTmp, 'Infos synthétiques des DP'}
	ajouterElement{oLstTmp, 'Installations'}   

	SI NON dialogue{100, 400, 'att_sPremiereSelection', 'Par quelle configuration désirez-vous commencer ?'} ALORS
		SORTIR creerListe{}
	SINON
		oLst := creerListe{}
		SI att_sPremiereSelection <> ? ALORS
			ajouterElement{oLst,att_sPremiereSelection}
		FIN SI

		i := 1
		TANT QUE i <= nbElements{oLstTmp} FAIRE
			SI indiceElement{oLst, '' + elementDIndice{oLstTmp,i}} <= 0 ALORS
				ajouterElement{oLst, '' + elementDIndice{oLstTmp,i}}
			FIN SI
			i +=1
		FIN FAIRE
	FIN SI	
		
	att_oLstCOMBO := creerListe{}
	att_oLstCOMBO := oLst

	SORTIR oLst
###
'preOuverture' 'Toutes fonctions'
    --Création : 05/03/2008 15:02:48 fpo-FRPOU; Modification : 06/06/2008 09:25:00 llg-LALGU; 
    |
    	oLstEdAdmin<Objet>
    |
    
    initialiser{}
    oLstEdAdmin := creerListe{}
    oLstEdAdmin := RemplirCombo{}
    SI nbElements{oLstEdAdmin  }>0 ALORS
    	Ouvrir{}
    FINSI
###
'actualiserEntite' 'Toutes fonctions'
    --Création : 03/08/2005 17:20:04 spi-TEZE-S; Modification : 10/11/2008 15:41:33 spi-SOTEZE; 
    |ndEnt<Objet> oEnt<Objet> lstSousNoeudEnt<Objet> ndFils<Objet> iNb<Entier> i<Entier>|
    ndFils ::= 'Noeud'
    ndEnt ::= 'Noeud'  ndEnt := editeur.noeudCourant
    
    lstSousNoeudEnt:= ndEnt.fils
    oEnt ::= 'ConfigEntite'
    iNb := nbElements{lstSousNoeudEnt}
    
    i := 1
    TANT QUE i<=iNb FAIRE
    	ndFils := elementDIndice{lstSousNoeudEnt,1}
    	supprimerNoeud{ndEnt,ndFils}
    	i+=1
    FIN FAIRE
    
    cabinet ::= ?
    POUR TOUT cabinet FAIRE
    	SI majuscule{cabinet.CodeDossier} = majuscule{ndEnt.identifiant} ET majuscule{libelleNoeud{ndEnt}} # majuscule{cabinet.nomDossier+'*'} ALORS
    		SI att_bACoalanet ALORS
    			SI att_bEstVraiMultisites ALORS
    				oEnt := editeur.objetSelection
    				oEnt.chargerStyleEntite{FAUX}
    				libelleNoeud{ndEnt,oEnt.getLibelle{}}
    			FIN SI
    		FIN SI
    		construireSousNoeudsPourEntite{cabinet,editeur.objetSelection,ndEnt}
    		editeur.affichageObjets
    		SORTIR VRAI
    	FIN SI
    FIN FAIRE
    SORTIR VRAI
###
'verifierMatchDansCoalaIni' 'Toutes fonctions'
{a_sContenuIni <Chaine> a_sValeur <Chaine>}
    
    |
    	sCR<Chaine>
    |

    sCR := '
'
    SI a_sContenuIni = ? OU a_sContenuIni = '' ALORS SORTIR VRAI	FIN SI
    SI minuscule{a_sContenuIni} # ('*:'+minuscule{a_sValeur}+'*') ALORS
    	info{'Ce chemin ('+a_sValeur+') est déjà déclaré dans le fichier Coala.ini.'+sCR+'Opération annulée.', 'stop'}
    	SORTIR FAUX
    FIN SI
    SORTIR VRAI
###
'verifierPresenceEtEcrireDansCoalaIni' 'Toutes fonctions'
{a_sFichierIni <Chaine> a_sSection <Chaine> a_sChamp <Chaine> a_sNom <Chaine> a_sValeur <Chaine>}
    --Création : 12/11/2008 14:19:19 spi-SOTEZE; Modification : 13/11/2008 13:57:58 bobble-SOTEZE; 
    -- fonctionne pour des Entités ou des Groupes de dossiers
    
    |s<Chaine>  sCR<Chaine> i<Entier> iFinal<Entier> sFinal<Chaine> sChamp<Chaine> sAEcrire<Chaine>|
    sCR := '
'
    sAEcrire := ';"'+a_sNom+'":'+a_sValeur
    SI a_sChamp = 'ENTITES' ALORS
    	SI a_sFichierIni = '' ALORS
    		s := lireini{a_sSection, a_sChamp}
    	SINON
    		s := lireini{a_sFichierIni,a_sSection, a_sChamp}
    	FIN SI
    	SI NON verifierMatchDansCoalaIni{s,a_sValeur} ALORS		SORTIR FAUX	FIN SI
    	sChamp := a_sChamp
    	sFinal := s 
    SINON
    	iFinal := 0
    	SI a_sFichierIni = '' ALORS
    		s := lireini{a_sSection, a_sChamp}		
    	SINON
    		s := lireini{a_sFichierIni,a_sSection, a_sChamp}
    	FIN SI
    	SI NON verifierMatchDansCoalaIni{s,a_sValeur} ALORS		SORTIR FAUX	FIN SI
    	i := 1
    	sFinal := s
    	TANT QUE i<=10 FAIRE
    		SI a_sFichierIni = '' ALORS
    			s := lireini{a_sSection, a_sChamp+i}		
    		SINON
    			s := lireini{a_sFichierIni,a_sSection, a_sChamp+i}
    		FIN SI
    		SI NON verifierMatchDansCoalaIni{s,a_sValeur} ALORS		SORTIR FAUX	FIN SI
    		SI s<>? ET s<>'' ET s<>'?' ALORS
    			SI taille{s+sAEcrire} >1024 ALORS
    				iFinal := i + 1
    				sFinal := ''
    				SI iFinal > 10 ALORS
    					info{'L''Administrateur de site ne peut ajouter de nouveau groupe de dossiers dans le fichier coala.ini.'+sCR+'Vérifier le nombre maximum de champs DOSSIERSx / la taille maximale de chaque champ.', 'stop'}
    					SORTIR FAUX
    				FIN SI
    			SINON
    				iFinal := i
    				sFinal := s
    			FIN SI
    		FIN SI
    		i += 1
    	FIN FAIRE
    	SI iFinal > 0 ALORS
    		sChamp := a_sChamp+iFinal
    	SINON
    		sChamp := a_sChamp
    	FIN SI
    FIN SI
    
    sAEcrire := sFinal+sAEcrire
    
    SI a_sFichierIni = '' ALORS
    	SI minuscule{repertoireCourant{}} <> minuscule{racine{}+'\local\bin'} ALORS
    		ecrireini{a_sSection,sChamp,sAEcrire}
    	FIN SI
    SINON
    	ecrireini{a_sFichierIni,a_sSection, sChamp,sAEcrire}
    	SI att_bACoalanet ALORS		redemarrerCoalanet{}	FIN SI
    FIN SI
    SORTIR VRAI
###
'verifierRepertoireGroupe' 'Toutes fonctions'
{a_sRepertoireGroupe <Chaine>}
    --Création : 12/11/2008 14:37:19 spi-SOTEZE; Modification : 12/11/2008 14:58:05 spi-SOTEZE; 
    
    SI infoFichier{a_sRepertoireGroupe+'\groupe'}<>'fichier' ALORS
    	SORTIR FAUX
    FIN SI
    SORTIR VRAI
###
'verifierRepertoireEntite' 'Toutes fonctions'
{a_sRepertoireEntite <Chaine>}
    --Création : 12/11/2008 14:37:19 spi-SOTEZE; Modification : 12/11/2008 14:39:00 spi-SOTEZE; 
    
    SI infoFichier{a_sRepertoireEntite+'\dossier'}<>'fichier' ALORS
    	SORTIR FAUX
    FIN SI
    SI infoFichier{a_sRepertoireEntite+'\dp'}<>'répertoire' ALORS
    	SORTIR FAUX
    FIN SI
    SI infoFichier{a_sRepertoireEntite+'\dp\dp'}<>'fichier' ALORS
    	SORTIR FAUX
    FIN SI
    SORTIR VRAI
###
'declarerObjetPreexistant' 'Toutes fonctions'
{a_sQuoi <Chaine>}
    
	|
		sQuoi<Chaine> sRepAAjouter<Chaine>sCR<Chaine> sNom<Chaine> sReponseMs<Chaine> config<Objet>
	|

    sCR := '
'
    SI a_sQuoi = 'Entité' ALORS 
    	sQuoi := 'ENTITES' 
    	sRepAAjouter := donnerNomRepertoire{racine{}+'\ents'}
    SINON	SI a_sQuoi = 'Groupe de Dossiers' ALORS
    		sQuoi := 'DOSSIERS'
    		sRepAAjouter := donnerNomRepertoire{racine{}+'\grps'}
    	SINON
    		SORTIR FAUX
    	FIN SI
    FIN SI
    SI sRepAAjouter = '' OU sRepAAjouter = ? ALORS			SORTIR FAUX		FIN SI
    SI NON (minuscule{sRepAAjouter} # (minuscule{racine{}}+'*')) ALORS
    	info{'L''objet doit se trouver dans l''arborescence Coala.'+sCR+'Opération annulée.', 'stop'}
    	SORTIR FAUX
    FIN SI
    SI sRepAAjouter <> substituerChaine{sRepAAjouter, ' ', ''}  ALORS
    	info{'Le chemin ne doit pas contenir d''espaces : '+sRepAAjouter+sCR+'Opération annulée.', 'stop'}
    	SORTIR FAUX
    FIN SI
    SI att_bACoalanet ALORS
    	SI att_bEstVraiMultisites ALORS
    		SI NON estSitePrimaire{} ALORS
    			boiteAttente{'Demande d''autorisation au site primaire'}
    			sReponseMs :=  commandeCoalaNet{'ECO "'+nomLogique{sRepAAjouter}+'"'}
    			boiteAttente{}
    			SI sReponseMs <> 'connu' ALORS
    				info{'Le site primaire ne connaît pas l''objet que vous souhaitez ajouter, ce qui est interdit.'+sCR+'Opération annulée.', 'stop'}
    				SORTIR FAUX
    			FIN SI
    		FIN SI
    	FIN SI
    FIN SI
    SI sQuoi = 'ENTITES' ALORS
    	SI NON verifierRepertoireEntite{sRepAAjouter} ALORS
    		info{'Le répertoire spécifié n''est pas le répertoire d''une entité valide.', 'stop'} 
    		SORTIR FAUX
    	FIN SI
    	sNom := saisir{'Saisissez le nom (caractères alphanumériques et espaces) de l''entité à déclarer :          ', ''}
    SINON
    	SI NON verifierRepertoireGroupe{sRepAAjouter} ALORS
    		info{'Le répertoire spécifié n''est pas le répertoire d''un groupe de dossiers valide.', 'stop'} 
    		SORTIR FAUX
    	FIN SI
    	sNom := saisir{'Saisissez le nom (caractères alphanumériques et espaces) du groupe de dossiers à déclarer :          ', ''}
    FIN SI
    SI sNom = '' OU sNom = ? ALORS		SORTIR FAUX 	FIN SI	
    SI substituerChaine{sNom , ' ', ''} = '' ALORS	SORTIR FAUX FIN SI
    SI NON estAlphaNumerique{substituerChaine{sNom , ' ', ''}} ALORS
    	info{'Vous ne pouvez saisir que des caractères alphanumériques et des espaces dans le nom de l''objet.'+sCR+'Opération annulée.', 'stop'}
    	SORTIR FAUX
    FIN SI
    SI NON verifierPresenceEtEcrireDansCoalaIni{racine{}+'\local\bin\coala.ini', 'Configuration',sQuoi,sNom ,nomLogique{sRepAAjouter}} ALORS
    	SORTIR FAUX
    FIN SI
    SI minuscule{repertoireCourant{}} <> minuscule{racine{}+'\local\bin'} ALORS
    	SI verifierPresenceEtEcrireDansCoalaIni{'', 'Configuration',sQuoi,sNom ,nomLogique{sRepAAjouter}} ALORS
    		info{'Pour prendre en compte la déclaration de l''objet, vous devrez redémarrer Coala.', 'info'}
    		SORTIR VRAI
    	SINON
    		SORTIR FAUX
    	FIN SI
    FIN SI
    SI att_bACoalanet ALORS
    	SI att_bEstVraiMultisites ALORS
    		SI estSitePrimaire{} ALORS
    			config ::= 'Configuration' config := creer{'Configuration'}
    			config.majSitesDistants{'ajout'+sQuoi, 'PUT', 'R',sRepAAjouter}
    		FIN SI
    	FIN SI
    FIN SI
    SORTIR VRAI
###
'verifierLesDoublons' 'Toutes fonctions'
    --Création : 22/06/2004 15:24:11 DME-DOMINIQUE; Modification : 04/05/2005 15:16:04 spi-SOPHIE; 
    |fus<Objet>|
    
    /*fus ::= 'FusionDossiers'
fus := creer{'FusionDossiers'}*/
    fus ::= 'EditeurFusion'
    fus := creer{'EditeurFusion'}
    fus.ouvrirDoublons{}
###
'supprimerDossierAProbleme' 'Toutes fonctions'
{a_oCfgPbl <Objet>}
    --Création : 05/09/2005 12:02:11 spi-TEZE-S; Modification : 22/09/2005 17:37:32 spi-TEZE-S; 
    
    | oPbl<Objet>|
    oPbl ::= 'ConfigProbleme'	oPbl := a_oCfgPbl
    oPbl.deplacer{}
###
'getEntitePourAjoutCollabo' 'Toutes fonctions'
    --Création : 09/07/2008 17:03:44 spi-SOTEZE; Modification : 10/11/2008 15:31:21 spi-SOTEZE; 
    |tmp_cfgEntite<Objet> 
    tmp_noeudEntite<Objet> tmp_noeudProfil<Objet>   |
    
    tmp_cfgEntite ::= 'ConfigEntite'	 tmp_cfgEntite:=?
    --******recherche de l'entite
    --noeud profil (noeud courant)
    tmp_noeudProfil ::= 'Noeud' tmp_noeudProfil:= editeur.noeudCourant
    --noeud entite (noeud pere du noeud courant)
    tmp_noeudEntite ::= 'Noeud' tmp_noeudEntite := tmp_noeudProfil.pere
    SI tmp_noeudEntite<> ? ALORS
    	tmp_cfgEntite := tmp_noeudEntite.objet
    FIN SI
    SORTIR tmp_cfgEntite
###
'MajEmailNomCompletCollabosEntite' 'Toutes fonctions'
    
	|
		tmp_cfgEntite<Objet>tmp_noeudEntite<Objet>lstRes<Objet>lCpteurLoc<Entier>
		codeCollaboLoc<Chaine>nbEltsColl<Entier>objAdministrateur<Objet>
	|
    
    --******recherche de l'entite
    --noeud entite (noeud pere du noeud courant)
    tmp_noeudEntite ::= 'Noeud'
    tmp_noeudEntite := editeur.noeudCourant
	objAdministrateur ::= 'Administrateur'	
	objAdministrateur := creer{'Administrateur'}
    
    SI tmp_noeudEntite = ? ALORS
    	info{'Entité introuvable'}
    	SORTIR FAUX
    SINON
    	tmp_cfgEntite ::= 'ConfigEntite'
    	tmp_cfgEntite := tmp_noeudEntite.objet
    FIN SI

	lstRes := creerListe{}
        
	cabinet ::= tmp_cfgEntite.code
	collaborateur ::= ?
	POUR TOUT collaborateur FAIRE
		codeCollaboLoc := collaborateur.nom
		ajouterElement{lstRes, codeCollaboLoc}
	FIN FAIRE

	nbEltsColl := nbElements{lstRes}
	SI nbEltsColl > 0 ALORS	
		SI objAdministrateur.ConfirmationMajEmailNomCompletUnCollabo{VRAI} ALORS
			lCpteurLoc := 1
			TANT QUE lCpteurLoc <= nbEltsColl FAIRE
				codeCollaboLoc := chaine{elementDIndice{lstRes, lCpteurLoc}}

				objAdministrateur.MajEmailNomCompletUnCollabo{codeCollaboLoc, FAUX}

				lCpteurLoc += 1
			FIN FAIRE
		FINSI
	SINON
    	info{'Aucun collaborateur n''est présent sur cette entité.'}
    	SORTIR FAUX		
	FINSI
    
    -- On reconstruit tout
    viderListe{tmp_noeudEntite.fils}
    construireSousNoeudsPourEntite{cabinet, tmp_cfgEntite, tmp_noeudEntite}    
    editeur.majObjets
    
    SORTIR VRAI
###
'ajouterCollaboDepuisEntite' 'Toutes fonctions'
    
	|
		tmp_cfgEntite<Objet>tmp_cfgCollabo<Objet>tmp_noeudEntite<Objet>
	|
    
    --******creation du collaborateur dans l'editeur
    tmp_cfgCollabo ::= 'ConfigCollaborateur'
    tmp_cfgCollabo := creer{'ConfigCollaborateur'}
    
    --******recherche de l'entite
    --noeud entite (noeud pere du noeud courant)
    tmp_noeudEntite ::= 'Noeud'
    tmp_noeudEntite := editeur.noeudCourant
    
    SI tmp_noeudEntite = ? ALORS
    	info{'Refus de création de collaborateur sans profil'}
    	SORTIR FAUX
    SINON
    	tmp_cfgEntite ::= 'ConfigEntite'
    	tmp_cfgEntite := tmp_noeudEntite.objet
    	tmp_cfgCollabo.att_sRepertoireEntite := tmp_cfgEntite.repertoire
    	tmp_cfgCollabo.att_sCodeEntite := tmp_cfgEntite.code
    FIN SI
    --********ajout du collabo
    SI NON tmp_cfgCollabo.ajouterCollabo{} ALORS SORTIR FAUX FIN SI
    
    cabinet ::= tmp_cfgEntite.code
    
    --On reconstruit tout parce que coala se mélange entre les noeuds profil qui n'ont pourtant pas le même code...
    
    viderListe{ tmp_noeudEntite.fils}
    construireSousNoeudsPourEntite{cabinet, tmp_cfgEntite, tmp_noeudEntite}
    
    /*POUR TOUT element<Noeud> DE tmp_noeudEntite.fils FAIRE
	element.ouvert := VRAI
	SI element.nom = tmp_noeudProfil.nom ALORS
		tmp_noeudProfil := element
	FIN SI
FIN FAIRE

editeur.affichageObjets
POUR TOUT element<Noeud> DE tmp_noeudProfil.fils FAIRE
	element.ouvert := VRAI
	SI element.nom = tmp_cfgCollabo.code ALORS
		editeur.objetSelection := element
	FIN SI
FIN FAIRE*/
    editeur.majObjets
    
    SORTIR VRAI
###
'ajouterEquipe' 'Toutes fonctions'
    --Création : 21/11/2003 11:40:03 spi-SOPHIE; Modification : 17/11/2004 16:08:37 fpo-FRANCOIS; 
    
    |tmp_oEquipe<Objet>|
    
    tmp_oEquipe ::= 'ConfigEquipe'
    tmp_oEquipe:= creer{'ConfigEquipe'}
    
    SORTIR tmp_oEquipe.ajouterUneEquipe{}
###
'supprimerEquipe' 'Toutes fonctions'
{arg_oEquipe <Objet>}
    --Création : 21/11/2003 11:40:57 spi-SOPHIE; Modification : 01/08/2005 17:25:10 spi-TEZE-S; 
    
    
    
    
    |tmp_oEquipe<Objet>|
    
    tmp_oEquipe ::= 'ConfigEquipe'
    tmp_oEquipe:= arg_oEquipe
    
    tmp_oEquipe.supprimerUneEquipe{}
    
    status{''}
###
'Infos synthétiques des DP_MENU' 'Toutes fonctions'
    --Création : 17/08/2005 13:50:45 spi-TEZE-S; Modification : 05/11/2008 16:53:55 spi-SOTEZE; 
    
    
    |
    sChoix <Chaine>
    oCfgDoss<Objet>
    |
    
    
    oCfgDoss ::= 'ConfigDossier'
    
    SI classe{editeur.objetSelection} = 'ConfigDossier' ALORS
    	oCfgDoss := editeur.objetSelection
    	SI oCfgDoss.AffichageCadenaOF = 0 ALORS
    		sChoix := choix{'Saisir le mot de passe du dossier'}
    		SI sChoix = 'Saisir le mot de passe du dossier' ALORS
    			SORTIR oCfgDoss.deverrouillerPourSaisieDP{FAUX}
    		FIN SI
    	FIN SI
    FIN SI
    
    status{''}
    SORTIR VRAI
###
'specifierFermetureEditeurLogs' 'Toutes fonctions'
    --Création : 23/09/2005 13:19:30 spi-TEZE-S; Modification : 23/09/2005 13:20:15 spi-TEZE-S; 
    
    att_oEditeurLogs := ?
###
'szRenvQryForProduitSansFamille' 'Toutes fonctions'
{szTypeArg <Chaine>}
    --Création : 18/11/2009 16:45:21 ylv-LEVERGE-Y; Modification : 18/11/2009 16:50:33 ylv-LEVERGE-Y; 
    
    
    |
    	objLibrairieGI2<Objet>lNoVersionCodeLoc<Entier>szQry<Chaine>
    |
    
    objLibrairieGI2 ::= 'LibrairieGI2'
    objLibrairieGI2 := creer{'LibrairieGI2'}
    
    lNoVersionCodeLoc := objLibrairieGI2.lNoVersionAppliGRC{}
    SI lNoVersionCodeLoc = 63 ET objLibrairieGI2.alNoSousVersionAppliGRC = 1 ALORS
    	szQry := 'SELECT prdCodeProduit, prdLibelleProduit '
    	szQry := szQry + 'FROM Produits (nolock) WHERE prdCodeFamille IS NULL AND '
    	szQry := szQry + 'prdTypeProduit = '+sql{szTypeArg}
    SINON
    	szQry := 'SELECT prdCodeProduit, prdLibelleProduit '
    	szQry := szQry + 'FROM Produits '
    	szQry := szQry + 'Inner Join CategorieFamille On (CategorieFamille.cafNoEnreg = Produits.prdNoEnregCaf) '
    	szQry := szQry + 'WHERE prdNoEnregFam Is Null And  '
    	szQry := szQry + 'CategorieFamille.cafCodeCategorie = '+sql{szTypeArg} 
    FIN SI
    szQry := szQry + ' ORDER BY prdLibelleProduit'
    
    SORTIR szQry
###
'szRenvQryForProduitAvecFamille' 'Toutes fonctions'
{szTypeArg <Chaine> szNomFamilleArg <Chaine>}
    --Création : 18/11/2009 16:45:21 ylv-LEVERGE-Y; Modification : 18/11/2009 16:48:26 ylv-LEVERGE-Y; 
    
    
    |
    	objLibrairieGI2<Objet>lNoVersionCodeLoc<Entier>szQry<Chaine>
    |
    
    objLibrairieGI2 ::= 'LibrairieGI2'
    objLibrairieGI2 := creer{'LibrairieGI2'}
    
    lNoVersionCodeLoc := objLibrairieGI2.lNoVersionAppliGRC{}
    SI lNoVersionCodeLoc = 63 ET objLibrairieGI2.alNoSousVersionAppliGRC = 1 ALORS
    	szQry := 'SELECT prdCodeProduit, prdLibelleProduit'
    	szQry := szQry + ' FROM Produits (nolock) WHERE prdCodeFamille = ' + sql{szNomFamilleArg}
    	szQry := szQry + ' And prdTypeProduit = '+sql{szTypeArg}
    SINON
    	szQry := 'SELECT prdCodeProduit, prdLibelleProduit'
    	szQry := szQry + ' FROM Produits '
    	szQry := szQry + 'Inner Join CategorieFamille On (CategorieFamille.cafNoEnreg = Produits.prdNoEnregCaf) '
    	szQry := szQry + 'Inner Join Famille On (Famille.famNoEnreg = Produits.prdNoEnregFam) '
    	szQry := szQry + ' WHERE Famille.famCodeFamille = ' + sql{szNomFamilleArg}
    	szQry := szQry + ' And CategorieFamille.cafCodeCategorie = ' + sql{szTypeArg}
    FIN SI
    szQry := szQry + ' ORDER BY prdLibelleProduit'
    
    SORTIR szQry
###
'szRenvQryForFamille' 'Toutes fonctions'
{szTypeArg <Chaine>}
    --Création : 18/11/2009 16:45:21 ylv-LEVERGE-Y; Modification : 18/11/2009 16:46:06 ylv-LEVERGE-Y; 
    
    
    |
    	objLibrairieGI2<Objet>lNoVersionCodeLoc<Entier>szQry<Chaine>
    |
    
    objLibrairieGI2 ::= 'LibrairieGI2'
    objLibrairieGI2 := creer{'LibrairieGI2'}
    
    lNoVersionCodeLoc := objLibrairieGI2.lNoVersionAppliGRC{}
    SI lNoVersionCodeLoc = 63 ET objLibrairieGI2.alNoSousVersionAppliGRC = 1 ALORS
    	szQry := 'Select famCodeFamille From Famille Where famCodeCategorie = '+sql{szTypeArg}
    SINON
    	szQry := 'Select famCodeFamille From Famille '
    	szQry := szQry + 'Inner Join CategorieFamille On (CategorieFamille.cafNoEnreg = Famille.famNoEnregCaf) '
    	szQry := szQry + 'Where CategorieFamille.cafCodeCategorie = '+sql{szTypeArg}
    FIN SI
    szQry := szQry + ' Order By famCodeFamille'
    
    SORTIR szQry
###
'Ouvrir' 'Fonctions'
    --Création : 10/07/2003 17:27:29 DME-DOMINIQUE; Modification : 19/05/2011 09:12:07 ylv-PC15749; 
    |
    	oEd<Objet>
    |
       
    tracer{'Administrateur', 'Administrateur', 'Ouverture', '', 'Ouverture de l''Administrateur',VRAI}
    
    initialiser{}
    
    oEd := creer{'Editeur'}	
    oEd ::= 'Editeur'
    
    ed := oEd
    
    SI att_bEstVraiMultisites ALORS
    	oEd.titre := '{'+att_sSiteLocal+'}   Administration du Multisites par '+att_sUtilisateurAdministrateur
    SINON
    	oEd.titre := 'Administration du site par '+att_sUtilisateurAdministrateur
    FIN SI
    oEd.menu := majMenu{}
    oEd.avecDates := VRAI
    oEd.avecObjets := VRAI
    oEd.avecAttributs := VRAI
    oEd.avecLignes := FAUX
    --oEd.avecPropagation := FAUX
    oEd.avecPropagation := VRAI
    SI att_bDroitsEditeurAdmin ALORS
    	oEd.avecBarreOutil := VRAI
    SINON
    	oEd.avecBarreOutil := FAUX
    FIN SI
    	
    oEd.racine := etat
    oEd.x1 := 30
    
    
    -- Ouverture de la fenêtre
    oEd.ouvrir
###
'Quitter' 'Fonctions'
    --Création : 21/11/2003 15:22:20 spi-SOPHIE; Modification : 04/10/2005 09:32:20 spi-TEZE-S; 
    
    SORTIR FERMETURE{}
###
'ajouterCollabo' 'Fonctions'
    
	|
		tmp_cfgEntite<Objet> tmp_cfgProfil<Objet> tmp_cfgCollabo <Objet> 
		tmp_noeudEntite<Objet> tmp_noeudProfil<Objet>
	|
    
    --******creation du collaborateur dans l'editeur
    tmp_cfgCollabo ::= 'ConfigCollaborateur' tmp_cfgCollabo := creer{'ConfigCollaborateur'}
    
    --******recherche de l'entite
    --noeud profil (noeud courant)
    tmp_noeudProfil ::= 'Noeud' tmp_noeudProfil:= editeur.noeudCourant
    --noeud entite (noeud pere du noeud courant)
    tmp_noeudEntite ::= 'Noeud' tmp_noeudEntite := tmp_noeudProfil.pere
    SI tmp_noeudEntite = ? ALORS
    	info{'Refus de création de collaborateur sans profil'}
    	SORTIR FAUX
    SINON
    	tmp_cfgProfil ::= 'ConfigProfil'	
    	tmp_cfgProfil := tmp_noeudProfil.objet
    	
    	tmp_cfgCollabo.profil := tmp_cfgProfil.nom
    	
    	tmp_cfgEntite ::= 'ConfigEntite'	 	
    	tmp_cfgEntite := tmp_noeudEntite.objet
    	
    	tmp_cfgCollabo.att_sRepertoireEntite := tmp_cfgEntite.repertoire
    	tmp_cfgCollabo.att_sCodeEntite := tmp_cfgEntite.code
    FIN SI
    --********ajout du collabo
    SI NON tmp_cfgCollabo.ajouterCollabo{} ALORS SORTIR FAUX FIN SI
    
    cabinet ::= tmp_cfgEntite.code
    
    --On reconstruit tout parce que coala se mélange entre les noeuds profil qui n'ont pourtant pas le même code...
    viderListe{ tmp_noeudEntite.fils}
    construireSousNoeudsPourEntite{cabinet,tmp_cfgEntite,tmp_noeudEntite}
    POUR TOUT element<Noeud> DE tmp_noeudEntite.fils FAIRE
    	element.ouvert := VRAI
    	SI element.nom =tmp_noeudProfil.nom ALORS
    		tmp_noeudProfil := element
    	FIN SI
    FIN FAIRE
    editeur.affichageObjets
    POUR TOUT element<Noeud> DE tmp_noeudProfil.fils FAIRE
    	element.ouvert := VRAI
    	SI element.nom =tmp_cfgCollabo.code ALORS
    		editeur.objetSelection := element
    	FIN SI
    FIN FAIRE
    /*
collaborateur ::= tmp_cfgCollabo.code
tmp_cfgCollabo.chargerCollabo{collaborateur,tmp_cfgEntite.repertoire,tmp_cfgEntite.code, FAUX}

--nouveau noeud collabo
tmp_noeudCollabo ::= 'Noeud'
tmp_noeudCollabo := construireCollaboEtNoeudCollaboPourNoeudPere{cabinet,collaborateur,ndProf,tmp_cfgEntite}
editeur.affichageObjets
editeur.objetSelection :=tmp_noeudCollabo*/
    SORTIR VRAI
###
'ajouterDossier' 'Fonctions'
{arg_oGrpDoss <Objet>}
    --Création : 21/11/2003 11:37:22 spi-SOPHIE; Modification : 09/07/2008 11:30:15 spi-SOTEZE; 
    
    
    
    |
    tmp_oDoss<Objet>
    tmp_oGrp<Objet>
    tmp_oNdCourant<Objet>
    tmp_oNdDoss<Objet>
    |
    
    tmp_oGrp ::= 'ConfigGroupe'
    tmp_oGrp := arg_oGrpDoss
    
    tmp_oDoss ::= 'ConfigDossier'
    tmp_oDoss := creer{'ConfigDossier'}
    tmp_oDoss.COULEURTEXTE := att_couleur2
    --On aura nécessairement la propriété
    tmp_oDoss.POLICE := att_police2Local
    POUR TOUT groupeDeDossiers FAIRE
    	SI minuscule{groupeDeDossiers.cheminLogique} = minuscule{tmp_oGrp.nomLogique} ALORS
    		SI (tmp_oDoss.ajouterDossier{groupeDeDossiers} <> ?) ALORS
    			tmp_oNdCourant := editeur.noeudCourant
    			tmp_oNdDoss := creerNoeud{tmp_oDoss.code+'_'+tmp_oDoss.nomGroupe,tmp_oDoss.nom,tmp_oDoss,tmp_oNdCourant}
    			editeur.affichageObjets
    			editeur.objetSelection := tmp_oNdDoss
    		FIN SI
    	FIN SI
    FIN FAIRE
    
    status{''}
###
'deplacerDossier' 'Fonctions'
{arg_oDoss <Objet>}
    --Création : 21/11/2003 11:37:29 spi-SOPHIE; Modification : 28/02/2011 11:36:13 llg-PO15890; 
    
    
    
    
    |tmp_oDoss<Objet>|
    
    SI desUtilisateursSontConnectes{} ALORS
    	--SI enDev{'Administrateur'} ALORS
    		SI NON ouiNon{'Voulez passer outre ?'} ALORS
    			info{'Opération annulée...'}
    			SORTIR FAUX
    		FIN SI
    	--SINON
    	--	info{'Opération annulée...'}
    	--	SORTIR FAUX
    	--FIN SI
    FIN SI
    
    tmp_oDoss ::= 'ConfigDossier'
    tmp_oDoss:= arg_oDoss
    
    tmp_oDoss.changerDeGroupe{}
    
    SORTIR VRAI
###
'suppressionDossier' 'Fonctions'
{arg_oDoss <Objet> a_bTableau <Booléen>}
    --Création : 21/11/2003 11:37:40 spi-SOPHIE; Modification : 28/02/2011 11:36:28 llg-PO15890; 
    
    
    
    
    |tmp_oDoss<Objet> tmp_sMsg<Chaine>|
    
    
    SI desUtilisateursSontConnectes{} ALORS
    	--SI NON enDev{'Supprimer Dossier'} ALORS
    	--	info{'Opération annulée...'}
    	--	SORTIR FAUX
    	--SINON
    		SI NON ouiNon{'Souhaitez-vous passer outre ?'} ALORS
    			SORTIR FAUX
    		FIN SI
    	--FIN SI
    FIN SI
    
    tmp_oDoss ::= 'ConfigDossier'
    tmp_oDoss:= arg_oDoss
    
    tmp_sMsg := 'Confirmez vous l''archivage du dossier "'+tmp_oDoss.nom+'" ('+tmp_oDoss.code+') 
dans le groupe de dossiers DOSSIERS INACTIFS ?
'
    SI lireini{racine{}+'\local\bin\coala.ini', 'GI', 'GIEVO'}='1' ALORS
    	tmp_sMsg += 'Il ne sera plus pris en compte dans la Gestion Cabinet.'
    FIN SI
    
    
    SI NON ouiNon{tmp_sMsg} ALORS
    	info{'Archivage annulé.'}
    	status{''}
    	SORTIR FAUX
    FIN SI
    SI tmp_oDoss.suppressionDossier{VRAI,a_bTableau} ALORS
    	info{'Dossier '''+tmp_oDoss.nom+''' archivé avec succès.'}
    FIN SI
    
    status{''}
    SORTIR VRAI
###
'ajouterEntite' 'Fonctions'
    --Création : 21/11/2003 10:49:04 spi-SOPHIE; Modification : 10/11/2008 16:46:48 spi-SOTEZE; 
    |tmp_oCfgEnt<Objet>|
    
    SI NON ouiNon{'Vous vous apprêtez à ajouter une entité.
Souhaitez-vous continuer?'} ALORS
    	info{'Abandon de l''ajout d''une entité...'}
    	SORTIR FAUX
    FIN SI
    
    tmp_oCfgEnt ::= 'ConfigEntite'
    tmp_oCfgEnt := creer{'ConfigEntite'}
    SI NON tmp_oCfgEnt.ajouterUneEntite{} ALORS
    	SORTIR FAUX
    FIN SI	
    
    
    editeur.majObjets
    SORTIR VRAI
###
'supprimerLEntite' 'Fonctions'
{arg_oEnt <Objet>}
    --Création : 21/11/2003 10:50:58 spi-SOPHIE; Modification : 28/02/2011 11:36:43 llg-PO15890; 
    
    
    
    
    |tmp_oEnt<Objet>|
    
    SI desUtilisateursSontConnectes{} ALORS
    	--SI NON enDev{'Supprimer Entite'} ALORS
    	--	info{'Opération annulée...'}
    	--	SORTIR FAUX
    	--SINON
    		SI NON ouiNon{'Souhaitez-vous passer outre ?'} ALORS
    			SORTIR FAUX
    		FIN SI
    	--FIN SI
    FIN SI
    
    tmp_oEnt ::= 'ConfigEntite'
    tmp_oEnt:= arg_oEnt
    
    tmp_oEnt.supprimerLEntite{}
    
    status{''}
    SORTIR VRAI
###
'archiverDossiers' 'Fonctions'
{a_oGrp <Objet>}
    --Archivage de dossiers
    
	|
		oGrp<Objet>
	|

    --SI desUtilisateursSontConnectes{} ALORS
    --	info{'Opération annulée...'}
    --	SORTIR FAUX
    --FIN SI
    
    oGrp ::= 'ConfigGroupe'
    oGrp := a_oGrp
    
    oGrp.archiverDossiers{}
    SORTIR VRAI
###
'ajouterGrpDos' 'Fonctions'
    --Création : 21/11/2003 11:38:48 spi-SOPHIE; Modification : 09/07/2008 11:29:48 spi-SOTEZE; 
    
    
    |tmp_oGrp<Objet> tmp_bOK<Booléen>|
    
    SI NON ouiNon{'Vous vous apprêtez à ajouter un groupe de dossiers.
Souhaitez-vous continuer?'} ALORS
    	info{'Abandon de l''ajout d''un groupe de dossiers'}
    	SORTIR FAUX
    FIN SI
    
    tmp_oGrp ::= 'ConfigGroupe'
    tmp_oGrp := creer{'ConfigGroupe'}
    
    
    tmp_bOK := tmp_oGrp.creerGrpDoss{VRAI} 
    
    SI tmp_bOK ALORS
    
    	redemarrerCoalanet{}
    
    	editeur.majObjets
    	editeur.libelleSelection := tmp_oGrp.nom
    	editeur.majAttributs
    FIN SI 
    
    
    SORTIR tmp_bOK
###
'supprimerGrpDos' 'Fonctions'
{arg_oGrp <Objet>}
    --Création : 26/11/2003 10:17:28 spi-SOPHIE; Modification : 28/02/2011 11:37:46 llg-PO15890; 
    
    
    
    |tmp_oGrp<Objet> |
    
    SI desUtilisateursSontConnectes{} ALORS
    	--SI NON enDev{'Supprimer GRP'} ALORS
    	--	info{'Opération annulée...'}
    	--	SORTIR FAUX
    	--SINON
    		SI NON ouiNon{'Souhaitez-vous passer outre ?'} ALORS
    			SORTIR FAUX
    		FIN SI
    	--FIN SI
    FIN SI
    SI NON ouiNon{'Souhaitez-vous vraiment supprimer ce groupe de dossiers ?'} ALORS
    	SORTIR FAUX
    FIN SI
    tmp_oGrp := arg_oGrp
    tmp_oGrp ::= 'ConfigGroupe'
    SI tmp_oGrp.supprimerGrp{} ALORS
    	editeur.objetSelection := ?
    	editeur.majAttributs
    	status{''}
    	SORTIR VRAI
    FIN SI
    
    status{''}
    SORTIR FAUX
###
'ajouterUnProfil' 'Fonctions'
    
	|
		tmp_oProfil<Objet>
	|
    
	tmp_oProfil ::= 'ConfigProfil'
	tmp_oProfil := creer{'ConfigProfil'}

	tmp_oProfil.ajouterUnProfil{}
###
'supprimerLeProfil' 'Fonctions'
{arg_oProfil <Objet>}
    
	|
		tmp_oProfil<Objet>
	|
    
	tmp_oProfil ::= 'ConfigProfil'
	tmp_oProfil := arg_oProfil

	tmp_oProfil.supprimerLeProfil{}

	status{''}
###
'FERMETURE' 'Evénements'

	|
		objLibrairieGI2<Objet>objTraitementsGI2<Objet>
		cheminGroupe<Chaine>etatGroupe<Chaine> lockeurGroupe<Chaine>
	|

	objLibrairieGI2 ::= 'LibrairieGI2'
	objLibrairieGI2 := creer{'LibrairieGI2'}
	objTraitementsGI2 ::= 'TraitementsGI2'
	objTraitementsGI2 := creer{'TraitementsGI2'}
    
	objLibrairieGI2.fermetureApresModifCollabos{VRAI, -- bProcessusNonLibreArg<Booléen>
												VRAI} -- bAppelFromPlanificateurArg<Booléen>
	objLibrairieGI2.exporterProfilsNet{FAUX, -- bProcessusNonLibreArg<Booléen>
									VRAI} -- bAppelFromPlanificateurArg<Booléen>    
	objLibrairieGI2.exporterMiseAJourDossiers{FAUX, -- bDialogMessAsyncArg<Booléen>
												VRAI} -- bAppelFromPlanificateurArg<Booléen>}
	objTraitementsGI2.SupprFilesTemporaireWithArg{VRAI, -- bAffNoMsgErrVBNetArg<Booléen>
												FAUX} -- bAppelFromPlanificateurArg<Booléen>

    tracer{'Administrateur', 'Administrateur', 'Fermeture', '', 'Fermeture de l''Administrateur',VRAI}
    
    ---***
    
    SI att_oEditeurLogs <> ? ALORS
    	att_oEditeurLogs ::= 'EditeurLogs' att_oEditeurLogs.Quitter{}
    FIN SI

   	SI att_sSelectionCOMBO = 'Entités' ALORS
	    collaborateur ::= ''

   		POUR TOUT groupeDeDossiers FAIRE
   			cheminGroupe := groupeDeDossiers.cheminPhysique + '\groupe'
	   		etatGroupe := etatCluster{cheminGroupe} 
	   		lockeurGroupe := locker{cheminGroupe}
   			SI etatGroupe <> 'libre' ET majuscule{collaborateur.nom} = majuscule{lockeurGroupe} ALORS
   				groupeDeDossiers.locke := FAUX
	   		FINSI
    	FIN FAIRE
   	FIN SI

    SORTIR VRAI
###
'Installations_LISTE' 'Evénements'
    --Modification : 24/12/2014 06:59:13 aaa-PC100383; 
    
    |
    	oObjCool<Objet> oObjInstallSQL<Objet>
    	oObjMigrationMsdeSqlServer<Objet>oObjEspaceExpert<Objet>oObjAutomates<Objet>
    	oObjPrincipal<Objet>ndPrincipal<Objet>ndSousNoeud<Objet>
    	serveurCoalaNet<Chaine>oObjLocalisation<Objet>objMobiliteCollabo<Objet>
    	oObjMaintenanceContacts<Objet>oObjMaintenanceContactsColl<Objet>ndMaintenance<Objet>
    	authenticationSageId<Booléen>
    |

	collaborateur ::= ''

	site ::= ''
	authenticationSageId := site.isAuthenticationSageId
    
    oObjPrincipal ::= 'EditeurAdministration'
   
    oObjCool ::= 'AutomateCool'
    oObjAutomates ::= 'Automates'
    oObjInstallSQL ::= 'InstallationSqlServer'
    oObjMigrationMsdeSqlServer ::= 'MigrationMsdeSqlServer'
    oObjEspaceExpert ::= 'EspaceExpert'
    oObjLocalisation ::= 'PortailLocalisation'
    objMobiliteCollabo ::= 'MobiliteColaborateur'
    oObjMaintenanceContacts ::= 'MaintenanceContacts'
    oObjMaintenanceContactsColl ::= 'MaintenanceContactsCollaborateurs'

    att_sSelectionCOMBO := 'Installations'
    editeur.listeOnglets := ?
    editeur.listeOnglets2 := ?
    editeur.avecOnglets := VRAI
    editeur.avecDates :=FAUX
    editeur.avecAttributs := VRAI
    
    oObjPrincipal := creer{'EditeurAdministration'}
    oObjPrincipal !{'DeplacementGroupe'}booleen := FAUX
    oObjPrincipal !{'AjoutCollabo'}booleen := FAUX
    oObjPrincipal !{'AjoutGroupe'}booleen := FAUX
    oObjPrincipal !{'GestionDates'}booleen := FAUX
    ndPrincipal := creerNoeud{'Installations',oObjPrincipal,VRAI}
    
    
    oObjCool := creer{'AutomateCool'}
    oObjCool!{'Informations document ...'}booleen := FAUX
    oObjCool!{'Dates ...'}booleen := FAUX
    creerNoeud{'AutomateCool', 'Installer les services Web', oObjCool, ndPrincipal}
    
    oObjAutomates := creer{'Automates'}
    oObjAutomates!{'Informations document ...'}booleen := FAUX
    oObjAutomates!{'Dates ...'}booleen := FAUX
    creerNoeud{'Automates', 'Automates',oObjAutomates, ndPrincipal}
    
    serveurCoalaNet := lireini{racine{}+'\local\bin\coala.ini', 'Configuration', 'SERVEUR'} 
    SI (sysInfo{'OS'} > '2000' OU serveurCoalaNet = ? OU serveurCoalaNet = '') ALORS
    	oObjCool := creer{'AutomateCool'}
    	oObjCool!{'Informations document ...'}booleen := FAUX
    	oObjCool!{'Dates ...'}booleen := FAUX
    	creerNoeud{'CoalaHttp', 'Coala HTTP', oObjCool, ndPrincipal}
    FINSI
    
    oObjLocalisation := creer{'PortailLocalisation'}
    ndSousNoeud :=  creerNoeud{'PortailLocalisation', 'Localisation Version', oObjLocalisation, ndPrincipal, VRAI}
    
    objMobiliteCollabo := creer{'MobiliteColaborateur'}
    ndSousNoeud :=  creerNoeud{'MobiliteColaborateur', 'Mobilité Collaborateur', objMobiliteCollabo, ndPrincipal, VRAI}
    
    oObjEspaceExpert := creer{'EspaceExpert'}
    oObjEspaceExpert!{'Informations document ...'}booleen := FAUX
    oObjEspaceExpert!{'Dates ...'}booleen := FAUX
    creerNoeud{'EspaceExpert', 'Maintenance Espace Expert', oObjEspaceExpert, ndPrincipal}

    oObjPrincipal := creer{'EditeurAdministration'}
    oObjPrincipal !{'DeplacementGroupe'}booleen := FAUX
    oObjPrincipal !{'AjoutCollabo'}booleen := FAUX
    oObjPrincipal !{'AjoutGroupe'}booleen := FAUX
    oObjPrincipal !{'GestionDates'}booleen := FAUX

    SI collaborateur.administrateurCabinet OU bDroitsSuperUtilisateur{FAUX, FAUX, FAUX} ALORS
    	ndSousNoeud :=  creerNoeud{'Administration', 'Administration', oObjPrincipal, ndPrincipal, VRAI}

	    oObjInstallSQL := creer{'InstallationSqlServer'}
    	oObjInstallSQL !{'Informations document ...'}booleen := FAUX
	    oObjInstallSQL !{'Dates ...'}booleen := FAUX
    	oObjInstallSQL !{'ChoixMoteur'}booleen := FAUX
	    creerNoeud{'InstallationSqlServer', 'Installation SQL Server', oObjInstallSQL, ndSousNoeud}
   
		oObjMigrationMsdeSqlServer := creer{'MigrationMsdeSqlServer'}
    	oObjMigrationMsdeSqlServer !{'Informations document ...'}booleen := FAUX
    	oObjMigrationMsdeSqlServer !{'Dates ...'}booleen := FAUX
    	creerNoeud{'MigrationMsdeSqlServer', 'Maintenance SQL Server', oObjMigrationMsdeSqlServer, ndSousNoeud}

		SI authenticationSageId = FAUX ALORS
			creerNoeud{'PolitiqueDeGestionDesMotsDePasse', 'Politique de gestion des mots de passe', oObjPrincipal, ndSousNoeud}
		FINSI

    	SI lireini{racine{}+'\local\bin\coala.ini', 'Configuration', 'MONGODBAUTH'} = '1' ALORS
    		creerNoeud{'BaseDeDonneesMongo', 'Base MongoDB', oObjPrincipal, ndSousNoeud}    
    	FINSI
	    creerNoeud{'CoalaHttp', 'Service CoalaHttp', oObjPrincipal, ndSousNoeud} 

        oObjMaintenanceContacts := creer{'MaintenanceContacts'}
        oObjMaintenanceContacts !{'Informations document ...'}booleen := FAUX
        oObjMaintenanceContacts !{'Dates ...'}booleen := FAUX
        ndMaintenance := creerNoeud{'MaintenanceContacts', 'Maintenance sur les contacts', oObjMaintenanceContacts, ndSousNoeud}

        oObjMaintenanceContactsColl := creer{'MaintenanceContactsCollaborateurs'}
        oObjMaintenanceContactsColl !{'Informations document ...'}booleen := FAUX
        oObjMaintenanceContactsColl !{'Dates ...'}booleen := FAUX
        creerNoeud{'MaintenanceContactsCollaborateurs', 'Gestion des doublons contacts collaborateurs', oObjMaintenanceContactsColl, ndMaintenance}
	FINSI
    SORTIR ndPrincipal
###
'COMBO' 'Evénements'
    --Création : 10/07/2003 17:26:44 DME-DOMINIQUE; Modification : 05/03/2008 14:59:41 fpo-FRPOU; 
    
    --SORTIR RemplirCombo{}
    SORTIR att_oLstCOMBO
###
'Entités_LISTE' 'Evénements'

    att_sSelectionCOMBO := 'Entités'
    editeur.listeOnglets := ?
    editeur.listeOnglets2 := ?
    editeur.avecOnglets := VRAI
    editeur.avecLignes := FAUX
    editeur.avecDates := VRAI
    
    SORTIR construireListeEntites{}
###
'Entités_MENU' 'Evénements'
    --Création : 22/07/2003 11:12:28 sav-SOPHIE2; Modification : 06/01/2015 16:47:46 TNI-PC100391; 
    |tmp_cfg <Objet> tmp_noeud<Objet>|
    
    
    SI (verifierDroitsProfil{'Gestion interne', ''} <> 2) ALORS	
    	collaborateur ::= ''
    	SI majuscule{collaborateur.profil} <> 'SYSTEME' ALORS
    		SORTIR FAUX 
    	FIN SI
    FIN SI
    
    ed ::= 'Editeur'	ed := editeur{VRAI}
    tmp_cfg ::= 'Configuration' tmp_cfg := ed.objetSelection

    tmp_noeud := ed.noeudCourant
    SI classe{tmp_cfg} = 'ConfigEntite' ALORS
    	menu_Entite{}
    SINON
    	SI classe{tmp_cfg} = 'ConfigProfil' ALORS
    		menu_ProfilCollabo{}
    	SINON
    		SI classe{tmp_cfg} = 'ConfigCollaborateur' ALORS
    			menu_Collaborateur{}
    		SINON
    			menu_Entite{}
    		FIN SI
    	FIN SI
    FIN SI
    
    SORTIR VRAI
###
'Equipes_LISTE' 'Evénements'

	|
		tmp_cfg<Objet>tmp_oEqu<Objet>tmp_oEquComp<Objet>tmp_lstNomEquipe<Objet>
		tmp_lstNoEnregEquipe<Objet>tmp_lstArchiveEquipe<Objet>tmp_dicoEquipe<Objet>tmp_lstGuidEquipe<Objet>
		i<Entier>
		szQry<Chaine>req<Objet>szQry2<Chaine>req2<Objet>lNoVersionCodeLoc<Entier>
		lNoEnregEquLoc<Entier>szEquNomEquipeLoc<Chaine>szCodeEntiteLoc<Chaine>szCodeCollaboLoc<Chaine>
		iEquEquipeArchiveeLoc<Entier>
		szNomCollLoc<Chaine>szQualificationLoc<Chaine>szRoleLoc<Chaine>szGuidEquipeLoc<Chaine>objLibrairieGI2<Objet>
	|

	objLibrairieGI2 ::= 'LibrairieGI2'
	objLibrairieGI2 := creer{'LibrairieGI2'}

	objLibrairieGI2.fermetureApresModifCollabos{VRAI, -- bProcessusNonLibreArg<Booléen>
												VRAI} -- bAppelFromPlanificateurArg<Booléen>

    att_sSelectionCOMBO := 'Equipes'
    editeur.listeOnglets := ?
    editeur.listeOnglets2 := ?
    
    editeur.avecLignes := FAUX
    editeur.avecAttributs := VRAI
    editeur.avecDates := VRAI
    
    tmp_cfg ::= 'Configuration'
    tmp_cfg := creer{'Configuration'}
    
    tmp_lstNomEquipe := creerListe{}
    tmp_lstGuidEquipe := creerListe{}
    tmp_lstNoEnregEquipe := creerListe{}
    tmp_lstArchiveEquipe := creerListe{}
    tmp_dicoEquipe := creerDictionnaire{}
    
    bOuvrirBase{FAUX, FAUX}
    
    szQry := 'SELECT equNoEnreg, equEquipeArchivee, equNomEquipe, equGuid FROM Equipe (nolock) '
    szQry := szQry + ' Order By equNomEquipe'
    req := selectionSql{szQry, 'lNoEnregEquLoc', 'iEquEquipeArchiveeLoc', 'szEquNomEquipeLoc', 'szGuidEquipeLoc'}
    
    TANT QUE lireSql{req} FAIRE
    	ajouterElement{tmp_lstNoEnregEquipe, ''+lNoEnregEquLoc}
    	ajouterElement{tmp_lstArchiveEquipe, ''+iEquEquipeArchiveeLoc}
    	ajouterElement{tmp_lstGuidEquipe, szGuidEquipeLoc}
    	cleValeur{tmp_dicoEquipe, ''+lNoEnregEquLoc,szEquNomEquipeLoc}	
    FIN FAIRE
    liberationSql{req}
    
    i:=1
    TANT QUE i<=nbElements{tmp_lstNoEnregEquipe} FAIRE
    	lNoEnregEquLoc := entier{chaine{elementDIndice{tmp_lstNoEnregEquipe, i}}}
    	iEquEquipeArchiveeLoc := entier{chaine{elementDIndice{tmp_lstArchiveEquipe, i}}}
    	szGuidEquipeLoc := chaine{elementDIndice{tmp_lstGuidEquipe, i}}
    	szEquNomEquipeLoc := chaine{cleValeur{tmp_dicoEquipe, ''+lNoEnregEquLoc}}
    
    	tmp_oEqu ::= 'ConfigEquipe'
    	tmp_oEqu := creer{'ConfigEquipe'}
    	tmp_oEqu.alNoEnregEquipe := lNoEnregEquLoc
    	tmp_oEqu.aszGuidEquipe := szGuidEquipeLoc
    	tmp_oEqu.aszEquNomEquipe := szEquNomEquipeLoc
    	tmp_oEqu.nom := szEquNomEquipeLoc
    	tmp_oEqu.abEquipeArchivee := bRenvBooleanWithInteger{iEquEquipeArchiveeLoc}
    	tmp_oEqu.aEuModif := FAUX
    	tmp_oEqu.lstCollaborateurs := creerListe{}
    
    	szQry2 := 'SELECT Dos01.dosCodeDossier, Col01.colCodeCollabo, Col01.colNomCollabo, '
    	szQry2 := szQry2 + ' Prd01.prdLibelleProduit, Eqc01.eqcRole '
    	szQry2 := szQry2 + ' FROM Collaborateurs As Col01 '
    	szQry2 := szQry2 + ' LEFT JOIN Dossiers As Dos01 ON (Dos01.dosNoEnreg = Col01.colNoEnregDos) '
    	lNoVersionCodeLoc := objLibrairieGI2.lNoVersionAppliGRC{}
    	SI lNoVersionCodeLoc = 63 ET objLibrairieGI2.alNoSousVersionAppliGRC = 1 ALORS
    		szQry2 := szQry2 + ' Left Join Produits As Prd01 On (Col01.colCodeQualification = Prd01.prdCodeProduit And '
    		szQry2 := szQry2 + ' Col01.colTypeQualification = Prd01.prdTypeProduit) '
    		szQry2 := szQry2 + ' Inner Join EquipeCollabo AS Eqc01 On (Eqc01.eqcCodeCollabo = Col01.colCodeCollabo)'
    	SINON
    		szQry2 := szQry2 + ' Left Join Produits As Prd01 On (Col01.colNoEnregPrd = Prd01.prdNoEnreg) '
    		szQry2 := szQry2 + ' Inner Join EquipeCollabo AS Eqc01 On (Eqc01.eqcNoEnregCol = Col01.colNoEnreg)'
    	FIN SI
    	szQry2 := szQry2 + ' WHERE Eqc01.eqcNoEnregEqu = '+sql{lNoEnregEquLoc}
    	szQry2 := szQry2 + ' ORDER BY Col01.colCodeCollabo, Col01.colNomCollabo, Prd01.prdLibelleProduit'
    	req2 := selectionSql{szQry2, 'szCodeEntiteLoc', 'szCodeCollaboLoc', 'szNomCollLoc', 'szQualificationLoc', 'szRoleLoc'}
    
    	TANT QUE lireSql{req2} FAIRE
    		tmp_oEquComp ::= 'ConfigEquipe'
    		tmp_oEquComp := creer{'ConfigEquipe'}
    		tmp_oEquComp.alNoEnregEquipe := lNoEnregEquLoc
    		tmp_oEquComp.aszGuidEquipe := szGuidEquipeLoc
    		tmp_oEquComp.aszEquNomEquipe := szEquNomEquipeLoc
    		tmp_oEquComp.abEquipeArchivee := bRenvBooleanWithInteger{iEquEquipeArchiveeLoc}
    		tmp_oEquComp.code := szCodeCollaboLoc
    		tmp_oEquComp.nomComplet := szNomCollLoc
    		tmp_oEquComp.qualification := szQualificationLoc
    		tmp_oEquComp.entite := szCodeEntiteLoc	
    		
    		SI szRoleLoc = 'Responsable' ALORS
    			tmp_oEqu.responsable := tmp_oEquComp.nomComplet
    			tmp_oEquComp.responsable := tmp_oEquComp.nomComplet
    		SINON
    			tmp_oEquComp.responsable := ''
    		FINSI
    
    		tmp_oEquComp.parent := tmp_oEqu
    		ajouterElement{tmp_oEqu.lstCollaborateurs,tmp_oEquComp}
    
    	FIN FAIRE
    	liberationSql{req2}
    	ajouterElement{tmp_lstNomEquipe,tmp_oEqu}
    	i += 1
    FIN FAIRE
    
    SORTIR tmp_lstNomEquipe
###
'Profils_LISTE' 'Evénements'
    --Création : 01/08/2003 09:51:45 sav-SOPHIE2; Modification : 27/10/2008 11:35:00 spi-SOTEZE; 
    |
    tmp_lst <Objet>
    tmp_oCfg <Objet>
    tmp_bExists<Booléen>
    |
    att_sSelectionCOMBO := 'Profils'
    editeur.listeOnglets := ?
    editeur.listeOnglets2 := ?
    editeur.avecLignes := FAUX
    editeur.avecDates := FAUX
    editeur.avecAttributs := VRAI
    
    
    tmp_lst := creerListe{}
    tmp_oCfg ::= 'ConfigProfil'
    
    tmp_bExists := FAUX
    
    POUR TOUT profilUtilisateur FAIRE 
    	tmp_oCfg := creer{'ConfigProfil'}
    	tmp_oCfg.aAfficher := VRAI
    	tmp_oCfg.nom := profilUtilisateur.nom
    	ajouterElement{tmp_lst,tmp_oCfg}
    FIN FAIRE
    
    
    --majMenu{'Profils'}
    
    SORTIR tmp_lst
###
'Groupes de dossiers_LISTE' 'Evénements'
    --Modification : 21/01/2011 10:17:44 ylv-PC15749; 
    editeur.listeOnglets := ?
    editeur.listeOnglets2 := ?
    editeur.avecOnglets := VRAI
    editeur.avecLignes := FAUX
    editeur.avecDates := FAUX
    editeur.avecAttributs := VRAI
    
    
    att_sSelectionCOMBO := 'Groupes de dossiers'
    SI att_oLstNoeudsGroupes=? ALORS
    	detruireFichier{szRenvPathFileNameLogDossiers{}}
    	SORTIR construireListeGroupes{}
    FIN SI
    
    SORTIR att_oLstNoeudsGroupes
###
'DATES_CLICKDROIT' 'Evénements'
    --Création : 18/11/2004 10:09:26 spi-SOPHIE; Modification : 07/10/2008 09:14:53 spi-SOTEZE; 
    
    
    |
    ch<Chaine>str<Chaine>
    |
    
    
    ed ::= 'Editeur'
    str := 'Période précédente
Période suivante'
    
    ch := choix{str}
    SI taille{ch} = 0 ALORS SORTIR FAUX FINSI
    
    SI ch = 'Période précédente' ALORS att_anneeCourante := date{1,1, annee{att_anneeCourante}-1} FINSI
    SI ch = 'Période suivante' ALORS att_anneeCourante :=date{1,1, annee{att_anneeCourante}+1}  FINSI
    ed.majDates
    editeur.affichageObjets
    SORTIR VRAI
###
'DATES' 'Evénements'
    --Création : 18/11/2004 10:01:41 spi-SOPHIE; Modification : 17/11/2008 11:02:55 spi-SOTEZE; 
    
    |lst<Objet> i <Entier>   an <Entier> edi<Objet>|
    SI att_anneeCourante = ? ALORS
    	att_anneeCourante := aujourdhui {}
    	periode.fin := date { 31, 1, annee {att_anneeCourante }}
    	edi ::= 'Editeur'
    	edi := editeur{VRAI}
    	edi.moisCourant := aujourdhui{} 
    FINSI
    
    lst := creerListe{}
    an := annee{att_anneeCourante}
    i := 1
    
    TANT QUE i <= 12 FAIRE
    	att_dte := date{1, i, an}
    	ajouterElement{lst, date{'MM/AA', att_dte}}
    	i += 1
    FIN FAIRE
    
    
    SORTIR lst
###
'ACTIVATION' 'Evénements'
    --Création : 18/05/2005 10:40:08 spi-SOPHIE; Modification : 17/11/2008 11:02:56 spi-SOTEZE; 
    
    -- fpo-> sur les conseils de DME, besoin de tester le booléen bloquerMajAttributs afin de contourner le bug dans la 
    --	gestion d''équipes  qui mettait 2 fois le même collaborateur lors de l'ajout dans la liste, du à la primitive choix 
    --	et l''appel de la fonction ACTIVATION.
    --	voir dans ConfigEquipe, fonction ajoutCollaborateur{} à l''appel de choix{}
    SI bloquerMajAttributs  ALORS SORTIR FAUX FINSI
    
    editeur.majAttributs
    SORTIR VRAI
###
'att_sPremiereSelection_LISTE' 'Evénements'
    --Création : 16/01/2008 15:24:03 spi-SOTEZE; Modification : 18/12/2014 08:05:38 aaa-PC100383; 
    |
    	sApp<Chaine>szCR<Chaine>
    |
    
    szCR := '
'
    att_bACoalanet := aCoalanet{}
    SI att_bACoalanet ALORS	
    	att_bEstVraiMultisites := estVraiMultisites{} 
    FIN SI
    
    sApp:=''
    SI verifierDroitsProfil{'Gestion interne', ''} = 2 OU collaboEstSysteme ALORS --on peut accéder à l'entité si on a les droits en Gestion interne
    	sApp :='Entités' + szCR
    FIN SI
    
    SI droitsUtilisateur{'Paramétrage'}=2 ALORS --on peut accéder aux profils si on a les droits en Paramétrage
    	sApp += 'Profils' + szCR
    FIN SI
    
    SI  att_bDroitsEditeurAdmin ALORS	
    	sApp+='Groupes de dossiers' + szCR
    	sApp += GetTermeEtatsGE{} + szCR
    FIN SI
    
    sApp += 'Saisie en rafale des DP
Infos synthétiques des DP
Installations'+szCR
        
    SI att_bDroitsEquipes ALORS	
    	sApp+='Equipes' + szCR
    FIN SI
    
    SORTIR sApp
###
'BARREOUTIL' 'Evénements'
    --Création : 19/09/2003 12:10:18 llg-LAURENT; Modification : 09/07/2008 17:01:23 spi-SOTEZE; 
    ---*** Evenement qui permet de gerer une barre d'outil dans les nouveaux editeurs
    ---*** Chaque .bmp doit etre present dans le repertoire de coala\bin\images...
    ---*** Sur chaque ligne (icone), la syntaxe est la suivante : image tabulation fonction appellee tabulation info bulle affichee
    |
    	CR<Chaine>ws<Objet>
    |
    
    CR := '
'
    ws := flotEcriture{}
    
    
    ws	+=	'reload.bmp	raffraichir	--Mise à jour'
    ws	+=	CR
    ws	+=	'--'
    SI NON att_bACoalanet ALORS
    	ws	+=	CR
    	ws 	+= 	'aj.bmp	ajouter	--Créer un nouveau...'
    	ws	+=	CR
    	ws	+=	'suppr.bmp	supprimer	--Supprimer...'
    	ws	+=	CR
    	ws	+=	'--'
    FIN SI
    ws	+=	CR
    ws	+=	'log.bmp	choisirQuoiPuisOuvrirLog	--Visionner les traces...'
    ws	+=	CR
    
    SORTIR contenuFlot{ws}
###
'construireNoeudDossierPourNoeudGroupe' 'Noeuds'
{arg_oDossier <Objet> arg_sCodeDossier <Chaine> arg_oGroupe <Objet> arg_oNdGrp <Objet>}
    --Création : 02/05/2005 16:41:33 spi-SOPHIE; Modification : 17/11/2008 11:02:53 spi-SOTEZE; 
    
    |
    	oCfgDos<Objet> oGroupe<Objet> oCfgPbl<Objet>
    	oDossier<Objet>
    |
    oDossier ::= 'Dossier'				oDossier := arg_oDossier
    oGroupe ::= 'GroupeDeDossiers'			oGroupe := arg_oGroupe
    oCfgPbl ::= 'ConfigProbleme'			oCfgDos ::= 'ConfigDossier' 
    SI oDossier = ? ALORS
    	oCfgPbl := creer{'ConfigProbleme'}
    	oCfgPbl.nom := arg_sCodeDossier
    	oCfgPbl.code := arg_sCodeDossier
    	oCfgPbl.nomGroupe := oGroupe.nom
    	oCfgPbl.repertoire := oGroupe.cheminPhysique+'\'+arg_sCodeDossier
    	SI infoFichier{oCfgPbl.repertoire+'\dossier'} = 'fichier' ALORS
    		oCfgPbl.sEtat := 'Dossier Coala illisible'
    		oCfgPbl.image := 'cavapas.bmp'
    		oCfgPbl.COULEURTEXTE := RVB{255,0,0}
    	SINON
    		oCfgPbl.sEtat := 'Dossier non valide'
    		oCfgPbl.image := 'unpbl.bmp'
    		oCfgPbl.COULEURTEXTE := att_couleur3
    	FIN SI
    	oCfgPbl.sProprio := '-'
    	oCfgPbl.POLICE := att_police2Distant
    	SORTIR creerNoeud{oCfgPbl.code+'_'+oCfgPbl.nomGroupe,oCfgPbl.nom,oCfgPbl,arg_oNdGrp}
    FIN SI
    oCfgDos := creer{'ConfigDossier'}
    oCfgDos.chargerDossierDApresCode{oGroupe ,arg_sCodeDossier, FAUX}
    /*SI att_bACoalanet ALORS
	SI att_bEstVraiMultisites ALORS
		--La propriété est distante : il faut le montrer clairement, et il n'est pas question de permettre la suppression du dossier
		SI  oCfgDos.sProprio <> att_sSiteLocal ALORS
			--oCfgDos.POLICE := att_police2Distant
			--oCfgDos.image = 'distant.bmp'
			SORTIR creerNoeud{oCfgDos.code+'_'+oCfgDos.nomGroupe,oCfgDos.nom+'  [ '+oCfgDos.sProprio+' ]',oCfgDos,arg_oNdGrp}
		FIN SI
	FIN SI
FIN SI*/
    SORTIR creerNoeud{oCfgDos.code+'_'+oCfgDos.nomGroupe,oCfgDos.getLibelle{},oCfgDos,arg_oNdGrp}
###
'construireSousNoeudPourGroupe' 'Noeuds'
{a_oGrpDoss <Objet> a_oNdGrp <Objet>}
    --Création : 08/07/2008 15:05:30 spi-SOTEZE; Modification : 21/01/2011 10:30:00 ylv-PC15749; 
    
    |sCR<Chaine> oGrpDoss<Objet> sCode<Chaine> oFlot<Objet> oDoss<Objet> oNdGrp<Objet>|
    oNdGrp ::= 'Noeud'			oNdGrp := a_oNdGrp
    oGrpDoss ::= 'GroupeDeDossiers'	oGrpDoss := a_oGrpDoss
    oDoss ::= 'Dossier'
    sCR := '
'
    oFlot := flotLecture{contenuRepertoire{oGrpDoss.cheminPhysique}}
    TANT QUE NON lectureFinie{oFlot} FAIRE
    	sCode := lire{oFlot,sCR}
    	SI infoFichier{oGrpDoss.cheminPhysique+'\'+sCode} = 'répertoire' ALORS
    		oDoss := retournerDossier{minuscule{sCode},oGrpDoss.cheminLogique}
    		erreur{} --pas la peine d'afficher les erreurs.... c'est géré dans le construireNoeudDossierPourNoeudGroupe
    		construireNoeudDossierPourNoeudGroupe{oDoss,sCode,oGrpDoss,oNdGrp}
    	FIN SI
    FIN FAIRE
###
'construireNoeudPourGroupe' 'Noeuds'
{arg_oGrpDoss <Objet>bAppelRapideArg<Booléen>}
    --Création : 02/05/2005 16:30:37 spi-SOPHIE; Modification : 27/03/2015 10:57:28 aaa-PC100383; 
    
    
    |
    	oConfigGroupe<Objet>oGrpDoss<Objet>oDoss<Objet>oNdGrp<Objet>oFlot<Objet> 
    	sCR<Chaine>sCode<Chaine>sNom<Chaine>oCfgDos<Objet>bAppelRapideArgLoc<Booléen>
    |
    
    oCfgDos ::= 'ConfigDossier'
    oDoss ::= 'Dossier'
    oGrpDoss ::= 'GroupeDeDossiers'
    oGrpDoss := arg_oGrpDoss
    oConfigGroupe ::= 'ConfigGroupe' 
    oConfigGroupe := creer{'ConfigGroupe'}     
    oConfigGroupe.chargerGroupe{arg_oGrpDoss, FAUX}
    oConfigGroupe.aAfficher := VRAI
    bAppelRapideArgLoc := bAppelRapideArg
    ---------Liste des Dossiers-------------------------------------------------------
    
    oNdGrp:= creerNoeud{oConfigGroupe.nom,oConfigGroupe.getLibelle{},oConfigGroupe, FAUX}
    oConfigGroupe.att_oLstDossASuppr := creerListe{}
    
    sCR := '
'
    SI bAppelRapideArgLoc = VRAI ALORS
    	SI infoFichier{oGrpDoss.cheminPhysique+'\_dossiers_'} = 'fichier' ALORS
    		oFlot := flotLecture{retournerContenuFichier{oGrpDoss.cheminPhysique+'\_dossiers_'}}
    		TANT QUE NON lectureFinie{oFlot} FAIRE
    			sCode := lire{oFlot, '('}
    			lire{oFlot, ') '}
    			lire{oFlot, 2}
    			sNom := lire{oFlot, sCR}
    			oCfgDos := creer{'ConfigDossier'}
    			oCfgDos.code := sCode
    			oCfgDos.nom := sNom
    			oCfgDos.nomGroupe := oGrpDoss.nom
    			creerNoeud{sCode+'_'+oCfgDos.nomGroupe, sNom, oCfgDos, oNdGrp}
    		FIN FAIRE
    	FINSI
    SINON
    	oFlot := flotLecture{contenuRepertoire{oGrpDoss.cheminPhysique}}
	    TANT QUE NON lectureFinie{oFlot} FAIRE
    		sCode := lire{oFlot,sCR}
    		logDossiersTxt{sCode}
    		SI infoFichier{oGrpDoss.cheminPhysique+'\'+sCode} = 'répertoire' ALORS
	    		oDoss := retournerDossier{minuscule{sCode},oGrpDoss.cheminLogique}
    			erreur{} --pas la peine d'afficher les erreurs.... c'est géré dans le construireNoeudDossierPourNoeudGroupe
    			construireNoeudDossierPourNoeudGroupe{oDoss,sCode,oGrpDoss,oNdGrp}
    		FIN SI
    	FIN FAIRE
    FIN SI
    
    SORTIR oNdGrp
###
'construireListeGroupes' 'Noeuds'

	|
		bRechargerLoc<Booléen>bAppelRapideLoc<Booléen>szMess<Chaine>
		szCR<Chaine>bEnDevLoc<Booléen>bDroitSuperUtilisateurLoc<Booléen>
	|

    bRechargerLoc := FAUX
    bAppelRapideLoc := FAUX
    szCR := '
'
   bEnDevLoc := enDev{'AdmSite'}
   bDroitSuperUtilisateurLoc := bDroitsSuperUtilisateur{FAUX, FAUX, FAUX}

    -- YLV ; 27/03/2015 ; ajout de cette condition
    SI bEnDevLoc = VRAI OU bDroitSuperUtilisateurLoc = VRAI ALORS
       szMess := 'Voulez-vous reconstruire la liste des dossiers ?' + szCR
       szMess := szMess + '(regénérer les fichiers _dossiers_)'
       SI bDialogMess{VRAI, szMess} = VRAI ALORS
               bRechargerLoc := VRAI
       FIN SI

       szMess := 'Voulez-vous construire la liste des dossiers via une lecture des fichiers _dossiers_ ?' + szCR
       szMess := szMess + 'Le traitement sera plus rapide, mais le statut des dossiers sera moins précis.' + szCR
       szMess := szMess + 'Les dossiers illisibles ne seront pas affichés.'
       SI bDialogMess{VRAI, szMess} = VRAI ALORS
               bAppelRapideLoc := VRAI
       FIN SI
    FIN SI

    SI bRechargerLoc = VRAI ALORS
       boiteAttente{'Reconstruction de la liste des groupes de dossiers...'}
       rechargerLaListeDesDossiers{}
       boiteAttente{}
    FINSI
    boiteAttente{'Mise à jour de la liste des groupes de dossiers...'}
    
    att_oLstNoeudsGroupes := creerListe{}
    periode.debut := 01.01.94
    cabinet ::= ?
    dossier ::= ?
    
    POUR TOUT groupeDeDossiers TRI nom FAIRE
    	ajouterElement{att_oLstNoeudsGroupes,construireNoeudPourGroupe{groupeDeDossiers, bAppelRapideLoc}}
    FIN FAIRE
    
    boiteAttente{}
    
    SORTIR att_oLstNoeudsGroupes
###
'construireCollaboEtNoeudCollaboPourNoeudPere' 'Noeuds'
{arg_oCabinet <Objet> arg_oCollabo <Objet> arg_oNdPere <Objet> arg_oCfgEntite <Objet>}
    --Création : 02/05/2005 16:04:47 spi-SOPHIE; Modification : 13/11/2008 14:58:49 bobble-SOTEZE; 
    
    
    |
    	oCollabo<Objet> oCabinet<Objet> oCfgCollabo<Objet> oCfgEntite<Objet>
    |
    
    oCollabo ::= 'Collaborateur'	
    oCollabo := arg_oCollabo
    oCabinet ::= 'Cabinet'
    oCabinet := arg_oCabinet
    oCfgEntite ::= 'ConfigEntite'
    oCfgEntite := arg_oCfgEntite
    oCfgCollabo ::= 'ConfigCollaborateur'
    oCfgCollabo := creer{'ConfigCollaborateur'}
    
    oCfgCollabo.chargerCollabo{oCollabo,oCabinet.CodeDossier,oCabinet.repertoire, FAUX}
    
    SORTIR construireNoeudCollaboPourNoeudPere{arg_oCabinet,arg_oCollabo,arg_oNdPere,arg_oCfgEntite,oCfgCollabo}
###
'construireNoeudCollaboPourNoeudPere' 'Noeuds'
{arg_oCabinet <Objet> arg_oCollabo <Objet> arg_oNdPere <Objet> arg_oCfgEntite <Objet> arg_oCfgCollabo <Objet>}
    --Création : 02/05/2005 16:04:47 spi-SOPHIE; Modification : 05/11/2008 14:40:21 spi-SOTEZE; 
    
    
    |oCollabo<Objet> oCabinet<Objet> oCfgCollabo<Objet> oCfgEntite<Objet>|
    
    oCollabo ::= 'Collaborateur'
    oCollabo := arg_oCollabo
    oCabinet ::= 'Cabinet'
    oCabinet := arg_oCabinet
    oCfgEntite ::= 'ConfigEntite'
    oCfgEntite := arg_oCfgEntite
    oCfgCollabo ::= 'ConfigCollaborateur'
    oCfgCollabo := arg_oCfgCollabo
    
    ajouterElement{oCfgEntite.att_oLstCollaborateurs,oCfgCollabo}
    SORTIR creerNoeud{oCfgCollabo.code,oCfgCollabo.getLibelle{},oCfgCollabo,arg_oNdPere}
###
'construireNoeudProfilPourNoeudEntite' 'Noeuds'
{arg_oCabinet <Objet> arg_oCfgEntite <Objet> arg_sProfil <Chaine> arg_oNdEnt <Objet>}
    --Création : 02/05/2005 15:58:30 spi-SOPHIE; Modification : 29/03/2011 07:31:33 ylv-PC15749; 
    
    
    |
    	oCabinet<Objet> oCfgProfil<Objet> oNdProfil<Objet> oNdColl<Objet> oCfgColl<Objet>
    	bAddCollaboLoc<Booléen>
    |
    
    oCabinet ::= 'Cabinet'
    oCabinet := arg_oCabinet
    oCfgProfil ::= 'ConfigProfil'
    oCfgProfil := creer{'ConfigProfil'}
    
    oCfgProfil.nom := arg_sProfil 
    oCfgProfil.aAfficher := FAUX
    oCfgProfil.COULEURTEXTE := att_couleur2
    
    SI att_bACoalanet ALORS
    	SI att_bEstVraiMultisites ALORS
    		SI att_sSiteLocal <> nomSitePrimaire{} ALORS
    			oCfgProfil.POLICE := att_police2Distant
    			oCfgProfil.image := 'distant.bmp'
    			oNdProfil:= creerNoeud{oCabinet.nomDossier+'_'+oCfgProfil.nom,oCfgProfil.nom+' ['+nomSitePrimaire{}+']',oCfgProfil,arg_oNdEnt, FAUX}
    		FIN SI
    	FIN SI	
    FIN SI
    SI oNdProfil = ? ALORS
    	oNdProfil:= creerNoeud{oCabinet.nomDossier+'_'+oCfgProfil.nom,oCfgProfil.nom,oCfgProfil,arg_oNdEnt, FAUX}
    	oCfgProfil.POLICE := att_police2Local
    FIN SI
    
    oNdColl ::= 'Noeud'
    oCfgColl ::= 'ConfigCollaborateur'
    
    POUR TOUT element<Collaborateur> DE oCabinet.collaborateurs FAIRE
    	bAddCollaboLoc := VRAI
    	SI (minuscule{arg_sProfil} <> minuscule{element.profil}) ALORS
    		bAddCollaboLoc := FAUX
    	FIN SI
    	SI oCabinet.abMasquerCollabosArchivesAdmSiteCabinet = VRAI ALORS
    		SI element.estBloque = VRAI ALORS
    			bAddCollaboLoc := FAUX
    		FIN SI
    	FIN SI
    
    	SI bAddCollaboLoc = VRAI ALORS
    		oNdColl := construireCollaboEtNoeudCollaboPourNoeudPere{oCabinet,element,oNdProfil,arg_oCfgEntite}
    		SI NON att_bACoalanet ALORS
    			SI oCfgProfil.image = ? ALORS
    				oCfgColl := oNdColl.objet
    				SI oCfgColl.image <> ?  ALORS
    					SI NON oCfgColl.att_bEstBloque ALORS
    						oCfgProfil.image := oCfgColl.image
    					FIN SI
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    FIN FAIRE
    
    SORTIR oNdProfil
###
'construireSousNoeudsPourEntite' 'Noeuds'
{a_oCabinet <Objet> a_oConfigEnt <Objet> a_oNdEnt <Objet>}
    --Création : 03/08/2005 17:22:50 spi-TEZE-S; Modification : 29/03/2011 07:31:17 ylv-PC15749; 
    
    
    |
    	oCabinet<Objet> oCfgEnt<Objet> oNd<Objet> oCfgProf<Objet> oCfgColl<Objet>
    	bAddCollaboLoc<Booléen>
    |
    
    oCabinet ::= 'Cabinet'
    oCabinet := a_oCabinet
    cabinet ::= oCabinet.CodeDossier
    oCfgEnt ::= 'ConfigEntite'
    oCfgEnt:= a_oConfigEnt
    oNd ::= 'Noeud'
    oCfgProf ::= 'ConfigProfil'
    oCfgColl ::= 'ConfigCollaborateur'
    
    POUR TOUT profilUtilisateur FAIRE
    	oNd := construireNoeudProfilPourNoeudEntite{a_oCabinet,a_oConfigEnt,profilUtilisateur.nom,a_oNdEnt}
    	SI NON att_bACoalanet ALORS
    		SI oCfgEnt.image = ? ALORS
    			oCfgProf := oNd.objet
    			SI oCfgProf.image <> ? ALORS
    				oCfgEnt.image := oCfgProf.image
    			FIN SI
    		FIN SI
    	FIN SI
    FIN FAIRE
    
    POUR TOUT element<Collaborateur> DE cabinet.collaborateurs FAIRE
    	bAddCollaboLoc := VRAI
    	SI szRenvoieTesterChaineVide{element.profil} <> '' ALORS
    		bAddCollaboLoc := FAUX
    	FIN SI
    	SI cabinet.abMasquerCollabosArchivesAdmSiteCabinet = VRAI ALORS
    		SI element.estBloque = VRAI ALORS
    			bAddCollaboLoc := FAUX
    		FIN SI
    	FIN SI
    
    	SI bAddCollaboLoc = VRAI ALORS
    		oNd := construireCollaboEtNoeudCollaboPourNoeudPere{a_oCabinet,element,a_oNdEnt,a_oConfigEnt}
    		SI NON att_bACoalanet ALORS
    			SI oCfgEnt.image = ? ALORS
    				oCfgColl := oNd.objet
    				SI oCfgColl.image <> ?  ALORS
    					SI NON oCfgColl.att_bEstBloque ALORS
    						oCfgEnt.image := oCfgColl.image
    					FIN SI
    				FIN SI
    			FIN SI
    		FIN SI
    	FIN SI
    FIN FAIRE
###
'construireNoeudPourEntite' 'Noeuds'
{arg_oCabinet <Objet>}
    --Création : 02/05/2005 15:44:49 spi-SOPHIE; Modification : 13/11/2008 14:58:49 bobble-SOTEZE; 
    
    
    |oCabinet<Objet> oConfigEnt<Objet> oNdEnt<Objet> |
    
    oCabinet ::= 'Cabinet'
    oCabinet := arg_oCabinet
    
    oConfigEnt ::= 'ConfigEntite'
    oConfigEnt := creer{'ConfigEntite'}
    oConfigEnt.chargerEntite{oCabinet.CodeDossier, FAUX}
    oConfigEnt.aAfficher := VRAI
    oConfigEnt.att_oLstCollaborateurs := creerListe{}
    oConfigEnt.att_oLstCollabosASuppr := creerListe{}
    
    oNdEnt := creerNoeud{oCabinet.nomDossier,oConfigEnt.getLibelle{},oConfigEnt, FAUX}
    
    construireSousNoeudsPourEntite{oCabinet,oConfigEnt,oNdEnt}
    
    SORTIR oNdEnt
###
'construireListeEntites' 'Noeuds'
    --Création : 06/04/2005 11:47:22 spi-SOPHIE; Modification : 24/07/2008 09:18:40 spi-SOTEZE; 
    |
    	oLstNoeuds<Objet>
    |
    
    boiteAttente{'Mise à jour de la liste des entités...'}
    
    oLstNoeuds := creerListe{}
    
    POUR TOUT cabinet FAIRE
    	ajouterElement{oLstNoeuds,construireNoeudPourEntite{cabinet}}
    FIN FAIRE
    
    boiteAttente{}
    
    
    SORTIR oLstNoeuds
###
'nombreDAdministrateurs' 'Noeuds'
{unEntier<Entier>}
	|
		nb<Entier>
	|
	/*
		Valeur pour unEntier, argument de la fonction : 0 administrateurCabinet, 1 gestionDesAdministrateurs, 2 gestionMotDePasse
	*/
	debug{'Appel de EditeurAdministration - nombreDAdministrateurs - '+unEntier}
	nb := 0
	cabinet ::= ?
	collaborateur ::= ?
	POUR TOUT cabinet FAIRE
		POUR TOUT collaborateur FAIRE
			SI collaborateur.administrateurCabinet ET NON collaborateur.estBloque ET unEntier = 0 ALORS
				nb += 1
			FIN SI
			SI collaborateur.droitGestionAdministrateurs ET NON collaborateur.estBloque ET unEntier = 1 ALORS
				nb += 1
			FIN SI
			SI collaborateur.droitGestionMotDePasse ET NON collaborateur.estBloque ET unEntier = 2 ALORS
				nb += 1
			FIN SI
		FIN FAIRE
	FIN FAIRE
	SORTIR nb
###
'S'activer en tant qu'administrateur du cabinet' 'Noeuds'

	|
		objEd<Objet> rol <Objet> pers <Objet>
	|

	objEd ::= 'Editeur'
    collaborateur ::= ''
    rol ::= 'Role'
    pers ::= 'Personne'

	SI collaborateur <> ? ALORS
		SI ok{'Confirmez-vous votre activation en tant qu''administrateur du cabinet?'} ALORS
			message{'Le collaborateur '+collaborateur.nom+' est activé en tant qu'' administrateur du cabinet...'}
			collaborateur.administrateurCabinet := VRAI
			collaborateur.droitGestionMotDePasse := VRAI
			collaborateur.droitGestionAdministrateurs := VRAI

		    pers := GetPersonneCollaboratorParCode{collaborateur.nom}
		    SI pers <> ? ALORS
				rol := GetRoleCollaborator{collaborateur.nom, pers._id}
			FINSI

			SI rol <> ? ALORS
    			rol.adminDuSiteAdministrateurCabinet := VRAI
    			rol.adminDuSiteDroitGestionAdministrateurs := VRAI
    			rol.adminDuSiteDroitGestionMotDePasse := VRAI
    			commit{rol}    	
    		FINSI

		FIN SI
	FIN SI

	--Reafficher le menu pour ne pas reactiver un autre collaborateur
	objEd := editeur{VRAI}
	objEd.menu := majMenu{}

	SORTIR VRAI

###
'GetPersonneCollaboratorParCode' 'Noeuds'
{codeCollabora<Chaine>}
   
	|
		collaborator<Objet>
		col<Objet>
		url<Chaine>
	|

	col := ?
	url := '/mongo/Personne?where=lower(codeCollaborateur) eq '''+minuscule{codeCollabora}+''''
	collaborator:= lireObjet{url}

	SI collaborator = ? ALORS SORTIR col FIN SI
	SI nbElements{collaborator} <> 1 ALORS
		SI nbElements{collaborator} > 1 ALORS
			message{'Plusieurs collaborateurs "contact" Génération Experts avec le code '+codeCollabora}
		SINON
			message{'Aucun collaborateur "contact" Génération Experts avec le code '+codeCollabora}
		FIN SI
		SORTIR col
	FIN SI
	SORTIR collaborator.[1]
###
'GetRoleCollaborator' 'Noeuds'
{codeCollabora<Chaine>anIdPers<Chaine>}
    
	|
		roleCollaborator<Objet> rol<Objet> anId<Chaine> url<Chaine>
	|

	rol := ?
	anId := anIdPers
	url := '/mongo/Role?where=type eq ''Collaborateur'' and personne eq ''/mongo/Personne/'+anId+''''
	roleCollaborator:= lireObjet{url}

	SI roleCollaborator= ? ALORS SORTIR rol FIN SI
	SI nbElements{roleCollaborator} <> 1 ALORS
		SI nbElements{roleCollaborator} > 1 ALORS
			message{'Collaborateur ' + codeCollabora + '. Plusieurs rôles Collaborateur "contact" dans Génération Experts avec l''id '+anId}
		SINON
			message{'Collaborateur ' + codeCollabora + '. Aucun rôle Collaborateur "contact" dans Génération Experts avec l''id '+anId}
		FIN SI
		SORTIR rol
	FIN SI
	SORTIR roleCollaborator.[1]
###
'Mettre à jour les droits sur les encours financier' 'Noeuds'
	SORTIR majDroitsEnCoursFinancier{FAUX}
###
'Mettre à jour les droits sur les encours financier en silencieux' 'Noeuds'
	SORTIR majDroitsEnCoursFinancier{VRAI}
###
'majDroitsEnCoursFinancier' 'Noeuds'
{silent<Booléen>}
	|
		val<Booléen>toExecute<Booléen>
	|
	toExecute := FAUX
	SI silent ALORS 
		toExecute := VRAI
	SINON
		SI ouiNon{'Etes-vous sûr de vouloir mettre à jour les droits des encours financier depuis le fichier EESettings.xml vers les profils'} ALORS
			toExecute := VRAI
		FIN SI
	FIN SI
	SI toExecute ALORS
		POUR TOUT profilUtilisateur FAIRE 
			val := getValueFromEESettings{profilUtilisateur.nom}
			debug{'Profil : '+profilUtilisateur.nom+' - '+val}
			profilUtilisateur!{'Gestion Dossier Encours financier'}booleen := val
    	FIN FAIRE
		debug{'Fin de la mise à jour des droits'}
	FIN SI
	SORTIR VRAI	
###
'getValueFromEESettings' 'Noeuds'
{profil<Chaine>}
	|
		fic<Chaine>rs<Objet>val<Chaine>searchProfil<Chaine>searchVisible<Chaine>
	|

	searchProfil := '<Id>'+profil+'ModuleEncoursFinanciers</Id>'
	searchVisible := '<Visible>'

	fic := racine{}+'\local\users\eesettings.xml'
	SI infoFichier{fic} = 'fichier' ALORS
		rs := flotLecture{retournerContenuFichier{fic, 'UTF-8'}}
		lire{rs, searchProfil}
		lire{rs, taille{searchProfil}}
		lire{rs, searchVisible}
		lire{rs, taille{searchVisible}}
		val := lire{rs, '<'}
		debug{'Search : '+searchProfil+' - '+val}
		SI val = 'true' ALORS 
			SORTIR VRAI
		SINON
			SORTIR FAUX
		FIN SI
	FIN SI
	SORTIR FAUX	--Par defaut aucun droit
###
'updateToEESettings' 'Noeuds'
{profil<Chaine>val<Booléen>}
	|
		fic<Chaine>rs<Chaine>val2<Chaine>
		rs2<Objet>ws<Objet>search<Chaine>lig<Chaine>CR<Chaine>
	|


  	SI val ALORS
		val2 := 'true'
	SINON
		val2 := 'false'
	FIN SI

  	CR := '
'
	search := '    <Id>'+profil+'ModuleEncoursFinanciers</Id>'
	fic := racine{}+'\local\users\eesettings.xml'
	SI infoFichier{fic} = 'fichier' ALORS
		rs := retournerContenuFichier{fic, 'UTF-8'}
		rs2 := flotLecture{rs}
		ws := flotEcriture{}
		TANT QUE NON lectureFinie{rs2} FAIRE
			lig := lire{rs2, CR}
			SI lig = search ALORS
				ecrire{ws, lig}
				ecrire{ws, CR+lire{rs2, CR}+CR+'    <Visible>'+val2+'</Visible>'+CR}
				lire{rs2, CR}
			SINON
				ecrire{ws, lig+CR}
			FIN SI
		FIN FAIRE
		fichierEcriture{fic, 2, 'UTF-8'}
		ecrire{contenuFlot{ws}}
		fichierEcriture{''}
	FIN SI
	SORTIR VRAI	
###
'GetTermeEtatsGE' 'Noeuds'
	SORTIR 'Etats'
###
