Créer des documents dynamiques avec 4D Write Pro dans l’application Qodly

Dans un environnement professionnel où la gestion et la production de documents sont cruciales, il est essentiel de disposer d’outils puissants et flexibles. Imaginez que vous puissiez concevoir des modèles de documents dynamiques directement à partir de votre client Desktop, en intégrant des formules et des données issues de votre base de données, puis en générant ces documents d’un simple clic au travers d’une interface web intuitive. C’est précisément ce que 4D Write Pro et 4D Qodly Pro vous permettent de faire !

Dans le blog de cette semaine, nous allons explorer comment ces deux solutions se complètent parfaitement pour automatiser et optimiser vos processus documentaires. Vous découvrirez comment créer des modèles personnalisés dans 4D Write Pro et comment, grâce à 4D Qodly Pro, les internautes peuvent saisir les données nécessaires, déclencher la génération des documents et même choisir de les stocker dans la base de données ou de les renvoyer via un attribut calculé.

Pour démontrer ce processus, nous utiliserons l’application Performance Review, qui est disponible en téléchargement. Préparez-vous à transformer la façon dont vous créez et gérez vos documents, tout en simplifiant vos flux de travail et en augmentant votre efficacité.

Application Performance Review

Création de modèles dans le client de bureau

4D Write Pro est un puissant outil de traitement de texte dont la principale force réside dans sa capacité à créer des modèles de documents liés à votre base de données. Cette fonctionnalité vous permet de générer automatiquement différents types de documents : lettres, contrats, factures, catalogues, notes de frais, etc.

Dans l’application Performance Review, plusieurs modèles de documents sont utilisés en fonction du département concerné. Par exemple :

Modèle de commande

 

Modèle pour l’assurance qualité

blank

Ces modèles intègrent des formules dynamiques directement liées à la base de données, ce qui facilite la création de documents personnalisés pour chaque service.

Un formulaire dans l’application Desktop vous permet de créer ces modèles de manière simplifiée.Pour ajouter facilement des formules, une liste déroulante propose toutes les formules pertinentes pour le modèle.

blank

Ces formules sont définies dans un fichier JSON appelé « WPexpression.json ».

En voici un extrait :

{
    "expression" : [{
            "name" : "Nom",
            "formula" : "This.data.review.Employee.Lastname"
        }, {
            "name" : "Prénom",
            "formule" : "This.data.review.Employee.Firstname"
        }, {
            "name" : "NomCollaborateur",
            "formula" : "This.data.review.Employee.Firstname+\" \"+This.data.review.Employee.Lastname"
        }
    ]
}

Pour en savoir plus sur 4D Write Pro et ORDA, lisez ce blog : ORDA et 4D Write Pro : Le couple de choc !

Pour simplifier la création de tables, l’assistant de table intégré au composant d’interface de 4D Write Pro est idéal.

blank

Pour qu’il fonctionne parfaitement avec la structure de notre base de données, nous avons ajouté des fichiers de configuration contenant les formules nécessaires pour les documents d’évaluation des performances. Par exemple, nous avons ajouté des fichiers de configuration contenant les formules nécessaires pour les documents d’évaluation des performances :

{
    "tableDataSource" : "This.data.review.Skills.orderBy(\"Group asc\")",
    "columns" : [{
            "check" : true,
            "header" : "SkillName",
            "source" : "This.item.Name"
        }, {
            "check" : faux,
            "header" : "CheckCodeI",
            "source" : "Choose(This.item.ID_Score=1 ; \N-"X\N" ; \N-"X\N")"
        }, {
            "check" : faux,
            "header" : "CheckCodeP",
            "source" : "Choose(This.item.ID_Score=2 ; \N-"X\N" ; \N-"X\N")"
        },{
            "check" : faux,
            "header" : "CheckCodeR",
            "source" : "Choose(This.item.ID_Score=3 ; \N-"X\N" ; \N-"X\N")"
        },{
            "check" : faux,
            "header" : "CheckCodeE",
            "source" : "Choose(This.item.ID_Score=4 ; \N-"X\N" ; \N-"X\N")"
        },{
            "check" : true,
            "header" : "ScoreName",
            "source" : "This.item.Score.Name"
        },{
            "check" : vrai,
            "header" : "ScoreCode",
            "source" : "This.item.Score.Code"
        }
    ],
    "breaks" : [{
            "label" : "SkillGroup",
            "source" : "This.item.Group"
        }
    ],
    "breakFormulas" : [{
            "label" : "GroupName",
            "source" : "This.item.Group"
	}
    ],
    "extraFormulas" : [{
            "label" : "ScoreSkillName",
            "source" : "This.data.review.ScoreSkill.Name"
        },{
            "label" : "ScoreSkillCode",
            "source" : "This.data.review.ScoreSkill.Code"
        },{
            "label" : "CheckSkillScoreCodeI",
            "source" : "Choose(This.data.review.ID_ScoreSkill=1 ; \N-"X\N" ; \N-"X\N")"
        }, {
            "label" : "CheckSkillScoreCodeP",
            "source" : "Choose(This.data.review.ID_ScoreSkill=2 ; \"X\" ; \"\")"
        }, {
            "label" : "CheckSkillScoreCodeR",
            "source" : "Choose(This.data.review.ID_ScoreSkill=3 ; \"X\" ; \"\")"
        }, {
            "label" : "CheckSkillScoreCodeE",
            "source" : "Choose(This.data.review.ID_ScoreSkill=4 ; \"X\" ; \"\")"
        }
    ]
}

Avec ces formules, la création d’un tableau de compétences et de notes devient très simple.Après avoir personnalisé le tableau, voici le résultat :

blank

Pour en savoir plus sur la configuration et les possibilités offertes par l’assistant de tableau, voir :

Renseigner les données dans le client Web

Une fois le modèle créé, les utilisateurs saisissent les données requises au moyen d’une interface web intuitive. Grâce à 4D Qodly Pro, cette étape s’intègre parfaitement à votre base de données, garantissant que les informations saisies correspondent aux champs définis dans vos modèles.

Pour plus de détails sur la mise en place de ces interfaces, n’hésitez pas à consulter nos blogs précédents sur :

Générer le document final

Le document final est généré directement à partir de l’interface web. Lorsqu’un utilisateur clique sur le bouton dédié, l’événement « On Click » déclenche la fonction « selectedReview.generatePDF() ».

blank

 

Voici le code qui gère la génération du document PDF :

Function generateDocument()->$doc: Object
var $context : Object
var $template : cs.TemplateEntity

// Create context
$context:=This.createContext()

// Load template
$template:=This.Employee.Departement.Template.Template

// Create 4D Write Pro document
$doc:=WP New($template)
WP SET DATA CONTEXT ($doc; $context)
WP COMPUTE FORMULAS ($doc)

return $doc

exposed Function generatePDF ()
var $WPdoc : Object
var $blob : 4D.Blob

// Generate WP document
$WPdoc:=This.generateDocument()

// Convert to PDF
WP EXPORT VARIABLE ($WPdoc; $blob; wk pdf)

// Save in database
This.DocumentPDF:=$blob
This.save()

Permission

Dans l’application web, les utilisateurs ne peuvent pas accéder à la table Template. Cependant, la fonction « Review.generatePDF » doit accéder à ces données pour générer le document PDF. Pour ce faire, nous avons mis en place une « promotion » sur la fonction.

  • Création du privilège « generatePDF »: Dans la page Rôle et privilège, nous définissons un nouveau privilège appelé generatePDF.

 

A dark-themed user interface section with two tabs: "Roles" and "Privileges," with "Privileges" currently selected in purple. Below, a "Privileges" section lists three privilege items:

    "guest" with an info icon.
    "createReview" with edit and delete icons.
    "generatePDF" with edit and delete icons, highlighted with a purple border.

A plus (+) button in the top right allows adding new privileges.

  • Octroi de droits de lecture: Nous accordons des droits de lecture aux classes de données Département et Modèle. Ces droits sont essentiels pour localiser le modèle Write Pro nécessaire pour générer le document.
  • Promouvoir la fonction « Review.generatePDF »: Nous attribuons l’option Promote à la fonction Review.generatePDF. Grâce à cette promotion, lorsque la fonction est appelée sur le serveur, elle acquiert automatiquement le privilège generatePDF et peut accéder aux données typiquement restreintes.

 

A dark-themed user interface panel titled "Include a privilege." At the top, several privilege tags such as "createReview," "none," "authentify," "user," and "hr" are displayed. Below, there is a search bar labeled "Search available permissions" and a button to create a permission. Two buttons, "Reset" (red) and "Clear" (purple), are present.

A table lists different permissions with columns for Read, Create, Update, Delete, Execute, and Promote.

    "Department" has no checkboxes selected.
    "Review.generatePDF" has Read and Promote checked.
    "Template" has only Read checked.

On the right, a toggle switch labeled "Show inherited permissions" is set to off.

Ce mécanisme garantit que seuls les processus autorisés peuvent temporairement étendre leurs droits pour effectuer des tâches spécifiques, tout en maintenant une sécurité et un contrôle élevés sur l’accès aux données.

Voilà !

blank

Prochaine étape

En combinant 4D Write Pro et 4D Qodly Pro, vous pouvez automatiser la génération de documents dynamiques en fusionnant des modèles prédéfinis et des données en temps réel. Cette approche offre de nombreux avantages :

  • Automatisation des documents: Réduction des tâches manuelles grâce aux modèles dynamiques.
  • Optimisation du flux de travail: Séparation claire entre la création de modèles (client Desktop) et la saisie de données (client Web).
  • Gain de temps et meilleure qualité: Une solution pratique qui améliore la productivité et la qualité des documents générés.

 

Nous vous encourageons à essayer cette approche dans vos projets et à découvrir les avantages de l’intégration de 4D Write Pro avec 4D Qodly Pro. N’hésitez pas à nous faire part de vos commentaires ou à consulter nos autres ressources pour approfondir vos connaissances.

Vanessa Talbot
- Product Owner -Vanessa Talbot a rejoint l'équipe du programme 4D en juin 2014. En tant que Product Owner, elle est chargée de rédiger les user stories puis de les traduire en spécifications fonctionnelles. Son rôle est également de s'assurer que l'implémentation des fonctionnalités livrées répond aux besoins des clients.Depuis son arrivée, elle a travaillé à la définition des fonctionnalités clés de 4D. Elle a travaillé sur la plupart des nouvelles fonctionnalités de multithreading préemptif et aussi sur un sujet très complexe : la nouvelle architecture pour les applications enginées. Vanessa est diplômée de Telecom Saint-Etienne. Elle a commencé sa carrière à l'Institut de Recherche Criminelle en tant que développeur pour le département audiovisuel. Elle a également travaillé dans les domaines des médias et du médical en tant qu'experte en support technique, en production ainsi qu'en documentation de nouvelles fonctionnalités.