diff --git a/Elwig/Helpers/Export/Ebics.cs b/Elwig/Helpers/Export/Ebics.cs index 7aa0876..c84882e 100644 --- a/Elwig/Helpers/Export/Ebics.cs +++ b/Elwig/Helpers/Export/Ebics.cs @@ -86,9 +86,9 @@ namespace Elwig.Helpers.Export { var full = ShowAddresses == AddressMode.Full; await Writer.WriteLineAsync($""" - {a.PostalDest.Country.Alpha2} {(full ? $"{SecurityElement.Escape(a1?[..Math.Min(70, a1.Length)])} {SecurityElement.Escape(a2?[..Math.Min(16, a2.Length)])}" : $"{a.Address[..Math.Min(70, a.Address.Length)]}")} <{(full ? "PstCd" : "AdrLine")}>{a.PostalDest.AtPlz?.Plz}{(full ? " " : " ")}{SecurityElement.Escape(a.PostalDest.AtPlz?.Ort.Name)} + <{(full ? "" : "!--")}Ctry>{a.PostalDest.Country.Alpha2} """); } diff --git a/Tests/HelperTests/EbicsTest.cs b/Tests/HelperTests/EbicsTest.cs index 4a3d90f..87720ed 100644 --- a/Tests/HelperTests/EbicsTest.cs +++ b/Tests/HelperTests/EbicsTest.cs @@ -14,16 +14,16 @@ namespace Tests.HelperTests { public static readonly string FileName = Path.Combine(Path.GetTempPath(), "test_ebics.xml"); public static readonly string Iban = "AT123456789012345678"; - private static void ValidateSchema(string xmlPath, int version) { + private static void ValidateSchema(string xmlPath, int version, string? extra = null) { XmlDocument xml = new(); xml.Load(xmlPath); var schema = new XmlTextReader(Assembly.GetExecutingAssembly() - .GetManifestResourceStream($"Tests.Resources.Schemas.pain.001.001.{version:00}.xsd")!); + .GetManifestResourceStream($"Tests.Resources.Schemas.pain.001.001.{version:00}{extra}.xsd")!); xml.Schemas.Add(null, schema); xml.Validate(null); } - private static async Task CreateXmlFile(int version) { + private static async Task CreateXmlFile(int version, Ebics.AddressMode mode = Ebics.AddressMode.Full) { var v = new PaymentVar() { Year = 2020, AvNr = 1, @@ -35,7 +35,7 @@ namespace Tests.HelperTests { using var ctx = new AppDbContext(); var members = ctx.Members.ToList(); Assert.That(members, Has.Count.GreaterThan(0)); - using var exporter = new Ebics(v, FileName, version); + using var exporter = new Ebics(v, FileName, version, mode); await exporter.ExportAsync(members.Select(m => new Transaction(m, 1234.56m, "EUR", m.MgNr % 100))); } @@ -64,6 +64,12 @@ namespace Tests.HelperTests { Assert.DoesNotThrow(() => ValidateSchema(FileName, 3)); } + [Test] + public async Task Test_CustomerCreditTransferInitiationV03_AT() { + await CreateXmlFile(3, Ebics.AddressMode.Lines); + Assert.DoesNotThrow(() => ValidateSchema(FileName, 3, ".AT")); + } + [Test] public async Task Test_CustomerCreditTransferInitiationV04() { await CreateXmlFile(4); diff --git a/Tests/Resources/Schemas/pain.001.001.03.AT.xsd b/Tests/Resources/Schemas/pain.001.001.03.AT.xsd new file mode 100644 index 0000000..123309d --- /dev/null +++ b/Tests/Resources/Schemas/pain.001.001.03.AT.xsd @@ -0,0 +1,1340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file