Skip to content

Commit 10921e5

Browse files
committed
zugferd 2.3
1 parent c822215 commit 10921e5

26 files changed

+404
-271
lines changed

Distribution/installtools.ps1

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ If (Test-Path mustangproject){
1212

1313
Invoke-WebRequest -Uri "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.6%2B10/OpenJDK17U-jre_x64_windows_hotspot_17.0.6_10.zip" -OutFile jre.zip
1414
New-Item -Name "mustangproject" -ItemType Directory
15-
Invoke-WebRequest -Uri "https://github.com/ZUGFeRD/mustangproject/releases/download/core-2.11.0/Mustang-CLI-2.11.0.jar" -OutFile mustangproject\Mustang-CLI-2.11.0.jar
15+
Invoke-WebRequest -Uri "https://github.com/ZUGFeRD/mustangproject/releases/download/core-2.14.1/Mustang-CLI-2.14.1.jar" -OutFile mustangproject\Mustang-CLI-2.14.1.jar
1616
#Invoke-WebRequest -Uri "https://dlcdn.apache.org/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.zip" -OutFile apachemaven.zip
1717

1818
Expand-Archive jre.zip

Test/DUnitXZUGFeRDTest.dpr

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ uses
8383
intf.ZUGFeRDInvoiceDescriptorReader,intf.ZUGFeRDInvoiceDescriptorWriter,
8484
intf.ZUGFeRDInvoiceDescriptor1Reader,intf.ZUGFeRDInvoiceDescriptor1Writer,intf.ZUGFeRD10Tests.UnitTests,
8585
intf.ZUGFeRDInvoiceDescriptor20Reader,intf.ZUGFeRDInvoiceDescriptor20Writer,intf.ZUGFeRD20Tests.UnitTests,
86-
intf.ZUGFeRDInvoiceDescriptor22CIIReader,intf.ZUGFeRDInvoiceDescriptor22Writer,intf.ZUGFeRD22Tests.UnitTests,
86+
intf.ZUGFeRDInvoiceDescriptor23CIIReader,intf.ZUGFeRDInvoiceDescriptor23Writer,intf.ZUGFeRD23Tests.UnitTests,
8787
intf.ZUGFeRDInvoiceDescriptor22UBLReader,
8888
intf.XRechnungUBLTests.UnitTests,
8989
intf.ZUGFeRDBaseTests.UnitTests

Test/intf.ZUGFeRD20Tests.UnitTests.pas

+3-3
Original file line numberDiff line numberDiff line change
@@ -541,7 +541,7 @@ procedure TZUGFeRD20Tests.TestWriteAndReadExtended;
541541
// desc.AddLogisticsServiceCharge(10m, "Logistics service charge", TaxTypes.AAC, TaxCategoryCodes.AC, 7m);
542542
//
543543
// desc.PaymentTerms.DueDate = timestamp.AddDays(14);
544-
// desc.SetInvoiceReferencedDocument("RE-12345", timestamp);
544+
// desc.AddInvoiceReferencedDocument("RE-12345", timestamp);
545545
//
546546
//
547547
// //set additional LineItem data
@@ -724,8 +724,8 @@ procedure TZUGFeRD20Tests.TestWriteAndReadExtended;
724724
// Assert.AreEqual(529.87m, loadedInvoice.DuePayableAmount);
725725
//
726726
// //InvoiceReferencedDocument
727-
// Assert.AreEqual("RE-12345", loadedInvoice.InvoiceReferencedDocument.ID);
728-
// Assert.AreEqual(timestamp, loadedInvoice.InvoiceReferencedDocument.IssueDateTime);
727+
// Assert.AreEqual("RE-12345", loadedInvoice.GetInvoiceReferencedDocuments().First().ID);
728+
// Assert.AreEqual(timestamp, loadedInvoice.GetInvoiceReferencedDocuments().First().IssueDateTime);
729729
//
730730
//
731731
// //Line items

Test/intf.ZUGFeRD22Tests.UnitTests.pas Test/intf.ZUGFeRD23Tests.UnitTests.pas

+176-118
Large diffs are not rendered by default.

Test/intf.ZUGFeRDBaseTests.UnitTests.pas

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ procedure TZUGFeRDBaseTests.TestGetVersion;
122122
Assert.AreEqual(TZUGFeRDInvoiceDescriptor.GetVersion(path), TZUGFeRDVersion.Version20);
123123

124124
path := '..\..\..\demodata\zugferd21\zugferd_2p1_BASIC_Einfach-factur-x.xml';
125-
Assert.AreEqual(TZUGFeRDInvoiceDescriptor.GetVersion(path), TZUGFeRDVersion.Version22);
125+
Assert.AreEqual(TZUGFeRDInvoiceDescriptor.GetVersion(path), TZUGFeRDVersion.Version23);
126126
end;
127127

128128
initialization

Test/intf.ZUGFeRDElectronicAddressSchemeIdentifiers.UnitTests.pas

+2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ procedure TZUGFeRDElectronicAddressSchemeIdentifiersTest.TestFromString;
3939
Assert.AreEqual(TZUGFeRDElectronicAddressSchemeIdentifiers.EanLocationCode, TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString('0088'));
4040
Assert.AreEqual(TZUGFeRDElectronicAddressSchemeIdentifiers.LeitwegID, TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString('0204'));
4141
Assert.AreEqual(TZUGFeRDElectronicAddressSchemeIdentifiers.HungaryVatNumber, TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString('9910'));
42+
Assert.AreEqual(TZUGFeRDElectronicAddressSchemeIdentifiers.AustriaVatNumber, TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString('9914'));
4243
Assert.AreEqual(TZUGFeRDElectronicAddressSchemeIdentifiers.AndorraVatNumber, TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString('9922'));
4344
Assert.AreEqual(TZUGFeRDElectronicAddressSchemeIdentifiers.AlbaniaVatNumber, TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString('9923'));
4445
Assert.AreEqual(TZUGFeRDElectronicAddressSchemeIdentifiers.BosniaAndHerzegovinaVatNumber, TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString('9924'));
@@ -89,6 +90,7 @@ procedure TZUGFeRDElectronicAddressSchemeIdentifiersTest.TestEnumToString;
8990
Assert.AreEqual('0088', TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString(TZUGFeRDElectronicAddressSchemeIdentifiers.EanLocationCode));
9091
Assert.AreEqual('0204', TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString(TZUGFeRDElectronicAddressSchemeIdentifiers.LeitwegID));
9192
Assert.AreEqual('9910', TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString(TZUGFeRDElectronicAddressSchemeIdentifiers.HungaryVatNumber));
93+
Assert.AreEqual('9914', TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString(TZUGFeRDElectronicAddressSchemeIdentifiers.AustriaVatNumber));
9294
Assert.AreEqual('9922', TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString(TZUGFeRDElectronicAddressSchemeIdentifiers.AndorraVatNumber));
9395
Assert.AreEqual('9923', TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString(TZUGFeRDElectronicAddressSchemeIdentifiers.AlbaniaVatNumber));
9496
Assert.AreEqual('9924', TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString(TZUGFeRDElectronicAddressSchemeIdentifiers.BosniaAndHerzegovinaVatNumber));

Test/intf.ZUGFeRDProfile.UnitTests.pas

+9-9
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,17 @@ procedure TZUGFeRDProfileTest.TestEnumToString;
8484
Assert.AreEqual('urn:cen.eu:en16931:2017',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Comfort, TZUGFeRDVersion.Version20));
8585
Assert.AreEqual('urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Extended, TZUGFeRDVersion.Version20));
8686

87-
Assert.AreEqual('urn:factur-x.eu:1p0:minimum',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Minimum, TZUGFeRDVersion.Version22));
88-
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Basic, TZUGFeRDVersion.Version22));
89-
Assert.AreEqual('urn:factur-x.eu:1p0:basicwl',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.BasicWL, TZUGFeRDVersion.Version22));
90-
Assert.AreEqual('urn:cen.eu:en16931:2017',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Comfort, TZUGFeRDVersion.Version22));
91-
Assert.AreEqual('urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Extended, TZUGFeRDVersion.Version22));
92-
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.XRechnung1, TZUGFeRDVersion.Version22));
87+
Assert.AreEqual('urn:factur-x.eu:1p0:minimum',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Minimum, TZUGFeRDVersion.Version23));
88+
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:factur-x.eu:1p0:basic',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Basic, TZUGFeRDVersion.Version23));
89+
Assert.AreEqual('urn:factur-x.eu:1p0:basicwl',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.BasicWL, TZUGFeRDVersion.Version23));
90+
Assert.AreEqual('urn:cen.eu:en16931:2017',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Comfort, TZUGFeRDVersion.Version23));
91+
Assert.AreEqual('urn:cen.eu:en16931:2017#conformant#urn:factur-x.eu:1p0:extended',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.Extended, TZUGFeRDVersion.Version23));
92+
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.XRechnung1, TZUGFeRDVersion.Version23));
9393
if Now >= EncodeDate(2024, 2, 1) then
94-
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.XRechnung, TZUGFeRDVersion.Version22))
94+
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.XRechnung, TZUGFeRDVersion.Version23))
9595
else
96-
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.3',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.XRechnung, TZUGFeRDVersion.Version22));
97-
Assert.AreEqual('urn.cpro.gouv.fr:1p0:ereporting',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.EReporting, TZUGFeRDVersion.Version22));
96+
Assert.AreEqual('urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_2.3',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.XRechnung, TZUGFeRDVersion.Version23));
97+
Assert.AreEqual('urn.cpro.gouv.fr:1p0:ereporting',TZUGFeRDProfileExtensions.EnumToString(TZUGFeRDProfile.EReporting, TZUGFeRDVersion.Version23));
9898
end;
9999

100100
initialization

intf.ZUGFeRDBuyerOrderReferencedDocument.pas

+3-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ TZUGFeRDBuyerOrderReferencedDocument = class(TZUGFeRDBaseReferencedDocument)
2929
private
3030
FLineID: string;
3131
public
32-
//Referenz zur Bestellposition BT-132
32+
/// <summary>
33+
/// Reference to the order position BT-132
34+
/// </summary>
3335
property LineID: string read FLineID write FLineID;
3436
end;
3537

intf.ZUGFeRDElectronicAddressSchemeIdentifiers.pas

+8
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ interface
4747
/// </summary>
4848
HungaryVatNumber = 9910,
4949

50+
/// <summary>
51+
/// Austria VAT number
52+
/// </summary>
53+
AustriaVatNumber = 9914,
54+
5055
/// <summary>
5156
/// Andorra VAT number
5257
/// </summary>
@@ -275,6 +280,7 @@ class function TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.EnumToString
275280
TZUGFeRDElectronicAddressSchemeIdentifiers.EanLocationCode: Result := '0088';
276281
TZUGFeRDElectronicAddressSchemeIdentifiers.LeitwegID: Result := '0204';
277282
TZUGFeRDElectronicAddressSchemeIdentifiers.HungaryVatNumber: Result := '9910';
283+
TZUGFeRDElectronicAddressSchemeIdentifiers.AustriaVatNumber: Result := '9914';
278284
TZUGFeRDElectronicAddressSchemeIdentifiers.AndorraVatNumber: Result := '9922';
279285
TZUGFeRDElectronicAddressSchemeIdentifiers.AlbaniaVatNumber: Result := '9923';
280286
TZUGFeRDElectronicAddressSchemeIdentifiers.BosniaAndHerzegovinaVatNumber: Result := '9924';
@@ -331,6 +337,8 @@ class function TZUGFeRDElectronicAddressSchemeIdentifiersExtensions.FromString(
331337
Result := TZUGFeRDElectronicAddressSchemeIdentifiers.LeitwegID else
332338
if SameText(s,'9910') then
333339
Result := TZUGFeRDElectronicAddressSchemeIdentifiers.HungaryVatNumber else
340+
if SameText(s,'9914') then
341+
Result := TZUGFeRDElectronicAddressSchemeIdentifiers.AustriaVatNumber else
334342
if SameText(s,'9922') then
335343
Result := TZUGFeRDElectronicAddressSchemeIdentifiers.AndorraVatNumber else
336344
if SameText(s,'9923') then

intf.ZUGFeRDHelper.pas

+6-6
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ function TZUGFeRDPdfHelper.Visualize(const _InvoiceXMLData: String;
309309
exit;
310310
if not FileExists(JavaRuntimeEnvironmentPath+'bin\java.exe') then
311311
exit;
312-
if not FileExists(MustangprojectPath+'Mustang-CLI-2.11.0.jar') then
312+
if not FileExists(MustangprojectPath+'Mustang-CLI-2.14.1.jar') then
313313
exit;
314314

315315
tmpFilename := TPath.GetTempFileName;
@@ -323,7 +323,7 @@ function TZUGFeRDPdfHelper.Visualize(const _InvoiceXMLData: String;
323323
cmd.Add('pushd '+QuoteIfContainsSpace(ExtractFilePath(tmpFilename)));
324324

325325
cmd.Add(QuoteIfContainsSpace(JavaRuntimeEnvironmentPath+'bin\java.exe')+' -Xmx1G '+
326-
'-Dfile.encoding=UTF-8 -jar '+QuoteIfContainsSpace(MustangprojectPath+'Mustang-CLI-2.11.0.jar')+
326+
'-Dfile.encoding=UTF-8 -jar '+QuoteIfContainsSpace(MustangprojectPath+'Mustang-CLI-2.14.1.jar')+
327327
' --action visualize ' +
328328
'-source-xml '+ QuoteIfContainsSpace(tmpFilename));
329329

@@ -353,7 +353,7 @@ function TZUGFeRDPdfHelper.VisualizeFile(const _InvoiceXMLFilename: String;
353353
exit;
354354
if not FileExists(JavaRuntimeEnvironmentPath+'bin\java.exe') then
355355
exit;
356-
if not FileExists(MustangprojectPath+'Mustang-CLI-2.11.0.jar') then
356+
if not FileExists(MustangprojectPath+'Mustang-CLI-2.14.1.jar') then
357357
exit;
358358

359359
tmpFilename := TPath.GetTempFileName;
@@ -363,7 +363,7 @@ function TZUGFeRDPdfHelper.VisualizeFile(const _InvoiceXMLFilename: String;
363363
cmd.Add('pushd '+QuoteIfContainsSpace(ExtractFilePath(tmpFilename)));
364364

365365
cmd.Add(QuoteIfContainsSpace(JavaRuntimeEnvironmentPath+'bin\java.exe')+' -Xmx1G '+
366-
'-Dfile.encoding=UTF-8 -jar '+QuoteIfContainsSpace(MustangprojectPath+'Mustang-CLI-2.11.0.jar')+
366+
'-Dfile.encoding=UTF-8 -jar '+QuoteIfContainsSpace(MustangprojectPath+'Mustang-CLI-2.14.1.jar')+
367367
' --action visualize' +
368368
' --source '+ QuoteIfContainsSpace(_InvoiceXMLFilename)+
369369
' --out '+tmpFilename+'.html'+
@@ -403,7 +403,7 @@ function TZUGFeRDPdfHelper.VisualizeFileAsPdf(const _InvoiceXMLFilename: String;
403403
exit;
404404
if not FileExists(JavaRuntimeEnvironmentPath+'bin\java.exe') then
405405
exit;
406-
if not FileExists(MustangprojectPath+'Mustang-CLI-2.11.0.jar') then
406+
if not FileExists(MustangprojectPath+'Mustang-CLI-2.14.1.jar') then
407407
exit;
408408

409409
tmpFilename := TPath.GetTempFileName;
@@ -413,7 +413,7 @@ function TZUGFeRDPdfHelper.VisualizeFileAsPdf(const _InvoiceXMLFilename: String;
413413
cmd.Add('pushd '+QuoteIfContainsSpace(ExtractFilePath(tmpFilename)));
414414

415415
cmd.Add(QuoteIfContainsSpace(JavaRuntimeEnvironmentPath+'bin\java.exe')+' -Xmx1G '+
416-
'-Dfile.encoding=UTF-8 -jar '+QuoteIfContainsSpace(MustangprojectPath+'Mustang-CLI-2.11.0.jar')+
416+
'-Dfile.encoding=UTF-8 -jar '+QuoteIfContainsSpace(MustangprojectPath+'Mustang-CLI-2.14.1.jar')+
417417
' --action pdf' +
418418
' --source '+ QuoteIfContainsSpace(_InvoiceXMLFilename)+
419419
' --out '+tmpFilename+'.pdf'+

0 commit comments

Comments
 (0)