diff --git a/ZUGFeRD/InvoiceDescriptor20Writer.cs b/ZUGFeRD/InvoiceDescriptor20Writer.cs index 3dfff904..14bf7ddb 100644 --- a/ZUGFeRD/InvoiceDescriptor20Writer.cs +++ b/ZUGFeRD/InvoiceDescriptor20Writer.cs @@ -727,7 +727,7 @@ public override void Save(InvoiceDescriptor descriptor, Stream stream, ZUGFeRDFo Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ActualAmount)); Writer.WriteEndElement(); - Writer.WriteOptionalElementString("ram", "ReasonCode", tradeAllowanceCharge.Reason); // BT-98 + Writer.WriteOptionalElementString("ram", "ReasonCode", tradeAllowanceCharge.ReasonCode.GetDescriptionAttribute()); // BT-98 Writer.WriteOptionalElementString("ram", "Reason", tradeAllowanceCharge.Reason); // BT-97 if (tradeAllowanceCharge.Tax != null) diff --git a/ZUGFeRD/InvoiceDescriptor22UBLWriter.cs b/ZUGFeRD/InvoiceDescriptor22UBLWriter.cs index 441a181e..7fd8c0c0 100644 --- a/ZUGFeRD/InvoiceDescriptor22UBLWriter.cs +++ b/ZUGFeRD/InvoiceDescriptor22UBLWriter.cs @@ -430,19 +430,6 @@ public override void Save(InvoiceDescriptor descriptor, Stream stream, ZUGFeRDFo Writer.WriteElementString("cbc", "ChargeIndicator", tradeAllowanceCharge.ChargeIndicator ? "true" : "false"); - Writer.WriteStartElement("cbc", "Amount"); // BT-92 / BT-99 - Writer.WriteAttributeString("currencyID", this.Descriptor.Currency.EnumToString()); - Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ActualAmount)); - Writer.WriteEndElement(); - - if (tradeAllowanceCharge.BasisAmount != null) - { - Writer.WriteStartElement("cbc", "BaseAmount"); // BT-93 / BT-100 - Writer.WriteAttributeString("currencyID", this.Descriptor.Currency.EnumToString()); - Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.BasisAmount)); - Writer.WriteEndElement(); - } - if (tradeAllowanceCharge.ReasonCode != AllowanceReasonCodes.Unknown) { Writer.WriteStartElement("cbc", "AllowanceChargeReasonCode"); // BT-97 / BT-104 @@ -457,6 +444,19 @@ public override void Save(InvoiceDescriptor descriptor, Stream stream, ZUGFeRDFo Writer.WriteEndElement(); } + Writer.WriteStartElement("cbc", "Amount"); // BT-92 / BT-99 + Writer.WriteAttributeString("currencyID", this.Descriptor.Currency.EnumToString()); + Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ActualAmount)); + Writer.WriteEndElement(); + + if (tradeAllowanceCharge.BasisAmount != null) + { + Writer.WriteStartElement("cbc", "BaseAmount"); // BT-93 / BT-100 + Writer.WriteAttributeString("currencyID", this.Descriptor.Currency.EnumToString()); + Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.BasisAmount)); + Writer.WriteEndElement(); + } + Writer.WriteStartElement("cac", "TaxCategory"); Writer.WriteElementString("cbc", "ID", tradeAllowanceCharge.Tax.CategoryCode.ToString()); if (tradeAllowanceCharge.Tax?.Percent != null)