Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE] Implement ZUGFeRD 2.3 #119

Closed
danielmarschall opened this issue Sep 19, 2024 · 5 comments · Fixed by #121
Closed

[FEATURE] Implement ZUGFeRD 2.3 #119

danielmarschall opened this issue Sep 19, 2024 · 5 comments · Fixed by #121
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@danielmarschall
Copy link
Contributor

danielmarschall commented Sep 19, 2024

Hello,

Yesterday, ZUGFeRD 2.3 has been released. I wonder, are there changes required in this PHP library?
https://www.ferd-net.de/standards/zugferd-2.3/zugferd-2.3.html

@danielmarschall danielmarschall added the enhancement New feature or request label Sep 19, 2024
@horstoeko
Copy link
Owner

horstoeko commented Sep 20, 2024

HI @danielmarschall,

Thank you for the request. I also noticed the new version yesterday. Unfortunately, I haven't had time to review the documentation in full yet. What I see, however, is that a lot has been done in the EXTENDED profile (change of cardinalities, etc.) Here I will probably have to recreate the entities for serialization/deserialization. This is a bit of work for which I have little time at the moment. I will try to get a handle on it somehow next week... I don't think it's super urgent for now. The changes only affect (as I said) the EXTENDED profile, and that should at least not be used in Germany.

Best regards

@horstoeko
Copy link
Owner

Hi @danielmarschall ,

I had some time this morning and had a look at the changes. It only affects the extended profile, where 5 new attributes have also been added:

  • 5 business terms which are present in D22B but not in D16B, and which belong to the Order-X EXTENDED profile and have been added in Factur-X EXTENDED: for the item description: industry assigned ID, model name ID, batch ID, brand name ID, model name
  • Order reference at item level: issuer, assigned ID, referenced order item, issue date of the order item reference
  • “Role code” for all participants, cardinality 0..1
  • Item ID on previous invoice reference at item level
  • Reference to the preceding invoice (ID, issue date, type code) in the block for advance payments (BG-X-45).

In addition, the validation rules for EXTENDED have probably been changed - but this does not affect the library as I have not implemented my own validation.

I will keep my feet still for now and take things easy. I don't think it's necessary to go into blind actionism. I'm going to take things calmly.

Kind regards...

@danielmarschall
Copy link
Contributor Author

Thank you very much for checking this!

The email newslettter of FeRD says "Kleine Fehlerkorrekturen in allen Profilen", so I guess this also affects the XRechnung3 profile. Do you have a clue what they mean with small fixes?

I think the issue can stay open as long-term TODO, maybe a contributor would be interested in implementing it.

@horstoeko
Copy link
Owner

Hi @danielmarschall,

The email newslettter of FeRD says "Kleine Fehlerkorrekturen in allen Profilen", so I guess this also affects the XRechnung3 profile. Do you have a clue what they mean with small fixes?

From the docs:

Factur-X.xml baut auf UN/CEFCAT CII D22B auf (statt D16B), um der EN 16931 genauer zu entsprechen (BG-3 Kardinalität 0..n)
Alle Profile (mit Ausnahme von MINIMUM): BG-3 Kardinalität 0..n anstelle von 0..1

Profil EN 16931, BASIC BASIC WL; Korrekturen in Excel:

  • BT-159 (Herkunftsland eines Artikels): Kardinalität 1..1 (nur auf Child-Ebene)
  • BT-47 (Amtliche ID des): Kardinalität 0..1 (nicht 1..1)
  • BT-61(Amtliche ID des Zahlungsempfängers): Kardinalität 0..1 (nicht 1..1)
  • Aktualisierte Excel-Datei:
  • Neue Spalte für französische EXTENDED-CTC-FR BT IDs
  • Neue Spalte, in der das Vorhandensein aller Daten in jedem Profil angezeigt wird
  • Durch EN 16931 aktualisierte Liste der Geschäftsregeln (Business Rules)

Profil EXTENDED: Einrichtung von IDs für alle BT (BT-X-zzz).

Profil EXTENDED: Neuer BT hinzugefügt:

  • 5 Geschäftsbegriffe, die in D22B vorhanden sind, aber nicht in D16B, und die dem Profil Order-X EXTENDED angehören und in Factur-X EXTENDED hinzugefügt wurden: für die Artikelbeschreibung: Industrie zugeordnete ID, Modellnamen-ID, Chargen-ID, Markennamen-ID, Modellname
  • Referenz der Bestellung auf Positionsebene: Emittent, zugewiesene ID, Referenzierte Bestellposition, Ausgabedatum der Referenz der Bestellposition
  • “Rollen-Code” für alle Beteiligten, Kardinalität 0..1
    Factur-X Spezifikation 1.01.07 ©FNFE-MPE | FeRD - All rights reserved - © September 18. 2024 Seite 5 / 87
    Versions- nummer Versions- datum Autor der Modifikation Beschreibung der Modifikation
  • Positions-ID auf vorausgegangenen Rechnungsbezug auf Positionsebene
  • Bezug zur voraufgehenden Rechnung (Kennung, Ausgabedatum, Typenschlüssel) im Block für Vorauszahlungen (BG-X-45).

Profil EXTENDED, modifizierte Kardinalitäten:

  • BT-22 (Notizinhalt) : 0..1 statt 1..1, weil um einen Code für den Inhalt ergänzt
  • BT-46 (Käufer Identifikator) geändert zur Kardinalität 0..n anstatt 0..1, um dem französischem B2B Mandat der CTC Reform zu entsprechen (und in Vorgriff auf Weiterentwicklung der EN 16931).
  • BT-127 (Notizinhalt auf Positionsebene): 0..1 statt 1..1, , weil um einen Code für den Inhalt ergänzt.
  • BT-X-27: Einem Emittenten zugewiesene Dokumenten-ID für zusätzliches Dokument auf Positionsebene: 1..1 statt 0..1, um mit der Entsprechung auf Dokumentenebene gleichzuziehen.
  • BT-X-299: Dokumentenbeschreibung für zusätzliches Dokument auf Positionsebene: 0..1 statt 1..1, um mit der Entsprechung auf Dokumentenebene gleichzuziehen.
  • BT-X-331: Vorausgehende Rechnungsreferenz auf Positionsebene: 0..1 statt 1..1, sofern bereits auf Dokumentenebene referenziert (BG-3), und nur sofern der Positionsbezug des vorausgehenden Rechnungsbezug auf Positionsebene gegeben ist.
  • Anpassung: Postanschrift für Dritte ist 0..1 anstatt von 1..1: Verkaufsvertreter, Steuerbeauftragter des Käufers, Endverbraucher, Kaufvertreter => ausschließlich Verkäufer, Käufer und Steuerbeauftragter des Verkäufers haben eine obligatorische Postanschrift.
  • Globale ID ist 0..n für alle Parteien der Anpassung: ShipToTrade (BT-71), Zahlungsempfänger (BT-60), Zahlungspflichtiger (BT-X-479), Zahlungspflichtiger unter festgelegten Zahlungsbedingungen (um mehrere Zahlungsempfänger in einem Zahlungsplan zu ermöglichen).
  • Name des Rechnungsstellers (BT-X-207) und Rechnungsempfängers (BT-X-226) ist 1..1 (anstatt 0..1).
  • Land Unterabteilung Name des Rechnungsempfängers (BT-X-240) ist 0..1 statt 0..n (Korrektur in Excel).
  • Amtliche ID des Zahlungspflichtigen (BT-61): Kardinalität ist 0..1 statt 1..1 (Korrektur in Excel).
    Factur-X Spezifikation 1.01.07 ©FNFE-MPE | FeRD - All rights reserved - © September 18. 2024 Seite 6 / 87
    Versions- nummer Versions- datum Autor der Modifikation Beschreibung der Modifikation
  • BG-16: Kardinalität 0..n statt 0..1 um mehrere Bankkonten für Zahlungspflichtige zu ermöglichen (gemäß EN 16931, Korrektur in Excel).
  • Angewandte Gewerbesteuer auf LOGISTIKDIENSTGEBÜHR (BT-X-273-00): Kardinalität 1..n statt 0..n.
  • Gesamtbetrag mit USt. (BT-112): Kardinalität 1..1 statt 1..2 (Dieser Betrag braucht nicht in zwei Währungen angegeben werden).

Profil EXTENDED: BR-O-11, BR-O-12, BR-O-13, BR-O-14 wurden gelöscht, um Rechnungen mit Positionen außerhalb des Geltungsbereichs und anderen Positionsarten zu ermöglichen.

Profil EXTENDED: Änderung der Geschäftsregeln, um eine Toleranz von 0,01 € für Zuschläge oder Abschläge auf Positions- bzw. Dokumentenebene zu ermöglichen, die bei der Anwendung von Rechenregeln auftreten (z.B. bei Berechnung der USt auf Positionsebene, oder wo Preise inklusive USt. definiert werden, insbesondere bei B2C-Rechnungen):

  • BR-S-08, BR-S-09 wird ersetzt durch BR-FXEXT-S-08, BR-FXEXT-S-09
  • BR-Z-08, BR-E-08, BR-AE-08, BR-IC-08, BR-G-08, BR-O-08, BR-AF-08, BR-AG-08, wird ersetzt durch BR-FXEXT-Z-08, BR-FXEXT-E-08, BR-FXEXT-AE-08, BR-FXEXT-IC-08, BR-FXEXT-G-08, BR-FXEXT-O-08, BR-FXEXT-AF-08, BR-FXEXT-AG-08.
  • BR-CO-10, BR-CO-11, BR-CO-12, BR-CO-13 wird ersetzt durch BR-FXEXT-CO-10, BR-FXEXT-CO-11, BR-FXEXT-CO-12, BR-FXEXT-CO-13
  • BR-CO-17 gilt nicht mehr (redundant)

Profil EXTENDED: 3 neue Geschäftsregeln wurden erforderlich wegen der der neuen Geschäftsbegriffe (Business Terms): BR-FXEXT-01, BR-FXEXT-02, BR-FXEXT-03.

I think the issue can stay open as long-term TODO, maybe a contributor would be interested in implementing it.

I think I can tackle the issue next week. It will take some time, as changes have been made to the schema definitions (XSD). I generate the serialization/deserialization from these XSD files. In the past, I've often found that the XSDs were sometimes a bit “flawed”... :-)

@horstoeko
Copy link
Owner

Good morning @danielmarschall,

I used the weekend to add ZUGFeRD 2.3/Factur-X 1.07 to my library. The changes were in fact quite manageable, so that I can do the merge quite soon (once I have done some manual tests) and publish a new release.

horstoeko added a commit that referenced this issue Sep 23, 2024
#119 Implemented changes from ZUGFeRD 2.3
Repository owner locked as resolved and limited conversation to collaborators Sep 23, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants