AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen

Ein Thema von jziersch · begonnen am 8. Nov 2024 · letzter Beitrag vom 26. Mai 2025
Antwort Antwort
jziersch

Registriert seit: 9. Okt 2003
Ort: München
260 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen

  Alt 25. Jan 2025, 09:35
In der TWPXSeller gibt es VATID und TATid. Was gehört da rein? Es gibt ja die Steuernummer und die UmsStID.
Du meinst wahrscheinlich TCompanyData

Aktuell wird nur VATID verwendet (also UmsStID) und entsprechend zugewiesen. Alle anderen Felder sind zugänglich über den Pfad zu der TTradeParty Struktur. Als Beispielcode siehe bitte die TCompanyData.AssignTo()

Edit: Ich habe den code wie unten ergänzt. Damit wird sowohl TaxID also auch VATId geschrieben. Es wird dann ein mehrfach Eintrag erzeugt. Ob das so unterstützt wird kann ich im Moment nicht sagen. Der code ist auf jeden Fall aber ein gutes Beispiel wie man mehrfache Einträge erzeugen kann.

Code:
procedure TCompanyData.AssignTo(Dest: TTradeParty);
var i : Integer;
begin
  if Self<>nil then
  begin
    i := 1;
    if VATID<>'' then
    begin
       Dest.SpecifiedTaxRegistration[i].ID.SetValue(VATID,TTaxID.VA_VAT_number);
       inc(i);
    end;
    if TAXId<>'' then
    begin
       Dest.SpecifiedTaxRegistration[i].ID.SetValue(TAXId,TTaxID.FC_tax_number);
    end;
// ...
  end;
end;

procedure TCompanyData.AssignFrom(Source: TTradeParty);
var val : TWPXElement;
    i : Integer;
begin
  if Source<>nil then
  begin  
    VATID := '';
    TAXId := '';
    if Source.ReadElementValue([Integer(TXTradeParty.SpecifiedTaxRegistration)], val) then
    begin
       for i := 0 to (val as TTaxRegistration).ListCount-1 do
       begin
          if TTaxRegistration(val)[i].ID.schemeID=TTaxID.VA_VAT_number then
               VATID := TTaxRegistration(val)[i].ID.ValueStr
          else TAXId := TTaxRegistration(val)[i].ID.ValueStr;
       end;
    end;
//    ...
  end;
end;
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF

Geändert von jziersch (25. Jan 2025 um 10:04 Uhr) Grund: Schreibe TaxID
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#2

AW: WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen

  Alt 25. Jan 2025, 11:16
Super Danke. Ich komme der Sache näher.

Ein paar Fragen habe ich noch.

[Edit]
[Erledigt]Wie kann ich aus der TWPXFactur die PaymentData, oder die Rechnungsnummer bzw. das Rechnungsdatum auslesen?
Hab ich mittlerweile gefunden
Mit einem XML-Viewer kann man da schon einiges lernen https://xmlexplorer.github.io/#google_vignette
[/Edit]

Und mir ist gerade noch eine Kleinigkeit aufgefallen.
Wenn ich die Artikel in die TWPXFatur eintrage
Delphi-Quellcode:
   for I := 0 to A.PositionList.Count-1 do
   begin
      wpxfctr1.AddSale(
         A.PositionList[i].Kurztext, //ProductName
         A.PositionList[i].EP, //SinglePriceNET
         A.PositionList[i].Menge, //Quantity
         A.PositionList[i].MwSt, //VATRate
         WPXPaymentData.TAXCategory ); //VATCategory
                                                         //QuantityCode
                                                         //Totsl
   end;
dann steht hinterher in der XML:
XML-Code:
 <rsm:SupplyChainTradeTransaction>
   <ram:IncludedSupplyChainTradeLineItem>
    <ram:AssociatedDocumentLineDocument>
     <ram:LineID>1</ram:LineID>
    </ram:AssociatedDocumentLineDocument>
    <ram:SpecifiedTradeProduct>
     <ram:Name>ABUS IP-Kamery TVIP44510</ram:Name>
    </ram:SpecifiedTradeProduct>
    <ram:SpecifiedLineTradeAgreement>
     <ram:NetPriceProductTradePrice>
      <ram:ChargeAmount>149.00</ram:ChargeAmount>
      <ram:BasisQuantity unitCode="H87">1.0000</ram:BasisQuantity> <!-- VPE? -->
     </ram:NetPriceProductTradePrice>
    </ram:SpecifiedLineTradeAgreement>
    <ram:SpecifiedLineTradeDelivery>
     <ram:BilledQuantity unitCode="H87">2.0000</ram:BilledQuantity> <!-- Tatsächliche Artikelmenge -->
    </ram:SpecifiedLineTradeDelivery>
    <ram:SpecifiedLineTradeSettlement>
     <ram:ApplicableTradeTax>
      <ram:TypeCode>VAT</ram:TypeCode>
      <ram:CategoryCode>S</ram:CategoryCode>
      <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
     </ram:ApplicableTradeTax>
     <ram:SpecifiedTradeSettlementLineMonetarySummation>
      <ram:LineTotalAmount>298.00</ram:LineTotalAmount>
     </ram:SpecifiedTradeSettlementLineMonetarySummation>
    </ram:SpecifiedLineTradeSettlement>
   </ram:IncludedSupplyChainTradeLineItem>
BaseQuantity ist 1, BillingQuantity ist 2.
Also gehe ich mal davon aus, dass sich BaseQuatity auf die VPE bezieht, oder halt die Menge je Einzelpreis.

Wenn ich das jedoch auslesen will:
wpxfctr.Transaction.Items[i].Line.SpecifiedLineTradeAgreement.NetPriceProductTradePrice.BasisQuantity dann gibt es unter NetPriceProductTracePrice kein BillingQuantity. Wie komme ich dann beim Auslesen an die tatsächliche Menge?

Ein Ähnliches Problem habe ich mit der LineID, die ja im AddSale nicht übergeben wird. In meinem erstellten factur-x.XML ist sie dann immer 1.
Müsste die sich nicht nach jedem AddSale um 1 erhöhen?

Ich taste mich jetzt langsam an die E-Rechnung ran, also bitte ich bei den Fragen, wie dumm sie auch sind, um etwas Nachsicht
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (25. Jan 2025 um 12:51 Uhr)
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
260 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen

  Alt 25. Jan 2025, 15:31
AddSale ist eine high-level API die nicht alle Probleme lösen kann oder will.
Die Funktion AddSale erstellt ein element der Klasse TSupplyChainTradeItem welches es zurückgibt. Dort kann man dann weitere elemente anlegen indem man einfach darauf zugreift.

Empfehlenswert ist anstatt einfach mal Delphi code zu erzeugen:
procedure SaveToFile(Filename : String; Mode : TWPXOrderDumpMode = TWPXOrderDumpMode.DelphiCode);

Das kann man auch nach dem laden einer Beispiel XML Datei machen. Damit hat man bereits das Code gerüst um eine XML zu erzeugen und die nötigen Zeilen um Werte zu lesen.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
1.002 Beiträge
 
#4

AW: WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen

  Alt 25. Jan 2025, 17:26
Ich hab mir mal die Dokumentation heruntergeladen https://www.ferd-net.de/publikatione...publikationen/

Das erklärt die ganzen Eigenschaften recht gut.
Damit versuche ich mal mein Grück.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Bodenseematze

Registriert seit: 10. Jul 2023
76 Beiträge
 
#5

AW: WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen

  Alt 26. Mai 2025, 09:25
Ich habe mir mal diesen Thread durchgelesen - ohne es bisher ausprobiert zu haben: auf den ersten Blick sieht das WPXOrder ganz gut aus

Aber ein paar Fragen hätte ich vor dem richtigen Testen noch:
1.) hat es irgendwelche Abhängigkeiten zu Java oder kommt es komplett ohne aus?
2.) welche Delphi-Versionen werden unterstützt bzw. bis zu welcher alten Version ist es kompatibel?
3.) unterstützt es inzwischen die aktuellen ZUGFeRD-Versionen 2.3.2 / 2.3.3?
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
260 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: WPXOrder - X-Factur (ZUGFeRD) XML Daten lesen und erzeugen

  Alt 26. Mai 2025, 14:17
1) das ist in pascal geschrieben und verwendet generics. Es ist eine Umsetzung der ersten ZUGFeRD specs als pascal code.

2) Delphi 10.1 oder neuer empfehle ich

3) Leider wurde der Aufbau der XML Dateien der Specs ohne ersichtlichen Grund komplett geändert sodass sich die letzten Downloads nicht mehr umwandeln lassen. Die Erneuerungen betreffen nach meinem Verständnis aber nur die Codes, die zum Teil in WPXOrder als Enums implementiert sind. Da die Verwendung von strings hier möglich ist, sollte dadurch kein Hindernis entstehen.

Die Besonderheit von WPXOrder ist:

Man kann eine XML Rechnungsdatei lesen und sich Delphi Code schreiben lassen der dann genau diese Rechnungsdatei wieder schreibt.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz