Skip to content

Commit

Permalink
Support for both XRechnung 2.0 and XRechnung 1.2
Browse files Browse the repository at this point in the history
closes #113
  • Loading branch information
stephanstapel committed Nov 10, 2020
1 parent 4660129 commit ac1fde2
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 1,360 deletions.
40 changes: 36 additions & 4 deletions ZUGFeRD-Test/ZUGFeRD21Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,17 +137,17 @@ public void TestReferenceMinimumInvoice()


[TestMethod]
public void TestReferenceXRechnungCII()
public void TestReferenceXRechnung1CII()
{
string path = @"..\..\..\demodata\xRechnung\xRechnung CII.xml";
InvoiceDescriptor desc = InvoiceDescriptor.Load(path);

Assert.AreEqual(desc.Profile, Profile.XRechnung);
Assert.AreEqual(desc.Profile, Profile.XRechnung1);
Assert.AreEqual(desc.Type, InvoiceType.Invoice);
Assert.AreEqual(desc.InvoiceNo, "0815-99-1-a");
Assert.AreEqual(desc.TradeLineItems.Count, 2);
Assert.AreEqual(desc.LineTotalAmount, 1445.98m);
} // !TestReferenceXRechnungCII()
} // !TestReferenceXRechnung1CII()


[TestMethod]
Expand Down Expand Up @@ -181,6 +181,38 @@ public void TestInvoiceWithAttachment()
break;
}
}
}
} // !TestInvoiceWithAttachment()


[TestMethod]
public void TestXRechnung1()
{
InvoiceDescriptor desc = this.InvoiceProvider.CreateInvoice();

MemoryStream ms = new MemoryStream();

desc.Save(ms, ZUGFeRDVersion.Version21, Profile.XRechnung1);
ms.Seek(0, SeekOrigin.Begin);
Assert.AreEqual(desc.Profile, Profile.XRechnung1);

InvoiceDescriptor loadedInvoice = InvoiceDescriptor.Load(ms);
Assert.AreEqual(loadedInvoice.Profile, Profile.XRechnung1);
} // !TestXRechnung1()


[TestMethod]
public void TestXRechnung2()
{
InvoiceDescriptor desc = this.InvoiceProvider.CreateInvoice();

MemoryStream ms = new MemoryStream();

desc.Save(ms, ZUGFeRDVersion.Version21, Profile.XRechnung);
ms.Seek(0, SeekOrigin.Begin);
Assert.AreEqual(desc.Profile, Profile.XRechnung);

InvoiceDescriptor loadedInvoice = InvoiceDescriptor.Load(ms);
Assert.AreEqual(loadedInvoice.Profile, Profile.XRechnung);
} // !TestXRechnung2()
}
}
2 changes: 1 addition & 1 deletion ZUGFeRD/InvoiceDescriptor1Writer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -589,7 +589,7 @@ public override void Save(InvoiceDescriptor descriptor, Stream stream)

if (Descriptor.BillingPeriodStart.HasValue && Descriptor.BillingPeriodEnd.HasValue)
{
Writer.WriteStartElement("ram:BillingSpecifiedPeriod", Profile.BasicWL | Profile.Basic | Profile.Comfort | Profile.Extended | Profile.XRechnung);
Writer.WriteStartElement("ram:BillingSpecifiedPeriod", Profile.BasicWL | Profile.Basic | Profile.Comfort | Profile.Extended | Profile.XRechnung1 | Profile.XRechnung);

Writer.WriteStartElement("ram:StartDateTime");
_writeElementWithAttribute(Writer, "udt:DateTimeString", "format", "102", _formatDate(this.Descriptor.BillingPeriodStart.Value));
Expand Down
2 changes: 1 addition & 1 deletion ZUGFeRD/InvoiceDescriptor20Writer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ public override void Save(InvoiceDescriptor descriptor, Stream stream)

if (Descriptor.BillingPeriodStart.HasValue || Descriptor.BillingPeriodEnd.HasValue)
{
Writer.WriteStartElement("ram:BillingSpecifiedPeriod", Profile.BasicWL | Profile.Basic | Profile.Comfort | Profile.Extended | Profile.XRechnung);
Writer.WriteStartElement("ram:BillingSpecifiedPeriod", Profile.BasicWL | Profile.Basic | Profile.Comfort | Profile.Extended | Profile.XRechnung1 | Profile.XRechnung);
if (Descriptor.BillingPeriodStart.HasValue)
{
Writer.WriteStartElement("ram:StartDateTime");
Expand Down
Loading

0 comments on commit ac1fde2

Please sign in to comment.