

<include file="/CosmoTools/Function/Math.fct.xpx" option="once">
<include file="/CosmoTools/Function/Color.fct.xpx" option="once">
<include file="/CosmoTools/Function/Json.fct.xpx" option="once">
<include file="/CosmoTools/Function/Array.fct.xpx" option="once">
<include file="/CosmoTools/Function/String.fct.xpx" option="once">
<include file="/CosmoTools/Function/CosmoTools.fct.xpx" option="once">


<!-- vvv   Initialisation des constantes et des variables globales   vvv 
	Description :
		Initialise des constantes pour les valeurs par défaut des composants bootstrap
		utilisés par CosmoDisplay.js
	-->
<scope name="cosmoDisplay">
	<!-- COSMO_DISPLAY_TOAST_ANIMATION : Apply a CSS fade transition to the toast. (default: true) -->
	<cond expr="$COSMO_DISPLAY_TOAST_ANIMATION$=0 OR $COSMO_DISPLAY_TOAST_ANIMATION$=false">
		<set global="COSMO_DISPLAY_TOAST_ANIMATION" value="data-bs-animation=\"false\"">
	<else>
		<set global="COSMO_DISPLAY_TOAST_ANIMATION" value="">
	</cond>
	<!-- COSMO_DISPLAY_TOAST_AUTOHIDE : Automatically hide the toast after the delay. (default: true) -->
	<!-- COSMO_DISPLAY_TOAST_DELAY : Delay in milliseconds before hiding the toast. (default: 5000) -->
	<cond expr="$COSMO_DISPLAY_TOAST_AUTOHIDE$=0 OR $COSMO_DISPLAY_TOAST_AUTOHIDE$=false">
		<set global="COSMO_DISPLAY_TOAST_AUTOHIDE" value="data-bs-autohide=\"false\"">
		<set global="COSMO_DISPLAY_TOAST_DELAY" value="">
	<else>
		<set global="COSMO_DISPLAY_TOAST_AUTOHIDE" value="">
		<cond expr="$COSMO_DISPLAY_TOAST_DELAY$<=5000">
			<!-- Le delai ne peut être inférieur à 5s. -->
			<set global="COSMO_DISPLAY_TOAST_DELAY" value="">
		<else expr="!$COSMO_DISPLAY_TOAST_DELAY$">
			<set global="COSMO_DISPLAY_TOAST_DELAY" value="data-bs-delay=\"$BS_TOAST_DELAY$\"">
		</cond>
	</cond>
</scope>

<!-- vvv   Initialisation des constantes et des variables globales   vvv 
	Description :
		Initialise un tableau global de gestion des messages et de l'état de la page.

		Les types d'erreurs sont définies dans le tableau aSTATE_LOG_LVL.
		Les cibles des messages ou des logs sont définies dans le tableau aSTATE_LOG_TARGET.
		Ces deux tableaux permettent de définir :
			.Les constantes de niveaux STATE_LOG_LVL.
			.Le niveau de succés STATE_LOG_STATUS_SUCCESS,
			.Le niveau d'erreur STATE_LOG_STATUS_ERROR à partir duquel tous les niveau sont bloquants.  
			.La liste des mmessages spécifiques dans l'entête du tableau.
	-->
<scope name="stateLog">
	<!-- Liste des niveaux d'alerte -->
	<array global="aSTATE_LOG_LVL" header="lvl" value="[ {SUCCESS},{INFO},{WARNING},{DANGER},{CRITICAL} ]">

	<!-- Liste des cibles -->
	<array global="aSTATE_LOG_TARGET" header="target" value="[ {DEV} ]">

	<!-- STATE_LOG_LVL_[*] -->
	<while array="aSTATE_LOG_LVL">
		<set global="STATE_LOG_LVL_$lvl$" value="$arraynumrow$">
	</while>

	<!-- header -->
	<set local="_header" value="status,type,lvl,origin,inputId,msg">
	<while array="aSTATE_LOG_TARGET">
		<set local="_header" value="$_header$,msg$target$">
	</while>

	<!-- MSG -->
	<cond expr="$gStateLog_msg_critical$"><set global="gStateLog_msg_critical" value="Une erreur inattendue s'est produite."></cond>
	<cond expr="$gStateLog_msg_danger$"><set global="gStateLog_msg_danger" value="Impossible de valider l'action."></cond>
	<cond expr="$gStateLog_msg_warning$"><set global="gStateLog_msg_warning" value="Attention !"></cond>
	<cond expr="$gStateLog_msg_info$"><set global="gStateLog_msg_info" value="Pour information :"></cond>
	<cond expr="$gStateLog_msg_success$"><set global="gStateLog_msg_success" value="Action validée."></cond>

	<!-- gStateLog
		Initialise le tableau 'StateLog' avec un status=success, lvl=0 ainsi que l'url complet de la page.
		@gStateLog {array} Tableau global.
			.@status {string} (obsolète) success ou error.
			.@type {string} (obsolète)
			.@lvl {int} Niveau d'erreur.
			.@origin {string} Permet de définir d'où vient le message.
			.@inputId {string} Identifiant d'un élément HTML que l'on veut mettre en évidence.
			.@msg {string} Message sur l'écran pour l'utilisateur.
			.@msg[*] {string} Message spécifique pour la cible.
	-->
	<cond expr="!$QUERY_STRING$"><set local="_paramString" value="?$QUERY_STRING$"><else><set local="_paramString" value=""></cond>
	<array global="gStateLog" header="$_header$" value="success,success,$STATE_LOG_LVL_SUCCESS$,|$REQUEST_URI$$_paramString$|">

	<include file="/CosmoTools/StateLog/StateLog.fct.xpx" option="once">
</scope>

<!-- Ajout des variables globales de l'automation -->
<include file="/CosmoTools/Automation/HTMLElement/Global.inc.xpx" option="once">

<!-- Ajout des fonctions globales -->
<include file="/CosmoTools/Automation/HTMLElement/Global.fct.xpx" option="once">

<!-- Ajout des fonctions globales spécifiques à l'application -->
<set name="existingPath" value="/tools/Automation/HTMLElement/Global.fct.xpx">
<file exist="isExisting" path="$existingPath$">
<cond expr="$isExisting$!=0"><include file="$existingPath$" option="once"></cond>

<!-- Ajout des fonctions 'HTMLElement' -->
<include file="/CosmoTools/Automation/HTMLElement/HTMLElement.fct.xpx" option="once">

<!-- Ajout des fonctions 'HTMLElement' spécifiques à l'application -->
<set name="existingPath" value="/tools/Automation/HTMLElement/HTMLElement.fct.xpx">
<file exist="isExisting" path="$existingPath$">
<cond expr="$isExisting$!=0"><include file="$existingPath$" option="once"></cond>

<!-- Ajout des fonctions HTMLBlocks -->
<include file="/CosmoTools/Automation/HTMLElement/HTMLBlocks.fct.xpx" option="once">

<!-- Ajout des fonctions 'HTMLBlocks' spécifiques à l'application -->
<set name="existingPath" value="/tools/Automation/HTMLElement/HTMLBlocks.fct.xpx">
<file exist="isExisting" path="$existingPath$">
<cond expr="$isExisting$!=0"><include file="$existingPath$" option="once"></cond>



<include file="/tools/Functions/Connect.fct.xpx" option="once">

<function exec="connectBDD" champSelection="url" valeurSelection="$SERVER_NAME$" idConnect="ctAtelis" />
<!-- Nom de la base utilisé dans la connexion principal -->
<set name="baseConnected_ctAtelis" value="$base$">
<set name="baseConnected_ctAtelis_id" value="$connectBDD.identifiant$">

<cookie name="bddArchive">
<cond expr="!$bddArchive$">
	<sql query="SELECT base, server FROM SA_ListeArchive WHERE archivingYear=$bddArchive$">
		<connect name="ATELISM" pass="cosmos99" server="$server$" base="$base$" info="Archive$bddArchive$" transaction="normal" idConnect="atelis$bddArchive$">
		<set name="base" value="$base$">
	</sql>
</cond>

<sql query="USE $base$"></sql>

<sql query="SELECT CONVERT(varchar,GETDATE(),103)">
	<set name="DateDuJour" value="$1$">
</sql>
<set name="phcnull" value="">
<set name="phcdelcomment" value="1">
<set name="sqlconnected" value="1">

<cond expr="$CODE_APP$=DEPOT">
	<cond expr="$connectBDD.identifiant$?=STF_DEPOT%">
		<cond expr="$SERVER_NAME$?=%atelier%">
			<sql query="SELECT id FROM LieuGeo WHERE libelle='ATELIER'">
				<set name="NidLieuGeo" value="$id$">
				<set name="gIdLieuGeo" value="$id$">
			</sql>
		<else expr="$SERVER_NAME$?=%depot%">
			<sql query="SELECT id FROM LieuGeo WHERE libelle='RILLIEUX'">
				<set name="NidLieuGeo" value="$id$">
				<set name="gIdLieuGeo" value="$id$">
			</sql>
		</cond>
	<else expr="$SERVER_NAME$?=%chety%">
		<sql query="SELECT id FROM LieuGeo WHERE libelle='LE PETIT CHETY'">
			<set name="NidLieuGeo" value="$id$">
			<set name="gIdLieuGeo" value="$id$">
		</sql>
	</cond>
</cond>
	

<function exec="Langue" fichier="Droits" />


<!-- Numéro droit Assistant -->
<set name="NumDrAssistant" value="21" >

<cond expr="$gNomSociete$ = Novicap">
	<set name="droitVars" value=",drCliZoneComptable,,drArtAffComplet,drArtDescriptif,drModifFacture,,drArtCreation,drArtModif,,drCliCreation,drCliModif,drModifParam,,,drAffHisto,drFactCde,drModifReglement,drAllAgence,drAllAffaire,drSuprCliCde,,drFourCreation,drFourModif,drAdminAvance,drCdeFour,drGenererDoc,,drTraduction,drAvoirADV,drAvoirDIR,drQualite,drAvoirFourn,drEditCliCde,drAdminUser,,,,,drRGPD">
<else>
	<set name="droitVars" value="drAffInv,drCliZoneComptable,drCdeSupprBesoin,drArtAffComplet,drArtDescriptif,drModifFacture,drCdeBloquee,drArtCreation,drArtModif,drBpModif,drCliCreation,drCliModif,drModifParam,drCdeArbitrage,drEnseigneModif,drAffHisto,drFactCde,drModifReglement,drOpModif,drAdminWeb,drSuprCliCde,drAssistant,drFourCreation,drFourModif,drAdminAvance,drCdeFour,drGenererDoc,drLogistique,drTraduction,drAvoirADV,drAvoirDIR,drQualite,drAvoirFourn,drEditCliCde,drAdminUser,drCreditClient,drPrAchat,drIndiv,drRUL,drRGPD">
</cond>


<get name="droitVal" value="$droitVars$" token=",">

<!-- Une colonne droits2 à été créée car la limite du champs est de 32bits. -->
<set name="gNbChampsDroit" value="2">


<scope>
	<!-- création de la sélection du champ de droits -->
	<set name="d" value="1">
	<while expr="$d$ <= $gNbChampsDroit$">
		<cond expr="$d$ = 1"><!-- Le premier champ de droit ne comporte pas de numéros dans son nom -->
			<set name="selDroitProfil" value="ISNULL(P.droits, 0) AS droits">
			<set name="selDroitUtilisateur" value="droitsCumul = U.droits | $$droitsProfil$$">
		<else>
			<set name="selDroitProfil" value="$selDroitProfil$, ISNULL(P.droits$d$, 0) AS droits$d$">
			<set name="selDroitUtilisateur" value="$selDroitUtilisateur$, droitsCumul$d$ = U.droits$d$ | $$droitsProfil$d$$$">
		</cond>
		<set name="d" expr="$d$+1">
	</while>
	
	<!-- Tous les droits super Admin -->
	<cond expr="$gUserId$ = -1">
		<set name="i" expr="0">
		<set name="j" expr="1">
		<while expr="$j$ <= $droitVal$">
			<cond expr="!$droitVal[j]$">
				<set global="$droitVal[j]$" expr="1">
			</cond>
		
			<set name="i" expr="$i$ + 1">
			<set name="j" expr="$j$ + 1">
		</while>
	<else expr="!$gUserId$">
		<!-- Droit spécifique à l'utilisateur -->
		<set name="d" value="1">
		<while expr="$d$ <= $gNbChampsDroit$">
			<cond expr="$d$ = 1"><!-- Le premier champ de droit ne comporte pas de numéros dans son nom -->
				<set name="numChamp" value="">
			<else>
				<set name="numChamp" value="$d$">
			</cond>
			<set name="droitsProfil$numChamp$" value="0">
			<set name="d" expr="$d$+1">
		</while>
		<sql query="SELECT $selDroitProfil$
						FROM Profil P, ProfilUtilisateur PU 
						WHERE P.id = PU.idProfil
						AND PU.idUtilisateur = $gUserId$">
			<set name="d" value="1">
			<while expr="$d$ <= $gNbChampsDroit$">
				<cond expr="$d$ = 1"><!-- Le premier champ de droit ne comporte pas de numéros dans son nom -->
					<set name="numChamp" value="">
				<else>
					<set name="numChamp" value="$d$">
				</cond>
				<sql query="SELECT $droitsProfil[numChamp]$ | $droits[numChamp]$"><set name="droitsProfil$numChamp$" value="$1$"></sql>
				<set name="d" expr="$d$+1">
			</while>
		</sql>
		<sql query="SELECT $+selDroitUtilisateur$, niveauUtil 
						FROM Utilisateur U 
						WHERE U.id = $gUserId$ ">	
			<set name="i" expr="0">
			<set name="j" expr="1">
			<set name="numChampDroit" value="1">
			<while expr="$j$ <= $droitVal$">
				<!-- limite de 31 bit dans le même champs (le 32eme etant le signe -->
				<cond expr="$j$%((32*$numChampDroit$) - ($numChampDroit$-1)) = 0">
					<set name="numChampDroit" expr="$numChampDroit$+1">
					<set name="i" expr="0">
				</cond>

				<cond expr="$numChampDroit$ = 1"><!-- Le premier champ de droit ne comporte pas de numéros dans son nom -->
					<set name="nomChamp" value="">
				<else>
					<set name="nomChamp" value="$numChampDroit$">
				</cond>

				<cond expr="!$droitVal[j]$">
					<set global="$droitVal[j]$" expr="$droitsCumul[nomChamp]$" bit="$i$">
				</cond>

				<set name="i" expr="$i$ + 1">
				<set name="j" expr="$j$ + 1">
			</while>
		</sql>
	</cond>
</scope>

<cond expr="!$gUserId$">
	<!-- Test Representant -->
	<sql query="SELECT COUNT(*) FROM Representant WHERE idUtilisateur = $gUserId$ AND actif = 1">
		<cond expr="$1$>0">
			<set name="etat_representant" value="1">
		</cond>
	</sql>
	<!-- Test Fournisseur -->
	<sql query="SELECT COUNT(*) FROM Fournisseur WHERE idUtilisateurFour = $gUserId$ AND actif = 1">
		<cond expr="$1$>0">
			<set name="etat_fournisseur" value="1">
		</cond>
	</sql>
</cond>

<!-- vvv   Param.inc.xpx   vvv
	Description :
		Création des variables et constantes globales.
		## Une connexion doit être faite sur la base de données.
-->

<!-- Version -->
<set name="gVersion" value="v7.0.0">
<get format="v$gVersionAtelisMajor$.$gVersionAtelisMinor$.$gVersionAtelisPatch$" value="$gVersion$">
<set global="OLD_VERSION" value="6">

<!-- Paramêtres de la table Param -->
<sql query="SELECT * FROM Param">
	<set name="$nom$" value="$valeur$">
</sql>

<cond expr="$gPrixAchatDecimal$>5">
	<set name="gPrixAchatDecimal" value="5">
</cond>

<!-- Dépot -->
<cond expr="$CODE_APP$=DEPOT">
	<cond expr="$NidLieuGeo$">
		<set name="NidLieuGeo" value="$gLieuParDefaut$">
		<set name="gIdLieuGeo" value="$gLieuParDefaut$">
	</cond>
	<sql query="SELECT LieuGeo.libelle, LieuGeo.gereDepot 
					FROM LieuGeo 
					WHERE LieuGeo.id=$gIdLieuGeo$">
		<set name="gNomDepot" value="$libelle$">
		<set name="gVersionDepot" value="$gereDepot$">
	</sql>
</cond>

<!-- Paramêtres spécifiques clients -->
<cond expr="$gNomSociete$=STF">
	<set name="gModuleCRMexterne" value="1">
	<set name="gLangueParDefaut" expr="0"> 
	<set name="MAT_LONG1" value="1.0">
	<set name="MAT_LONG2" value="3.5">
	<set name="MAT_TAUXCHUTE1" value="0.5">
	<set name="MAT_TAUXCHUTE2" value="1.5">
	<set name="MAT_TAUXCHUTE3" value="2.5">
<else>
	<set name="gLangueParDefaut" expr="0"> 
	<set name="MAT_LONG1" value="1.0">
	<set name="MAT_LONG2" value="3.5">
	<set name="MAT_TAUXCHUTE1" value="0">
	<set name="MAT_TAUXCHUTE2" value="0">
	<set name="MAT_TAUXCHUTE3" value="0">
</cond>
	
<!-- Parametres réseaux -->
<cond expr="$MODE_DEV$=ON">
	<set name="gEmail" value="support@infocosme.com">
	<set name="gDirServeur" value="/../Public/Atelis/$gNomSociete$">
	<set name="gServeurSMTP" value="smtp10.mailinblack.com:587|support@infocosme.com#VhQfa4mhVI28f8W/WNHWnjUYM7sy1IBp9VWp8SndIos=">
	<set name="gWebMasterMail" value="atelis@infocosme.com">
	<set name="gEnvoiMail" value="atelis@infocosme.com">
	<set name="gReplyMail" value="atelis@infocosme.com">
	<set name="gRespComptaMail" value="atelis@infocosme.com">
	<set name="gProductionMail" value="atelis@infocosme.com">
	<set name="gEmail" value="atelis@infocosme.com">
	<set name="gRespCialMail" value="atelis@infocosme.com">
	<set name="gMailCoordinateurRGPD" value="atelis@infocosme.com">
	<cond expr="$gNomSociete$=STF">
		<set name="gNewAccorShopURL" value="https://accor-dev.mirakl.net">
		<set name="gNewAccorShopKEY" value="826a5fd1-b497-44c2-a4b8-9bcc18955bec">
	</cond>
	<cond expr="'$REMOTE_ADDR$' ?= '192.168.72.%' OR '$SERVER_NAME$' ?= '%.perso' OR '$SERVER_NAME$' ?= '%.home'"> <!-- LOCAL -->
		<cond expr="'$SERVER_NAME$' ?= '%.local'">
			<set name="extens" value="local">
		<else expr="'$SERVER_NAME$' ?= '%.perso'">
			<set name="extens" value="perso">
		<else expr="'$SERVER_NAME$' ?= '%.home'">
			<set name="extens" value="home">
		</cond>
		<cond expr="$gNomSociete$=Barthelemy">
			<set name="gUrlAtelis" value="http://barthelemy.erp-atelis.fr.$extens$/">
			<set name="gUrlWeb" value="http://www.barthelemy-bronze.fr.$extens$/">
			<set name="gRootDocApli" value="/home/www/barthelemy">
			<set name="gDirAppVersWeb" value="/../../barthelemy/httpdocs">
			<set name="gUrlDepot" value="http://bartdepot.erp-atelis.fr.$extens$">
		
			<set name="gRootDocApliMetalGravure" value="/home/www/metal-gravure">
			<set name="gUrlMetalGravure" value="http://support.metal-gravure.fr.$extens$/">
			<set name="gDirAppVersMetalGravure" value="/../../metal-gravure/Public">
		<else expr="$gNomSociete$=STF">
			<set name="gUrlDepot" value="http://stfdepot.erp-atelis.fr.$extens$">
			<set name="gUrlAtelis" value="http://stf.erp-atelis.fr.$extens$/">
			<set name="gUrlCrm" value="http://stfcrm.erp-atelis.fr.$extens$/">
			<set name="gPartageSmb" value="//192.168.72.56/www/atelis/Public/Atelis/STF"><!-- ip wanda -->
			<set name="gComptaParam" value="STANDARD_TEXTILE_TEST">
		<else expr="$gNomSociete$=Novicap">
			<set name="gUrlAtelis" value="http://novicap.erp-atelis.fr.$extens$/">
			<set name="gUrlDepot" value="http://novicap.erp-atelis.fr.$extens$">
		<else expr="$gNomSociete$=STPF">
			<set name="gUrlAtelis" value="http://stpf.erp-atelis.fr.$extens$">
			<set name="gUrlDepot" value="http://daval.erp-atelis.fr.$extens$">
		<else expr="$gNomSociete$=STB">
			<set name="gUrlAtelis" value="http://stb.erp-atelis.fr.$extens$/">
			<set name="gUrlDepot" value="http://stbdepot.erp-atelis.fr.$extens$">
		<else expr="$gNomSociete$=STAMP">
			<set name="gUrlAtelis" value="http://stamp.erp-atelis.fr.$extens$/">
			<set name="gUrlDepot" value="http://stampdepot.erp-atelis.fr.$extens$">
			<set name="gLogicielCompta" value="Cegid-pas-connecté">

		</cond>
		<!-- Variables d'environement différentes pour chaque poste (voir dans le cgi-bin/xpx.conf) -->
		<cond expr="$parext$=perso">
			<sql query="SELECT nom FROM Param WHERE nom">
			<cond expr="!$[nom]Perso$">
				<set name="$nom$" value="$[nom]Perso$">
			</cond>				
		</sql>
		<else expr="$parext$=home">
			<sql query="SELECT nom FROM Param WHERE nom">
				<cond expr="!$[nom]Home$">
					<set name="$nom$" value="$[nom]Home$">
				</cond>				
			</sql>
		</cond>
	<else><!-- Acces extérieur -->
		<cond expr="$gNomSociete$=Barthelemy">
			<set name="gUrlAtelis" value="http://atelis-bart.infocosme.com/">
			<set name="gUrlWeb" value="https://dev.barthelemy-bronze.fr/">
			<set name="gRootDocApli" value="/home/www/barthelemy">
			<set name="gDirAppVersWeb" value="/../../barthelemy/httpdocs">
			<set name="gUrlDepot" value="http://bartdepot.erp-atelis.fr/">
		
			<set name="gRootDocApliMetalGravure" value="/home/www/metal-gravure">
			<set name="gUrlMetalGravure" value="http://dev.metal-gravure.fr/">
			<set name="gDirAppVersMetalGravure" value="/../../metal-gravure/Public">
		<else expr="$gNomSociete$=STF">
			<set name="gUrlDepot" value="http://stfdepot.erp-atelis.fr/">
			<set name="gUrlAtelis" value="http://stf.erp-atelis.fr/">
			<set name="gUrlCrm" value="http://stfcrm.erp-atelis.fr/">
			<set name="gComptaParam" value="STANDARD_TEXTILE_TEST">
		<else expr="$gNomSociete$=STPF">
			<set name="gUrlAtelis" value="http://stpf.erp-atelis.fr">
			<set name="gUrlDepot" value="http://daval.erp-atelis.fr">
		<else expr="$gNomSociete$=STAMP">
			<set name="gUrlAtelis" value="http://stamp.erp-atelis.fr">
			<set name="gUrlDepot" value="http://stampdepot.erp-atelis.fr">
		<else expr="$gNomSociete$=STB">
			<cond expr="$SERVER_NAME$ ?= stb.erp-atelis.fr%">
				<set name="gUrlAtelis" value="https://stb.erp-atelis.fr">
				<set name="gUrlDepot" value="https://stbdepot.erp-atelis.fr">
			<else>
				<set name="gUrlAtelis" value="https://stbevotest.eu.standardtextile.com">
				<set name="gUrlDepot" value="https://stbdepottest.eu.standardtextile.com">
			</cond>
		<else expr="$gNomSociete$=STG">
			<set name="gUrlAtelis" value="https://stg.erp-atelis.fr">
			<set name="gUrlDepot" value="https://stgdepot.erp-atelis.fr">
		</cond>
	</cond>
<else> 
	<cond expr="'$SERVER_NAME$' ?= '%.client'">
		<cond expr="$gNomSociete$=STF AND $gModuleCRMexterne$=1">
			<set name="gUrlAtelis" value="http://stfevo2.client">
			<set name="gUrlDepot" value="http://stfdepot2.client">
			<set name="gUrlCrm" value="http://stfcrm.client">
		<else expr="$gNomSociete$=STB">
			<set name="gUrlAtelis" value="http://stbevo.client">
			<set name="gUrlDepot" value="http://stbdepot.client">
		<else expr="$gNomSociete$=STAMP">
			<set name="gUrlAtelis" value="http://stampatelis.client">
			<set name="gUrlDepot" value="http://stampdepot.client">
		<else expr="$gNomSociete$=STPF">
			<set name="gUrlAtelis" value="http://stpfevo.client">
			<set name="gUrlDepot" value="http://stpfdaval.client">
		</cond>
	</cond>
</cond>
				
<set name="gRootDocDir" value="$DOCUMENT_ROOT$$gDirServeur$">
	
<!-- vvv   Paramêtres de l'application   vvv -->
	<!-- langue par défaut de l'appli -->
	<cond expr="$gCodeLng$"><set name="gCodeLng" value="FR"></cond>
	<sql query="SELECT id FROM Langue WHERE code='$gCodeLng$'">
		<set name="ID_LANGUE_DEF" expr="$1$">
		<set name="gCodeLangAppli" expr="$gCodeLng$">
		<set name="gIdLangAppli" expr="$1$">
	</sql>
	
	<!-- Pays de l'application -->
	<cond expr="$gPaysLogiciel$"><set name="gCodeLng" value="FR"></cond>
	<sql query="SELECT id FROM Pays WHERE codeIso='$gPaysLogiciel$'">
		<set name="ID_PAYS_APPLI" expr="$1$">
		<set name="gIdPaysAppli" expr="$gPaysLogiciel$">
		<set name="gCodePaysAppli" expr="$gPaysLogiciel$">
	</sql>
<!-- ^^^ ^^^ -->

<!-- vvv   Paramêtres utilisateur   vvv -->
	<set name="gCodeLangUti" upcase="$HTTP_ACCEPT_LANGUAGE(1,2)$">
	<cond expr="!$gCodeLangUti$">
		<sql query="SELECT Langue.id FROM Langue WHERE Langue.code = '$gCodeLangUti$'">
			<set name="gIdLangUti" value="$id$">
		</sql>
	</cond>

	<cond expr="!$gUserId$">
		<sql query="SELECT Langue.code, Langue.id, Utilisateur.mail, Theme.label
						FROM Utilisateur 
						LEFT JOIN Langue ON Langue.id = Utilisateur.idLangue 
						LEFT JOIN Theme ON Theme.id = Utilisateur.idTheme
						WHERE Utilisateur.id = $gUserId$">
			<cond expr="!$id$">
				<set name="gCodeLangUti" value="$code$">
				<set name="gIdLangUti" value="$id$">
				<set name="gLangUti" value="$gCodeLangUti$">
			</cond>
			<cond expr="!$label$">
				<get format="$gLayoutName$-$gLayoutColor$" value="$label$">
			<else>
				<set name="gLayoutName" value="Atelis6">
				<set name="gLayoutColor" value="light">
			</cond>
			<set name="gUserMail" value="$mail$">
		</sql>
	</cond>

	<cond expr="$gIdLangUti$">
		<set name="gIdLangUti" value="$gIdLangAppli$">
		<set name="gCodeLangUti" value="$gCodeLangAppli$">
	</cond>

	<cond expr="$gLangUti$ != FR">
		<set name="lngAddTable" value="$gLangUti$">
	<else>
		<set name="lngAddTable" value="">
	</cond>
<!-- ^^^ ^^^ -->	

<sql query="SELECT id FROM Langue WHERE code='$gCodeLangUti$'">
	<set name="ID_LANGUE_APPLI" expr="$1$">
</sql>

<!-- Traductions globales -->
<function exec="Langue" fichier="Global" langue="$gCodeLangUti$" />
<function exec="Langue" fichier="GlobalDate" langue="$gCodeLangUti$" />
<function exec="Langue" fichier="CosmoTools" langue="$gCodeLangUti$" />

<!-- Textes contenus dans la table Param -->
<function exec="Langue" fichier="ParamBDD" nomVar="g" langue="$gCodeLangUti$" />

<!-- debug -->
<set name="gDirDebug" value="$gNomSociete$">
<cond expr="$gUserId$=0 OR $MODE_DEV$=ON">
	<set name="gDirDebug" value="$gDirDebug$7">
	<debug mode="auto" dir="$gDirDebug$">
</cond>

<!-- Droits -->
<include file="/tools/Config/Droit.inc.xpx" option="once">

<!-- Paramètres spécifiques clients -->
<include file="/tools/Config/$gNomSociete$/Param.inc.xpx" option="once">

<!-- Gestion des Préférences -->
<include file="/tools/Functions/Preferences.inc.xpx">

<!-- Synchronisation application mobile -->
<cond expr="$gVersionMobile$ > 0">
   <include file="/tools/fctSyncMobile.xpx">
</cond>



<function name="HTMLElement_navItem" href="#" target="_blank" icon="" label="" divider="" disabled="0" class="" event="">
	<!-- href -->
	<cond expr="$href$"><set name="href" value="#"></cond>

	<!-- target -->
	<cond expr="!$target$">
		<setarea name="target"> target="$target$"</setarea>
	</cond>

	<!-- icon -->
	<cond expr="$icon(1,3)$=bi-">
		<setarea name="icon"><i class="bi $icon$ me-2"></i></setarea>
	<else expr="!$icon$">
		<setarea name="icon"><i class="$icon$ me-2"></i></setarea>
	<else>
		<setarea name="icon"><i class="ms-3 me-2"></i></setarea>
	</cond>

	<!-- label -->
	<cond expr="$label$">
		<setarea name="label"><span class="alert alert-danger p-1">label missing</span></setarea>
	</cond>

	<!-- disabled -->
	<cond expr="$disabled$=1">
		<set name="disabled" value="disabled">
		<setarea name="ariaDisabled">aria-disabled="true"</setarea>
	<else>
		<set name="disabled" value="">
		<set name="ariaDisabled" value="">
	</cond>

	<cond expr="$divider$=top OR $divider$=both">
		<li class="nav-item"><hr class="dropdown-divider"></li>
	</cond>
	<li class="nav-item">
		<a href="$href$" $target$ class="dropdown-item text-nowrap $class$ $disabled$" $ariaDisabled$ $event$ >
			$icon$ $label$
		</a>
	</li>
	<cond expr="$divider$=bottom OR $divider$=both">
		<li class="nav-item"><hr class="dropdown-divider"></li>
	</cond>

	<set return="HTMLElement_navItem.status" value="success">
</function>

<function name="HTMLElement_onclickItem" icon="" label="" divider="" disabled="0" class="" data="" event="">
	<!-- icon -->
	<cond expr="$icon(1,3)$=bi-">
		<setarea name="icon"><i class="bi $icon$ me-2"></i></setarea>
	<else expr="!$icon$">
		<setarea name="icon"><i class="$icon$ me-2"></i></setarea>
	<else>
		<setarea name="icon"><i class="ms-3 me-2"></i></setarea>
	</cond>

	<!-- label -->
	<cond expr="$label$">
		<setarea name="label"><span class="alert alert-danger p-1">label missing</span></setarea>
	</cond>

	<!-- disabled -->
	<cond expr="$disabled$=1">
		<set name="disabled" value="disabled">
		<setarea name="ariaDisabled">aria-disabled="true"</setarea>
	<else>
		<set name="disabled" value="">
		<set name="ariaDisabled" value="">
	</cond>

	<!-- data -->
	<get format="$key$:$value$" value="$data$">

	<cond expr="$divider$=top OR $divider$=both">
		<li class="nav-item"><hr class="dropdown-divider"></li>
	</cond>
	<li class="nav-item">
		<span role="button" class="dropdown-item text-nowrap $class$ $disabled$" $ariaDisabled$ onclick="$event$" data-$key$="$value$">
			$icon$ $label$
		</span>
	</li>
	<cond expr="$divider$=bottom OR $divider$=both">
		<li class="nav-item"><hr class="dropdown-divider"></li>
	</cond>

	<set return="HTMLElement_navItem.status" value="success">
</function>

<function name="HTMLElement_breakpoint" expand="">
	<span class="d-sm-none"><span class="bi bi-phone"></span></span>
	<span class="d-none d-sm-inline d-md-none">SM</span>
	<span class="d-none d-md-inline d-lg-none">MD</span>
	<span class="d-none d-lg-inline d-xl-none">LG</span>
	<span class="d-none d-xl-inline d-xxl-none">XL</span>
	<span class="d-none d-xxl-inline d-3xl-none">XXL</span>
	<span class="d-none d-3xl-inline d-4xl-none">3XL</span>
	<span class="d-none d-4xl-inline d-hd-none">4XL</span>
	<span class="d-none d-hd-inline d-qhd-none">HD</span>
	<span class="d-none d-qhd-inline d-uhd-none">QHD</span>
	<span class="d-none d-uhd-inline d-4k-none">UHD</span>
	<span class="d-none d-4k-inline">4K</span>
</function>

<function name="HTMLElement_navItem_breakpoint" divider="">
	<cond expr="$divider$=start OR $divider$=both">
		<div class="vr mx-1 my-1"></div>
	</cond>
	<li class="nav-item fw-bold mt-2 mx-1">
		<function exec="HTMLElement_breakpoint">
	</li>
	<cond expr="$divider$=end OR $divider$=both">
		<div class="vr mx-1 my-1"></div>
	</cond>
</function>

<function name="HTMLElement_navItem_searchCrossModule" divider="">
	<!-- <array name="aList" header="idPage, title, label, url"> -->
	<array name="aList" header="idPage, title, label">
	<array name="aList" option="rowpush" value="{12,Article,Code article}">
	<array name="aList" option="rowpush" value="{26,Client,Code client}">

	<set name="listId" value="0">
	<while array="aList">
		<set name="listId" value="$listId$,$idPage$">
		<set name="title$idPage$" value="$title$">
		<set name="label$idPage$" value="$label$">
	</while>

	<array name="aSearch" header="id, title, label, code, lowerCode">
	<sql query="SELECT DISTINCT #MenuUser.id, Module.codeModule, Module.lowerCodeModule 
					FROM #MenuUser 
					INNER JOIN #MenuUser AS Module ON Module.id = #MenuUser.idParent 
					WHERE #MenuUser.id IN ($listId$)">
		<array name="aSearch" option="rowpush" value="$id$,$title[id]$,$label[id]$,$codeModule$,|$lowerCodeModule$|">
	</sql>				
	<cond expr="$sqlrowcount$ > 0">
		<get format="{$idDef$,$titleDef$,$labelDef$,$codeDef$,$lowerCodeDef$}" value="$aSearch:1$">

		<style>
			#searchCrossModule .dropdown-menu{
				--bs-dropdown-min-width: 0;
			}
		</style>
	
		<cond expr="$divider$=start OR $divider$=both">
			<div class="vr mx-1 my-1"></div>
		</cond>
		<form id="searchCrossModule" target="XeusFrame" action="/tools/Template/SearchCrossModule.do.xpx" method="post">
			<li class="nav-item fw-bold mt-2 mx-1 d-none d-md-block">
				<div class="input-group mt-1">
					<span class="input-group-text">Recherche</span>
					<set name ="icon" value="">
					<button type="button" id="searchCrossModule_select"
							class="btn btn-outline-secondary dropdown-toggle" 
							data-icon="$g[codeDef]_ico$" data-lowercodemodule="$lowerCodeDef$" 
							data-bs-toggle="dropdown" aria-expanded="false">
						<span class="bi bi-$g[codeDef]_ico$ xpx-$lowerCodeDef$"></span>
					</button>
					<ul class="dropdown-menu">
						<while array="aSearch">
							<li>
								<a class="dropdown-item xpx-$lowerCode$" data-codemodule="$code$" data-icon="$g[code]_ico$" 
										data-placeholder="$label$" data-url="$url$" 
										onclick="SearchCrossModule_select(this)">
									<span class="me-3">$title$</span><span class="bi bi-$g[code]_ico$ float-end"></span>
								</a>
							</li>
						</while>
					</ul>
					<input type="text" id="searchCrossModule_value" name="code" class="form-control" placeholder="$labelDef$"
							aria-label="$labelDef$">
					<button type="submit" id="searchCrossModule_submit" name="idPage" value="$idDef$" class="btn btn-primary">
						<span class="bi bi-search"></span>
					</button>
				</div>
			</li>
		</form>
		<cond expr="$divider$=end OR $divider$=both">
			<div class="vr mx-1 my-1"></div>
		</cond>
		<script>
			function SearchCrossModule_select(element){
				let lowerCodeModule = $$(`#searchCrossModule_select`).data(`lowercodemodule`).toLowerCase();
				let icon = $$(`#searchCrossModule_select`).data(`icon`);
				let NcodeModule = element.dataset.codemodule;
				let NlowerCodeModule = NcodeModule.toLowerCase();
				let Nicon = element.dataset.icon;
				let placeholder = element.dataset.placeholder;
				$$(`#searchCrossModule_select > span`).removeClass(`bi-$${icon} xpx-$${lowerCodeModule}`).addClass(`bi-$${Nicon} xpx-$${NlowerCodeModule}`);
				$$(`#searchCrossModule_value`).attr(`placeholder`, placeholder).select();
				$$(`#searchCrossModule_select`).data(`lowercodemodule`, NlowerCodeModule);
				$$(`#searchCrossModule_select`).data(`icon`, Nicon);
				$$(`#searchCrossModule_submit`).val(NcodeModule);
			}
		</script>
	</cond>
</function>

<function name="HTMLElement_navItem_lang" divider="">
	<!-- Recherche les langues d'Atelis -->
	<sql query="SELECT COUNT(*) FROM Langue WHERE atelis = 1">
		<cond expr="$1$>1">
			<!-- N'affiche le choix que si il y a plusieurs langues -->
			<set name="gLowerCodeLangUti" lowcase="$gCodeLangUti$">
			<cond expr="$divider$=start OR $divider$=both">
				<div class="vr mx-1 my-1 d-none d-lg-block"></div>
			</cond>
			<li class="nav-item dropdown">
				<sql query="SELECT Langue.id, Langue.code, ISNULL( LangueTrad.libelle, Langue.libelle ) AS libelle
								FROM Langue 
								LEFT JOIN LangueTrad ON LangueTrad.id = Langue.id AND LangueTrad.idLangue = Langue.id
								WHERE atelis = 1
								AND Langue.id = $gIdLangUti$">
					<set name="lowerCode" lowcase="$code$">
					<a href="#" id="langueUti" class="nav-link dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
						<i class="fi-$lowerCode$"></i>
						<span class="ms-2 d-line d-lg-none">$libelle$</span>
					</a>
				</sql>
				<form action="/Parametre/Utilisateur/Preference/Langue.do.xpx" target="XeusFrame" method="post">
					<ul class="dropdown-menu dropdown-menu-header" aria-labelledby="userMenu">
						<sql query="SELECT Langue.id, Langue.code, ISNULL( LangueTrad.libelle, Langue.libelle ) AS libelle
										FROM Langue 
										LEFT JOIN LangueTrad ON LangueTrad.id = Langue.id AND LangueTrad.idLangue = Langue.id
										WHERE atelis = 1
										AND Langue.id != $gIdLangUti$">
							<set name="lowerCode" lowcase="$code$">
							<li class="nav-item mx-2">
								<button type="submit" name="idLangue" value="$id$" class="btn w-100 text-start">
									<i class="fi-$lowerCode$"></i><span class="ms-2">$libelle$</span>
								</button>
							</li>
						</sql>
					</ul>
				</form>
			</li>
			<cond expr="$divider$=end OR $divider$=both">
				<div class="vr mx-1 my-1 d-none d-lg-block"></div>
			</cond>
		</cond>
	</sql>
</function>

<function name="HTMLElement_navItem_notification" divider="">
	<set local="_noNotifiaction" value="0">
	<sql query="SELECT COUNT(*)
					FROM Notification
					WHERE Notification.date <= getDate()
					AND Notification.vue = 0
					AND Notification.idUser = $gUserId$">
		<set local="_noNotifiaction" value="$1$">
	</sql>

	<cond expr="$_noNotifiaction$!=0">
		<set local="_dropdown" value="dropdown">
		<set local="_link" value="#">
	<else>
		<set local="_dropdown" value="">
		<set local="_link" value="/Client/Notification/">
	</cond>
	<cond expr="$_noNotifiaction$>99"><set local="_noNotifiaction" value="99+"></cond>


	<cond expr="$divider$=start OR $divider$=both">
		<div class="vr mx-1 my-1 d-none d-lg-block"></div>
	</cond>

	<li class="nav-item $_dropdown$">
		<a href="$_link$" id="notificationAtelis" class="nav-link $_dropdown$-toggle" role="button" data-bs-toggle="$_dropdown$">
			<span id="boutonNotification" class="bi bi-bell headerNavbarIcon position-relative">
				<span class="position-absolute start-80 top-20 translate-middle badge badge-sm rounded-pill bg-danger">
					$_noNotifiaction$
					<span class="visually-hidden">unread messages</span>
				</span>
				
			</span>
			<span class="ms-2 d-line d-lg-none">unread messages</span>
		</a>
		<ul id="popUpNotification" class="dropdown-menu"></ul>
	</li>

	<cond expr="$divider$=end OR $divider$=both">
		<div class="vr mx-1 my-1 d-none d-lg-block"></div>
	</cond>
</function>

<function name="navbarTabsLink" json="">
   <!-- json format : 
         [
            { "code": "Nom du répertoir onglet", "title": "libellé", "ico": "idcone", "badge" : "contenu du badge"},
               ...
         ]
   -->
   <json name="jListItem">$json$</json>
   <div class="row at-card-tab">
      <ul class="nav nav-pills">
         <set local="i" value="1">
         <while expr="$i$<=$jListItem.rowcount$">
            <set name="_jItem" value="">
            <json name="_jItem">$~jListItem:[i].1$</json>
            <cond expr="$_jItem.code$=$gCodeOngletActif$">
               <set local="_active" value="active">
               <set local="_selected" value="true">
            <else expr="$_jItem.code$=$gCodePageActif$ AND $gCodeOngletActif$">
               <set local="_active" value="active">
               <set local="_selected" value="true">
            <else>
               <set local="_active" value="">
               <set local="_selected" value="false">
            </cond>
            <set local="_itemLink" value="#$gLowCodeModuleActif$$_jItem.code$">
            <li class="nav-item">
               <cond expr="$proc$ OR $proc$=doNew">
                  <span class="nav-link $_active$">
                     <cond expr="!$_jItem.ico$"><i class="bi bi-$_jItem.ico$ me-1"></i></cond>
                     $_jItem.title$
                     <cond expr="!$_jItem.badge$ AND $_jItem.badge$>0"><span class="badge text-bg-secondary">$_jItem.badge$</span></cond>
                  </span>
               <else>
                  <set local="_dir" value="/$gCodeModuleActif$/$gCodePageActif$">
                  <cond expr="$_jItem.code$=$gCodePageActif$"><set local="_dir" value="/$gCodeModuleActif$"></cond>
                  <a href="$_dir$/$_jItem.code$/index.xpx?$QUERY_STRING$" 
                        class="nav-link $_active$" 
                        aria-selected="$_selected$"
                        style="width: 100%; text-overflow: ellipsis; white-space: nowrap; overflow: hidden;">
                     <cond expr="!$_jItem.ico$"><i class="bi bi-$_jItem.ico$ me-1"></i></cond>
                     <span class="title">$_jItem.title$</span>
                     <cond expr="!$_jItem.badge$ AND $_jItem.badge$>0"><span class="badge text-bg-secondary ms-1">$_jItem.badge$</span></cond>
                  </a>
               </cond>
            </li>
            <set local="i" expr="$i$+1">
         </while>
      </ul>
   </div>
</function>

<include file="/CosmoTools/Functions/Color.fct.xpx">


	
	
	:root {
		--xpx-tertiary-color: #dee2e6;
		
		--xpx-tertiary-color-rgb: ,,;
		--xpx-tertiary-bg: #2b3035;
		
		--xpx-tertiary-bg-rgb: ,,;
		--xpx-tertiary-border-color: #6c757d;
		
		--xpx-tertiary-border-color-rgb: ,,;
	}

	
	:root {
		
	}
	

	

	#bandSection {
		z-index: 1;
	}

	#navbarModule,
	#navbarModule li,
	#navbarModule div,
	#navbarModule button {
		
	}



