IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Delphi et unités "ZUGFeRD-for-Delphi" pour Factur-X/ZUGFeRD la nouvelle norme de facture en 2024


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Direction financière et formateur en gestion et contrôle de gestion
    Inscrit en
    Mai 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Direction financière et formateur en gestion et contrôle de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2003
    Messages : 222
    Par défaut Delphi et unités "ZUGFeRD-for-Delphi" pour Factur-X/ZUGFeRD la nouvelle norme de facture en 2024
    Bonjour à tous,
    Et bien, me voilà bien avec cette nouvelle norme sur les bras. Manquais plus que ça!
    Tout d'abord, je ne savais pas trop où poser ma question : vcl, language ... donc me voici ... ici

    J'ai créé une petite application de facturation pour moi et des copains qui fonctionne simplement et plutôt bien car très orientée pour ma profession de formateur.
    Pour mes états, je déplace des Tlabel et de TShape créés dynamiquement et j'enregistre simplement leur type, leur position et autres infos. Dessin sur un printer.Canvas : Simple, efficace pour l'utilisation faite et gratuit (pas de composant tiers)
    Mes sorties PDF sont faites avec SynPDF, qui imprime aussi à partir d'un Canvas. Très simple.

    Oui mais ... maintenant la norme Factur-X (en France) ou ZUGFeRD (en Allemagne) (c'est la même norme) viens mettre son grain de sel : un PDF/A-3 et un fichier XML attaché (je n'ai jamais fait de XML de ma vie!)
    SynPDF ne génère pas de document en PDF/A-3 demandé par cette norme (réponse du concepteur, seule la norme PDF/A-1 est testée complètement). Je viens de faire un test et malgré le fait de mettre Pdf.PDFA := pdfa3A, la sortie est en PDF/A-1b donc il semblerait que je sois obligé d'abandonner cet outil.

    Sur le site officiel https://fnfe-mpe.org/factur-x/implementer-factur-x/ il y a des liens vers des outils d'implémentation et notamment https://github.com/LandrixSoftware/ZUGFeRD-for-Delphi mais pas de doc pour savoir comment faire marcher ces unitées.
    Il semblerait que ces unités génèrent le PDF et le code XML ... mais je ne les comprends pas .

    Q : Est ce quelqu'un peut m'aider à comprendre comment utiliser les unités Delphi citées ci dessus ? Ou alors, faut-il que je passe par un générateur d'état qui sortirait ce format PDF ? mais dans ce cas, existe t-il un générateur qui travaille sur le mode Canvas ? ou faut il que je revoie toute ma sortie avec un générateur mais lequel ?

    Voilà, en vous remerciant chaleureusement par avance du temps.
    (Je croise les doigts pour que quelqu'un puisse m'aider)

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    aucune idée, mais je suis de tout coeur avec toi

    je bouffe de la norme à la con depuis des mois (des années ?) dans le domaine de la santé...et c'est juste imbuvable et c'est pas ça qui va résoudre les problèmes de désertification médicale, mais ça n'empêche pas de dépenser un pognon de dingue là dedans ! 2 Milliards pour le Segur Santé Numérique ... et ça pousse juste les médecins à partir plus tôt à la retraite ou à sortir des conventions.

    bref, il y a tout de même un projet exemple , donc ça doit être jouable ton truc
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé

    Homme Profil pro
    Direction financière et formateur en gestion et contrôle de gestion
    Inscrit en
    Mai 2003
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Direction financière et formateur en gestion et contrôle de gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2003
    Messages : 222
    Par défaut
    Merci Paul pour le soutien, j'ai vu l'exemple fourni mais il est incomplet et totalement non fonctionnel tel quel! ils utilisent un composant payant (sympa, il te donnent le lien), 2 unités sont absentes du code ... bref, du boulot de m...de histoire de t'em...der encore plus

    Au secours ... quelqu'un pourrait lire les 3 unités intf.ZUGFeRD21.pas, intf.ZUGFeRDHelper.pas et intf.ZUGFeRDMSXML2_TLB.pas et me donner des pistes de démarrage ?

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    en fait, si tu ne connais rien à SOAP ou XML tu vas nager un peu

    dans https://github.com/LandrixSoftware/Z.../master/Schema

    tu as les Schema de la norme, c'est un ensemble de fichiers XML qui définissent les règles selon lesquels doit être construit le XML, c'est totalement imbuvable en général (ou très puissant selon qui en parle)

    et quand on regarde le XML généré ici on ne peut que conclure que c'est une usine à gaz

    perso, je préfère de loin générer le XML "à la main" car c'est juste un fichier texte qui a une structure bien définie

    donc perso j'utilise des fonctions comme celles-ci pour SOAP (qui est du XML)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    const
      XML_UTF8 = '<?xml version="1.0" encoding="utf-8"?>';
     
    function xmlTag(const Name, Params, Value: UTF8String): UTF8String;
    begin
      Result := '<' + Name;
      if Params <> '' then
        Result := Result + ' ' + Params;
      if Value <> '' then
        Result := Result + '>' + Value + '</' + Name + '>'
      else
        Result := Result + '/>';
    end;
     
    function soap(const Header, Body: UTF8String; const ExtraHeader: UTF8String = ''): UTF8String;
    begin
      // SOAP 1.2
      Result := XML_UTF8
              + xmlTag('soap:Envelope', 'xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"' + ExtraHeader,
                  xmlTag('soap:Header', '', Header)
                + xmlTag('soap:Body', '', Body)
              );
    end;
    le seul truc à bien comprendre c'est l'histoire des XML Namespace

    une balise fait parti d'un namespace, par exemple dans SOAP, la base Envelope doit s'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">...</Envelope>
    et tous les enfants héritent de ce NS, tu n'as donc pas besoin de le répéter

    mais comme souvent tu as plusieurs NS dans un même XML, tu peux passer par des alias que tu mets devant la balise et après xmlns

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">...</Envelope>
    et tu peux alors préfixer tes balises avec un des alias présent chez ses parents...comme xsi ou xsd dans ma fonction soap()

    tu peux même avoir des balises dans un NS et ses attributs dans un autre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <saml:AttributeValue>
                  <PurposeOfUse code="normal"
                                codeSystem="1.2.250.1.213.1.1.4.248"
                                codeSystemName="mode acces VIHF 1.0"
                                displayName="Accès normal"
                                xsi:type="CE"
                                xmlns="urn:hl7-org:v3"/>
                </saml:AttributeValue>
    et c'est là que ça devient le bordel 😉

    et il n'y a donc pas une seule façon d'écrire un XML, tant que les NS et leurs alias sont définis correctement, c'est valide.

    avec ça en tête, le document c'est juste un emboîtement de balises avec les NS bien définis, attention aussi à l'encodage...tout en UTF8 et il faut encoder en HTML les caractères " & < et > (&quot; &amp; &lt; &gt; ) qui sont dans des parties texte.

    donc soit tu te casses un peu la tête à comprendre la structure du fichier que tu peux valider avec des outils comme SOAPUI, soit tu pars sur des outils qui sont capables de digérer les schemas et produire des classes objets obscures comme le fait l'exemple sur Git
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre expérimenté Avatar de Galet
    Homme Profil pro
    Consultant/Programmeur Robotique industrielle
    Inscrit en
    Mars 2010
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant/Programmeur Robotique industrielle

    Informations forums :
    Inscription : Mars 2010
    Messages : 325
    Par défaut Facturation électronique
    Bonjour à tous,
    D'après mes conseils, la facturation électronique deviendrait obligatoire à partir de janvier 2025 (déjà plus ou moins opérationnelle pour les marché publics). Cette obligation sera incluse dans un "package" plus conséquent concernant tout le sujet de la facturation (numérotation automatique, impossibilité de modifier une facture...) probablement en lien avec les autres modules de comptabilité.
    Toujours d'après mes informations, aucun logiciel "light", en France, ne répond encore aux impositions fiscales pour se conformer aux impositions européennes.
    Je vais probablement faire évoluer mes propres outils de gestion dans cette direction, mais vais surement attendre encore un peu pour voir ce que nos bureaucrates vont nous pondre .

    @PaultToth :Ce sera effectivement le même bazar que dans le domaine médical. Peut être une nouvelle clientèle pour toi puisque cela va concerner de milliers de petites entreprises, notamment les individuelles.
    Comment em$$$!! des millions de contribuables en leur pourrissant la vie pour piéger quelques mauvais payeurs dont les plus importants passent, de toute façon, au travers des mailles du filet grâce à l'optimisation fiscale.

    Bien l'bonjour,

    ps: Je prie tous les lecteurs, de l'excuser pour cet élan de mauvaise humeur un dimanche soir...en pleine compta !
    Belle soirée entre amis !

  6. #6
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    non je ne vais pas me lancer là dedans, c'est déjà assez le merdier dans le médical

    mais si c'est pareil, c'est clairement fait pour tuer les petits éditeurs qui ne peuvent pas suivre les contraintes qui tombent par wagons entiers. Dans le médical, je suis en train de terminé la vague 1 du Segur alors que la 2 et lancée et la 3 en préparation...et à chaque fois ils en rajoutent une couche...d'ailleurs les exigences sont établies en collaboration avec les gros éditeurs...et si encore ça améliorait les choses, mais en réalité les km d'exigences aboutissent à des solutions qui pourrissent le boulot des médecins...c'est totalement contre productif.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Nouvelles normes TVA pour les facturations?
    Par Adapas dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 02/10/2013, 14h14
  2. Réponses: 5
    Dernier message: 01/06/2011, 14h12
  3. nouvelle norme c++
    Par Invité dans le forum Débuter
    Réponses: 2
    Dernier message: 04/04/2011, 22h52
  4. Navigation Timing : la nouvelle norme de mesure des performances des sites Web
    Par Idelways dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 23/03/2011, 11h53
  5. Réponses: 0
    Dernier message: 23/03/2011, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo