Files
Omika/docs/Documentation_WebService_GET.md
T
2026-10-23 18:46:50 +02:00

11825 lines
422 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
DOCUMENTATION
TECHNIQUE
DU PROJET
Batik_WS_Com_Mob
12/08/2026
Partie 1 › Projet
Partie 1
Projet
| 12/08/2026 | Batik_WS_Com_Mob | 2 |
| ---------- | ---------------- | --- |
Partie 1 › Projet
Projet
Informations générales
Batik_WS_Com_Mob
Répertoire D:\Projets Windev\Batik\Nouvelle Version\WebService\Batik_WS_Com_Mob
Analyse associée D:\Projets Windev\Batik\Nouvelle
Version\WebService\Batik_WS_Com_Mob\WS_SYNCHRO.ana\WS_SYNCHRO.wda
Gabarit 190 Gensteel
Projet
Liste des éléments du projet
Nom Libellé
FEN_Connexion
FEN_Log
FEN_Principal
LIB_COMMUNE
LIB_DEBUG
LIB_EXE
LIB_GENERALE
LIB_GestionTableParamètres
LIB_ProcéduresGlobales
LIB_ProcéduresGlobales2
LIB_Structures
LIB_Traitements
LIB_WS
LIB_WS_MOB
WS_COM_MOBILE
WS_LICENCE
Statistiques
Nombre de fenêtres : 3
Nombre de collections de procédures : 11
12/08/2026 Batik_WS_Com_Mob 3
Partie 1 › Projet › Code
Projet
Code
Initialisation de Batik_WS_Com_Mob
CONSTANT
gcVersionWS ="Prod.A.002"
//Pensez à incrémenter cette constante à chaque déploiement
gcCLE_HASH_PASS ="MQC256Eex949eGgo"
gcCLE_CRYPT_TOKEN ="mtS321WdQ280Lysz"
gcPASS_FICHIERS ="marakech"
gcPasErreur ="0"
gcErreur_MauvaisToken ="401"
gcErreur_ParamIncorrect ="501"
gcErreur_Interne ="999"
Mdp1 = "62"
Mdp2 = "Langénieux"
Mdp3 = "eBdFfDxVfB"
//Constantes utilisées dans l'application mobile
cDoc_Brouillon = 0
cDoc_AEnvoyer = 1
cDoc_ARecevoir = 3
cDoc_Synchronisé = 5
cDoc_ASupprimer = 6
cDoc_ErreurSync = 7
//Commande utilisée par le mobile pour communiquer avec le WebService
// Commandes interprétées par le service
cCMD_ListeDocDmd = "S.DOC.LS"
cCMD_DocRpRecup = "S.DRpRc.EC"
cCMD_DocEcrit = "S.DOC.EC"
sCMD_DocSupprime = "S.DOC.SU"
cCMD_DocNoteEcrit = "S.DNT.EC"
cCMD_DocNoteSupprime = "S.DNT.SU"
cCMD_NoteEcrit = "S.NTE.EC"
cCMD_NoteSupprime = "S.NTE.SU"
cCMD_TempsEcrit = "S.TPS.EC"
cCMD_TempsEcrit_V2 = "S.TPS.EC.V2"
cCMD_TempsSupprime = "S.TPS.SU"
cCMD_CREcrit = "S.RPT.EC"
cCMD_CREcrit_V2 = "S.RPT.EC.V2"
cCMD_CRSupprime = "S.RPT.SU"
cCMD_RdvEcrit = "S.RDV.EC"
cCMD_RdvSupprime = "S.RDV.SU"
cCMD_RdvAPlanifierEcrit = "S.RDV.PL"
cCMD_RDVValidation = "S.RDV.V"
cCMD_RDVAnnulation = "S.RDV.ANN"
12/08/2026 Batik_WS_Com_Mob 4
Partie 1 › Projet › Code
cCMD_ParamAppliEcrit = "S.PRM.EC"
cCMD_MsgExtEcrit = "S.MSGEXT.EC"
//Commandes interprétées par le WebService
cCMD_RecupImgRapport ="W.IMG.Sauve"
cCMD_RechercheRDV ="W.RDV.RC"
cCMD_ListeRDV ="W.RDV.LS"
cCMD_ListeRDV_V2 ="W.RDV.LS.V2"
cCMD_LitINTER ="W.INT.LI" //Récupère le contenu d'une intervention
cCMD_LitINTER_V2 ="W.INT.LI.V2"
cCMD_ListeNonPlanifié="W.NPL.LS"
cCMD_ListeDOC ="W.DOC.LS"
cCMD_ListeTEMPS ="W.TPS.LS"
cCMD_LitParam ="W.PRM.LI"
cCMD_LitParam_V2 ="W.PRM.LI.V2" //Lit les paramètres métiers
cCMD_LitContexte ="W.CTX.LI" //Lit le contexte utilisateur
cCMD_IdClbRdvDroitC ="W.IDCLB.PL.D"
cCMD_ListeRDV_Clb ="W.RDV.Clb"
cCMD_ListeCh_Rapport ="W.INT.Ch.Rp" // liste des champs rapport
cCMD_Creation_Rapport="W.INT.Cr.Rp" // Création d'un rapport
cCMD_Cr_Structure_Mail ="W.INT.Cr.ME" // Création d'un email a partir d'un modèle
cCMD_ListeCh_Mail = "W.INT.Ch.ME" // liste des champs Modele Mail
cCMD_Envoyer_Mail = "W.INT.Cr.ME.EXT" // Envoie et création de message externe
//Paramètres
cParam_Mobile_Fonction_Recherche = "MOB_FONC_RECHERCHE"
cParam_Mobile_Saisie_Temps = "MOB_SAISIE_TEMPS"
cParam_Mobile_Rapport_Vers_Temps = "MOB_RAPPORT_VERS_TEMPS"
cParam_Mobile_Inter_Non_Planifiées = "MOB_INTER_NON_PLANIFIEES"
cParam_Mobile_NiveauTrace = "MOB_NIVEAU_TRACE"
cParam_Mobile_ChangeDateRDV = "MOB_CHANGER_DATE_DRV"
// Raport mobile
cRp_Inter = "INTER"
cRp_Dossier = "DOSSIER"
cRp_Client = "CLIENT"
cRp_CtSite = "CONTACT_SITE"
cRp_CR = "CR_INTER"
cRp_CtDonneurs = "DONNEURS_ORDRE"
cRp_Photo = "PHOTO_INTER"
cRp_RDV = "RDV_INTER"
cRp_Extra = "EXTRA"
cBufferHorsSer = "BufferHorsSerealisation"
cRubriquesModeleMail = "RubriquesModeleMail"
cCorpsModeleMail = "CorpsModeleMail"
NBPixelesXMilimetres = 3.7795275591
cParam_Civilite = "T.CV"
cParam_TypeRDV = "T.RDV"
cParam_StatusRDV = "S.RDV"
cParam_TypeInter = "T.INTER"
cParam_EtatInter = "E.INTER"
cParam_TypeDossier = "T.DOSS"
cParam_StatutDossier = "S.DOSS"
cParam_TypeClient = "T.CL"
cParam_StatutClient = "S.CL"
cParam_ApportClient = "T.APPOR.CL"
cParam_ApportOrigClient = "O.CL"
cParam_ModeReglClient = "M.REG"
cParam_TypeAction = "T.ACT"
12/08/2026 Batik_WS_Com_Mob 5
Partie 1 › Projet › Code
cParam_TypeSignCR = "T.SIGN"
cParam_RoleContact = "R.CT"
cParam_LigneRqSql = "L.RQ.SQL"
cParam_PeriodeRqSql = "P.RQ.SQL"
cParam_OrigAnnuRDV = "O.ANU.RDV"
cParam_MotifAnnuRDV = "M.ANU.RDV"
cParam_TypeDoc = "T.DOC"
cParam_EtatDoc = "E.DOC"
cparam_TypeLieu = "T.LIEU"
cparam_TypeTemps = "T.TEMPS"
cparam_TypeAdresse = "T.ADR"
cParam_ListeRapportMob = "Rapport_Mob"
cParam_ListeMailModele = "Mail_Modele"
cCle_RDVFait = "S.RDV.FAIT"
cCle_RDVAnnule = "S.RDV.ANNU"
cCle_RDVInter = "T.RDV.INTER"
cCle_RDVAPlanifier = "S.RDV.PLNF"
cCle_RDVConfirme = "S.RDV.CONF"
cCle_DossierAnnule = "S.DOSS.ANNU"
cCle_DossierOuvert = "S.DOSS.OUVT"
cCle_ClientParticulier = "T.CL.PRT"
cCle_CiviliteMadame = "T.CV.MME"
cCle_TypeDocRapport = "T.DOC.RAPPRT"
cCle_TypeDocImg = "T.DOC.PHOT"
cCle_TypeDocAutre = "T.DOC.AUTRE"
cCle_TypeDocNull = "T.DOC.NULL"
cCle_TypeDocMsgExt = "T.DOC.MSG.EXT"
cCle_TypeDocBatigest = "T.DOC.BTGEST"
cCle_TypeTempsGlobal = "T.TEMPS.GLB"
cCle_TypeTempsNull = "T.TEMPS.NULL"
cCle_TypeTempsNonAffecte = "T.TEMPS.TMPSNNFF"
cCle_TypeTempsInter = "T.TEMPS.INTER"
cCle_NumLigneReq200 = "L.RQ.SQL.200"
cCle_PeriodeSqlReq1Mois = "P.RQ.SQL.1M"
cCle_EtatDocAbsent = "E.DOC.ABS"
cCle_EtatDocPresent = "E.DOC.PRS"
cCle_EtatDocSyncro = "E.DOC.SYNCRO"
cCle_EtatInterTraite = "E.INTER.TRT"
cCle_EtatInterSansSuite = "E.INTER.CLSSSNSS"
cGestion_Colb = "A.GEST.CLB"
cGestion_ActionInter = "A.GEST.ACT.INTER"
cGestion_SuiviInter = "A.Suivi.Colb.Inter"
cGestion_NotesInter = "A.GEST.NOTES.INT"
cGestion_Rapport = "A.GEST.RAPPORT.INTER"
cGestion_MsgExt = "A.GEST.MSG.EXT"
cGestion_Param = "A.PARAM"
cGestion_Temps = "A.GEST.TEMPS"
cGestion_Equipe = "A.GEST.EQ"
cGestion_Dossier = "A.GEST.DOSSIER"
cGestion_Document = "A.GEST.DOC"
cGestion_R_I_SOC_ATCH = "A.R.IT.SOC.ATCH"
cGestion_R_I_RDV_EXST = "A.R.IT.RDV.EXST"
cGestion_R_I_RDV_EXST_DS = "A.R.IT.RDV.EXST.DS"
cGestion_Envoi_Email = "A.ENVOI.EMAIL"
cGestion_Creation_Rp = "A.CREATION.RAPPORT"
cGestion_A_PL_SOC_PRCP = "A.C.PL.SOC.PRCP"
cGestion_A_PL_SOC = "A.C.PL.SOC"
12/08/2026 Batik_WS_Com_Mob 6
Partie 1 › Projet › Code
cGestion_A_PL_EQ = "A.C.PL.EQ"
cGestion_DocNull = "A.DOC.NULL"
cGestion_DocPhoto = "A.DOC.PHOTO"
cGestion_DocAutre = "A.DOC.AUTRE"
cGestion_DocMsgExt = "A.DOC.MGS.EXT"
cGestion_DocRapport = "A.DOC.RAPPORT"
cGestion_DocBatigest = "A.DOC.BATIGEST"
cRub_Dossier = "DOSSIER"
cRub_Client = "CLIENT"
cRub_Inter = "INTER"
cRub_CtSite = "CONTACT_SITE"
cRub_CR = "CR_INTER"
cRub_CtDonneurs = "DONNEURS_ORDRE"
cRub_Photo = "PHOTO_INTER"
cRub_RDV = "RDV_INTER"
cRub_Extra = "EXTRA"
FIN
<COMPILE SI Configuration="Webservice_ISIS">
CONSTANTE
gcVersionNom ="Isis_WS_COM_MOBILE"
FIN
<SINON>
CONSTANTE
gcVersionNom ="WS_COM_MOBILE"
FIN
<FIN>
gsdParamApplication est une Source de Données
gnNbJoursLog est un entier = 10
gstContexte est un ST_ContexteMobile
gstParametres est un ST_TAB_PARAM
gtbaCleParametre est un tableau associatif d'entiers sur 8 octets
gtbaLibParametre est un tableau associatif de chaînes ANSI
gtbaGUIDCollaborateur est un tableau associatif de chaînes ANSI
gcnxBaseSync est une Connexion
gcnxReplica est une Connexion
gcnxBaseSync..Serveur ="127.0.0.1"
gcnxBaseSync..Provider =hAccèsHFClientServeur
gcnxBaseSync..Utilisateur ="superuser"
gcnxBaseSync..MotDePasse ="F911-Q927-K880-N196"
gcnxBaseSync..BaseDeDonnées =""
gcnxReplica..Serveur ="127.0.0.1"
gcnxReplica..Provider =hAccèsHFClientServeur
gcnxReplica..Utilisateur ="superuser"
gcnxReplica..MotDePasse ="F911-Q927-K880-N196"
gcnxReplica..BaseDeDonnées =""
gcnxReplica..Cryptage =hCryptageRC5_16
gsaPass est une chaîne ANSI
12/08/2026 Batik_WS_Com_Mob 7
Partie 1 › Projet › Code
gbContexteEnMemoire est un booléen
gbContexteEnMemoire=Vrai
//#A FAIRE Changer URL avec celle de SLAMM
<COMPILE SI Configuration="Webservice_ISIS">
WS_LICENCE..Adresse="https://crm.artisanspartenaires.com/WS_LICENCE_V3_WEB/awws/WS_LICENCE_V3.awws"
<SINON SI Configuration="Webservice_SLAMM">
WS_LICENCE..Adresse ="http://batik.slamm-bergeroux.com/WS_LICENCE_WEB/awws/WS_LICENCE.awws"
<SINON SI Configuration="Webservice_Bouvard">
WS_LICENCE..Adresse ="http://83.206.103.161:8010/WS_LICENCE_WEB/awws/WS_LICENCE.awws"
<SINON>
WS_LICENCE..Adresse ="https://omika.applilogik.fr/WS_LICENCE_WEB/awws/WS_LICENCE.awws"
<FIN>
LitConfigurationINI()
gsTEST est une chaîne ="VIDE"
//TraceINFO("Init projet : " + WebserviceAdresseIPClient())
gsCleMdp est une chaîne = Mdp1+Mdp3+Mdp2
<COMPILE SI Configuration="WS_COM_MOBILE">
LanceWebService()
FinProgramme()
<FIN>
Initialisation lors d'une connexion à une session prélancée de Batik_WS_Com_Mob
SI PAS DéclareContexteWebservice(gstContexte,gsTEST) ALORS
TraceCUMUL("Le contexte n'est pas restauré")
SINON
TraceCUMUL("Contexte Restauré " )
TraceCUMUL("gstContexte.bAuthentifié =" + gstContexte.bAuthentifié)
TraceCUMUL("=================")
TraceCUMUL("Contexte =" + SerialiseContexte())
TraceCUMUL("TEST =" + gsTEST)
TraceCUMUL("=================")
FIN
gstContexte.nNbConnexions ++
SI LIB_COMMUNE.gbTraceBufferReception ALORS
bufTest est un Buffer = WebserviceParamètre(paramBuffer)
TraceCUMUL("======== BUFFER =========")
TraceCUMUL(bufTest)
TraceCUMUL("======== BUFFER\ =========")
FIN
//InitialiseFichierTrace("Trace_" + gstContexte.saIdClient + DateSys() +".txt")
//TraceINFO("Init après Connexion : WS_COM_MOBILE " + ExeInfo(exeNom) + " " + ExeInfo(exeVersion) )
//TraceINFO("WebService : " + gcVersionNom + " Version : " + gcVersionWS)
//TraceINFO("Client :" + WebserviceAdresseIPClient( ))
//si gstContexte.bAuthentifié alors
// gstContexte.nNbConnexions++
////TraceINFO( "IdClient : " + gstContexte.saIdClient + rc ...
// + "Mobile : " + gstContexte.saIdMobile + rc ...
// + "Nb Connexions : " + gstContexte.nNbConnexions + rc ...
// + "Utilisateur : " + gstContexte.saNomUser )
//sinon
// TraceINFO("Ouverture de session")
//FIN
//
////Mémorise le contexte utilisateur mobile entre deux appels au WS
Fermeture de Batik_WS_Com_Mob
12/08/2026 Batik_WS_Com_Mob 8
Partie 1 › Projet › Code
HFermeConnexion(gcnxBaseSync)
HFermeConnexion(gcnxReplica)
TraceINFO("Fermeture de WS " )
TraceINFO("Contexte en sortie :" + SerialiseContexte())
TraceINFO("Fermeture de WS_COM_MOBILE")
Fermeture de session de Batik_WS_Com_Mob
TraceINFO("Fermeture de session ")
Projet
Erreurs, warnings et informations
ennoloC
engiL
Détail de l'erreur Localisation
La variable locale 'vRub' n'est pas utilisée. LIB_Traitements.ConstruireListeCha
mpModeleEmail
9 1
Procédure locale
Tous les chemins d'exécution possibles ne renvoient pas de valeur : il manque un RENVOYER LIB_Traitements.CreationTableauInt
| ou un RETOUR = <valeur> dans le traitement. | | DocRapport | | |
| ------------------------------------------- | --- | ---------- | --- | --- |
0 0
Procédure locale
Tous les chemins d'exécution possibles ne renvoient pas de valeur : il manque un RENVOYER LIB_Traitements.RqCompteRenduRe
| ou un RETOUR = <valeur> dans le traitement. | | mplirRapport | 0 | 0 |
| ------------------------------------------- | --- | ------------ | --- | --- |
Procédure locale
La variable locale 'n' n'est pas utilisée. LIB_Traitements.ConstruitTableauInt
| | | erventions_V2 | 9 | 2 |
| --- | --- | ------------- | --- | --- |
Procédure locale
Projet
Statistiques sur le code
| | | | ¹ .mmoc % | ¹ .tiart/.giL |
| --- | --- | --- | --------- | ------------- |
¹ sengiL
| LIB_COMMUNE | | | 79 10 | 7 |
| -------------------------- | ---------------- | --- | ------ | --- |
| LIB_DEBUG | | | 272 13 | 54 |
| LIB_EXE | | | 120 19 | 40 |
| LIB_GENERALE | | | 35 14 | 7 |
| LIB_GestionTableParamètres | | | 42 0 | 7 |
| LIB_ProcéduresGlobales | | | 309 7 | 34 |
| 12/08/2026 | Batik_WS_Com_Mob | | | 9 |
Partie 1 › Projet › Statistiques sur le code
| | | ¹ .mmoc % | ¹ .tiart/.giL |
| --- | --- | --------- | ------------- |
¹ sengiL
| LIB_ProcéduresGlobales2 | | 8 38 | 8 |
| ----------------------- | --- | ------- | --- |
| LIB_Structures | | 706 6 | 706 |
| LIB_Traitements | | 4915 9 | 78 |
| LIB_WS | | 67 0 | 67 |
| LIB_WS_MOB | | 336 16 | 48 |
| FEN_Connexion | | 84 0 | 28 |
| FEN_Log | | 68 0 | 34 |
| FEN_Principal | | 329 14 | 10 |
| Batik_WS_Com_Mob | | 362 10 | 90 |
| | | 7359 10 | 48 |
% comm. : Pourcentage de commentaires dans le code.
¹ Lignes : Nombre total de lignes de code.
Lig./trait. : Nombre de lignes de code par traitement.
| 12/08/2026 | Batik_WS_Com_Mob | | 10 |
| ---------- | ---------------- | --- | --- |
Partie 2 › Analyse
Partie 2
Analyse
| 12/08/2026 | Batik_WS_Com_Mob | 11 |
| ---------- | ---------------- | --- |
Partie 2 › Analyse
Analyse
Graphe
| 12/08/2026 | Batik_WS_Com_Mob | 12 |
| ---------- | ---------------- | --- |
Partie 2 › ... › D:\Projets Windev\Batik\Nouvelle Version\WebService\Batik_WS_Com_Mob\WS_SYNCHRO.ana\WS_SYNCHRO.wda › Graphe
| 12/08/2026 | Batik_WS_Com_Mob | 13 |
| ---------- | ---------------- | --- |
Partie 2 › ... › Informations générales
Analyse
Informations générales
WS_SYNCHRO.wda
D:\Projets Windev\Batik\Nouvelle
Répertoire
Version\WebService\Batik_WS_Com_Mob\WS_SYNCHRO.ana\
| Répertoire des fichiers de données | | Répertoire de l'application | | | | | |
| ---------------------------------- | --- | --------------------------- | --- | --- | --- | --- | --- |
N°génération Nb. fichiers Nb. rubriques Nb. liaisons Nb. connexions Nb. groupes
| 20 | 4 | 39 | | 0 | 1 | 0 | |
| --- | --- | --- | --- | --- | --- | --- | --- |
Analyse
Dictionnaire des rubriques
nolbuoD élC
euqinU élC
| | Rubrique | | Type | | | Utilisée par... | |
| --- | -------- | --- | ---- | --- | --- | --------------- | --- |
elliaT
| CL_ID | | | | | <Inutilisée> | | |
| --------- | --- | ------ | --- | --- | ------------ | --- | --- |
| CL_IP | | | | | <Inutilisée> | | |
| CL_IPv4 | | | | | <Inutilisée> | | |
| CL_IPv6 | | | | | <Inutilisée> | | |
| CL_NOM | | | | | <Inutilisée> | | |
| CL_Port | | | | | <Inutilisée> | | |
| CLE | | Chaîne | | 50 | PARAMETRES | | |
| CleComp | | | | | <Inutilisée> | | |
| IDCLIENTS | | | | | <Inutilisée> | | |
| IDMOBILES | | | | | <Inutilisée> | | |
Identifiant automatique (8
| IDTOMOB | | | | | TOMOB | | |
| ------------ | --- | --------------------------- | ---------------- | --- | ------------ | --- | --- |
| IDTOSRV | | Identifiant automatique (4 | | | TOSRV | | |
| IDTRAMES | | | | | <Inutilisée> | | |
| MO_ACTIF | | Booléen | | | MOBILES | | |
| MO_CLIENT | | | | | <Inutilisée> | | |
| MO_GUID | | | | | <Inutilisée> | | |
| MO_ID | | Identifiant automatique (8 | | | MOBILES | | |
| MO_ID_CLIENT | | | | | <Inutilisée> | | |
| MO_Mobile | | Chaîne | | 50 | MOBILES | | |
| TM_Buffer | | Autre mémo binaire | | | TOMOB | | |
| TM_CMD | | Chaîne | | 50 | TOMOB | | |
| TM_Date | | Date et Heure | | | TOMOB | | |
| TM_JSON | | Mémo texte | | | TOMOB | | |
| TM_Lu | | Booléen | | | TOMOB | | |
| 12/08/2026 | | | Batik_WS_Com_Mob | | | | 14 |
Partie 2 › ... › Dictionnaire des rubriques
nolbuoD élC
euqinU élC
| | Rubrique | | Type | | | Utilisée par... | |
| --- | -------- | --- | ---- | --- | --- | --------------- | --- |
elliaT
| TM_Mobile | | | Chaîne | 50 | TOMOB | | |
| --------------- | --- | --- | ------------------ | --- | ------------ | --- | --- |
| TM_MobileTM_CMD | | | Clé composée | 101 | TOMOB | | |
| TR_DATA | | | | | <Inutilisée> | | |
| TR_DEST | | | | | <Inutilisée> | | |
| TR_ETAT | | | | | <Inutilisée> | | |
| TR_ID | | | | | <Inutilisée> | | |
| TR_ID_CLIENT | | | | | <Inutilisée> | | |
| TR_ID_MOBILE | | | | | <Inutilisée> | | |
| TS_Buffer | | | Autre mémo binaire | | TOSRV | | |
| TS_CMD | | | Chaîne | 50 | TOSRV | | |
| TS_Date | | | Date et Heure | | TOSRV | | |
| TS_JSON | | | Mémo texte | | TOSRV | | |
| TS_Lu | | | Booléen | | TOSRV | | |
| TS_Mobile | | | Chaîne | 50 | TOSRV | | |
| VALTEXT | | | Mémo texte | | PARAMETRES | | |
Analyse
Connexions
¹ *nnoC .mT
| | | | | ruetasilitU | | | ¹ *cexE .mT |
| ------ | --------- | --- | ----------------- | ----------- | --------------------- | --- | ----------- |
| | Connexion | | Source de données | | Provider | | |
| cnxDev | | | | didier | WinDevClientServeurHF | | 30 30 |
localhost:4900
Connexion à 'localhost'
| Utilisée par... | | PARAMETRES | | MOBILES | | TOSRV | |
| --------------- | --- | ---------- | --- | ------- | --- | ----- | --- |
TOMOB
¹ Tm. Conn* : Timeout de connexion Tm. Exec* : Timeout d'exécution
Analyse
Fichiers et rubriques
| 12/08/2026 | | | Batik_WS_Com_Mob | | | | 15 |
| ---------- | --- | --- | ---------------- | --- | --- | --- | --- |
Partie 2 › ... › Fichiers et rubriques › Analyse
somém .sserpmoC
¹ * rcE/tceL .lnJ seénnod .tpyrC
noitarénég°N
.gerne elliaT xedni .tpyrC omém .tpyrC
| | noitaivérbA | | noitacilpéR | ¹ * étirucéS | |
| --- | ----------- | --- | ----------- | ------------ | --- |
¹ * secapsE
¹ * rcE .lnJ
| | | .otua .dI | oG2 ed + | | |
| --- | --- | --------- | -------- | --- | --- |
epyT
| MOBILES | | 3 69 | | | HFSQL |
| ------- | --- | ----- | --- | --- | ------ |
Client/Serv
eur
| PARAMETRES | | 2 68 | | | HFSQL |
| ---------- | --- | ----- | --- | --- | ------ |
Client/Serv
eur
| TOMOB | | 6 145 | | | HFSQL |
| ----- | --- | ------ | --- | --- | ------ |
Client/Serv
eur
| TOSRV | | 7 140 | | | HFSQL |
| ----- | --- | ------ | --- | --- | ------ |
Client/Serv
eur
¹ Espaces * : Complétion des chaînes par des espaces Jnl. Ecr * : Journalisation des écritures
Jnl. Lect/Ecr * : Journalisation des lectures et écritures Sécurité * : Mode sécurité renforcée
MOBILES
Fichiers et rubriques
Informations générales
| MOBILES | | MOBILES | | | |
| -------------- | --- | ----------------------- | --- | --- | --- |
| Nom sur disque | | MOBILES.fic | | | |
| Connexion | | Connexion à 'localhost' | | | |
Rubriques du fichier MOBILES
nolbuoD élC
euqinU élC tuaféd .laV
Libellé Type
| | | | | elliaT | sneS |
| ----- | ---------------------- | --- | ------------------------ | ------ | ---- |
| MO_ID | Identifiant de MOBILES | | Identifiant automatique | | |
(8 octets)
| MO_Mobile | Code unique | | Chaîne | 50 | |
| ---------- | ------------ | --- | ---------------- | --- | --- |
| MO_ACTIF | Mobile actif | | Booléen | | 0 |
| 12/08/2026 | | | Batik_WS_Com_Mob | | 16 |
Partie 2 › ... › Fichiers et rubriques › PARAMETRES › Fichiers et rubriques
PARAMETRES
Fichiers et rubriques
Informations générales
PARAMETRES PARAMETRES
Nom sur disque PARAMETRES.fic
Connexion Connexion à 'localhost'
Rubriques du fichier PARAMETRES
nolbuoD élC
| | | | euqinU élC | tuaféd .laV |
| --- | --- | --- | ---------- | ----------- |
Libellé Type
elliaT
sneS
| CLE | CLE | | 50 | |
| --- | --- | --- | --- | --- |
Chaîne
| VALTEXT | VALTEXT | Mémo texte | | |
| ---------- | ------- | ---------------- | --- | --- |
| 12/08/2026 | | Batik_WS_Com_Mob | | 17 |
Partie 2 › ... › Fichiers et rubriques › TOMOB › Fichiers et rubriques
TOMOB
Fichiers et rubriques
Informations générales
TOMOB TOMOB
Nom sur disque TOMOB.fic
Connexion Connexion à 'localhost'
Rubriques du fichier TOMOB
nolbuoD élC
| | | | euqinU élC | tuaféd .laV |
| --- | --- | --- | ---------- | ----------- |
Libellé Type
elliaT
sneS
| IDTOMOB | Identifiant de TOMOB | Identifiant automatique | | |
| ------- | -------------------- | ------------------------ | --- | --- |
(8 octets)
| TM_Date | TM_Date | Date et Heure | | |
| ------- | ------- | -------------- | --- | --- |
(aaaammjjhhmmssccc)
| TM_JSON | TM_JSON | Mémo texte | | |
| --------------- | ------------------ | ------------------ | --- | --- |
| TM_Mobile | TM_Mobile | Chaîne | 50 | |
| TM_Lu | TM_Lu | Booléen | | 0 |
| TM_Buffer | TM_Buffer | Autre mémo binaire | | |
| TM_CMD | TM_CMD | Chaîne | 50 | |
| TM_MobileTM_CMD | TM_Mobile + TM_CMD | Clé composée : | 101 | |
TM_Mobile+TM_CMD+TM
_Lu
| 12/08/2026 | | Batik_WS_Com_Mob | | 18 |
| ---------- | --- | ---------------- | --- | --- |
Partie 2 › ... › Fichiers et rubriques › TOSRV › Fichiers et rubriques
TOSRV
Fichiers et rubriques
Informations générales
TOSRV TOSRV
Nom sur disque TOSRV.fic
Connexion Connexion à 'localhost'
Rubriques du fichier TOSRV
nolbuoD élC
| | | | euqinU élC | tuaféd .laV |
| --- | --- | --- | ---------- | ----------- |
Libellé Type
elliaT
sneS
| IDTOSRV | Identifiant de TOSRV | Identifiant automatique | | |
| ------- | -------------------- | ------------------------ | --- | --- |
(4 octets)
| TS_Date | Date heure création | Date et Heure | | SYSDATE |
| ------- | ------------------- | -------------- | --- | -------- |
(aaaammjjhhmmssccc)
| TS_JSON | Données | Mémo texte | | |
| ---------- | --------- | ------------------ | --- | --- |
| TS_Lu | Lu | Booléen | | 0 |
| TS_Mobile | ID Mobile | Chaîne | 50 | |
| TS_Buffer | Buffer | Autre mémo binaire | | |
| TS_CMD | Commande | Chaîne | 50 | |
| 12/08/2026 | | Batik_WS_Com_Mob | | 19 |
Partie 3 › Fenêtre WINDEV
Partie 3
Fenêtre WINDEV
| 12/08/2026 | Batik_WS_Com_Mob | 20 |
| ---------- | ---------------- | --- |
Partie 3 › Fenêtre WINDEV
FEN_Principal
Image
FEN_Principal
Informations générales
FEN_Principal
D:\Projets Windev\Batik\Nouvelle
Fichier physique
Version\WebService\Batik_WS_Com_Mob\FEN_Principal.wdw
Créé par susana@applilogik.fr
Date de création 14/01/2026 08:47:29
Dernière modification par susana@applilogik.fr
Date dernière modification 16/01/2026 16:08:05
Titre FR: Principal
12/08/2026 Batik_WS_Com_Mob 21
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations générales
| Type fenêtre | | Fenêtre libre | | | |
| ------------------------ | ------------ | ----------------------------- | --------- | --------------- | --- |
| Mode ouverture (Desktop) | | Centrée par rapport à la mère | | | |
| Position X | 0 Position Y | | 0 Largeur | 1200 Hauteur | 599 |
| Visible | | Barre de titre | | Menu système | |
| Icône réduction | | Icône agrandissement | | Icône aide ctx. | |
| Barre de message | | Détourer le fond | | Mode 9 images | |
| Redimensionnable | | Avec grip | | Grip dans image | |
| Déplace/fond | | Sauve position | | Ascenseur auto. | |
| Gestion grande police | | Thème XP | | | |
Ctx. HFSQL indép.
| Etat initial | | Actif | | | |
| ------------------------------- | --- | ----------------------------------- | --- | --- | --- |
| Curseur survol | | 0 | | | |
| Copie d'écran | | Oui | | | |
| Unité des tailles | | Plateforme unique desktop OU mobile | | | |
| Ancrage au contenu | | <Aucun> | | | |
| Opacité | | 100 | | | |
| Titre personnalisé | | Oui | | | |
| Titre perso. : hauteur | | 30 | | | |
| Titre perso. : Affiche le titre | | Oui | | | |
| Pos. Menu Perso | | Non | | | |
| Icône de fermeture | | Oui | | | |
| Type cadre | | Double | | | |
| Transparence Vista | | Non | | | |
| Transparence gérée par Vista | | Non | | | |
| Appliquer le gabarit du projet | | <Défaut> | | | |
| Grisé : Utiliser couleur perso. | | Non | | | |
| Grisé : Algo pour images | | <Défaut> | | | |
| Style du menu | | Office XP | | | |
| Mode bulle d'aide | | Non | | | |
| Mode Bulle : Point chaud | | Haut gauche | | | |
| Mode Bulle : Décalage X | | 0 | | | |
| Mode Bulle : Décalage Y | | 0 | | | |
| Valide auto. | | 0 | | | |
| Lib. + tps restant | | Oui | | | |
| Pos. X Menu | | 6 | | | |
| Pos. Y Menu | | 28 | | | |
| Texte Markdown | | Non | | | |
| Mode menu ctx. | | <Aucun> | | | |
| M.C.U. | | Oui | | | |
| Anim. Ouverture | | 0 | | | |
| Anim. Fermeture | | 0 | | | |
| Durée Anim. Ouverture | | 100 | | | |
| Durée Anim. Fermeture | | 50 | | | |
| Adapte Taille contenu | | Non | | | |
| Assombri quand inactif | | Oui | | | |
Déplace souris sur bouton par
Non
| 12/08/2026 | | | Batik_WS_Com_Mob | | 22 |
| ---------- | --- | --- | ---------------- | --- | --- |
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations générales
| Compact. barres outils | | Non | | | | |
| ---------------------- | --- | --- | --- | --- | --- | --- |
Statistiques de la fenêtre
| | Champ de saisie | | 3 | Bouton | | 1 |
| --- | ------------------- | --- | --- | ---------------- | --- | --- |
| | Sélecteur | | 1 | Image | | 1 |
| | Table | | 5 | Combo | | 5 |
| | Onglet | | 1 | Superchamp | | 1 |
| | Option de sélecteur | | 2 | Colonne de table | | 19 |
| | Volet (Onglet) | | 3 | | | |
Nombre d'éléments dans la fenêtre : 42
FEN_Principal
Informations sur les champs
Fenêtre : FEN_Principal
Champ de saisie
euqitamotua tnemecaffE
euqitamotua eisias niF
reihcif eétsissa eisiaS
| | | | | eriotagilbo eisiaS | | .zroH tnemeliféD .trev tnemeliféD |
| --- | --- | --- | --- | ------------------ | --- | --------------------------------- |
latnoziroh .csA
essap ed toM
| | | | BAT ehcuoT | | cnalb à esiM ediv is LLUN | lacitrev .csA |
| --- | --------------------- | --- | ------------------------ | --------------------- | ------------------------- | ------------- |
| | | | laitini tatE eisias epyT | engilitluM FTR tamroF | | |
| | X noitisoP Y noitisoP | | | | | |
ruegraL ruetuaH
elbisiV
nalP
| SAI_DateDebut | 606 19 | 131 41 0 | Actif Date | Non | | |
| ------------- | ------ | -------- | ---------- | --- | --- | --- |
| SAI_DateFin | 743 19 | 131 41 0 | Actif Date | Non | | |
Sélecteur
ellennoitroporp .loC
| | | | | | BAT ehcuoT sennoloc .bN | |
| --- | --- | --- | --- | ------------ | ----------------------- | ----------- |
| | | | | laitini tatE | | staté siorT |
X noitisoP Y noitisoP
ruegraL ruetuaH
elbisiV
nalP
| SEL_WSCom | | 880 29 | 295 28 | 0 Actif | | 2 |
| ---------- | --- | ------ | ---------------- | ------- | --- | --- |
| 12/08/2026 | | | Batik_WS_Com_Mob | | | 23 |
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Image
| | | | | | | | | | | | cilc ruop eriatiroirP tuaféd rap eéminA | |
| --- | --- | --- | ---------- | ---------- | ------- | ------- | --- | --- | ------------ | --- | --------------------------------------- | ---------- |
| | | | | | | | | | laitini tatE | | | sucof cevA |
| | | | X noitisoP | Y noitisoP | | | | | | | | |
| | | | | | ruegraL | ruetuaH | | | | | cilc cevA | |
elbisiV
nalP
| IMG_Recharger | | | 1143 | | -2 49 | 31 | | 0 | Actif | | | |
| ------------- | --- | --- | ---- | --- | ----- | --- | --- | --- | ----- | --- | --- | --- |
Combo
reihcif eétsissa eisiaS
| | | | | | | | | | | eriotagilbo eisiaS | | .zroH tnemeliféD |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ------------------ | --- | ---------------- |
ruesnecsa elluB
ediv is LLUN
| | | | | | | | BAT ehcuoT | | eisias cevA | | | |
| --- | --- | ---------- | ---------- | ------- | ------- | ------------ | ---------- | -------- | ----------- | --- | --- | --- |
| | | X noitisoP | Y noitisoP | | | laitini tatE | | | | | | |
| | | | ruegraL | ruetuaH | | | | sruocraP | | | | |
| | | | | | elbisiV | | | reihciF | | | | |
eéirT
nalP
| CMB_Users | | 6 | 12 594 | 48 | 0 | Actif | | Mémoire | | Non | | |
| --------- | --- | --- | ------ | --- | --- | ----- | --- | ------- | --- | --- | --- | --- |
Superchamp
| | | | | | | | | | | | laitini tatE | BAT ehcuoT |
| --- | --- | --- | --- | ---------- | ---------- | ------- | --- | ------- | --- | --- | ------------ | ---------- |
| | | | | X noitisoP | Y noitisoP | | | | | | | |
| | | | | | | ruegraL | | ruetuaH | | | | |
elbisiV
nalP
| SC_Menu | | | | 8 | 66 | 1184 | | 491 | 0 | | Actif | |
| ------- | --- | --- | --- | --- | --- | ---- | --- | --- | --- | --- | ----- | --- |
Superchamp : SC_Menu
Champ de saisie
euqitamotua tnemecaffE
euqitamotua eisias niF
reihcif eétsissa eisiaS
| | | | | | | | | | eriotagilbo eisiaS | | .zroH tnemeliféD .trev tnemeliféD | |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | ------------------ | --- | --------------------------------- | --- |
latnoziroh .csA
| | | | | | | | | essap ed toM | cnalb à esiM | ediv is LLUN | | lacitrev .csA |
| --- | ---------- | ---------- | --------------- | --- | ------------ | ---------------------- | ---------- | ------------ | ------------ | ------------ | --- | ------------- |
| | | | | | | BAT ehcuoT eisias epyT | | FTR tamroF | | | | |
| | X noitisoP | Y noitisoP | | | laitini tatE | | engilitluM | | | | | |
| | | | ruegraL ruetuaH | | | | | | | | | |
elbisiV
nalP
| SAI_Recherche | 754 | 77 | 339 48 | 0 | Actif | Texte | | Non | | | | |
| ------------- | --- | --- | ------ | --- | ---------------- | ----- | --- | --- | --- | --- | --- | --- |
| 12/08/2026 | | | | | Batik_WS_Com_Mob | | | | | | | 24 |
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Bouton
notuob epyT
| | | | | | | | | laitini tatE BAT ehcuoT | | |
| --- | --- | --- | ---------- | ---------- | ------- | ------- | --- | ----------------------- | --- | --- |
| | | | X noitisoP | Y noitisoP | | | | | | |
| | | | | | ruegraL | ruetuaH | | | | |
elbisiV
nalP
| BTN_Recherche | | | 1099 | 101 | | 80 24 | 0 | Actif | Normal | |
| ------------- | --- | --- | ---- | --- | --- | ----- | --- | ----- | ------ | --- |
Table
eitros ne tnemertsigernE
ruesnecsa/egahciffA
| | | | | | | | | lennoitroporp .csA | .loc .gifnoc .oméM | |
| --- | ---------- | ---------- | --- | --- | ------------ | ---------- | ----------------------------- | ------------------------------ | ------------------ | -------------- |
| | | | | | | | )(ertliFH resilitU | ruesnecsa elluB EERTNE noitseG | eércna ennoloC | 5.5 elbitapmoC |
| | | | | | | | .gerne egacolB noitcelésitluM | edacsac eisiaS | | |
| | | | | | laitini tatE | BAT ehcuoT | | | | |
| | X noitisoP | Y noitisoP | | | | | sruocraP | | | |
ruegraL ruetuaH
| | | | | elbisiV | | reihciF | | | | |
| --- | --- | --- | --- | ------- | --- | ------- | --- | --- | --- | --- |
nalP
| TABLE_Colb | 13 | 229 | 442 321 | 0 | affichag | Mémoir | | | | 2 |
| -------------- | --- | --- | ------- | --- | -------- | ------ | --- | --- | --- | --- |
| TABLE_Contexte | 471 | 168 | 696 376 | 0 | affichag | Mémoir | | | | 2 |
| TABLE_Param | 24 | 224 | 432 328 | 0 | affichag | Mémoir | | | | 3 |
Mémoir
| TABLE_RDV | 16 | 222 1169 | 328 | 0 | affichag | | | | | 6 |
| ------------- | --- | -------- | ------- | --- | -------- | ------ | --- | --- | --- | --- |
| TABLE_RDVColb | 465 | 229 | 720 317 | 0 | affichag | Mémoir | | | | 6 |
Combo
reihcif eétsissa eisiaS
| | | | | | | | | eriotagilbo eisiaS | | .zroH tnemeliféD |
| --- | --- | --- | --- | --- | --- | --- | --- | ------------------ | --- | ---------------- |
ruesnecsa elluB
ediv is LLUN
| | | | | | | | BAT ehcuoT | eisias cevA | | |
| --- | ---------- | ---------- | ------- | ------- | ------- | ------------ | ---------- | ----------- | --- | --- |
| | X noitisoP | Y noitisoP | | | | laitini tatE | | | | |
| | | | | ruetuaH | | | sruocraP | | | |
| | | | ruegraL | | elbisiV | | reihciF | | | |
eéirT
nalP
| CMB_Proc | 14 | | 77 723 | 48 | 0 | Actif | Mémoire | Non | | |
| ------------- | --- | --- | ------ | --- | --- | ----- | ------- | --- | --- | --- |
| CMB_ProcColb | 14 | 161 | 1170 | 48 | 0 | Actif | Mémoire | Non | | |
| CMB_ProcParam | 24 | 168 | 432 | 48 | 0 | Actif | Mémoire | Non | | |
| CMB_ProcRDV | 16 | 168 | 1169 | 48 | 0 | Actif | Mémoire | Non | | |
Onglet
slennoitroporp steloV
engil/stelov .bN
BAT ehcuoT
| | | X noitisoP | Y noitisoP | | | | laitini tatE | stelov .soP | | |
| --- | --- | ---------- | ---------- | --- | --- | --- | ------------ | ----------- | --- | --- |
ruetuaH
ruegraL
elbisiV
nalP
| ONG_Info | | | 9 131 | 1182 | 425 | 0 | Actif | haut | | 0 |
| ---------- | --- | --- | ----- | ---- | ---------------- | --- | ----- | ---- | --- | --- |
| 12/08/2026 | | | | | Batik_WS_Com_Mob | | | | | 25 |
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Table : SC_Menu.ONG_Info.TABLE_Colb
Colonne de table
reihcif eétsissa eisiaS
elbatsuja ruegraL
| | | ehcuag à eéxiF elbairt ennoloC | ehcrehcer cevA | | |
| --- | --- | ------------------------------ | --------------------------- | ---------------------- | ----------- |
| | | | .zroh egardaC .trev egardaC | | |
| | | laitini tatE elbaçalpéD | | eisias epyT FTR tamroF | eisias cevA |
engilitluM
ruegraL
elbisiV
| epyT | | | | | eéirT |
| --------------- | --- | ----- | ------------- | ------- | ----- |
| COL_C_IdColb | 176 | Actif | Droite Centre | Numériq | |
| COL_C_NomPrenom | 243 | Actif | Gauche Centre | Texte | |
Table : SC_Menu.ONG_Info.TABLE_Contexte
Colonne de table
reihcif eétsissa eisiaS
elbatsuja ruegraL
| | | ehcuag à eéxiF elbairt ennoloC | ehcrehcer cevA | | |
| --- | --- | ------------------------------ | --------------------------- | --- | --- |
| | | | .zroh egardaC .trev egardaC | | |
FTR tamroF
| | | laitini tatE elbaçalpéD | | eisias epyT engilitluM | eisias cevA |
| --- | --- | ----------------------- | --- | ---------------------- | ----------- |
ruegraL
elbisiV
| epyT | | | | | eéirT |
| ------------- | --- | ----- | ------------- | ----- | ----- |
| COL_C_Type | 100 | Actif | Gauche Centre | Texte | |
| COL_C_Libelle | 561 | Actif | Gauche Centre | Texte | |
Table : SC_Menu.ONG_Info.TABLE_Param
Colonne de table
reihcif eétsissa eisiaS
elbatsuja ruegraL
elbairt ennoloC ehcrehcer cevA
| | | ehcuag à eéxiF | .zroh egardaC | | |
| --- | --- | -------------- | ------------- | --- | --- |
.trev egardaC
| | | elbaçalpéD | | eisias epyT FTR tamroF | eisias cevA |
| --- | --- | ---------- | --- | ---------------------- | ----------- |
laitini tatE engilitluM
ruegraL elbisiV
| epyT | | | | | eéirT |
| ---- | --- | --- | --- | --- | ----- |
Numériq
| COL_IdParam | 118 | Actif | Droite Centre | | |
| ----------- | --- | ---------------- | ------------- | ----- | --- |
| COL_Type | 100 | Actif | Gauche Centre | Texte | |
| COL_Libelle | 196 | Actif | Gauche Centre | Texte | |
| 12/08/2026 | | Batik_WS_Com_Mob | | | 26 |
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Table : SC_Menu.ONG_Info.TABLE_RDV
Colonne de table
reihcif eétsissa eisiaS
elbatsuja ruegraL
| | | ehcuag à eéxiF elbairt ennoloC | ehcrehcer cevA | | |
| --- | --- | ------------------------------ | --------------------------- | ---------------------- | ----------- |
| | | | .zroh egardaC .trev egardaC | | |
| | | laitini tatE elbaçalpéD | | eisias epyT FTR tamroF | eisias cevA |
engilitluM
ruegraL
elbisiV
| epyT | | | | | eéirT |
| ----------- | --- | ----- | ------------- | ------- | ----- |
| COL_IdRDV | 176 | Actif | Droite Centre | Numériq | |
| COL_IdInter | 133 | Actif | Droite Centre | Numériq | |
| COL_DateD | 119 | Actif | Droite Centre | Date | |
| COL_DateF | 114 | Actif | Droite Centre | Date | |
| COL_NInter | 132 | Actif | Gauche Centre | Texte | |
| COL_Lieu | 473 | Actif | Gauche Centre | Texte | |
Table : SC_Menu.ONG_Info.TABLE_RDVColb
Colonne de table
reihcif eétsissa eisiaS
elbatsuja ruegraL
| | | ehcuag à eéxiF elbairt ennoloC | ehcrehcer cevA | | |
| --- | --- | ------------------------------ | --------------------------- | ---------------------- | ----------- |
| | | | .zroh egardaC .trev egardaC | | |
| | | laitini tatE elbaçalpéD | | eisias epyT FTR tamroF | eisias cevA |
engilitluM
ruegraL
elbisiV
| epyT | | | | | eéirT |
| ------------- | --- | ----- | ------------- | ------- | ----- |
| COL_C_IdRDV | 176 | Actif | Droite Centre | Numériq | |
| COL_C_IdInter | 133 | Actif | Droite Centre | Numériq | |
| COL_C_DateD | 119 | Actif | Droite Centre | Date | |
| COL_C_DateF | 114 | Actif | Droite Centre | Date | |
| COL_C_NInter | 132 | Actif | Gauche Centre | Texte | |
| COL_C_Lieu | 16 | Actif | Gauche Centre | Texte | |
Fenêtre : FEN_Principal
| 12/08/2026 | | Batik_WS_Com_Mob | | | 27 |
| ---------- | --- | ---------------- | --- | --- | --- |
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Combo : CMB_Users
Libellé FR: Liste des utilisateurs
Ordre navigation 1
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Util. gValeurMémorisée pour valeur Oui
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Cadrage horz. Gauche
Cadrage vert. Centre
Orientation verticale Non
Hauteur liste 0
Largeur liste 592
Larg. déroulée perso. Non
Hauteur ligne 20
Retrait gauche 2
Position X interne 8
Largeur interne 592
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Taille de saisie 0
Type saisie Texte
Mode ellipse <Aucun>
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Effacement automatique Non
Fin saisie automatique Non
Vide si zéro Non
Avec focus Oui
Redimensionnable Oui
Mémorise la taille Oui
Historique des saisies Non
Historique des sélections Non
gLienActive Oui
12/08/2026 Batik_WS_Com_Mob 28
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Valeur persistante Non
Texte Markdown Non
Mode menu ctx. <Aucun>
Avec recherche Non
Nb. Enreg. Max 0
1ère ligne perso. Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Largeur
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 500 Taux anc. hauteur 1000
Image : IMG_Recharger
Valeur initiale FR: D:\Projets Windev\Batik\Nouvelle Version\WebService\Batik_WS_Com_Mob\cha.png
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Menu manip. image <Aucun menu>
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Cadrage horz. Gauche
Cadrage vert. Haut
Cadrage fonctions gXXX Tenir compte du cadrage
Numéro aide 0
Opacité 100
Ascenseur et zoom auto. Non
Autorise ChangeGabarit Oui
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Texte Markdown Non
Mode menu ctx. <Aucun>
Mire visible Oui
Zoom par double taps Oui
Mode 9 images Non
Chargement en fond Non
Orientation EXIF Oui
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Droite
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 29
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Champ de saisie : SAI_DateDebut
Libellé FR: Date Début
Ordre navigation 2
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Oui
Bouton Calculatrice Oui
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Droite
Position X interne 606
Largeur interne 126
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: UseSystemMask
Format retour AAAAMMJJ
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
12/08/2026 Batik_WS_Com_Mob 30
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Avec focus Oui
Historique des saisies Non
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Non
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage
Taux anc. droite 500 Taux anc. bas 1000 Taux anc. largeur 100 Taux anc. hauteur 1000
Champ de saisie : SAI_DateFin
Libellé FR: Date Fin
Ordre navigation 3
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Oui
Bouton Calculatrice Oui
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Droite
Position X interne 743
Largeur interne 126
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
12/08/2026 Batik_WS_Com_Mob 31
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Taille de saisie 0
Masque saisie FR: UseSystemMask
Format retour AAAAMMJJ
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Non
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Non
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage
Taux anc. droite 600 Taux anc. bas 1000 Taux anc. largeur 100 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 32
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Superchamp : SC_Menu
Ordre navigation 5
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Largeur externe 1182
Hauteur externe 489
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Autorise ChangeGabarit Oui
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Valeur persistante Non
Texte Markdown Non
Source de remplissage Fichier chargé en mémoire
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Largeur et hauteur
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Sélecteur : SEL_WSCom
Libellé FR: &Sélecteur 2 colonnes
Valeur initiale 1
Ordre navigation 4
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Avec ValeurRenvoyée Oui
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Cadrage vert. Haut
Hauteur options auto Oui
Compacter option Oui
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Look Vista Non
12/08/2026 Batik_WS_Com_Mob 33
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Type bandeau Libellé et sous-libellé
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Saisie obligatoire Non
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Valeur persistante Non
Option multilignes Non
Option format RTF Non
Texte Markdown Non
Mode menu ctx. <Aucun>
Image D:\Projets Windev\Batik\Nouvelle Version\WebService\Batik_WS_Com_Mob\Gabarits\WD\270
Nb. états image 1
Largeur image 64
Nb. étapes animation 1
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Droite
Taux anc. droite 700 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Superchamp : SC_Menu
Bouton : SC_Menu.BTN_Recherche
Libellé FR: Rechercher
Ordre navigation 3
Curseur survol 0
UI par l'utilisateur Selon fenêtre
On/Off Non
Recopie Option menu flèche Non
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Retrait gauche 0
Réduction Ruban Ne pas réduire le bouton
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Animée par défaut Oui
Mode ellipse <Aucun>
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
12/08/2026 Batik_WS_Com_Mob 34
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Type flèche <Aucun>
Texte Markdown Non
Mode menu ctx. <Aucun>
Nb. états image 1
Nb. états fond 1
Etirement de l'image de fond Largeur et hauteur
Nb. étapes animation 1
Largeur Halo 0
Hauteur Halo 0
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Droite
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Combo : SC_Menu.CMB_Proc
Libellé FR: Procédures
Ordre navigation 1
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Util. gValeurMémorisée pour valeur Oui
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Cadrage horz. Gauche
Cadrage vert. Centre
Orientation verticale Non
Hauteur liste 0
Largeur liste 721
Larg. déroulée perso. Non
Hauteur ligne 20
Retrait gauche 2
Position X interne 16
Largeur interne 721
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Taille de saisie 0
Type saisie Texte
Mode ellipse <Aucun>
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
12/08/2026 Batik_WS_Com_Mob 35
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Effacement automatique Non
Fin saisie automatique Non
Vide si zéro Non
Avec focus Oui
Redimensionnable Oui
Mémorise la taille Oui
Historique des saisies Non
Historique des sélections Non
gLienActive Oui
Valeur persistante Non
Texte Markdown Non
Mode menu ctx. <Aucun>
Avec recherche Non
Nb. Enreg. Max 0
1ère ligne perso. Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Largeur
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 600 Taux anc. hauteur 1000
Combo : SC_Menu.ONG_Info.CMB_ProcColb
Libellé FR: Procédures lié a un rendez-vous/ collaborateur sélectionné
Ordre navigation 1
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Util. gValeurMémorisée pour valeur Oui
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Cadrage horz. Gauche
Cadrage vert. Centre
Orientation verticale Non
Hauteur liste 0
Largeur liste 1168
Larg. déroulée perso. Non
Hauteur ligne 20
12/08/2026 Batik_WS_Com_Mob 36
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Retrait gauche 2
Position X interne 16
Largeur interne 1168
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Taille de saisie 0
Type saisie Texte
Mode ellipse <Aucun>
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Effacement automatique Non
Fin saisie automatique Non
Vide si zéro Non
Avec focus Oui
Redimensionnable Oui
Mémorise la taille Oui
Historique des saisies Non
Historique des sélections Non
gLienActive Oui
Valeur persistante Non
Texte Markdown Non
Mode menu ctx. <Aucun>
Avec recherche Non
Nb. Enreg. Max 0
1ère ligne perso. Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Largeur
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 37
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Combo : SC_Menu.ONG_Info.CMB_ProcParam
Libellé FR: Procédures lié aux paramètres
Ordre navigation 1
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Util. gValeurMémorisée pour valeur Oui
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Cadrage horz. Gauche
Cadrage vert. Centre
Orientation verticale Non
Hauteur liste 0
Largeur liste 432
Larg. déroulée perso. Non
Hauteur ligne 20
Retrait gauche 2
Position X interne 24
Largeur interne 432
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Taille de saisie 0
Type saisie Texte
Mode ellipse <Aucun>
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Effacement automatique Non
Fin saisie automatique Non
Vide si zéro Non
Avec focus Oui
Redimensionnable Oui
Mémorise la taille Oui
Historique des saisies Non
Historique des sélections Non
gLienActive Oui
12/08/2026 Batik_WS_Com_Mob 38
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Valeur persistante Non
Texte Markdown Non
Mode menu ctx. <Aucun>
Avec recherche Non
Nb. Enreg. Max 0
1ère ligne perso. Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage
Taux anc. droite 0 Taux anc. bas 0 Taux anc. largeur 350 Taux anc. hauteur 1000
Combo : SC_Menu.ONG_Info.CMB_ProcRDV
Libellé FR: Procédures lié a un rendez-vous sélectionné
Ordre navigation 1
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Util. gValeurMémorisée pour valeur Oui
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Cadrage horz. Gauche
Cadrage vert. Centre
Orientation verticale Non
Hauteur liste 0
Largeur liste 1169
Larg. déroulée perso. Non
Hauteur ligne 20
Retrait gauche 2
Position X interne 16
Largeur interne 1169
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Taille de saisie 0
Type saisie Texte
Mode ellipse <Aucun>
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
12/08/2026 Batik_WS_Com_Mob 39
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Effacement automatique Non
Fin saisie automatique Non
Vide si zéro Non
Avec focus Oui
Redimensionnable Oui
Mémorise la taille Oui
Historique des saisies Non
Historique des sélections Non
gLienActive Oui
Valeur persistante Non
Texte Markdown Non
Mode menu ctx. <Aucun>
Avec recherche Non
Nb. Enreg. Max 0
1ère ligne perso. Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Largeur
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Onglet : SC_Menu.ONG_Info
Libellé FR: &Onglet
Valeur initiale 1
Ordre navigation 4
Curseur survol 0
Onglet dynamique Non
Libellé volet FR: Nouvel onglet
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Retrait gauche 0
Retrait des onglets 0
Numéro aide 0
Autorise ChangeGabarit Oui
Bouton Fermer Oui
Bouton Nouveau Oui
Volets détachables Oui
Mémoriser Configuration Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
12/08/2026 Batik_WS_Com_Mob 40
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Facteur d'agrandissement 0
Swipe Non
Mode affichage volets < Standard >
Valeur persistante Non
Texte Markdown Non
Mode menu ctx. <Aucun>
Nb. états image 1
Ancrage Largeur et hauteur
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SC_Menu.SAI_Recherche
Libellé FR: Recherche d'une intervention
Ordre navigation 2
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 754
Largeur interne 339
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
12/08/2026 Batik_WS_Com_Mob 41
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Asc. vertical Automatique
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Non
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Non
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage
Taux anc. droite 600 Taux anc. bas 1000 Taux anc. largeur 300 Taux anc. hauteur 1000
Table : SC_Menu.ONG_Info.TABLE_Colb
Libellé FR: Table
Ordre navigation 2
Curseur survol 0
Mode Loupe Filtre <contient>
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Hauteur ligne max. 0
Hauteur ligne (sans marges) 18
12/08/2026 Batik_WS_Com_Mob 42
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Marge en haut 2
Marge en bas 2
Marge à gauche 5
Marge à droite 3
Sens Vertical
Retrait gauche 0
Angle titre 0
Cadrage fonctions gXXX Tenir compte du cadrage
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Hauteur des lignes Non
Sélection multiple Non
Bulle sur tronqués Oui
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Scroll au pixel Oui
Scroll au doigt Non
Asc. horizontal Automatique
Asc. vertical Toujours visible
Mode de sélection Sélection simple
Sélect. colonnes Sans sélection
Sélect. cellules Sans sélection
Ajout éléments supplémentaires Non
Nb. max d'éléments 10000
Etat chargement Non
Retrait gauche FI détail 0
FI détail au survol Non
Même contenu/ligne Non
Aff. résultats Sans affichage
Somme FR: Somme
Moyenne FR: Moyenne
Compteur FR: Compteur
Minimum FR: Minimum
Maximum FR: Maximum
Sauve position auto Non
Ruptures Enroulables Oui
Titre multiligne Oui
Menu ctx. colonne Oui
Texte Markdown Non
Mode menu ctx. <Aucun>
Mémoriser filtres Non
Mémoriser tris Non
Nb. Enreg. Max 0
Ajout/Suppr. dans variable Oui
Synchro HFSQL C/S Jamais
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Largeur et hauteur
Taux anc. droite 1000 Taux anc. bas 500 Taux anc. largeur 350 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 43
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Table : SC_Menu.ONG_Info.TABLE_Contexte
Libellé FR: Table
Ordre navigation 2
Curseur survol 0
Mode Loupe Filtre <contient>
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Hauteur ligne max. 5
Hauteur ligne (sans marges) 18
Marge en haut 2
Marge en bas 2
Marge à gauche 5
Marge à droite 3
Sens Vertical
Retrait gauche 0
Angle titre 0
Cadrage fonctions gXXX Tenir compte du cadrage
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Hauteur des lignes Non
Sélection multiple Non
Bulle sur tronqués Oui
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Scroll au pixel Oui
Scroll au doigt Non
Asc. horizontal Automatique
Asc. vertical Toujours visible
Mode de sélection Sélection simple
Sélect. colonnes Sans sélection
Sélect. cellules Sans sélection
Ajout éléments supplémentaires Non
Nb. max d'éléments 10000
Etat chargement Non
Retrait gauche FI détail 0
FI détail au survol Non
Même contenu/ligne Non
Aff. résultats Sans affichage
Somme FR: Somme
Moyenne FR: Moyenne
Compteur FR: Compteur
Minimum FR: Minimum
Maximum FR: Maximum
Sauve position auto Non
Ruptures Enroulables Oui
12/08/2026 Batik_WS_Com_Mob 44
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Titre multiligne Oui
Menu ctx. colonne Oui
Texte Markdown Non
Mode menu ctx. <Aucun>
Mémoriser filtres Non
Mémoriser tris Non
Nb. Enreg. Max 0
Ajout/Suppr. dans variable Oui
Synchro HFSQL C/S Jamais
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Droite, largeur et hauteur
Taux anc. droite 350 Taux anc. bas 1000 Taux anc. largeur 650 Taux anc. hauteur 1000
Table : SC_Menu.ONG_Info.TABLE_Param
Libellé FR: Table
Ordre navigation 3
Curseur survol 0
Mode Loupe Filtre <contient>
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Hauteur ligne max. 5
Hauteur ligne (sans marges) 18
Marge en haut 2
Marge en bas 2
Marge à gauche 5
Marge à droite 3
Sens Vertical
Retrait gauche 0
Angle titre 0
Cadrage fonctions gXXX Tenir compte du cadrage
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Hauteur des lignes Non
Sélection multiple Non
Bulle sur tronqués Oui
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Scroll au pixel Oui
Scroll au doigt Non
Asc. horizontal Automatique
Asc. vertical Toujours visible
12/08/2026 Batik_WS_Com_Mob 45
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Mode de sélection Sélection simple
Sélect. colonnes Sans sélection
Sélect. cellules Sans sélection
Ajout éléments supplémentaires Non
Nb. max d'éléments 10000
Etat chargement Non
Retrait gauche FI détail 0
FI détail au survol Non
Même contenu/ligne Non
Aff. résultats Sans affichage
Somme FR: Somme
Moyenne FR: Moyenne
Compteur FR: Compteur
Minimum FR: Minimum
Maximum FR: Maximum
Sauve position auto Non
Ruptures Enroulables Oui
Titre multiligne Oui
Menu ctx. colonne Oui
Texte Markdown Non
Mode menu ctx. <Aucun>
Mémoriser filtres Non
Mémoriser tris Non
Nb. Enreg. Max 0
Ajout/Suppr. dans variable Oui
Synchro HFSQL C/S Jamais
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Droite, largeur et hauteur
Taux anc. droite 0 Taux anc. bas 0 Taux anc. largeur 350 Taux anc. hauteur 1000
Table : SC_Menu.ONG_Info.TABLE_RDV
Libellé FR: Table
Ordre navigation 2
Curseur survol 0
Mode Loupe Filtre <contient>
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Hauteur ligne max. 0
Hauteur ligne (sans marges) 18
Marge en haut 2
Marge en bas 2
Marge à gauche 5
Marge à droite 3
12/08/2026 Batik_WS_Com_Mob 46
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Sens Vertical
Retrait gauche 0
Angle titre 0
Cadrage fonctions gXXX Tenir compte du cadrage
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Hauteur des lignes Non
Sélection multiple Non
Bulle sur tronqués Oui
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Scroll au pixel Oui
Scroll au doigt Non
Asc. horizontal Automatique
Asc. vertical Toujours visible
Mode de sélection Sélection simple
Sélect. colonnes Sans sélection
Sélect. cellules Sans sélection
Ajout éléments supplémentaires Non
Nb. max d'éléments 10000
Etat chargement Non
Retrait gauche FI détail 0
FI détail au survol Non
Même contenu/ligne Non
Aff. résultats Sans affichage
Somme FR: Somme
Moyenne FR: Moyenne
Compteur FR: Compteur
Minimum FR: Minimum
Maximum FR: Maximum
Sauve position auto Non
Ruptures Enroulables Oui
Titre multiligne Oui
Menu ctx. colonne Oui
Texte Markdown Non
Mode menu ctx. <Aucun>
Mémoriser filtres Non
Mémoriser tris Non
Nb. Enreg. Max 0
Ajout/Suppr. dans variable Oui
Synchro HFSQL C/S Jamais
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Largeur et hauteur
Taux anc. droite 300 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 47
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Table : SC_Menu.ONG_Info.TABLE_RDVColb
Libellé FR: Table
Ordre navigation 3
Curseur survol 0
Mode Loupe Filtre <contient>
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Hauteur ligne max. 0
Hauteur ligne (sans marges) 18
Marge en haut 2
Marge en bas 2
Marge à gauche 5
Marge à droite 3
Sens Vertical
Retrait gauche 0
Angle titre 0
Cadrage fonctions gXXX Tenir compte du cadrage
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Hauteur des lignes Non
Sélection multiple Non
Bulle sur tronqués Oui
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Scroll au pixel Oui
Scroll au doigt Non
Asc. horizontal Automatique
Asc. vertical Toujours visible
Mode de sélection Sélection simple
Sélect. colonnes Sans sélection
Sélect. cellules Sans sélection
Ajout éléments supplémentaires Non
Nb. max d'éléments 10000
Etat chargement Non
Retrait gauche FI détail 0
FI détail au survol Non
Même contenu/ligne Non
Aff. résultats Sans affichage
Somme FR: Somme
Moyenne FR: Moyenne
Compteur FR: Compteur
Minimum FR: Minimum
Maximum FR: Maximum
Sauve position auto Non
Ruptures Enroulables Oui
12/08/2026 Batik_WS_Com_Mob 48
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Titre multiligne Oui
Menu ctx. colonne Oui
Texte Markdown Non
Mode menu ctx. <Aucun>
Mémoriser filtres Non
Mémoriser tris Non
Nb. Enreg. Max 0
Ajout/Suppr. dans variable Oui
Synchro HFSQL C/S Jamais
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage Droite, largeur et hauteur
Taux anc. droite 350 Taux anc. bas 500 Taux anc. largeur 650 Taux anc. hauteur 1000
Table : SC_Menu.ONG_Info.TABLE_Colb
Colonne de table : SC_Menu.ONG_Info.TABLE_Colb.COL_C_IdColb (1)
Titre FR: Id Colb
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 99 999 999 999 999 999 999
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 200 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 49
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Colonne de table : SC_Menu.ONG_Info.TABLE_Colb.COL_C_NomPrenom (2)
Titre FR: Nom
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 800 Taux anc. hauteur 1000
Table : SC_Menu.ONG_Info.TABLE_Contexte
Colonne de table : SC_Menu.ONG_Info.TABLE_Contexte.COL_C_Type (1)
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
12/08/2026 Batik_WS_Com_Mob 50
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_Contexte.COL_C_Libelle (2)
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Oui
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 51
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Table : SC_Menu.ONG_Info.TABLE_Param
Colonne de table : SC_Menu.ONG_Info.TABLE_Param.COL_IdParam (1)
Titre FR: Id Paramètre
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 99 999 999 999 999 999 999
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_Param.COL_Type (2)
Titre FR: Type
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
12/08/2026 Batik_WS_Com_Mob 52
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_Param.COL_Libelle (3)
Titre FR: Libelle
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Oui
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 53
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Table : SC_Menu.ONG_Info.TABLE_RDV
Colonne de table : SC_Menu.ONG_Info.TABLE_RDV.COL_IdRDV (1)
Titre FR: Id rdv
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 99 999 999 999 999 999 999
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDV.COL_IdInter (2)
Titre FR: Id Inter
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
12/08/2026 Batik_WS_Com_Mob 54
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Mot de passe Non
Masque saisie FR: 99 999 999 999 999 999 999
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDV.COL_DateD (3)
Titre FR: Début
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: JJ/MM/AAAA HH:mm:SS
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 55
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Colonne de table : SC_Menu.ONG_Info.TABLE_RDV.COL_DateF (4)
Titre FR: Fin
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: JJ/MM/AAAA HH:mm:SS
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDV.COL_NInter (5)
Titre FR: NInter
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
12/08/2026 Batik_WS_Com_Mob 56
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDV.COL_Lieu (6)
Titre FR: Lieu
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 57
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Table : SC_Menu.ONG_Info.TABLE_RDVColb
Colonne de table : SC_Menu.ONG_Info.TABLE_RDVColb.COL_C_IdRDV (1)
Titre FR: Id rdv
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 99 999 999 999 999 999 999
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDVColb.COL_C_IdInter (2)
Titre FR: Id Inter
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
12/08/2026 Batik_WS_Com_Mob 58
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Mot de passe Non
Masque saisie FR: 99 999 999 999 999 999 999
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDVColb.COL_C_DateD (3)
Titre FR: Début
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: JJ/MM/AAAA HH:mm:SS
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 59
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Colonne de table : SC_Menu.ONG_Info.TABLE_RDVColb.COL_C_DateF (4)
Titre FR: Fin
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: JJ/MM/AAAA HH:mm:SS
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDVColb.COL_C_NInter (5)
Titre FR: C_NInter
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
12/08/2026 Batik_WS_Com_Mob 60
Partie 3 › Fenêtre WINDEV › FEN_Principal › Informations sur les champs
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
Colonne de table : SC_Menu.ONG_Info.TABLE_RDVColb.COL_C_Lieu (6)
Titre FR: C_Lieu
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calculatrice Non
Touche TAB Accessible par TAB
Marge en haut 0
Marge en bas 0
Marge à gauche 0
Marge à droite 0
Retrait gauche 0
Numéro aide 0
Bandeau visible Oui
Taille de saisie 0
Mot de passe Non
Masque saisie FR: 0
Mode ellipse <Aucun>
Verifier l'orthographe Non
Unicode Non
Saisie obligatoire Non
Export/Impression Si visible (défaut)
Vide si zéro Non
Retour à la ligne Non
Coche tous dans entête Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 0 Taux anc. hauteur 1000
FEN_Principal
Code
Déclarations globales de FEN_Principal
12/08/2026 Batik_WS_Com_Mob 61
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code
PROCÉDURE FEN_Principal()
Fin d'initialisation de FEN_Principal
OuvreSoeur(FEN_Log)
InitComboProc()
Fermeture de FEN_Principal
SI OuiNon("Voulez-vous fermer l'application") = Oui ALORS
FinProgramme()
SINON
RepriseSaisie(FEN_Principal)
FIN
FEN_Principal
Code des champs
Initialisation de CMB_Users
// Version 1
// Description
// Combo liste simple
ListeSupprimeTout(CMB_Users)
POUR TOUT stUser, saCle de LIB_DEBUG.gtbaListeUsers
ListeAjoute(CMB_Users,saCle+gLien(saCle))
FIN
Sélection d'une ligne de CMB_Users
SelectUser()
Clic sur IMG_Recharger
SelectUser()
Initialisation de SAI_DateDebut
// Version 1
// Description
// Saisie d'une date avec calendrier
dDate est une Date = DateSys()
dDate..Mois -= 2
SAI_DateDebut = dDate
A chaque modification de SAI_DateDebut
LIB_DEBUG.gdDateDeb = SAI_DateDebut
Initialisation de SAI_DateFin
12/08/2026 Batik_WS_Com_Mob 62
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
// Version 1
// Description
// Saisie d'une date avec calendrier
dDate est une Date = DateSys()
dDate..Mois += 2
SAI_DateFin = dDate
A chaque modification de SAI_DateFin
LIB_DEBUG.gdDateFin = SAI_DateFin
Initialisation de BTN_Recherche ( SC_Menu )
// Version 1
// Description
// Bouton simple
Clic sur BTN_Recherche ( SC_Menu )
TraiteReponse(cCMD_RechercheRDV)
Initialisation de CMB_Proc ( SC_Menu )
// Version 1
// Description
// Combo liste simple
Sélection d'une ligne de CMB_Proc ( SC_Menu )
SelectProcGlobal()
Initialisation de CMB_ProcColb ( SC_Menu )
// Version 1
// Description
// Combo liste simple
Sélection d'une ligne de CMB_ProcColb ( SC_Menu )
SelectProcColb()
Initialisation de CMB_ProcParam ( SC_Menu )
// Version 1
// Description
// Combo liste simple
Sélection d'une ligne de CMB_ProcParam ( SC_Menu )
SI LIB_DEBUG.gnIdInterChoisi <= 0 ALORS
Erreur("Veuillez sélectionner un rendez-vous")
RETOUR
FIN
12/08/2026 Batik_WS_Com_Mob 63
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
SI CMB_ProcParam = cCMD_ListeCh_Rapport _ET_ LIB_DEBUG.gnIdRapportChoisi <= 0 ALORS
Erreur("Veuillez sélectionner un modèle de rapport")
RETOUR
FIN
SI CMB_ProcParam = cCMD_ListeCh_Mail _ET_ LIB_DEBUG.gnIdEmailChoisi <= 0 ALORS
Erreur("Veuillez sélectionner un modèle d'email")
RETOUR
FIN
SI CMB_ProcParam = cCMD_ListeCh_Rapport ALORS
TraiteReponse(cCMD_ListeCh_Rapport)
FIN
SI CMB_ProcParam = cCMD_ListeCh_Mail ALORS
TraiteReponse(cCMD_ListeCh_Mail)
FIN
Initialisation de CMB_ProcRDV ( SC_Menu )
// Version 1
// Description
// Combo liste simple
Sélection d'une ligne de CMB_ProcRDV ( SC_Menu )
SelectProcRDV()
Sélection d'une ligne de TABLE_Colb
SI TABLE_Colb > 0 _ET_ COL_C_IdColb[TABLE_Colb] > 0 ALORS
LIB_DEBUG.gnIdCollabChoisi = COL_C_IdColb[TABLE_Colb]
FIN
Ajout d'un jeton dans COL_C_IdColb ( TABLE_Colb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_IdColb ( TABLE_Colb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_IdColb ( TABLE_Colb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_IdColb ( TABLE_Colb )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
12/08/2026 Batik_WS_Com_Mob 64
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_IdColb ( TABLE_Colb )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_NomPrenom ( TABLE_Colb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_NomPrenom ( TABLE_Colb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_NomPrenom ( TABLE_Colb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_NomPrenom ( TABLE_Colb )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_NomPrenom ( TABLE_Colb )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_Libelle ( TABLE_Contexte )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_Libelle ( TABLE_Contexte )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_Libelle ( TABLE_Contexte )
12/08/2026 Batik_WS_Com_Mob 65
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_Libelle ( TABLE_Contexte )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_Libelle ( TABLE_Contexte )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_Type ( TABLE_Contexte )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_Type ( TABLE_Contexte )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_Type ( TABLE_Contexte )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_Type ( TABLE_Contexte )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_Type ( TABLE_Contexte )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Sélection d'une ligne de TABLE_Param
SI TABLE_Param > 0 _ET_ COL_IdParam[TABLE_Param] > 0 ALORS
SI COL_Type[TABLE_Param] = cParam_ListeMailModele ALORS
LIB_DEBUG.gnIdEmailChoisi = COL_IdParam[TABLE_Param]
SINON SI COL_Type[TABLE_Param] = cParam_ListeRapportMob ALORS
LIB_DEBUG.gnIdRapportChoisi = COL_IdParam[TABLE_Param]
12/08/2026 Batik_WS_Com_Mob 66
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
FIN
FIN
Ajout d'un jeton dans COL_IdParam ( TABLE_Param )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_IdParam ( TABLE_Param )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_IdParam ( TABLE_Param )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_IdParam ( TABLE_Param )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_IdParam ( TABLE_Param )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_Libelle ( TABLE_Param )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_Libelle ( TABLE_Param )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_Libelle ( TABLE_Param )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_Libelle ( TABLE_Param )
12/08/2026 Batik_WS_Com_Mob 67
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_Libelle ( TABLE_Param )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_Type ( TABLE_Param )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_Type ( TABLE_Param )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_Type ( TABLE_Param )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_Type ( TABLE_Param )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_Type ( TABLE_Param )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Sélection d'une ligne de TABLE_RDV
SI TABLE_RDV > 0 _ET_ COL_IdRDV[TABLE_RDV] > 0 ALORS
LIB_DEBUG.gnIdInterChoisi = COL_IdInter[TABLE_RDV]
FIN
Ajout d'un jeton dans COL_DateD ( TABLE_RDV )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
12/08/2026 Batik_WS_Com_Mob 68
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
RENVOYER Vrai
Suppression d'un jeton dans COL_DateD ( TABLE_RDV )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_DateD ( TABLE_RDV )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_DateD ( TABLE_RDV )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_DateD ( TABLE_RDV )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_DateF ( TABLE_RDV )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_DateF ( TABLE_RDV )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_DateF ( TABLE_RDV )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_DateF ( TABLE_RDV )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_DateF ( TABLE_RDV )
12/08/2026 Batik_WS_Com_Mob 69
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_IdInter ( TABLE_RDV )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_IdInter ( TABLE_RDV )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_IdInter ( TABLE_RDV )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_IdInter ( TABLE_RDV )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_IdInter ( TABLE_RDV )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_IdRDV ( TABLE_RDV )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_IdRDV ( TABLE_RDV )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_IdRDV ( TABLE_RDV )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_IdRDV ( TABLE_RDV )
12/08/2026 Batik_WS_Com_Mob 70
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_IdRDV ( TABLE_RDV )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_Lieu ( TABLE_RDV )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_Lieu ( TABLE_RDV )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_Lieu ( TABLE_RDV )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_Lieu ( TABLE_RDV )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_Lieu ( TABLE_RDV )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_NInter ( TABLE_RDV )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_NInter ( TABLE_RDV )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
12/08/2026 Batik_WS_Com_Mob 71
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_NInter ( TABLE_RDV )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_NInter ( TABLE_RDV )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_NInter ( TABLE_RDV )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Sélection d'une ligne de TABLE_RDVColb
SI TABLE_RDVColb > 0 _ET_ COL_C_IdRDV[TABLE_RDVColb] > 0 ALORS
LIB_DEBUG.gnIdInterChoisi = COL_C_IdInter[TABLE_RDVColb]
FIN
Ajout d'un jeton dans COL_C_DateD ( TABLE_RDVColb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_DateD ( TABLE_RDVColb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_DateD ( TABLE_RDVColb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_DateD ( TABLE_RDVColb )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_DateD ( TABLE_RDVColb )
12/08/2026 Batik_WS_Com_Mob 72
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_DateF ( TABLE_RDVColb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_DateF ( TABLE_RDVColb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_DateF ( TABLE_RDVColb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_DateF ( TABLE_RDVColb )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_DateF ( TABLE_RDVColb )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_IdInter ( TABLE_RDVColb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_IdInter ( TABLE_RDVColb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_IdInter ( TABLE_RDVColb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_IdInter ( TABLE_RDVColb )
12/08/2026 Batik_WS_Com_Mob 73
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_IdInter ( TABLE_RDVColb )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_IdRDV ( TABLE_RDVColb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_IdRDV ( TABLE_RDVColb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_IdRDV ( TABLE_RDVColb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_IdRDV ( TABLE_RDVColb )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_IdRDV ( TABLE_RDVColb )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_Lieu ( TABLE_RDVColb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_Lieu ( TABLE_RDVColb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
12/08/2026 Batik_WS_Com_Mob 74
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_Lieu ( TABLE_RDVColb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_Lieu ( TABLE_RDVColb )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_Lieu ( TABLE_RDVColb )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Ajout d'un jeton dans COL_C_NInter ( TABLE_RDVColb )
PROCÉDURE AjoutJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'ajout du jeton
RENVOYER Vrai
Suppression d'un jeton dans COL_C_NInter ( TABLE_RDVColb )
PROCÉDURE SuppressionJeton(MonJeton est un Jeton)
//RENVOYER Faux pour interdire la suppression du jeton
RENVOYER Vrai
Clic sur un jeton de COL_C_NInter ( TABLE_RDVColb )
PROCÉDURE ClicJeton (MonJeton est un Jeton)
Entrée en saisie d'un jeton de COL_C_NInter ( TABLE_RDVColb )
PROCÉDURE EntreSaisieJeton (MonJeton est un Jeton)
//RENVOYER Faux pour interdire l'entrée en saisie du jeton
RENVOYER Vrai
Modification d'un jeton de COL_C_NInter ( TABLE_RDVColb )
PROCÉDURE ModificationJeton (MonJeton est un Jeton)
// RENVOYER Faux pour interdire la modification du jeton
RENVOYER Vrai
Initialisation de SAI_Recherche ( SC_Menu )
12/08/2026 Batik_WS_Com_Mob 75
Partie 3 › Fenêtre WINDEV › FEN_Principal › Code des champs
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SEL_WSCom
// Version 1
// Description
// Sélecteur simple en lignes sur 2 colonnes
SEL_WSCom = 0
LIB_DEBUG.gbEnvoiWebService = SEL_WSCom
A chaque modification de SEL_WSCom
LIB_DEBUG.gbEnvoiWebService = SEL_WSCom
FEN_Principal
Procédures
Procédure locale InitComboProc
PROCÉDURE InitComboProc()
ListeSupprimeTout(CMB_Proc)
ListeAjoute(CMB_Proc,"Liste des interventions (RDV)"+gLien(cCMD_ListeRDV_V2))
ListeAjoute(CMB_Proc,"Récupérer les paramètres de l'application"+gLien(cCMD_LitParam_V2))
ListeAjoute(CMB_Proc,"Récupérer les contexte de l'application"+gLien(cCMD_LitContexte))
ListeAjoute(CMB_Proc,"Récupérer la liste des collaborateurs (Droit de consulter leur agenda)"+gLien(
cCMD_IdClbRdvDroitC))
ListeSupprimeTout(CMB_ProcRDV)
ListeAjoute(CMB_ProcRDV,"Récupérer une intervention"+gLien(cCMD_LitINTER_V2))
ListeAjoute(CMB_ProcRDV,"Récupérer le temps saisie d'une rendez-vous"+gLien(cCMD_ListeTEMPS))
ListeSupprimeTout(CMB_ProcParam)
ListeAjoute(CMB_ProcParam,"Récupérer les champs a remplir d'un rapport"+gLien(cCMD_ListeCh_Rapport))
ListeAjoute(CMB_ProcParam,"Récupérer les champs a remplir d'un email "+gLien(cCMD_ListeCh_Mail))
ListeSupprimeTout(CMB_ProcColb)
ListeAjoute(CMB_ProcColb,"Liste des interventions (RDV)"+gLien(cCMD_ListeRDV_Clb))
ListeAjoute(CMB_ProcColb,"Récupérer une intervention"+gLien(cCMD_LitINTER_V2))
ListeAjoute(CMB_ProcColb,"Récupérer le temps saisie d'une rendez-vous"+gLien(cCMD_ListeTEMPS))
Procédure locale SelectProcColb
PROCÉDURE SelectProcColb()
SI CMB_ProcColb <> Null ET CMB_ProcColb <> "" ET TABLE_Colb > 0 ALORS
SI COL_C_IdColb[TABLE_Colb] <= 0 ALORS
Erreur("Veuillez choisir un collaborateur")
RENVOYER Faux
FIN
12/08/2026 Batik_WS_Com_Mob 76
Partie 3 › Fenêtre WINDEV › FEN_Principal › Procédures
LIB_DEBUG.gnIdCollabChoisi = COL_C_IdColb[TABLE_Colb]
SI TABLE_RDVColb > 0 _ET_ COL_C_IdRDV[TABLE_RDVColb] > 0 ALORS
LIB_DEBUG.gnIdInterChoisi = COL_C_IdInter[TABLE_RDVColb]
FIN
TraiteReponse(CMB_ProcColb)
FIN
SI TABLE_Colb <= 0 ALORS
Erreur("Veuillez choisir un collaborateur")
RENVOYER Faux
FIN
Procédure locale SelectProcGlobal
PROCÉDURE SelectProcGlobal()
SI CMB_Proc <> Null ET CMB_Proc <> "" ALORS
TraiteReponse(CMB_Proc)
FIN
Procédure locale SelectProcRDV
PROCÉDURE SelectProcRDV()
SI CMB_ProcRDV <> Null ET CMB_ProcRDV <> "" ALORS
SI LIB_DEBUG.gnIdInterChoisi <= 0 ALORS
Erreur("Veuillez choisir un rendez-vous")
RENVOYER Faux
FIN
LIB_DEBUG.gnIdCollabChoisi = LIB_DEBUG.gtbaListeUsers[CMB_Users].nIdColb
SI TABLE_RDV > 0 _ET_ COL_IdRDV[TABLE_RDV] > 0 ALORS
LIB_DEBUG.gnIdInterChoisi = COL_IdInter[TABLE_RDV]
FIN
TraiteReponse(CMB_ProcRDV)
FIN
Procédure locale SelectUser
PROCÉDURE SelectUser()
SI CMB_Users <> Null _ET_ LIB_DEBUG.gtbaListeUsers[CMB_Users]..Existe = Vrai ALORS
LIB_DEBUG.gID.saLicence = LIB_DEBUG.gtbaListeUsers[CMB_Users].saLicence
LIB_DEBUG.gID.saIdMob = LIB_DEBUG.gtbaListeUsers[CMB_Users].saIdMob
LIB_DEBUG.gID.saNumPort = LIB_DEBUG.gtbaListeUsers[CMB_Users].saNumPort
LIB_DEBUG.gID.nIdUser = LIB_DEBUG.gtbaListeUsers[CMB_Users].nIdUser
LIB_DEBUG.gID.saBaseData = LIB_DEBUG.gtbaListeUsers[CMB_Users].saBaseData
LIB_DEBUG.gID.saBaseSync = LIB_DEBUG.gtbaListeUsers[CMB_Users].saBaseSync
LIB_DEBUG.gID.saIdClient = LIB_DEBUG.gtbaListeUsers[CMB_Users].saIdClient
LIB_DEBUG.gnIdCollabSID = LIB_DEBUG.gtbaListeUsers[CMB_Users].nIdColb
LIB_DEBUG.gnIdCollabChoisi = LIB_DEBUG.gtbaListeUsers[CMB_Users].nIdColb
SC_Menu..Visible = Vrai
FIN
Procédure locale TraiteReponse
PROCÉDURE TraiteReponse(saType est une chaîne ANSI)
Sablier(Vrai)
bufRes est un Buffer
12/08/2026 Batik_WS_Com_Mob 77
Partie 3 › Fenêtre WINDEV › FEN_Principal › Procédures
bufRes = D_LanceProcedure(saType)
i est un entier
SELON saType
CAS cCMD_ListeDOC
CAS cCMD_ListeRDV_V2
tblRDV est un tableau de ST_RDV_INTER
SI bufRes <> "" ALORS
Désérialise(tblRDV,bufRes,psdJSON)
FIN
TableSupprimeTout(TABLE_RDV)
POUR TOUT stORdv DE tblRDV
i = TableAjouteLigne(TABLE_RDV)
COL_IdRDV[i] = stORdv.stRDV.nPKID
COL_IdInter[i] = stORdv.stRDV.nIDIntervention
COL_DateD[i] = stORdv.stRDV.saDateDebut
COL_DateF[i] = stORdv.stRDV.saDateFin
COL_NInter[i] = stORdv.stINTER.saInt_RfI
COL_Lieu[i] = stORdv.saRDV_Lieu
FIN
ONG_Info = ONG_Info.RDV
CAS cCMD_LitINTER_V2
CAS cCMD_RechercheRDV
CAS cCMD_ListeTEMPS
CAS cCMD_LitParam_V2 //Appelé par la fonction RécupContexte du mobile
TableSupprimeTout(TABLE_Param)
tbParam est un tableau de ST_PARAMETRE_METIER_V2
SI bufRes <> "" ALORS
Désérialise(tbParam,bufRes,psdJSON)
FIN
POUR TOUT stOParam DE tbParam
SI stOParam.saCode DANS(cParam_ListeMailModele,cParam_ListeRapportMob) ALORS
i = TableAjouteLigne(TABLE_Param)
COL_IdParam[i] = stOParam.nIdParam
COL_Libelle[i] = stOParam.saLib
COL_Type[i] = stOParam.saCode
FIN
SI TABLE_Param..Occurrence > 0 ALORS
TableTrie(TABLE_Param,"COL_Type")
FIN
FIN
ONG_Info.Contexte..Visible = Vrai
ONG_Info = ONG_Info.Contexte
CAS cCMD_LitContexte
TableSupprimeTout(TABLE_Contexte)
stCtx est un ST_CONTEXTE
SI bufRes <> "" ALORS
Désérialise(stCtx,bufRes,psdJSON)
FIN
TableAjouteLigne(TABLE_Contexte,"Profil",stCtx.stUser.saProfil)
TableAjouteLigne(TABLE_Contexte,"Annulation des RDVs",stCtx.stUser.bDroit_AnnulationRDV ? "OUI"
SINON "NON")
TableAjouteLigne(TABLE_Contexte,"Création de rapport",stCtx.stUser.bDroit_CreationRapport ?
"OUI" SINON "NON")
TableAjouteLigne(TABLE_Contexte,"Envoi d'email",stCtx.stUser.bDroit_EnvoiEmail ? "OUI" SINON
"NON")
TableAjouteLigne(TABLE_Contexte,"Id Collaborateur",LIB_DEBUG.gnIdCollabSID)
12/08/2026 Batik_WS_Com_Mob 78
Partie 3 › Fenêtre WINDEV › FEN_Principal › Procédures
TableAjouteLigne(TABLE_Contexte,"Id Utilisateur",LIB_DEBUG.gID.nIdUser)
ONG_Info.Contexte..Visible = Vrai
ONG_Info = ONG_Info.Contexte
CAS cCMD_IdClbRdvDroitC
tbIdClb est un tableau de ST_IdRDVClbDroitC
SI bufRes <> "" ALORS
Désérialise(tbIdClb,bufRes,psdJSON)
FIN
TableSupprimeTout(TABLE_Colb)
POUR TOUT stOClb DE tbIdClb
i = TableAjouteLigne(TABLE_Colb)
COL_C_IdColb[i] = stOClb.nIdClb
COL_C_NomPrenom[i] = stOClb.sNomPrenom
FIN
ONG_Info.Colb..Visible = Vrai
ONG_Info = ONG_Info.Colb
CAS cCMD_ListeRDV_Clb
tblRDV est un tableau de ST_RDV_INTER
SI bufRes <> "" ALORS
Désérialise(tblRDV,bufRes,psdJSON)
FIN
TableSupprimeTout(TABLE_RDV)
POUR TOUT stORdv DE tblRDV
i = TableAjouteLigne(TABLE_RDVColb)
COL_C_IdRDV[i] = stORdv.stRDV.nPKID
COL_C_IdInter[i] = stORdv.stRDV.nIDIntervention
COL_C_DateD[i] = stORdv.stRDV.saDateDebut
COL_C_DateF[i] = stORdv.stRDV.saDateFin
COL_C_NInter[i] = stORdv.stINTER.saInt_RfI
COL_C_Lieu[i] = stORdv.saRDV_Lieu
FIN
ONG_Info.Colb..Visible = Vrai
ONG_Info = ONG_Info.Colb
CAS cCMD_ListeCh_Rapport
CAS cCMD_RecupImgRapport
CAS cCMD_Creation_Rapport
CAS cCMD_ListeCh_Mail
CAS cCMD_Cr_Structure_Mail
CAS cCMD_Envoyer_Mail
AUTRE CAS
FIN
Sablier(fauxToutSablier)
12/08/2026 Batik_WS_Com_Mob 79
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Image
FEN_Connexion
Image
FEN_Connexion
Informations générales
FEN_Connexion
D:\Projets Windev\Batik\Nouvelle
Fichier physique
Version\WebService\Batik_WS_Com_Mob\FEN_Connexion.wdw
Créé par susana@applilogik.fr
Date de création 14/01/2026 08:46:17
Dernière modification par susana@applilogik.fr
Date dernière modification 27/03/2026 12:13:41
Titre FR: Connexion
Type fenêtre Fenêtre libre
Mode ouverture (Desktop) Centrée par rapport à la mère
12/08/2026 Batik_WS_Com_Mob 80
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations générales
| Position X | 0 Position Y | | 0 Largeur | 631 Hauteur | 520 |
| --------------------- | ------------ | -------------------- | --------- | --------------- | --- |
| Visible | | Barre de titre | | Menu système | |
| Icône réduction | | Icône agrandissement | | Icône aide ctx. | |
| Barre de message | | Détourer le fond | | Mode 9 images | |
| Redimensionnable | | Avec grip | | Grip dans image | |
| Déplace/fond | | Sauve position | | Ascenseur auto. | |
| Gestion grande police | | Thème XP | | | |
Ctx. HFSQL indép.
| Etat initial | | Actif | | | |
| ------------------------------- | --- | ----------------------------------- | ---------------- | --- | --- |
| Curseur survol | | 0 | | | |
| Copie d'écran | | Oui | | | |
| Unité des tailles | | Plateforme unique desktop OU mobile | | | |
| Ancrage au contenu | | <Aucun> | | | |
| Opacité | | 100 | | | |
| Titre personnalisé | | Oui | | | |
| Titre perso. : hauteur | | 30 | | | |
| Titre perso. : Affiche le titre | | Oui | | | |
| Pos. Menu Perso | | Non | | | |
| Icône de fermeture | | Oui | | | |
| Type cadre | | Double | | | |
| Transparence Vista | | Non | | | |
| Transparence gérée par Vista | | Non | | | |
| Appliquer le gabarit du projet | | <Défaut> | | | |
| Grisé : Utiliser couleur perso. | | Non | | | |
| Grisé : Algo pour images | | <Défaut> | | | |
| Style du menu | | Office XP | | | |
| Mode bulle d'aide | | Non | | | |
| Mode Bulle : Point chaud | | Haut gauche | | | |
| Mode Bulle : Décalage X | | 0 | | | |
| Mode Bulle : Décalage Y | | 0 | | | |
| Valide auto. | | 0 | | | |
| Lib. + tps restant | | Oui | | | |
| Pos. X Menu | | 6 | | | |
| Pos. Y Menu | | 28 | | | |
| Texte Markdown | | Non | | | |
| Mode menu ctx. | | <Aucun> | | | |
| M.C.U. | | Oui | | | |
| Anim. Ouverture | | 0 | | | |
| Anim. Fermeture | | 0 | | | |
| Durée Anim. Ouverture | | 100 | | | |
| Durée Anim. Fermeture | | 50 | | | |
| Adapte Taille contenu | | Non | | | |
| Assombri quand inactif | | Oui | | | |
| Déplace souris sur bouton par | | Non | | | |
| Compact. barres outils | | Non | | | |
| 12/08/2026 | | | Batik_WS_Com_Mob | | 81 |
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations générales
Statistiques de la fenêtre
| | Champ de saisie | | 13 | Libellé | | 2 |
| --- | --------------- | --- | --- | ------- | --- | --- |
| | Bouton | | 1 | | | |
Nombre d'éléments dans la fenêtre : 16
FEN_Connexion
Informations sur les champs
Fenêtre : FEN_Connexion
Champ de saisie
euqitamotua tnemecaffE
euqitamotua eisias niF
reihcif eétsissa eisiaS
| | | | | eriotagilbo eisiaS | .zroH tnemeliféD .trev tnemeliféD | |
| --- | --- | --- | --- | ------------------ | --------------------------------- | --- |
latnoziroh .csA
essap ed toM
| | | | BAT ehcuoT | | cnalb à esiM ediv is LLUN | lacitrev .csA |
| --- | --- | --- | ------------------------ | --------------------- | ------------------------- | ------------- |
| | | | laitini tatE eisias epyT | engilitluM FTR tamroF | | |
X noitisoP Y noitisoP
ruegraL ruetuaH
elbisiV
nalP
| SAI_BaseLicence | 9 90 182 | 49 0 | Actif Texte | Non | | |
| --------------- | ----------- | ---- | ----------- | --- | --- | --- |
| SAI_BaseWSCom | 12 323 179 | 49 0 | Actif Texte | Non | | |
| SAI_MPLicence | 197 141 206 | 49 0 | Actif Texte | Non | | |
SAI_MPLicenceFichier
| | 414 141 206 | 49 0 | Actif Texte | Non | | |
| ------------------ | ----------- | ---- | ---------------- | --- | --- | --- |
| SAI_MPWSCom | 325 374 298 | 49 0 | Actif Texte | Non | | |
| SAI_NomBaseLicence | 320 90 300 | 49 0 | Actif Texte | Non | | |
| SAI_NomBaseWSCom | 323 323 300 | 49 0 | Actif Texte | Non | | |
| SAI_PortLicence | 197 90 117 | 49 0 | Actif Texte | Non | | |
| SAI_PortWSCom | 197 323 117 | 49 0 | Actif Texte | Non | | |
| SAI_URLLicence | 9 38 611 | 50 0 | Actif Texte | Non | | |
| SAI_URLWSCom | 12 271 611 | 50 0 | Actif Texte | Non | | |
| SAI_UserLicence | 9 141 182 | 49 0 | Actif Texte | Non | | |
| SAI_UserWSCom | 12 374 305 | 49 0 | Actif Texte | Non | | |
| 12/08/2026 | | | Batik_WS_Com_Mob | | | 82 |
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Libellé
tuaféd rap eéminA
.zroh egardaC
.trev egardaC
FTR tamroF
| | X noitisoP Y noitisoP | | | laitini tatE | | |
| --- | --------------------- | --- | --- | ------------ | --- | --- |
ruetuaH
| | | ruegraL | elbisiV | | | |
| --- | --- | ------- | ------- | --- | --- | --- |
nalP
| LIB_Libellé | 9 6 | 203 26 | 0 | Actif | Gauche Haut | |
| ------------ | ----- | ------ | --- | ----- | ----------- | --- |
| LIB_Libellé1 | 9 221 | 242 26 | 0 | Actif | Gauche Haut | |
Bouton
notuob epyT
BAT ehcuoT
| | X noitisoP | Y noitisoP | | | laitini tatE | |
| --- | ---------- | ---------- | ------- | --- | ------------ | --- |
| | | ruegraL | ruetuaH | | | |
elbisiV
nalP
| BTN_Valider | 508 | 430 115 | 24 | 0 | Actif | Normal |
| ----------- | --- | ------- | --- | --- | ----- | ------ |
Fenêtre : FEN_Connexion
Bouton : BTN_Valider
| Libellé | FR: Se Connecter | | | | | |
| -------------------------------- | ----------------------------------- | --- | --- | --- | --- | --- |
| Ordre navigation | 14 | | | | | |
| Curseur survol | 0 | | | | | |
| UI par l'utilisateur | Selon fenêtre | | | | | |
| On/Off | Non | | | | | |
| Recopie Option menu flèche | Non | | | | | |
| Taux Paral. hauteur | 0 | | | | | |
| Taux Paral. Y | 0 | | | | | |
| Épinglé | Non | | | | | |
| Masquer lors du scrolling | Non | | | | | |
| Ancrage au contenu | <Aucun> | | | | | |
| Retrait gauche | 0 | | | | | |
| Réduction Ruban | Ne pas réduire le bouton | | | | | |
| Cadrage fonctions gXXX | Cadrage ignoré (pour compatibilité) | | | | | |
| Numéro aide | 0 | | | | | |
| Opacité | 100 | | | | | |
| Autorise ChangeGabarit | Oui | | | | | |
| Animée par défaut | Oui | | | | | |
| Mode ellipse | <Aucun> | | | | | |
| Alignement sur l'axe secondaire | défini par le champ flexbox (auto) | | | | | |
| Facteur de rétrécissement | 0 | | | | | |
Facteur d'agrandissement
0
| Type flèche | <Aucun> | | | | | |
| --------------- | ------- | ---------------- | --- | --- | --- | --- |
| Texte Markdown | Non | | | | | |
| Mode menu ctx. | <Aucun> | | | | | |
| Nb. états image | 1 | | | | | |
| 12/08/2026 | | Batik_WS_Com_Mob | | | | 83 |
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Nb. états fond 5
Etirement de l'image de fond Mode 9 images personnalisé
Nb. étapes animation 1
Largeur Halo 0
Hauteur Halo 0
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Libellé : LIB_Libellé
Libellé FR: Serveur Licence
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Taille police min 0
Autorise ChangeGabarit Oui
Type saisie Texte
Masque saisie FR: 0
Mode ellipse <Aucun>
Unicode Non
Transforme le & Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Mise à blanc Oui
Texte Markdown Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 84
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Libellé : LIB_Libellé1
Libellé FR: Serveur WS Com Mobile
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Taille police min 0
Autorise ChangeGabarit Oui
Type saisie Texte
Masque saisie FR: 0
Mode ellipse <Aucun>
Unicode Non
Transforme le & Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Mise à blanc Oui
Texte Markdown Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_BaseLicence
Libellé FR: Base de données serveur
Ordre navigation 2
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 11
12/08/2026 Batik_WS_Com_Mob 85
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Largeur interne 180
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
12/08/2026 Batik_WS_Com_Mob 86
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_BaseWSCom
Libellé FR: Base de données serveur
Ordre navigation 9
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 14
Largeur interne 177
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
12/08/2026 Batik_WS_Com_Mob 87
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_MPLicence
Libellé FR: Mot de passe
Ordre navigation 6
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 197
Largeur interne 206
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
12/08/2026 Batik_WS_Com_Mob 88
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Non
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
12/08/2026 Batik_WS_Com_Mob 89
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_MPLicenceFichiers
Libellé FR: Mot de passe (Fichiers)
Ordre navigation 7
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 414
Largeur interne 206
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
12/08/2026 Batik_WS_Com_Mob 90
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Non
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_MPWSCom
Libellé FR: Mot de passe
Ordre navigation 13
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 325
Largeur interne 298
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
12/08/2026 Batik_WS_Com_Mob 91
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Non
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 92
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Champ de saisie : SAI_NomBaseLicence
Libellé FR: Nom de la base de données
Ordre navigation 4
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 322
Largeur interne 298
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
12/08/2026 Batik_WS_Com_Mob 93
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_NomBaseWSCom
Libellé FR: Nom de la base de données
Ordre navigation 11
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 325
Largeur interne 298
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
12/08/2026 Batik_WS_Com_Mob 94
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 95
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Champ de saisie : SAI_PortLicence
Libellé FR: Port
Ordre navigation 3
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 197
Largeur interne 117
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
12/08/2026 Batik_WS_Com_Mob 96
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_PortWSCom
Libellé FR: Port
Ordre navigation 10
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 197
Largeur interne 117
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
12/08/2026 Batik_WS_Com_Mob 97
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 98
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Champ de saisie : SAI_URLLicence
Libellé FR: URL Web Service Licence
Ordre navigation 1
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 11
Largeur interne 609
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
12/08/2026 Batik_WS_Com_Mob 99
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_URLWSCom
Libellé FR: URL Web Service
Ordre navigation 8
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 14
Largeur interne 609
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
12/08/2026 Batik_WS_Com_Mob 100
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 101
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Champ de saisie : SAI_UserLicence
Libellé FR: Utilisateur
Ordre navigation 5
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 11
Largeur interne 180
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
12/08/2026 Batik_WS_Com_Mob 102
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
Champ de saisie : SAI_UserWSCom
Libellé FR: Utilisateur
Ordre navigation 12
Curseur survol 0
UI par l'utilisateur Selon fenêtre
Bouton Calendrier Non
Bouton Calculatrice Non
Bouton Suppression <Aucun>
Touche TAB Accessible par TAB
Taux Paral. hauteur 0
Taux Paral. Y 0
Épinglé Non
Masquer lors du scrolling Non
Ancrage au contenu <Aucun>
Cadrage horz. Gauche
Position X interne 14
Largeur interne 303
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
12/08/2026 Batik_WS_Com_Mob 103
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Informations sur les champs
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Jamais
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Oui
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Oui
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
Ancrage <Aucun>
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
12/08/2026 Batik_WS_Com_Mob 104
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Code
FEN_Connexion
Code
Déclarations globales de FEN_Connexion
PROCÉDURE FEN_Connexion()
FEN_Connexion
Code des champs
Initialisation de BTN_Valider
// Version 1
// Description
// Bouton simple
Clic sur BTN_Valider
SeConnecter()
Initialisation de LIB_Libellé
// Version 1
// Description
// Libellé pour écrire un titre
Initialisation de LIB_Libellé1
// Version 1
// Description
// Libellé pour écrire un titre
Initialisation de SAI_BaseLicence
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_BaseWSCom
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_MPLicence
12/08/2026 Batik_WS_Com_Mob 105
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Code des champs
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_MPLicenceFichiers
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_MPWSCom
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_NomBaseLicence
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_NomBaseWSCom
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_PortLicence
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_PortWSCom
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_URLLicence
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_URLWSCom
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_UserLicence
12/08/2026 Batik_WS_Com_Mob 106
Partie 3 › Fenêtre WINDEV › FEN_Connexion › Code des champs
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
Initialisation de SAI_UserWSCom
// Version 1
// Description
// Champ de saisie pour un texte simple sur une ligne
FEN_Connexion
Procédures
Procédure locale SeConnecter
PROCÉDURE SeConnecter()
LIB_DEBUG.gcnxD_ServeurLicence..Provider =hAccèsHFClientServeur
LIB_DEBUG.gcnxD_ServeurLicence..BaseDeDonnées = SAI_NomBaseLicence
| LIB_DEBUG.gcnxD_ServeurLicence..MotDePasse | = SAI_MPLicence | |
| ------------------------------------------- | --------------- | --- |
LIB_DEBUG.gcnxD_ServeurLicence..Serveur = SAI_BaseLicence+":"+SAI_PortLicence
| LIB_DEBUG.gcnxD_ServeurLicence..Utilisateur | = SAI_UserLicence | |
| -------------------------------------------- | ----------------- | --- |
| LIB_DEBUG.gsaPortWSCOM | = SAI_PortWSCom | |
| LIB_DEBUG.gsaServeurWSCOM | = SAI_BaseWSCom | |
LIB_DEBUG.gcnxD_ServeurWSCom..Provider =hAccèsHFClientServeur
| LIB_DEBUG.gcnxD_ServeurWSCom..BaseDeDonnées | = SAI_NomBaseWSCom | |
| ------------------------------------------- | ------------------ | --- |
| LIB_DEBUG.gcnxD_ServeurWSCom..MotDePasse | = SAI_MPWSCom | |
LIB_DEBUG.gcnxD_ServeurWSCom..Serveur = SAI_BaseWSCom+":"+SAI_PortWSCom
| LIB_DEBUG.gcnxD_ServeurWSCom..Utilisateur | = SAI_UserWSCom | |
| ----------------------------------------- | ---------------- | --- |
| WS_LICENCE..Adresse | = SAI_URLLicence | |
| WS_COM_MOBILE..Adresse | = SAI_URLWSCom | |
D_OuvreConnexionHFSQLLicence(SAI_MPLicenceFichiers)
D_RecupIdentiteLicence()
SI D_OuvreConnexionHFSQL() ALORS
Ouvre(FEN_Principal)
FIN
| 12/08/2026 | Batik_WS_Com_Mob | 107 |
| ---------- | ---------------- | --- |
Partie 3 › Fenêtre WINDEV › FEN_Log › Image
FEN_Log
Image
FEN_Log
Informations générales
FEN_Log
Fichier physique D:\Projets Windev\Batik\Nouvelle Version\WebService\Batik_WS_Com_Mob\FEN_Log.wdw
Créé par susana@applilogik.fr
Date de création 15/01/2026 10:20:07
Dernière modification par susana@applilogik.fr
Date dernière modification 15/01/2026 10:22:29
Titre FR: Log
Type fenêtre Fenêtre libre
12/08/2026 Batik_WS_Com_Mob 108
Partie 3 › Fenêtre WINDEV › FEN_Log › Informations générales
| Mode ouverture (Desktop) | | Centrée par rapport à la mère | | | |
| ------------------------ | ------------ | ----------------------------- | --------- | --------------- | --- |
| Position X | 0 Position Y | | 0 Largeur | 800 Hauteur | 599 |
| Visible | | Barre de titre | | Menu système | |
| Icône réduction | | Icône agrandissement | | Icône aide ctx. | |
| Barre de message | | Détourer le fond | | Mode 9 images | |
| Redimensionnable | | Avec grip | | Grip dans image | |
| Déplace/fond | | Sauve position | | Ascenseur auto. | |
| Gestion grande police | | Thème XP | | | |
Ctx. HFSQL indép.
| Etat initial | | Actif | | | |
| ------------------------------- | --- | ----------------------------------- | ---------------- | --- | --- |
| Curseur survol | | 0 | | | |
| Copie d'écran | | Oui | | | |
| Unité des tailles | | Plateforme unique desktop OU mobile | | | |
| Ancrage au contenu | | <Aucun> | | | |
| Opacité | | 100 | | | |
| Titre personnalisé | | Oui | | | |
| Titre perso. : hauteur | | 30 | | | |
| Titre perso. : Affiche le titre | | Oui | | | |
| Pos. Menu Perso | | Non | | | |
| Icône de fermeture | | Oui | | | |
| Type cadre | | Double | | | |
| Transparence Vista | | Non | | | |
| Transparence gérée par Vista | | Non | | | |
| Appliquer le gabarit du projet | | <Défaut> | | | |
| Grisé : Utiliser couleur perso. | | Non | | | |
| Grisé : Algo pour images | | <Défaut> | | | |
| Style du menu | | Office XP | | | |
| Mode bulle d'aide | | Non | | | |
| Mode Bulle : Point chaud | | Haut gauche | | | |
| Mode Bulle : Décalage X | | 0 | | | |
| Mode Bulle : Décalage Y | | 0 | | | |
| Valide auto. | | 0 | | | |
| Lib. + tps restant | | Oui | | | |
| Pos. X Menu | | 6 | | | |
| Pos. Y Menu | | 28 | | | |
| Texte Markdown | | Non | | | |
| Mode menu ctx. | | <Aucun> | | | |
| M.C.U. | | Oui | | | |
| Anim. Ouverture | | 0 | | | |
| Anim. Fermeture | | 0 | | | |
| Durée Anim. Ouverture | | 100 | | | |
| Durée Anim. Fermeture | | 50 | | | |
| Adapte Taille contenu | | Non | | | |
| Assombri quand inactif | | Oui | | | |
| Déplace souris sur bouton par | | Non | | | |
| Compact. barres outils | | Non | | | |
| 12/08/2026 | | | Batik_WS_Com_Mob | | 109 |
Partie 3 › Fenêtre WINDEV › FEN_Log › Informations générales
Statistiques de la fenêtre
| Champ de saisie | | | 1 | | |
| --------------- | --- | --- | --- | --- | --- |
Nombre d'éléments dans la fenêtre : 1
FEN_Log
Informations sur les champs
Fenêtre : FEN_Log
Champ de saisie
euqitamotua tnemecaffE
euqitamotua eisias niF
reihcif eétsissa eisiaS
| | | | | eriotagilbo eisiaS .zroH tnemeliféD .trev tnemeliféD | |
| --- | --- | --- | --- | ---------------------------------------------------- | --- |
latnoziroh .csA
essap ed toM
| | | | | cnalb à esiM ediv is LLUN | lacitrev .csA |
| --- | --- | --- | ---------------------------------------------- | ------------------------- | ------------- |
| | | | laitini tatE BAT ehcuoT eisias epyT FTR tamroF | | |
X noitisoP Y noitisoP engilitluM
ruegraL ruetuaH
elbisiV
nalP
| SAI_Log | 10 16 778 | 546 0 | Actif Texte | Non | |
| ------- | --------- | ----- | ----------- | --- | --- |
Fenêtre : FEN_Log
Champ de saisie : SAI_Log
| Ordre navigation | | 1 | | | |
| ------------------------- | --- | ------------------ | ---------------- | --- | --- |
| Curseur survol | | 0 | | | |
| UI par l'utilisateur | | Selon fenêtre | | | |
| Bouton Calendrier | | Non | | | |
| Bouton Calculatrice | | Non | | | |
| Bouton Suppression | | <Aucun> | | | |
| Touche TAB | | Accessible par TAB | | | |
| Taux Paral. hauteur | | 0 | | | |
| Taux Paral. Y | | 0 | | | |
| Épinglé | | Non | | | |
| Masquer lors du scrolling | | Non | | | |
| Ancrage au contenu | | <Aucun> | | | |
| Cadrage horz. | | Gauche | | | |
| Position X interne | | 11 | | | |
| Largeur interne | | 777 | | | |
| 12/08/2026 | | | Batik_WS_Com_Mob | | 110 |
Partie 3 › Fenêtre WINDEV › FEN_Log › Informations sur les champs
Cadrage fonctions gXXX Cadrage ignoré (pour compatibilité)
Numéro aide 0
Opacité 100
Autorise ChangeGabarit Oui
Sécurité HTML Oui
Visualisation markdown Non
Saisie manuscrite Non
Taille de saisie 0
Masque saisie FR: 0
Borne dans bulle Non
Borne dans texte d'indication Oui
Sélection multiple Non
Mode ellipse <Aucun>
Lien automatique Non
Verifier l'orthographe Non
Unicode Non
Alignement sur l'axe secondaire défini par le champ flexbox (auto)
Facteur de rétrécissement 0
Facteur d'agrandissement 0
Asc. horizontal Jamais
Asc. vertical Automatique
Complétion système de fichier Non
Saisie invalide Oui, bloquant
Saisie obligatoire (erreur) : Style Oui
Saisie obligatoire (erreur) : Texte Non
Saisie obligatoire (erreur) : Picto Non
Saisie obligatoire (indication) : Picto Non
Saisie obligatoire (indication) : Texte Non
Saisie obligatoire (indication) : Style Oui
Saisie invalide : Picto Non
Saisie invalide : Texte Non
Saisie invalide : Style Oui
Avec focus Oui
Historique des saisies Non
Valeurs multiples (jetons) Non
Autoriser les doublons Non
Jeton supprimable Oui
Valeur persistante Non
Barre d'outils RTF En saisie
Texte Markdown Non
Mode menu ctx. <Aucun>
Gestion Euro Non
Personnaliser le picto AMI Non
Indice du picto AMI 1
Bouton gauche : Nombre d'états 1
Bouton droit : Nombre d'états 1
Bouton gauche : Largeur 0
Bouton droit : Largeur 0
Bouton gauche : Hauteur 0
Bouton droit : Hauteur 0
Bouton gauche : Monochrome Non
Bouton droit : Monochrome Non
12/08/2026 Batik_WS_Com_Mob 111
Partie 3 › Fenêtre WINDEV › FEN_Log › Informations sur les champs
Ancrage Largeur et hauteur
Taux anc. droite 1000 Taux anc. bas 1000 Taux anc. largeur 1000 Taux anc. hauteur 1000
FEN_Log
Code
Déclarations globales de FEN_Log
PROCÉDURE FEN_Log()
Fermeture de FEN_Log
SI OuiNon("Voulez-vous fermer l'application") = Oui ALORS
FinProgramme()
SINON
RepriseSaisie(FEN_Log)
FIN
FEN_Log
Code des champs
Initialisation de SAI_Log
// Version 1
// Description
// Champ de saisie pour un texte multiligne simple, sans mise en forme
12/08/2026 Batik_WS_Com_Mob 112
Partie 4 › Collection de procédures
Partie 4
Collection de
procédures
| 12/08/2026 | Batik_WS_Com_Mob | 113 |
| ---------- | ---------------- | --- |
Partie 4 › Collection de procédures
LIB_GestionTableParamètres
Code
Procédure globale ParamApplication_Ecrit
PROCÉDURE ParamApplication_Ecrit(saCle est une chaîne ANSI,saValeurParDefaut est une chaîne ANSI="",
saDescription est une chaîne ANSI="")
HRAZ(TOSRV)
TOSRV.TS_JSON="{""sType"":""A"",""sCLE"":"""+ saCle +""",""sValeur"":""" + saValeurParDefaut +
""",""bCrypte"":0,""sDescript"":"""+saDescription+"""}"
TOSRV.TS_CMD =cCMD_ParamAppliEcrit
HAjoute(TOSRV)
Procédure globale ParamApplication_Lit
PROCÉDURE ParamApplication_Lit(saCle est une chaîne ANSI,saValeurParDefaut est une chaîne ANSI="",
saDescription est une chaîne ANSI="")
SI PAS HLitRecherchePremier(gsdParamApplication,PAP_Code,saCle) ALORS
ParamApplication_Ecrit(saCle,saValeurParDefaut,saDescription)
TraceINFO("PARAMETRE CREATION : " + saCle + " = ["+gsdParamApplication.PAP_Valeur +"]")
RENVOYER saValeurParDefaut
SINON
TraceINFO("PARAMETRE LECTURE : " + saCle + " = ["+gsdParamApplication.PAP_Valeur +"]")
FIN
RENVOYER gsdParamApplication.PAP_Valeur
Procédure globale ParamApplication_Lit_Booleen
PROCÉDURE ParamApplication_Lit_Booleen(saCle est une chaîne ANSI,bValeurParDefaut est un booléen=Faux,
saDescription est une chaîne ANSI="")
bRep est un booléen = ParamApplication_Lit(saCle,(bValeurParDefaut ? "1" SINON "0") ,saDescription)=
"1"
RENVOYER bRep
Procédure globale Parametre_Ecrit
PROCÉDURE PRIVÉ Parametre_Ecrit(saCle est une chaîne ANSI,saValeur est une chaîne ANSI)
SI PAS HLitRecherchePremier(PARAMETRES,CLE,saCle) ALORS
HRAZ(PARAMETRES)
PARAMETRES.CLE=saCle
FIN
PARAMETRES.VALTEXT=saValeur
HEnregistre(PARAMETRES)
Procédure globale Parametre_Lit
12/08/2026 Batik_WS_Com_Mob 114
Partie 4 › Collection de procédures › LIB_GestionTableParamètres › Code
PROCÉDURE PRIVÉ Parametre_Lit(saCle est une chaîne ANSI,saValeurParDefaut est une chaîne ANSI="")
SI PAS HLitRecherchePremier(PARAMETRES,CLE,saCle) ALORS
HRAZ(PARAMETRES)
PARAMETRES.CLE=saCle
PARAMETRES.VALTEXT=saValeurParDefaut
HAjoute(PARAMETRES)
TraceINFO("PARAMETRE CREATION : " + saCle + " = ["+PARAMETRES.VALTEXT +"]")
SINON
TraceINFO("PARAMETRE LECTURE : " + saCle + " = ["+PARAMETRES.VALTEXT +"]")
FIN
RENVOYER PARAMETRES.VALTEXT
Procédure globale Parametre_Lit_Booleen
PROCÉDURE Parametre_Lit_Booleen(saCle est une chaîne ANSI,bValeurParDefaut est un booléen=Faux)
bRep est un booléen = Parametre_Lit(saCle,(bValeurParDefaut ? "1" SINON "0") )="1"
RENVOYER bRep
12/08/2026 Batik_WS_Com_Mob 115
Partie 4 › Collection de procédures › LIB_WS › Code
LIB_WS
Code
Déclaration de LIB_WS
ST_PARAM_INFO est une Structure
saCMD est une chaîne ANSI
saDATA est une chaîne ANSI
FIN
ST_REP_INFO est une Structure
saCodeErreur est une chaîne ANSI
saDATA est une chaîne ANSI
nNumRec est un entier
saDate est une chaîne ANSI
FIN
ST_JSON_Type_RDV est une Structure
envoi_mobile est un booléen
present_devis est un booléen
valider_rdv est un booléen
saisir_temps_obligatoire est un booléen
FIN
12/08/2026 Batik_WS_Com_Mob 116
Partie 4 › Collection de procédures › LIB_GENERALE › Code
LIB_GENERALE
Code
Déclaration de LIB_GENERALE
Procédure globale CalculToken
PROCÉDURE CalculToken()
sMessage est un Buffer = HasardCryptoBuffer(20)
bufCle est un Buffer = HashChaîne(HA_MD5_128, gcCLE_CRYPT_TOKEN)
bufCrypte est un Buffer = CrypteStandard(sMessage, bufCle, crypteAES128)
sChaîneCryptée est une chaîne = "#"+BufferVersHexa(bufCrypte,SansRegroupement,SansLigne)+"#"
RENVOYER sChaîneCryptée
Procédure globale ChaineHasard
PROCÉDURE PRIVÉE ChaineHasard(nNbCaracteres est un entier)
// Initialise le générateur de nombres aléatoires
InitHasard()
sChaîneAléatoire est une chaîne
// Génère la chaîne aléatoire
BOUCLE (nNbCaracteres)
// Génère un nombre au hasard dans l'intervalle 65-122 (A-z)
nCaractère est un entier = Hasard(65,122)
// On ne prend pas les caractères compris entre 91 et 96
TANTQUE (91 <= nCaractère <= 96)
nCaractère = Hasard(65,122)
FIN
// Complète la chaîne
sChaîneAléatoire += Caract(nCaractère)
FIN
sChaîneAléatoire = Majuscule(sChaîneAléatoire)
RENVOYER sChaîneAléatoire
Procédure globale EnNomDeFichier
PROCÉDURE EnNomDeFichier(saNom chaîne ANSI)
saNomFic est chaîne ANSI =Majuscule(SansEspace(saNom,sscTout))
12/08/2026 Batik_WS_Com_Mob 117
Partie 4 › Collection de procédures › LIB_GENERALE › Code
saNomFic=Remplace(saNomFic,["/","\",":","?","*","""","<",">","|","'"],"")
saNomFic=SansAccent(saNomFic)
RENVOYER saNomFic
Procédure globale HashMotDePasse
PROCÉDURE HashMotDePasse(saLogin,saPass)
RENVOYER HashChaîne(HA_HMAC_SHA_256,saLogin+RC+saPass,gcCLE_HASH_PASS)
12/08/2026 Batik_WS_Com_Mob 118
Partie 4 › Collection de procédures › LIB_COMMUNE › Code
LIB_COMMUNE
Code
Déclaration de LIB_COMMUNE
CONSTANT
gsCleCryptage =""
cTrace_Info =0
cTrace_Debug =1
cTrace_Erreur =2
FIN
gnNiveauTraceMini est un entier = cTrace_Info
gsaCumulTrace est une chaîne ANSI
gbTraceBufferReception est un booléen
//gnNbJoursLog est un entier
Procédure globale InfoWS
PROCÉDURE PRIVÉ InfoWS()
saREP est une chaîne ANSI
saREP="-----------------------------------------------"
saREP+=RC+"Executable :" + ExeInfo(exeNom) + " version :" + ExeInfo(exeVersion)
saREP+=RC+"Date serveur :" + DateVersChaîne(DateHeureSys(),"JJ/MM/AAAA HH:mm:SS")
saREP+=RC+"Analyse :" + Remplace(HInfoAnalyse(),RC," N° :")
saREP+=RC+"Rep Données :" + fRepDonnées()
<COMPILE SI Configuration="Webservice">
saREP+=RC+"Rep Web :" + fRepWeb()
saREP+=RC+"Ini :" + NomDuFichierIni()
<FIN>
saREP+=RC+"IP Client :" + WebserviceAdresseIPClient(Vrai)
saREP+=RC+"-----------------------------------------------"
RENVOYER saREP
Procédure globale LitConfigurationINI
PROCÉDURE RESTREINT LitConfigurationINI()
saFicIni est une chaîne = NomDuFichierIni()
SI PAS fFichierExiste(saFicIni) ALORS
INIEcrit("DEBUG","NIVEAU","0",saFicIni)
FIN
// Lit la valeur du niveau de trace par défaut
gnNiveauTraceMini = Val( INILit("DEBUG", "NIVEAU", "0",saFicIni) )
gbTraceBufferReception = Val(INILit("DEBUG","TRACE BUFFER","0",saFicIni))=1
gnNbJoursLog = Val( INILit("LOG", "NB JOURS", "10",saFicIni) )
Procédure globale NomDuFichierIni
PROCÉDURE PRIVÉ NomDuFichierIni()
RENVOYER ComplèteRep(fRepDonnées()) + "Config\" + gcVersionNom +".ini"
Procédure globale ParametreSQLCorrect
12/08/2026 Batik_WS_Com_Mob 119
Partie 4 › Collection de procédures › LIB_COMMUNE › Code
PROCÉDURE PRIVÉ ParametreSQLCorrect(LOCAL saParam chaîne ANSI)
//Vérifie si la chaine ne contient pas d'instruction SQL injectées
//Test à minima
SI saParam="" ALORS
RENVOYER Vrai
FIN
tabChaine est un tableau de chaînes = ["SELECT","INSERT","UPDATE","DELETE","WHERE","INNER"]
SI Contient(saParam,tabChaine,SansCasse) ALORS RENVOYER Faux
RENVOYER Vrai
Procédure globale Tesla
PROCÉDURE Tesla() //T'es là
RENVOYER "OUI"
Procédure globale TraceCUMUL
PROCÉDURE RESTREINT TraceCUMUL(s)
//Stock un message de trace pour l'écrire quand la trace sera ouverte
saTxt est une chaîne ANSI = DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Info +
TAB + Remplace(s,TAB,"<TAB>")
gsaCumulTrace += [RC] + saTxt
Procédure globale TraceDEBUG
PROCÉDURE RESTREINT TraceDEBUG(s)
saTxt est une chaîne ANSI = DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Debug +
TAB + Remplace(s,TAB,"<TAB>")
SI gnNiveauTraceMini <= cTrace_Debug ALORS
SI gsaCumulTrace<>"" ALORS
Trace(gsaCumulTrace)
gsaCumulTrace=""
FIN
Trace(saTxt)
SINON
gsaCumulTrace += RC + saTxt
FIN
Procédure globale TraceERREUR
PROCÉDURE RESTREINT TraceERREUR(s)
//EN cas d'erreur, on trace le contenu du Cumul de trace de tout niveau
SI gsaCumulTrace<>"" ALORS
Trace(gsaCumulTrace)
gsaCumulTrace=""
FIN
Trace(DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Erreur + TAB + Remplace(s,
TAB,"<TAB>"))
Procédure globale TraceINFO
PROCÉDURE RESTREINT TraceINFO(s)
saTxt est une chaîne ANSI = DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Info +
TAB + Remplace(s,TAB,"<TAB>")
SI gnNiveauTraceMini <= cTrace_Info ALORS
12/08/2026 Batik_WS_Com_Mob 120
Partie 4 › Collection de procédures › LIB_COMMUNE › Code
Trace(saTxt)
SINON
gsaCumulTrace += RC + saTxt
FIN
Procédure globale TraceTOUT
//Trace quelque soit le niveau de trace courant
PROCÉDURE RESTREINT TraceTOUT(s)
Trace(DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Info + TAB + Remplace(s,TAB,
"<TAB>"))
12/08/2026 Batik_WS_Com_Mob 121
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales › Code
LIB_ProcéduresGlobales
Code
Procédure globale ConnexionValide
// Résumé : Vérifie si la session est déjà ouverte en comparant le dernier token mémorisé à celui
présenté
// Syntaxe :
//[ <Résultat> = ] ConnexionValide (<stID> est ST_MOB_IDENTITE)
//
// Paramètres :
// stID (ST_MOB_IDENTITE) : Token reçu dans la commande de WS
// Valeur de retour :
// multi-valeur : <indiquez ici le rôle de la valeur de retour>
PROCÉDURE ConnexionValide(stID est un ST_MOB_IDENTITE)
TraceINFO("Client : " + stID.saIdClient + " IdMob:" + stID.saIdMob + " NumPort:"+stID.saNumPort)
gstContexte.saNumPort = stID.saNumPort
gstContexte.saIdMobile=stID.saIdMob
gstContexte.saIdClient=stID.sAIdClient
gstContexte.saBaseData=stID.sABaseData
gstContexte.saBaseSync=stID.sABaseSync
SI PAS OuvreConnexionsHF() ALORS
RENVOYER (Faux,cERR_SRV)
SINON
//Si le contexte de la session s'est ré-initialisé, il faut re-vérifier la licence (toute les 1h
mini)
dhLimite est une DateHeure = gstContexte.dhAuthentification
dhLimite..Heure +=1
SI (PAS gstContexte.bAuthentifié) _OU_ dhLimite < DateHeureSys() ALORS
gstContexte.bAuthentifié = Faux
gstContexte.dhAuthentification=DateHeureSys()
stDMD est un ST_WS_VERIF_LM
sAJson est une chaîne ANSI
stDMD.saCodeClient =stID.saIdClient
stDMD.saIdMobile =stID.saIdMob
stDMD.saLicence =stID.saLicence
InitialiseContexteUtilisateur(stID.nIdUser)
Sérialise(stDMD,sAJson,psdJSON)
<COMPILE SI Configuration<>"WS_COM_MOBILE" ET Configuration<>"Debug WS_COM_MOBILE">
stRep est un ST_REP_CLIENT = WS_LICENCE.LicenceVerifie(sAJson)
SI ErreurDétectée() ALORS
TraceINFO("Problème de communication avec le serveur de Licence.")
12/08/2026 Batik_WS_Com_Mob 122
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales › Code
TraceINFO(ErreurInfo(errComplet))
RENVOYER (Faux,cERR_SRV)
FIN
SI stRep.saEtatReponse..Valeur<>cREP_LIC_OK ALORS
TraceERREUR("ERREUR ConnexionValide : Code erreur = " +stRep.saEtatReponse..Valeur )
TraceERREUR("Pour :" + sAJson)
RENVOYER (Faux,stRep.saEtatReponse..Valeur)
SINON
TraceDEBUG("Licence Validée par le serveur de Licence")
gstContexte.bAuthentifié =Vrai
RENVOYER (Vrai,cRep_OK)
FIN
<SINON>
gstContexte.bAuthentifié =Vrai
RENVOYER (Vrai,cRep_OK)
<FIN>
SINON
InitialiseContexteUtilisateur(stID.nIdUser)
TraceDEBUG("Reconnexion n° :" + gstContexte.nNbConnexions )
RENVOYER (Vrai,cRep_OK)
FIN
FIN
Procédure globale DonneGuidIdColb
PROCÉDURE DonneGuidIdColb(LOCAL saCle est une chaîne ANSI)
TraceINFO("Recherche GUID Colb :"+saCle)
SI SansEspace(saCle) = "" ALORS
RENVOYER ""
FIN
SI gtbaGUIDCollaborateur[saCle]..Existe = Vrai ALORS
RENVOYER gtbaGUIDCollaborateur[saCle]
SINON
SI gtbaGUIDCollaborateur[Val(saCle)]..Existe = Vrai ALORS
RENVOYER gtbaGUIDCollaborateur[Val(saCle)]
FIN
FIN
RENVOYER ""
Procédure globale DonneIdParametre
PROCÉDURE DonneIdParametre(LOCAL saCle est une chaîne ANSI)
nIdParam est un entier sur 8 octets = 0
SI saCle <> "" _ET_ gtbaCleParametre[saCle]..Existe = Vrai _ET_ gtbaCleParametre[saCle] > 0 ALORS
nIdParam = gtbaCleParametre[saCle]
FIN
RENVOYER nIdParam
Procédure globale DonneLibParametre
PROCÉDURE DonneLibParametre(LOCAL saCle est une chaîne ANSI)
SI SansEspace(saCle) = "" ALORS
RENVOYER ""
12/08/2026 Batik_WS_Com_Mob 123
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales › Code
FIN
SI saCle <> "" _ET_ gtbaLibParametre[saCle]..Existe = Vrai _ET_ gtbaLibParametre[saCle] <> "" ALORS
RENVOYER gtbaLibParametre[saCle]
SINON
SI Val(saCle) > 0 _ET_ gtbaLibParametre[Val(saCle)]..Existe = Vrai _ET_ gtbaLibParametre[Val(saCle)
] <> "" ALORS
RENVOYER gtbaLibParametre[Val(saCle)]
FIN
FIN
RENVOYER ""
Procédure globale DonneListeConfigMail
PROCÉDURE DonneListeConfigMail(LOCAL nIdUser est un entier sur 8 octets = 0)
ParamEmailConfig est un tableau associatif de STParamEnvoiEmailPerso
ParamEmailPerso est un tableau de STParamEnvoiEmailPerso
sMsg est une chaîne Unicode
stParametreEmail est une STParamEnvoiEmailPerso
n est un entier
SI nIdUser <= 0 ALORS RENVOYER (sMsg,ParamEmailConfig)
saRQSoc est une chaîne ANSI = [
SELECT SO_Parametres, SO_PKID
FROM Societe_Collaborateur
INNER JOIN societe ON societe.SO_PKID = Societe_Collaborateur.SC_IDCSociete
INNER JOIN Utilisateur on Utilisateur.UT_IDCollaborateur = Societe_Collaborateur.SC_IDCollaborateur
WHERE Utilisateur.UT_PKID =
]
saRQSoc += nIdUser
sdRqSoc est une Source de Données
SI PAS HExécuteRequêteSQL(sdRqSoc,gcnxReplica,saRQSoc) ALORS
sMsg = "Configuration de mail introuvable"
TraceINFO(sMsg +RC+HErreurInfo(errComplet))
SINON
POUR TOUT sdRqSoc
Désérialise(stParametreEmail,sdRqSoc.SO_Parametres,psdJSON)
AjouterListe(sdRqSoc.SO_PKID)
RempliListe(sdRqSoc.SO_PKID)
FIN
FIN
AjoutConfigPerso()
RENVOYER (sMsg, ParamEmailConfig)
PROCÉDURE INTERNE AjouterListe(LOCAL nIdSoc est un entier sur 8 octets = 0)
SI nIdUser > 0 _ET_ nIdSoc > 0 _ET_ (stParametreEmail.Compte.sEmail <> "" OU stParametreEmail.
Compte.sCompte <> "") ALORS
sCode est une chaîne ANSI = "EMAIL_ENVOI_"+nIdSoc
SI PAS ParamEmailConfig[sCode]..Existe ALORS
stParametreEmail.SMTP.sMdp = Décrypte(stParametreEmail.SMTP.sMdp,gsCleMdp)
ParamEmailConfig[sCode] = stParametreEmail
12/08/2026 Batik_WS_Com_Mob 124
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales › Code
FIN
// Conserver les paramètres de la société login et mot de passe ne peuvent etre changés
| | ParamEmailConfig[sCode].Compte | | | | | = stParametreEmail.Compte | |
| --- | ------------------------------ | --- | --- | --- | --- | ------------------------- | --- |
ParamEmailConfig[sCode].SMTP.bEnCopieCachee = stParametreEmail.SMTP.bEnCopieCachee
ParamEmailConfig[sCode].SMTP.bufSignature = stParametreEmail.SMTP.bufSignature
ParamEmailConfig[sCode].SMTP.tabCC_CopieEmail = stParametreEmail.SMTP.
tabCC_CopieEmail
FIN
FIN
PROCÉDURE INTERNE RempliListe(LOCAL nIdSoc est un entier sur 8 octets = 0)
| bAncienVersion | | est un booléen | | = Faux | | | |
| -------------- | --- | ------------------- | --- | ----------------------- | --- | --- | --- |
| sCode | | est une chaîne ANSI | | = "EMAIL_ENVOI_"+nIdSoc | | | |
SI nIdUser > 0 _ET_ nIdSoc > 0 ALORS
| | saRQColP | | est une chaîne ANSI | | = [ | | |
| --- | -------- | --- | ------------------- | --- | --- | --- | --- |
SELECT PU_Valeur FROM ParametreUtilisateur WHERE ParametreUtilisateur.PU_Code = '
]
saRQColP += sCode +"' AND "
saRQColP += "ParametreUtilisateur.PU_IDUtilisateur = "+nIdUser
| | sdRqColP | est une Source de Données | | | | | |
| --- | -------- | ------------------------- | --- | --- | --- | --- | --- |
SI PAS HExécuteRequêteSQL(sdRqColP,gcnxReplica,saRQColP) ALORS
sMsg = "Configuration de mail de la société introuvable dans la fiche collaborateur"
TraceINFO(sMsg +RC+HErreurInfo(errComplet))
SINON
SI sdRqColP.PU_Valeur <> "" ALORS
SI ParamEmailConfig[sCode]..Existe ALORS
Désérialise(stParametreEmail,sdRqColP.PU_Valeur,psdJSON)
Ajouterliste(nIdSoc)
FIN
FIN
FIN
FIN
FIN
PROCÉDURE INTERNE AjoutConfigPerso()
SI nIdUser <= 0 ALORS RETOUR
| sCode | | | est une chaîne ANSI | | | | |
| ------------- | --- | --------------------- | ----------------------------- | --- | --- | --- | --- |
| stParamRecep | | est STParamEnvoiEmail | | | | | |
| stParamAncien | | | est un STParamEnvoiEmailPerso | | | | |
| saRQColP | | est une chaîne ANSI | | = [ | | | |
SELECT PU_Valeur FROM ParametreUtilisateur WHERE ParametreUtilisateur.PU_Code =
'EMAIL_ENVOI' AND ParametreUtilisateur.PU_IDUtilisateur =
]
saRQColP += nIdUser
sdRqColP est une Source de Données
SI PAS HExécuteRequêteSQL(sdRqColP,gcnxReplica,saRQColP) ALORS
sMsg =
"Configuration de mail de personnel introuvable dans la fiche paramètres utilisateur"
TraceINFO(sMsg +RC+HErreurInfo(errComplet))
SINON
SI sdRqColP.PU_Valeur <> "" ALORS
QUAND EXCEPTION DANS
Désérialise(ParamEmailPerso,sdRqColP.PU_Valeur,psdJSON)
FAIRE
| | | bufCle | est un Buffer | | | = HashChaîne(HA_MD5_128,gsCleMdp) | |
| ---------- | --- | --------- | ------------- | ---------------- | --- | --------------------------------- | --- |
| | | bufCrypte | est un Buffer | | | = sdRqColP.PU_Valeur | |
| 12/08/2026 | | | | Batik_WS_Com_Mob | | | 125 |
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales › Code
bufRep est un Buffer = DécrypteStandard(bufCrypte, bufCle,
crypteAES128)
Désérialise(stParamRecep,bufRep,psdJSON)
FIN
SI ParamEmailPerso..Occurrence <= 0 _ET_ stParamRecep.sLogin <> "" ALORS
stParamAncien.SMTP = stParamRecep
stParamAncien.Compte.sEmail = stParamRecep.sLogin
stParamAncien.Compte.sCompte = ""
TableauAjoute(ParamEmailPerso,stParamAncien)
FIN
POUR TOUT stParam,n de ParamEmailPerso
SI stParam.SMTP.sLogin <> "" ALORS
sCode = "EMAIL_ENVOI_Perso_"+n
SI PAS ParamEmailConfig[sCode]..Existe ALORS
stParam.SMTP.sMdp = Décrypte(stParam.SMTP.sMdp,gsCleMdp)
ParamEmailConfig[sCode] = stParam
FIN
FIN
FIN
FIN
FIN
FIN
Procédure globale InitGUIDCollaborateurs
PROCÉDURE InitGUIDCollaborateurs()
TableauSupprimeTout(gtbaGUIDCollaborateur)
QUAND EXCEPTION DANS
sd est une Source de Données
HExécuteRequêteSQL(sd, gcnxReplica,hRequêteDéfaut,"SELECT CO_PKID,GUID FROM Collaborateur")
POUR TOUT sd
gtbaGUIDCollaborateur[sd.CO_PKID] = sd.GUID
gtbaGUIDCollaborateur[sd.GUID] = sd.CO_PKID
FIN
TraceINFO("TBA Colbs Taille : "+gtbaGUIDCollaborateur..Occurrence)
FAIRE
RENVOYER Faux
FIN
RENVOYER Vrai
Procédure globale InitialisationParametres
PROCÉDURE InitialisationParametres()
//
//si gstContexte.bParamChargés alors
//
// Désérialise(gstParam,gstContexte.sParamJson,psdJSON)
// renvoyer Vrai
//FIN
InitGUIDCollaborateurs()
12/08/2026 Batik_WS_Com_Mob 126
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales › Code
QUAND EXCEPTION DANS
//Paramètres Métiers
sd est une Source de Données
HExécuteRequêteSQL(sd, gcnxReplica,hRequêteDéfaut,
"SELECT PA_PKID,PA_CLE,PA_Categorie,PA_Libelle FROM ParametreMetier WHERE PA_Categorie IN ('"+
cParam_Civilite+"','"+cParam_TypeDossier+"','"+...
cParam_StatutDossier+"','"+cparam_TypeLieu+"','"+cParam_RoleContact+"','"+cParam_TypeInter+"','"+
cParam_EtatInter+"','"+cParam_TypeRDV+"','"+cParam_StatusRDV+"','"+cParam_TypeDoc+
"') ORDER BY PA_CLE,PA_Categorie")
POUR TOUT sd
gtbaCleParametre[sd.PA_CLE] = sd.PA_PKID
gtbaLibParametre[sd.PA_CLE] = sd.PA_Libelle
gtbaLibParametre[sd.PA_PKID] = sd.PA_Libelle
SELON sd.PA_Categorie
CAS cParam_Civilite
| | gstParametres.TbaCivilite[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | ------------------------------------- | --- | -------------- | --- | --- | --- |
CAS cParam_TypeDossier
| | gstParametres.TbaTypeDossier[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | ---------------------------------------- | --- | -------------- | --- | --- | --- |
CAS cParam_StatutDossier
| | gstParametres.TbaStatutDossier[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | ------------------------------------------ | --- | -------------- | --- | --- | --- |
CAS cparam_TypeLieu
| | gstParametres.TbaTypeLieu[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | ------------------------------------- | --- | -------------- | --- | --- | --- |
CAS cParam_RoleContact
| | gstParametres.TbaRoleCntctLieu[sd.PA_CLE] | | = sd.PA_Libelle | | | |
| --- | ----------------------------------------- | --- | --------------- | --- | --- | --- |
| | gstParametres.TbaRoleContact[sd.PA_CLE] | | = sd.PA_Libelle | | | |
CAS cParam_TypeInter
| | gstParametres.TbaTypeInter[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | -------------------------------------- | --- | -------------- | --- | --- | --- |
CAS cParam_EtatInter
| | gstParametres.TbaEtatInter[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | -------------------------------------- | --- | -------------- | --- | --- | --- |
CAS cParam_TypeRDV
| | gstParametres.TbaTypActivite[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | ---------------------------------------- | --- | -------------- | --- | --- | --- |
CAS cParam_StatusRDV
| | gstParametres.TbaStatutRDV[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | -------------------------------------- | --- | -------------- | --- | --- | --- |
CAS cParam_TypeDoc
| | gstParametres.TbaCategorieDoc[sd.PA_CLE] | | =sd.PA_Libelle | | | |
| --- | ----------------------------------------- | --- | -------------- | --- | --- | --- |
FIN
FIN
// Sérialise(gstParam,gstContexte.sParamJson,psdJSON)
FAIRE
RENVOYER Faux
FIN
gstContexte.bParamChargés=Vrai
RENVOYER Vrai
Procédure globale SerialiseContexte
PROCÉDURE SerialiseContexte()
| 12/08/2026 | | Batik_WS_Com_Mob | | | | 127 |
| ---------- | --- | ---------------- | --- | --- | --- | --- |
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales › Code
sBuf est une chaîne ANSI
Sérialise(gstContexte,sBuf,psdJSON)
RENVOYER sBuf
Procédure globale TraceRequete
PROCÉDURE TraceRequete(saSQL est une chaîne ANSI)
TraceINFO (RC + "SQL " + Répète("-",40)+ RC+ Remplace(saSQL,[RC,TAB]," ")+ RC + Répète("-",40) + " SQL"
+ RC)
12/08/2026 Batik_WS_Com_Mob 128
Partie 4 › Collection de procédures › LIB_WS_MOB › Code
LIB_WS_MOB
Code
Déclaration de LIB_WS_MOB
CONSTANT
cCMD_ServiceActif="WOUF"
cCMD_ServiceInfo ="INFO"
// //Commandes destinées au Service
// cCMD_ListeDocDmd = "S.DOC.LS"
// cCMD_DocVersSRV = "S.DOC.EC"
// cCMD_EcritNote = "S.NTE.EC"
// cCMD_EcritDocNote = "S.DNT.EC"
// cCMD_TempsEcrit = "S.TPS.EC"
// cCMD_TempsSupprime = "S.TPS.SU"
// cCMD_CREcrit = "S.RPT.EC"
//
// //Commandes interprétées par ce WebService
// cCMD_RechercheRDV ="W.RDV.RC"
// cCMD_ListeRDV ="W.RDV.LS"
// cCMD_ListeDOC ="W.DOC.LS"
// cCMD_ListeTEMPS ="W.TPS.LS"
// cCMD_LitParam ="W.PRM.LI" //Lit les paramètres métiers
// cCMD_LitContexte ="W.CTX.LI" //Lit le contexte utilisateur
cRep_OK ="R"
cErreur ="E"
FIN
ST_MOB_IDENTITE est une Structure
saLicence est une chaîne ANSI
saIdMob est une chaîne ANSI
saNumPort est une chaîne ANSI
nIdUser est un entier sur 8 octets
nIdColb est un entier sur 8 octets
saBaseData est une chaîne ANSI
saBaseSync est une chaîne ANSI
saIdClient est une chaîne ANSI
FIN
ST_MOB_DATA est une Structure
saCMD est une chaîne ANSI
saJSON est une chaîne ANSI
FIN
Procédure globale InitTraceLog
PROCÉDURE InitTraceLog(stID est un ST_MOB_IDENTITE)
SI gstContexte.saFichierLog="" ALORS
gstContexte.saFichierLog =ComplèteRep(fRepDonnées()) + "Trace_" + stID.saIdClient + "_" + DateSys(
) + ".txt"
TraceDébut(trFichier, gstContexte.saFichierLog )
12/08/2026 Batik_WS_Com_Mob 129
Partie 4 › Collection de procédures › LIB_WS_MOB › Code
TraceINFO("Init après Connexion : "+gcVersionNom+" " + ExeInfo(exeNom) + " " + ExeInfo(exeVersion)
)
TraceINFO("WebService : " + gcVersionNom + " Version : " + gcVersionWS)
TraceINFO("Client :" + WebserviceAdresseIPClient( ))
SINON
TraceDébut(trFichier, gstContexte.saFichierLog )
FIN
SI LIB_COMMUNE.gsaCumulTrace<>"" ALORS
Trace(LIB_COMMUNE.gsaCumulTrace)
LIB_COMMUNE.gsaCumulTrace=""
FIN
TraceINFO("Niveau Trace " + LIB_COMMUNE.gnNiveauTraceMini )
//Purge des anciens log
suLstLog est une chaîne Unicode = fListeFichier(ComplèteRep(fRepDonnées()) + "Trace_*.txt",
frInformationComplète + frNonRécursif + fCheminUnicode )
POUR TOUTE CHAÎNE sasufic DE suLstLog SÉPARÉE PAR RC
SI DateDifférence(Gauche(ExtraitChaîne(sasufic,3,TAB),8),DateSys) > gnNbJoursLog ALORS
fSupprime(ExtraitChaîne(sasufic,1,TAB))
FIN
FIN
Procédure globale MOB_CMD
PROCÉDURE MOB_CMD(LOCAL stID est un ST_MOB_IDENTITE, LOCAL stData est une ST_MOB_DATA, LOCAL
bufDocument est un Buffer)
InitTraceLog(stID)
TraceDEBUG("MOB_IDENTITE : User = " + stID.nIdUser +" IdMob = " +stID.saIdMob +" Licence = " + stID.
saLicence )
TraceDEBUG("MOB_CMD : CMD = " + stData.saCMD +" JSON = " + stData.saJSON+" Taille buf :"+Taille(
bufDocument))
bufRep est un Buffer
bCnxOK est un booléen
sErr est une chaîne
(bCnxOK,sErr)=ConnexionValide(stID)
SI PAS bCnxOK ALORS
bufRep= cErreur + sErr
TraceDEBUG("Pb Connexion refusée")
RENVOYER bufRep
SINON
TraceINFO("Connecté")
FIN
SELON stData.saCMD
CAS cCMD_NoteEcrit,cCMD_DocNoteEcrit,cCMD_TempsEcrit,cCMD_TempsSupprime,cCMD_CREcrit,
cCMD_CREcrit_V2,cCMD_ListeDocDmd,cCMD_RdvEcrit,cCMD_TempsEcrit_V2,cCMD_RDVValidation,
cCMD_RDVAnnulation,cCMD_DocRpRecup
//Le contenu JSON de stData est transmis au serveur BO sans traitement.
//Le type de données transmise est identifié par la commande stData.saCMD
HRAZ(TOSRV)
TOSRV.TS_CMD = stData.saCMD
TOSRV.TS_Date = DateHeureSys()
TOSRV.TS_JSON = stData.saJSON
TOSRV.TS_Lu=0
12/08/2026 Batik_WS_Com_Mob 130
Partie 4 › Collection de procédures › LIB_WS_MOB › Code
TOSRV.TS_Mobile = gstContexte.saIdMobile
TOSRV.TS_Buffer = bufDocument //Utilisé pour transférer l'image de la signature
HAjoute(TOSRV)
bufRep= "R"
CAS cCMD_RdvAPlanifierEcrit
bufRep=ControleRdvAPlanifier(stData)
SI bufRep="R" ALORS
HRAZ(TOSRV)
TOSRV.TS_CMD = cCMD_RdvAPlanifierEcrit//stData.saCMD
TOSRV.TS_Date = DateHeureSys()
TOSRV.TS_JSON = stData.saJSON
TOSRV.TS_Lu = 0
TOSRV.TS_Mobile = gstContexte.saIdMobile
TOSRV.TS_Buffer = bufDocument //Utilisé pour transférer l'image de la signature
HAjoute(TOSRV)
FIN
CAS cCMD_ListeDOC
bufRep=ListeReferenceDOC(stData)
CAS cCMD_ListeRDV
bufRep=ConstruitListeIntervention(Vrai,stData)
CAS cCMD_ListeRDV_V2
bufRep=ConstruitListeIntervention_V2(Vrai,stData)
CAS cCMD_LitINTER
bufRep=RecupereUneIntervention(stData)
CAS cCMD_LitINTER_V2
bufRep=RecupereUneIntervention_V2(stData)
CAS cCMD_RechercheRDV
bufRep=RechercheInterventions(stData)
CAS cCMD_ListeNonPlanifié
bufRep=ConstruitListeIntervention(Faux,stData)
CAS cCMD_ListeTEMPS
bufRep=ListeTempsPasse(stData)//ListeTemps(stData)
CAS cCMD_LitParam //Appelé par la fonction RécupContexte du mobile
bufRep=RecupListeParamMetiers()
CAS cCMD_LitParam_V2 //Appelé par la fonction RécupContexte du mobile
bufRep=RecupListeParamMetiers_V2(stID.nIdUser)
CAS cCMD_LitContexte
bufRep=RecupereContexte(stData)
CAS cCMD_IdClbRdvDroitC
bufRep=RecupererIdClbRDVDroitConsultation()
CAS cCMD_ListeRDV_Clb
bufRep=RecupererRDVAutreClb(stData)
CAS cCMD_ListeCh_Rapport
bufRep=RecupererChampRapportInter(stData)
CAS cCMD_RecupImgRapport
RecupererImgRp()// Recuperation des images rapport
bufRep= "R"
CAS cCMD_Creation_Rapport
RecupererImgRp()// Recuperation des images rapport
TraceINFO("json" + stData.saJSON )
bufRep= CreationRapport(stID,stData)
CAS cCMD_ListeCh_Mail
RecupererImgRp()// Recuperation des images rapport
TraceINFO("json" + stData.saJSON )
bufRep= RecupererChampMailModele(stData)
CAS cCMD_Cr_Structure_Mail
RecupererImgRp()// Recuperation des images rapport
TraceINFO("json" + stData.saJSON )
bufRep= CreationModeleMail(stData)
12/08/2026 Batik_WS_Com_Mob 131
Partie 4 › Collection de procédures › LIB_WS_MOB › Code
CAS cCMD_Envoyer_Mail
RecupererImgRp()// Recuperation des images rapport
TraceINFO("json" + stData.saJSON )
bufRep= CreationETEnvoiEmail(stID,stData)
AUTRE CAS
bufRep= cErreur + stData.saCMD +"?"
FIN
RENVOYER bufRep
Procédure globale MOB_EnvoieDoc
PROCÉDURE MOB_EnvoieDoc(stID est un ST_MOB_IDENTITE, saJSON est une chaîne ANSI, bufDocument est un
Buffer )
InitTraceLog(stID)
TraceDEBUG("MOB_EnvoieDoc :" + saJSON)
SI bufDocument="" ALORS RENVOYER "1"
saRep est une chaîne ANSI
bCnxOK est un booléen
sErr est une chaîne
(bCnxOK,sErr)=ConnexionValide(stID)
SI PAS bCnxOK ALORS
saRep= cErreur + sErr
TraceDEBUG("Pb Connexion refusée")
RENVOYER saRep
SINON
TraceINFO("Connecté")
FIN
HRAZ(TOSRV)
TOSRV.TS_CMD = cCMD_DocEcrit
TOSRV.TS_Date = DateHeureSys()
TOSRV.TS_JSON = saJSON
TOSRV.TS_Buffer = bufDocument
HAjoute(TOSRV)
saRep=cRep_OK
RENVOYER saRep
Procédure globale MOB_RecupDoc
PROCÉDURE MOB_RecupDoc(stID est un ST_MOB_IDENTITE, nID_TOMOB est un entier sur 8 octet)
InitTraceLog(stID)
bufRep est un Buffer
bCnxOK est un booléen
sErr est une chaîne
(bCnxOK,sErr)=ConnexionValide(stID)
SI PAS bCnxOK ALORS
bufRep= cErreur + sErr
TraceDEBUG("Pb Connexion refusée")
RENVOYER bufRep
SINON
TraceINFO("Connecté")
FIN
12/08/2026 Batik_WS_Com_Mob 132
Partie 4 › Collection de procédures › LIB_WS_MOB › Code
QUAND EXCEPTION DANS
SI HLitRecherchePremier(TOMOB,IDTOMOB,nID_TOMOB) ALORS
bufRep = TOMOB.TM_Buffer
TOMOB.TM_Lu=Vrai
HModifie(TOMOB)
RENVOYER bufRep
SINON
bufRep="R0000"
RENVOYER bufRep
FIN
FAIRE
bufRep="E"+ExceptionInfo(errComplet)
TraceINFO(bufRep)
RENVOYER bufRep
FIN
Procédure globale MOB_RecupDocID
PROCÉDURE MOB_RecupDocID(stID est un ST_MOB_IDENTITE)
InitTraceLog(stID)
//Donne au mobile demandeur l'ID et la description JSON du premier document non lu à récupérer
saRep est une chaîne ANSI
bCnxOK est un booléen
sErr est une chaîne
(bCnxOK,sErr)=ConnexionValide(stID)
SI PAS bCnxOK ALORS
saRep= cErreur + sErr
TraceDEBUG("Pb Connexion refusée")
RENVOYER saRep
SINON
TraceINFO("Connecté")
FIN
TraceINFO("MOB_RecupDocID " +stID.saIdMob)
QUAND EXCEPTION DANS
//Réalise une purge des documents non lu à destination des mobiles
d est une DateHeure
d..Jour -= 1
rqPurge est une Requête SQL =
[
DELETE FROM TOMOB WHERE TM_Date < {pDate} AND TM_CMD='DOC'
]
rqPurge.pDate=d
HExécuteRequête(rqPurge)
SI HLitRecherchePremier(TOMOB,TM_MobileTM_CMD,[stID.saIdMob,"DOC",Faux]) ALORS
saRep ="R" + TOMOB.IDTOMOB + RC +TOMOB.TM_JSON
12/08/2026 Batik_WS_Com_Mob 133
Partie 4 › Collection de procédures › LIB_WS_MOB › Code
RENVOYER saRep
SINON
saRep="V" //Vide
RENVOYER saRep
FIN
FAIRE
saRep="E"+ExceptionInfo(errComplet)
TraceINFO(saRep)
RENVOYER saRep
FIN
Procédure globale MOB_RecupValide
PROCÉDURE MOB_RecupValide(stID est un ST_MOB_IDENTITE,nIdToMob est un entier sur 8 octets)
InitTraceLog(stID)
saRep est une chaîne ANSI
bCnxOK est un booléen
sErr est une chaîne
(bCnxOK,sErr)=ConnexionValide(stID)
SI PAS bCnxOK ALORS
saRep= cErreur + sErr
TraceDEBUG("Pb Connexion refusée")
RENVOYER saRep
SINON
TraceINFO("Connecté")
FIN
SI HLitRecherchePremier(TOMOB,IDTOMOB,nIdToMob) ALORS
HSupprime(TOMOB)
FIN
saRep="R"
PurgeTOMOB_24h()
RENVOYER saRep
12/08/2026 Batik_WS_Com_Mob 134
Partie 4 › Collection de procédures › LIB_Traitements › Code
LIB_Traitements
Code
Procédure globale AjouterDonnesBDDansChampRapport
PROCÉDURE AjouterDonnesBDDansChampRapport(nIdInter est un entier sur 8 octets, tbRubASaisir est un
tableau de STJSONMembreRubRapport)
saRQ est une chaîne = [
SELECT
Intervention.IN_Titre AS IN_Titre,
Intervention.IN_RefInterne AS IN_RefInterne,
Intervention.CreationDate AS IN_CreationDate,
Intervention.IN_NumDevis,
Intervention.IN_DateDevis,
Intervention.IN_NumFacture,
Intervention.IN_DateFacture,
Intervention.IN_RefExterne AS IN_RefExterne,
Intervention.IN_Description AS IN_Description,
Intervention.IN_DureePrevue,
CONCAT(Collaborateur.CO_Prenom, ' ', Collaborateur.CO_Nom) AS IN_CO_Nom,
PA_TypeInter.PA_Libelle as IN_PA_Type,
Lieu.LI_CodeLieu AS LI_CodeLieu,
(
CASE WHEN AdLieu.AD_Adresse IS NOT NULL AND AdLieu.AD_Adresse <> '' THEN CONCAT(AdLieu.AD_Adresse,
' CHAR(13) ') ELSE '' END +
CASE WHEN AdLieu.AD_CodePostal IS NOT NULL AND AdLieu.AD_CodePostal <> '' THEN
CONCAT(AdLieu.AD_CodePostal, ' ') ELSE '' END +
CASE WHEN AdLieu.AD_Ville IS NOT NULL AND AdLieu.AD_Ville <> '' THEN AdLieu.AD_Ville ELSE '' END
) AS LI_Adresse,
Lieu.LI_CodeAcces AS LI_CodeAcces,
Client.CL_Nom AS CL_Nom,
CONCAT(AdClient.AD_Adresse, ' ', AdClient.AD_CodePostal, ' ',AdClient.AD_Ville) AS AD_Presentation,
Societe.SO_Nom
FROM
Intervention LEFT OUTER JOIN (Lieu LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse =
AdLieu.AD_PKID ) ON Intervention.IN_IDLieu = Lieu.LI_PKID,
Intervention INNER JOIN
(Dossier LEFT OUTER JOIN (Client LEFT OUTER JOIN Adresse AdClient ON Client.CL_IDAdressePrincipale
= AdClient.AD_PKID) ON Dossier.DO_IDClient = Client.CL_PKID ) ON Intervention.IN_IDDossier =
Dossier.DO_PKID ,
Intervention LEFT OUTER JOIN Collaborateur ON Intervention.IN_IDSuiviPar=Collaborateur.CO_PKID,
Intervention LEFT OUTER JOIN Societe ON Intervention.IN_IDSociete = Societe.SO_PKID,
Intervention LEFT OUTER JOIN ParametreMetier PA_TypeInter ON Intervention.IN_CleType =
PA_TypeInter.PA_CLE
WHERE
IN_PKID={pIdInter}
]
12/08/2026 Batik_WS_Com_Mob 135
Partie 4 › Collection de procédures › LIB_Traitements › Code
saRQ=Remplace(saRQ,"{pIdInter}",nIdInter )
sARQAdresseClient est une chaîne ANSI = [
SELECT CONCAT(AdLieu.AdClient.AD_Adresse, ' ',AdLieu.AD_CodePostal, ' ', AdLieu.AD_Ville, ' ') AS
Adresse
FROM Client
INNER JOIN Intervention on Intervention.IN_IDClient = Client.CL_PKID
LEFT JOIN Client_Adresse on Client_Adresse.CA_IDClient = Client.CL_PKID
INNER JOIN Adresse AdLieu on adlieu.AD_PKID = Client_Adresse.CA_IDAdresse
WHERE Intervention.IN_PKID = {pIdInter}
]
sARQAdresseClient=Remplace(sARQAdresseClient,"{pIdInter}",nIdInter )
sARQDossier est une chaîne ANSI = [
SELECT Dossier.DO_Titre as DOSSIER_TITRE , dossier.DO_RefExterne as DOSSIER_REFEXT ,
dossier.DO_NumDossier as DOSSIER_NUM, Dossier.DO_DateDebut as DOSSIER_DATE,
PA_StatutDossier.PA_Libelle as DOSSIER_STATUT
FROM Dossier
INNER JOIN Intervention on Intervention.IN_IDDossier = Dossier.DO_PKID
LEFT OUTER JOIN ParametreMetier PA_StatutDossier ON Dossier.DO_CleStatut = PA_StatutDossier.PA_CLE
WHERE Intervention.IN_PKID = {pIdInter}
]
sARQDossier=Remplace(sARQDossier,"{pIdInter}",nIdInter )
saRqCR est une chaîne ANSI = [
SELECT
CompteRendu.CR_PKID,
CompteRendu.CR_DateHeureDebut,
CompteRendu.CR_DateHeureFin,
CompteRendu.CR_NoteCollaborateur,
CompteRendu.CR_NomSignataire,
CompteRendu.CR_NomSignataireTech,
CompteRendu.CR_NoteSignataire,
CompteRendu.CR_DevisConforme,
CompteRendu.CR_AvecReserve,
CompteRendu.CR_ReserveCommentaire,
CompteRendu.CR_DateHeureSignature,
CompteRendu.CR_Signature,
CompteRendu.CR_SignatureTech,
CompteRendu.CR_IDTypeSignataire,
CompteRendu.GUID,
ParametreMetier.PA_Libelle AS CR_PA_Type
FROM CompteRendu
INNER JOIN RDV_Collaborateur ON RDV_Collaborateur.RVC_PKID = CR_IDRdv
INNER JOIN RDV_Planning ON RDV_Planning.GUID = RDV_Collaborateur.RVC_GUID_RDV
LEFT OUTER JOIN ParametreMetier ON ParametreMetier.PA_CLE = CompteRendu.CR_CleTypeSignataire and
CompteRendu.CR_CleTypeSignataire <> ''
WHERE
RDV_Collaborateur.Archive=0
AND RDV_Planning.Archive = 0
AND RDV_Planning.RV_IdInter = {p_IdInter}
]
saRqCR = Remplace(saRqCR,"{p_IdInter}",nIdInter)
saRQRDV est une chaîne ANSI = [
SELECT
RDV_Planning.GUID,
RDV_Collaborateur.RVC_DateDeb,
RDV_Collaborateur.RVC_DateFin,
RDV_Planning.RV_Objet,
12/08/2026 Batik_WS_Com_Mob 136
Partie 4 › Collection de procédures › LIB_Traitements › Code
RDV_Planning.RV_Description,
RDV_Planning.RV_Groupe,
RDV_Collaborateur.RVC_PKID,
CONCAT(Collaborateur.CO_Prenom, ' ', Collaborateur.CO_Nom) AS PL_CO_NOM
FROM RDV_Planning
INNER JOIN RDV_Collaborateur ON RDV_Collaborateur.RVC_GUID_RDV = RDV_Planning.GUID
LEFT OUTER JOIN Collaborateur ON RDV_Collaborateur.RVC_GUID_Colb = Collaborateur.GUID
WHERE
RDV_Planning.Archive=0 AND RDV_Collaborateur.Archive = 0
AND RDV_Planning.RV_IdInter = {p_IdInter}
ORDER BY RDV_Collaborateur.RVC_DateDeb
]
saRQRDV = Remplace(saRQRDV,"{p_IdInter}",nIdInter)
sdRReqInter est une Source de Données
sdRReqClient est une Source de Données
sdRReqDossier est une Source de Données
sdRReqCR est une Source de Données
sdReqRDV est une Source de Données
y est un entier
y = TableauCherche(tbRubASaisir,tcLinéaire,"GroupeApp",cRub_Inter)
SI y > 0 _ET_ PAS HExécuteRequêteSQL(sdRReqInter,hRequêteDéfaut,saRQ) ALORS // ne pas exécuter la req
pour rien
FIN
y = 0
y = TableauCherche(tbRubASaisir,tcLinéaire,"GroupeApp",cRub_Client)
SI y > 0 _ET_ PAS HExécuteRequêteSQL(sdRReqClient,hRequêteDéfaut,sARQAdresseClient) ALORS
// ne pas exécuter la req pour rien
FIN
y = 0
y = TableauCherche(tbRubASaisir,tcLinéaire,"GroupeApp",cRub_Dossier)
SI y > 0 _ET_ PAS HExécuteRequêteSQL(sdRReqDossier,hRequêteDéfaut,sARQDossier) ALORS
// ne pas exécuter la req pour rien
FIN
y = 0
y = TableauCherche(tbRubASaisir,tcLinéaire,"GroupeApp",cRub_CR)
SI y > 0 _ET_ PAS HExécuteRequêteSQL(sdRReqCR,hRequêteDéfaut,saRqCR) ALORS // ne pas exécuter la req
pour rien
FIN
y = 0
y = TableauCherche(tbRubASaisir,tcLinéaire,"GroupeApp",cRub_RDV)
SI y > 0 _ET_ PAS HExécuteRequêteSQL(sdReqRDV,hRequêteDéfaut,saRQRDV) ALORS // ne pas exécuter la req
pour rien
FIN
POUR TOUT stEle DE tbRubASaisir
SI stEle:TypeMembre = "Tableau" OU stEle:GroupeApp DANS (cRub_Inter, cRub_Dossier, cRub_Client)
ALORS
SELON stEle:GroupeApp
CAS cRub_Inter
QUAND EXCEPTION DANS
12/08/2026 Batik_WS_Com_Mob 137
Partie 4 › Collection de procédures › LIB_Traitements › Code
SI "IN_Description" = stEle.MembreMob ALORS
stEle:ListeDonnesBD = RTFVersTexte({sdRReqInter+"."+stEle.MembreMob})
SINON
stEle:ListeDonnesBD = Remplace({sdRReqInter+"."+stEle.MembreMob},"CHAR(13)",
RC,MotComplet)
FIN
FAIRE
stEle:ListeDonnesBD = ""
FIN
CAS cRub_Dossier
QUAND EXCEPTION DANS
stEle:ListeDonnesBD = {sdRReqDossier+"."+stEle.MembreMob}
FAIRE
stEle:ListeDonnesBD = ""
FIN
CAS cRub_Client
tbClientAd est un tableau de ST_ClientAd
stUnCliAd est un ST_ClientAd
POUR TOUT sdRReqClient
stUnCliAd.sAAdresse = sdRReqClient.Adresse
TableauAjoute(tbClientAd,stUnCliAd)
FIN
sJson est une chaîne ANSI
Sérialise(tbClientAd,sJson,psdJSON)
stEle:ListeDonnesBD = sJson
stEle:Type = "Tableau"
CAS cRub_CR
tbCrest un tableau de ST_CR_Rp
stUnCr est un ST_CR_Rp
POUR TOUT sdRReqCR
stUnCr.saGuidCR = sdRReqCR.GUID
stUnCr.saDebut = sdRReqCR.CR_DateHeureDebut
stUnCr.saFin = sdRReqCR.CR_DateHeureFin
stUnCr.saSignataire = sdRReqCR.cR_NomSignataire
stUnCr.saNomCollaborateur = sdRReqCR.CR_NomSignataireTech
TableauAjoute(tbCr,stUnCr)
FIN
sJson est une chaîne ANSI
Sérialise(tbCr,sJson,psdJSON)
stEle:ListeDonnesBD = sJson
TraceINFO("Donnees CR "+sJson)
CAS cRub_RDV
bDouble est un booléen
tbRDV est un tableau de ST_RDV_Rp
stUnRDV est un ST_RDV_Rp
POUR TOUT sdReqRDV
stUnRDV:saGuid = sdReqRDV.GUID
stUnRDV:saCollaborateurs = sdReqRDV.PL_CO_NOM
stUnRDV:saDateDebut = sdReqRDV.RVC_DateDeb
stUnRDV:saDateFin = sdReqRDV.RVC_DateFin
stUnRDV:saObjet = sdReqRDV.RV_Objet
stUnRDV:saNote = RTFVersTexte(sdReqRDV.RV_Description)
bDouble = Faux
SI sdReqRDV.RV_Groupe ALORS
12/08/2026 Batik_WS_Com_Mob 138
Partie 4 › Collection de procédures › LIB_Traitements › Code
POUR TOUT stRDV DE tbRDV
SI stRDV:saGuid = sdReqRDV.GUID ALORS
stRDV:saCollaborateurs += RC + stUnRDV:saCollaborateurs
bDouble = Vrai
SORTIR
FIN
FIN
SI PAS bDouble ALORS
TableauAjoute(tbRDV,stUnRDV)
FIN
SINON
TableauAjoute(tbRDV,stUnRDV)
FIN
FIN
sJson est une chaîne ANSI
Sérialise(tbRDV,sJson,psdJSON)
stEle:ListeDonnesBD = sJson
AUTRE CAS
FIN
FIN
FIN
Procédure globale CelluleAvecPlusiersRub
PROCÉDURE CelluleAvecPlusiersRub(unTerme est un STJSONMembreRubRapport, TexteInitial est une chaîne
ANSI, tabListeRubCol est un tableau de entiers)
nNbTermeCellule est un entier
POUR TOUT stTerme DE unTerme.ListeMembre
SI Contient(TexteInitial,stTerme:Rubrique,MotComplet+SansCasse) ALORS
nNbTermeCellule += 1
TableauAjoute(tabListeRubCol,stTerme:Ordre)
FIN
FIN
SI nNbTermeCellule > 1 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
Procédure globale ChargeListeRubDoc
PROCÉDURE ChargeListeRubDoc()
gtbListeRubDoc est un tableau de STJSONMembreRubRapport
sReqRub est une chaîne ANSI =
[
SELECT * FROM RubriquesDocument ORDER BY RD_IdRubParent ASC
]
stUnRub est un STJSONMembreRubRapport dynamique
n est un entier
ReqRub est une Source de Données
SI HExécuteRequêteSQL(ReqRub,gcnxReplica,sReqRub) ALORS
POUR TOUT ReqRub
stUnRub = allouer un STJSONMembreRubRapport
12/08/2026 Batik_WS_Com_Mob 139
Partie 4 › Collection de procédures › LIB_Traitements › Code
stUnRub.nIdRub = ReqRub.RD_PKID
stUnRub.Nom = ReqRub.RD_Nom
stUnRub.Description = ReqRub.RD_Description
stUnRub.Rubrique = ReqRub.RD_Rubrique
stUnRub.Ordre = ReqRub.RD_Ordre
stUnRub.MembreMob = ReqRub.RD_MembreMob
stUnRub.MasqueSaisie = ReqRub.RD_MasqueSaisie
stUnRub.EnvoiMob = ReqRub.RD_EnvoiMob
stUnRub.Modifiable = ReqRub.RD_Modifiable
stUnRub.BD = ReqRub.RD_BD
stUnRub.GroupeApp = ReqRub.RD_Groupe
stUnRub.TypeMembre = ReqRub.RD_TypeMembre
stUnRub.Type = ReqRub.RD_TypeMembre
SI ReqRub.RD_IdRubParent > 0 ALORS
n = TableauCherche(gtbListeRubDoc,tcLinéairePremier,"nIdRub",ReqRub.RD_IdRubParent)
SI n > 0 ALORS
TableauAjoute(gtbListeRubDoc[n].ListeMembre,stUnRub)
FIN
SINON
TableauAjoute(gtbListeRubDoc,stUnRub)
FIN
FIN
FIN
RENVOYER gtbListeRubDoc
Procédure globale ConstructionTbRubBaseRapport
PROCÉDURE ConstructionTbRubBaseRapport(TermeRapport est un STJSONRubriqueRapport, tabToutesRub est un
tableau de STJSONMembreRubRapport, LeDoc est un Document,bSujetEmail est un booléen = Faux)
k est un entier
ListeMembreNull est un tableau de STJSONListeMembre
MonDoc est un Document = LeDoc
POUR i = 1 _À_ TermeRapport.ListeTerme..Occurrence
k = 0
stUnTerme est un STJSONMembreRubRapport = TermeRapport.ListeTerme[i]
SI stUnTerme.Rubrique <> "" ALORS
tabFragments est tableau de docFragment = DocRecherche(MonDoc,stUnTerme.Rubrique,MotComplet+
SansCasse)
SI tabFragments.Occurrence > 0 ALORS
POUR b = 1 _À_ tabFragments.Occurrence
stUnTerme.Ordre = tabFragments[b].PositionFin
stUnTerme.Ordre = tabFragments[b].PositionFin
SI bSujetEmail ALORS
// si c'est dans le sujet un transforme le numéro d'ordre en décimal afin que le sujet
soit demande et traite avant le corps de
l'email
stUnTerme.Ordre ="0."+tabFragments[b].PositionFin
FIN
k = TableauAjoute(tabToutesRub,stUnTerme)
tabToutesRub[k].ListeMembre = ListeMembreNull
// toujours car pas tous les termes son requis
FIN
FIN
SI stUnTerme.ListeMembre..Occurrence > 0 _ET_ k <= 0 ALORS
POUR c = 1 _À_ stUnTerme.ListeMembre..Occurrence
12/08/2026 Batik_WS_Com_Mob 140
Partie 4 › Collection de procédures › LIB_Traitements › Code
tabFragment2 est tableau de docFragment = DocRecherche(MonDoc,stUnTerme.ListeMembre[c]
.Rubrique,MotComplet+SansCasse)
SI tabFragment2.Occurrence > 0 ALORS
POUR l = 1 _À_ tabFragment2.Occurrence
stUnTerme2 est un STJSONMembreRubRapport = stUnTerme.Listemembre[c]
stUnTerme2.Ordre = tabFragment2[l].PositionFin
k = TableauAjoute(tabToutesRub,stUnTerme2)
tabToutesRub[k].ListeMembre = ListeMembreNull
FIN
FIN
FIN
FIN
FIN
FIN
TableauTrie(tabToutesRub,ttMembre+tccRespecteNumérique,"+Ordre")
Procédure globale ConstructionTbRubEnvoyerMob
PROCÉDURE ConstructionTbRubEnvoyerMob(tbTermeRapport est un STJSONRubriqueRapport, tbToutesRub est
un tableau de STJSONMembreRubRapport, tbRubASaisir est un tableau de STJSONMembreRubRapport, MonDoc est
un Document, bToutesRub est un booléen = Faux, tbMotCleSpec est un tableau de STJSONMembreRubRapport =
Null)
sGroupe est une chaîne ANSI
n est un entier
= -1
h est un entier
POUR TOUT stEle DE tbToutesRub
SI (stEle:EnvoiMob OU bToutesRub ) ALORS
SI Contient(stEle:Rubrique, "$TAB") OU Contient(stEle:Rubrique, "$UN") OU Contient(stEle.
Rubrique,".UNIQUE") ALORS
SI sGroupe <> stEle:GroupeApp OU h <= 0 ALORS
n = TableauCherche(tbTermeRapport.ListeTerme,tcLinéaire,"GroupeApp;TypeMembre",stEle:
GroupeApp,"Tableau")
SI n > 0 ALORS
stUnTermeGr est un STJSONMembreRubRapport = tbTermeRapport.ListeTerme[n]
stUnTermeGr.Ordre = stEle:Ordre
TableauSupprimeTout(stUnTermeGr.ListeMembre)
TableauAjoute(stUnTermeGr:ListeMembre,stEle)
h = TableauAjoute(tbRubASaisir,stUnTermeGr)
FIN
SINON
SI h > 0 ALORS
stUnTermeRec est un STJSONMembreRubRapport = tbRubASaisir[h]
n = 0
POUR TOUT stElem2 DE tbRubASaisir[h]:ListeMembre
SI stElem2.Rubrique = stEle:Rubrique ALORS
n += 1
SORTIR
FIN
FIN
//TableauCherche(stUnTermeRec.ListeMembre,tcLinéairePremier,"Rubrique",stEle:Rubri
que)
SI n <= 0 ALORS
12/08/2026 Batik_WS_Com_Mob 141
Partie 4 › Collection de procédures › LIB_Traitements › Code
TableauAjoute(tbRubASaisir[h].ListeMembre,stEle)
SINON
n = TableauCherche(tbTermeRapport.ListeTerme,tcLinéaire,
"GroupeApp;TypeMembre",stEle:GroupeApp,"Tableau")
SI n > 0 ALORS
stUnTermeGr est un STJSONMembreRubRapport = tbTermeRapport.ListeTerme[n]
stUnTermeGr.Ordre = stEle:Ordre
TableauSupprimeTout(stUnTermeGr.ListeMembre)
TableauAjoute(stUnTermeGr:ListeMembre,stEle)
h = TableauAjoute(tbRubASaisir,stUnTermeGr)
FIN
FIN
FIN
FIN
sGroupe = stEle:GroupeApp
SINON
SI ChaîneOccurrence(stEle.Rubrique,".LISTE") > 0 ALORS
h = 0
n = TableauCherche(tbTermeRapport.ListeTerme,tcLinéaire,"GroupeApp;TypeMembre",stEle
:GroupeApp,"Tableau")
SI n > 0 ALORS
stUnTermeGr est un STJSONMembreRubRapport = tbTermeRapport.ListeTerme[n]
POUR TOUT stElem2 DE tbTermeRapport.ListeTerme[n]:ListeMembre
SI stElem2.MembreMob <> "" ALORS
SI h <= 0 ALORS
stUnTermeGr.Ordre = stEle:Ordre
TableauSupprimeTout(stUnTermeGr.ListeMembre)
stUnTermeGr.ListeMembre.Ajoute(stElem2)
h = TableauAjoute(tbRubASaisir,stUnTermeGr)
SINON
tbRubASaisir[h].ListeMembre.Ajoute(stElem2)
FIN
FIN
FIN
FIN
SINON
TableauAjoute(tbRubASaisir,stEle)
FIN
h = 0
sGroupe = ""
FIN
SINON
h = 0
sGroupe = ""
FIN
FIN
k est un entier
SI tbMotCleSpec<> Null ALORS
POUR TOUT stEleCle DE tbMotCleSpec
tabFragments est tableau de docFragment = DocRecherche(MonDoc,stEleCle.Rubrique,MotComplet+
SansCasse)
SI tabFragments.Occurrence > 0 ALORS
POUR b = 1 _À_ tabFragments.Occurrence
stEleCle.Ordre = tabFragments[b].PositionFin
k = TableauAjoute(tbRubASaisir,stEleCle)
TableauSupprimeTout(tbRubASaisir[k].ListeMembre)
// toujours car pas tous les termes son requis
FIN
FIN
FIN
12/08/2026 Batik_WS_Com_Mob 142
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
TableauTrie(tbRubASaisir,ttMembre+tccRespecteNumérique,"+Ordre")
bufResp est un Buffer
Sérialise(tbRubASaisir,bufResp,psdJSON)
TraceINFO("TabRubMob "+bufResp+RC)
Procédure globale ConstruireListeChampModeleEmail
PROCÉDURE ConstruireListeChampModeleEmail(stParam est un STJSONInfoModeleMailMob, bufRes est un Buffer)
| nIdModeleMail | est un entier sur 8 octets | | = stParam.nIdModele | |
| ----------------- | ---------------------------------------- | --- | ------------------- | --- |
| nIdInter | est un entier sur 8 octets | | = stParam.nIdInter | |
| CorpEmailDoc | est un Document | | | |
| SujetEmailDoc | est un Document | | | |
| TermeRapportEmail | est un STJSONRubriqueRapport | | | |
| TermeRapport | est un STJSONRubriqueRapport | | | |
| vRub | est un Variant | | | |
| tabToutesRub | est un tableau de STJSONMembreRubRapport | | | |
| tabRubMobile | est un tableau de STJSONMembreRubRapport | | | |
| saSujetEmail | est une chaîne ANSI | | | |
| tbMotCleSpec | est un tableau de STJSONMembreRubRapport | | | |
TermeRapportEmail.ListeTerme = ChargeListeRubDoc()
| saRQModeleMail | est une chaîne ANSI | = [ | | |
| -------------- | ------------------- | --- | --- | --- |
SELECT * FROM MailModele WHERE MM_PKID =
]
saRQModeleMail += nIdModeleMail
sdRqModele est une Source de Données
SI PAS HExécuteRequêteSQL(sdRqModele,gcnxReplica,saRQModeleMail) ALORS
RENVOYER "Modèle introuvable"
SINON
CorpEmailDoc = sdRqModele.MM_MsgDoc
| SujetEmailDoc = sdRqModele.MM_Sujet | | | | |
| ----------------------------------- | --- | --- | --- | --- |
SI sdRqModele.MM_Extra <> "" ALORS
Désérialise(tbMotCleSpec,sdRqModele.MM_Extra,psdJSON)
POUR TOUT stUnMot DE tbMotCleSpec
SI stUnMot:TypeMembre <> "" ALORS
stUnMot:Type = stUnMot:TypeMembre //Pour compatibilite dans le mobile
FIN
FIN
FIN
FIN
| //saRQRub | est une chaîne ANSI | = [ | | |
| --------- | ------------------- | --- | --- | --- |
// SELECT * FROM ParametreSysteme WHERE PAS_Code = 'RUBRIQUE_RAPPORT_INTERVENTION'
//]
//
//sdRpRub est une source de données
//HExécuteRequêteSQL(sdRpRub,gcnxReplica,saRQRub)
//vRub = JSONVersVariant(sdRpRub.PAS_Valeur)
//
//SI vRub<>Null ALORS
// Désérialise(TermeRapport,sdRpRub.PAS_Valeur,psdJSON)
// TableauTrie(TermeRapport:ListeTerme,ttMembre,"Groupe;Ordre")
//FIN
SI TermeRapport.ListeTerme..Occurrence > 0 ALORS
TableauTrie(TermeRapport:ListeTerme,ttMembre,"Groupe;Ordre")
| 12/08/2026 | | Batik_WS_Com_Mob | | 143 |
| ---------- | --- | ---------------- | --- | --- |
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
//MotCleModeleEmail_Rub_Rapport(TermeRapportEmail,TermeRapport)
SI TermeRapportEmail.ListeTerme..Occurrence > 0 ALORS
ConstructionTbRubBaseRapport(TermeRapportEmail,tabToutesRub,SujetEmailDoc,Vrai)
ConstructionTbRubBaseRapport(TermeRapportEmail,tabToutesRub,CorpEmailDoc)
ConstructionTbRubEnvoyerMob(TermeRapportEmail, tabToutesRub ,tabRubMobile,CorpEmailDoc,Vrai,
tbMotCleSpec)
AjouterDonnesBDDansChampRapport(nIdInter, tabRubMobile)
SI PAS EnvoiRubMob(tabRubMobile) ALORS
TraiteEmailBuffer(tabToutesRub,tabRubMobile,SujetEmailDoc)
TraiteEmailBuffer(tabToutesRub,tabRubMobile,CorpEmailDoc)
SupprimerToutesRubRapportMob(tabToutesRub,SujetEmailDoc)
SupprimerToutesRubRapportMob(tabToutesRub,CorpEmailDoc)
saSujetEmail = DocVersTexte(SujetEmailDoc)
stStructureMail est un ST_ModeleMailComplet
stStructureMail.saType = cCorpsModeleMail
stStructureMail.saSujet = saSujetEmail
stStructureMail.tbDestCC = stParam.stCompteMail.SMTP.tabCC_CopieEmail
DocHtmlCorps est un htmlDocument = DocVersHTML(CorpEmailDoc)
SI stParam.stCompteMail <> Null _ET_ stParam.stCompteMail.SMTP.bufSignature <> "" ALORS
DocHtmlCorps..ContenuHTML= DocHtmlCorps..ContenuHTML + ChaîneVersUTF8(stParam.stCompteMail
.SMTP.bufSignature)
FIN
bufCorpsHTML est un Buffer = DocHtmlCorps
//manque recherche contact
Sérialise(stStructureMail,bufRes,psdJSON)
bufRes+=cBufferHorsSer+bufCorpsHTML
RENVOYER ""
SINON
tabRubMobileEnvoyer est un tableau de STJSONMembreRubRapport
POUR TOUT stEle DE tabRubMobile
SI stEle:EnvoiMob ALORS
TableauAjoute(tabRubMobileEnvoyer,stEle)
FIN
FIN
TableauTrie(tabRubMobileEnvoyer,ttMembre,"Groupe;Ordre")
stModeleMail est un ST_ModeleMailRub
stModeleMail.saType = cRubriquesModeleMail
stModeleMail.Listerub = tabRubMobileEnvoyer
Sérialise(stModeleMail,bufRes,psdJSON)
RENVOYER ""
FIN
SINON
RENVOYER "E"
FIN
Procédure globale ConstruireModeleMailAvecInfoMob
12/08/2026 Batik_WS_Com_Mob 144
Partie 4 › Collection de procédures › LIB_Traitements › Code
PROCÉDURE ConstruireModeleMailAvecInfoMob(stParam est un STJSONInfoModeleMailMob, bufRes est un Buffer)
| nIdModeleMail | est un entier sur 8 octets | | = stParam.nIdModele | |
| ----------------- | ---------------------------------------- | --- | ------------------- | --- |
| nIdInter | est un entier sur 8 octets | | = stParam.nIdInter | |
| CorpEmailDoc | est un Document | | | |
| SujetEmailDoc | est un Document | | | |
| TermeRapportEmail | est un STJSONRubriqueRapport | | | |
| TermeRapport | est un STJSONRubriqueRapport | | | |
| tabToutesRub | est un tableau de STJSONMembreRubRapport | | | |
| tabRubMobile | est un tableau de STJSONMembreRubRapport | | | |
| saSujetEmail | est une chaîne ANSI | | | |
sResRepTemp est une chaîne ANSI
<COMPILE SI Configuration = "WS_COM_MOBILE" OU Configuration = "Debug WS_COM_MOBILE">
| sResRepTemp = ComplèteRep(fRepExe())+"TEMP\" | | | | |
| -------------------------------------------- | --- | --- | --- | --- |
<SINON>
| sResRepTemp = ComplèteRep(fRepWeb())+"TEMP\" | | | | |
| -------------------------------------------- | --- | --- | --- | --- |
<FIN>
CheminImg est une chaîne ANSI = ComplèteRep(sResRepTemp+stParam.nIdInter)
SI PAS RechercheListeRubModeleMail(nIdModeleMail,CorpEmailDoc,SujetEmailDoc,TermeRapportEmail,
TermeRapport) ALORS
RENVOYER "Modèle introuvable"
FIN
SI TermeRapportEmail.ListeTerme..Occurrence > 0 ALORS
ConstructionTbRubBaseRapport(TermeRapportEmail,tabToutesRub,SujetEmailDoc,Vrai)
ConstructionTbRubBaseRapport(TermeRapportEmail,tabToutesRub,CorpEmailDoc)
ConstructionTbRubEnvoyerMob(TermeRapportEmail, tabToutesRub ,tabRubMobile,CorpEmailDoc,Vrai)
AjouterDonnesBDDansChampRapport(nIdInter, tabRubMobile)
TraiteDocumentRapportMob(tabRubMobile,stParam.ListeMob,SujetEmailDoc,CheminImg)
TraiteDocumentRapportMob(tabRubMobile,stParam.ListeMob,CorpEmailDoc,CheminImg)
SupprimerToutesRubRapportMob(tabToutesRub,SujetEmailDoc)
SupprimerToutesRubRapportMob(tabToutesRub,CorpEmailDoc)
// TraiteEmailBuffer(tabRubMobile,stParam.ListeMob,SujetEmailDoc)
// TraiteEmailBuffer(tabRubMobile,stParam.ListeMob,CorpEmailDoc)
//
// SupprimerToutesRubRapportMob(tabToutesRub,SujetEmailDoc)
// SupprimerToutesRubRapportMob(tabToutesRub,CorpEmailDoc)
| saSujetEmail = UTF8VersUnicode(DocVersTexte(SujetEmailDoc)) | | | | |
| ------------------------------------------------------------ | ------------------ | --- | --- | --- |
| stStructureMail est un ST_ModeleMailComplet | | | | |
| stStructureMail.saType | = cCorpsModeleMail | | | |
| stStructureMail.saSujet | = saSujetEmail | | | |
stStructureMail.tbDestCC = stParam.stCompteMail.SMTP.tabCC_CopieEmail
//stStructureMail.bufCorpsHTML = fChargeBuffer(sResRepTemp)
DocHtmlCorps est un htmlDocument = DocVersHTML(CorpEmailDoc)
SI stParam.stCompteMail <> Null _ET_ stParam.stCompteMail.SMTP.bufSignature <> "" ALORS
DocHtmlCorps..ContenuHTML= DocHtmlCorps..ContenuHTML + ChaîneVersUTF8(stParam.stCompteMail.SMTP
.bufSignature)
FIN
bufCorpsHTML est un Buffer = DocHtmlCorps
//manque recherche contact
Sérialise(stStructureMail,bufRes,psdJSON)
bufRes+=cBufferHorsSer+bufCorpsHTML
//TraceINFO("res 1 "+bufRes)
| 12/08/2026 | | Batik_WS_Com_Mob | | 145 |
| ---------- | --- | ---------------- | --- | --- |
Partie 4 › Collection de procédures › LIB_Traitements › Code
RENVOYER ""
SINON
RENVOYER "E"
FIN
Procédure globale ConstruitListeIntervention
PROCÉDURE ConstruitListeIntervention(bAvecRDV est un booléen,stData est une ST_MOB_DATA)
tblRDV est un tableau de ST_RDV_INTER
sErreur est une chaîne
bufRes est un Buffer
bAvecNonPlanifie est un booléen
SI bAvecRDV ALORS
TraceINFO("Ajout des Interventions Planifiées")
SI ParamApplication_Lit_Booleen(cParam_Mobile_Inter_Non_Planifiées,Faux) ALORS
TraceINFO("Ajout des Interventions non planifiées")
bAvecNonPlanifie = Vrai
FIN
TraceINFO("Liste RDV")
sErreur = ListeRDV(stData,tblRDV,bAvecNonPlanifie)
TraceINFO(sErreur)
SI sErreur<>"" ALORS
RENVOYER sErreur
FIN
SINON
TraceINFO("Sans Interventions Planifiées")
FIN
//SI ParamApplication_Lit_Booleen(cParam_Mobile_Inter_Non_Planifiées,Faux) alors
// TraceINFO("Ajout des Interventions non planifiées")
// sErreur = RechercheInterventionsNonPlannifiées(tblRDV)
// SI sErreur<>"" ALORS
// RENVOYER sErreur
// FIN
//sinon
// TraceINFO("Sans Interventions non planifiées")
//fin
Sérialise(tblRDV,bufRes,psdJSON)
bufRes="R" + bufRes
RENVOYER bufRes
Procédure globale ConstruitListeIntervention_V2
PROCÉDURE ConstruitListeIntervention_V2(bAvecRDV est un booléen,stData est une ST_MOB_DATA)
tbLRDV est un tableau de ST_RDV_INTER_V2
sErreur est une chaîne
bufRes est un Buffer
bAvecNonPlanifie est un booléen
SI bAvecRDV ALORS
TraceINFO("Ajout des Interventions Planifiées")
SI ParamApplication_Lit_Booleen(cParam_Mobile_Inter_Non_Planifiées,Faux) ALORS
TraceINFO("Ajout des Interventions non planifiées")
bAvecNonPlanifie = Vrai
FIN
sErreur = ListeRDV_V2(stData,tbLRDV,bAvecNonPlanifie)
SI sErreur<>"" ALORS
RENVOYER sErreur
12/08/2026 Batik_WS_Com_Mob 146
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
SINON
TraceINFO("Sans Interventions Planifiées")
FIN
//SI ParamApplication_Lit_Booleen(cParam_Mobile_Inter_Non_Planifiées,Faux) alors
// TraceINFO("Ajout des Interventions non planifiées")
// sErreur = RechercheInterventionsNonPlannifiées(tblRDV)
// SI sErreur<>"" ALORS
// RENVOYER sErreur
// FIN
//sinon
// TraceINFO("Sans Interventions non planifiées")
//fin
Sérialise(tbLRDV,bufRes,psdJSON)
bufRes="R" + bufRes
RENVOYER bufRes
Procédure globale ConstruitResultatRechercheInterventions
PROCÉDURE ConstruitResultatRechercheInterventions(saRQ est une chaîne ANSI)
bufRes est un Buffer
QUAND EXCEPTION DANS
sd est une Source de Données
saLstIdInter est une chaîne ANSI
tbaIndice est un tableau associatif (*, *, wlEntier) d'entiers
n est un entier
ChronoDébut()
// TraceRequete(saRQ)
SI PAS HExécuteRequêteSQL(sd,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
bufRes="E"+ErreurInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
TraceINFO("ConstruitResultatRechercheInterventions :"+ saRQ)
RENVOYER bufRes
FIN
nb est un entier = HNbEnr(sd)
TraceINFO("Requête ok, durée : " + ChronoValeur() + "ms, nb="+nb )
tblINT est un tableau de ST_INTER
SI nb>0 ALORS
POUR TOUT sd
saLstIdInter+= [","] + sd.IN_PKID
//Construction de la réponse (tableau)
xt est un ST_INTER
//Sous ensemble Intervention
xt.saCli_Nom =sd.CL_Nom
xt.nInt_PKID =sd.IN_PKID
SI sd.IN_CleType <> "" _ET_ gstParametres.TbaTypeInter[sd.IN_CleType]..Existe = Vrai ALORS
12/08/2026 Batik_WS_Com_Mob 147
Partie 4 › Collection de procédures › LIB_Traitements › Code
xt.saInt_Typ = gstParametres.TbaTypeInter[sd.IN_CleType]
FIN
SI sd.IN_CleEtat <> "" _ET_ gstParametres.TbaEtatInter[sd.IN_CleEtat]..Existe = Vrai ALORS
xt.saInt_Etat = gstParametres.TbaEtatInter[sd.IN_CleEtat]
FIN
xt.saInt_Descrip =RTFVersTexte(sd.IN_Description)
xt.saInt_Note =sd.IN_NoteInterne
xt.saInt_Tit =sd.IN_Titre
xt.saInt_RfI =sd.IN_RefInterne
xt.saInt_RfE =sd.IN_RefExterne
xt.saLieu_CodeLieu =sd.LI_CodeLieu
xt.nInt_IDSociete =sd.IN_IDSociete
xt.saDmd_Nom =sd.PE_Nom
xt.saDmd_Prenom =sd.PE_Prenom
xt.stLieu_Ad.nID =sd.AdLieu_PKID
xt.stLieu_Ad.saEtiq =sd.AdLieu_Etiquette
xt.stLieu_Ad.saLig =sd.AD_Adresse
xt.stLieu_Ad.saCP =sd.AdLieu_CodePostal
xt.stLieu_Ad.saVil =sd.AdLieu_Ville
n=TableauAjoute(tblINT,xt)
tbaIndice[sd.IN_PKID]=n
//Tableau d'indice permettant de retrouver l'intervention dans tblINTER par son PKID
FIN
TraceINFO("Tableau Inter, durée : " + ChronoValeur() + "ms" )
sdPers est une Source de Données
saRQ=[
SELECT
Intervention_Personne.IP_Etage AS IP_Etage,
Intervention_Personne.IP_Lot AS IP_Lot,
Intervention_Personne.IP_IDPersonne AS IP_IDPersonne,
Personne.PE_IDCivilite AS PE_IDCivilite,
Personne.PE_Nom AS PE_Nom,
Personne.PE_Prenom AS PE_Prenom,
Personne.PE_TelFixe AS PE_TelFixe,
Personne.PE_TelMobile AS PE_TelMobile,
Personne.PE_Email AS PE_Email,
Personne.PE_CleRole AS PE_CleRole,
Personne.PE_Note AS PE_Note,
Intervention_Personne.IP_IDIntervention AS IP_IDIntervention,
Intervention_Personne.IP_IDLieu AS IP_IDLieu,
Intervention_Personne.IP_IDClient AS IP_IDClient,
Lieu_Personne.LIP_Etage AS LIP_Etage,
Lieu_Personne.LIP_Lot AS LIP_Lot,
Lieu_Personne.LIP_EtiquetteAdresse AS LIP_EtiquetteAdresse
FROM Intervention_Personne INNER JOIN Personne ON (Personne.PE_PKID =
Intervention_Personne.IP_IDPersonne)
LEFT OUTER JOIN Lieu_Personne ON (Lieu_Personne.LIP_IDLieu=Intervention_Personne.IP_IDLieu
AND Lieu_Personne.LIP_IDPersonne=Intervention_Personne.IP_IDPersonne)
WHERE Intervention_Personne.IP_IDIntervention IN ({Liste_IDIntervention})
ORDER BY
IP_IDIntervention ASC
]
TraceINFO("Liste ID Inter : " +saLstIdInter)
saRQ=Remplace(saRQ,"{Liste_IDIntervention}",saLstIdInter)
SI PAS HExécuteRequêteSQL(sdPers,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
bufRes="E"+ErreurInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
12/08/2026 Batik_WS_Com_Mob 148
Partie 4 › Collection de procédures › LIB_Traitements › Code
RENVOYER bufRes
FIN
TraceINFO("Requete Personnes Intrv, durée : " + ChronoValeur() + "ms" )
stPer est un ST_PERSONNE_LIEU
POUR TOUT sdPers
stPer.nID = sdPers.IP_IDPersonne
stPer.saNom = sdPers.PE_Nom
stPer.saPren = sdPers.PE_Prenom
stPer.saTFix = sdPers.PE_TelFixe
stPer.saTMob = sdPers.PE_TelMobile
SI sdPers.PE_CleRole <> "" _ET_ gstParametres.TbaRoleContact[sdPers.PE_CleRole]..Existe =
Vrai ALORS
stPer.saRole = gstParametres.TbaRoleContact[sdPers.PE_CleRole]
FIN
stPer.saEtage = sdPers.IP_Etage<>"" ? sdPers.IP_Etage SINON sdPers.LIP_Etage
stPer.saLot = sdPers.IP_Lot<>"" ? sdPers.IP_Lot SINON sdPers.LIP_Lot
stPer.saEtiquette = sdPers.LIP_EtiquetteAdresse
stPer.saNote = sdPers.PE_Note
stPer.bDonneurOrdre = sdPers.IP_IDClient<>0 _ET_ sdPers.IP_IDlieu=0
n=tbaIndice[sdPers.IP_IDIntervention]
tblINT[n].tblPerLieu.Ajoute(stPer)
FIN
tblINT[n].tblPerLieu.Trie(ttMembre,"saRole")
//Ajout du tableau des Notes Internes
sdNote est une Source de Données
saRQ = [
SELECT MI_Message,MessageInterne.CreationDate,UT_Nom , UT_Prenom
,MI_IDTypeMessage,MI_IDIntervention,MessageInterne.GUID as MI_GUID
,MessageInterne.CreationUser
FROM MessageInterne INNER JOIN Utilisateur ON
MessageInterne.CreationUser=Utilisateur.UT_PKID
WHERE MI_IDIntervention IN ({Liste_IDIntervention}) AND MessageInterne.MI_IDTypeMessage <
10
ORDER BY MessageInterne.CreationDate DESC
]
saRQ=Remplace(saRQ,"{Liste_IDIntervention}",saLstIdInter)
SI PAS HExécuteRequêteSQL(sdNote,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
TraceERREUR("Erreur lecture des Notes Internes " + HErreurInfo(hErrComplet))
SINON
stN est un ST_NOTE
POUR TOUT sdNote
stN.nIdInter =sdNote.MI_IDIntervention
stN.saNote =sdNote.MI_Message
stN.saAuteur =sdNote.UT_Prenom + [" "] + sdNote.UT_Nom
stN.saDate =sdNote.CreationDate
stN.saGuid =sdNote.MI_GUID
//stN.nIdAuteur =sdNote.CreationUser
stN.nIdUsr =sdNote.CreationUser
//stN.saType =sdNote.MI_IDTypeMessage //toujours à 0
n=tbaIndice[sdNote.MI_IDIntervention]
tblINT[n].tblNote.Ajoute(stN)
FIN
FIN
FIN
12/08/2026 Batik_WS_Com_Mob 149
Partie 4 › Collection de procédures › LIB_Traitements › Code
Sérialise(tblINT,bufRes,psdJSON)
HAnnuleDéclaration(sd)
TraceINFO("Fin traitement ok, durée : " + ChronoFin() + "ms" + RC + tblINT..Occurrence +
" Interventions renvoyées." )
bufRes ="R" + bufRes
TraceINFO("bufREs : " + bufRes)
RENVOYER bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
RENVOYER bufRes
FIN
Procédure globale ConstruitTableauInterventions
PROCÉDURE ConstruitTableauInterventions(saRQ est une chaîne ANSI,saRqCR est une chaîne ANSI ,bAvecRDV
est un booléen,tblRDV est un tableau de ST_RDV_INTER)
QUAND EXCEPTION DANS
nNbInter est un entier
sRes est une chaîne ANSI
saLstIdInter est une chaîne ANSI
saLstIdRDV est une chaîne ANSI
tbaIdInter est un tableau associatif (*, *, wlEntier_8) d'entiers
tbaIdRDV est un tableau associatif (*, *, wlEntier_8) d'entiers
n est un entier
tbaCompteRendu est un tableau associatif de STCompteRenduRqListe
saCle est une chaîne ANSI
sdSDCR est une Source de Données
SI saRqCR <> "" ALORS
TraceRequete(saRqCR)
SI PAS HExécuteRequêteSQL(sdSDCR,gcnxReplica,hRequêteDéfaut,saRqCR) ALORS
sRes="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventionsAvecCopmteRendu : " + sRes)
RENVOYER sRes
FIN
FIN
POUR TOUT sdSDCR
stCpR est une STCompteRenduRqListe
stCpR.saCR_GUID = sdSDCR.CR_GUID
stCpR.saDateHeureDebut = sdSDCR.CR_DateHeureDebut
stCpR.saDateHeureFin = sdSDCR.CR_DateHeureFin
stCpR.saNoteCollaborateur = sdSDCR.CR_NoteCollaborateur
stCpR.saNoteSignataire = sdSDCR.CR_NoteSignataire
stCpR.saDateHeureSignature = sdSDCR.CR_DateHeureSignature
stCpR.nIN_PKID = sdSDCR.CR_IDIntervention
stCpR.saNomSignataire = sdSDCR.CR_NomSignataire
stCpR.saPL_GUID = sdSDCR.CR_IDRdv
stCpR.nPL_IDCollaborateur = sdSDCR.PL_IDCollaborateur
stCpR.nPL_IDCollaborateur = sdSDCR.CR_CreationUser
stCpR.bufCR_Signature = "coucou"
stCpR.nRDV_PKID = sdSDCR.CR_IDRdv
stCpR.nIdGroupe = sdSDCR.PL_IDGroupe
SI stCpR.nRDV_PKID > 0 ET stCpR.saDateHeureDebut <> "" ET stCpR.saDateHeureFin <> "" ALORS
12/08/2026 Batik_WS_Com_Mob 150
Partie 4 › Collection de procédures › LIB_Traitements › Code
SI stCpR.nIdGroupe > 0 ALORS
tbaCompteRendu[stCpR.nIdGroupe] = stCpR
SINON
tbaCompteRendu[stCpR.nRDV_PKID] = stCpR
FIN
FIN
FIN
sd est une Source de Données
TraceRequete(saRQ)
SI PAS HExécuteRequêteSQL(sd,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
sRes="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER sRes
FIN
POUR TOUT sd
xt est un ST_RDV_INTER
saLstIdInter+= [","] + sd.IN_PKID
SI bAvecRDV ALORS
saLstIdRDV += [","] + sd.PL_PKID
| | xt.stRDV.nPKID | = sd.PL_PKID | | |
| --- | ------------------------- | ------------------------- | ---- | --- |
| | xt.stRDV.saGUID | = sd.PL_GUID | | |
| | xt.stRDV.nIDCollaborateur | = sd.PL_IDCollaborateur | | |
| | xt.stRDV.nIDIntervention | = sd.PL_IDIntervention | | |
| | xt.stRDV.nIDTypeActivite | = sd.PL_IDTypeActivite | | |
| | xt.stRDV.saObjet | = sd.PL_Objet | | |
xt.stRDV.saDescription = sd.PL_Description//RTFVersTexte(sd.PL_Description )
| | xt.stRDV.saDateDebut | = sd.PL_DateDebut | | |
| --- | ---------------------- | ----------------------------------------- | --- | --- |
| | xt.stRDV.saDateFin | = sd.PL_DateFin | | |
| | xt.stRDV.nIDStatut | = sd.PL_IDStatut | | |
| | xt.stRDV.saStatut | = sd.saStatutRDV | | |
| | xt.stRDV.nIDLieu | = sd.PL_IDLieu | | |
| | xt.stRDV.bGrouper | = sd.PL_Grouper | | |
| | xt.stRDV.nIDGroupe | = sd.PL_IDGroupe | | |
| | xt.stRDV.nIDDossier | = sd.PL_IDDossier | | |
| | xt.stRDV.bPrive | = sd.PL_Prive | | |
| | xt.stRDV.bSuperposable | = sd.PL_Superposable | | |
| | xt.stRDV.nIDEquipe | = sd.PL_IDEquipe | | |
| | xt.stRDV.nIDSociete | = sd.PL_IDSociete | | |
| | xt.saRDV_TypAct | = DonneLibParametre(sd.PL_IDTypeActivite) | | |
| | xt.saRDV_Statut | = DonneLibParametre(sd.PL_IDStatut) | | |
| | xt.saRDV_Lieu | = sd.LI_CodeLieu | | |
SI sd.PL_IDGroupe > 0 ALORS
saCle = sd.PL_IDGroupe
SINON
saCle = sd.PL_PKID
FIN
SI tbaCompteRendu[saCle]..Existe ALORS
| 12/08/2026 | | Batik_WS_Com_Mob | | 151 |
| ---------- | --- | ---------------- | --- | --- |
Partie 4 › Collection de procédures › LIB_Traitements › Code
xt.stRDV.stCompteRendu.saGuidCR = tbaCompteRendu[saCle].saCR_GUID
xt.stRDV.stCompteRendu.saDebut = tbaCompteRendu[saCle].saDateHeureDebut
xt.stRDV.stCompteRendu.saFin = tbaCompteRendu[saCle].saDateHeureFin
xt.stRDV.stCompteRendu.saNoteCollab = tbaCompteRendu[saCle].saNoteCollaborateur
xt.stRDV.stCompteRendu.saNoteClient = tbaCompteRendu[saCle].saNoteSignataire
xt.stRDV.stCompteRendu.saDateSignature = tbaCompteRendu[saCle].saDateHeureSignature
xt.stRDV.stCompteRendu.nIdInter = tbaCompteRendu[saCle].nIN_PKID
xt.stRDV.stCompteRendu.saSignataire = tbaCompteRendu[saCle].saNomSignataire
xt.stRDV.stCompteRendu.saGuidRDV = sd.PL_GUID
xt.stRDV.stCompteRendu.nIdCollab = tbaCompteRendu[saCle].nPL_IDCollaborateur
xt.stRDV.stCompteRendu.nIdUser = tbaCompteRendu[saCle].nCR_CreationUser
xt.stRDV.stCompteRendu.bufImgSignature = "coucou"
SINON
xt.stRDV.stCompteRendu.saGuidCR = ""
xt.stRDV.stCompteRendu.saDebut = ""
xt.stRDV.stCompteRendu.saFin = ""
xt.stRDV.stCompteRendu.saNoteCollab = ""
xt.stRDV.stCompteRendu.saNoteClient = ""
xt.stRDV.stCompteRendu.saDateSignature = ""
xt.stRDV.stCompteRendu.nIdInter = sd.IN_PKID
xt.stRDV.stCompteRendu.saSignataire = ""
xt.stRDV.stCompteRendu.saGuidRDV = sd.PL_GUID
xt.stRDV.stCompteRendu.nIdCollab = sd.PL_IDCollaborateur
xt.stRDV.stCompteRendu.nIdUser = ""
xt.stRDV.stCompteRendu.bufImgSignature = ""
FIN
FIN
//Sous ensemble Intervention
xt.stINTER.nDos_IDCli = sd.DO_IDClient
xt.stINTER.saDos_Type = DonneLibParametre(sd.DO_IDTypeDossier)
xt.stINTER.saDos_Tit = sd.DO_Titre
xt.stINTER.saDos_Etat = DonneLibParametre(sd.DO_IDStatut)
xt.stINTER.saDos_RfI = sd.DO_RefInterne
xt.stINTER.saDos_RfE = sd.DO_RefExterne
xt.stINTER.saCli_Nom = sd.CL_Nom
xt.stINTER.saCli_Tel = sd.CL_Tel
xt.stINTER.saCli_Fax = sd.CL_Fax
xt.stINTER.stCli_Ad.nID = sd.AdClient_PKID
xt.stINTER.stCli_Ad.saEtiq = sd.AdClient_Etiquette
xt.stINTER.stCli_Ad.saLig = sd.AdClient_Ligne_1 + [RC] +sd.AdClient_Ligne_2 + [RC]
+sd.AdClient_Ligne_3 + [RC] +sd.AdClient_Ligne_4+ [RC] +sd.AdClient_Ligne_5
xt.stINTER.stCli_Ad.saCP = sd.AdClient_CodePostal
xt.stINTER.stCli_Ad.saVil = sd.AdClient_Ville
xt.stINTER.nInt_PKID = sd.IN_PKID
xt.stINTER.saInt_Typ = DonneLibParametre(sd.IN_IDTypeIntervention)
xt.stINTER.saInt_Etat = DonneLibParametre(sd.IN_IDEtatIntervention)
xt.stINTER.nInt_IDSuiv = sd.IN_IDSuiviPar
xt.stINTER.saNomSuiviPar = sd.NomSuiviPar
xt.stINTER.saPrenomSuiviPar = sd.PrenomSuiviPar
xt.stINTER.saTelSuiviPar = sd.TelMobSuiviPar
xt.stINTER.nInt_IDDos = sd.IN_IDDossier
xt.stINTER.nInt_IDCli = sd.IN_IDClient
xt.stINTER.nInt_IDLieu = sd.IN_IDLieu
xt.stINTER.nInt_IDSociete = sd.IN_IDSociete
xt.stINTER.saSoc_Nom = sd.SO_Nom
xt.stINTER.saInt_Descrip = RTFVersTexte(sd.IN_Description)
xt.stINTER.bInt_AtTVA = sd.IN_AttestationTVAPresente
xt.stINTER.saInt_Note = sd.IN_NoteInterne
12/08/2026 Batik_WS_Com_Mob 152
Partie 4 › Collection de procédures › LIB_Traitements › Code
xt.stINTER.saInt_Tit = sd.IN_Titre
xt.stINTER.saInt_RfI = sd.IN_RefInterne
xt.stINTER.saInt_RfE = sd.IN_RefExterne
xt.stINTER.saInt_NumDevis = sd.IN_NumDevis
xt.stINTER.saInt_DateDevis = DateVersChaîne(sd.IN_DateDevis,"JJ/MM/AA")
xt.stINTER.nLieu_PKID = sd.LI_PKID
xt.stINTER.saLieu_CodeLieu = sd.LI_CodeLieu
xt.stINTER.nLieu_IDAdresse = sd.LI_IDAdresse
xt.stINTER.saLieu_Type = DonneLibParametre(sd.LI_IDType)
xt.stINTER.saLieu_CodeAcces = sd.LI_CodeAcces
xt.stINTER.bLieu_Badge = sd.LI_Badge
xt.stINTER.bLieu_Interphone = sd.LI_Interphone
xt.stINTER.saLieu_Note = sd.LI_Note
xt.stINTER.stLieu_Ad.nID = sd.AdLieu_PKID
xt.stINTER.stLieu_Ad.saEtiq = sd.AdLieu_Etiquette
xt.stINTER.stLieu_Ad.saLig = sd.AdLieu_Ligne_1 + [RC] + sd.AdLieu_Ligne_2 + [
RC] + sd.AdLieu_Ligne_3 + [RC] + sd.AdLieu_Ligne_4 + [RC] + sd.AdLieu_Ligne_5
xt.stINTER.stLieu_Ad.saCP = sd.AdLieu_CodePostal
xt.stINTER.stLieu_Ad.saVil = sd.AdLieu_Ville
nNbInter = TableauAjoute(tblRDV,xt)
SI bAvecRDV ALORS
tbaIdRDV[sd.PL_PKID]=nNbInter
FIN
tbaIdInter[sd.IN_PKID]=nNbInter
//Tableau d'indice permettant de retrouver l'intervention dans tblINTER par son PKID
FIN
SI nNbInter>0 ET bAvecRDV ALORS
//Construction de la liste des Contacts RDV
saRQ2 est une chaîne ANSI=[
SELECT
Planning_RDV_Personne.PRP_PKID AS PRP_PKID,
Planning_RDV_Personne.PRP_IDRdv AS PRP_IDRdv,
Personne.PE_IDCivilite AS PE_IDCivilite,
Personne.PE_Nom AS PE_Nom,
Personne.PE_Prenom AS PE_Prenom,
Personne.PE_Email AS PE_Email,
Personne.PE_TelFixe AS PE_TelFixe,
Personne.PE_TelMobile AS PE_TelMobile,
Personne.PE_IDRole,
Personne.PE_Note AS PE_Note,
Intervention_Personne.IP_IDPersonne AS IP_IDPersonne,
Intervention_Personne.IP_IDIntervention AS IP_IDIntervention,
Intervention_Personne.IP_IDLieu AS IP_IDLieu,
Intervention_Personne.IP_IDClient AS IP_IDClient,
Intervention_Personne.IP_Etage AS IP_Etage,
Intervention_Personne.IP_Lot AS IP_Lot,
Lieu_Personne.LIP_Etage AS LIP_Etage,
Lieu_Personne.LIP_Lot AS LIP_Lot,
Lieu_Personne.LIP_EtiquetteAdresse AS LIP_EtiquetteAdresse
FROM
Planning_RDV_Personne INNER JOIN Personne ON (Personne.PE_PKID =
Planning_RDV_Personne.PRP_IDPersonne)
INNER JOIN Planning_RDV ON (Planning_RDV.PL_PKID=Planning_RDV_Personne.PRP_IDRdv)
INNER JOIN Intervention_Personne ON (Intervention_Personne.IP_IDPersonne=Personne.PE_PKID
AND Intervention_Personne.IP_IDIntervention=Planning_RDV.PL_IDIntervention)
INNER JOIN Lieu_Personne ON
(Lieu_Personne.LIP_IDPersonne=Intervention_Personne.IP_IDPersonne AND
Lieu_Personne.LIP_IDLieu=Intervention_Personne.IP_IDLieu)
12/08/2026 Batik_WS_Com_Mob 153
Partie 4 › Collection de procédures › LIB_Traitements › Code
WHERE Planning_RDV_Personne.PRP_IDRdv IN ({pListeIdRdv})
]
saRQ2=Remplace(saRQ2,"{pListeIdRdv}",saLstIdRDV)
TraceRequete(saRQ2)
sdCnt est une Source de Données
SI PAS HExécuteRequêteSQL(sdCnt,gcnxReplica,hRequêteDéfaut,saRQ2) ALORS
sRes="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER sRes
FIN
POUR TOUT sdCnt
stContact est un ST_RDV_CONTACT
| | stContact.nIdRdvCnt | = sdCnt.PRP_PKID | | |
| --- | ------------------------------------------------------------- | -------------------- | --- | --- |
| | //stContact.nId | =sdCnt.IP_IDPersonne | | |
| | stContact.saCivilite = DonneLibParametre(sdCnt.PE_IDCivilite) | | | |
| | stContact.saNom | = sdCnt.PE_Nom | | |
| | stContact.saPrenom | = sdCnt.PE_Prenom | | |
| | stContact.saEmail = sdCnt.PE_Email | | | |
| | stContact.saRole = DonneLibParametre(sdCnt.PE_IDRole) | | | |
stContact.saEtage = sdCnt.IP_Etage<>"" ? sdCnt.IP_Etage SINON sdCnt.LIP_Etage
stContact.saLot = sdCnt.IP_Lot<>"" ? sdCnt.IP_Lot SINON sdCnt.LIP_Lot
stContact.saEtiquette= sdCnt.LIP_EtiquetteAdresse
| | stContact.saNote = sdCnt.PE_Note | | | |
| --- | -------------------------------- | --- | --- | --- |
stContact.bDonneurOrdre = sdCnt.IP_IDClient<>0 _ET_ sdCnt.IP_IDlieu=0
//Ajout des téléphones dans un tableau (structure prête pour le multitéléphone)
stTel est un ST_TELEPHONE
SI sdCnt.PE_TelFixe<>"" ALORS
| | stTel.saTelNum | = sdCnt.PE_TelFixe | | |
| --- | -------------- | ------------------- | --- | --- |
| | stTel.saTelLib | = "Tél 1" | | |
stContact.tbLTEL.Ajoute(stTel)
FIN
SI sdCnt.PE_TelMobile<>"" ALORS
| | stTel.saTelNum | = sdCnt.PE_TelMobile | | |
| --- | -------------- | --------------------- | --- | --- |
| | stTel.saTelLib | = "Tél 2" | | |
stContact.tbLTEL.Ajoute(stTel)
FIN
n=tbaIdRDV[sdCnt.PRP_IDRdv]
tblRDV[n].stRDV.tblContact.Ajoute(stContact)
FIN
//Construction de la liste des Contacts Intervention/Lieu
FIN
SI nNbInter>0 ALORS
sdPers est une Source de Données
| saRQ3 | est une chaîne ANSI | = [ | | |
| ----- | ------------------- | --- | --- | --- |
SELECT
Intervention_Personne.IP_Etage AS IP_Etage,
Intervention_Personne.IP_Lot AS IP_Lot,
Intervention_Personne.IP_IDPersonne AS IP_IDPersonne,
Intervention_Personne.IP_EstDemandeur AS IP_EstDemandeur,
Personne.PE_IDCivilite AS PE_IDCivilite,
Personne.PE_Nom AS PE_Nom,
Personne.PE_Prenom AS PE_Prenom,
Personne.PE_TelFixe AS PE_TelFixe,
Personne.PE_TelMobile AS PE_TelMobile,
Personne.PE_IDRole AS PE_IDRole,
Personne.PE_Note AS PE_Note,
Intervention_Personne.IP_IDIntervention AS IP_IDIntervention,
Intervention_Personne.IP_IDLieu AS IP_IDLieu,
Intervention_Personne.IP_IDClient AS IP_IDClient,
Lieu_Personne.LIP_Etage AS LIP_Etage,
| 12/08/2026 | | Batik_WS_Com_Mob | | 154 |
| ---------- | --- | ---------------- | --- | --- |
Partie 4 › Collection de procédures › LIB_Traitements › Code
Lieu_Personne.LIP_Lot AS LIP_Lot,
Lieu_Personne.LIP_EtiquetteAdresse AS LIP_EtiquetteAdresse
FROM Intervention_Personne INNER JOIN Personne ON (Personne.PE_PKID =
Intervention_Personne.IP_IDPersonne)
LEFT OUTER JOIN Lieu_Personne ON (Lieu_Personne.LIP_IDLieu=Intervention_Personne.IP_IDLieu
AND Lieu_Personne.LIP_IDPersonne=Intervention_Personne.IP_IDPersonne)
WHERE Intervention_Personne.IP_IDIntervention IN ({Liste_IDIntervention})
ORDER BY
IP_IDIntervention ASC
]
saRQ3=Remplace(saRQ3,"{Liste_IDIntervention}",saLstIdInter)
TraceRequete(saRQ3)
SI PAS HExécuteRequêteSQL(sdPers,gcnxReplica,hRequêteDéfaut,saRQ3) ALORS
sRes="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER sRes
FIN
stPer est un ST_PERSONNE_LIEU
POUR TOUT sdPers
stPer.nID = sdPers.IP_IDPersonne
stPer.saNom = sdPers.PE_Nom
stPer.saPren = sdPers.PE_Prenom
stPer.saTFix = sdPers.PE_TelFixe
stPer.saTMob = sdPers.PE_TelMobile
stPer.saRole = DonneLibParametre(sdPers.PE_IDRole)
stPer.saEtage = sdPers.IP_Etage<>"" ? sdPers.IP_Etage SINON sdPers.LIP_Etage
//sdPers.IP_Etage
stPer.saLot = sdPers.IP_Lot<>"" ? sdPers.IP_Lot SINON sdPers.LIP_Lot
//sdPers.IP_Lot
stPer.saEtiquette = sdPers.LIP_EtiquetteAdresse
stPer.saNote = sdPers.PE_Note
stPer.bDemand = sdPers.IP_EstDemandeur
stPer.bDonneurOrdre = sdPers.IP_IDClient<>0 _ET_ sdPers.IP_IDlieu=0
n = tbaIdInter[sdPers.IP_IDIntervention]
tblRDV[n].stINTER.tblPerLieu.Ajoute(stPer)
FIN
//Ordonne le tableau pour avoir les demandeurs en premier
SI n>0 ALORS
TableauTrie(tblRDV[n].stINTER.tblPerLieu,ttMembre,"-bDemand;saRole;saNom")
FIN
//Ajout du tableau des Notes Internes
sdNote est une Source de Données
saRQ4 est une chaîne ANSI = [
SELECT MI_Message,MessageInterne.CreationDate,UT_Nom , UT_Prenom
,MI_IDTypeMessage,MI_IDIntervention,MessageInterne.GUID as MI_GUID
,MessageInterne.CreationUser
FROM MessageInterne INNER JOIN Utilisateur ON
MessageInterne.CreationUser=Utilisateur.UT_PKID
WHERE MI_IDIntervention IN ({Liste_IDIntervention}) AND MessageInterne.MI_IDTypeMessage <
10
ORDER BY MessageInterne.CreationDate DESC
]
12/08/2026 Batik_WS_Com_Mob 155
Partie 4 › Collection de procédures › LIB_Traitements › Code
saRQ4=Remplace(saRQ4,"{Liste_IDIntervention}",saLstIdInter)
TraceRequete(saRQ4)
SI PAS HExécuteRequêteSQL(sdNote,gcnxReplica,hRequêteDéfaut,saRQ4) ALORS
TraceERREUR("Erreur lecture des Notes Internes " + HErreurInfo(hErrComplet))
SINON
stN est un ST_NOTE
POUR TOUT sdNote
stN.nIdInter = sdNote.MI_IDIntervention
stN.saNote = sdNote.MI_Message
stN.saAuteur = sdNote.UT_Prenom + [" "] + sdNote.UT_Nom
stN.saDate = sdNote.CreationDate
stN.saGuid = sdNote.MI_GUID
//stN.nIdAuteur =sdNote.CreationUser
stN.nIdUsr = sdNote.CreationUser
//stN.saType =sdNote.MI_IDTypeMessage //toujours à 0
n = tbaIdInter[stN.nIdInter]
tblRDV[n].stINTER.tblNote.Ajoute(stN)
FIN
FIN
// //Tableau des Temps passés
// sdTps est une source de données
// saRQ=[
//
SELECT
SDT_PKID,SDT_IDIntervention,SDT_IDCollaborateur,SDT_DateDebut,SDT_DateHeureFin,SDT_Ponderation,
SDT_NbMinutes,SDT_IDTypeTemps,SDT_Libelle,SDT_IDPartenaire
// FROM SUIVIDESTEMPS
// WHERE SDT_IDIntervention IN ({Liste_IDIntervention})
// ]
// saRQ=Remplace(saRQ,"{Liste_IDIntervention}",saLstIdInter)
// SI PAS HExécuteRequêteSQL(sdTps,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
// TraceINFO("Erreur lecture des Temps " + HErreurInfo(hErrComplet))
// SINON
// stTps est un ST_TEMPS
// POUR TOUT sdTps
// stTps:nIdInter = sdTps.SDT_IDIntervention
// stTps:nIdTps = sdTps.SDT_PKID
// stTps:nIdCollab = sdTps.SDT_IDCollaborateur
// stTps:saNumInter = sdTps.sdt
// stTps:saHeureDebut = sdTps.SDT_DateDebut
// stTps:saHeureFin = sdTps.SDT_DateHeureFin
// stTps:nPond100 = sdTps.SDT_Ponderation*100
// stTps:nNbMinutes = sdTps.SDT_NbMinutes
// stTps:nIdTypeTps = sdTps.SDT_IDTypeTemps
// stTps:saLibelle = sdTps.SDT_Libelle
//
// n=tbaIndice[stTps.nIdInter]
// tblRDV[n].stINTER.tblNote.Ajoute(stTps)
// FIN
// FIN
FIN
TraceINFO("Nb d'interventions : " + nNbInter)
bufRes_2 est un Buffer
Sérialise(tblRDV,bufRes_2,psdJSON)
TraceINFO("tblRDV =" + bufRes_2)
RENVOYER "" //Pas d'erreur
12/08/2026 Batik_WS_Com_Mob 156
Partie 4 › Collection de procédures › LIB_Traitements › Code
FAIRE
sRes=ExceptionInfo(errComplet)
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER "E"+sRes
FIN
Procédure globale ConstruitTableauInterventions_V2
PROCÉDURE ConstruitTableauInterventions_V2(saRQ est une chaîne ANSI,saRqCR est une chaîne ANSI ,
bAvecRDV est un booléen,bAvecCR est un booléen,tbLRDV est un tableau de ST_RDV_INTER_V2)
QUAND EXCEPTION DANS
nNbInter est un entier
sRes est une chaîne ANSI
saLstIdInter est une chaîne ANSI
saLstIdRDV est une chaîne ANSI
n est un entier
tbaCompteRendu est un tableau associatif de STCompteRenduRqListe_V2
saCle est une chaîne ANSI
sdSDCR est une Source de Données
SI saRqCR <> "" ALORS
TraceRequete(saRqCR)
SI PAS HExécuteRequêteSQL(sdSDCR,gcnxReplica,hRequêteDéfaut,saRqCR) ALORS
sRes="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventionsAvecCopmteRendu : " + sRes)
RENVOYER sRes
FIN
POUR TOUT sdSDCR
stCpR est une STCompteRenduRqListe_V2
stCpR.saCR_GUID = sdSDCR.CR_GUID
stCpR.saDateHeureDebut = sdSDCR.CR_DateHeureDebut
stCpR.saDateHeureFin = sdSDCR.CR_DateHeureFin
stCpR.saNoteCollaborateur = sdSDCR.CR_NoteCollaborateur
stCpR.saNoteSignataire = sdSDCR.CR_NoteSignataire
stCpR.saDateHeureSignature = sdSDCR.CR_DateHeureSignature
stCpR.nIN_PKID = sdSDCR.CR_IDIntervention
stCpR.saNomSignataire = sdSDCR.CR_NomSignataire
stCpR.saPL_GUID = sdSDCR.CR_GUID_Rdv
stCpR.nPL_IDCollaborateur = sdSDCR.CR_IDCollaborateur
stCpR.nCR_CreationUser = sdSDCR.CR_CreationUser
SI sdSDCR.CR_Signature <> "" ALORS
stCpR.bCR_Signature = Vrai
SINON
stCpR.bCR_Signature = Faux
FIN
SI sdSDCR.CR_SignatureTech <> "" ALORS
stCpR.bCR_SignatureTech = Vrai
SINON
stCpR.bCR_SignatureTech = Faux
FIN
stCpR.nRDV_PKID = sdSDCR.CR_IDRdv
//stCpR.nIdGroupe = sdSDCR.PL_IDGroupe
stCpR.nIDTypeSignataire = DonneIdParametre(sdSDCR.CR_CleTypeSignataire)
stCpR.saReserveCommentaire = sdSDCR.CR_ReserveCommentaire
SI sdSDCR.CR_NomSignataireTech <> "" ALORS
12/08/2026 Batik_WS_Com_Mob 157
Partie 4 › Collection de procédures › LIB_Traitements › Code
| | stCpR.saNomCollaborateur | = sdSDCR.CR_NomSignataireTech | | |
| --- | ------------------------ | ----------------------------- | --- | --- |
SINON
| | stCpR.saNomCollaborateur | = sdSDCR.CO_Nom +" "+sdSDCR.CO_Prenom | | |
| --- | ------------------------ | ------------------------------------- | --- | --- |
FIN
tbaCompteRendu[stCpR.saPL_GUID] = stCpR
FIN
FIN
sd est une Source de Données
TraceRequete(saRQ)
SI PAS HExécuteRequêteSQL(sd,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
sRes="E"+HErreurInfo(errComplet)
sRes += saRQ
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER sRes
FIN
POUR TOUT sd
xt est un ST_RDV_INTER_V2
saLstIdInter+= [","] + sd.IN_PKID
SI bAvecRDV ALORS
saLstIdRDV += [","] +"'"+sd.RVC_GUID_RDV+"'"
| | xt.stRDV.nPKID | = sd.RVC_PKID | | |
| --- | ------------------------ | --------------------------------- | ---- | --- |
| | xt.stRDV.saGUID | = sd.GUID_RDV_COLB | | |
| | xt.stRDV.saGUID_RDV | = sd.RVC_GUID_RDV | | |
| | xt.stRDV.nIDIntervention | = sd.RV_IdInter | | |
| | xt.stRDV.nIDTypeActivite | = DonneIdParametre(sd.RV_CleType) | | |
| | xt.stRDV.saObjet | = sd.RV_Objet | | |
xt.stRDV.saDescription = sd.RV_Description//RTFVersTexte(sd.PL_Description )
| | xt.stRDV.saDateDebut | = sd.RVC_DateDeb | | |
| --- | -------------------- | ------------------------------------ | ---- | --- |
| | xt.stRDV.saDateFin | = sd.RVC_DateFin | | |
| | xt.stRDV.nIDStatut | = DonneIdParametre(sd.RVC_CleStatut) | | |
| | xt.stRDV.nIDLieu | = sd.RV_IdLieu | | |
| | xt.stRDV.bGrouper | = sd.RV_Groupe | | |
SI sd.RV_Groupe ALORS
| | xt.stRDV.nIDGroupe | = sd.RV_PKID | | |
| --- | ------------------ | ------------ | --- | --- |
SINON
| | xt.stRDV.nIDGroupe | = 0 | | |
| --- | ------------------ | --- | --- | --- |
FIN
| | xt.stRDV.nIDDossier | = sd.RV_IdDossier | | |
| --- | ----------------------- | ------------------------------------- | --- | --- |
| | xt.stRDV.bPrive | = Faux | | |
| | xt.stRDV.bCR | = sd.RVC_CR | | |
| | xt.stRDV.bSAV | = sd.RV_SAV | | |
| | xt.stRDV.bSuperposable | = sd.RVC_Superposable | | |
| | xt.stRDV.nIDEquipe | = 0 | | |
| | xt.stRDV.nIDSociete | = sd.RV_IdSociete | | |
| | xt.stRDV.saStatut | = DonneLibParametre(sd.RVC_CleStatut) | | |
| | xt.saRDV_TypAct | = DonneLibParametre(sd.RV_CleType) | | |
| | xt.saRDV_Statut | = DonneLibParametre(sd.RV_CleStatut) | | |
| | xt.saRDV_Lieu | = sd.LI_CodeLieu | | |
| | //xt.stRDV.saNoteCollab | = sd.PL_NoteCollab | | |
xt.stRDV.nIDCollaborateur = Val(DonneGuidIdColb(sd.RVC_GUID_Colb))
| 12/08/2026 | | Batik_WS_Com_Mob | | 158 |
| ---------- | --- | ---------------- | --- | --- |
Partie 4 › Collection de procédures › LIB_Traitements › Code
saCle = sd.RVC_GUID_RDV
FIN
SI bAvecCR ALORS
SI PAS bAvecRDV ALORS
POUR TOUT stUncr, saVcle de tbaCompteRendu
SI stUncr.nIN_PKID = sd.IN_PKID ALORS
saCle = saVcle
FIN
FIN
FIN
SI tbaCompteRendu[saCle]..Existe ALORS
xt.stRDV.stCompteRendu.saGuidCR = tbaCompteRendu[saCle].saCR_GUID
xt.stRDV.stCompteRendu.saDebut = tbaCompteRendu[saCle].saDateHeureDebut
xt.stRDV.stCompteRendu.saFin = tbaCompteRendu[saCle].saDateHeureFin
xt.stRDV.stCompteRendu.saNoteCollab = tbaCompteRendu[saCle].
saNoteCollaborateur
xt.stRDV.stCompteRendu.saNoteClient = tbaCompteRendu[saCle].
saNoteSignataire
xt.stRDV.stCompteRendu.saDateSignature = tbaCompteRendu[saCle].
saDateHeureSignature
xt.stRDV.stCompteRendu.nIdInter = tbaCompteRendu[saCle].nIN_PKID
xt.stRDV.stCompteRendu.saSignataire = tbaCompteRendu[saCle].
saNomSignataire
xt.stRDV.stCompteRendu.saNomCollaborateur = tbaCompteRendu[saCle].saNomCollaborateur
xt.stRDV.stCompteRendu.saReserveCommentaire= tbaCompteRendu[saCle].
saReserveCommentaire
xt.stRDV.stCompteRendu.saGuidRDV = tbaCompteRendu[saCle].saPL_GUID
xt.stRDV.stCompteRendu.nIdCollab = tbaCompteRendu[saCle].nPL_IDCollaborateur
xt.stRDV.stCompteRendu.nIdUser = tbaCompteRendu[saCle].nCR_CreationUser
xt.stRDV.stCompteRendu.bImgSignature = tbaCompteRendu[saCle].bCR_Signature
xt.stRDV.stCompteRendu.bImgSignatureTech = tbaCompteRendu[saCle].bCR_SignatureTech
xt.stRDV.stCompteRendu.nIDTypeSignataire = tbaCompteRendu[saCle].nIDTypeSignataire
xt.stRDV.stCompteRendu.nIdGroupeRDV = tbaCompteRendu[saCle].nIdGroupe
SINON
xt.stRDV.stCompteRendu.saGuidCR = ""
xt.stRDV.stCompteRendu.saDebut = ""
xt.stRDV.stCompteRendu.saFin = ""
xt.stRDV.stCompteRendu.saNoteCollab = ""
xt.stRDV.stCompteRendu.saNoteClient = ""
xt.stRDV.stCompteRendu.saReserveCommentaire= ""
xt.stRDV.stCompteRendu.saDateSignature = ""
xt.stRDV.stCompteRendu.nIdInter = 0
xt.stRDV.stCompteRendu.saSignataire = ""
xt.stRDV.stCompteRendu.saNomCollaborateur = ""
xt.stRDV.stCompteRendu.saGuidRDV = ""
xt.stRDV.stCompteRendu.nIdCollab = 0
xt.stRDV.stCompteRendu.nIdUser = ""
xt.stRDV.stCompteRendu.bImgSignature = Faux
xt.stRDV.stCompteRendu.bImgSignatureTech = Faux
xt.stRDV.stCompteRendu.nIDTypeSignataire = 0
xt.stRDV.stCompteRendu.nIdGroupeRDV = 0
FIN
FIN
12/08/2026 Batik_WS_Com_Mob 159
Partie 4 › Collection de procédures › LIB_Traitements › Code
//Sous ensemble Intervention
xt.stINTER.nDos_IDCli = sd.DO_IDClient
xt.stINTER.saDos_Type = DonneIdParametre(sd.DO_CleType)
xt.stINTER.saDos_Tit = sd.DO_Titre
xt.stINTER.saDos_Etat = DonneIdParametre(sd.DO_CleStatut)
xt.stINTER.saDos_RfI = sd.DO_RefInterne
xt.stINTER.saDos_RfE = sd.DO_RefExterne
xt.stINTER.saCli_Nom = sd.CL_Nom
xt.stINTER.saCli_Tel = sd.CL_Tel
xt.stINTER.saCli_Fax = sd.CL_Fax
xt.stINTER.saCli_Email = sd.CL_Email
xt.stINTER.stCli_Ad.nID = sd.AdClient_PKID
xt.stINTER.stCli_Ad.saEtiq = sd.AdClient_Etiquette
xt.stINTER.stCli_Ad.saLig = sd.AdClient_Adresse
xt.stINTER.stCli_Ad.saCP = sd.AdClient_CodePostal
xt.stINTER.stCli_Ad.saVil = sd.AdClient_Ville
xt.stINTER.nInt_PKID = sd.IN_PKID
xt.stINTER.saInt_Typ = DonneIdParametre(sd.IN_CleType)
xt.stINTER.saInt_Etat = DonneIdParametre(sd.IN_CleEtat)
xt.stINTER.nInt_IDSuiv = sd.IN_IDSuiviPar
xt.stINTER.saNomSuiviPar = sd.NomSuiviPar
xt.stINTER.saPrenomSuiviPar = sd.PrenomSuiviPar
xt.stINTER.saTelSuiviPar = sd.TelMobSuiviPar
xt.stINTER.saSuiviEmail = sd.SuiviEmail
xt.stINTER.nInt_IDDos = sd.IN_IDDossier
xt.stINTER.nInt_IDCli = sd.IN_IDClient
xt.stINTER.nInt_IDLieu = sd.IN_IDLieu
xt.stINTER.nInt_IDSociete = sd.IN_IDSociete
xt.stINTER.saSoc_Nom = sd.SO_Nom
xt.stINTER.saInt_Descrip = RTFVersTexte(sd.IN_Description)
xt.stINTER.bInt_AtTVA = sd.IN_AttestationTVAPresente
xt.stINTER.saInt_Note = sd.IN_NoteInterne
xt.stINTER.saInt_Tit = sd.IN_Titre
xt.stINTER.saInt_RfI = sd.IN_RefInterne
xt.stINTER.saInt_RfE = sd.IN_RefExterne
xt.stINTER.saInt_NumDevis = sd.IN_NumDevis
xt.stINTER.saInt_DateDevis = DateVersChaîne(sd.IN_DateDevis,"JJ/MM/AA")
xt.stINTER.nLieu_PKID = sd.LI_PKID
xt.stINTER.saLieu_CodeLieu = sd.LI_CodeLieu
xt.stINTER.nLieu_IDAdresse = sd.LI_IDAdresse
xt.stINTER.saLieu_Type = DonneIdParametre(sd.LI_CleType)
xt.stINTER.saLieu_CodeAcces = sd.LI_CodeAcces
xt.stINTER.bLieu_Badge = sd.LI_Badge
xt.stINTER.bLieu_Interphone = sd.LI_Interphone
xt.stINTER.saLieu_Note = sd.LI_Note
xt.stINTER.stLieu_Ad.nID = sd.AdLieu_PKID
xt.stINTER.stLieu_Ad.saEtiq = sd.AdLieu_Etiquette
xt.stINTER.stLieu_Ad.saLig = sd.AdLieu_Adresse
xt.stINTER.stLieu_Ad.saCP = sd.AdLieu_CodePostal
xt.stINTER.stLieu_Ad.saVil = sd.AdLieu_Ville
nNbInter = TableauAjoute(tbLRDV,xt)
FIN
SI nNbInter>0 ET bAvecRDV ALORS
//Construction de la liste des Contacts RDV
saRQ2 est une chaîne ANSI=[
SELECT
RVCT_PKID,
RVCT_GUID_Pers,
12/08/2026 Batik_WS_Com_Mob 160
Partie 4 › Collection de procédures › LIB_Traitements › Code
RVCT_GUID_RDV,
PE_PKID,
Personne.PE_CleCivilite,
Personne.PE_Nom AS PE_Nom,
Personne.PE_Prenom AS PE_Prenom,
Personne.PE_Email AS PE_Email,
Personne.PE_TelFixe AS PE_TelFixe,
Personne.PE_TelMobile AS PE_TelMobile,
Personne.PE_CleRole,
Personne.PE_Note AS PE_Note,
Intervention_Personne.IP_IDPersonne AS IP_IDPersonne,
Intervention_Personne.IP_IDIntervention AS IP_IDIntervention,
Intervention_Personne.IP_IDLieu AS IP_IDLieu,
Intervention_Personne.IP_IDClient AS IP_IDClient,
Intervention_Personne.IP_Etage AS IP_Etage,
Intervention_Personne.IP_Lot AS IP_Lot,
Lieu_Personne.LIP_Etage AS LIP_Etage,
Lieu_Personne.LIP_Lot AS LIP_Lot,
Lieu_Personne.LIP_EtiquetteAdresse AS LIP_EtiquetteAdresse
FROM
RDV_Contact INNER JOIN Personne ON (Personne.GUID = RDV_Contact.RVCT_GUID_Pers)
INNER JOIN Intervention_Personne ON (Intervention_Personne.IP_IDPersonne=Personne.PE_PKID
AND Intervention_Personne.IP_IDIntervention>0)
INNER JOIN Lieu_Personne ON
(Lieu_Personne.LIP_IDPersonne=Intervention_Personne.IP_IDPersonne AND
Lieu_Personne.LIP_IDLieu=Intervention_Personne.IP_IDLieu)
WHERE RDV_Contact.RVCT_GUID_RDV IN ({pListeIdRdv})
]
saRQ2=Remplace(saRQ2,"{pListeIdRdv}",saLstIdRDV)
TraceRequete(saRQ2)
sdCnt est une Source de Données
SI PAS HExécuteRequêteSQL(sdCnt,gcnxReplica,hRequêteDéfaut,saRQ2) ALORS
sRes="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER sRes
FIN
POUR TOUT sdCnt
stContact est un ST_RDV_CONTACT
| | stContact.nIdRdvCnt | = sdCnt.RVCT_PKID | | |
| --- | ------------------------------------------------------------- | -------------------- | --- | --- |
| | //stContact.nId | =sdCnt.IP_IDPersonne | | |
| | stContact.saCivilite = DonneIdParametre(sdCnt.PE_CleCivilite) | | | |
| | stContact.saNom | = sdCnt.PE_Nom | | |
| | stContact.saPrenom | = sdCnt.PE_Prenom | | |
| | stContact.saEmail = sdCnt.PE_Email | | | |
| | stContact.saRole = DonneIdParametre(sdCnt.PE_CleRole) | | | |
stContact.saEtage = sdCnt.IP_Etage<>"" ? sdCnt.IP_Etage SINON sdCnt.LIP_Etage
stContact.saLot = sdCnt.IP_Lot<>"" ? sdCnt.IP_Lot SINON sdCnt.LIP_Lot
stContact.saEtiquette= sdCnt.LIP_EtiquetteAdresse
| | stContact.saNote = sdCnt.PE_Note | | | |
| --- | -------------------------------- | --- | --- | --- |
stContact.bDonneurOrdre = sdCnt.IP_IDClient<>0 _ET_ sdCnt.IP_IDlieu=0
//Ajout des téléphones dans un tableau (structure prête pour le multitéléphone)
stTel est un ST_TELEPHONE
SI sdCnt.PE_TelFixe<>"" ALORS
| | stTel.saTelNum | = sdCnt.PE_TelFixe | | |
| --- | -------------- | ------------------- | --- | --- |
| | stTel.saTelLib | = "Tél 1" | | |
stContact.tbLTEL.Ajoute(stTel)
FIN
SI sdCnt.PE_TelMobile<>"" ALORS
| | stTel.saTelNum | = sdCnt.PE_TelMobile | | |
| ---------- | -------------- | --------------------- | --- | --- |
| | stTel.saTelLib | = "Tél 2" | | |
| 12/08/2026 | | Batik_WS_Com_Mob | | 161 |
Partie 4 › Collection de procédures › LIB_Traitements › Code
stContact.tbLTEL.Ajoute(stTel)
FIN
ResIndice est un entier
ResIndice = TableauCherche(tbLRDV,tcLinéaire,"stRDV.saGUID_RDV",sdCnt.RVCT_GUID_RDV,
ResIndice)
TANTQUE ResIndice > 0
tbLRDV[ResIndice].stRDV.tblContact.Ajoute(stContact)
ResIndice += 1
ResIndice = TableauCherche(tbLRDV,tcLinéaire,"stRDV.saGUID_RDV",sdCnt.RVCT_GUID_RDV,
ResIndice)
FIN
FIN
//Construction de la liste des Contacts Intervention/Lieu
FIN
SI nNbInter>0 ALORS
sdPers est une Source de Données
saRQ3 est une chaîne ANSI = [
SELECT
Intervention_Personne.IP_Etage AS IP_Etage,
Intervention_Personne.IP_Lot AS IP_Lot,
Intervention_Personne.IP_IDPersonne AS IP_IDPersonne,
Intervention_Personne.IP_EstDemandeur AS IP_EstDemandeur,
Personne.PE_CleCivilite,
Personne.PE_Nom AS PE_Nom,
Personne.PE_Prenom AS PE_Prenom,
Personne.PE_TelFixe AS PE_TelFixe,
Personne.PE_TelMobile AS PE_TelMobile,
Personne.PE_CleRole,
Personne.PE_Note AS PE_Note,
Personne.PE_Email AS PE_Email,
Intervention_Personne.IP_IDIntervention AS IP_IDIntervention,
Intervention_Personne.IP_IDLieu AS IP_IDLieu,
Intervention_Personne.IP_IDClient AS IP_IDClient,
Lieu_Personne.LIP_Etage AS LIP_Etage,
Lieu_Personne.LIP_Lot AS LIP_Lot,
Lieu_Personne.LIP_EtiquetteAdresse AS LIP_EtiquetteAdresse
FROM Intervention_Personne
INNER JOIN Personne ON (Personne.PE_PKID = Intervention_Personne.IP_IDPersonne)
LEFT OUTER JOIN Lieu_Personne ON (Lieu_Personne.LIP_IDLieu=Intervention_Personne.IP_IDLieu
AND Lieu_Personne.LIP_IDPersonne=Intervention_Personne.IP_IDPersonne)
WHERE Intervention_Personne.IP_IDIntervention IN ({Liste_IDIntervention})
ORDER BY
IP_IDIntervention ASC
]
saRQ3=Remplace(saRQ3,"{Liste_IDIntervention}",saLstIdInter)
TraceRequete(saRQ3)
SI PAS HExécuteRequêteSQL(sdPers,gcnxReplica,hRequêteDéfaut,saRQ3) ALORS
sRes="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER sRes
FIN
stPer est un ST_PERSONNE_LIEU
POUR TOUT sdPers
stPer.nID = sdPers.IP_IDPersonne
stPer.saNom = sdPers.PE_Nom
12/08/2026 Batik_WS_Com_Mob 162
Partie 4 › Collection de procédures › LIB_Traitements › Code
stPer.saPren = sdPers.PE_Prenom
stPer.saTFix = sdPers.PE_TelFixe
stPer.saTMob = sdPers.PE_TelMobile
stPer.saRole = DonneIdParametre(sdPers.PE_CleRole)
stPer.saEmail = sdPers.PE_Email
stPer.saEtage = sdPers.IP_Etage<>"" ? sdPers.IP_Etage SINON sdPers.LIP_Etage
//sdPers.IP_Etage
stPer.saLot = sdPers.IP_Lot<>"" ? sdPers.IP_Lot SINON sdPers.LIP_Lot
//sdPers.IP_Lot
stPer.saEtiquette = sdPers.LIP_EtiquetteAdresse
stPer.saNote = sdPers.PE_Note
stPer.bDemand = sdPers.IP_EstDemandeur
stPer.bDonneurOrdre = sdPers.IP_IDClient<>0 _ET_ sdPers.IP_IDlieu=0
ResIndice est un entier
ResIndice = TableauCherche(tbLRDV,tcLinéaire,"stINTER.nInt_PKID",sdPers.IP_IDIntervention)
TANTQUE ResIndice > 0
tbLRDV[ResIndice].stINTER.tblPerLieu.Ajoute(stPer)
TableauTrie(tbLRDV[ResIndice].stINTER.tblPerLieu,ttMembre,"-bDemand;saRole;saNom")
//Ordonne le tableau pour avoir les demandeurs en premier
ResIndice += 1
ResIndice = TableauCherche(tbLRDV,tcLinéaire,"stINTER.nInt_PKID",sdPers.
IP_IDIntervention,ResIndice)
FIN
FIN
//Ajout du tableau des Notes Internes
sdNote est une Source de Données
saRQ4 est une chaîne ANSI = [
SELECT MI_Message,MessageInterne.CreationDate,UT_Nom , UT_Prenom
,MI_IDTypeMessage,MI_IDIntervention,MessageInterne.GUID as MI_GUID
,MessageInterne.CreationUser
FROM MessageInterne INNER JOIN Utilisateur ON
MessageInterne.CreationUser=Utilisateur.UT_PKID
WHERE MI_IDIntervention IN ({Liste_IDIntervention}) AND MessageInterne.MI_IDTypeMessage <
10
ORDER BY MessageInterne.CreationDate DESC
]
saRQ4=Remplace(saRQ4,"{Liste_IDIntervention}",saLstIdInter)
TraceRequete(saRQ4)
SI PAS HExécuteRequêteSQL(sdNote,gcnxReplica,hRequêteDéfaut,saRQ4) ALORS
TraceERREUR("Erreur lecture des Notes Internes " + HErreurInfo(hErrComplet))
SINON
stN est un ST_NOTE
POUR TOUT sdNote
stN.nIdInter = sdNote.MI_IDIntervention
stN.saNote = sdNote.MI_Message
stN.saAuteur = sdNote.UT_Prenom + [" "] + sdNote.UT_Nom
stN.saDate = sdNote.CreationDate
stN.saGuid = sdNote.MI_GUID
stN.nIdUsr = sdNote.CreationUser
ResIndice est un entier
ResIndice = TableauCherche(tbLRDV,tcLinéaire,"stINTER.nInt_PKID",stN.nIdInter)
TANTQUE ResIndice > 0
tbLRDV[ResIndice].stINTER.tblNote.Ajoute(stN)
ResIndice += 1
ResIndice = TableauCherche(tbLRDV,tcLinéaire,"stINTER.nInt_PKID",stN.nIdInter,
ResIndice)
12/08/2026 Batik_WS_Com_Mob 163
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
FIN
FIN
FIN
TraceINFO("Nb d'interventions : " + nNbInter)
bufRes est un Buffer
Sérialise(tbLRDV,bufRes,psdJSON)
TraceINFO("tblRDV =" + bufRes)
RENVOYER "" //Pas d'erreur
FAIRE
sRes=ExceptionInfo(errComplet)
TraceERREUR("ConstruitTableauInterventions : " + sRes)
RENVOYER "E"+sRes
FIN
Procédure globale ControleRdvAPlanifier
PROCÉDURE ControleRdvAPlanifier(stData est une ST_MOB_DATA)
sResultat est une chaîne=cErreur
ChronoDébut()
QUAND EXCEPTION DANS
stRdvTemp est un ST_RDV
Désérialise(stRdvTemp,stData.saJSON,psdJSON)
sdTps est une Source de Données
saRQ est une chaîne ANSI=[
SELECT 1 FROM RDV_Planning
INNER JOIN RDV_Collaborateur ON RDV_Collaborateur.RVC_GUID_RDV = RDV_Planning.GUID
WHERE RDV_Planning.RV_CleStatut={p_CleNonPlanifier}
AND RDV_Collaborateur.RVC_PKID={p_IDRdv}
]
saRQ=Remplace(saRQ,"{p_IDRdv}",stRdvTemp.nPKID)
saRQ=Remplace(saRQ,"{p_CleNonPlanifier}",cCle_RDVAPlanifier)
SI PAS HExécuteRequêteSQL(sdTps,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
TraceDEBUG("Erreur ControleRdvAPlanifier " + HErreurInfo(hErrComplet))
SINON
//Le rendez-vous n'a été planifié par personne
SI HNbEnr(sdTps)>0 ALORS
stRdvTemp.nIDStatut = DonneIdParametre(cCle_RDVConfirme)
Sérialise(stRdvTemp,stData.saJSON,psdJSON)
sResultat="R"
SINON
sResultat=cErreur + cERR_RDV_PLANIFIER
FIN
FIN
12/08/2026 Batik_WS_Com_Mob 164
Partie 4 › Collection de procédures › LIB_Traitements › Code
FAIRE
TraceDEBUG("bufREs : E" + ExceptionInfo(errComplet))
TraceDEBUG("Durée (ms) : " + ChronoFin())
FIN
RENVOYER sResultat
Procédure globale ContruireListeChamps
PROCÉDURE ContruireListeChamps(tabRubMobile est un tableau de STJSONMembreRubRapport,stParam est un
ST_REQ_LISTE_Chp_Rapport,bToutesRub est un booléen = Faux)
tabToutesRub est un tableau de STJSONMembreRubRapport
tbMotCleSpec est un tableau de STJSONMembreRubRapport
nPKID_Rapport est un entier sur 8 octets = stParam.nIdModele
nPKID_Inter est un entier sur 8 octets = stParam.nIdInter
SI nPKID_Rapport <= 0 ALORS
RENVOYER "Identifiant du modèle introuvable"
FIN
SI nPKID_Inter <= 0 ALORS
RENVOYER "Identifiant de l'intervention introuvable"
FIN
saRQRp est une chaîne ANSI=[
SELECT * FROM ModeleRapport WHERE MRP_PKID =
]
saRQRp += nPKID_Rapport
sdRpest une Source de Données
HExécuteRequêteSQL(sdRp,gcnxReplica,saRQRp)
MonDoc est un Document
SI sdRp.MRP_Modele <> "" ALORS
MonDoc = sdRp.MRP_Modele
SINON
RENVOYER ""
FIN
SI sdRp.MRP_Extra <> "" ALORS
Désérialise(tbMotCleSpec,sdRp.MRP_Extra,psdJSON)
POUR TOUT stUnMot DE tbMotCleSpec
SI stUnMot:TypeMembre <> "" ALORS
stUnMot:Type = stUnMot:TypeMembre //Pour compatibilite dans le mobile
FIN
FIN
FIN
TermeRapport est un STJSONRubriqueRapport
TermeRapport.ListeTerme = ChargeListeRubDoc()
//vRub est un Variant
//
//saRQRub est une chaîne ANSI = [
// SELECT * FROM ParametreSysteme WHERE PAS_Code = 'RUBRIQUE_RAPPORT_INTERVENTION'
//]
//
//sdRpRub est une source de données
//HExécuteRequêteSQL(sdRpRub,gcnxReplica,saRQRub)
//vRub = JSONVersVariant(sdRpRub.PAS_Valeur)
//
//SI vRub<>Null ALORS
// Désérialise(TermeRapport,sdRpRub.PAS_Valeur,psdJSON)
12/08/2026 Batik_WS_Com_Mob 165
Partie 4 › Collection de procédures › LIB_Traitements › Code
// TableauTrie(TermeRapport:ListeTerme,ttMembre,"Groupe;Ordre")
//FIN
SI TermeRapport:ListeTerme..Occurrence <= 0 ALORS
TraceDEBUG("ContruireListeChamps - Recherche la liste des terme est a 0" )
RENVOYER ""
FIN
ConstructionTbRubBaseRapport(TermeRapport,tabToutesRub,MonDoc)
ConstructionTbRubEnvoyerMob(TermeRapport,tabToutesRub,tabRubMobile,MonDoc,bToutesRub,tbMotCleSpec)
AjouterDonnesBDDansChampRapport(nPKID_Inter, tabRubMobile)
RENVOYER ""
Procédure globale CreationETEnvoiEmail
PROCÉDURE CreationETEnvoiEmail(stID est un ST_MOB_IDENTITE, stData est une ST_MOB_DATA)
| stInfoMail est un ST_ModeleMailComplet | | | |
| -------------------------------------- | --- | --- | --- |
| sErreur est une chaîne ANSI | | | |
Désérialise(stInfoMail,stData.saJSON,psdJSON)
| bufRes | est un Buffer | | |
| ----------- | ------------------- | --- | --- |
| sResRepTemp | est une chaîne ANSI | | |
<COMPILE SI Configuration = "WS_COM_MOBILE" OU Configuration = "Debug WS_COM_MOBILE">
| sResRepTemp | = ComplèteRep(fRepExe())+"TEMP\" | | |
| ----------- | -------------------------------- | --- | --- |
<SINON>
| sResRepTemp | = ComplèteRep(fRepWeb())+"TEMP\" | | |
| ----------- | -------------------------------- | --- | --- |
<FIN>
| nPKID_Inter | est un entier sur 8 octets | = stInfoMail.nIdInter | |
| ----------- | -------------------------- | --------------------- | --- |
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO(" CreationETEnvoiEmail ")
| unEmail | est un Email | | |
| ------- | ------------ | --- | --- |
(sErreur,unEmail) = CreationUnEmail(stInfoMail)
SI SansEspace(sErreur) <> "" ALORS
bufRes ="E" + sErreur
RENVOYER bufRes
FIN
| bSMTPCnxOk | est un booléen | | |
| ------------------- | -------------- | --- | --- |
| sMsg est une chaîne | | | |
(bSMTPCnxOk,sMsg)=OuvreSessionEmail(3,stInfoMail.stCompteMail.SMTP.sLogin, stInfoMail.stCompteMail.
SMTP.sMdp, stInfoMail.stCompteMail.SMTP.sAdresseServeur, Val(stInfoMail.stCompteMail.SMTP.
sPortServeur), stInfoMail.stCompteMail.SMTP.nCryptage)
SI PAS bSMTPCnxOk ALORS
// erreur
bufRes ="E" + sMsg
TraceINFO("Erreur dans la connexion SMTP "+sMsg)
RENVOYER bufRes
FIN
// Envoie l'email
SI PAS EmailEnvoieMessage(stInfoMail.stCompteMail.SMTP.sLogin,unEmail) ALORS
sErreur =ErreurInfo(errMessage)
TraceINFO("Erreur dans l'envoi de l'email "+sErreur)
FIN
| 12/08/2026 | | Batik_WS_Com_Mob | 166 |
| ---------- | --- | ---------------- | --- |
Partie 4 › Collection de procédures › LIB_Traitements › Code
EmailFermeSession(stInfoMail.stCompteMail.SMTP.sLogin)
bEnvoye est un booléen = Faux
SI SansEspace(sErreur) = "" ALORS
bEnvoye = Vrai
FIN
saRep est une chaîne ANSI = CreationMessageExt(stID,stInfoMail, bEnvoye)
SI SansEspace(sErreur) ="" ALORS
//Nous ne devons pas générer d'erreur si l'e-mail a été envoyé au risque que l'utilisateur
essaie de le renvoyer, mais nous envoyons le message d'erreur pour avertir l'utilisateur.
SI saRep <> cRep_OK ALORS
sErreur +=
" Une erreur s'est produite lors de l'enregistrement du message dans le back-office. "+
saRep
FIN
bufRes ="R" + sErreur
SINON
bufRes ="E" + sErreur+RC+saRep
FIN
TraceINFO("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FAIRE
//bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale CreationMessageExt
PROCÉDURE CreationMessageExt(stID est un ST_MOB_IDENTITE, stInfoMail est un ST_ModeleMailComplet,
bEnvoye est un booléen)
saRep est une chaîne ANSI
QUAND EXCEPTION DANS
TraceINFO(" CreationMessageExt ")
stMsgExt est un ST_MsgExterneMail
stMsgExt.nIdInter = stInfoMail.nIdInter
stMsgExt.saSujet = stInfoMail.saSujet
stMsgExt.bufCorp = stInfoMail.bufCorpsHTML
stMsgExt.saGUID = stInfoMail.saGUID
stMsgExt.saAdrExp = stInfoMail.stCompteMail.SMTP.sLogin
stMsgExt.sapj = TableauVersChaîne(stInfoMail.tbPJID,";")
stMsgExt.saDest = TableauVersChaîne(stInfoMail.tbDest,";")
stMsgExt.saDestcc = TableauVersChaîne(stInfoMail.tbDestcc,";")
stMsgExt.saDestcci = TableauVersChaîne(stInfoMail.tbDestcci,";")
stMsgExt.bEnvoye = bEnvoye
stMsgExt.nIdUser = stID.nIdUser
saJSON est une chaîne ANSI
Sérialise(stMsgExt,saJSON,psdJSON)
HRAZ(TOSRV)
12/08/2026 Batik_WS_Com_Mob 167
Partie 4 › Collection de procédures › LIB_Traitements › Code
TOSRV.TS_CMD = cCMD_MsgExtEcrit
TOSRV.TS_Date = DateHeureSys()
TOSRV.TS_JSON = saJSON
TOSRV.TS_Buffer = ""
SI HAjoute(TOSRV) ALORS
saRep = cRep_OK
SINON
saRep= cErreur +RC+HErreurInfo()
FIN
TraceINFO("CreationMessageExt "+saRep )
RENVOYER saRep
FAIRE
saRep = ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + saRep)
RENVOYER saRep
FIN
Procédure globale CreationModeleMail
PROCÉDURE CreationModeleMail(stData est une ST_MOB_DATA)
stInfoRapport est un STJSONInfoRapportMob
Désérialise(stInfoRapport,stData.saJSON,psdJSON)
bufRes est un Buffer
sResRepTemp est une chaîne ANSI
<COMPILE SI Configuration = "WS_COM_MOBILE" OU Configuration = "Debug WS_COM_MOBILE">
sResRepTemp = ComplèteRep(fRepExe())+"TEMP\"
<SINON>
sResRepTemp = ComplèteRep(fRepWeb())+"TEMP\"
<FIN>
nPKID_Rapport est un entier sur 8 octets = stInfoRapport.nIdModele
CheminImg est une chaîne ANSI = ComplèteRep(sResRepTemp+stInfoRapport.nIdInter)
SI nPKID_Rapport <= 0 ALORS
RENVOYER "E"+"Modèle introuvable"
FIN
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO(" CreationModeleMail ")
stParam est un STJSONInfoModeleMailMob
Désérialise(stParam,stData.saJSON,psdJSON)
sErreur est une chaîne = ConstruireModeleMailAvecInfoMob(stParam,bufRes)
SI sErreur="" ALORS
bufRes ="R" + bufRes
SINON
bufRes ="E" + sErreur
FIN
TraceINFO("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale CreationRapport
12/08/2026 Batik_WS_Com_Mob 168
Partie 4 › Collection de procédures › LIB_Traitements › Code
PROCÉDURE CreationRapport(stID est un ST_MOB_IDENTITE,stData est une ST_MOB_DATA)
stInfoRapport est un STJSONInfoRapportMob
Désérialise(stInfoRapport,stData.saJSON,psdJSON)
bufRes est un Buffer
sResRepTemp est une chaîne ANSI
<COMPILE SI Configuration = "WS_COM_MOBILE" OU Configuration = "Debug WS_COM_MOBILE">
sResRepTemp = ComplèteRep(fRepExe())+"TEMP\"
<SINON>
sResRepTemp = ComplèteRep(fRepWeb())+"TEMP\"
<FIN>
<COMPILE SI Configuration="Debug WS_COM_MOBILE">
<FIN>
nPKID_Rapport est un entier sur 8 octets = stInfoRapport.nIdModele
CheminImg est une chaîne ANSI = ComplèteRep(sResRepTemp+stInfoRapport.nIdInter)
SI nPKID_Rapport <= 0 ALORS
bufRes = "E"+"Modèle introuvable"
RENVOYER bufRes
FIN
saRQRp est une chaîne ANSI=[
SELECT * FROM ModeleRapport WHERE MRP_PKID =
]
saRQRp += nPKID_Rapport
sdRpest une Source de Données
HExécuteRequêteSQL(sdRp,gcnxReplica,saRQRp)
MonDoc est un Document
SI sdRp.MRP_Modele <> "" ALORS
MonDoc = sdRp.MRP_Modele
FIN
tbMotCleSpec est un tableau de STJSONMembreRubRapport
// Mot clé ajouté spécifique au mobile , (texte additionnel qui provient pas de données de
l'intervention)
SI sdRp.MRP_Extra <> "" ALORS
Désérialise(tbMotCleSpec,sdRp.MRP_Extra,psdJSON)
FIN
tabRubMobile est un tableau de STJSONMembreRubRapport
stParam est un ST_REQ_LISTE_Chp_Rapport
stParam.nIdModele = nPKID_Rapport
stParam.nIdInter = stInfoRapport.nIdInter
saErreur est une chaîne ANSI = ContruireListeChamps(tabRubMobile,stParam,Vrai)
SI saErreur <> "" ALORS
TraceERREUR("Erreur dans la création du rapport ")
bufRes = "E"+saErreur
SINON
QUAND EXCEPTION DANS
TraiteDocumentRapportMob(tabRubMobile,stInfoRapport.ListeMob,MonDoc,CheminImg)
SupprimerToutesRubRapportMob(tabRubMobile,MonDoc)
SI PAS fRepCrée(CheminImg) ALORS
TraceINFO("Erreur dans la création du repertoire Nom Rep "+CheminImg+RC+ErreurInfo(
errComplet))
saErreur = "Erreur dans la création du rapport "
bufRes = "E"+saErreur
FIN
TraceINFO("Avant création doc")
saNomDoc est une chaîne ANSI = CheminImg+stInfoRapport.saGuid+".pdf"
SI DocVersPDF(MonDoc,saNomDoc) ALORS
bufRapportPDF est un Buffer = fChargeBuffer(saNomDoc)
SI bufRapportPDF..Taille > 0 ALORS
12/08/2026 Batik_WS_Com_Mob 169
Partie 4 › Collection de procédures › LIB_Traitements › Code
TraceINFO("Rapport crée "+ saNomDoc)
Sérialise(tabRubMobile,bufRes,psdJSON)
bufRes ="R" + bufRes
TraceINFO("Liste Rub "+ bufRes)
stCmd est un ST_DOC
stCmd.saNom = stInfoRapport.saNomRapport+".pdf"
stCmd.saDocGUID = stInfoRapport.saGuid
stCmd.saDateCreat= DateHeureSys()
stCmd.nInterID = stInfoRapport.nIdInter
stCmd.saNote = ""
stCmd.nIdUser = stID.nIdUser
stCmd.saType = "PDF_RP"
saJSON est une chaîne ANSI
Sérialise(stCmd,saJSON,psdJSON)
saRep est une chaîne ANSI
HRAZ(TOSRV)
TOSRV.TS_CMD = cCMD_DocEcrit
TOSRV.TS_Date = DateHeureSys()
TOSRV.TS_JSON = saJSON
TOSRV.TS_Buffer = bufRapportPDF
SI HAjoute(TOSRV) ALORS
saRep = cRep_OK
SINON
saRep= cErreur +RC+HErreurInfo()
FIN
SI saRep = cRep_OK ALORS
bufRes = "R"+bufRapportPDF
SINON
bufRes = saRep
TraceINFO("Réponse envoi de rapport au service : "+RC+bufRes)
FIN
SINON
TraceINFO("Buffer vide procedure CreationRapport"+RC+ErreurInfo(errComplet))
FIN
SINON
TraceINFO("Erreur dans la création du rapport Nom doc "+saNomDoc+RC+ErreurInfo(errComplet)
)
saErreur = "Erreur dans la création du rapport "+RC+ErreurInfo()
bufRes = "E"+saErreur
FIN
FAIRE
TraceINFO("Erreur dans la création du rapport Nom doc "+saNomDoc+RC+ErreurInfo(errComplet))
saErreur = "Erreur dans la création du rapport "
bufRes = "E"+saErreur
FIN
FIN
RENVOYER bufRes
Procédure globale CreationTableauIntDocRapport
PROCÉDURE CreationTableauIntDocRapport(unTerme est un STJSONMembreRubRapport,MonDoc est un Document,
nIMin est un entier, vInfoVariante est un Variant, CheminImg est une chaîne ANSI,sdRReq est une Source
de Données)
nNumLignes est un entier
saInfoV est une chaîne ANSI
imgBuf est un Buffer
POUR TOUT stTerme DE unTerme.ListeMembre
tabFragments est un tableau de docFragments = DocRecherche(MonDoc,stTerme.Rubrique,MotComplet+
12/08/2026 Batik_WS_Com_Mob 170
Partie 4 › Collection de procédures › LIB_Traitements › Code
SansCasse)
SI tabFragments..Occurrence > 0 ALORS
nNumLignes += 1
FIN
FIN
bCree est un booléen = Faux
SI nNumLignes > 1 ALORS
POUR TOUT stTerme DE unTerme.ListeMembre
tabFragments est un tableau de docFragments = DocRecherche(MonDoc,stTerme.Rubrique,MotComplet+
SansCasse)
SI tabFragments..Occurrence > 0 ALORS
nColonne est un entier = tabFragments[1].Elément[1].Cellule..IndiceColonne
nLigne est un entier = tabFragments[1].Elément[1].Cellule..IndiceLigne
nIMax est un entier = nIMin
soit para <- tabFragments[1]..Paragraphe[1]
SI para.Tableau = Null ALORS
RENVOYER Faux
FIN
POUR TOUT UnEle DE vInfoVariante
//sIdentifiant = {NomRubId}
SI UnEle.bselection ALORS
bufRep est un Buffer
Sérialise(UnEle,bufRep,psdJSON)
cellDoc est un docCellule<- para..Tableau..Cellules[nIMax,nColonne]
cellColDoc est un docColonne<- para..Tableau..Colonnes[nColonne]
cellColDoc..LargeurMillimètres = (cellColDoc..LargeurMillimètres+10)
// Insère un tableau à la position du curseur (PositionDébut) de taille 1 colonnes
et x lignes
TabDoc est un docFragment = DocInsèreTableau(MonDoc,cellDoc..Contenu
..PositionDébut,1, nNumLignes)
soit para2 <- TabDoc..Paragraphe[2]
nLigneEnCours est un entier
POUR TOUT stTerme2 DE unTerme.ListeMembre
tabFragments = DocRecherche(MonDoc,stTerme2.Rubrique,MotComplet+SansCasse)
SI tabFragments..Occurrence > 0 ALORS
nLigneEnCours += 1
imgBuf = ""
saInfoV = ""
RechercheInfoDansVariantRapport(unTerme, stTerme2, UnEle,imgBuf,saInfoV,
sdRReq,CheminImg)
cell est un docCellule <- para2..Tableau..Cellules[nLigneEnCours,1
]
cell.MiseEnPage.Cadre.Couleur = Transparent
// rendre transparent les lignes du nouveaux tableau
SI stTerme2:TypeMembre = "ChpImage" OU stTerme2:Type = "ChpImage" ALORS
SI imgBuf..Taille > 0 ALORS
nLargPixCol est un entier = para2..Tableau..
Colonnes[1]..LargeurMillimètres*NBPixelesXMilimetres
elt est un docElément <- DonneImgTableauRp(imgBuf,
nLargPixCol)
cell2 est un docLigne <- para2..Tableau..Lignes
[nLigneEnCours]
cell2.Hauteur = (elt..Image..Hauteur)
cell3 est un docColonne <- para2..Tableau..Colonnes[1]
12/08/2026 Batik_WS_Com_Mob 171
Partie 4 › Collection de procédures › LIB_Traitements › Code
cell3..LargeurMillimètres = (elt.Image..Largeur)
DocInsère(MonDoc,cell..Contenu..PositionDébut, elt)
SINON
//para2..Tableau..Cellules[nLigneEnCours,1]..Contenu..Texte = "
"
FIN
para2..Tableau..Cellules[nLigneEnCours,nColonne]..MiseEnPage..
Alignement = chCentre
SINON
para2..Tableau..Cellules[nLigneEnCours,1].Contenu..Texte =
TraitementSelonTypeRubRapportMob(stTerme2,saInfoV)
FIN
FIN
FIN
bCree = Vrai
nIMax += 1
SI Contient(stTerme:Rubrique,"$UN") ALORS
SORTIR
FIN
FIN
FIN
FIN
SI bCree ALORS
SORTIR
FIN
FIN
FIN
Procédure globale CreationTbdansModeleEmail
PROCÉDURE CreationTbdansModeleEmail(ListeMob est un tableau de STJSONMembreRubRapport, unTerme est un
STJSONMembreRubRapport, mondoc est un Document)
sADonnes est une chaîne ANSI
b est un entier
//saRep est une chaîne ANSI
sdRReq est une Source de Données
//tabTitreCol est un tableau de chaînes ANSI
//taCol est un tableau associatif de chaînes ANSI
//sTitresCols , sTbHTML, sInfoLigne sont des chaînes ANSI
nLigne, nCol sont des entiers
vInfoVariante est un Variant
TableauTrie(unTerme.ListeMembre,ttMembre+tccRespecteNumérique,"+Ordre")
SI unTerme:EnvoiMob ALORS
b = TableauCherche(ListeMob,tcLinéaire,"Rubrique;Utilisee",unTerme:Rubrique,Faux)
FIN
SI b > 0 ALORS
sADonnes = ListeMob[b].ListeDonnesMob
FIN
SI sADonnes <> "" _ET_ unTerme:Type = "Tableau" ALORS
vInfoVariante = JSONVersVariant(sADonnes)
12/08/2026 Batik_WS_Com_Mob 172
Partie 4 › Collection de procédures › LIB_Traitements › Code
SI unTerme.GroupeApp = cRp_CR ALORS
// Requête dans la base de données , le compte rendu ne peuvent pas être modifiées par
l'utilisateur
// // donc le données ne sont pas récupérer à partir de données envoyés par le mobile
RqCompteRenduRemplirRapport(vInfoVariante,sdRReq)
FIN
nLigne = 1 // entête de table
POUR TOUT stTerme, b de unTerme.ListeMembre
nCol += 1
FIN
POUR TOUT UnEle, c de vInfoVariante
SI UnEle.bSelection ALORS
nLigne += 1
FIN
FIN
tabFragments est un tableau de docFragments = DocRecherche(mondoc,unTerme.Rubrique,MotComplet+
SansCasse)
SI tabFragments..Occurrence > 0 ALORS
SI nLigne > 1 ALORS
TabDoc est un docFragment = DocInsèreTableau(mondoc,tabFragments[1]..
PositionDébut,nCol, nLigne)
soit para2 <- TabDoc..Paragraphe[2]
nLigneEnCours est un entier = 1
nColEnCours est un entier = 1
POUR TOUT stTerme, b de unTerme.ListeMembre
para2..Tableau..Cellules[1,b].Contenu..Texte = stTerme:nom
nLigneEnCours = 1
POUR TOUT UnEle, c de vInfoVariante
SI stTerme:EnvoiMob ALORS
infoR est une chaîne ANSI
SI UnEle.bSelection ALORS
nLigneEnCours += 1
imgBuf est un Buffer
SI stTerme:TypeMembre <> "ChpImage" OU stTerme:Type <> "ChpImage"ALORS
RechercheInfoDansVariantRapport(unTerme, stTerme, UnEle,imgBuf,infoR,
sdRReq,"")
para2..Tableau..Cellules[nLigneEnCours,b].Contenu..Texte =
TraitementSelonTypeRubRapportMob(stTerme,infoR)
FIN
FIN
FIN
FIN
FIN
SINON
tabFragments[1].Texte = ""
FIN
FIN
FIN
//
//
//
//TableauTrie(unTerme.ListeMembre,ttMembre+tccRespecteNumérique,"+Ordre")
12/08/2026 Batik_WS_Com_Mob 173
Partie 4 › Collection de procédures › LIB_Traitements › Code
//
//
//SI unTerme:EnvoiMob ALORS
// b = TableauCherche(ListeMob,tcLinéaire,"Rubrique;Utilisee",unTerme:Rubrique,Faux)
//FIN
//
//SI b > 0 ALORS
// sADonnes = ListeMob[b].ListeDonnesMob
//FIN
//
//SI sADonnes <> "" _ET_ unTerme:Type = "Tableau" ALORS
// vInfoVariante est un Variant = JSONVersVariant(sADonnes)
//
SI unTerme.GroupeApp = cRp_CR ALORS // Requête dans la base de données , le compte rendu ne peuvent pas
être modifiées par l'utilisateur
// // donc le données ne sont pas récupérer à partir de données envoyés par le mobile
| // RqCompteRenduRemplirRapport(vInfoVariante,sdRReq) | | | | | |
| ---------------------------------------------------- | --- | --- | --- | --- | --- |
// FIN
//
// SELON unTerme:GroupeApp
// CAS cRp_CtSite,cRp_Client,cRp_CtDonneurs,cRp_Photo,cRp_CR,cRp_RDV
//
| // | sTB | est une chaîne ANSI | | = [ | |
| --- | -------------------------------------------- | ------------------- | --- | --- | --- |
| // | <br> | | | | |
| // | <table cellspacing='0' cellpadding='0' width | | | | |
='100%' style='table-layout:fixed;border-collapse:collapse;'>
| // | <tr style='height:auto'> | | | | |
| --- | ------------------------ | --- | --- | --- | --- |
| // | ] | | | | |
//
| // | POUR TOUT stTerme, b DE unTerme.ListeMembre | | | | |
| --- | ------------------------------------------- | --- | --- | --- | --- |
| // | TableauAjoute(tabTitreCol,stTerme:Nom) | | | | |
| // | POUR TOUT UnEle, c DE vInfoVariante | | | | |
| // | SI stTerme:EnvoiMob ALORS | | | | |
//
| // | | infoR est une chaîne ANSI | | | |
| --- | --- | ------------------------- | --- | --- | --- |
| // | | SI UnEle.bSelection ALORS | | | |
| // | | imgBuf est un buffer | | | |
// SI stTerme:TypeMembre <> "ChpImage" OU stTerme:Type <> "ChpImage"ALORS
//
RechercheInfoDansVariantRapport(unTerme, stTerme, UnEle,imgBuf,infoR,sdRReq,"")
// taCol[b+"-"+c] = TraitementSelonTypeRubRapportMob(stTerme,infoR)
| // | | FIN | | | |
| --- | --- | --- | --- | --- | --- |
| // | | FIN | | | |
| // | FIN | | | | |
//
| // | FIN | | | | |
| --- | --- | --- | --- | --- | --- |
| // | FIN | | | | |
//
| // | POUR TOUT sTitre de tabTitreCol | | | | |
| --- | ------------------------------- | --- | --- | --- | --- |
// sInfoLigne+="<th valign='center' align='center' style='border-left:1pt solid
#000000;border-top:1pt solid #000000;border-right:1pt solid #000000;border-bottom:1pt solid
#000000;width:20%;padding:0.0pt 5.4pt 0.0pt 5.4pt'>"
//
sInfoLigne+="<p class='Normal'><span style='font-family:Calibri;font-size:14pt;'>"
+TexteVersHTML(sTitre) + "</span></p></th>"
| // | FIN | | | | |
| --- | --- | --- | --- | --- | --- |
//
| // | SI sInfoLigne <> "" ALORS | | | | |
| --- | ------------------------- | ---------------------------- | --- | --- | --- |
| // | sTitresCols | = sTB + sInfoLigne + "</tr>" | | | |
//
| // | sInfoLigne | = "" | | | |
| --- | ---------- | ---- | --- | --- | --- |
//
//
| // | POUR TOUT UnEle, c DE vInfoVariante | | | | |
| ---------- | ----------------------------------- | --- | ---------------- | --- | --- |
| 12/08/2026 | | | Batik_WS_Com_Mob | | 174 |
Partie 4 › Collection de procédures › LIB_Traitements › Code
| // | sTB = "" | | |
| --- | --------------------------------- | --- | --- |
| // | SI UnEle.bSelection ALORS | | |
| // | POUR TOUT sTitre,b de tabTitreCol | | |
// SI taCol[b+"-"+c]..Existe ALORS
// sTB+="<td valign='center' align='left' style='border-left:1pt solid
#000000;border-top:1pt solid #000000;border-right:1pt solid #000000;border-bottom:1pt solid
#000000;width:20%;padding:0.0pt 5.4pt 0.0pt 5.4pt'>"
// //sTB+="</td> <td valign='center' align='left'
style='border-left:1pt solid #000000;border-top:1pt solid #000000;border-right:1pt solid
#000000;border-bottom:1pt solid #000000;width:20%;padding:0.0pt 5.4pt 0.0pt 5.4pt'>"
// sTB+="<p class='Normal'>"+taCol[b+"-"+c] +"</p></td>"
// FIN
| // | FIN | | |
| --- | --- | --- | --- |
//
| // | SI sTB <> "" ALORS | | |
| --- | ------------------ | --- | --- |
// sInfoLigne += "<tr style='height:auto'>" + sTB+"</tr>"
| // | FIN | | |
| ------ | --- | --- | --- |
| // | FIN | | |
| // FIN | | | |
// FIN
//
// SI sInfoLigne <> "" ALORS
| // sTbHTML = sTitresCols+sInfoLigne+"</table>" | | | |
| ---------------------------------------------- | --- | --- | --- |
// FIN
//
//
//
// AUTRE CAS
//
// sTbHTML = TraitementSelonTypeRubRapportMob(unTerme,sADonnes)
//
// FIN
//
//
//FIN
//
//saRep = ChaîneVersUTF8(sTbHTML)
//RENVOYER saRep
Procédure globale CreationUnEmail
PROCÉDURE CreationUnEmail(stInfoMail est un ST_ModeleMailComplet)
| sErreur | est une chaîne ANSI | | |
| ----------- | ------------------- | --- | --- |
| sResRepTemp | est une chaîne ANSI | | |
<COMPILE SI Configuration = "WS_COM_MOBILE" OU Configuration = "Debug WS_COM_MOBILE">
| sResRepTemp | = ComplèteRep(fRepExe())+"TEMP\" | | |
| ----------- | -------------------------------- | --- | --- |
<SINON>
| sResRepTemp | = ComplèteRep(fRepWeb())+"TEMP\" | | |
| ----------- | -------------------------------- | --- | --- |
<FIN>
| nPKID_Inter | est un entier sur 8 octets | = stInfoMail.nIdInter | |
| ----------- | -------------------------- | --------------------- | --- |
saCheminTemp est une chaîne ANSI = ComplèteRep(sResRepTemp+nPKID_Inter)
| saCheminDoc | est une chaîne ANSI | | |
| ----------- | ------------------- | --- | --- |
| unEmail | est un Email | | |
// Initialise les composantes du mail
QUAND EXCEPTION DANS
| monAttache est un emailAttache | | | |
| ------------------------------ | --- | --- | --- |
// L'expéditeur
unEmail..Expediteur = stInfoMail.stCompteMail.SMTP.sLogin
| 12/08/2026 | | Batik_WS_Com_Mob | 175 |
| ---------- | --- | ---------------- | --- |
Partie 4 › Collection de procédures › LIB_Traitements › Code
// Le destinataire
POUR TOUT saUnDest DE stInfoMail.tbDest
Ajoute(unEmail..Destinataire,saUnDest)
FIN
// Les destinataires CC
POUR TOUT saUnDestcc DE stInfoMail.tbDestcc
Ajoute(unEmail..Cc,saUnDestcc)
FIN
// Les destinataires CCi
POUR TOUT saUnDestCCI DE stInfoMail.tbDestCCI
Ajoute(unEmail..Cci,saUnDestCCI)
FIN
SI stInfoMail.stCompteMail.SMTP.bEnCopieCachee ALORS
Ajoute(unEmail..Cci,stInfoMail.stCompteMail.SMTP.sLogin)
stInfoMail.tbDestCCI.Ajoute(stInfoMail.stCompteMail.SMTP.sLogin)
FIN
// Le sujet
unEmail..Sujet = stInfoMail.saSujet
// Le corps du message
unEmail..HTML = stInfoMail.bufCorpsHTML
//Construction de la variable emailAttache
saRQDoc est une chaîne ANSI =
"SELECT DC_Nom, GUID, DC_PKID FROM Document WHERE Document.GUID IN "
sComp est une chaîne ANSI
POUR TOUT saGUIDDoc DE stInfoMail.tbPJ
sComp += [","]+"'"+saGUIDDoc+"'"
FIN
SI sComp <> "" ALORS
saRQDoc += "("+sComp+")"
sdRqDoc est une Source de Données
SI PAS HExécuteRequêteSQL(sdRqDoc,gcnxReplica,saRQDoc) ALORS
sErreur ="Erreur lors de la récupération des pièces jointes"
TraceINFO("Problème avec la req de document "+HErreurInfo(hErrComplet))
RENVOYER (sErreur,unEmail)
SINON
POUR TOUT sdRqDoc
saCheminDoc = saCheminTemp+sdRqDoc.GUID+fExtraitChemin(sdRqDoc.DC_Nom,fExtension)
TraceINFO("chemin doc "+saCheminDoc)
SI fFichierExiste(saCheminDoc) ALORS
monAttache..Nom = sdRqDoc.DC_Nom
monAttache..Contenu = fChargeBuffer(saCheminDoc)
//Ajout de la pièce jointe
Ajoute(unEmail..Attache, monAttache)
stInfoMail.tbPJID.Ajoute(sdRqDoc.DC_PKID) // Utilise par le service
FIN
FIN
FIN
SINON
TraceINFO("Aucune pièce joint")
FIN
RENVOYER (sErreur,unEmail)
FAIRE
12/08/2026 Batik_WS_Com_Mob 176
Partie 4 › Collection de procédures › LIB_Traitements › Code
sErreur += "Une erreur s'est produite lors de la création de l'e-mail"+RC+ExceptionInfo(errComplet)
TraceINFO("Erreur dans la CreationUnEmail "+sErreur)
RENVOYER (sErreur,unEmail)
FIN
Procédure globale DonneGrouppeAppSelonGroupe
PROCÉDURE DonneGrouppeAppSelonGroupe(sGroupe est une chaîne ANSI)
sGroupeApp est une chaîne ANSI
SELON sGroupe
CAS "Dossier"
sGroupeApp = cRp_Dossier
CAS "Intervention"
sGroupeApp = cRp_Inter
CAS "Comptes-rendus"
sGroupeApp = cRp_CR
CAS "Donneurs d'ordres"
sGroupeApp = cRp_CtDonneurs
CAS "Client"
sGroupeApp = cRp_Client
CAS "Site"
sGroupeApp = cRp_CtSite
CAS "Rendez-vous"
sGroupeApp = cRp_RDV
AUTRE CAS
sGroupeApp = ""
FIN
RENVOYER sGroupeApp
Procédure globale DonneImgTableauRp
PROCÉDURE DonneImgTableauRp(imgBuf est un Buffer,largPixCol est un entier)
elt est un docElément
QUAND EXCEPTION DANS
img est une Image = imgBuf
HauteurImg est un réel = (img..Hauteur*largPixCol)/img..Largeur
dRedimensionne(img,largPixCol,HauteurImg,drHomothétiqueCentré)
elt..Type = typeDocElémentImage
elt..Image..BufferImage = img
elt..Image..Habillage= docHabillageAlignéSurLeTexte
// La taille de l'image est en pixels dans la variable de type Image.
// Cette taille est convertie en mm dans l'élément (unité utilisée dans un document)
elt..Image..Largeur = img..Largeur * 25.4 / 96.0
elt..Image..Hauteur = img..Hauteur * 25.4 / 96.0
// Position de l'image
elt.Image.X = 0
elt.Image.Y = 0
RENVOYER elt
FAIRE
TraceERREUR("Erreur dans la création du rapport IMG"+ExceptionInfo())
RENVOYER elt
FIN
Procédure globale EnvoiRubMob
12/08/2026 Batik_WS_Com_Mob 177
Partie 4 › Collection de procédures › LIB_Traitements › Code
PROCÉDURE EnvoiRubMob(ListeMob est un tableau de STJSONMembreRubRapport)
n est un entier
SI ListeMob..Occurrence <= 0 ALORS
RENVOYER Faux
FIN
POUR TOUT stEle DE ListeMob
SI stEle:EnvoiMob ALORS
SI stEle.GroupeApp DANS (cRp_Client,cRp_CR,cRp_RDV) ALORS
SI stEle.ListeDonnesBD <> "" ALORS
n += 1
FIN
SINON SI stEle.GroupeApp DANS (cRp_Photo,cRp_CtDonneurs,cRp_CtSite,cRp_Extra) ALORS
n += 1
SINON SI stEle.ListeDonnesBD <> "" ALORS
n+= 1
FIN
FIN
FIN
SI n > 0 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
Procédure globale InitialiseContexteUtilisateur
PROCÉDURE InitialiseContexteUtilisateur(nIdUser est un entier sur 8 octets)
TraceINFO(ChaîneConstruit("InitialiseContexteUtilisateur : %1",nIdUser))
QUAND EXCEPTION DANS
InitialisationParametres()
saRQ est une chaîne ANSI
sdRec est une Source de Données
saRQ=[
SELECT Collaborateur.GUID,
Collaborateur.CO_Nom,Collaborateur.CO_Prenom,Collaborateur.CO_PKID,Collaborateur.CO_Ponderation
,R_PKID,R_Libelle,R_AncienCode, Societe.SO_Nom
FROM
Collaborateur INNER JOIN Utilisateur ON Collaborateur.CO_PKID= Utilisateur.UT_IDCollaborateur,
Collaborateur INNER JOIN Societe_Collaborateur ON
Collaborateur.CO_PKID=Societe_Collaborateur.SC_IDCollaborateur,
Societe_Collaborateur INNER JOIN Societe
ON Societe_Collaborateur.SC_IDCSociete =Societe.SO_PKID,
Utilisateur INNER JOIN Role ON Utilisateur.UT_IDRole = Role.R_PKID
WHERE
Utilisateur.UT_PKID={pUserId}
]
saRQ=Remplace(saRQ,"{pUserId}",nIdUser)
SI HExécuteRequêteSQL(sdRec,gcnxReplica,saRQ) ALORS
gstContexte.stUser.nIdUser =nIdUser
gstContexte.stUser.nIdCollab =sdRec.CO_PKID
gstContexte.stUser.saGuid =sdRec.GUID
12/08/2026 Batik_WS_Com_Mob 178
Partie 4 › Collection de procédures › LIB_Traitements › Code
gstContexte.stUser.saNom =sdRec.CO_Nom
gstContexte.stUser.saPrenom =sdRec.CO_Prenom
gstContexte.stUser.saSociete =sdRec.SO_Nom
gstContexte.stUser.nPond100 =(sdRec.CO_Ponderation=0 ? 100 SINON sdRec.CO_Ponderation *
100)
// # A voir a quoi ca sert R_AncienCode avant PA_Valeur
gstContexte.stUser.nIdGroupe =sdRec.R_AncienCode
gstContexte.stUser.saProfil =sdRec.R_Libelle
gstContexte.stUser.nIdProfil =sdRec.R_PKID
gstContexte.saNomUser = sdRec.CO_Prenom + " " + sdRec.CO_Nom
//Utile pour rendre la trace explicite
//Récupération de la liste des ID des Etats d'intervention qui peuvent être transmis au mobile
gstContexte.sLstEtatsInter = "'"+cCle_EtatInterSansSuite+"', '"+cCle_EtatInterTraite+"'"
SI gstContexte.stUser.nIdProfil > 0 ALORS
saReqDroits est une chaîne ANSI =
[
SELECT AED_PKID, AED_CleAcces, AED_Acces FROM Role
INNER JOIN AccesEtDroit ON AED_IdRole = R_PKID
WHERE R_PKID = {p_IdRole}
]
saReqDroits = Remplace(saReqDroits,"{p_IdRole}",gstContexte.stUser.nIdProfil)
sdDroits est une Source de Données
// exécution de la requête
SI HExécuteRequêteSQL(sdDroits,gcnxReplica,saReqDroits) ALORS
// charge les enregistrements en mémoire
POUR TOUT sdDroits
gstContexte.tbaDroitsAcces[sdDroits.aed_CleAcces] = sdDroits.aed_acces
SI sdDroits.aed_CleAcces DANS (cGestion_DocNull, cGestion_DocPhoto, cGestion_DocAutre,
cGestion_DocMsgExt,...
cGestion_DocRapport, cGestion_DocBatigest) _ET_ sdDroits.aed_acces ALORS
SI gstContexte.sLstDocTypeAcces <> "" ALORS
gstContexte.sLstDocTypeAcces += [","]
FIN
SELON sdDroits.aed_CleAcces
CAS cGestion_DocNull
gstContexte.sLstDocTypeAcces += "'"+cCle_TypeDocNull+"'"
CAS cGestion_DocPhoto
gstContexte.sLstDocTypeAcces += "'"+cCle_TypeDocImg+"'"
CAS cGestion_DocAutre
gstContexte.sLstDocTypeAcces += "'"+cCle_TypeDocAutre+"'"
CAS cGestion_DocMsgExt
gstContexte.sLstDocTypeAcces += "'"+cCle_TypeDocMsgExt+"'"
CAS cGestion_DocRapport
gstContexte.sLstDocTypeAcces += "'"+cCle_TypeDocRapport+"'"
CAS cGestion_DocBatigest
gstContexte.sLstDocTypeAcces += "'"+cCle_TypeDocBatigest+"'"
AUTRE CAS
FIN
FIN
FIN
FIN
SINON
gstContexte.sLstDocTypeAcces= ""
FIN
RENVOYER Vrai
SINON
TraceDEBUG("InitialiseContexteUtilisateur(" + nIdUser + ") "+ RC + HErreurInfo(hErrComplet))
TraceDEBUG(saRQ)
RENVOYER Faux
12/08/2026 Batik_WS_Com_Mob 179
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
FAIRE
TraceDEBUG("InitialiseContexteUtilisateur(" + nIdUser + ") "+ RC + ExceptionInfo(errComplet))
RENVOYER Faux
FIN
Procédure globale ListeRDV
PROCÉDURE ListeRDV(stData est une ST_MOB_DATA,tblRDV est un tableau de ST_RDV_INTER,bAvecNonPlanifie
est un booléen)
sErreur est une chaîne
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO("ListeRDV ")
stParam est un ST_REQ_LISTE_RDV
Désérialise(stParam,stData.saJSON,psdJSON)
//Construction de la requête de sélection
saRQ est une chaîne ANSI
saRQ=[
SELECT
Planning_RDV.GUID AS PL_GUID,
Planning_RDV.PL_PKID AS PL_PKID,
Planning_RDV.PL_IDGroupe AS PL_IDGroupe,
Planning_RDV.PL_Grouper AS PL_Grouper,
Planning_RDV.PL_IDSociete AS PL_IDSociete,
Planning_RDV.PL_IDEquipe AS PL_IDEquipe,
Planning_RDV.PL_IDCollaborateur AS PL_IDCollaborateur,
Planning_RDV.PL_IDDossier AS PL_IDDossier,
Planning_RDV.PL_IDIntervention AS PL_IDIntervention,
Planning_RDV.PL_IDTypeActivite AS PL_IDTypeActivite,
Planning_RDV.PL_IDStatut AS PL_IDStatut,
StatutRDV.PA_VALEUR AS saStatutRDV,
Planning_RDV.PL_Objet AS PL_Objet,
Planning_RDV.PL_Description AS PL_Description,
Planning_RDV.PL_DateDebut AS PL_DateDebut,
Planning_RDV.PL_DateFin AS PL_DateFin,
Planning_RDV.PL_Superposable AS PL_Superposable,
Planning_RDV.PL_Prive AS PL_Prive,
Dossier.DO_IDClient AS DO_IDClient,
Dossier.DO_IDTypeDossier AS DO_IDTypeDossier,
Dossier.DO_Titre AS DO_Titre,
Dossier.DO_IDStatut AS DO_IDStatut,
Dossier.DO_RefInterne AS DO_RefInterne,
Dossier.DO_RefExterne AS DO_RefExterne,
Client.CL_Nom AS CL_Nom,
Client.CL_Tel AS CL_Tel,
Client.CL_Fax AS CL_Fax,
AdClient.AD_PKID AS AdClient_PKID,
AdClient.AD_Etiquette AS AdClient_Etiquette,
AdClient.AD_Ligne_1 AS AdClient_Ligne_1,
AdClient.AD_Ligne_2 AS AdClient_Ligne_2,
AdClient.AD_Ligne_3 AS AdClient_Ligne_3,
AdClient.AD_Ligne_4 AS AdClient_Ligne_4,
AdClient.AD_Ligne_5 AS AdClient_Ligne_5,
AdClient.AD_CodePostal AS AdClient_CodePostal,
AdClient.AD_Ville AS AdClient_Ville,
Intervention.IN_PKID AS IN_PKID,
Intervention.IN_IDTypeIntervention AS IN_IDTypeIntervention,
Intervention.IN_IDEtatIntervention AS IN_IDEtatIntervention,
Intervention.IN_IDSuiviPar AS IN_IDSuiviPar,
12/08/2026 Batik_WS_Com_Mob 180
Partie 4 › Collection de procédures › LIB_Traitements › Code
Intervention.IN_IDDossier AS IN_IDDossier,
Intervention.IN_IDDemandeur AS IN_IDDemandeur,
Intervention.IN_IDClient AS IN_IDClient,
Intervention.IN_IDLieu AS IN_IDLieu,
Intervention.IN_Description AS IN_Description,
Intervention.IN_AttestationTVAPresente AS IN_AttestationTVAPresente,
Intervention.IN_NoteInterne AS IN_NoteInterne,
Intervention.IN_Titre AS IN_Titre,
Intervention.IN_RefInterne AS IN_RefInterne,
Intervention.IN_RefExterne AS IN_RefExterne,
Intervention.IN_IDSociete,
Intervention.IN_NumDevis,
Intervention.IN_DateDevis,
Lieu.LI_PKID AS LI_PKID,
Lieu.LI_CodeLieu AS LI_CodeLieu,
Lieu.LI_IDAdresse AS LI_IDAdresse,
Lieu.LI_IDType AS LI_IDType,
Lieu.LI_CodeAcces AS LI_CodeAcces,
Lieu.LI_Badge AS LI_Badge,
Lieu.LI_Interphone AS LI_Interphone,
Lieu.LI_Note AS LI_Note,
AdLieu.AD_PKID AS AdLieu_PKID,
AdLieu.AD_Etiquette AS AdLieu_Etiquette,
AdLieu.AD_Ligne_1 AS AdLieu_Ligne_1,
AdLieu.AD_Ligne_2 AS AdLieu_Ligne_2,
AdLieu.AD_Ligne_3 AS AdLieu_Ligne_3,
AdLieu.AD_Ligne_4 AS AdLieu_Ligne_4,
AdLieu.AD_Ligne_5 AS AdLieu_Ligne_5,
AdLieu.AD_CodePostal AS AdLieu_CodePostal,
AdLieu.AD_Ville AS AdLieu_Ville,
Planning_RDV.PL_IDLieu AS PL_IDLieu,
Societe.SO_Nom,
Collaborateur.CO_Nom AS NomSuiviPar,
Collaborateur.CO_Prenom AS PrenomSuiviPar,
Collaborateur.CO_TelMobile AS TelMobSuiviPar
FROM
Planning_RDV LEFT OUTER JOIN Intervention ON Planning_RDV.PL_IDIntervention =
Intervention.IN_PKID
,Intervention LEFT OUTER JOIN Lieu ON Intervention.IN_IDLieu = Lieu.LI_PKID
,Lieu LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse = AdLieu.AD_PKID
,Intervention LEFT OUTER JOIN CompteRendu ON
(CompteRendu.CR_IDIntervention=Intervention.IN_PKID)
,Planning_RDV LEFT OUTER JOIN Dossier ON Planning_RDV.PL_IDDossier = Dossier.DO_PKID
,Dossier LEFT OUTER JOIN Client ON Dossier.DO_IDClient = Client.CL_PKID
,Client LEFT OUTER JOIN Adresse AdClient ON Client.CL_IDAdressePrincipale =
AdClient.AD_PKID
,Intervention LEFT OUTER JOIN Societe ON Intervention.IN_IDSociete = Societe.SO_PKID
,Planning_RDV LEFT OUTER JOIN ParametreMetier AS StatutRDV ON
Planning_RDV.PL_IDSTATUT=StatutRDV.PA_PKID
,Intervention LEFT OUTER JOIN Collaborateur ON Intervention.IN_IDSuiviPar=Collaborateur.CO_PKID
WHERE
(
Planning_RDV.PL_IDCollaborateur = {pIDCollaborateur}
AND (
(
Planning_RDV.PL_IDStatut<>{p_IDNonPlanifie}
AND Planning_RDV.PL_DateDebut >= '{pDateDebut}'
AND Planning_RDV.PL_DateFin <= '{pDateFin}'
)
12/08/2026 Batik_WS_Com_Mob 181
Partie 4 › Collection de procédures › LIB_Traitements › Code
OR
(
Planning_RDV.PL_IDStatut={p_IDNonPlanifie}
AND 1={p_AvecNonPlanifie}
)
)
AND Planning_RDV.Archive=0
AND Planning_RDV.PL_IDTypeActivite={p_IDTypeIntervention}
)
ORDER BY
IN_PKID ASC
]
saRQ= Remplace(saRQ,"{pIDCollaborateur}",stParam.nIdCollaborateur)
saRQ= Remplace(saRQ,"{pDateDebut}",stParam.saDateDebut)
saRQ= Remplace(saRQ,"{pDateFin}",stParam.saDateFin)
saRQ= Remplace(saRQ,"{p_AvecNonPlanifie}",bAvecNonPlanifie ? 1 SINON 0)
saRQ= Remplace(saRQ,"{p_IDNonPlanifie}",DonneIdParametre(cCle_RDVAPlanifier))
saRQ= Remplace(saRQ,"{p_IDTypeIntervention}",DonneIdParametre(cCle_RDVInter))
//Construction de la réponse (tableau de ST_RDV_INTER)
saRqCR est une chaîne ANSI = [
SELECT
CompteRendu.CR_PKID,
CompteRendu.GUID AS CR_GUID,
CompteRendu.CR_DateHeureDebut,
CompteRendu.CR_DateHeureFin,
CompteRendu.CR_NoteCollaborateur,
CompteRendu.CR_NomSignataire,
CompteRendu.CR_NoteSignataire,
CompteRendu.CR_DateHeureSignature,
CompteRendu.CR_Signature,
CompteRendu.CreationUser AS CR_CreationUser,
CompteRendu.CR_IDIntervention,
CompteRendu.CR_IDRdv,
Planning_RDV.PL_IDCollaborateur,
Planning_RDV.PL_IDGroupe
FROM CompteRendu
INNER JOIN Planning_RDV ON PL_PKID = CR_IDRdv
WHERE
Planning_RDV.Archive=0
AND Planning_RDV.PL_IDTypeActivite={p_IDTypeIntervention}
AND PL_IDGroupe=Planning_RDV.PL_IDGroupe
AND
(
(
Planning_RDV.PL_IDStatut<>{p_IDNonPlanifie}
AND Planning_RDV.PL_DateDebut >= '{pDateDebut}'
AND Planning_RDV.PL_DateFin <= '{pDateFin}'
)
OR
(
Planning_RDV.PL_IDStatut={p_IDNonPlanifie}
AND 1={p_AvecNonPlanifie}
)
)
]
//saRqCR= Remplace(saRqCR,"{pIDCollaborateur}",stParam.nIdCollaborateur)
saRqCR = Remplace(saRqCR,"{pDateDebut}",stParam.saDateDebut)
saRqCR = Remplace(saRqCR,"{pDateFin}",stParam.saDateFin)
saRqCR = Remplace(saRQ,"{p_IDNonPlanifie}",DonneIdParametre(cCle_RDVAPlanifier))
saRqCR = Remplace(saRQ,"{p_IDTypeIntervention}",DonneIdParametre(cCle_RDVInter))
12/08/2026 Batik_WS_Com_Mob 182
Partie 4 › Collection de procédures › LIB_Traitements › Code
saRqCR = Remplace(saRqCR,"{p_AvecNonPlanifie}",bAvecNonPlanifie ? 1 SINON 0)
sErreur = ConstruitTableauInterventions(saRQ,saRqCR,Vrai,tblRDV)
RENVOYER sErreur
FAIRE
sErreur ="E" + ExceptionInfo(errComplet)
TraceDEBUG("bufREs : " + sErreur)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER sErreur
FIN
PROCÉDURE INTERNE ExtraitDescription(saDescript est une chaîne ANSI)
p est un entier= Position(saDescript,"##########",0,DepuisFin)
SI p>0 ALORS
RENVOYER saDescript[[p+10 À]]
SINON
RENVOYER saDescript
FIN
FIN
Procédure globale ListeRDV_V2
PROCÉDURE ListeRDV_V2(stData est une ST_MOB_DATA,tbLRDV est un tableau de ST_RDV_INTER_V2,
bAvecNonPlanifie est un booléen)
sErreur est une chaîne
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO("ListeRDV ")
saRQ_1 est une chaîne ANSI
sdRec est une Source de Données
saRQ_1 = "SELECT * FROM ParametreMetier WHERE PA_Categorie='"+cParam_TypeRDV+"' AND PA_Actif=1 "
saListeTypeActivite est une chaîne ANSI
SI HExécuteRequêteSQL(sdRec,gcnxReplica,saRQ_1) ALORS
HLitPremier(sdRec)
TANTQUE PAS HEnDehors()
ValJson est un ST_JSON_Type_RDV
bufBufJson est un Buffer
SI sdRec.PA_Parametre <> "" ALORS
bufBufJson = sdRec.PA_Parametre
Désérialise(ValJson,bufBufJson,psdJSON)
SI ValJson.envoi_mobile ALORS
SI saListeTypeActivite <> "" ALORS
saListeTypeActivite += " , "
FIN
saListeTypeActivite += "'"+sdRec.PA_CLE+"'"
FIN
FIN
HLitSuivant()
FIN
TraceERREUR("liste type de activite : " + saListeTypeActivite)
SINON
sErreur="E"+HErreurInfo(errComplet)
TraceERREUR("ConstruitTableauInterventionsAvecCopmteRendu liste type de activite : " + sErreur)
RENVOYER sErreur
FIN
stParam est un ST_REQ_LISTE_RDV
Désérialise(stParam,stData.saJSON,psdJSON)
12/08/2026 Batik_WS_Com_Mob 183
Partie 4 › Collection de procédures › LIB_Traitements › Code
//Construction de la requête de sélection
saRQ est une chaîne ANSI
saRQ=[
SELECT
RDV_Collaborateur.GUID as GUID_RDV_COLB,
RVC_GUID_RDV,
RVC_PKID,
RV_PKID,
RV_Groupe,
RV_IdSociete,
RVC_GUID_Colb,
RV_IdDossier,
RV_IdInter,
RV_CleType,
RV_CleStatut,
RV_Objet,
RV_Description,
RVC_DateDeb,
RVC_DateFin,
RVC_Superposable,
RVC_CR,
RV_SAV,
RV_IdLieu,
RVC_CleStatut,
Dossier.DO_IDClient AS DO_IDClient,
Dossier.DO_CleType,
Dossier.DO_Titre AS DO_Titre,
Dossier.DO_CleStatut,
Dossier.DO_RefInterne AS DO_RefInterne,
Dossier.DO_RefExterne AS DO_RefExterne,
Client.CL_Nom AS CL_Nom,
Client.CL_Tel AS CL_Tel,
Client.CL_Fax AS CL_Fax,
Client.CL_Email AS CL_Email,
AdClient.AD_PKID AS AdClient_PKID,
AdClient.AD_Etiquette AS AdClient_Etiquette,
AdClient.AD_Adresse AS AdClient_Adresse,
AdClient.AD_CodePostal AS AdClient_CodePostal,
AdClient.AD_Ville AS AdClient_Ville,
Intervention.IN_PKID AS IN_PKID,
Intervention.IN_CleType,
Intervention.IN_CleEtat,
Intervention.IN_IDSuiviPar AS IN_IDSuiviPar,
Intervention.IN_IDDossier AS IN_IDDossier,
Intervention.IN_IDDemandeur AS IN_IDDemandeur,
Intervention.IN_IDClient AS IN_IDClient,
Intervention.IN_IDLieu AS IN_IDLieu,
Intervention.IN_Description AS IN_Description,
Intervention.IN_AttestationTVAPresente AS IN_AttestationTVAPresente,
Intervention.IN_NoteInterne AS IN_NoteInterne,
Intervention.IN_Titre AS IN_Titre,
Intervention.IN_RefInterne AS IN_RefInterne,
Intervention.IN_RefExterne AS IN_RefExterne,
Intervention.IN_IDSociete,
Intervention.IN_NumDevis,
Intervention.IN_DateDevis,
Lieu.LI_PKID AS LI_PKID,
Lieu.LI_CodeLieu AS LI_CodeLieu,
Lieu.LI_IDAdresse AS LI_IDAdresse,
Lieu.LI_IDType AS LI_IDType,
Lieu.LI_CodeAcces AS LI_CodeAcces,
Lieu.LI_Badge AS LI_Badge,
Lieu.LI_Interphone AS LI_Interphone,
Lieu.LI_Note AS LI_Note,
Lieu.LI_CleType,
AdLieu.AD_PKID AS AdLieu_PKID,
12/08/2026 Batik_WS_Com_Mob 184
Partie 4 › Collection de procédures › LIB_Traitements › Code
AdLieu.AD_Etiquette AS AdLieu_Etiquette,
AdLieu.AD_Adresse AS AdLieu_Adresse,
AdLieu.AD_CodePostal AS AdLieu_CodePostal,
AdLieu.AD_Ville AS AdLieu_Ville,
Societe.SO_Nom,
Collaborateur.CO_Nom AS NomSuiviPar,
Collaborateur.CO_Prenom AS PrenomSuiviPar,
Collaborateur.CO_TelMobile AS TelMobSuiviPar,
Collaborateur.CO_Email AS SuiviEmail
FROM
RDV_Collaborateur
INNER JOIN RDV_Planning on RDV_Planning.GUID = RDV_Collaborateur.RVC_GUID_RDV
LEFT JOIN Intervention ON RDV_Planning.RV_IdInter = Intervention.IN_PKID
LEFT OUTER JOIN Lieu ON Intervention.IN_IDLieu = Lieu.LI_PKID
LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse = AdLieu.AD_PKID
LEFT OUTER JOIN Dossier ON RDV_Planning.RV_IdDossier = Dossier.DO_PKID
LEFT OUTER JOIN Client ON Dossier.DO_IDClient = Client.CL_PKID
LEFT OUTER JOIN Adresse AdClient ON Client.CL_IDAdressePrincipale = AdClient.AD_PKID
LEFT OUTER JOIN Societe ON Intervention.IN_IDSociete = Societe.SO_PKID
LEFT OUTER JOIN Collaborateur ON Intervention.IN_IDSuiviPar=Collaborateur.CO_PKID
WHERE
(
RDV_Collaborateur.RVC_GUID_Colb = '{pGUIDCollaborateur}'
AND (
(
RDV_Planning.RV_CleStatut<>'{p_CLENonPlanifie}'
AND RDV_Collaborateur.RVC_DateDeb >= '{pDateDebut}'
AND RDV_Collaborateur.RVC_DateFin <= '{pDateFin}'
)
OR
(
RDV_Planning.RV_CleStatut='{p_CLENonPlanifie}'
AND 1={p_AvecNonPlanifie}
)
)
AND RDV_Collaborateur.Archive=0
AND RDV_Planning.Archive = 0
{p_Compl_TypeAct}
)
ORDER BY
IN_PKID ASC
]
saGuidC est une chaîne ANSI = DonneGuidIdColb(stParam.nIdCollaborateur)
saRQ= Remplace(saRQ,"{pGUIDCollaborateur}",saGuidC)
saRQ= Remplace(saRQ,"{pDateDebut}",stParam.saDateDebut)
saRQ= Remplace(saRQ,"{pDateFin}",stParam.saDateFin)
saRQ= Remplace(saRQ,"{p_AvecNonPlanifie}",bAvecNonPlanifie ? 1 SINON 0)
saRQ= Remplace(saRQ,"{p_CLENonPlanifie}",cCle_RDVAPlanifier)
saRQ=Remplace(saRQ,"{p_Compl_TypeAct}","AND RDV_Planning.RV_CleType IN ("+saListeTypeActivite+")")
// SI stData.saCMD = cCMD_ListeRDV_V2 ou stData.saCMD = cCMD_ListeRDV_Clb ALORS
//
saRQ=Remplace(saRQ,"{p_Compl_TypeAct}","AND RDV_Planning.RV_CleType IN ("+saListeTypeActivite+")")
// //saRQ=Remplace(saRQ,"{p_ListeIDTypeIntervention}",saListeTypeActivite)
// SINON
// saRQ=Remplace(saRQ,"{p_Compl_TypeAct}","AND RDV_Planning.RV_CleType = "+cCle_RDVInter)
// FIN
//Construction de la réponse (tableau de ST_RDV_INTER)
TraceERREUR("REQ liste type de activite : " + saRQ)
saRqCR est une chaîne ANSI = [
SELECT
CompteRendu.CR_PKID,
12/08/2026 Batik_WS_Com_Mob 185
Partie 4 › Collection de procédures › LIB_Traitements › Code
CompteRendu.GUID AS CR_GUID,
CompteRendu.CR_DateHeureDebut,
CompteRendu.CR_DateHeureFin,
CompteRendu.CR_NoteCollaborateur,
CompteRendu.CR_NomSignataire,
CompteRendu.CR_NomSignataireTech,
CompteRendu.CR_NoteSignataire,
CompteRendu.CR_ReserveCommentaire,
CompteRendu.CR_DateHeureSignature,
CompteRendu.CR_Signature,
CompteRendu.CR_SignatureTech,
CompteRendu.CreationUser AS CR_CreationUser,
CompteRendu.CR_IDIntervention,
CompteRendu.CR_GUID_Rdv,
CompteRendu.CR_CleTypeSignataire,
CompteRendu.CR_IDCollaborateur,
CompteRendu.CR_IDRdv,
RDV_Collaborateur.RVC_GUID_Colb,
RDV_Collaborateur.RVC_GUID_RDV,
Collaborateur.CO_Nom,
Collaborateur.CO_Prenom
FROM CompteRendu
INNER JOIN RDV_Collaborateur ON RDV_Collaborateur.RVC_GUID_RDV = CompteRendu.CR_GUID_Rdv
INNER JOIN RDV_Planning ON RDV_Planning.GUID = CR_GUID_Rdv
INNER JOIN Collaborateur ON CO_PKID = CR_IDCollaborateur
WHERE
RDV_Planning.Archive=0 AND RDV_Collaborateur.Archive=0
{p_Compl_TypeAct}
AND
(
(
RDV_Planning.RV_CleStatut<>'{p_CleNonPlanifie}'
AND RDV_Collaborateur.RVC_DateDeb >= '{pDateDebut}'
AND RDV_Collaborateur.RVC_DateFin <= '{pDateFin}'
)
OR
(
RDV_Collaborateur.RVC_CleStatut='{p_CleNonPlanifie}'
AND 1={p_AvecNonPlanifie}
)
)
]
//saRqCR= Remplace(saRqCR,"{pIDCollaborateur}",stParam.nIdCollaborateur)
saRqCR = Remplace(saRqCR,"{pDateDebut}",stParam.saDateDebut)
saRqCR = Remplace(saRqCR,"{pDateFin}",stParam.saDateFin)
saRqCR = Remplace(saRqCR,"{p_CleNonPlanifie}",cCle_RDVAPlanifier)
saRqCR = Remplace(saRqCR,"{p_AvecNonPlanifie}",bAvecNonPlanifie ? 1 SINON 0)
SI stData.saCMD = cCMD_ListeRDV_V2 ALORS
saRqCR=Remplace(saRqCR,"{p_Compl_TypeAct}","AND RDV_Planning.RV_CleType IN ("+
saListeTypeActivite+")")
SINON
saRqCR=Remplace(saRqCR,"{p_Compl_TypeAct}","AND RDV_Planning.RV_CleType = '"+cCle_RDVInter+"'")
FIN
sErreur =ConstruitTableauInterventions_V2(saRQ,saRqCR,Vrai,Vrai,tbLRDV)
RENVOYER sErreur
FAIRE
sErreur ="E" + ExceptionInfo(errComplet)
TraceDEBUG("bufREs : " + sErreur)
TraceDEBUG("Durée (ms) : " + ChronoFin())
12/08/2026 Batik_WS_Com_Mob 186
Partie 4 › Collection de procédures › LIB_Traitements › Code
RENVOYER sErreur
FIN
PROCÉDURE INTERNE ExtraitDescription(saDescript est une chaîne ANSI)
p est un entier= Position(saDescript,"##########",0,DepuisFin)
SI p>0 ALORS
RENVOYER saDescript[[p+10 À]]
SINON
RENVOYER saDescript
FIN
FIN
Procédure globale ListeReferenceDOC
//Récupère la liste des documents associés à une intervention
PROCÉDURE ListeReferenceDOC(stData est une ST_MOB_DATA)
stParam est un ST_REQ_LISTE_DOC
saRep est une chaîne ANSI
tblDoc est un tableau de ST_TABELEM_DOC
bufRes est un Buffer
Désérialise(stParam,stData.saJSON,psdJSON)
SI gstContexte.stUser.nIdProfil <= 0 ALORS
bufRes="E"+ " Type de profil inconnu"
TraceDEBUG("bufREs : " + bufRes)
Sérialise(tblDoc,saRep,psdJSON)
TraceINFO("ListeReferenceDOC :"+ saRep)
RENVOYER "R"+saRep
FIN
saRQ est une chaîne ANSI =[
SELECT DISTINCT
Document.DC_PKID AS DC_PKID
,Document.DC_IDIntervention AS DC_IDIntervention
,Document.DC_Nom AS DC_Nom
,Document.DC_CleCategorie
,Document.DC_DateFichier AS DC_DateFichier
,Document.GUID AS GUID
,DocumentNote.DN_Note as DN_Note
,DocumentNote.CreationDate AS DN_Date
,DocumentNote.CreationUser AS DN_Auteur
,DocumentNote.DN_PKID AS DN_PKID
,DocumentNote.GUID as DN_GUID
,Utilisateur.UT_IDCollaborateur
,Collaborateur.CO_Nom as UT_Nom
,Collaborateur.CO_Prenom as UT_Prenom
FROM
Document LEFT OUTER JOIN DocumentNote ON Document.DC_PKID = DocumentNote.DN_IDDocument
,DocumentNote LEFT OUTER JOIN Utilisateur ON DocumentNote.CreationUser= Utilisateur.UT_PKID
,Utilisateur LEFT OUTER JOIN Collaborateur ON Collaborateur.CO_PKID =
Utilisateur.UT_IDCollaborateur
WHERE
Document.DC_IDIntervention = {pIDIntervention} AND Document.DC_Nom <>'' AND Document.GUID <>''
AND DC_CleCategorie IN ({p_CtgDocs})
]
saRQ=Remplace(saRQ,"{pIDIntervention}",NumériqueVersChaîne(stParam.nIdIntervention))
12/08/2026 Batik_WS_Com_Mob 187
Partie 4 › Collection de procédures › LIB_Traitements › Code
saRQ=Remplace(saRQ,"{p_CtgDocs}",gstContexte.sLstDocTypeAcces)
saRQ+=" ORDER BY Document.DC_DateFichier, Document.DC_PKID"
sdDoc est une Source de Données
TraceDEBUG("ListeReferenceDOC - SQL : " + saRQ)
//TraceINFO(saRQ)
SI PAS HExécuteRequêteSQL(sdDoc,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
saRep="E"+ErreurInfo(errComplet)
RENVOYER saRep
FIN
nDocID est un entier sur 8 octets
stDoc est une ST_TABELEM_DOC
stNt est un ST_TABELEM_NOTEDOC
nIndice est un entier
POUR TOUT sdDoc
SI nDocID<>sdDoc.DC_PKID ALORS
nDocID = sdDoc.DC_PKID
stDoc.nDC_PKID = sdDoc.DC_PKID
stDoc.nDC_IdInter = sdDoc.DC_IDIntervention
stDoc.saDC_Nom = sdDoc.DC_Nom
stDoc.saLibCat = DonneLibParametre(sdDoc.DC_CleCategorie)
stDoc.saDC_DteFic = sdDoc.DC_DateFichier
stDoc.saDocGuid = sdDoc.GUID
nIndice=tblDoc.Ajoute(stDoc)
FIN
//Remplissage du tableau des notes
SI sdDoc.DN_Note<>"" ALORS
stNt.saGUID = sdDoc.DN_GUID
stNt.saDN_Note = sdDoc.DN_Note
stNt.saDN_Date = sdDoc.DN_Date
//stNt.nDN_Auteur = sdDoc.DN_Auteur
stNt.nIdUsr = sdDoc.DN_Auteur
stNt.saNomAuteur =sdDoc.UT_Prenom + [" "]+ sdDoc.UT_Nom
stNt.nDN_DOCPKID = sdDoc.DC_PKID
tblDoc[nIndice].tblNotes.Ajoute(stNt)
FIN
FIN
HAnnuleDéclaration(sdDoc)
Sérialise(tblDoc,saRep,psdJSON)
TraceINFO("ListeReferenceDOC :"+ saRep)
RENVOYER "R"+saRep
Procédure globale ListeTemps
PROCÉDURE ListeTemps(stData est une ST_MOB_DATA)
bufRes est un Buffer
ChronoDébut()
QUAND EXCEPTION DANS
//Tableau des Temps passés
tbTemps est un tableau de ST_TEMPS
//Récupération des paramètres de la requête dans stData.saJSON
12/08/2026 Batik_WS_Com_Mob 188
Partie 4 › Collection de procédures › LIB_Traitements › Code
stParam est un ST_REQ_LISTE_TEMPS
Désérialise(stParam,stData.saJSON,psdJSON)
sdTps est une Source de Données
saRQ est une chaîne ANSI=[
SELECT
SDT_PKID,GUID,SDT_IDIntervention,SDT_IDCollaborateur,SDT_DateDebut,SDT_DateHeureFin,SDT_Pondera
tion,SDT_NbMinutes,SDT_CleType,SDT_Libelle,
Intervention.IN_RefInterne
FROM SUIVIDESTEMPS LEFT OUTER JOIN Intervention ON SuiviDesTemps.SDT_IDIntervention =
Intervention.IN_PKID
WHERE (SDT_DateDebut BETWEEN '{pDebut}' AND '{pFin}' ) AND
SDT_IDCollaborateur={pIdCollaborateur}
ORDER BY SDT_DateDebut DESC
]
saRQ=Remplace(saRQ,"{pDebut}",stParam.saDateDebut)
saRQ=Remplace(saRQ,"{pFin}",stParam.saDateFin)
saRQ=Remplace(saRQ,"{pIdCollaborateur}",stParam.nIdCollaborateur)
SI PAS HExécuteRequêteSQL(sdTps,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
TraceDEBUG("Erreur lecture des Temps " + HErreurInfo(hErrComplet))
SINON
stTps est un ST_TEMPS
POUR TOUT sdTps
stTps:nIdInter = sdTps.SDT_IDIntervention
stTps:nIdTps = sdTps.SDT_PKID
stTps:nIdCollab = sdTps.SDT_IDCollaborateur
stTps:saNumInter = sdTps.IN_RefInterne
stTps:saHeureDebut = sdTps.SDT_DateDebut
stTps:nNbMinutes = sdTps.SDT_NbMinutes
stTps:saHeureFin = sdTps.SDT_DateHeureFin
stTps:nPond100 = sdTps.SDT_Ponderation*100
stTps:nIdTypeTps = DonneIdParametre(sdTps.SDT_CleType)
stTps:saLibelle = sdTps.SDT_Libelle
stTps:saGuid = sdTps.GUID
tbTemps.Ajoute(stTps)
FIN
Sérialise(tbTemps,bufRes,psdJSON)
FIN
RENVOYER "R" + bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale ListeTempsPasse
PROCÉDURE ListeTempsPasse(stData est une ST_MOB_DATA)
bufRes est un Buffer
ChronoDébut()
QUAND EXCEPTION DANS
stRdvTemp est un ST_TEMPS_PASSE_RDV
12/08/2026 Batik_WS_Com_Mob 189
Partie 4 › Collection de procédures › LIB_Traitements › Code
//Tableau des Temps passés
//tbTemps est un tableau de ST_TEMPS_PASSE
//Récupération des paramètres de la requête dans stData.saJSON
stParam est un ST_REQ_LISTE_TEMPS_PASSE
Désérialise(stParam,stData.saJSON,psdJSON)
sdTps est une Source de Données
saRQ est une chaîne ANSI=[
SELECT
SDT_PKID,GUID,SDT_IDIntervention,SDT_IDCollaborateur,SDT_DateDebut,SDT_DateHeureFin,SDT_NbMinut
es,SDT_CleType,SDT_Libelle,
Intervention.IN_RefInterne,SDT_IDRdv,SDT_Controle
FROM SUIVIDESTEMPS LEFT OUTER JOIN Intervention ON SuiviDesTemps.SDT_IDIntervention =
Intervention.IN_PKID
//WHERE (SDT_DateDebut BETWEEN '{pDebut}' AND '{pFin}' ) AND
SDT_IDCollaborateur={pIdCollaborateur}
WHERE SDT_IDRdv={p_IDRdv}
AND SDT_IDCollaborateur={pIdCollaborateur}
//ORDER BY SDT_DateDebut DESC
]
saRQ=Remplace(saRQ,"{p_IDRdv}",stParam.nIdrdv)
saRQ=Remplace(saRQ,"{pIdCollaborateur}",stParam.nIdCollaborateur)
SI PAS HExécuteRequêteSQL(sdTps,gcnxReplica,hRequêteDéfaut,saRQ) ALORS
TraceDEBUG("Erreur lecture des Temps passés" + HErreurInfo(hErrComplet))
SINON
stRdvTemp.nIdRDV = sdTps.SDT_IDRdv
stTps est un ST_TEMPS_PASSE
POUR TOUT sdTps
stTps:saGuid = sdTps.GUID
stTps:nIdTypeTps = DonneIdParametre(sdTps.SDT_CleType)
stTps:nTemps = sdTps.SDT_NbMinutes
stTps:saDateHeureDeb = sdTps.SDT_DateDebut
stTps:saDateHeureFin = sdTps.SDT_DateHeureFin
stTps:bModifiable = sdTps.SDT_Controle ? Faux SINON sdTps.SDT_IDCollaborateur=stParam.
nIdCollaborateur
stRdvTemp.tblTemps.Ajoute(stTps)
FIN
Sérialise(stRdvTemp,bufRes,psdJSON)
FIN
RENVOYER "R" + bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale MotCleModeleEmail_Rub_Rapport
PROCÉDURE MotCleModeleEmail_Rub_Rapport(TermeRapportEmail est un STJSONRubriqueRapport,TermeRapport est
un STJSONRubriqueRapport)
n est un entier
12/08/2026 Batik_WS_Com_Mob 190
Partie 4 › Collection de procédures › LIB_Traitements › Code
sGrouppeApp est une chaîne ANSI
saRQRub est une chaîne ANSI = [
SELECT * FROM MotClef WHERE MOC_Langue='FR'
]
sdRqRub est une Source de Données
SI PAS HExécuteRequêteSQL(sdRqRub,gcnxReplica,saRQRub) ALORS
// modele introuvable
SINON
POUR TOUT sdRqRub
n = TableauCherche(TermeRapport.ListeTerme,tcLinéaire,"Groupe;MembreEmailMob",sdRqRub.
MOC_Groupe,sdRqRub.MOC_Code)
SI n <= 0 ALORS
sGrouppeApp = DonneGrouppeAppSelonGroupe(sdRqRub.MOC_Groupe)
SI sGrouppeApp = cRp_Client OU sGrouppeApp = cRp_Dossier ALORS
POUR TOUT stUnTerme, v de TermeRapport.ListeTerme
SI Contient(stUnTerme:MembreEmailMob,sdRqRub.MOC_Code,MotComplet+SansCasse) ALORS
n = v
SORTIR
FIN
FIN
FIN
FIN
stMC est un STJSONMembreRubRapport
SI n > 0 ALORS
stMC = TermeRapport.ListeTerme[n]
SINON
stMC.Nom = sdRqRub.MOC_Lib
stMC.MembreMob = sdRqRub.MOC_Code
n = TableauCherche(TermeRapport.ListeTerme,tcLinéaire,"Groupe",
sdRqRub.MOC_Groupe)
SI n > 0 ALORS
stMC.GroupeApp = TermeRapport.ListeTerme[n].GroupeApp
stMC.Groupe = TermeRapport.ListeTerme[n].Groupe
SINON
stMC.GroupeApp = DonneGrouppeAppSelonGroupe(sdRqRub.MOC_Groupe)
stMC.MembreMob = Remplace(sdRqRub.MOC_Code,".", "_")
FIN
stMC.EnvoiMob = Faux
FIN
stMC.Rubrique = sdRqRub.MOC_Mot
TermeRapportEmail.ListeTerme.Ajoute(stMC)
FIN
FIN
Procédure globale OuvreConnexionsHF
PROCÉDURE OuvreConnexionsHF()
<COMPILE SI Configuration="Debug WS_COM_MOBILE">
RENVOYER Vrai
<FIN>
<COMPILE SI Configuration="WS_COM_MOBILE">
RENVOYER EXE_OuvreConnexionHFSQL()
12/08/2026 Batik_WS_Com_Mob 191
Partie 4 › Collection de procédures › LIB_Traitements › Code
<FIN>
QUAND EXCEPTION DANS
gcnxBaseSync..Serveur="127.0.0.1:" + gstContexte.saNumPort
gcnxBaseSync..BaseDeDonnées = gstContexte.saBaseSync
gcnxReplica..Serveur="127.0.0.1:" + gstContexte.saNumPort
gcnxReplica..BaseDeDonnées=gstContexte.saBaseData
TraceINFO("OuvreConnexionsHF :" + gstContexte.saNumPort)
HChangeConnexion("*",gcnxBaseSync)
gsaPass = BufferVersHexa(HashChaîne(HA_MD5_128,gcnxReplica..BaseDeDonnées),SansRegroupement)
sPassSysteme est une chaîne ANSI= BufferVersHexa(HashChaîne(HA_MD5_128,Mdp3 + gcnxReplica..
BaseDeDonnées),SansRegroupement)
SI PAS HOuvreConnexion(gcnxBaseSync) ALORS
TraceERREUR("ERREUR OuvreConnexionsHF " + gcnxBaseSync..BaseDeDonnées + RC + gcnxBaseSync..
Serveur +RC+ HErreurInfo(hErrComplet) )
RENVOYER Faux
FIN
SI PAS HOuvreConnexion(gcnxReplica) ALORS
TraceERREUR("ERREUR OuvreConnexionsHF " + gcnxReplica..BaseDeDonnées + RC + gcnxReplica..
Serveur +RC+ HErreurInfo(hErrComplet) )
RENVOYER Faux
FIN
//Vérification ultime de la présence de la base de données du client sur le serveur
saLst est une chaîne ANSI = HListeBaseDeDonnées(gcnxReplica,hLstNormal)
SI ChaîneOccurrence(saLst, gstContexte.saBaseData ,SansCasse) =0 ALORS
TraceERREUR("ERREUR OuvreConnexionsHF : La base client n'existe pas sur ce serveur HF " + saLst
)
RENVOYER Faux
FIN
//Déclaration Externe de tous les fichiers du répliqua
saLst = HListeFichier(gcnxReplica)
POUR TOUTE CHAÎNE saFic DE saLst SÉPARÉE PAR RC
SI ChaîneOccurrence(saFic,"\")=0 ALORS
SI saFic="ParametreSysteme.fic" _OU_ saFic="ParametreMetierEntete.fic" _OU_ saFic="
Etats.fic" ALORS
SI PAS HPasse(ExtraitChaîne(saFic,1,"."),sPassSysteme) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
SINON
SI PAS HPasse(ExtraitChaîne(saFic,1,"."),gsaPass) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
FIN
SI PAS HDéclareExterne(saFic,ExtraitChaîne(saFic,1,"."),gcnxReplica) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
FIN
FIN
//Déclaration Externe de la table paramètres pour pouvoir la manipuler avec des fonction Hxxx
HPasse(gsdParamApplication,gsaPass)
HDéclareExterne("ParametreApplication.fic",gsdParamApplication,gcnxReplica)
TraceINFO("Connexions OK")
RENVOYER Vrai
FAIRE
TraceERREUR("ERREUR OuvreConnexionsHF " + ExceptionInfo(errComplet) )
RENVOYER Faux
12/08/2026 Batik_WS_Com_Mob 192
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
Procédure globale OuvreSessionEmail
PROCÉDURE OuvreSessionEmail(LOCAL nMode est un entier, LOCAL sLogin est une chaîne, LOCAL sMdp est une
chaîne, LOCAL sAdresseServeur est une chaîne,LOCAL sPortServeur est une chaîne, LOCAL nCryptage est un
entier)
bResultat est un booléen
EmailChangeTimeOut(10)
//1=IMAP
//2=POP3
//3=SMTP
SELON nMode
CAS 1 : bResultat = EmailOuvreSessionIMAP(sLogin, sMdp, sAdresseServeur, Val(sPortServeur),
nCryptage=1 ? emailOptionDéfaut SINON nCryptage=2 ? emailOptionSécuriséTLS SINON optionSSL)
CAS 2 : bResultat = EmailOuvreSessionPOP3(sLogin, sMdp, sAdresseServeur, Val(sPortServeur),
nCryptage=1 ? emailOptionDéfaut SINON nCryptage=2 ? emailOptionSécuriséTLS SINON optionSSL)
CAS 3 : bResultat = EmailOuvreSessionSMTP(sLogin, sMdp, sAdresseServeur, Val(sPortServeur), Faux,
nCryptage=1 ? emailOptionDéfaut SINON nCryptage=2 ? emailOptionSécuriséTLS SINON optionSSL)
FIN
sMsg est une chaîne
SI ErreurDétectée() ALORS
sMsg = ErreurInfo(errComplet)
bResultat = Faux
FIN
RENVOYER (bResultat,sMsg)
Procédure globale PurgeTOMOB_24h
PROCÉDURE PurgeTOMOB_24h()
//Supprime tous les enregistrements de plus de 24h
rq est une Requête SQL =
[
DELETE FROM TOMOB WHERE TM_Date < {pDate}
]
dh est une DateHeure = DateHeureSys()
dh..Heure -= 24
rq.pDate=dh
HExécuteRequête(rq)
Procédure globale RechercheDonneesSimpleRapportMob
PROCÉDURE RechercheDonneesSimpleRapportMob(ListeMob est un tableau de STJSONMembreRubRapport, unTerme
est un STJSONMembreRubRapport)
b est un entier
sAInfoRemp est une chaîne ANSI
SI unTerme:EnvoiMob ALORS
b = TableauCherche(ListeMob,tcLinéaire,"Rubrique;Utilisee",unTerme:Rubrique, Faux)
FIN
TraceINFO("b => "+b+" "+unTerme:Rubrique)
12/08/2026 Batik_WS_Com_Mob 193
Partie 4 › Collection de procédures › LIB_Traitements › Code
SI b > 0 ALORS
ListeMob[b].Utilisee = Vrai
TraceINFO("données b => "+ListeMob[b].ListeDonnesMob)
SI ListeMob[b].ListeDonnesmob <> "" ALORS
sAInfoRemp = TraitementSelonTypeRubRapportMob(unTerme,ListeMob[b].ListeDonnesMob)
SINON
sAInfoRemp = TraitementSelonTypeRubRapportMob(unTerme,unTerme:ListeDonnesBD)
FIN
SINON
// Comment ce n'est pas envoyé dans le mobile je cherche directement dans le données (Bqse
de données)
b = TableauCherche(ListeMob,tcLinéaire,"Rubrique;Utilisee",unTerme:Rubrique
, Faux)
SI b > 0 ALORS
sAInfoRemp = TraitementSelonTypeRubRapportMob(unTerme,ListeMob[b].ListeDonnesBD)
ListeMob[b].Utilisee = Vrai
SINON
sAInfoRemp = TraitementSelonTypeRubRapportMob(unTerme,unTerme:ListeDonnesBD)
FIN
FIN
RENVOYER sAInfoRemp
Procédure globale RechercheInfoDansVariantRapport
PROCÉDURE RechercheInfoDansVariantRapport(unTerme est un STJSONMembreRubRapport, stTerme est un
STJSONListeMembre, UnEle est un Variant,ImgBuf est un Buffer,...
saInfoV est une chaîne ANSI, sdRReq est une source de données,CheminImg est une chaîne
ANSI)
satxt est une chaîne ANSI
saIdentifiant est une chaîne ANSI
saValeurId est une chaîne ANSI
QUAND EXCEPTION DANS
SELON unTerme.GroupeApp
CAS cRp_CR
saIdentifiant = "sdRReq.CR_GUID"
saValeurId = Remplace(UnEle.saGuidCR,RC,"")
CAS cRp_Photo
saIdentifiant = "UnEle.nDC_PKID"
saValeurId = Remplace(UnEle.saGUID,RC,"")
FIN
SI PAS stTerme:BD ALORS
satxt = "UnEle."+stTerme:MembreMob
saInfoV = {satxt}
SI stTerme:TypeMembre = "ChpImage" OU stTerme:Type = "ChpImage"ALORS
SI fRepExiste(CheminImg) ALORS
sExtension est une chaîne ANSI = fExtraitChemin(UnEle.saNom, fExtension)
sNOMiMG est une chaîne ANSI = saValeurId+sExtension
SI fFichierExiste(CheminImg+sNOMiMG) ALORS
ImgBuf = fChargeBuffer(CheminImg+sNOMiMG)
FIN
FIN
FIN
SINON
POUR TOUT sdRReq
12/08/2026 Batik_WS_Com_Mob 194
Partie 4 › Collection de procédures › LIB_Traitements › Code
SI {saIdentifiant} = saValeurId ALORS
satxt = "sdRReq."
satxt += stTerme:MembreMob
saInfoV = {satxt}
SI stTerme:TypeMembre = "ChpImage" OU stTerme:Type = "ChpImage"ALORS
ImgBuf = {satxt}
FIN
FIN
FIN
FIN
FAIRE
saInfoV = ""
ImgBuf = ""
TraceINFO("Info var " + saInfoV)
TraceERREUR("Erreur dans la création du rapport IMG"+ExceptionInfo())
FIN
Procédure globale RechercheInterventions
PROCÉDURE RechercheInterventions(stData est une ST_MOB_DATA)
bDroitTout, bDroitUniqRDV, bAccesDossier sont des booléens
saRQ,saWhere sont des chaînes ANSI
bufRes est un Buffer
TraceINFO("RechercheRDV ")
// Recherche de droits
SI gstContexte:tbaDroitsAcces[cGestion_R_I_SOC_ATCH]..Existe = Vrai _ET_ gstContexte:tbaDroitsAcces
[cGestion_R_I_SOC_ATCH] ALORS
bDroitTout = Vrai
FIN
SI gstContexte:tbaDroitsAcces[cGestion_R_I_RDV_EXST]..Existe = Vrai _ET_ gstContexte:tbaDroitsAcces
[cGestion_R_I_RDV_EXST] ALORS
bDroitUniqRDV = Vrai
FIN
SI gstContexte:tbaDroitsAcces[cGestion_R_I_RDV_EXST_DS]..Existe = Vrai _ET_ gstContexte:
tbaDroitsAcces[cGestion_R_I_RDV_EXST_DS] ALORS
bAccesDossier = Vrai
FIN
<COMPILE SI Configuration="Webservice" OU Configuration="Webservice_Bouvard">
// selon configuration du à la mise à jour chez le client
SI bDroitTout ET bDroitUniqRDV ET bAccesDossier ALORS
// il y a tous les droit on ne modifie rien
saRQ = ReqRechercheIntervention(stData,"")
saWhere = ""
SINON
// Création condition where selon les droits
// Ne pas modifier l'ordre des conditions
SI bDroitTout ET gstContexte.stUser.nIdCollab > 0 ALORS
saWhere = WhereRechercheIntDroitSoc(stData,gstContexte.stUser.nIdCollab)
SINON SI bAccesDossier ET gstContexte.stUser.saGuid <> ""
saWhere = WhereRechercheIntDroitDossier(stData,gstContexte.stUser.saGuid)
SINON SI bDroitUniqRDV ET gstContexte.stUser.saGuid <> ""
saWhere = WhereRechercheIntDroitRDV(stData,gstContexte.stUser.saGuid)
FIN
FIN
12/08/2026 Batik_WS_Com_Mob 195
Partie 4 › Collection de procédures › LIB_Traitements › Code
// Condition appliquées (selon droit) on construit la req
SI saWhere <> "" ALORS
saRQ = ReqRechercheIntervention(stData,saWhere)
FIN
<SINON>
SI bDroitTout ALORS
saRQ= ReqRechercheIntervention(stData,"")
saWhere = ""
FIN
<FIN>
// si il y a une requête on construit les interventions sinon on renvoi un tableau vide
SI saRQ <> "" ALORS
RENVOYER ConstruitResultatRechercheInterventions(saRQ)
SINON
tblINT est un tableau de ST_INTER
Sérialise(tblINT,bufRes,psdJSON)
bufRes ="R" + bufRes
TraceINFO("bufREs Vide : " + bufRes)
RENVOYER bufRes
FIN
Procédure globale RechercheInterventionsNonPlannifiées
PROCÉDURE RechercheInterventionsNonPlannifiées(tblRDV est un tableau de ST_RDV_INTER)
sErreur est une chaîne
QUAND EXCEPTION DANS
TraceINFO("RechercheInterventionsNonPlannifiées pour " + gstContexte.stUser.nIdCollab +" " + gst
Contexte.saNomUser)
//Construction de la requête de sélection
saRQ est une chaîne ANSI
saRQ=[
SELECT
Dossier.DO_IDClient AS DO_IDClient,
Dossier.DO_CleType,
Dossier.DO_Titre AS DO_Titre,
Dossier.DO_CleStatut,
Dossier.DO_RefInterne AS DO_RefInterne,
Dossier.DO_RefExterne AS DO_RefExterne,
Client.CL_Nom AS CL_Nom,
Client.CL_Tel AS CL_Tel,
Client.CL_Fax AS CL_Fax,
AdClient.AD_PKID AS AdClient_PKID,
AdClient.AD_Etiquette AS AdClient_Etiquette,
AdClient.AD_Adresse AS AdClient_Adresse,
AdClient.AD_CodePostal AS AdClient_CodePostal,
AdClient.AD_Ville AS AdClient_Ville,
Intervention.IN_PKID AS IN_PKID,
Intervention.IN_CleType,
Intervention.IN_CleEtat,
Intervention.IN_IDSuiviPar AS IN_IDSuiviPar,
Intervention.IN_IDDossier AS IN_IDDossier,
Intervention.IN_IDDemandeur AS IN_IDDemandeur,
Intervention.IN_IDClient AS IN_IDClient,
Intervention.IN_IDLieu AS IN_IDLieu,
Intervention.IN_Description AS IN_Description,
Intervention.IN_AttestationTVAPresente AS IN_AttestationTVAPresente,
12/08/2026 Batik_WS_Com_Mob 196
Partie 4 › Collection de procédures › LIB_Traitements › Code
Intervention.IN_NoteInterne AS IN_NoteInterne,
Intervention.IN_Titre AS IN_Titre,
Intervention.IN_RefInterne AS IN_RefInterne,
Intervention.IN_RefExterne AS IN_RefExterne,
Intervention.IN_IDSociete,
Lieu.LI_PKID AS LI_PKID,
Lieu.LI_CodeLieu AS LI_CodeLieu,
Lieu.LI_IDAdresse AS LI_IDAdresse,
Lieu.LI_CleType,
Lieu.LI_CodeAcces AS LI_CodeAcces,
Lieu.LI_Badge AS LI_Badge,
Lieu.LI_Interphone AS LI_Interphone,
Lieu.LI_Note AS LI_Note,
AdLieu.AD_PKID AS AdLieu_PKID,
AdLieu.AD_Etiquette AS AdLieu_Etiquette,
AdLieu.AD_Adresse AS AdLieu_Adresse,
AdLieu.AD_CodePostal AS AdLieu_CodePostal,
AdLieu.AD_Ville AS AdLieu_Ville,
Demandeur.PE_Nom AS PE_Nom,
Demandeur.PE_Prenom,
Collaborateur.CO_Nom AS NomSuiviPar,
Collaborateur.CO_Prenom AS PrenomSuiviPar,
Collaborateur.CO_TelMobile AS TelMobSuiviPar,
Societe.SO_Nom
FROM
Intervention INNER JOIN Dossier ON Intervention.IN_IDDossier=Dossier.DO_PKID
,Intervention LEFT OUTER JOIN Lieu ON Intervention.IN_IDLieu = Lieu.LI_PKID
,Intervention LEFT OUTER JOIN Client ON Intervention.IN_IDClient = Client.CL_PKID
,Lieu LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse = AdLieu.AD_PKID
,Client LEFT OUTER JOIN Adresse AdClient ON Client.CL_IDAdressePrincipale =
AdClient.AD_PKID
,Intervention INNER JOIN Intervention_Collaborateur ON Intervention.IN_PKID =
Intervention_Collaborateur.IC_IDIntervention
,Intervention LEFT OUTER JOIN Personne Demandeur ON Intervention.IN_IDDemandeur =
Demandeur.PE_PKID
,Intervention LEFT OUTER JOIN Collaborateur ON Intervention.IN_IDSuiviPar=Collaborateur.CO_PKID
,Intervention LEFT OUTER JOIN Societe ON Intervention.IN_IDSociete = Societe.SO_PKID
WHERE
Intervention.IN_PKID NOT IN (SELECT RDV_Planning.RV_IdInter FROM RDV_Planning WHERE
RDV_Planning.Archive=0)
]
//Construction de la clause WHERE qui sera ensuite ajoutée dans la requête de recherche
//Une Intervention non planifiée à par définition :
// pas de RDV associé
// Un statut différent de "Terminé" ou "Attente"
// Est attribuée à l'utilisateur du mobile qui fait la requête
saRQ +="AND Intervention_Collaborateur.IC_IDCollaborateur=" + gstContexte.stUser.nIdCollab
saRQ +="AND Intervention.IN_CleEtat IN (" + gstContexte.sLstEtatsInter +")"
sErreur = ConstruitTableauInterventions(saRQ,"",Faux,tblRDV)
RENVOYER sErreur
FAIRE
sErreur ="E" + ExceptionInfo(errComplet)
TraceDEBUG("ERREUR dans RechercheInterventionsNonPlannifiées : " + sErreur)
12/08/2026 Batik_WS_Com_Mob 197
Partie 4 › Collection de procédures › LIB_Traitements › Code
RENVOYER sErreur
FIN
Procédure globale RechercheListeRubModeleMail
PROCÉDURE RechercheListeRubModeleMail(nIdModeleMail est un entier sur 8 octets,CorpEmailDoc est un
Document, SujetEmailDoc est un Document,...
TermeRapportEmail est un STJSONRubriqueRapport, TermeRapport est un STJSONRubriqueRapport)
tbMotCleSpec est un tableau de STJSONMembreRubRapport
tabToutesRub est un tableau de STJSONMembreRubRapport
saRQModeleMail est une chaîne ANSI = [
SELECT * FROM MailModele WHERE MM_PKID =
]
saRQModeleMail += nIdModeleMail
sdRqModele est une Source de Données
SI PAS HExécuteRequêteSQL(sdRqModele,gcnxReplica,saRQModeleMail) ALORS
RENVOYER Faux
SINON
CorpEmailDoc = sdRqModele.MM_MsgDoc
SujetEmailDoc = sdRqModele.MM_Sujet
SI sdRqModele.MM_Extra <> "" ALORS
Désérialise(tbMotCleSpec,sdRqModele.MM_Extra,psdJSON)
POUR TOUT stUnMot DE tbMotCleSpec
SI stUnMot:TypeMembre <> "" ALORS
stUnMot:Type = stUnMot:TypeMembre //Pour compatibilite dans le mobile
FIN
FIN
FIN
FIN
TermeRapport.ListeTerme = ChargeListeRubDoc()
SI TermeRapport.ListeTerme..Occurrence > 0 ALORS
TableauTrie(TermeRapportEmail:ListeTerme,ttMembre,"Groupe;Ordre")
ConstructionTbRubBaseRapport(TermeRapport,tabToutesRub,SujetEmailDoc,Vrai)
ConstructionTbRubBaseRapport(TermeRapport,tabToutesRub,CorpEmailDoc)
FIN
TermeRapportEmail.ListeTerme = tabToutesRub
ConstructionTbRubEnvoyerMob(TermeRapport,tabToutesRub,TermeRapportEmail.ListeTerme,CorpEmailDoc,Vrai,
tbMotCleSpec)
RENVOYER Vrai
Procédure globale RecupereContexte
PROCÉDURE RecupereContexte(stData est une ST_MOB_DATA)
bufRes est un Buffer
nIdUser est un entier sur 8 octets = stData.saJSON
QUAND EXCEPTION DANS
stContexte est un ST_CONTEXTE
stContexte.stUser <= gstContexte.stUser
//Récupération de l'id du statut du rdv qui a pour valeur 99
saRQest une chaîne ANSI
sdRec est une Source de Données
saRQ= "SELECT * FROM ParametreApplication WHERE PAP_Code='ParamApp' "
12/08/2026 Batik_WS_Com_Mob 198
Partie 4 › Collection de procédures › LIB_Traitements › Code
SI HExécuteRequêteSQL(sdRec,gcnxReplica,saRQ) ALORS
SI HLitPremier(sdRec) ALORS
SI sdRec.PAP_Valeur <> "" ALORS
Désérialise(stContexte.stUser.ParamApp,sdRec.PAP_Valeur,psdJSON)
FIN
FIN
FIN
SI gstContexte.stUser.nIdProfil > 0 ALORS
saRQ2 est une chaîne ANSI =
"SELECT AED_CleAcces , AED_Acces FROM AccesEtDroit WHERE AccesEtDroit.AED_IdRole = "
saRQ2 += gstContexte.stUser.nIdProfil+" AND AED_CleAcces IN ('"+cGestion_Envoi_Email+"','"+
cGestion_Creation_Rp+"')"
sdRec2 est une Source de Données
SI HExécuteRequêteSQL(sdRec2,gcnxReplica,saRQ2) ALORS
POUR TOUT sdRec2
SI sdRec2.AED_CleAcces = cGestion_Envoi_Email ALORS
stContexte.stUser.bDroit_EnvoiEmail = sdRec2.AED_Acces
FIN
SI sdRec2.AED_CleAcces = cGestion_Creation_Rp ALORS
stContexte.stUser.bDroit_CreationRapport = sdRec2.AED_Acces
FIN
FIN
FIN
FIN
//Par Compabilité à supprimer par la suite
<COMPILE SI Configuration="Webservice_ISIS">
stContexte.stUser.bDroit_AnnulationRDV = Faux
// a revoir si on modifie l'application de bureau afin de mettre ce paramètre dynamique
<SINON>
stContexte.stUser.bDroit_AnnulationRDV = Vrai
<FIN>
stContexte.stUser.ParamApp.bDroit_CouleurRDV = Vrai
// a revoir si on modifie l'application de bureau afin de mettre ce paramètre dynamique
stContexte.stUser.ParamApp.bDroit_HeureDejRDV = Vrai
// a revoir si on modifie l'application de bureau afin de mettre ce paramètre dynamique
Sérialise(stContexte,bufRes,psdJSON)
TraceDEBUG("bufREs : " + bufRes)
RENVOYER "R" + bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
RENVOYER bufRes
FIN
Procédure globale RecupererChampMailModele
PROCÉDURE RecupererChampMailModele(stData est une ST_MOB_DATA)
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO(" RecupererChampMailModele ")
stParam est un STJSONInfoModeleMailMob
Désérialise(stParam,stData.saJSON,psdJSON)
bufRes est un Buffer
sErreur est une chaîne = ConstruireListeChampModeleEmail(stParam,bufRes)
12/08/2026 Batik_WS_Com_Mob 199
Partie 4 › Collection de procédures › LIB_Traitements › Code
SI sErreur="" ALORS
bufRes ="R" + bufRes
SINON
bufRes ="E" + sErreur
FIN
TraceINFO("Durée (ms) : " + ChronoFin())
TraceINFO("JSON ---------------------------------")
TraceINFO(bufRes)
TraceINFO("--------------------------------------")
RENVOYER bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale RecupererChampRapportInter
PROCÉDURE RecupererChampRapportInter(stData est une ST_MOB_DATA)
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO(" RecupererChampRapportInter ")
stParam est un ST_REQ_LISTE_Chp_Rapport
Désérialise(stParam,stData.saJSON,psdJSON)
//Construction de la réponse (tableau de STJSONMembreRubRapport)
tabRubMobile est un tableau de STJSONMembreRubRapport
bufRes est un Buffer
sErreur est une chaîne = ContruireListeChamps(tabRubMobile,stParam)
SI sErreur="" ALORS
Sérialise(tabRubMobile,bufRes,psdJSON)
bufRes ="R" + bufRes
SINON
bufRes ="E" + sErreur
FIN
TraceINFO("Durée (ms) : " + ChronoFin())
TraceINFO("JSON ---------------------------------")
TraceINFO(bufRes)
TraceINFO("--------------------------------------")
RENVOYER bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale RecupererIdClbRDVDroitConsultation
PROCÉDURE RecupererIdClbRDVDroitConsultation()
bufRes est un Buffer
bDroitTout, bDroitUniqSoc, bDroitSocS, bDroitEqp sont des booléens
nIdCollab est un entier sur 8 octets
TraceINFO("Recherche id clb droit de consulter ")
12/08/2026 Batik_WS_Com_Mob 200
Partie 4 › Collection de procédures › LIB_Traitements › Code
// Recherche de droits
SI gstContexte:tbaDroitsAcces[cGestion_A_PL_SOC_PRCP]..Existe = Vrai _ET_ gstContexte:tbaDroitsAcces[
cGestion_A_PL_SOC_PRCP] ALORS
bDroitUniqSoc = Vrai
FIN
SI gstContexte:tbaDroitsAcces[cGestion_A_PL_SOC]..Existe = Vrai _ET_ gstContexte:tbaDroitsAcces[
cGestion_A_PL_SOC] ALORS
bDroitSocS = Vrai
FIN
SI gstContexte:tbaDroitsAcces[cGestion_A_PL_EQ]..Existe = Vrai _ET_ gstContexte:tbaDroitsAcces[
cGestion_A_PL_EQ] ALORS
bDroitEqp = Vrai
FIN
SI bDroitUniqSoc ET bDroitSocS ET bDroitEqp ALORS
bDroitTout = Vrai
FIN
nIdCollab = gstContexte.stUser.nIdCollab
saReqClb est une chaîne ANSI = [
SELECT CO_PKID, CO_nom, CO_Prenom FROM Collaborateur
]
saWhere est une chaîne ANSI = [
WHERE CO_Actif = 1 AND CO_AccesMobile = 1
]
saCompl est une chaîne ANSI
SI bDroitTout ALORS
//rien
SINON SI bDroitUniqSoc ALORS
saCompl = " INNER JOIN Utilisateur ON Utilisateur.UT_IDCollaborateur = CO_PKID "
saWhere +=
" AND UT_IDSocietePrincipale IN (SELECT UT_IDSocietePrincipale FROM Utilisateur WHERE
UT_IDCollaborateur = "
+nIdCollab+")"
SINON SI bDroitSocS ALORS
saCompl = " INNER JOIN Societe_Collaborateur ON SC_IDCollaborateur = CO_PKID "
saWhere +=
" AND SC_IDCSociete IN (SELECT SC_IDCSociete FROM Societe_Collaborateur WHERE SC_IDCollaborateur =
"
+nIdCollab+")"
SINON SI bDroitEqp ALORS
saCompl = " INNER JOIN Equipe_Collaborateur ON Equipe_Collaborateur.EC_IDCollaborateur = CO_PKID "
saWhere +=
" AND EC_IDEquipe IN (SELECT EC_IDEquipe FROM Equipe_Collaborateur WHERE EC_IDCollaborateur ="+
nIdCollab+")"
SINON SI PAS bDroitTout ALORS
saReqClb = ""
FIN
SI saReqClb <> "" ALORS
saReqClb += saCompl + saWhere
sdColb est une Source de Données
TraceRequete(saReqClb)
SI PAS HExécuteRequêteSQL(sdColb,gcnxReplica,hRequêteDéfaut,saReqClb) ALORS
bufRes="E"+ErreurInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
RENVOYER bufRes
SINON
tbIdClb est un tableau de ST_IdRDVClbDroitC
POUR TOUT sdColb
stClb est un ST_IdRDVClbDroitC
stClb.nIdClb = sdColb.CO_PKID
stClb.sNomPrenom = sdColb.CO_nom+" "+sdColb.CO_Prenom
12/08/2026 Batik_WS_Com_Mob 201
Partie 4 › Collection de procédures › LIB_Traitements › Code
TableauAjoute(tbIdClb,stClb)
FIN
Sérialise(tbIdClb,bufRes,psdJSON)
bufRes ="R" + bufRes
TraceINFO("bufREs : " + bufRes)
RENVOYER bufRes
FIN
SINON
bufRes ="R" + bufRes
TraceINFO("bufREs : " + bufRes)
RENVOYER bufRes
FIN
Procédure globale RecupererImgRp
PROCÉDURE RecupererImgRp()
//Donne au mobile demandeur l'ID et la description JSON du premier document non lu à récupérer
TraceINFO("RecupererImgRp ")
QUAND EXCEPTION DANS
rqPhoto est une Requête SQL =
[
SELECT * FROM TOMOB WHERE TM_CMD = 'DOC_Rp'
]
SI HExécuteRequête(rqPhoto) ALORS
dhDPurge2 est une DateHeure = DateHeureSys()
sResRepTemp est une chaîne ANSI
<COMPILE SI Configuration = "WS_COM_MOBILE" OU Configuration = "Debug WS_COM_MOBILE">
sResRepTemp = ComplèteRep(fRepExe())+"TEMP\"
<SINON>
sResRepTemp = ComplèteRep(fRepWeb())+"TEMP\"
<FIN>
TraceINFO("Rep temp : "+sResRepTemp)
POUR TOUT rqPhoto
saInfoTOMOB est une chaîne ANSI = rqPhoto.TM_JSON
vInfoVariant est un Variant = JSONVersVariant(saInfoTOMOB)
nIdInter est un entier sur 8 octets = vInfoVariant.nInterID
sExtension est une chaîne ANSI = fExtraitChemin(vInfoVariant.saNom,
fExtension)
sNomPhoto est une chaîne ANSI = ComplèteRep(sResRepTemp+nIdInter)+
vInfoVariant.saDocGUID+sExtension
bufImg est un Buffer = rqPhoto.TM_Buffer
SI nIdInter > 0 ALORS
SI fRepCrée(sResRepTemp+nIdInter) ALORS
SI PAS fSauveBuffer(sNomPhoto, bufImg) ALORS
TraceINFO("Erreur dans l'enregistrement de la photo : "+ErreurInfo(errMessage
))
FIN
SINON
TraceINFO("Erreur dans l'enregistrement de la photo : "+ErreurInfo(errMessage))
FIN
SINON
TraceINFO("Document introuvable")
FIN
12/08/2026 Batik_WS_Com_Mob 202
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
//Réalise une purge des documents non lu à destination des mobiles
rqPurge2 est une Requête SQL =
[
DELETE FROM TOMOB WHERE TM_Date < {pDate} AND TM_CMD='DOC_Rp'
]
rqPurge2.pDate=dhDPurge2
HExécuteRequête(rqPurge2)
FIN
FAIRE
TraceINFO("Erreur dans la procedure RecupererImgRp")
FIN
Procédure globale RecupererRDVAutreClb
PROCÉDURE RecupererRDVAutreClb(stData est une ST_MOB_DATA)
bufRes est un Buffer
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO("RecupererRDVAutreClb ")
tbLRDV est un tableau de ST_RDV_INTER_V2
sErreur est une chaîne
sErreur = ListeRDV_V2(stData,tbLRDV,Faux)
SI sErreur<>"" ALORS
RENVOYER sErreur
FIN
Sérialise(tbLRDV,bufRes,psdJSON)
bufRes="R" + bufRes
RENVOYER bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale RecupereUneIntervention
PROCÉDURE RecupereUneIntervention(stData est une ST_MOB_DATA)
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO("RecupereUneIntervention ")
stParam est un ST_REQ_LISTE_RDV
Désérialise(stParam,stData.saJSON,psdJSON)
saRQ est une chaîne=[
SELECT
Dossier.DO_IDClient AS DO_IDClient,
12/08/2026 Batik_WS_Com_Mob 203
Partie 4 › Collection de procédures › LIB_Traitements › Code
Dossier.DO_IDTypeDossier AS DO_IDTypeDossier,
Dossier.DO_Titre AS DO_Titre,
Dossier.DO_IDStatut AS DO_IDStatut,
Dossier.DO_RefInterne AS DO_RefInterne,
Dossier.DO_RefExterne AS DO_RefExterne,
Client.CL_Nom AS CL_Nom,
Client.CL_Tel AS CL_Tel,
Client.CL_Fax AS CL_Fax,
AdClient.AD_PKID AS AdClient_PKID,
AdClient.AD_Etiquette AS AdClient_Etiquette,
AdClient.AD_Ligne_1 AS AdClient_Ligne_1,
AdClient.AD_Ligne_2 AS AdClient_Ligne_2,
AdClient.AD_Ligne_3 AS AdClient_Ligne_3,
AdClient.AD_Ligne_4 AS AdClient_Ligne_4,
AdClient.AD_Ligne_5 AS AdClient_Ligne_5,
AdClient.AD_CodePostal AS AdClient_CodePostal,
AdClient.AD_Ville AS AdClient_Ville,
Intervention.IN_PKID AS IN_PKID,
Intervention.IN_IDTypeIntervention AS IN_IDTypeIntervention,
Intervention.IN_IDEtatIntervention AS IN_IDEtatIntervention,
Intervention.IN_IDSuiviPar AS IN_IDSuiviPar,
Intervention.IN_IDDossier AS IN_IDDossier,
Intervention.IN_IDDemandeur AS IN_IDDemandeur,
Intervention.IN_IDClient AS IN_IDClient,
Intervention.IN_IDLieu AS IN_IDLieu,
Intervention.IN_Description AS IN_Description,
Intervention.IN_AttestationTVAPresente AS IN_AttestationTVAPresente,
Intervention.IN_NoteInterne AS IN_NoteInterne,
Intervention.IN_Titre AS IN_Titre,
Intervention.IN_RefInterne AS IN_RefInterne,
Intervention.IN_RefExterne AS IN_RefExterne,
Intervention.IN_IDSociete,
Lieu.LI_PKID AS LI_PKID,
Lieu.LI_CodeLieu AS LI_CodeLieu,
Lieu.LI_IDAdresse AS LI_IDAdresse,
Lieu.LI_IDType AS LI_IDType,
Lieu.LI_CodeAcces AS LI_CodeAcces,
Lieu.LI_Badge AS LI_Badge,
Lieu.LI_Interphone AS LI_Interphone,
Lieu.LI_Note AS LI_Note,
AdLieu.AD_PKID AS AdLieu_PKID,
AdLieu.AD_Etiquette AS AdLieu_Etiquette,
AdLieu.AD_Ligne_1 AS AdLieu_Ligne_1,
AdLieu.AD_Ligne_2 AS AdLieu_Ligne_2,
AdLieu.AD_Ligne_3 AS AdLieu_Ligne_3,
AdLieu.AD_Ligne_4 AS AdLieu_Ligne_4,
AdLieu.AD_Ligne_5 AS AdLieu_Ligne_5,
AdLieu.AD_CodePostal AS AdLieu_CodePostal,
AdLieu.AD_Ville AS AdLieu_Ville
FROM
Intervention LEFT OUTER JOIN (Lieu LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse =
AdLieu.AD_PKID ) ON Intervention.IN_IDLieu = Lieu.LI_PKID,
Intervention INNER JOIN
(Dossier LEFT OUTER JOIN (Client LEFT OUTER JOIN Adresse AdClient ON
Client.CL_IDAdressePrincipale = AdClient.AD_PKID) ON Dossier.DO_IDClient = Client.CL_PKID ) ON
Intervention.IN_IDDossier = Dossier.DO_PKID
WHERE
IN_PKID={pIdInter}
]
saRQ=Remplace(saRQ,"{pIdInter}",stParam.nIdInter )
12/08/2026 Batik_WS_Com_Mob 204
Partie 4 › Collection de procédures › LIB_Traitements › Code
//Construction de la réponse (tableau de ST_RDV)
tblRDV est un tableau de ST_RDV_INTER
bufRes est un Buffer
sErreur est une chaîne = ConstruitTableauInterventions(saRQ,"",Faux,tblRDV)
SI sErreur="" ALORS
Sérialise(tblRDV,bufRes,psdJSON)
bufRes ="R" + bufRes
SINON
bufRes ="E" + sErreur
FIN
TraceINFO("Durée (ms) : " + ChronoFin())
TraceINFO("JSON ---------------------------------")
TraceINFO(bufRes)
TraceINFO("--------------------------------------")
RENVOYER bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale RecupereUneIntervention_V2
PROCÉDURE RecupereUneIntervention_V2(stData est une ST_MOB_DATA)
QUAND EXCEPTION DANS
ChronoDébut()
TraceINFO("RecupereUneIntervention ")
stParam est un ST_REQ_LISTE_RDV
Désérialise(stParam,stData.saJSON,psdJSON)
saRQ est une chaîne=[
SELECT
Dossier.DO_IDClient AS DO_IDClient,
Dossier.DO_CleType,
Dossier.DO_Titre AS DO_Titre,
Dossier.DO_CleStatut,
Dossier.DO_RefInterne AS DO_RefInterne,
Dossier.DO_RefExterne AS DO_RefExterne,
Client.CL_Nom AS CL_Nom,
Client.CL_Tel AS CL_Tel,
Client.CL_Fax AS CL_Fax,
Client.CL_Email AS CL_Email,
AdClient.AD_PKID AS AdClient_PKID,
AdClient.AD_Etiquette AS AdClient_Etiquette,
AdClient.AD_Adresse AS AdClient_Adresse,
AdClient.AD_CodePostal AS AdClient_CodePostal,
AdClient.AD_Ville AS AdClient_Ville,
Intervention.IN_PKID AS IN_PKID,
Intervention.IN_CleType,
Intervention.IN_CleEtat,
Intervention.IN_IDSuiviPar AS IN_IDSuiviPar,
Intervention.IN_IDDossier AS IN_IDDossier,
Intervention.IN_IDDemandeur AS IN_IDDemandeur,
Intervention.IN_IDClient AS IN_IDClient,
Intervention.IN_IDLieu AS IN_IDLieu,
Intervention.IN_Description AS IN_Description,
12/08/2026 Batik_WS_Com_Mob 205
Partie 4 › Collection de procédures › LIB_Traitements › Code
Intervention.IN_AttestationTVAPresente AS IN_AttestationTVAPresente,
Intervention.IN_NoteInterne AS IN_NoteInterne,
Intervention.IN_Titre AS IN_Titre,
Intervention.IN_RefInterne AS IN_RefInterne,
Intervention.IN_RefExterne AS IN_RefExterne,
Intervention.IN_IDSociete,
Intervention.IN_NumDevis,
Intervention.IN_DateDevis,
Lieu.LI_PKID AS LI_PKID,
Lieu.LI_CodeLieu AS LI_CodeLieu,
Lieu.LI_IDAdresse AS LI_IDAdresse,
Lieu.LI_CleType,
Lieu.LI_CodeAcces AS LI_CodeAcces,
Lieu.LI_Badge AS LI_Badge,
Lieu.LI_Interphone AS LI_Interphone,
Lieu.LI_Note AS LI_Note,
AdLieu.AD_PKID AS AdLieu_PKID,
AdLieu.AD_Etiquette AS AdLieu_Etiquette,
AdLieu.AD_Adresse AS AdLieu_Adresse,
AdLieu.AD_CodePostal AS AdLieu_CodePostal,
AdLieu.AD_Ville AS AdLieu_Ville,
Collaborateur.CO_Nom AS NomSuiviPar,
Collaborateur.CO_Prenom AS PrenomSuiviPar,
Collaborateur.CO_TelMobile AS TelMobSuiviPar,
Collaborateur.CO_Email AS SuiviEmail,
Societe.SO_Nom
FROM
Intervention LEFT OUTER JOIN (Lieu LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse =
AdLieu.AD_PKID ) ON Intervention.IN_IDLieu = Lieu.LI_PKID,
Intervention INNER JOIN
(Dossier LEFT OUTER JOIN (Client LEFT OUTER JOIN Adresse AdClient ON
Client.CL_IDAdressePrincipale = AdClient.AD_PKID) ON Dossier.DO_IDClient = Client.CL_PKID ) ON
Intervention.IN_IDDossier = Dossier.DO_PKID,
Intervention LEFT OUTER JOIN Collaborateur ON Intervention.IN_IDSuiviPar=Collaborateur.CO_PKID,
Intervention LEFT OUTER JOIN Societe ON Intervention.IN_IDSociete = Societe.SO_PKID
WHERE
IN_PKID={pIdInter}
]
saRQ=Remplace(saRQ,"{pIdInter}",stParam.nIdInter )
saRqCR est une chaîne ANSI = [
SELECT
CompteRendu.CR_PKID,
CompteRendu.GUID AS CR_GUID,
CompteRendu.CR_DateHeureDebut,
CompteRendu.CR_DateHeureFin,
CompteRendu.CR_NoteCollaborateur,
CompteRendu.CR_NomSignataire,
CompteRendu.CR_NomSignataireTech,
CompteRendu.CR_NoteSignataire,
CompteRendu.CR_ReserveCommentaire,
CompteRendu.CR_DateHeureSignature,
CompteRendu.CR_Signature,
CompteRendu.CR_SignatureTech,
CompteRendu.CreationUser AS CR_CreationUser,
CompteRendu.CR_IDIntervention,
CompteRendu.CR_IDRdv,
CompteRendu.CR_CleTypeSignataire,
CompteRendu.CR_GUID_Rdv,
CompteRendu.CR_IDCollaborateur,
RDV_Collaborateur.RVC_GUID_Colb,
12/08/2026 Batik_WS_Com_Mob 206
Partie 4 › Collection de procédures › LIB_Traitements › Code
RDV_Planning.RV_Groupe,
RDV_Collaborateur.RVC_GUID_RDV,
Collaborateur.CO_Nom,
Collaborateur.CO_Prenom
FROM CompteRendu
INNER JOIN Collaborateur ON CO_PKID = CR_IDCollaborateur
INNER JOIN RDV_Collaborateur ON RDV_Collaborateur.RVC_GUID_Colb = Collaborateur.GUID
INNER JOIN RDV_Planning ON RDV_Planning.GUID = RDV_Collaborateur.RVC_GUID_RDV
WHERE
RDV_Planning.Archive=0 AND RDV_Collaborateur.Archive=0
AND RDV_Collaborateur.RVC_DateDeb = '{pDateDebut}'
AND RDV_Collaborateur.RVC_DateFin = '{pDateFin}'
AND RDV_Planning.RV_IdInter = {p_IdInter}
]
//saRqCR= Remplace(saRqCR,"{pIDCollaborateur}",stParam.nIdCollaborateur)
saRqCR = Remplace(saRqCR,"{pDateDebut}",stParam.saDateDebut)
saRqCR = Remplace(saRqCR,"{pDateFin}",stParam.saDateFin)
saRqCR = Remplace(saRqCR,"{p_IdInter}",stParam.nIdInter)
//Construction de la réponse (tableau de ST_RDV)
tbLRDV est un tableau de ST_RDV_INTER_V2
bufRes est un Buffer
sErreur est une chaîne = ConstruitTableauInterventions_V2(saRQ,saRqCR,Faux,Vrai,tbLRDV)
SI sErreur="" ALORS
Sérialise(tbLRDV,bufRes,psdJSON)
bufRes ="R" + bufRes
SINON
bufRes ="E" + sErreur
FIN
TraceINFO("Durée (ms) : " + ChronoFin())
TraceINFO("JSON ---------------------------------")
TraceINFO(bufRes)
TraceINFO("--------------------------------------")
RENVOYER bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale RecupListeParamMetiers
PROCÉDURE RecupListeParamMetiers()
bufRes est un Buffer
ChronoDébut()
QUAND EXCEPTION DANS
saRQ est une chaîne ANSI=[
SELECT * FROM ParametreMetier
]
sdParam est une Source de Données
stPr est un ST_PARAMETRE_METIER
tbParam est un tableau de ST_PARAMETRE_METIER
12/08/2026 Batik_WS_Com_Mob 207
Partie 4 › Collection de procédures › LIB_Traitements › Code
HExécuteRequêteSQL(sdParam,gcnxReplica,saRQ)
POUR TOUT sdParam
stPr.nIdParam =sdParam.PA_PKID
stPr.saCode =sdParam.PA_Code
stPr.saLib =sdParam.PA_Libelle
stPr.saVal =sdParam.PA_Valeur
stPr.nOrdre =sdParam.PA_Ordre
stPr.bSysteme =sdParam.PA_Systeme
stPr.bInvisible =sdParam.PA_Invisible
TableauAjoute(tbParam,stPr)
FIN
Sérialise(tbParam,bufRes,psdJSON)
RENVOYER "R" + bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale RecupListeParamMetiers_V2
PROCÉDURE RecupListeParamMetiers_V2(nIdUser est un entier sur 8 octets)
bufRes est un Buffer
ChronoDébut()
QUAND EXCEPTION DANS
saRQ est une chaîne ANSI=[
SELECT * FROM ParametreMetier
]
sdParam est une Source de Données
stPrest un ST_PARAMETRE_METIER_V2
tbParam est un tableau de ST_PARAMETRE_METIER_V2
HExécuteRequêteSQL(sdParam,gcnxReplica,saRQ)
POUR TOUT sdParam
stPr.nIdParam = sdParam.PA_PKID
stPr.saCode = sdParam.PA_Code
stPr.saLib = sdParam.PA_Libelle
stPr.saVal = sdParam.PA_Valeur
stPr.nOrdre = sdParam.PA_Ordre
stPr.bSysteme = sdParam.PA_Systeme
stPr.bInvisible = sdParam.PA_Invisible
stPr.saJson = sdParam.PA_Parametre
TableauAjoute(tbParam,stPr)
FIN
saRQParamApp est une chaîne ANSI =
"SELECT * FROM ParametreApplication WHERE PAP_Code='URL_TUTO' "
sdParamApp est une Source de Données
SI HExécuteRequêteSQL(sdParamApp,gcnxReplica,saRQParamApp) ALORS
SI HLitPremier(sdParamApp) ALORS
stPr.nIdParam = sdParamApp.PAP_PKID
stPr.saCode = sdParamApp.PAP_Code
stPr.saLib = sdParamApp.PAP_Description
stPr.saVal = sdParamApp.PAP_Valeur
stPr.nOrdre = 1
12/08/2026 Batik_WS_Com_Mob 208
Partie 4 › Collection de procédures › LIB_Traitements › Code
stPr.bSysteme = Vrai
stPr.bInvisible = Vrai
stPr.saJson = ""
TableauAjoute(tbParam,stPr)
FIN
FIN
//Modele de rapport
saRQRp est une chaîne ANSI=[
SELECT * FROM ModeleRapport WHERE MRP_EnvoiMob = 1
]
sdListeRp est une Source de Données
stRpest un ST_PARAMETRE_METIER_V2
HExécuteRequêteSQL(sdListeRp,gcnxReplica,saRQRp)
POUR TOUT sdListeRp
stRp.nIdParam = sdListeRp.MRP_PKID
stRp.saCode = cParam_ListeRapportMob
stRp.saLib = sdListeRp.MRP_Nom
TableauAjoute(tbParam,stRp)
FIN
//Modele de mail
saRQME est une chaîne ANSI=[
SELECT MM_PKID, MM_Nom FROM MailModele
]
sdListeME est une Source de Données
stME est un ST_PARAMETRE_METIER_V2
HExécuteRequêteSQL(sdListeME,gcnxReplica,saRQME)
POUR TOUT sdListeME
stME.nIdParam = sdListeME.MM_PKID
stME.saCode = cParam_ListeMailModele
stME.saLib = sdListeME.MM_Nom
TableauAjoute(tbParam,stME)
FIN
// Comptes email
saMSG est une chaîne ANSI
ParamEmailConfig est un tableau associatif de STParamEnvoiEmailPerso
(saMSG,ParamEmailConfig) = DonneListeConfigMail(nIdUser)
stConfigMail est un ST_PARAMETRE_METIER_V2
b est un entier
SI ParamEmailConfig..Occurrence > 0 ALORS
POUR TOUT config, saCle de ParamEmailConfig
b += 1
stConfigMail.saCode = "EMAIL_ENVOI"
stConfigMail.nIdParam = b
Sérialise(config,stConfigMail.saVal,psdJSON)
TableauAjoute(tbParam,stConfigMail)
FIN
FIN
Sérialise(tbParam,bufRes,psdJSON)
RENVOYER "R" + bufRes
FAIRE
bufRes ="E" + ExceptionInfo(errComplet)
TraceERREUR("bufREs : " + bufRes)
TraceDEBUG("Durée (ms) : " + ChronoFin())
RENVOYER bufRes
FIN
Procédure globale RemplirLigneSansTbModeleMail
PROCÉDURE RemplirLigneSansTbModeleMail(ListeMob est un tableau de STJSONMembreRubRapport,unTerme est un
12/08/2026 Batik_WS_Com_Mob 209
Partie 4 › Collection de procédures › LIB_Traitements › Code
STJSONMembreRubRapport, MonDoc est un Document)
saInfoV est une chaîne ANSI
sdRReq est une Source de Données
nSel, b sont des entiers
sADonnes est une chaîne ANSI
vInfoVariante est un Variant
CheminImg est une chaîne ANSI
TableauTrie(unTerme.ListeMembre,ttMembre+tccRespecteNumérique,"+Ordre")
SI unTerme:EnvoiMob ALORS
b = TableauCherche(ListeMob,tcLinéaire,"Rubrique;Utilisee",unTerme:Rubrique,Faux)
FIN
SI b > 0 ALORS
sADonnes = ListeMob[b].ListeDonnesMob
TraceINFO("Données mob : "+sADonnes)
FIN
SI sADonnes <> "" _ET_ unTerme:Type = "Tableau" ALORS
vInfoVariante = JSONVersVariant(sADonnes)
FIN
SI unTerme.GroupeApp = cRp_CR ALORS
// Requête dans la base de données , le compte rendu ne peuvent pas être modifiées par l'utilisateur
// donc le données ne sont pas récupérer à partir de données envoyés par le mobile
RqCompteRenduRemplirRapport(vInfoVariante,sdRReq)
FIN
POUR TOUT stTerme DE unTerme.ListeMembre
tabFragments est un tableau de docFragments = DocRecherche(MonDoc,stTerme.Rubrique,MotComplet+
SansCasse)
SI tabFragments..Occurrence > 0 ALORS
POUR c = 1 _À_ tabFragments.Occurrence
POUR TOUT UnEle DE vInfoVariante
SI stTerme:EnvoiMob ALORS
SI UnEle.bSelection ALORS
imgBuf est un Buffer
imgBuf = ""
saInfoV = ""
RechercheInfoDansVariantRapport(unTerme, stTerme, UnEle,imgBuf,saInfoV,sdRReq
,CheminImg)
nSel += 1
SI stTerme:TypeMembre = "ChpImage" OU stTerme:Type = "ChpImage"ALORS
tabFragments[c].Texte = " "
// SI imgBuf..Taille > 0 ALORS
// nLargPixCol est un entier = 100*NBPixelesXMilimetres
// transformer le milimetres dans pixels (nombre de pixeles par milimetres)
// elt est un docElément
<- DonneImgTableauRp(imgBuf,nLargPixCol)
// DocInsère(MonDoc,tabFragments[c]..PositionDébut, elt)
// SINON
// //tabFragments[c].Texte = " "
// FIN
SINON
tabFragments[c].Texte = TraitementSelonTypeRubRapportMob(stTerme,saInfoV)
FIN
SI Contient(stTerme:Rubrique,"UNIQUE") ALORS
SORTIR
FIN
12/08/2026 Batik_WS_Com_Mob 210
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
FIN
FIN
FIN
FIN
FIN
SI nSel > 0 ALORS
RENVOYER Vrai
FIN
RENVOYER Faux
Procédure globale RemplirLigneSansTbRapport
PROCÉDURE RemplirLigneSansTbRapport(unTerme est un STJSONMembreRubRapport, MonDoc est un Document,
vInfoVariante est un Variant,CheminImg est une chaîne ANSI)
saInfoV est une chaîne ANSI
sdRReq est une Source de Données
nSel est un entier
SI unTerme.GroupeApp = cRp_CR ALORS
// Requête dans la base de données , le compte rendu ne peuvent pas être modifiées par l'utilisateur
// donc le données ne sont pas récupérer à partir de données envoyés par le mobile
RqCompteRenduRemplirRapport(vInfoVariante,sdRReq)
FIN
POUR TOUT stTerme DE unTerme.ListeMembre
tabFragments est un tableau de docFragments = DocRecherche(MonDoc,stTerme.Rubrique,MotComplet+
SansCasse)
SI tabFragments..Occurrence > 0 ALORS
POUR c = 1 _À_ tabFragments.Occurrence
POUR TOUT UnEle DE vInfoVariante
SI stTerme:EnvoiMob ALORS
SI UnEle.bSelection ALORS
imgBuf est un Buffer
imgBuf = ""
saInfoV = ""
RechercheInfoDansVariantRapport(unTerme, stTerme, UnEle,imgBuf,saInfoV,sdRReq
,CheminImg)
nSel += 1
SI stTerme:TypeMembre = "ChpImage" OU stTerme:Type = "ChpImage"ALORS
SI imgBuf..Taille > 0 ALORS
nLargPixCol est un entier = 100*NBPixelesXMilimetres
// transformer le milimetres dans pixels (nombre de pixeles par
milimetres)
elt est un docElément <- DonneImgTableauRp(imgBuf,
nLargPixCol)
DocInsère(MonDoc,tabFragments[c]..PositionDébut, elt)
SINON
//tabFragments[c].Texte = " "
FIN
SINON
tabFragments[c].Texte = TraitementSelonTypeRubRapportMob(stTerme,saInfoV)
FIN
SI Contient(stTerme:Rubrique,"$UN") ALORS
SORTIR
12/08/2026 Batik_WS_Com_Mob 211
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
FIN
FIN
FIN
FIN
FIN
FIN
SI nSel > 0 ALORS
RENVOYER Vrai
FIN
RENVOYER Faux
Procédure globale RemplirLigneTableauRapportMob
PROCÉDURE RemplirLigneTableauRapportMob(unTerme est un STJSONMembreRubRapport, nIMin est un entier,
MonDoc est un Document,vInfoVariante est un Variant,CheminImg est une chaîne ANSI)
saInfoV est une chaîne ANSI
sdRReq est une Source de Données
nIndDebutPara est un entier
tabListeRubCol_1 est un tableau de entiers
tabListeRubCol_2 est un tableau de entiers
SI unTerme.GroupeApp = cRp_CR ALORS
// Requête dans la base de données , le compte rendu ne peuvent pas être modifiées par l'utilisateur
// donc le données ne sont pas récupérer à partir de données envoyés par le mobile
RqCompteRenduRemplirRapport(vInfoVariante,sdRReq)
FIN
POUR TOUT stTerme DE unTerme.ListeMembre
tabFragments est un tableau de docFragments = DocRecherche(MonDoc,stTerme.Rubrique,MotComplet+
SansCasse)
SI tabFragments..Occurrence > 0 ALORS
nColonne est un entier = tabFragments[1].Elément[1].Cellule..IndiceColonne
nLigne est un entier = tabFragments[1].Elément[1].Cellule..IndiceLigne
nIMax est un entier = nIMin
soit para <- tabFragments[1]..Paragraphe[1]
SI nIndDebutPara = 0 ALORS // Pour pouvoir savoir si un est toujours dans le même tableau
nIndDebutPara = para.Parent.Parent.Paragraphe.PositionDébut
FIN
SI para.Tableau = Null ALORS
RETOUR
FIN
SI nIndDebutPara = para.Parent.Parent.Paragraphe.PositionDébut ALORS
// moulinette faite pour savoir si on a est toujours dans la même colonne
SI CelluleAvecPlusiersRub(unTerme,para..Tableau..Cellules[nIMax,nColonne]..Contenu..Texte,
tabListeRubCol_2) ALORS
SI tabListeRubCol_1..Occurrence <= 0 ALORS
tabListeRubCol_1 = tabListeRubCol_2
CreationTableauIntDocRapport(unTerme,MonDoc, nIMin, vInfoVariante, CheminImg,
sdRReq)
SINON
SI PAS TableauCherche(tabListeRubCol_1,tcLinéaire,stTerme:Ordre) ALORS
CreationTableauIntDocRapport(unTerme,MonDoc, nIMin, vInfoVariante, CheminImg,
sdRReq)
tabListeRubCol_1 = tabListeRubCol_2
FIN
12/08/2026 Batik_WS_Com_Mob 212
Partie 4 › Collection de procédures › LIB_Traitements › Code
FIN
SINON
POUR TOUT UnEle DE vInfoVariante
SI stTerme:EnvoiMob ALORS
SI UnEle.bSelection ALORS
imgBuf est un Buffer
imgBuf = ""
saInfoV = ""
RechercheInfoDansVariantRapport(unTerme, stTerme, UnEle,imgBuf,saInfoV,
sdRReq,CheminImg)
SI stTerme:TypeMembre = "ChpImage" OU stTerme:Type = "ChpImage"ALORS
SI imgBuf..Taille > 0 ALORS
nLargPixCol est un entier = para..Tableau..Colonnes[nColonne]..
LargeurMillimètres*NBPixelesXMilimetres // transformer le
milimetres dans pixels (nombre de pixeles par milimetres)
elt est un docElément <- DonneImgTableauRp(imgBuf,
nLargPixCol)
cell est un docCellule <- para..Tableau..Cellules[nIMax,
nColonne]
SI elt..Image..Hauteur > 0 _ET_ elt.Image..Largeur > 0 ALORS
cell2 est un docLigne <- para..Tableau..
Lignes[nIMax]
cell2.Hauteur = elt..Image..Hauteur
cell3 est un docColonne <- para..Tableau..Colonnes[nColonne]
cell3..LargeurMillimètres = elt.Image..Largeur
FIN
para..Tableau..Cellules[nIMax,nColonne]..MiseEnPage..Alignement
= chCentre
DocInsère(MonDoc,cell..Contenu..PositionDébut, elt)
SINON
//para..Tableau..Cellules[nIMax,nColonne]..Contenu..Texte = " "
FIN
SINON
para..Tableau..Cellules[nIMax,nColonne]..Contenu..Texte =
TraitementSelonTypeRubRapportMob(stTerme,saInfoV)
FIN
nIMax += 1
SI Contient(stTerme:Rubrique,"$UN") ALORS
SORTIR
FIN
FIN
FIN
FIN
FIN
FIN
FIN
FIN
Procédure globale ReqRechercheIntervention
PROCÉDURE ReqRechercheIntervention(stData est une ST_MOB_DATA, saWhere est une chaîne ANSI)
stParam est un ST_REQ_LISTE_RDV
12/08/2026 Batik_WS_Com_Mob 213
Partie 4 › Collection de procédures › LIB_Traitements › Code
Désérialise(stParam,stData.saJSON,psdJSON)
saTxt est une chaîne = stParam.saTxt
//Construction de la clause WHERE qui sera ensuite ajoutée dans la requête de recherche
SI saWhere = "" ALORS
saWhere +=" ( Intervention.IN_RefInterne LIKE '%" + saTxt +"%'"
saWhere +=" OR Client.CL_Nom LIKE '%" + saTxt +"%'"
saWhere +=" OR Lieu.LI_CodeLieu LIKE '%" + saTxt +"%'"
saWhere +=" OR Demandeur.PE_Nom LIKE '%" + saTxt +"%'"
saWhere +=" ) "
FIN
saWhere += "AND Dossier.DO_CleStatut <> '"+cCle_DossierAnnule+"'"// Statut annulé
TraceINFO("Clause :" + saWhere)
//Construction de la requête de sélection
saRQ est une chaîne ANSI
saRQ=[
SELECT {TOP}
Intervention.IN_PKID AS IN_PKID,
Client.CL_Nom AS CL_Nom,
Intervention.IN_RefInterne AS IN_RefInterne,
Intervention.IN_Description,
Intervention.IN_NoteInterne,
Intervention.IN_RefExterne,
Intervention.IN_CleType,
Intervention.IN_CleEtat,
Intervention.IN_Titre,
Intervention.IN_IDSociete,
Lieu.LI_CodeLieu AS LI_CodeLieu,
AdLieu.AD_PKID AS AdLieu_PKID,
AdLieu.AD_Etiquette AS AdLieu_Etiquette,
AdLieu.AD_Adresse,
AdLieu.AD_CodePostal AS AdLieu_CodePostal,
AdLieu.AD_Ville AS AdLieu_Ville,
Demandeur.PE_Nom AS PE_Nom,
Demandeur.PE_Prenom
FROM
(
( Intervention LEFT OUTER JOIN Client ON Intervention.IN_IDClient = Client.CL_PKID)
INNER JOIN Dossier ON Dossier.DO_PKID = Intervention.IN_IDDossier
LEFT OUTER JOIN Lieu ON Intervention.IN_IDLieu = Lieu.LI_PKID
LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse = AdLieu.AD_PKID)
LEFT OUTER JOIN Personne Demandeur ON Intervention.IN_IDDemandeur = Demandeur.PE_PKID
WHERE
(
{Clause}
)
]
saRQ=Remplace(saRQ,"{Clause}",saWhere)
SI stParam.saTOP<>"" ALORS
saRQ=Remplace(saRQ,"{TOP}","TOP " + stParam.saTOP)
SINON
saRQ=Remplace(saRQ,"{TOP}","")
FIN
12/08/2026 Batik_WS_Com_Mob 214
Partie 4 › Collection de procédures › LIB_Traitements › Code
RENVOYER saRQ
Procédure globale RqCompteRenduRemplirRapport
PROCÉDURE RqCompteRenduRemplirRapport(vInfoVariante est un Variant,sdRReqCR est une Source de Données)
saGUIDS est une chaîne ANSI
POUR TOUT UnEle DE vInfoVariante
SI UnEle.bSelection ALORS
saGUIDS += [" , "]+"'"+UnEle.saGuidCR +"'"
FIN
FIN
SI saGUIDS = "" ALORS
RENVOYER Faux
FIN
saRqCR est une chaîne ANSI = [
SELECT
CompteRendu.CR_PKID,
CompteRendu.GUID AS CR_GUID,
CompteRendu.CR_DateHeureDebut,
CompteRendu.CR_DateHeureFin,
CompteRendu.CR_NoteCollaborateur,
CompteRendu.CR_NomSignataire,
CompteRendu.CR_NomSignataireTech,
CompteRendu.CR_NoteSignataire,
CompteRendu.CR_DevisConforme,
CompteRendu.CR_AvecReserve,
CompteRendu.CR_ReserveCommentaire,
CompteRendu.CR_DateHeureSignature,
CompteRendu.CR_Signature,
CompteRendu.CR_SignatureTech,
CompteRendu.CR_IDTypeSignataire,
ParametreMetier.PA_Libelle AS CR_PA_Type
FROM CompteRendu
LEFT OUTER JOIN ParametreMetier ON ParametreMetier.PA_CLE = CompteRendu.CR_CleTypeSignataire and
CompteRendu.CR_CleTypeSignataire <> ''
WHERE
CR_GUID IN ({p_GUIDS})
]
saRqCR = Remplace(saRqCR,"{p_GUIDS}",Remplace(saGUIDS, RC,""))
SI PAS HExécuteRequêteSQL(sdRReqCR,hRequêteDéfaut,saRqCR) ALORS
FIN
Procédure globale SupprimerToutesRubRapportMob
PROCÉDURE SupprimerToutesRubRapportMob(tabToutesRub est un tableau de STJSONMembreRubRapport,MonDoc est
un Document)
tabFragments est tableau de docFragment
POUR i = 1 _À_ tabToutesRub..Occurrence
stUnTerme est un STJSONMembreRubRapport = tabToutesRub[i]
tabFragments = DocRecherche(MonDoc,stUnTerme.Rubrique,MotComplet+SansCasse)
12/08/2026 Batik_WS_Com_Mob 215
Partie 4 › Collection de procédures › LIB_Traitements › Code
POUR c = 1 _À_ tabFragments.Occurrence
tabFragments[c].Texte= ""
FIN
POUR TOUT stTermes DE stUnTerme.ListeMembre
tabFragments = DocRecherche(MonDoc,stTermes.Rubrique,MotComplet+SansCasse)
POUR h = 1 _À_ tabFragments.Occurrence
tabFragments[h].Texte= ""
FIN
FIN
FIN
Procédure globale TestCnxReplica
PROCÉDURE PRIVÉE TestCnxReplica()
sd est une Source de Données
saRes est une chaîne ANSI
// Déclaration dynamique du (ou des) fichier(s) utilisé(s) dans la requête
// HPasse("Planning_RDV",gsaPass)
//SI HDéclareExterne("Planning_RDV.FIC", "Planning_RDV", gcnxReplica) = Faux ALORS
// saRes=ErreurInfo(errComplet)
// RENVOYER saRes
//FIN
SI HExécuteRequêteSQL(sd,gcnxReplica,hRequêteDéfaut,"SELECT COUNT(*) as Nb FROM RDV_Planning") _ET_
HLitPremier(sd) ALORS
saRes=sd.NB
SINON
saRes=ErreurInfo(errComplet)
FIN
HAnnuleDéclaration(sd)
RENVOYER saRes
Procédure globale TraiteDocumentRapportMob
PROCÉDURE TraiteDocumentRapportMob(tabToutesRubest un tableau de STJSONMembreRubRapport, ListeMob est
un tableau de STJSONMembreRubRapport,MonDoc est un Document,saCheminImg est une chaîne ANSI )
c est un entier
sAInfoRemp est une chaîne ANSI
TableauTrie(tabToutesRub,ttMembre+tccRespecteNumérique,"+Rubrique;+Ordre")
sNomRub est une chaîne ANSI
tabFragments est tableau de docFragment
POUR i = 1 _À_ tabToutesRub..Occurrence
unTerme est un STJSONMembreRubRapport = tabToutesRub[i]
sAInfoRemp = ""
SI sNomRub <> unTerme.Rubrique ALORS
// moyen de savoir si la rubrique a été déjà traite, une rubrique peuvent être pressent
plusieurs fois dans un modèle ,
// toutes les rubriques seront traites dans la variable tabfragments
SI unTerme:Type = "Tableau" ALORS
QUAND EXCEPTION DANS
POUR c = 1 _À_ tabToutesRub..Occurrence
SI unTerme.Rubrique = tabToutesRub[c].Rubrique _ET_ tabToutesRub[c].ListeMembre..
Occurrence > 0 ALORS
tabFragments = DocRecherche(MonDoc,tabToutesRub[c].ListeMembre[1].Rubrique,
12/08/2026 Batik_WS_Com_Mob 216
Partie 4 › Collection de procédures › LIB_Traitements › Code
MotComplet+SansCasse)
SI tabFragments.Occurrence > 0 ALORS
TraiteLigneTableauRapportMob(ListeMob,tabToutesRub[c], MonDoc,saCheminImg
)
FIN
FIN
FIN
FAIRE
TraceERREUR("Erreur dans la création du rapport "+c+"fragments "+tabFragments.
Occurrence+ " Condition unTerme:Type = Tableau"+RC+ExceptionInfo())
FIN
SINON
QUAND EXCEPTION DANS
tabFragments = DocRecherche(MonDoc,unTerme.Rubrique,MotComplet+SansCasse)
SI tabFragments..Occurrence > 0 ALORS
SI tabFragments.Occurrence > 1 ALORS
POUR c = 1 _À_ tabFragments.Occurrence
sAInfoRemp = RechercheDonneesSimpleRapportMob(ListeMob,
unTerme)
tabFragments[c].Texte= sAInfoRemp
TraceERREUR(sAInfoRemp)
FIN
SINON
sAInfoRemp = RechercheDonneesSimpleRapportMob(ListeMob,unTerme)
tabFragments[1].Texte= sAInfoRemp
TraceERREUR(sAInfoRemp)
//DocRemplace(MonDoc, unTerme:Rubrique, sAInfoRemp,MotComplet+SansCasse)
FIN
FIN
FAIRE
TraceERREUR("Erreur dans la création du rapport "+c+"fragments "+tabFragments.
Occurrence+ " sans Condition"+RC+ExceptionInfo())
FIN
FIN
FIN
sNomRub= unTerme.Rubrique
FIN
Procédure globale TraiteEmailBuffer
PROCÉDURE TraiteEmailBuffer(tabRubMobile est un tableau de STJSONMembreRubRapport, ListeMob est un
tableau de STJSONMembreRubRapport,MonDoc est un Document)
c est un entier
sAInfoRemp est une chaîne ANSI
TableauTrie(tabRubMobile,ttMembre+tccRespecteNumérique,"+Rubrique;+Ordre")
sNomRub est une chaîne ANSI
POUR i = 1 _À_ tabRubMobile..Occurrence
unTerme est un STJSONMembreRubRapport = tabRubMobile[i]
sAInfoRemp = ""
SI sNomRub <> unTerme.Rubrique ALORS
// moyen de savoir si la rubrique a été déjà traite, une rubrique peuvent être pressent
plusieurs fois dans un modèle ,
// toutes les rubriques seront traites dans la variable tabfragments
SI unTerme.Type = "Tableau" _ET_ unTerme.GroupeApp <> cRp_Inter ALORS
12/08/2026 Batik_WS_Com_Mob 217
Partie 4 › Collection de procédures › LIB_Traitements › Code
QUAND EXCEPTION DANS
tabFragments est tableau de docFragment = DocRecherche(MonDoc,unTerme.Rubrique,
MotComplet+SansCasse)
c = 1
POUR c = 1 _À_ tabFragments.Occurrence
CreationTbdansModeleEmail(ListeMob,tabRubMobile[i],MonDoc)
//tabFragments[c].Texte = HTMLVersTexte(sAInfoRemp)
//tabFragments[c].Texte = sAInfoRemp
FIN
SI tabFragments..Occurrence <= 0 ALORS
SI unTerme.ListeMembre..Occurrence > 0 ALORS
tabFragments = DocRecherche(MonDoc,unTerme.ListeMembre[1].Rubrique,MotComplet
+SansCasse)
SI tabFragments.Occurrence > 0 ALORS
RemplirLigneSansTbModeleMail(ListeMob,unTerme, MonDoc)
FIN
FIN
FIN
FAIRE
TraceERREUR("Erreur dans la création du modele mail "+ExceptionInfo())
FIN
SINON
QUAND EXCEPTION DANS
tabFragments est tableau de docFragment = DocRecherche(MonDoc,unTerme.Rubrique,
MotComplet+SansCasse)
SI tabFragments..Occurrence > 0 ALORS
c = 1
POUR c = 1 _À_ tabFragments.Occurrence
sAInfoRemp = RechercheDonneesSimpleRapportMob(ListeMob,unTerme
)
tabFragments[c].Texte= sAInfoRemp
FIN
FIN
FAIRE
TraceERREUR("Erreur dans la création du modele email "+ExceptionInfo())
FIN
FIN
FIN
sNomRub= unTerme.Rubrique
FIN
Procédure globale TraiteLigneTableauRapportMob
PROCÉDURE TraiteLigneTableauRapportMob(ListeMob est un tableau de STJSONMembreRubRapport, unTerme est
un STJSONMembreRubRapport, MonDoc est un Document,CheminImg est une chaîne ANSI)
sADonnes est une chaîne ANSI
b est un entier
nColonne, nLigne, nIMax, nIMin,nSel sont des entiers
bUnAjout est un booléen
tabFragments est tableau de docFragment
TableauTrie(unTerme.ListeMembre,ttMembre+tccRespecteNumérique,"+Ordre")
SI unTerme:EnvoiMob ALORS
12/08/2026 Batik_WS_Com_Mob 218
Partie 4 › Collection de procédures › LIB_Traitements › Code
b = TableauCherche(ListeMob,tcLinéaire,"Rubrique;Utilisee",unTerme:Rubrique,Faux)
FIN
SI b > 0 ALORS
sADonnes = ListeMob[b].ListeDonnesMob
TraceINFO("Données mob : "+sADonnes)
FIN
SI sADonnes <> "" _ET_ unTerme:Type = "Tableau" ALORS
vInfoVariante est un Variant = JSONVersVariant(sADonnes)
ListeMob[b].Utilisee = Vrai
// on commence pour ajouter le nombre de ligne dans le tableau
SI unTerme.ListeMembre..Occurrence > 0 ALORS
tabFragments = DocRecherche(MonDoc,unTerme.ListeMembre[1].Rubrique,MotComplet+SansCasse)
SI tabFragments..Occurrence <= 0 _ET_ unTerme.ListeMembre..Occurrence > 1 ALORS
tabFragments = DocRecherche(MonDoc,unTerme.ListeMembre[2].Rubrique,MotComplet+SansCasse)
FIN
SI tabFragments..Occurrence > 0 ALORS
soit para <- tabFragments[1]..Paragraphe[1]
SI para.Tableau = Null ALORS
bUnAjout = Faux
SINON
bUnAjout = Vrai
FIN
SI bUnAjout ALORS
nColonne = tabFragments[1].Elément[1].Cellule..IndiceColonne
nLigne = tabFragments[1].Elément[1].Cellule..IndiceLigne
nIMax = nLigne
nIMin = nLigne
POUR TOUT Ele DE vInfoVariante
SI Ele.bselection ALORS
nSel += 1
SI nIMax > nLigne ALORS
Ajoute(para.Tableau.Lignes)
FIN
nIMax += 1
SI Contient(unTerme.ListeMembre[1].Rubrique,"$UN") ALORS
SORTIR
FIN
FIN
FIN
FIN
FIN
FIN
//Âpres l'ajout des toutes les lignes un ajoute l'information
SI bUnAjout ALORS
RemplirLigneTableauRapportMob(unTerme,nIMin,MonDoc,vInfoVariante,CheminImg)
SI nSel > 0 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
SINON
RENVOYER RemplirLigneSansTbRapport(unTerme, MonDoc,vInfoVariante,CheminImg)
FIN
FIN
12/08/2026 Batik_WS_Com_Mob 219
Partie 4 › Collection de procédures › LIB_Traitements › Code
RENVOYER Faux
Procédure globale TraitementSelonTypeRubRapportMob
PROCÉDURE TraitementSelonTypeRubRapportMob(stMembre, sADonnes est une chaîne ANSI)
sTexte est une chaîne = " "
dhUnDateHeure est une DateHeure
bUnBoolean est un booléen
sType est une chaîne ANSI = stMembre:TypeMembre
SI sType = "" ALORS
sType = stMembre:Type
FIN
SI sADonnes..Taille < 8 _ET_ (stMembre:TypeMembre = "ChpSimpleDate" OU stMembre:TypeMembre =
"ChpSimpleDateHeure") ALORS
RENVOYER sTexte
FIN
QUAND EXCEPTION DANS
SI stMembre:GroupeApp = cRp_Extra ALORS
SELON stMembre:Type
CAS typDate
dhUnDateHeure = sADonnes
sTexte=DateVersChaîne(dhUnDateHeure,"JJ/MM/AAAA")
CAS typHeure
dhUnDateHeure = sADonnes
sTexte=HeureVersChaîne(dhUnDateHeure,"HH:mm")
CAS typTexte
sTexte=sADonnes
CAS typSélect
sTexte=bUnBoolean=Vrai ? "Oui" SINON "Non"
AUTRE CAS
sTexte = sADonnes
FIN
SINON
SELON sType
CAS "ChpSimpleDate" : dhUnDateHeure = sADonnes
CAS "ChpSimpleDateHeure": dhUnDateHeure = sADonnes
CAS "ChpSimpleBooleen" : bUnBoolean = sADonnes
FIN
SELON sType
CAS "ChpSimpleChaine" : sTexte=sADonnes
CAS "ChpSimpleRTF" : sTexte=RTFVersTexte(sADonnes)
CAS "ChpSimpleDate" : sTexte=DateVersChaîne(dhUnDateHeure,"JJ/MM/AAAA")
CAS "ChpSimpleDateHeure": sTexte=DateVersChaîne(dhUnDateHeure,"JJ/MM/AAAA HH:mm")
CAS "ChpSimpleReel" : sTexte=sADonnes
CAS "ChpSimpleBooleen" : sTexte=bUnBoolean=Vrai ? "Oui" SINON "Non"
AUTRE CAS
sTexte = sADonnes
FIN
FIN
RENVOYER sTexte
FAIRE
RENVOYER sTexte
FIN
Procédure globale WhereRechercheIntDroitDossier
PROCÉDURE WhereRechercheIntDroitDossier(stData est une ST_MOB_DATA, saGUIDColb est une chaîne ANSI)
12/08/2026 Batik_WS_Com_Mob 220
Partie 4 › Collection de procédures › LIB_Traitements › Code
stParam est un ST_REQ_LISTE_RDV
Désérialise(stParam,stData.saJSON,psdJSON)
saTxt est une chaîne = stParam.saTxt
saLstIdDossier est une chaîne ANSI
saWhere est une chaîne ANSI
saWhere +=" ( Intervention.IN_RefInterne LIKE '%" + saTxt +"%'"
saWhere +=" OR Client.CL_Nom LIKE '%" + saTxt +"%'"
saWhere +=" OR Lieu.LI_CodeLieu LIKE '%" + saTxt +"%'"
saWhere +=" OR Demandeur.PE_Nom LIKE '%" + saTxt +"%'"
saWhere +=" ) "
bufRes est un Buffer
saReq est une chaîne ANSI = [
select STRING_AGG(RDV_Planning.RV_IdDossier, ',') AS id_list
FROM
(
( RDV_Planning
INNER JOIN RDV_Collaborateur ON RDV_Collaborateur.RVC_GUID_Colb = {pGUIDColb} AND
RDV_Collaborateur.Archive = 0
LEFT OUTER JOIN Intervention on Intervention.IN_PKID = RDV_Planning.RV_IdInter
LEFT OUTER JOIN Client ON Intervention.IN_IDClient = Client.CL_PKID )
LEFT OUTER JOIN Lieu ON Intervention.IN_IDLieu = Lieu.LI_PKID
LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse = AdLieu.AD_PKID)
LEFT OUTER JOIN Personne Demandeur ON Intervention.IN_IDDemandeur = Demandeur.PE_PKID
WHERE
(
{Clause} And RDV_Planning.Archive = 0
)
]
saReq=Remplace(saReq,"{Clause}",saWhere)
saReq=Remplace(saReq,"{pGUIDColb}",saGUIDColb)
sd est une Source de Données
// TraceRequete(saRQ)
SI PAS HExécuteRequêteSQL(sd,gcnxReplica,hRequêteDéfaut,saReq) ALORS
bufRes="E"+ErreurInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
RENVOYER bufRes
SINON
POUR TOUT sd
saLstIdDossier = sd.id_list
FIN
FIN
SI saLstIdDossier <> "" ALORS
saWhere+= "AND Intervention.IN_IDDossier IN ("+saLstIdDossier+")"
RENVOYER saWhere
SINON
RENVOYER ""
FIN
Procédure globale WhereRechercheIntDroitRDV
PROCÉDURE WhereRechercheIntDroitRDV(stData est une ST_MOB_DATA, saGUIDColb est une chaîne ANSI)
stParam est un ST_REQ_LISTE_RDV
Désérialise(stParam,stData.saJSON,psdJSON)
saTxt est une chaîne = stParam.saTxt
12/08/2026 Batik_WS_Com_Mob 221
Partie 4 › Collection de procédures › LIB_Traitements › Code
| saLstIdInt | est une chaîne ANSI | | | |
| ------------------------------------------ | ------------------- | --- | ---------------------- | --- |
| saWhere | est une chaîne ANSI | | | |
| saWhere +=" ( Intervention.IN_RefInterne | | | LIKE '%" + saTxt +"%'" | |
| saWhere +=" OR Client.CL_Nom | | | LIKE '%" + saTxt +"%'" | |
| saWhere +=" OR Lieu.LI_CodeLieu | | | LIKE '%" + saTxt +"%'" | |
| saWhere +=" OR Demandeur.PE_Nom | | | LIKE '%" + saTxt +"%'" | |
saWhere +=" ) "
| bufRes | est un Buffer | | | |
| ------ | ------------------- | --- | --- | --- |
| saReq | est une chaîne ANSI | = [ | | |
select STRING_AGG(RDV_Planning.RV_IdDossier, ',') AS id_list
FROM
(
( RDV_Planning
INNER JOIN RDV_Collaborateur ON RDV_Collaborateur.RVC_GUID_Colb = {pGUIDColb} AND
RDV_Collaborateur.Archive = 0
LEFT OUTER JOIN Intervention on Intervention.IN_PKID = Planning_RDV.PL_IDIntervention
LEFT OUTER JOIN Client ON Intervention.IN_IDClient = Client.CL_PKID )
LEFT OUTER JOIN Lieu ON Intervention.IN_IDLieu = Lieu.LI_PKID
LEFT OUTER JOIN Adresse AdLieu ON Lieu.LI_IDAdresse = AdLieu.AD_PKID)
LEFT OUTER JOIN Personne Demandeur ON Intervention.IN_IDDemandeur = Demandeur.PE_PKID
WHERE
(
{Clause} And RDV_Planning.Archive = 0
)
]
| saReq = Remplace(saReq,"{Clause}",saWhere) | | | | |
| ------------------------------------------------ | --- | --- | --- | --- |
| saReq = Remplace(saReq,"{pGUIDColb}",saGUIDColb) | | | | |
| sd est une Source de Données | | | | |
// TraceRequete(saRQ)
SI PAS HExécuteRequêteSQL(sd,gcnxReplica,hRequêteDéfaut,saReq) ALORS
bufRes="E"+ErreurInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
RENVOYER bufRes
SINON
POUR TOUT sd
saLstIdInt = sd.id_list
FIN
FIN
SI saLstIdInt <> "" ALORS
saWhere+= "AND Intervention.IN_PKID IN ("+saLstIdInt+")"
RENVOYER saWhere
SINON
RENVOYER ""
FIN
Procédure globale WhereRechercheIntDroitSoc
PROCÉDURE WhereRechercheIntDroitSoc(stData est une ST_MOB_DATA, nIdCollab est un entier sur 8 octets)
stParam est un ST_REQ_LISTE_RDV
Désérialise(stParam,stData.saJSON,psdJSON)
| saTxt | est une chaîne | = stParam.saTxt | | |
| --------------------------- | ------------------- | --------------- | ---------------- | --- |
| saLstIdSoc | est une chaîne ANSI | | | |
| saWhere est une chaîne ANSI | | | | |
| 12/08/2026 | | | Batik_WS_Com_Mob | 222 |
Partie 4 › Collection de procédures › LIB_Traitements › Code
bufRes est un Buffer
saReq_2 est une chaîne ANSI = [
select SC_IDCSociete from Societe_Collaborateur where SC_IDCollaborateur =
]
saReq_2 += nIdCollab
sd_2 est une Source de Données
// TraceRequete(saRQ)
SI PAS HExécuteRequêteSQL(sd_2,gcnxReplica,hRequêteDéfaut,saReq_2) ALORS
bufRes="E"+ErreurInfo(errComplet)
TraceDEBUG("bufREs : " + bufRes)
RENVOYER bufRes
SINON
POUR TOUT sd_2
saLstIdSoc+= [","] + sd_2.SC_IDCSociete
FIN
FIN
SI saLstIdSoc <> "" ALORS
//Construction de la clause WHERE qui sera ensuite ajoutée dans la requête de recherche
saWhere +=" ( Intervention.IN_RefInterne LIKE '%" + saTxt +"%'"
saWhere +=" OR Client.CL_Nom LIKE '%" + saTxt +"%'"
saWhere +=" OR Lieu.LI_CodeLieu LIKE '%" + saTxt +"%'"
saWhere +=" OR Demandeur.PE_Nom LIKE '%" + saTxt +"%'"
saWhere +=" ) AND Intervention.IN_IDSociete in ("+saLstIdSoc+")"
FIN
RENVOYER saWhere
12/08/2026 Batik_WS_Com_Mob 223
Partie 4 › Collection de procédures › LIB_ProcéduresGlobales2 › Code
LIB_ProcéduresGlobales2
Code
Procédure globale DebuteSession
PROCÉDURE DebuteSession(Token est une chaîne ANSI)
//res est une chaîne ANSI = WebserviceParamètre("Token",paramAvecDécodage)
// Utilisez la commande WebserviceParamètre() pour récupérer les paramètres du point d'entrée du
Webservice REST associé à cette procédure.
// Consultez l'aide de WebserviceParamètre pour plus d'informations.
WebserviceEcritCodeHTTP(400,"Super")
RENVOYER "Recu :[" +Token + "]"
12/08/2026 Batik_WS_Com_Mob 224
Partie 4 › Collection de procédures › LIB_Structures › Code
LIB_Structures
Code
Déclaration de LIB_Structures
CONSTANT
cREP_LIC_OK ="E0000"
cERR_DATA_VIDE ="E1001"
cERR_FORMAT_JSON ="E1002"
cERR_CLI_INCONNU ="E2001"
cERR_CLI_LIC ="E2002"
cERR_CLI_CONFIG ="E2003" //Configuration incomplète
cERR_CLI_BADAPI ="E2004" //La clé API n'est pas correcte
cERR_LIC_INCONNUE ="E3001"
cERR_LIC_INACTIVE="E3002"
cERR_LIC_EXPIREE ="E3003"
cERR_LIC_ATTRIBUEE ="E3004"
cERR_LIC_AUCUNE ="E3005"
cERR_CMD_INCONNUE="E4001"
cERR_HF_BLOCAGE ="E5001"
cERR_SRV ="E6001" //Erreur générique du serveur
//Erreur fonctionnelle
cERR_RDV_PLANIFIER ="E7001"
cERR_EXCEPTION ="E9000"
FIN
ST_ContexteMobile est une Structure
saToken est une chaîne ANSI
saIdMobile est une chaîne ANSI
saBaseData est une chaîne ANSI
saBaseSync est une chaîne ANSI
saIdClient est une chaîne ANSI
bAuthentifié est un booléen
dhAuthentification est une DateHeure
saNumPort est une chaîne ANSI
nIdGroupe est un entier sur 8 octets
nNbConnexions est un entier
saNomUser est une chaîne ANSI
saFichierLog est une chaîne ANSI
stUser est un ST_PROFIL_UTILISATEUR
sLstEtatsInter est une chaîne ANSI
//Liste des ParametreMetier.PA_pkid des États des Interventions non planifiées que l'on peut
transmettre aux mobile
sLstDocTypeAcces est une chaîne ANSI
//Paramètres Métiers
bParamChargés est un booléen
12/08/2026 Batik_WS_Com_Mob 225
Partie 4 › Collection de procédures › LIB_Structures › Code
sParamJson est une chaîne ANSI
tbaDroitsAcces est un tableau associatif de booléens
FIN
ST_TAB_PARAM est une Structure
TbaRoleContact est un tableau associatif (*, "Contact", wlChaîneAnsi) de chaînes
TbaRoleCntctLieu est un tableau associatif (*, "Contact", wlChaîneAnsi) de chaînes
TbaCivilite est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaTypeDossier est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaStatutDossier est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaTypeLieu est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaDestDemande est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaPriorite est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaTypeInter est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaEtatInter est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaStatutRDV est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaTypAction est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaTypActivite est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaTypAdresse est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaStatutClient est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaTypClient est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaCategorieDoc est un tableau associatif (*, *, wlChaîneAnsi) de chaînes
TbaCategorieDoc2 est un tableau associatif (*, *, wlChaîneAnsi) d'entiers sur 8 octets
TbaCategorieDoc3 est un tableau associatif (*, *, wlChaîneAnsi) de STParametreCategDoc
BDroitProfil est un tableau associatif (*, *, wlChaîneAnsi) de STListeDroit
FIN
ST_PROFIL_UTILISATEUR est une Structure
saGuid est une chaîne ANSI
nIdUser est un entier sur 8 octets
nIdCollab est un entier sur 8 octets
saNom est une chaîne ANSI
saPrenom est une chaîne ANSI
saSociete est une chaîne ANSI
nPond100 est un entier
nIdGroupe est un entier
saProfil est une chaîne ANSI
nIdProfil est un entier sur 8 octets
bDroit_AnnulationRDV est un booléen
bDroit_EnvoiEmail est un booléen
bDroit_CreationRapport est un booléen
ParamApp est un ST_ParamApp
FIN
ST_CONTEXTE est une Structure
tbParam est un tableau de ST_PARAMETRE_METIER
stUser est un ST_PROFIL_UTILISATEUR
FIN
ST_ParamApp est une Structure
bDroit_AnnulationRDV est un booléen
bDroit_CouleurRDV est un booléen
bDroit_HeureDejRDV est un booléen
bNumDevis_RDV est un booléen
bRefInt_RDV est un booléen
bRefExt_RDV est un booléen
FIN
//Structures utilisée pour envoyer la liste des Interventions au mobiles
ST_ADRESSE est une Structure
nID est un entier sur 8 octets
saEtiq est une chaîne ANSI
saLig est une chaîne ANSI
saCP est une chaîne ANSI
12/08/2026 Batik_WS_Com_Mob 226
Partie 4 › Collection de procédures › LIB_Structures › Code
saVil est une chaîne ANSI
FIN
ST_PERSONNE_LIEU est une Structure
saNom est une chaîne ANSI
saPren est une chaîne ANSI
saTFix est une chaîne ANSI
saTMob est une chaîne ANSI
nID est un entier sur 8 octets
saRole est une chaîne ANSI
saEtage est une chaîne ANSI
saEtiquette est une chaîne ANSI
saLot est une chaîne ANSI
saNote est une chaîne ANSI
saEmail est une chaîne ANSI
bDemand est un booléen
bDonneurOrdre est un booléen
FIN
ST_NOTE est une Structure
saGuid est une chaîne ANSI
nIdInter est un entier sur 8 octets
saNote est une chaîne ANSI
saAuteur est une chaîne ANSI
nIdAuteur est un entier sur 8 octets <zombie> //
saDate est une chaîne ANSI
saType est une chaîne ANSI
nIdUsr est un entier sur 8 octets
FIN
ST_COMPTERENDU_V2 est une Structure
saGuidCR est une chaîne ANSI
saDebut est une chaîne ANSI
saFin est une chaîne ANSI
saNoteCollab est une chaîne ANSI
saNoteClient est une chaîne ANSI
saDateSignature est une chaîne ANSI
saReserveCommentaire est une chaîne ANSI
nIdInter est un entier sur 8 octets
saSignataire est une chaîne ANSI
saGuidRDV est une chaîne ANSI
nIdCollab est un entier sur 8 octets
nIdUser est un entier sur 8 octets
bImgSignature est un booléen
bImgSignatureTechest un booléen
saNomCollaborateur est une chaîne ANSI
nIDTypeSignataireest un entier sur 8 octets
nIdGroupeRDV est un entier
bufImgSignature est un Buffer
FIN
ST_TEMPS est une Structure
saGuid est une chaîne ANSI
nIdInter est un entier sur 8 octets
nIdTps est un entier sur 8 octets
nIdCollab est un entier sur 8 octets
nIdRDV est un entier sur 8 octets
saNumInter est une chaîne ANSI
saLibelle est une chaîne ANSI
saHeureDebut est une chaîne ANSI
saHeureFin est une chaîne ANSI
nPond100 est un entier
nNbMinutes est un entier
nIdTypeTps est un entier sur 8 octets
saGuidRdv est une chaîne ANSI
FIN
ST_TEMPS_PASSE est une Structure
12/08/2026 Batik_WS_Com_Mob 227
Partie 4 › Collection de procédures › LIB_Structures › Code
saGuid est une chaîne ANSI
nIdTypeTps est un entier sur 8 octets
nTemps est un entier
saDateHeureDeb est une chaîne ANSI
saDateHeureFin est une chaîne ANSI
bModifiable est un booléen
FIN
ST_TEMPS_PASSE_RDV est une Structure
nIdRDV est un entier sur 8 octets
//nIdInterventionest un entier sur 8 octets
//saGuidRdv est une chaîne ANSI
//nIdCollab est un entier sur 8 octets
tblTemps est un tableau de ST_TEMPS_PASSE
FIN
ST_PARAMETRE_METIER est une Structure
nIdParam est un entier sur 8 octets
saCode est une chaîne ANSI
saLib est une chaîne ANSI
saVal est une chaîne ANSI
nOrdre est un entier
bSysteme est un booléen
bInvisible est un booléen
FIN
ST_PARAMETRE_METIER_V2 est une Structure
nIdParam est un entier sur 8 octets
saCode est une chaîne ANSI
saLib est une chaîne ANSI
saVal est une chaîne ANSI
nOrdre est un entier
bSysteme est un booléen
bInvisible est un booléen
saJson est un chaîne ANSI
FIN
//Toute modif dans cette structure doit être reportée dans la structure ST_RDV_LOC du projet BeMobile
ST_COMPTERENDU est une Structure
saGuidCR est une chaîne ANSI
saDebut est une chaîne ANSI
saFin est une chaîne ANSI
saNoteCollab est une chaîne ANSI
saNoteClient est une chaîne ANSI
saDateSignature est une chaîne ANSI
nIdInter est un entier sur 8 octets
saSignataire est une chaîne ANSI
saGuidRDV est une chaîne ANSI
nIdCollab est un entier sur 8 octets
nIdUser est un entier sur 8 octets
bufImgSignature est un Buffer
FIN
STCompteRenduRqListe_V2 est une Structure
saCR_GUID est une chaîne ANSI
saDateHeureDebut est une chaîne ANSI
saDateHeureFin est une chaîne ANSI
saNoteCollaborateur est une chaîne ANSI
saNoteSignataire est une chaîne ANSI
saReserveCommentaire est une chaîne ANSI
saDateHeureSignature est une chaîne ANSI
nRDV_PKID est une entier sur 8 octets
nIN_PKID est une entier sur 8 octets
saNomSignataire est une chaîne
saPL_GUID est une chaîne ANSI
nPL_IDCollaborateur est un entier sur 8 octets
nCR_CreationUser est un entier sur 8 octets
12/08/2026 Batik_WS_Com_Mob 228
Partie 4 › Collection de procédures › LIB_Structures › Code
bCR_Signature est un booléen
bCR_SignatureTech est un booléen
nIdGroupe est un entier
saNomCollaborateur est une chaîne
nIDTypeSignataire est un entier sur 8 octets
bufCR_Signature est un Buffer
FIN
STCompteRenduRqListe est une Structure
saCR_GUID est une chaîne ANSI
saDateHeureDebut est une chaîne ANSI
saDateHeureFin est une chaîne ANSI
saNoteCollaborateur est une chaîne ANSI
saNoteSignataire est une chaîne ANSI
saDateHeureSignature est une chaîne ANSI
nRDV_PKID est une entier sur 8 octets
nIN_PKID est une entier sur 8 octets
saNomSignataire est une chaîne
saPL_GUID est une chaîne ANSI
nPL_IDCollaborateur est un entier sur 8 octets
nCR_CreationUser est un entier sur 8 octets
bufCR_Signature est un Buffer
nIdGroupe est un entier sur 8 octets
FIN
ST_RDV_A_PLANIFIER est une Structure
nIdRdv est un entier sur 8 octets
saGuidRdv est une chaîne ANSI
nIdCollab est un entier sur 8 octets
nIdUser est un entier sur 8 octets
saDateHeureDeb est une chaîne ANSI
saDateHeureFin est une chaîne ANSI
nIDStatut est un entier sur 8 octets
FIN
ST_TELEPHONE est une Structure
saTelNum est une chaîne ANSI
saTelLib est une chaîne ANSI
FIN
ST_RDV_CONTACT est une Structure
nIdRdvCnt est un entier sur 8 octets
//nID est un entier sur 8 octets
saCivilite est une chaîne ANSI
saNom est une chaîne ANSI
saPrenom est une chaîne ANSI
saEmail est une chaîne ANSI
nIdRole est un entier sur 8 octets
saRole est une chaîne ANSI
saEtage est une chaîne ANSI
saLot est une chaîne ANSI
saEtiquette est une chaîne ANSI
saNote est une chaîne ANSI
bDonneurOrdre est un booléen
tbLTEL est un tableau de ST_TELEPHONE
FIN
// saGuid est une chaîne ANSI
// nRDV_PKID est un entier sur 8 octets
// nRDV_IDClb est un entier sur 8 octets
// nRDV_IDInt est un entier sur 8 octets
// nRDV_TypActID est un entier sur 8 octets
// nRDV_StatutID est un entier sur 8 octets
// saRDV_Obj est une chaîne ANSI
// saRDV_Dscrpt est une chaîne ANSI
// saRDV_DtDeb est une chaîne ANSI
// saRDV_DtFin est une chaîne ANSI
12/08/2026 Batik_WS_Com_Mob 229
Partie 4 › Collection de procédures › LIB_Structures › Code
//Toute modif dans cette structure doit être reportée dans la structure ST_INTER_LOC du projet BeMobile
ST_INTER est une Structure
nDos_IDCli est un entier sur 8 octets
saDos_Type est une chaîne ANSI
saDos_Tit est une chaîne ANSI
saDos_Etat est une chaîne ANSI
saDos_RfI est une chaîne ANSI
saDos_RfE est une chaîne ANSI
saCli_Nom est une chaîne ANSI
saCli_Tel est une chaîne ANSI
saCli_Fax est une chaîne ANSI
saCli_Email est une chaîne ANSI
stCli_Ad est un ST_ADRESSE
nInt_PKID est un entier sur 8 octets
saInt_Typ est une chaîne ANSI
saInt_Etat est une chaîne ANSI
nInt_IDSuiv est un entier sur 8 octets
saNomSuiviPar est une chaîne
saPrenomSuiviPar est une chaîne
saTelSuiviPar est une chaîne
saSuiviEmail est une chaîne ANSI
nInt_IDDos est un entier sur 8 octets
nInt_IDDem est un entier sur 8 octets
nInt_IDCli est un entier sur 8 octets
nInt_IDLieu est un entier sur 8 octets
nInt_IDSociete est un entier sur 8 octets
saInt_Descrip est une chaîne ANSI
bInt_AtTVA est un booléen
saInt_Note est une chaîne ANSI
saInt_Tit est une chaîne ANSI
saInt_RfI est une chaîne ANSI
saInt_RfE est une chaîne ANSI
saInt_NumDevis est une chaîne
saInt_DateDevis est une chaîne ANSI
saSoc_Nom est une chaîne ANSI
nLieu_PKID est un entier sur 8 octets
saLieu_CodeLieu est une chaîne ANSI
nLieu_IDAdresse est un entier sur 8 octets
saLieu_Type est une chaîne ANSI
saLieu_CodeAcces est une chaîne ANSI
bLieu_Badge est un booléen
bLieu_Interphone est un booléen
saLieu_Note est une chaîne ANSI
nAdLieu_PKID est un entier sur 8 octets
stLieu_Ad est un ST_ADRESSE
nDmd_PKIDest est un entier sur 8 octets
saDmd_Civ est une chaîne ANSI
saDmd_Nom est une chaîne ANSI
saDmd_Prenom est une chaîne ANSI
saDmd_TelFixe est une chaîne ANSI
saDmd_TelMobile est une chaîne ANSI
saDmd_Email est une chaîne ANSI
saDmd_Role est une chaîne ANSI
nDmd_IDAdresse est un entier sur 8 octets
nDmd_IDClient est un entier sur 8 octets
saDmd_Note est une chaîne ANSI
saDmd_Fax est une chaîne ANSI
tblPerLieu est un tableau de ST_PERSONNE_LIEU
12/08/2026 Batik_WS_Com_Mob 230
Partie 4 › Collection de procédures › LIB_Structures › Code
tblNote est un tableau de ST_NOTE
// tblTps est un Tableau de ST_TEMPS
FIN
ST_RDV est une Structure
nPKID est un entier sur 8 octets
nIDGroupe est un entier sur 8 octets
nIDSociete est un entier sur 8 octets
nIDEquipe est un entier sur 8 octets
nIDCollaborateur est un entier sur 8 octets
nIDDossier est un entier sur 8 octets
nIDIntervention est un entier sur 8 octets
nIDTypeActivite est un entier sur 8 octets
nIDStatut est un entier sur 8 octets
saStatut est une chaîne ANSI
saDescription est une chaîne ANSI
saDateDebut est une chaîne ANSI
saDateFin est une chaîne ANSI
bSuperposable est un booléen
bPrive est un booléen
bGrouper est un booléen
saObjet est une chaîne ANSI
nIDLieu est une chaîne
saGUID est une chaîne ANSI
tblContact est un tableau de ST_RDV_CONTACT
stCompteRendu est un ST_COMPTERENDU
FIN
ST_RDV_V2 est une Structure
nPKID est un entier sur 8 octets
nIDGroupe est un entier sur 8 octets
nIDSociete est un entier sur 8 octets
nIDEquipe est un entier sur 8 octets
nIDCollaborateur est un entier sur 8 octets
nIDDossier est un entier sur 8 octets
nIDIntervention est un entier sur 8 octets
nIDTypeActivite est un entier sur 8 octets
nIDStatut est un entier sur 8 octets
saStatut est une chaîne ANSI
saDescription est une chaîne ANSI
saDateDebut est une chaîne ANSI
saDateFin est une chaîne ANSI
bSuperposable est un booléen
bPrive est un booléen
bGrouper est un booléen
saObjet est une chaîne ANSI
nIDLieu est une chaîne
saGUID est une chaîne ANSI
saGUID_RDV est une chaîne ANSI
bSAV est un booléen
bCR est un booléen
tblContact est un tableau de ST_RDV_CONTACT
stCompteRendu est un ST_COMPTERENDU_V2
saNoteCollab est une chaîne ANSI
FIN
ST_RDV_INTER est une Structure
stRDV est un ST_RDV
stINTER est un ST_INTER
saRDV_TypAct est une chaîne ANSI
saRDV_Statut est une chaîne ANSI
saRDV_Civ est une chaîne ANSI
saRDV_Nom est une chaîne ANSI
saRDV_Pren est une chaîne ANSI
saRDV_Tel est une chaîne ANSI
saRDV_Role est une chaîne ANSI
12/08/2026 Batik_WS_Com_Mob 231
Partie 4 › Collection de procédures › LIB_Structures › Code
nRDV_IdCtact est un entier sur 8 octets
saRDV_Lieu est une chaîne ANSI
FIN
ST_RDV_INTER_V2 est une Structure
stRDV est un ST_RDV_V2
stINTER est un ST_INTER
saRDV_TypAct est une chaîne ANSI
saRDV_Statut est une chaîne ANSI
saRDV_Civ est une chaîne ANSI
saRDV_Nom est une chaîne ANSI
saRDV_Pren est une chaîne ANSI
saRDV_Tel est une chaîne ANSI
saRDV_Role est une chaîne ANSI
nRDV_IdCtact est un entier sur 8 octets
saRDV_Lieu est une chaîne ANSI
FIN
//Toute modif dans cette structure doit être reportée dans la structure ST_TABELEM_DOC du projet
BeMobile
ST_TABELEM_DOC est une Structure
nDC_PKID est un entier sur 8 octets
nDC_IdInter est un entier sur 8 octets
saDC_Nom est une chaîne ANSI
saDC_DteFic est une chaîne ANSI
saLibCat est une chaîne ANSI
saDocGuid est une chaîne ANSI
tblNotes est un tableau de ST_TABELEM_NOTEDOC
FIN
ST_TABELEM_NOTEDOC est une Structure
nDN_PKID est un entier sur 8 octets
saDN_Note est une chaîne ANSI
saDN_Date est une chaîne ANSI
nDN_Auteur est un entier sur 8 octets <zombie>
nDN_DOCPKID est un entier sur 8 octets
saNomAuteur est une chaîne ANSI
saGUID est une chaîne ANSI
nIdUsr est un entier sur 8 octets
FIN
//Structure lue dans le QRCode d'inscription
ST_MOB_INSCRIPTION est une Structure
saSrv est une chaîne ANSI
saPort est une chaîne ANSI
saIdCli est une chaîne ANSI
nIdClb est un entier sur 8 octets
nIdUsr est un entier sur 8 octets
saNom est une chaîne ANSI
saPren est une chaîne ANSI
FIN
ST_REQ_LISTE_RDV est une Structure
nIdCollaborateur est un entier sur 8 octets
saDateDebut est une chaîne ANSI
saDateFin est une chaîne ANSI
saTxt est une chaîne ANSI
saTOP est une chaîne ANSI
bSimple est un booléen
nIdInter est un entier sur 8 octets
FIN
ST_REQ_LISTE_TEMPS est une Structure
nIdCollaborateur est un entier sur 8 octets
saDateDebut est une chaîne ANSI
saDateFin est une chaîne ANSI
12/08/2026 Batik_WS_Com_Mob 232
Partie 4 › Collection de procédures › LIB_Structures › Code
saLstIdInter est une chaîne ANSI
FIN
ST_REQ_LISTE_TEMPS_PASSE est une Structure
nIdCollaborateur est un entier sur 8 octets
nIdrdv est un entier sur 8 octets
FIN
ST_REQ_LISTE_DOC est une Structure
nIdIntervention est un entier sur 8 octets
FIN
//Document
ST_DOC est une Structure
saNom est une chaîne ANSI
saType est une chaîne ANSI
nInterIDest un entier sur 8 octets
saNote est une chaîne ANSI
saDateCreat est une chaîne ANSI
nIdUser est un entier sur 8 octets
nDC_PKIDest un entier sur 8 octets
saDocGUID est une chaîne ANSI
nStatut est un entier
FIN
//Rapport
STJSONInfoRapportMob est une Structure
saGuid est une chaîne ANSI
saDate est une chaîne ANSI
nIdModele est un entier sur 8 octets
nIdInter est un entier sur 8 octets
saNomRapport est une chaîne ANSI
ListeMob est un tableau de STJSONMembreRubRapport
FIN
ST_REQ_LISTE_Chp_Rapport est une Structure
nIdCollaborateur est un entier sur 8 octets
nIdInter est un entier sur 8 octets
nIdModele est un entier sur 8 octets
FIN
STJSONMembreRubRapport est une Structure
nIdRub est un entier sur 8 octets
Nom est une chaîne
Rubrique est une chaîne
Description est une chaîne
Groupe est une chaîne
Type est une chaîne
Ordre est un réel
// Position dans le document , c'est unique est sert comme identifiant
MembreMob est une chaîne ANSI
EnvoiMob est un entier
BD est un entier
MembreEmailMob est une chaîne
TypeMembre est une chaîne
Utilisee est un booléen
// pour savoir si la données envoyés par le mobile a été déjà utilisé dans le document, une donné
peuvent être demande plusieurs fois dans le document (
img par exemple)
GroupeApp est une chaîne ANSI
MasqueSaisie est un booléen
Modifiable est un booléen
ListeDonnesMob est une chaîne ANSI
ListeDonnesBD est une chaîne ANSI
ListeMembre est un tableau de STJSONListeMembre
FIN
12/08/2026 Batik_WS_Com_Mob 233
Partie 4 › Collection de procédures › LIB_Structures › Code
STJSONListeMembre est une Structure
Nom est une chaîne
Rubrique est une chaîne
Membre est une chaîne
TypeMembre est une chaîne
LargeurCol est un réel
MembreMob est une chaîne ANSI
EnvoiMob est un entier
BD est un entier
MembreEmailMob est une chaîne
GroupeApp est une chaîne ANSI
InvisibleBO est un entier
Type est une chaîne
Ordre est un réel
// Position dans le document , c'est unique est sert comme identifiant
Utilisee est un booléen
// pour savoir si la données envoyés par le mobile a été déjà utilisé dans le document, une donné
peuvent être demande plusieurs fois dans le document (
img par exemple)
FIN
STJSONRubriqueRapport est une Structure
NomParamest une chaîne
ListeTerme est un tableau de STJSONMembreRubRapport
FIN
// Modele Mail
ST_ContactInter est une Structure
saNom est une chaîne ANSI
saRole est une chaîne ANSI
saType est une chaîne ANSI
saEmail est une chaîne ANSI
bDemd est un booléen
FIN
ST_ModeleMailRub est une Structure
saType est une chaîne ANSI
saGUID est une chaîne ANSI
Listerub est un tableau de STJSONMembreRubRapport
FIN
ST_ModeleMailComplet est une Structure
nIdInter est un entier sur 8 octets
nIdModele est un entier sur 8 octets
saType est une chaîne ANSI
saSujet est une chaîne ANSI
bufCorpsHTML est un Buffer
saGUID est une chaîne ANSI
tbPJ est un tableau de chaînes ANSI
tbPJID est un tableau de chaînes ANSI
tbDest est un tableau de chaînes ANSI
tbDestCC est un tableau de chaînes ANSI
tbDestCCI est un tableau de chaînes ANSI
stCompteMail est un STParamEnvoiEmailPerso
FIN
STJSONInfoModeleMailMob est une Structure
saGuid est une chaîne ANSI
saDate est une chaîne ANSI
nIdModele est un entier sur 8 octets
nIdInter est un entier sur 8 octets
stCompteMail est un STParamEnvoiEmailPerso
ListeMob est un tableau de STJSONMembreRubRapport
FIN
// Email
STParamEmail est une Structure
12/08/2026 Batik_WS_Com_Mob 234
Partie 4 › Collection de procédures › LIB_Structures › Code
sCompte est une chaîne
sEmail est une chaîne
FIN
STParamEnvoiEmail est une Structure
sLogin est une chaîne ANSI
sMdp est une chaîne ANSI
sAdresseServeur est une chaîne ANSI
sPortServeur est une chaîne ANSI
nCryptage est un entier
bufSignature est un Buffer
bEnCopieCachee est un booléen
sType est une chaîne ANSI
tabCC_CopieEmail est un tableau de chaînes ANSI
FIN
STParamEnvoiEmailPerso est une Structure
Compte est un STParamEmail
SMTP est un STParamEnvoiEmail
FIN
//Message externe communication avec le service
ST_MsgExterneMail est une Structure
nIdInter est un entier sur 8 octets
saSujet est une chaîne ANSI
bufCorp est un Buffer
saGUID est une chaîne ANSI
saAdrExp est une chaîne ANSI
saPJ est une chaîne ANSI
saDest est une chaîne ANSI
saDestCC est une chaîne ANSI
saDestCCI est une chaîne ANSI
bEnvoye est un booléen
nIdUser est un entier sur 8 octets
FIN
//STructure utilisée pour interroger le serveur de Licences
ST_WS_VERIF_LM est une Structure
saCodeClient est une chaîne ANSI
saLicence est une chaîne ANSI
saIdMobile est une chaîne ANSI
FIN
STParametreCategDoc est une Structure
sCodeDroit est une chaîne
sNomRepertoire est une chaîne
FIN
STDefDroitAcces est une Structure
bufCle est un Buffer
sBureau est une chaîne
sMobile est une chaîne
FIN
STElementDroitAcces est une Structure
sFichier est une chaîne
sRubrique est une chaîne
tabDefDroitAcces est un tableau de STDefDroitAcces
FIN
STListeDroit est une Structure
tabElementDroitAcces est un STElementDroitAcces
FIN
ST_IdRDVClbDroitC est une Structure
nIdClb est un entier sur 8 octets
12/08/2026 Batik_WS_Com_Mob 235
Partie 4 › Collection de procédures › LIB_Structures › Code
sNomPrenom est une chaîne ANSI
FIN
//Rapport Mob
ST_RDV_Rp est une Structure
saGuid est une chaîne ANSI
nIDGroupe est un entier sur 8 octets
saDateDebut est une chaîne ANSI
saDateFin est une chaîne ANSI
saObjet est une chaîne ANSI
saNote est une chaîne ANSI
saCollaborateurs est une chaîne ANSI
saExtra est une chaîne ANSI
bSelection est un booléen
FIN
ST_CONTACT_Rp est une Structure
nID est un entier sur 8 octets
saNom est une chaîne ANSI
saPren est une chaîne ANSI
saRole est une chaîne ANSI
saTFix est une chaîne ANSI
saTMob est une chaîne ANSI
saEtage est une chaîne ANSI
saExtra est une chaîne ANSI
bSelection est un booléen
FIN
ST_ClientAd est une Structure
sAAdresse est une chaîne ANSI
sAExtra est une chaîne ANSI
bSelection est un booléen
FIN
ST_CR_Rp est une Structure
saGuidCR est une chaîne ANSI
saDebut est une chaîne ANSI
saFin est une chaîne ANSI
saSignataire est une chaîne ANSI
saNomCollaborateur est une chaîne ANSI
saExtra est une chaîne ANSI
bSelection est un booléen
FIN
ST_Img_Rp est une Structure
nDC_PKID est un entier sur 8 octets
saNom est une chaîne ANSI
saExtra est une chaîne ANSI
saNotes est une chaîne ANSI
saDate est une chaîne ANSI
bSelection est un booléen
nPosTable est un entier
FIN
12/08/2026 Batik_WS_Com_Mob 236
Partie 4 › Collection de procédures › LIB_EXE › Code
LIB_EXE
Code
Déclaration de LIB_EXE
gcnxE_ServeurLicence est une Connexion
gcnxE_ServeurWSCom est une Connexion
Procédure globale EXE_OuvreConnexionHFSQL
PROCÉDURE EXE_OuvreConnexionHFSQL()
QUAND EXCEPTION DANS
<COMPILE SI Configuration="WS_COM_MOBILE">
LIB_EXE.gcnxe_ServeurLicence..Provider = hAccèsHFClientServeur
LIB_EXE.gcnxe_ServeurLicence..BaseDeDonnées= "BASE_LICENCES"
LIB_EXE.gcnxe_ServeurLicence..MotDePasse = "ea0c6460faac5d87db47b4ca0147a34a"
LIB_EXE.gcnxe_ServeurLicence..Serveur = "127.0.0.1:4900"
LIB_EXE.gcnxe_ServeurLicence..Utilisateur = "Admin"
// LIB_EXE.gsaPortWSCOM = "4902"
// LIB_EXE.gsaServeurWSCOM = "51.68.44.182"
LIB_EXE.gcnxe_ServeurWSCom..Provider = hAccèsHFClientServeur
LIB_EXE.gcnxe_ServeurWSCom..BaseDeDonnées = "BATIK.01_BLD"
LIB_EXE.gcnxe_ServeurWSCom..MotDePasse = "F911-Q927-K880-N196"
LIB_EXE.gcnxe_ServeurWSCom..Serveur = "127.0.0.1:4900"
LIB_EXE.gcnxe_ServeurWSCom..Utilisateur = "superuser"
<FIN>
gcnxReplica = LIB_EXE.gcnxe_ServeurWSCom
sPassSysteme est une chaîne ANSI= BufferVersHexa(HashChaîne(HA_MD5_128,Mdp3 + gcnxReplica..
BaseDeDonnées),SansRegroupement)
gsaPass = BufferVersHexa(HashChaîne(HA_MD5_128,gcnxReplica..BaseDeDonnées),SansRegroupement)
SI PAS HOuvreConnexion(gcnxReplica) ALORS
TraceERREUR("ERREUR OuvreConnexionsHF " + gcnxReplica..BaseDeDonnées + RC + gcnxReplica..
Serveur +RC+ HErreurInfo(hErrComplet) )
RENVOYER Faux
FIN
// //Vérification ultime de la présence de la base de données du client sur le serveur
// saLst est une chaîne ANSI = HListeBaseDeDonnées(gcnxReplica,hLstNormal)
// SI ChaîneOccurrence(saLst, gstContexte.saBaseData ,SansCasse) =0 ALORS
//
TraceERREUR("ERREUR OuvreConnexionsHF : La base client n'existe pas sur ce serveur HF " + saLst )
// RENVOYER Faux
// FIN
//Déclaration Externe de tous les fichiers du répliqua
saLst est une chaîne ANSI = HListeFichier(gcnxReplica)
POUR TOUTE CHAÎNE saFic DE saLst SÉPARÉE PAR RC
SI ChaîneOccurrence(saFic,"\")=0 ALORS
SI saFic="ParametreSysteme.fic" _OU_ saFic="ParametreMetierEntete.fic" _OU_ saFic="
Etats.fic" ALORS
SI PAS HPasse(ExtraitChaîne(saFic,1,"."),sPassSysteme) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
SINON
SI PAS HPasse(ExtraitChaîne(saFic,1,"."),gsaPass) ALORS
12/08/2026 Batik_WS_Com_Mob 237
Partie 4 › Collection de procédures › LIB_EXE › Code
TraceERREUR(HErreurInfo(hErrComplet))
FIN
FIN
SI PAS HDéclareExterne(saFic,ExtraitChaîne(saFic,1,"."),gcnxReplica) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
FIN
FIN
//Déclaration Externe de la table paramètres pour pouvoir la manipuler avec des fonction Hxxx
HPasse(gsdParamApplication,gsaPass)
HDéclareExterne("ParametreApplication.fic",gsdParamApplication,gcnxReplica)
TraceINFO("Connexions OK")
RENVOYER Vrai
FAIRE
TraceERREUR("ERREUR OuvreConnexionsHF " + ExceptionInfo(errComplet) )
RENVOYER Faux
FIN
Procédure globale LanceWebService
PROCÉDURE LanceWebService()
sInFile est une chaîne = LigneCommande(1)
sOutFileest une chaîne = LigneCommande(2)
SI sInFile = "" OU sOutFile = "" ALORS
// Pas d'arguments : on ne peut pas travailler
RENVOYER ""
FIN
// Lire le JSON d’entrée
sInJSON est une chaîne = fChargeTexte(sInFile)
SI sInJSON = "" ALORS
fSauveTexte(sOutFile, "Entrée JSON vide ou fichier introuvable")
RENVOYER ""
FIN
// Parser JSON
vIn est un Variant
vIn = JSONVersVariant(sInJSON)
SI ErreurDétectée ALORS
fSauveTexte(sOutFile, "JSON invalide : " + ErreurInfo(errComplet))
RENVOYER ""
FIN
// Identifier le nom de l’opération
sOp est une chaîne = ""
SI vIn.procedure <> "" ALORS
sOp = vIn.procedure
SINON
fSauveTexte(sOutFile, "Champ 'procedure' manquant")
RENVOYER ""
FIN
saReponse est une chaîne ANSI
// Dispatcher
SELON sOp
CAS "MOB_CMD":
saReponse = MOB_CMD(vIn.stID, vIn.stData, vIn.bufDocument)
CAS "MOB_EnvoieDoc":
saReponse = MOB_EnvoieDoc(vIn.stID, vIn.saJSON, vIn.bufDocument)
12/08/2026 Batik_WS_Com_Mob 238
Partie 4 › Collection de procédures › LIB_EXE › Code
CAS "MOB_RecupDoc":
saReponse = MOB_RecupDoc(vIn.stID, vIn.nID_TOMOB)
CAS "MOB_RecupDocID":
saReponse = MOB_RecupDocID(vIn.stID)
CAS "MOB_RecupValide":
saReponse = MOB_RecupValide(vIn.stID,vIn.nIdToMob)
CAS "Tesla":
saReponse = "OUI"
AUTRE CAS:
saReponse = "Opération inconnue : " + sOp
FIN
fSauveTexte(sOutFile, saReponse)
RENVOYER ""
12/08/2026 Batik_WS_Com_Mob 239
Partie 4 › Collection de procédures › LIB_DEBUG › Code
LIB_DEBUG
Code
Déclaration de LIB_DEBUG
gcnxD_ServeurLicence est une Connexion
gcnxD_ServeurWSCom est une Connexion
gtbaListeUsers est un tableau associatif de ST_MOB_IDENTITE
gsaPortWSCOM est une chaîne ANSI
gsaServeurWSCOM est une chaîne ANSI
gID est un WS_COM_MOBILE.ST_MOB_IDENTITE
gdDateDeb est une Date
gdDateFin est une Date
gnIdCollabChoisi est un entier sur 8 octets
gnIdInterChoisi est un entier sur 8 octets
gnIdRapportChoisi est un entier sur 8 octets
gnIdEmailChoisi est un entier sur 8 octets
gbEnvoiWebService est un booléen = Vrai
gnIdCollabSID est un entier sur 8 octets
Procédure globale D_LanceProcedure
PROCÉDURE D_LanceProcedure(saType est une chaîne ANSI)
saRep est une chaîne ANSI
saBuf est une chaîne ANSI
REQ est un WS_COM_MOBILE.ST_MOB_DATA
REQ.saCMD=saType
SELON saType
CAS cCMD_NoteEcrit,cCMD_DocNoteEcrit,cCMD_TempsEcrit,cCMD_TempsSupprime,cCMD_CREcrit,
cCMD_CREcrit_V2,cCMD_ListeDocDmd,cCMD_RdvEcrit,cCMD_TempsEcrit_V2,cCMD_RDVValidation,
cCMD_RDVAnnulation,cCMD_DocRpRecup
CAS cCMD_RdvAPlanifierEcrit
CAS cCMD_ListeDOC
CAS cCMD_ListeRDV_V2, cCMD_IdClbRdvDroitC,cCMD_ListeRDV_Clb
stParam est un ST_REQ_LISTE_RDV
stParam.nIdCollaborateur = LIB_DEBUG.gnIdCollabChoisi
SI saType = cCMD_ListeRDV_V2 ALORS
stParam.nIdCollaborateur= LIB_DEBUG.gnIdCollabSID
FIN
stParam.saDateDebut = LIB_DEBUG.gdDateDeb
stParam.saDateFin = LIB_DEBUG.gdDateFin
Sérialise(stParam,saBuf,psdJSON)
REQ.saJSON=saBuf
saTest est une chaîne ANSI
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,saTest)
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,saTest)
12/08/2026 Batik_WS_Com_Mob 240
Partie 4 › Collection de procédures › LIB_DEBUG › Code
FIN
saBuf=saRep[2 À]
CAS cCMD_LitINTER_V2
stParam est un ST_REQ_LISTE_RDV
stParam.nIdInter = LIB_DEBUG.gnIdInterChoisi
stParam.bSimple = Vrai
stParam.saDateDebut = LIB_DEBUG.gdDateDeb
stParam.saDateFin = LIB_DEBUG.gdDateFin
saBufJson est une chaîne ANSI
Sérialise(stParam,saBufJson,psdJSON)
REQ.saJSON=saBufJson
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,"")
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,"")
FIN
saBuf=saRep[2 À]
CAS cCMD_RechercheRDV
stParam est un ST_REQ_LISTE_RDV
stParam.saTxt = FEN_Principal.SAI_Recherche
stParam.saTOP = "50"
saBufJson est une chaîne ANSI
Sérialise(stParam,saBufJson,psdJSON)
REQ.saJSON=saBufJson
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,"")
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,"")
FIN
saBuf=saRep[2 À]
CAS cCMD_ListeTEMPS
stParam est un ST_REQ_LISTE_TEMPS
stParam.nIdCollaborateur=LIB_DEBUG.gnIdCollabChoisi
dh est une DateHeure = DateHeureSys()
stParam.saDateFin = dh
dh..Mois--
dh..Jour = 1
dh..Heure = 0
dh..Minute = 0
dh..Seconde = 0
dh..Milliseconde = 0
stParam.saDateDebut = dh
saBufJson est une chaîne ANSI
Sérialise(stParam,saBufJson,psdJSON)
REQ.saJSON=saBufJson
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,"")
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,"")
FIN
saBuf=saRep[2 À]
CAS cCMD_LitParam_V2 //Appelé par la fonction RécupContexte du mobile
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,"")
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,"")
FIN
saBuf=saRep[2 À]
CAS cCMD_LitContexte
12/08/2026 Batik_WS_Com_Mob 241
Partie 4 › Collection de procédures › LIB_DEBUG › Code
REQ.saJSON = NumériqueVersChaîne(LIB_DEBUG.gID.nIdUser)
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,"")
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,"")
FIN
saBuf=saRep[2 À]
CAS cCMD_ListeCh_Rapport
stParam est un ST_REQ_LISTE_Chp_Rapport
stParam.nIdCollaborateur = LIB_DEBUG.gnIdCollabSID
stParam.nIdInter = LIB_DEBUG.gnIdInterChoisi
stParam.nIdModele = LIB_DEBUG.gnIdRapportChoisi
saBufJson est une chaîne ANSI
Sérialise(stParam,saBufJson,psdJSON)
REQ.saJSON=saBufJson
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,"")
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,"")
FIN
saBuf=saRep[2 À]
CAS cCMD_RecupImgRapport
CAS cCMD_ListeCh_Mail
stParam est un STJSONInfoModeleMailMob
stParam.nIdInter = LIB_DEBUG.gnIdInterChoisi
stParam.nIdModele = LIB_DEBUG.gnIdEmailChoisi
saBufJson est une chaîne ANSI
Sérialise(stParam,saBufJson,psdJSON)
REQ.saJSON=saBufJson
SI gbEnvoiWebService ALORS
saRep = WS_COM_MOBILE.MOB_CMD(LIB_DEBUG.gID,REQ,"")
SINON
saRep = MOB_CMD(LIB_DEBUG.gID,REQ,"")
FIN
saBuf=saRep[2 À]
CAS cCMD_Cr_Structure_Mail
AUTRE CAS
FIN
FEN_Log.SAI_Log = saRep
RENVOYER saBuf
Procédure globale D_OuvreConnexionHFSQL
PROCÉDURE D_OuvreConnexionHFSQL()
QUAND EXCEPTION DANS
<COMPILE SI Configuration="WS_COM_MOBILE">
LIB_DEBUG.gcnxD_ServeurLicence..Provider = hAccèsHFClientServeur
LIB_DEBUG.gcnxD_ServeurLicence..BaseDeDonnées = "BASE_LICENCES"
LIB_DEBUG.gcnxD_ServeurLicence..MotDePasse = "ea0c6460faac5d87db47b4ca0147a34a"
LIB_DEBUG.gcnxD_ServeurLicence..Serveur = "51.68.44.182:4943"
LIB_DEBUG.gcnxD_ServeurLicence..Utilisateur = "Admin"
LIB_DEBUG.gsaPortWSCOM = "4902"
LIB_DEBUG.gsaServeurWSCOM = "51.68.44.182"
12/08/2026 Batik_WS_Com_Mob 242
Partie 4 › Collection de procédures › LIB_DEBUG › Code
LIB_DEBUG.gcnxD_ServeurWSCom..Provider = hAccèsHFClientServeur
LIB_DEBUG.gcnxD_ServeurWSCom..BaseDeDonnées = "BATIK.01_BLD"
LIB_DEBUG.gcnxD_ServeurWSCom..MotDePasse = "F911-Q927-K880-N196"
LIB_DEBUG.gcnxD_ServeurWSCom..Serveur = "51.68.44.182:4902"
LIB_DEBUG.gcnxD_ServeurWSCom..Utilisateur = "superuser"
<FIN>
gcnxReplica = LIB_DEBUG.gcnxD_ServeurWSCom
uneConexxion est une Connexion
uneConexxion..Provider = hAccèsHFClientServeur
uneConexxion..BaseDeDonnées = "BATIK.01_BLD"
uneConexxion..MotDePasse = "F911-Q927-K880-N196"
uneConexxion..Serveur = "51.68.44.182:4902"
uneConexxion..Utilisateur = "superuser"
gcnxReplica = uneConexxion
sPassSysteme est une chaîne ANSI= BufferVersHexa(HashChaîne(HA_MD5_128,Mdp3 + gcnxReplica..
BaseDeDonnées),SansRegroupement)
gsaPass = BufferVersHexa(HashChaîne(HA_MD5_128,gcnxReplica..BaseDeDonnées),SansRegroupement)
SI PAS HOuvreConnexion(gcnxReplica) ALORS
TraceERREUR("ERREUR OuvreConnexionsHF " + gcnxReplica..BaseDeDonnées + RC + gcnxReplica..
Serveur +RC+ HErreurInfo(hErrComplet) )
RENVOYER Faux
FIN
// //Vérification ultime de la présence de la base de données du client sur le serveur
// saLst est une chaîne ANSI = HListeBaseDeDonnées(gcnxReplica,hLstNormal)
// SI ChaîneOccurrence(saLst, gstContexte.saBaseData ,SansCasse) =0 ALORS
//
TraceERREUR("ERREUR OuvreConnexionsHF : La base client n'existe pas sur ce serveur HF " + saLst )
// RENVOYER Faux
// FIN
//Déclaration Externe de tous les fichiers du répliqua
saLst est une chaîne ANSI = HListeFichier(gcnxReplica)
POUR TOUTE CHAÎNE saFic DE saLst SÉPARÉE PAR RC
SI ChaîneOccurrence(saFic,"\")=0 ALORS
SI saFic="ParametreSysteme.fic" _OU_ saFic="ParametreMetierEntete.fic" _OU_ saFic="
Etats.fic" ALORS
SI PAS HPasse(ExtraitChaîne(saFic,1,"."),sPassSysteme) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
SINON
SI PAS HPasse(ExtraitChaîne(saFic,1,"."),gsaPass) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
FIN
SI PAS HDéclareExterne(saFic,ExtraitChaîne(saFic,1,"."),gcnxReplica) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
FIN
FIN
//Déclaration Externe de la table paramètres pour pouvoir la manipuler avec des fonction Hxxx
HPasse(gsdParamApplication,gsaPass)
HPasse(gsdParamApplication,sPassSysteme)
HDéclareExterne("ParametreApplication.fic",gsdParamApplication,uneConexxion)
TraceINFO("Connexions OK")
RENVOYER Vrai
FAIRE
TraceERREUR("ERREUR OuvreConnexionsHF " + ExceptionInfo(errComplet) )
RENVOYER Faux
FIN
Procédure globale D_OuvreConnexionHFSQLLicence
12/08/2026 Batik_WS_Com_Mob 243
Partie 4 › Collection de procédures › LIB_DEBUG › Code
PROCÉDURE D_OuvreConnexionHFSQLLicence(saMP est une chaîne ANSI)
HChangeConnexion("*",LIB_DEBUG.gcnxD_ServeurLicence)
HOuvreConnexion(LIB_DEBUG.gcnxD_ServeurLicence)
//Déclaration Externe de tous les fichiers du répliqua
saLst est une chaîne ANSI = HListeFichier(LIB_DEBUG.gcnxD_ServeurLicence)
POUR TOUTE CHAÎNE saFic DE saLst SÉPARÉE PAR RC
SI ChaîneOccurrence(saFic,"\")=0 ALORS
SI PAS HPasse(ExtraitChaîne(saFic,1,"."),saMP) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
SI PAS HDéclareExterne(saFic,ExtraitChaîne(saFic,1,"."),LIB_DEBUG.gcnxD_ServeurLicence) ALORS
TraceERREUR(HErreurInfo(hErrComplet))
FIN
FIN
FIN
Procédure globale D_RecupIdentiteLicence
PROCÉDURE D_RecupIdentiteLicence()
TableauSupprimeTout(LIB_DEBUG.gtbaListeUsers)
pstUnId est un ST_MOB_IDENTITE dynamique
saReqLicences est une chaîne ANSI = [
SELECT * FROM Licence
INNER JOIN ClientBase ON ClientBase.CL_PKID = Licence.LI_IDClient
WHERE LI_Active = 1 AND LI_IDCollaborateur > 0 AND LI_IDUser > 0
]
sdLicences est une Source de Données
saCle est une chaîne ANSI
SI PAS HExécuteRequêteSQL(sdLicences,LIB_DEBUG.gcnxD_ServeurLicence,hRequêteDéfaut,saReqLicences)
ALORS
TraceDEBUG("Erreur D_RecupIdentiteLicence " + HErreurInfo(hErrComplet))
SINON
POUR TOUT sdLicences
pstUnId = allouer un ST_MOB_IDENTITE
pstUnId.saLicence = sdLicences.LI_Numero
pstUnId.saIdMob = sdLicences.LI_IDMobile
pstUnId.nIdColb = sdLicences.LI_IDCollaborateur
pstUnId.nIdUser = sdLicences.LI_IDUser
pstUnId.saNumPort = LIB_DEBUG.gsaPortWSCOM
pstUnId.saBaseData = LIB_DEBUG.gsaServeurWSCOM
pstUnId.saBaseSync = LIB_DEBUG.gsaServeurWSCOM
pstUnId.saIdClient = sdLicences.LI_IDClient
saCle = SansEspace(sdLicences.LI_UserNom,sscExtérieur)+" "+SansEspace(sdLicences.LI_UserPrenom,
sscExtérieur)+" "+sdLicences.CL_Nom
LIB_DEBUG.gtbaListeUsers[saCle] = pstUnId
FIN
FIN
RENVOYER Vrai
12/08/2026 Batik_WS_Com_Mob 244
Partie 5 › Table des matières
Partie 5
Table des matières
| 12/08/2026 | Batik_WS_Com_Mob | 245 |
| ---------- | ---------------- | --- |
Partie 5 › Table des matières
Projet Batik_WS_Com_Mob
Partie 1 Projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Liste des éléments du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Erreurs, warnings et informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Statistiques sur le code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Partie 2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Dictionnaire des rubriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Connexions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Fichiers et rubriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
MOBILES 16
PARAMETRES 17
TOMOB 18
TOSRV 19
Partie 3 Fenêtre WINDEV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
FEN_Principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Image 21
Informations générales 21
Informations sur les champs 23
Code 61
Code des champs 62
Procédures 76
FEN_Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Image 80
Informations générales 80
Informations sur les champs 82
Code 105
Code des champs 105
Procédures 107
FEN_Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Image 108
Informations générales 108
Informations sur les champs 110
12/08/2026 Batik_WS_Com_Mob 246
Partie 5 › Table des matières
Code 112
Code des champs 112
Partie 4 Collection de procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
LIB_GestionTableParamètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Code 114
LIB_WS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Code 116
LIB_GENERALE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Code 117
LIB_COMMUNE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Code 119
LIB_ProcéduresGlobales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Code 122
LIB_WS_MOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Code 129
LIB_Traitements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Code 135
LIB_ProcéduresGlobales2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Code 224
LIB_Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Code 225
LIB_EXE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Code 237
LIB_DEBUG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Code 240
12/08/2026 Batik_WS_Com_Mob 247