Files
Omika/docs/rapport-email-windev-spec.md
T
2026-10-23 18:46:50 +02:00

4.6 KiB

Spécification — Création d'email et de rapport (fidèle à Windev)

Source : docs/Documentation_WebService_GET.md (web service mobile Batik_WS_Com_Mob), collection LIB_Traitements et LIB_Structures. Cette spec décrit le comportement réel à reproduire, distinct des « notes internes » (MessageInterne).

1. Structures WINDEV → contrats .NET

Windev .NET Rôle
STJSONMembreRubRapport RapportChampDto Champ/rubrique du modèle (type, ordre, auto-rempli, modifiable, liste)
STJSONListeMembre RapportChampSousElementDto Colonne de tableau / rubrique fille
ST_REQ_LISTE_Chp_Rapport GetRapportChampsRequest Requête « liste des champs »
STJSONInfoRapportMob CreateRapportRequest Requête « créer le rapport » (avec ListeMob remplie)
STJSONInfoModeleMailMob (à créer) Requête « construire le modèle email »
ST_ModeleMailComplet (à créer) Requête « envoyer l'email » (sujet, corps HTML, destinataires, SMTP)

2. Flux « récupérer les champs à remplir » (RecupererChampRapportInter)

  1. Entrée : { modeleId, interventionId, collaborateurId }.
  2. Charge ModeleRapport (MRP_Modele = document, MRP_Extra = JSON de mots-clés spécifiques).
  3. ChargeListeRubDoc() : SELECT * FROM RubriquesDocument ORDER BY RD_IdRubParent → hiérarchie (parent → ListeMembre).
  4. ConstructionTbRubBaseRapport : extrait les rubriques présentes dans le document.
  5. ConstructionTbRubEnvoyerMob : filtre RD_EnvoiMob.
  6. AjouterDonnesBDDansChampRapport(interventionId, champs) : pré-remplissage depuis la base.
  7. Retour : RapportChampDto[].

3. Pré-remplissage (AjouterDonnesBDDansChampRapport)

5 requêtes SQL, exécutées seulement si le groupe applicatif est présent :

GroupeApp Source ListeDonnesBD
Inter Intervention + Lieu + Adresse + Client + Dossier + Collaborateur + Societe + ParametreMetier valeur simple (texte ; IN_Description via RTF→texte)
Client Client + Client_Adresse + Adresse JSON ST_ClientAd[] (adresses multiples)
Dossier Dossier + ParametreMetier valeur simple
CR CompteRendu + RDV_Collaborateur + RDV_Planning JSON ST_CR_Rp[] (comptes rendus, choix multiple)
RDV RDV_Planning + RDV_Collaborateur + Collaborateur JSON ST_RDV_Rp[] (rendez-vous, choix multiple, groupés)

Les champs de type Tableau ou groupe Inter/Dossier/Client reçoivent une valeur ; CR/RDV/Client reçoivent une liste JSON → choix multiple côté mobile.

4. Flux « créer le rapport » (CreationRapport)

  1. Entrée : { modeleId, interventionId, nom, guid, ListeMob } (rubriques remplies).
  2. Charge ModeleRapport (document Word/RTF) + MRP_Extra.
  3. TraiteDocumentRapportMob : remplit les rubriques dans le document.
  4. SupprimerToutesRubRapportMob : retire les rubriques non remplies.
  5. DocVersPDF → PDF.
  6. Écrit TOSRV (cCMD_DocEcrit, type "PDF_RP", nom {nom}.pdf).

5. Flux « envoyer l'email » (CreationETEnvoiEmail)

  1. Entrée : ST_ModeleMailComplet (sujet, corps HTML, destinataires, PJ, compte SMTP).
  2. CreationUnEmail → construit l'email.
  3. OuvreSessionEmail + EmailEnvoieMessage → envoi SMTP réel.
  4. CreationMessageExt → sérialise ST_MsgExterneMail et écrit TOSRV (cCMD_MsgExtEcrit).

6. État d'avancement et décisions

  • Fait : lecture des modèles (MailModele/ModeleRapport/ModeleRapportMob), MotClef, RubriquesDocument ; moteur de substitution ; création MessageExterne directe.
  • À faire (priorité choisie : « champs à remplir + auto-remplissage ») :
    1. IRapportChampService + RapportChampService (miroir de ContruireListeChamps + AjouterDonnesBDDansChampRapport).
    2. Endpoint POST /api/rapports/champs (récupérer les champs).
    3. Endpoint POST /api/rapports (créer) — la génération Word/PDF est reportée.
  • Reporté : génération Word/RTF → PDF, envoi SMTP réel, file TOSRV (cCMD_*).

7. Contraintes de compatibilité Batik / Omika

  • ModeleRapport (Omika) vs ModeleRapportMob (Batik, lecture seule) : le modèle est résolu par l'adaptatif existant.
  • RubriquesDocument : Omika uniquement → sur Batik, ChargeListeRubDoc() retourne vide → pas de rubriques structurées (dégradation propre).
  • La requête d'auto-remplissage référence des colonnes Omika (IN_CleType, DO_CleStatut, CR_CleTypeSignataire, RDV_Planning/RDV_Collaborateur). Sur Batik, il faudra une requête de repli (colonnes numériques IN_IDTypeIntervention, Planning_RDV, etc.).