Skip to content

Commit

Permalink
Simplification in writing ZUGFeRD 2.2 files
Browse files Browse the repository at this point in the history
Additional comment from
#263
  • Loading branch information
stephanstapel committed May 6, 2024
1 parent 442632a commit 86f6a6a
Showing 1 changed file with 29 additions and 32 deletions.
61 changes: 29 additions & 32 deletions ZUGFeRD/InvoiceDescriptor22Writer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -828,47 +828,44 @@ public override void Save(InvoiceDescriptor descriptor, Stream stream)

// 13. SpecifiedTradeAllowanceCharge (optional)
IList<TradeAllowanceCharge> _allowanceCharges = this.Descriptor.GetTradeAllowanceCharges();
if (_allowanceCharges?.Count > 0)
foreach (TradeAllowanceCharge tradeAllowanceCharge in _allowanceCharges)
{
foreach (TradeAllowanceCharge tradeAllowanceCharge in _allowanceCharges)
{
Writer.WriteStartElement("ram:SpecifiedTradeAllowanceCharge");
Writer.WriteStartElement("ram:ChargeIndicator");
Writer.WriteElementString("udt:Indicator", tradeAllowanceCharge.ChargeIndicator ? "true" : "false");
Writer.WriteEndElement(); // !ram:ChargeIndicator
Writer.WriteStartElement("ram:SpecifiedTradeAllowanceCharge");
Writer.WriteStartElement("ram:ChargeIndicator");
Writer.WriteElementString("udt:Indicator", tradeAllowanceCharge.ChargeIndicator ? "true" : "false");
Writer.WriteEndElement(); // !ram:ChargeIndicator

if (tradeAllowanceCharge.ChargePercentage.HasValue)
{
Writer.WriteStartElement("ram:CalculationPercent", profile: Profile.Extended | Profile.XRechnung1 | Profile.XRechnung);
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ChargePercentage.Value));
Writer.WriteEndElement();
}

if (tradeAllowanceCharge.BasisAmount.HasValue)
{
Writer.WriteStartElement("ram:BasisAmount", profile: Profile.Comfort | Profile.Extended | Profile.XRechnung1 | Profile.XRechnung);
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.BasisAmount.Value));
Writer.WriteEndElement();
}
if (tradeAllowanceCharge.ChargePercentage.HasValue)
{
Writer.WriteStartElement("ram:CalculationPercent", profile: Profile.Extended | Profile.XRechnung1 | Profile.XRechnung);
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ChargePercentage.Value));
Writer.WriteEndElement();
}

Writer.WriteStartElement("ram:ActualAmount");
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ActualAmount, 2));
if (tradeAllowanceCharge.BasisAmount.HasValue)
{
Writer.WriteStartElement("ram:BasisAmount", profile: Profile.Comfort | Profile.Extended | Profile.XRechnung1 | Profile.XRechnung);
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.BasisAmount.Value));
Writer.WriteEndElement();
}

Writer.WriteStartElement("ram:ActualAmount");
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ActualAmount, 2));
Writer.WriteEndElement();

Writer.WriteOptionalElementString("ram:Reason", tradeAllowanceCharge.Reason);

if (tradeAllowanceCharge.Tax != null)
{
Writer.WriteStartElement("ram:CategoryTradeTax");
Writer.WriteElementString("ram:TypeCode", tradeAllowanceCharge.Tax.TypeCode.EnumToString());
if (tradeAllowanceCharge.Tax.CategoryCode.HasValue)
Writer.WriteElementString("ram:CategoryCode", tradeAllowanceCharge.Tax.CategoryCode?.EnumToString());
Writer.WriteElementString("ram:RateApplicablePercent", _formatDecimal(tradeAllowanceCharge.Tax.Percent));
Writer.WriteEndElement();
}
Writer.WriteOptionalElementString("ram:Reason", tradeAllowanceCharge.Reason);

if (tradeAllowanceCharge.Tax != null)
{
Writer.WriteStartElement("ram:CategoryTradeTax");
Writer.WriteElementString("ram:TypeCode", tradeAllowanceCharge.Tax.TypeCode.EnumToString());
if (tradeAllowanceCharge.Tax.CategoryCode.HasValue)
Writer.WriteElementString("ram:CategoryCode", tradeAllowanceCharge.Tax.CategoryCode?.EnumToString());
Writer.WriteElementString("ram:RateApplicablePercent", _formatDecimal(tradeAllowanceCharge.Tax.Percent));
Writer.WriteEndElement();
}
Writer.WriteEndElement();
}

// 14. SpecifiedLogisticsServiceCharge (optional)
Expand Down

0 comments on commit 86f6a6a

Please sign in to comment.