4.6 KiB
4.6 KiB
Spécification — Création d'email et de rapport (fidèle à Windev)
Source :
docs/Documentation_WebService_GET.md(web service mobileBatik_WS_Com_Mob), collectionLIB_TraitementsetLIB_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)
- Entrée :
{ modeleId, interventionId, collaborateurId }. - Charge
ModeleRapport(MRP_Modele= document,MRP_Extra= JSON de mots-clés spécifiques). ChargeListeRubDoc():SELECT * FROM RubriquesDocument ORDER BY RD_IdRubParent→ hiérarchie (parent →ListeMembre).ConstructionTbRubBaseRapport: extrait les rubriques présentes dans le document.ConstructionTbRubEnvoyerMob: filtreRD_EnvoiMob.AjouterDonnesBDDansChampRapport(interventionId, champs): pré-remplissage depuis la base.- 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)
- Entrée :
{ modeleId, interventionId, nom, guid, ListeMob }(rubriques remplies). - Charge
ModeleRapport(document Word/RTF) +MRP_Extra. TraiteDocumentRapportMob: remplit les rubriques dans le document.SupprimerToutesRubRapportMob: retire les rubriques non remplies.DocVersPDF→ PDF.- Écrit
TOSRV(cCMD_DocEcrit, type"PDF_RP", nom{nom}.pdf).
5. Flux « envoyer l'email » (CreationETEnvoiEmail)
- Entrée :
ST_ModeleMailComplet(sujet, corps HTML, destinataires, PJ, compte SMTP). CreationUnEmail→ construit l'email.OuvreSessionEmail+EmailEnvoieMessage→ envoi SMTP réel.CreationMessageExt→ sérialiseST_MsgExterneMailet écritTOSRV(cCMD_MsgExtEcrit).
6. État d'avancement et décisions
- Fait : lecture des modèles (
MailModele/ModeleRapport/ModeleRapportMob),MotClef,RubriquesDocument; moteur de substitution ; créationMessageExternedirecte. - À faire (priorité choisie : « champs à remplir + auto-remplissage ») :
IRapportChampService+RapportChampService(miroir deContruireListeChamps+AjouterDonnesBDDansChampRapport).- Endpoint
POST /api/rapports/champs(récupérer les champs). - 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) vsModeleRapportMob(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ériquesIN_IDTypeIntervention,Planning_RDV, etc.).