Factures électroniques avec FileMaker
L'implémentation de factures électroniques dans les solutions FileMaker existantes est un sujet de plus en plus important dans le monde des affaires numériques. En raison notamment de l'obligation légale croissante d'utiliser des factures électroniques pour certains processus commerciaux et des avantages qui en découlent, comme la rentabilité et l'automatisation des processus, il devient indispensable pour les entreprises de développer des solutions efficaces pour le traitement de ces factures. Dans ce contexte, différentes normes sont disponibles pour les factures électroniques, notamment XRechnung et ZUGFeRD/Factur-X. Ces normes présentent différents défis techniques, notamment en ce qui concerne la lecture et le traitement des données qu'elles contiennent.
Les défis de la lecture des factures électroniques
L'un des plus grands défis lors de la lecture de factures électroniques est la diversité des formats et des types de données à traiter. Alors que la structure de la XFacture est relativement claire et qu'il suffit d'analyser un document XML, le traitement d'une facture ZUGFeRD ou Factur-X représente un plus grand défi. Il s'agit de documents hybrides qui contiennent à la fois un document PDF et des données XML intégrées.
Différence entre XFacturation et ZUGFeRD/Factur-X
XFacturation : cette norme contient toutes les données de facturation pertinentes dans un fichier XML pur. La lecture de ces données nécessite l'analyse du document XML afin d'en extraire les informations nécessaires. Le défi ici réside principalement dans la complexité du format XML et la nécessité de s'assurer que tous les champs de données pertinents sont correctement lus et interprétés.
ZUGFeRD/Factur-X : dans ce format, les données XML sont intégrées dans un fichier PDF. Cela signifie que le PDF doit d'abord être extrait et analysé pour pouvoir accéder aux données XML. Ce processus nécessite des outils ou des plugins spéciaux pour extraire de manière fiable les informations intégrées du document PDF.
Possibilités de traitement des PDF dans FileMaker
L'extraction des données XML du PDF constitue un défi clé lors de la lecture des factures ZUGFeRD/Factur-X. Il existe ici différentes approches et outils qui peuvent être intégrés dans FileMaker :
Plugin MBS (logiciel MonkeyBread): Le plug-in MBS est une extension puissante pour FileMaker qui offre une multitude de fonctionnalités, dont des capacités de traitement PDF complètes. Ce plug-in permet à FileMaker de lire et d'analyser les PDF afin d'en extraire les données XML intégrées. Il permet également d'accéder aux métadonnées du PDF et prend en charge l'analyse syntaxique et le traitement du contenu qu'il contient. Le plug-in MBS est particulièrement utile pour les développeurs qui ont besoin d'une solution flexible et complète pour traiter les PDF dans leurs flux de travail FileMaker.
Plugin DynaPDFLe plugin DynaPDF est un autre outil puissant pour le traitement des PDF dans FileMaker. Il offre des fonctions de création, de modification et d'extraction de fichiers PDF et est parfaitement adapté à l'accès aux données XML intégrées dans les factures ZUGFeRD/Factur-X. DynaPDF permet d'extraire les données XML en toute sécurité et de les rendre disponibles pour un traitement ultérieur dans FileMaker. En outre, le plug-in offre des fonctions d'analyse et d'extraction de texte et d'images à partir de PDF, ce qui en fait une solution polyvalente pour des besoins de traitement PDF complets.
Exigences et considérations techniques
Lors de l'utilisation de tels plug-ins et outils, différents aspects techniques doivent être pris en compte. Il s'agit d'une part de l'octroi de licences pour les plug-ins, car nombre de ces outils sont payants et proposent différents modèles de licence en fonction de l'étendue des fonctionnalités. D'autre part, il est nécessaire de planifier soigneusement l'intégration dans les solutions FileMaker existantes afin de s'assurer que les plug-ins fonctionnent de manière transparente et qu'il n'y a pas de problèmes de compatibilité.
Un autre point important est la performance de la solution. La lecture et le traitement de données XML à partir de PDF peuvent être gourmands en temps de calcul, en particulier lorsque de grandes quantités de factures doivent être traitées simultanément. Il est donc conseillé de concevoir la solution de manière à ce qu'elle fonctionne efficacement avec les ressources disponibles et qu'elle garantisse une vitesse de traitement élevée.
Logiciel ERP FileMaker avec traitement intégré des factures électroniques.
Plus d'informations
Importer et traiter XFactures dans FileMaker
Une implémentation complète de l'importation d'une XFacture dans une solution FileMaker comprend, outre les champs obligatoires généraux de la facture, le traitement des postes de documents (postes individuels) et une validation des données afin de garantir l'intégrité des informations importées. Le processus est décrit en détail ci-dessous.
Plugin BaseElements pour l'analyse syntaxique XML
Le plugin BaseElements permet de simplifier considérablement le traitement des données XML dans FileMaker. Le plugin offre une multitude de fonctions permettant d'étendre les fonctionnalités de FileMaker, notamment l'analyse syntaxique des données XML. L'une des fonctions les plus utilisées à cette fin est BE_XPath, qui permet d'extraire des données XML d'un fichier ou d'une variable.
Aperçu du plugin BaseElements
Le plugin BaseElements est un plugin gratuit spécialement conçu pour FileMaker afin de fournir des fonctionnalités supplémentaires. Il est particulièrement utile pour travailler avec XML, JSON, la gestion de fichiers et d'autres besoins spécifiques que FileMaker ne prend pas en charge à l'origine. La fonction BE_XPath permet d'extraire rapidement et précisément des données XML en utilisant des expressions XPath pour extraire des parties spécifiques du document XML.
Instructions pas à pas pour importer une XFacture
1. préparation dans FileMaker
Assurez-vous que votre base de données FileMaker contient les tables et les rubriques dont vous avez besoin, comme décrit précédemment :
Tableau principal "Factures
- Numéro de facture
- Date de la facture
- Nom de l'acheteur
- Adresse de l'acheteur
- Nom du vendeur
- Adresse du vendeur
- Montant total
- Montant de la TVA
- Monnaie
- Conditions de paiement
Tableau lié "Postes de facturation
- Description de l'article
- Quantité
- Prix unitaire
- Montant total du poste
- Taux de TVA
Cours accéléré FileMaker
FileMaker rapide et efficace
apprendre en 20 chapitres.
Participer gratuitement
2. importer le fichier XML
Chargez le contenu du fichier XML dans une variable, par exemple à l'aide de la fonction Importer des données ou en lisant directement le contenu d'un fichier.
Définir une variable [$xmlPfad ; Valeur : "Chemin/vers/XFacture.xml"]
Définir une variable [$xmlContent ; Valeur : BE_ReadTextFromFile($xmlPfad)]
--- Importation des champs obligatoires avec BE_XPath ---
Définir une variable [$Numéro de facture ; Valeur : BE_XPath($xmlContent ; "//cbc:ID" ; "cbc=urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2")]
Définir une variable [$DateFacture ; Valeur : DateTimeMySQLToFMDate ( BE_XPath($xmlContent ; "//cbc:IssueDate" ; "cbc=urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2") )]
Définir une variable [$NomAcheteur ; Valeur : BE_XPath($xmlContent ; "//*[local-name()='AccountingCustomerParty']/*[local-name()='Party']/*[local-name()='PartyName']/*[local-name()='Name']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]
Définir une variable [$AdresseAcheteur ; Valeur : BE_XPath($xmlContent ; "//*[local-name()='AccountingCustomerParty']/*[local-name()='Party']/*[local-name()='PostalAddress']/*[local-name()='StreetName']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd :CommonAggregateComponents-2") & ", " & BE_XPath($xmlContent ; "//*[local-name()='AccountingCustomerParty']/*[local-name()='Party']/*[local-name()='PostalAddress']/*[local-name()='CityName']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]
Définir une variable [$Vnom du vendeur ; Valeur : BE_XPath($xmlContent ; "//*[local-name()='AccountingSupplierParty']/*[local-name()='Party']/*[local-name()='PartyName']/*[local-name()='Name']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]
Définir une variable [$Vadresse du vendeur ; Valeur : BE_XPath($xmlContent ; "//*[local-name()='AccountingSupplierParty']/*[local-name()='Party']/*[local-name()='PostalAddress']/*[local-name()='StreetName']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd :CommonAggregateComponents-2") & ", " & BE_XPath($xmlContent ; "//*[local-name()='AccountingSupplierParty']/*[local-name()='Party']/*[local-name()='PostalAddress']/*[local-name()='CityName']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]
Définir une variable [$Total ; Valeur : BE_XPath($xmlContent ; "//cac:LegalMonetaryTotal/cbc:PayableAmount" ; "cbc=urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]
Définir une variable [$Montant de la TVA ; Valeur : BE_XPath($xmlContent ; "//cac:TaxTotal/cbc:TaxAmount" ; "cbc=urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]
Définir une variable [$Devise ; Valeur : BE_XPath($xmlContent ; "cbc:DocumentCurrencyCode")]
Définir une variable [$Conditions de paiement ; Valeur : BE_XPath($xmlContent ; "//cac:PaymentTerms/cbc:Note" ; "cbc=urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]]
--- Créer un nouvel enregistrement dans la table principale ---
Nouvel enregistrement/requête
Définir la valeur du champ [Factures::Numéro de facture ; $Numéro de facture]
Définir la valeur du champ [Factures::Date de facture ; $Date de facture]
Définir la valeur du champ [Factures::Nom de l'acheteur ; $Nom de l'acheteur]
Définir la valeur du champ [Factures::Adresse de l'acheteur ; $Adresse de l'acheteur]
Définir la valeur du champ [Factures::Nom du vendeur ; $Vnom du vendeur]
Définir la valeur du champ [Factures::Adresse du vendeur ; $Vadresse du vendeur]
Définir la valeur du champ [Factures::Montant total ; $Montant total]
Définir la valeur du champ [Factures::Montant TVA ; $Montant TVA]
Définir la valeur du champ [Factures::Monnaie ; $Monnaie]
Définir la valeur du champ [Factures::Conditions de paiement ; $Conditions de paiement]
--- Importation des positions de documents ---
Définir une variable [$PpositionNombre ; Valeur : BE_XPath($xmlContent ; "count(//cac:InvoiceLine)")]]
Définir une variable [$Counter ; Valeur : 1]
Début de la boucle
Définir une variable [$Article Description ; Valeur : BE_XPath($xmlContent ; "//*[local-name()='InvoiceLine'][" & $lineIndex & "]/*[local-name()='Item']/*[local-name()='Name']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2")]
Définir une variable [$Menge ; Valeur : LireCommeNombre(Echanger(BE_XPath($xmlContent ; "//*[local-name()='InvoiceLine'][" & $lineIndex & "]/*[local-name()='InvoicedQuantity']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2") ; "." ; ","))]
Définir une variable [$Eprix unitaire ; Valeur : LireCommeNombre(Echanger(BE_XPath($xmlContent ; "//*[nom_local()='InvoiceLine'][" & $lineIndex & "]/*[nom_local()='Price']/*[nom_local()='PriceAmount']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2") ; "." ; ","))]
Définir une variable [$MontantTotalDePosition ; Valeur : BE_XPath($xmlContent ; "//cac:InvoiceLine[" & $Counter & "]/cbc:LineExtensionAmount")]]
Définir une variable [$MwStatz ; Valeur : LireCommeNombre(Echanger(BE_XPath($xmlContent ; "//*[local-name()='InvoiceLine'][" & $lineIndex & "]/*[local-name()='Item']/*[local-name()='ClassifiedTaxCategory']/*[local-name()='Percent']" ; "cbc=urn :oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2|cac=urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2") ; "." ; ","))]
Aller à la mise en page "Postes de facturation"
Nouvel enregistrement/requête
Définir la valeur du champ [Articles facturés::Description de l'article ; $ADescription de l'article]
Définir la valeur du champ [Articles de facturation::Quantité ; $Manque]
Définir la valeur du champ [Articles de facturation::Prix unitaire ; $EPrix unitaire]
Définir la valeur du champ [Articles de facturation::Montant total de la position ; $MontantTotalDeLaPosition]
Définir la valeur du champ [Articles facturés::Taux de TVA ; $MTVA]
Quitter la boucle Si $PpositionsNombre = $Compteur
Définir une variable [$Counter ; valeur : $Counter + 1]
Fin de la boucle
3. validation des données importées
Vérifier que tous les champs obligatoires sont présents et qu'aucune donnée ne manque. Cela peut être fait par un script qui s'assure que toutes les variables nécessaires contiennent des valeurs.
Si [Valeur réelle(Factures::Numéro de facture)]]
Afficher sa propre boîte de dialogue ["Erreur : le numéro de facture est manquant"].
Quitter le script en cours
Fin quand
Si [Valeur réelle(Factures::Date de la facture)]]
Afficher sa propre boîte de dialogue ["Erreur : la date de la facture est manquante"].
Quitter le script en cours
Fin quand
--- Effectuer d'autres contrôles de validation pour tous les champs obligatoires ---
Si [Somme des postes de facture::Montant total du poste ≠ Factures::Montant total]
Afficher sa propre boîte de dialogue ["Erreur : le total des postes du document ne correspond pas au montant total"].
Quitter le script en cours
Fin quand
Autres champs et données des factures électroniques
Dans notre guide, nous nous sommes concentrés sur l'importation des principaux champs obligatoires afin de fournir un aperçu de base de l'intégration des factures électroniques dans FileMaker. Il est toutefois important de mentionner que les factures électroniques peuvent contenir de nombreux autres champs et informations qui sont importants en fonction de l'application.
Par exemple, l'ID d'acheminement, qui est surtout utilisé dans le secteur public pour identifier les unités administratives, peut jouer un rôle crucial pour déterminer le destinataire correct. Des champs supplémentaires tels que des numéros de référence spécifiques, des informations de paiement et des détails fiscaux sont également pertinents pour étendre le traitement des factures et répondre aux exigences légales et aux besoins individuels de l'entreprise. Une implémentation complète doit donc être soigneusement examinée et, le cas échéant, complétée par ces champs supplémentaires afin de garantir une solution complète. Utilisez pour cela les documentation officielle.
Quatre plateformes ERP FileMaker pour des processus opérationnels optimaux.
Demander des informations
ZUGFeRD et plus encore avec le plugin MBS et DynaPDF
Le site MBS FileMaker Plugin est un plug-in extrêmement polyvalent pour FileMaker, qui offre des fonctionnalités avancées, notamment la possibilité de lire et de générer des factures électroniques. Le plug-in MBS permet aux développeurs de mettre en œuvre des solutions d'automatisation complètes pour le traitement des données XML et des informations de facturation intégrées. Une caractéristique particulièrement précieuse est l'intégration de DynaPDF, une puissante bibliothèque PDF qui permet de créer et de manipuler des documents PDF, y compris ceux qui prennent en charge le format ZUGFeRD/Factur-X. Cela signifie que le plugin est non seulement capable d'extraire les données des PDF et de les importer dans FileMaker, mais aussi de générer de nouvelles factures électroniques conformes aux normes en vigueur.
Le plugin MBS est livré avec une vaste collection de fichiers d'exemple couvrant différents cas d'application, dont la création et l'importation de factures ZUGFeRD. Ces exemples constituent une excellente base pour se familiariser rapidement avec le fonctionnement du plugin. En outre, le fabricant met à disposition sur son site web un guide détaillé qui décrit étape par étape comment créer des factures électroniques à l'aide du plug-in MBS et de DynaPDF. Un guide actuel est disponible sous ce lien qui contient également des liens de téléchargement pour des exemples de fichiers de factures électroniques. Cette ressource est particulièrement utile aux développeurs qui souhaitent aller plus loin dans l'automatisation des processus de facturation dans FileMaker et créer des factures électroniques conformes aux normes ZUGFeRD/Factur-X.
Contribution au forum sur l'intégration des factures électroniques
Nous avons publié un nouveau message sur notre forum, consacré à la discussion sur l'intégration et le traitement des factures électroniques dans FileMaker. Dans ce billet, nous invitons toutes les personnes intéressées à poser des questions personnelles et à partager leurs expériences. Qu'il s'agisse de l'utilisation de plug-ins tels que le plug-in MBS ou le plug-in BaseElements, de l'implémentation de scripts ou de l'optimisation de workflows, cette contribution au forum est l'endroit idéal pour échanger des idées et profiter de l'expertise de la communauté. Nous souhaitons susciter une discussion animée dans laquelle les solutions, les défis et les meilleures pratiques peuvent être abordés. Venez nous rendre visite et participez à la discussion !
Résumé
L'intégration de la lecture des factures électroniques dans les solutions FileMaker existantes présente différents défis, notamment en ce qui concerne le traitement des factures ZUGFeRD/Factur-X. Alors que la facture X représente principalement un défi basé sur XML, le traitement ZUGFeRD/Factur-X nécessite l'utilisation d'outils PDF spéciaux et de plug-ins tels que MBS et DynaPDF. Une planification minutieuse, la prise en compte des exigences techniques et le choix des plug-ins adéquats sont essentiels pour réussir la mise en œuvre d'une solution efficace et fiable.
Le plugin gratuit BaseElements et la commande BE_XPath permettent de traiter les données XML dans FileMaker et d'importer des données de manière fiable. L'utilisation de XPath permet une extraction précise des informations pertinentes et une adaptation flexible aux différentes structures XML.
Si des fichiers ZUGFeRD ou Factur-X doivent également être importés et lus, il est recommandé d'utiliser le plugin MBS en combinaison avec le plugin DynaPDF, qui sont également livrés avec les fichiers d'exemple correspondants.
