Skip to content

Commit 871a4c1

Browse files
committed
added more decimals to BT-147
#713
1 parent ea84e6c commit 871a4c1

File tree

3 files changed

+33
-10
lines changed

3 files changed

+33
-10
lines changed

ZUGFeRD/InvoiceDescriptor23CIIWriter.cs

+20-9
Original file line numberDiff line numberDiff line change
@@ -1340,7 +1340,7 @@ private void _WriteItemLevelAppliedTradeAllowanceCharge(ProfileAwareXmlTextWrite
13401340
if (tradeAllowanceCharge.ChargePercentage.HasValue)
13411341
{
13421342
Writer.WriteStartElement("ram", "CalculationPercent", profile: Profile.Extended); // not in XRechnung, according to CII-SR-122
1343-
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.ChargePercentage.Value, 2));
1343+
_writeOptionalAdaptiveValue(writer, tradeAllowanceCharge.ChargePercentage.Value, 2, 4);
13441344
Writer.WriteEndElement();
13451345
}
13461346
#endregion
@@ -1349,7 +1349,7 @@ private void _WriteItemLevelAppliedTradeAllowanceCharge(ProfileAwareXmlTextWrite
13491349
if (tradeAllowanceCharge.BasisAmount.HasValue)
13501350
{
13511351
Writer.WriteStartElement("ram", "BasisAmount", profile: Profile.Extended); // not in XRechnung, according to CII-SR-123
1352-
Writer.WriteValue(_formatDecimal(tradeAllowanceCharge.BasisAmount.Value, 2));
1352+
_writeOptionalAdaptiveValue(writer, tradeAllowanceCharge.BasisAmount.Value, 2, 4);
13531353
Writer.WriteEndElement();
13541354
}
13551355
#endregion
@@ -1448,19 +1448,13 @@ private void _writeAdditionalReferencedDocument(AdditionalReferencedDocument doc
14481448
} // !_writeAdditionalReferencedDocument()
14491449

14501450

1451-
private void _writeOptionalAdaptiveAmount(ProfileAwareXmlTextWriter writer, string prefix, string tagName, decimal? value, int numDecimals = 2, int maxNumDecimals = 4, bool forceCurrency = false, Profile profile = Profile.Unknown)
1451+
private void _writeOptionalAdaptiveValue(ProfileAwareXmlTextWriter writer, decimal? value, int numDecimals = 2, int maxNumDecimals = 4, Profile profile = Profile.Unknown)
14521452
{
14531453
if (!value.HasValue)
14541454
{
14551455
return;
14561456
}
14571457

1458-
writer.WriteStartElement(prefix, tagName, profile);
1459-
if (forceCurrency)
1460-
{
1461-
writer.WriteAttributeString("currencyID", this.Descriptor.Currency.EnumToString());
1462-
}
1463-
14641458
decimal rounded = Math.Round(value.Value, numDecimals, MidpointRounding.AwayFromZero);
14651459
if (value == rounded)
14661460
{
@@ -1470,6 +1464,23 @@ private void _writeOptionalAdaptiveAmount(ProfileAwareXmlTextWriter writer, stri
14701464
{
14711465
writer.WriteValue(_formatDecimal(value.Value, maxNumDecimals));
14721466
}
1467+
} // !_writeOptionalAdaptiveValue()
1468+
1469+
1470+
private void _writeOptionalAdaptiveAmount(ProfileAwareXmlTextWriter writer, string prefix, string tagName, decimal? value, int numDecimals = 2, int maxNumDecimals = 4, bool forceCurrency = false, Profile profile = Profile.Unknown)
1471+
{
1472+
if (!value.HasValue)
1473+
{
1474+
return;
1475+
}
1476+
1477+
writer.WriteStartElement(prefix, tagName, profile);
1478+
if (forceCurrency)
1479+
{
1480+
writer.WriteAttributeString("currencyID", this.Descriptor.Currency.EnumToString());
1481+
}
1482+
1483+
_writeOptionalAdaptiveValue(writer, value, numDecimals, maxNumDecimals);
14731484

14741485
writer.WriteEndElement(); // !tagName
14751486
} // !_writeOptionalAdaptiveAmount()

ZUGFeRD/TradeLineItem.cs

+12
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,18 @@ public IList<AbstractTradeAllowanceCharge> GetTradeAllowanceCharges()
477477
} // !GetTradeAllowanceCharges()
478478

479479

480+
public IList<TradeAllowance> GetTradeAllowances()
481+
{
482+
return this._TradeAllowanceCharges.Where(s => s is TradeAllowance).Select(s => s as TradeAllowance).ToList();
483+
} // !GetTradeAllowances()
484+
485+
486+
public IList<TradeCharge> GetTradeCharges()
487+
{
488+
return this._TradeAllowanceCharges.Where(s => s is TradeCharge).Select(s => s as TradeCharge).ToList();
489+
} // !GetTradeCharges()
490+
491+
480492
/// <summary>
481493
/// As an allowance or charge on total item price, attaching it to the corresponding item.
482494
/// </summary>

ZUGFeRD/ZUGFeRD.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Find more about the library here:
2020
https://github.com/stephanstapel/ZUGFeRD-csharp</Description>
2121
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
2222
<PackageProjectUrl>https://github.com/stephanstapel/ZUGFeRD-csharp/</PackageProjectUrl>
23-
<PackageTags>zugferd xml</PackageTags>
23+
<PackageTags>zugferd xml xrechnung pdf invoice</PackageTags>
2424
<Copyright>Stephan Stapel, s2 industries, 2025</Copyright>
2525
<AssemblyVersion>17.2.0</AssemblyVersion>
2626
<AssemblyTrademark>http://www.s2-industries.com</AssemblyTrademark>

0 commit comments

Comments
 (0)