4D Write Pro : Génération de factures électroniques !

4D V20 R4 introduit une fonctionnalité importante dans 4D Write Pro : la possibilité de générer des factures électroniques. Mais qu’entendons-nous exactement par « factures électroniques » ?

Une facture électronique (ou e-facture) est générée, transmise, reçue et stockée électroniquement, ce qui permet une gestion plus efficace et plus respectueuse de l’environnement des transactions commerciales.

Si elles présentent de nombreux avantages, elles s’accompagnent également de contraintes spécifiques, notamment en termes de complexité du processus de génération. Cependant, avec 4D Write Pro, vous constaterez que cette complexité est toute relative et plus simple à gérer qu’on ne l’imagine !

HDI : Génération de factures électroniques

Pourquoi des factures électroniques ?

Les factures électroniques peuvent prendre une variété de formats numériques, tels que le PDF (que nous utiliserons), et peuvent être transmises via des portails en ligne, des CRM, etc. Leur traitement peut être automatisé, ce qui réduit le temps de gestion, les risques d’erreurs, les besoins d’impressions, le stockage physique, l’impact écologique, etc.
Il est également appelé format intelligent ou hybride car il peut être lu par un être humain comme par un ordinateur.
C’est aussi un format qui deviendra obligatoire et indispensable dans les mois ou années à venir dans tous les pays du monde (Factur-x en Europe), notamment pour tout ce qui touche à l’administration.

4D Write Pro et le format Factur-X/ZUGFeRD

4D Write Pro permet déjà de produire des fichiers au format PDF et, depuis 4D V20 R3, également aux formats PDF/A2 et PDF/A3. Pour les factures électroniques, c’est le format PDF/A3 qui sera utilisé, car il permet d’intégrer des fichiers externes. Dans le cas d’une facture électronique, un seul fichier externe est nécessaire, un fichier XML. Celui-ci doit être le premier si plusieurs fichiers sont intégrés.

En résumé, nous pouvons dire que PDF/A3 + XML = Factur-X (en France) / ZUGFeRD (en Allemagne) et qu’il sera réalisé en une seule étape par 4D Write Pro !

Quel contenu pour XML ?

Le fichier XML de Factur-X/ZUGFeRD contient des informations structurées sur la facture, telles que les coordonnées du vendeur et de l’acheteur, les lignes de facturation, les montants, les taxes, etc.
Les modèles standard européens tels que MINIMUM, BASICWL, EN 16931, BASIC, et EXTENDED sont les plus courants.
Des formats « personnalisés » peuvent également être utilisés, mais leur validation (nous y reviendrons) sera moins évidente et leur utilisation restreinte.

Des informations complètes sur ces formats sont disponibles sur le site fnfe-mpe.org : https://fnfe-mpe.org/factur-x/factur-x_en/

Comment générer un Factur-x/ZUGFeRD?

N’oublions pas qu’une facture électronique est avant tout un PDF dans lequel de nouvelles informations sont incluses. Deux nouveaux attributs ont été ajoutés aux attributs existants pour l’exportation PDF.

Commençons par « facturx »

Cet attribut, facturX, est un objet qui ne contient que deux attributs optionnels.
Cela signifie que la seule présence de cet objet, même vide, suffira à générer un document Factur-X/ZUGFeRD valide.

$options:={}
$options.facturX:={}
$options.facturX.profile:="BASIC" // optional (when passed, it must match the first file XML content)
$options.facturX.version:="1.0" // default value

Viennent ensuite les « fichiers »

De nombreux fichiers peuvent être inclus dans un document PDF/A3. C’est pourquoi l’attribut files est une collection qui contiendra des objets décrivant chacun le fichier à inclure.

Ils auront des attributs qui différeront selon la fonction du fichier. Dans le cas d’une facture électronique, la plupart des attributs sont facultatifs, à l’exception, bien sûr, du contenu XML qui peut être envoyé soit par un attribut data (en tant que texte) , soit par un attribut file (en tant que 4D.File). Rappel : ce doit être le premier fichier de la liste !

Remarques:
Le XML doit être pré-généré et répondre à toutes les exigences de la norme (la démo HDI montre un exemple de création de XML basé sur le profil BASIC). 4D Write Pro ne vérifiera pas le contenu de votre fichier XML, assurez-vous donc de valider votre fichier XML avant de l’insérer dans la facture électronique Factur-X / ZUGFeRD.

$xmlFile:={} // creates the first file object
$xmlFile.name:="factur-x.xml"  // default value
$xmlFile.description:="Factur-X/ZUGFeRD Invoice"  // default value
$xmlFile.mimeType:="text/xml"  // default value
$xmlFile.data:=$xmlText  // MUST be valid, NOT checked by 4D
$xmlFile.relationship:="Data" // default value

$options.files:=[$file]  // more files could be added, the first one always is for facturX/ZUGFeDR

ou (variation, au lieu de $xmlFile.data)

$xmlFile.file:=$xmlFile // actual file on disk that must be a valid xml file

Validation en ligne

Comme mentionné ci-dessus, 4D Write Pro ne valide pas le contenu. Seule la structure est vérifiée. Cependant, il existe des validateurs en ligne. Les plus fiables semblent être veraPDF (https://demo.verapdf.org) et fnfe-mpe.org (https://services.fnfe-mpe.org/account/home). Le second a le double avantage de pouvoir valider le XML lui-même et, d’autre part, une facture complète (voir le HDI pour un exemple complet).

Conclusion

Cette nouvelle fonctionnalité répond à une demande croissante de modernité et satisfait aux exigences légales et administratives.
La génération de factures électroniques en série sera simplifiée, grâce aux modèles génériques et aux méthodes de génération d’arbres XML correctement formatés.
Finalement, le plus difficile sera peut-être de choisir le bon profil les différents possibles, mais c’est souvent l’usage qui dicte ce choix.

Faites-nous part de vos commentaires et de vos réflexions sur cette nouvelle fonctionnalité dans les Forums 4D.

Roland Lannuzel
- Product Owner & 4D Expert - Après avoir étudié l'électronique, Roland s'est lancé dans l'informatique industrielle en tant que développeur et consultant, créant des solutions pour les clients avec une variété de bases de données et de technologies. À la fin des années 80, il est tombé amoureux de 4D et l'a utilisé pour écrire des applications commerciales, notamment des systèmes de comptabilité, de facturation et de messagerie électronique. Il a rejoint la société en 1997 et a contribué à la conception de spécifications, d'outils de test et de démonstrations, ainsi qu'à la formation et à la présentation de la communauté 4D lors de nombreuses conférences. Il continue à façonner activement l'avenir de 4D en définissant de nouvelles fonctionnalités et des outils de développement de bases de données.