Bonjour,
Démosthène est une application de gestion de cabinets d'avocats conçue en PHP sur une base de données Mysql, déployée sur un serveur LAMP
La BD relationnelle organise les dossiers, qui contiennent les prestations (citations, requêtes, courriers, etc...) de l'avocat.
Les prestations peuvent être dédiées à un justiciable déterminé, dont l'application connaît le nom, l'adresse, les références du dossier, ...
Par le jeu des requêtes SQL relationnelles, je rassemble toutes les caractéristiques d'une prestation dans une seule requête, dont je convertis le résultat en une chaîne JSON
Voici la méthode de la classe Prestation qui construit la chaîne JSON
1 2 3 4 5 6 7 8 9 10
|
public function getCourrier()
{
$codeSql = 'SELECT DATE_FORMAT(t_prestations.heure,\'%d/%m/%Y\') AS jour, t_dossiers.nosRef, (autres champs...) FROM t_prestations LEFT JOIN t_dossiers ON t_prestations.dossier = t_dossiers.id LEFT JOIN t_avocats AS moi ON t_dossiers.avocat = moi.id LEFT JOIN t_cabinets AS monCab ON moi.cabinet = monCab.id WHERE t_prestations.id = ?';
$querySource = $this->bdd->prepare($codeSql);
$querySource->execute(array($this->id));
$laSource = $querySource->fetchall(PDO::FETCH_ASSOC);
$querySource->closecursor();
return(json_encode($laSource));
} |
Cette chaîne JSON est fournie par une page web,
depuis une URL telle que https://www.monserveur.be/dmsthn/dat...php?prestId=25
Cette page web construit la prestation 25 et affiche son JSON, par un
echo($laPrestation->getCourrier());
Le navigateur affiche donc une réponse JSON telle que
1 2
|
[{"jour":"30\/11\/2018","nosRef":"PJ\/2017\/08\/001","monNom":"Patron","monPrenom":"Jacques","monTel":"04\/345.67.89","monFax":"04\/456.78.90","monGsm":"0475\/00.00.00","monEmail":"j.patron@avocat.be","monIbanPro":"BE41 0003 2601 8010","monIbanTiers":"BE00","monCabNom":"Law cost","monAdresse":"Rue Général de Gaulle, 8","monPostal":"4020","maVille":"Bressoux"}] |
Bien entendu, cette chaîne n'est accessible que si elle correspond à une prestation d'un dossier du client connecté et muni d'une $_SESSION en cours,
identifié par son $_SESSION['clientId']
Car on peut demander n'importe quoi, par $_GET['prestId'] : Never Trust User Input
Sinon, message d'erreur, cela va de soi.
Jusque là, OK, pas de problème, ça marche.
Ma question :
Maintenant, ce que je voudrais faire, c'est de permettre à un traitement de texte (MS-Word, LibreOffice) de demander et d'obtenir cette chaîne JSON, et de s'en servir comme datasource d'un document de fusion.
La première difficulté est que le traitement de texte connaisse l'Id de la prestation (?prestId=X) dont il a besoin.
Comment dire au traitement de texte de fusionner sur la chaîne JSON de la prestation 25 ?
Peut-on l'appeler, depuis la page web, en lui passant l'identifiant prestId de la prestation sur laquelle fusionner ?
faire une sorte de lien externe dans la page web
<A href="LibreOffice?prestId=25">Fusion</A>
Un peu comme on peut déjà faire un lien mailto vers un éditeur de mail.
Ensuite, le traitement de texte va interroger l'URL, et en recevoir la chaîne JSON ci-dessus en réponse.
Comment la considérer comme une datasource, et comment fusionner dessus ?
Les avocats ont chacun leur panoplie de courriers personnalisés, à leur effigie, sur leur papier à entête.
Impossible de personnaliser le logiciel aux desideratas de chacun d'eux.
J'ai donc choisi de leur fournir les données dont ils ont besoin, et puis, qu'il les utilisent chez eux pour fusionner, sur tous les documents qu'ils créeront à volonté.
Plutôt que d'intégrer un traitement de texte à Démosthène.
Il existe des plugins JavaScript pour ce faire (comme celui que j'utilise ici, pour taper mon texte dans le forum de developpez.net), mais ils ne m'intéressent pas,
car on ne sait pas y importer de modèles, on compose son texte dans un cadre blanc.
Et même si on savait y importer des modèles, je ne souhaite pas importer, sur le serveur, tous les modèles possibles de tous mes utilisateurs.
Ce qui impliquerait, ensuite, de mémoriser leurs courriers sur le serveur : lourd et dangereux, en cas de fuite / piratage, à cause du secret professionnel.
Existe t'il une solution simple à mettre en oeuvre, compte tenu du profil littéraire des avocats, qui sont rarement des geeks ?
Merci.
Christian.
Partager