From b988ab7ff2e22da3544a58fd95b1a13b10c41b0a Mon Sep 17 00:00:00 2001 From: Eryk Gajos Date: Fri, 12 Sep 2025 13:06:21 +0200 Subject: [PATCH 1/2] - Added new field --- ZUGFeRD/AbstractTradeAllowanceCharge.cs | 5 +++++ ZUGFeRD/InvoiceDescriptor22UblReader.cs | 7 +++++-- ZUGFeRD/TradeLineItem.cs | 10 ++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/ZUGFeRD/AbstractTradeAllowanceCharge.cs b/ZUGFeRD/AbstractTradeAllowanceCharge.cs index c25d5d32..f4b42fc7 100644 --- a/ZUGFeRD/AbstractTradeAllowanceCharge.cs +++ b/ZUGFeRD/AbstractTradeAllowanceCharge.cs @@ -79,5 +79,10 @@ public abstract class AbstractTradeAllowanceCharge : Charge /// BT-101 /// public decimal? ChargePercentage { get; internal set; } + + /// + /// Surcharges/discounts at invoice level - percentage rate + /// + public decimal? MultiplierFactor { get; internal set; } } } diff --git a/ZUGFeRD/InvoiceDescriptor22UblReader.cs b/ZUGFeRD/InvoiceDescriptor22UblReader.cs index 084a0fe8..de2d1368 100644 --- a/ZUGFeRD/InvoiceDescriptor22UblReader.cs +++ b/ZUGFeRD/InvoiceDescriptor22UblReader.cs @@ -676,6 +676,7 @@ private static List _parseTradeLineItem(XmlNode tradeLineItem, Xm string actualAmountCurrency = XmlUtils.NodeAsString(appliedTradeAllowanceChargeNode, "./cbc:Amount/@currencyID", nsmgr); string reason = XmlUtils.NodeAsString(appliedTradeAllowanceChargeNode, "./cbc:AllowanceChargeReason", nsmgr); string reasonCode = XmlUtils.NodeAsString(appliedTradeAllowanceChargeNode, "./cbc:AllowanceChargeReasonCode", nsmgr); + decimal? multiplierFactor = XmlUtils.NodeAsDecimal(appliedTradeAllowanceChargeNode, "./cbc:MultiplierFactorNumeric", nsmgr); if (chargeIndicator) // charge { @@ -683,7 +684,8 @@ private static List _parseTradeLineItem(XmlNode tradeLineItem, Xm basisAmount, actualAmount, reason, - EnumExtensions.StringToEnum(reasonCode)); + EnumExtensions.StringToEnum(reasonCode), + multiplierFactor); } else // allowance { @@ -691,7 +693,8 @@ private static List _parseTradeLineItem(XmlNode tradeLineItem, Xm basisAmount, actualAmount, reason, - EnumExtensions.StringToEnum(reasonCode)); + EnumExtensions.StringToEnum(reasonCode), + multiplierFactor); } } diff --git a/ZUGFeRD/TradeLineItem.cs b/ZUGFeRD/TradeLineItem.cs index 69503c8d..197b3f91 100644 --- a/ZUGFeRD/TradeLineItem.cs +++ b/ZUGFeRD/TradeLineItem.cs @@ -334,7 +334,7 @@ public TradeLineItem(string lineId) /// Reason for the allowance /// Reason code for the allowance public TradeLineItem AddTradeAllowance(CurrencyCodes currency, decimal? basisAmount, decimal actualAmount, - string reason, AllowanceReasonCodes? reasonCode = null) + string reason, AllowanceReasonCodes? reasonCode = null, decimal? multiplierFactor = null) { this.TradeAllowanceCharges.Add(new TradeAllowance() { @@ -342,7 +342,8 @@ public TradeLineItem AddTradeAllowance(CurrencyCodes currency, decimal? basisAmo ActualAmount = actualAmount, BasisAmount = basisAmount, Reason = reason, - ReasonCode = reasonCode + ReasonCode = reasonCode, + MultiplierFactor = multiplierFactor }); return this; } // !AddTradeAllowance() @@ -359,7 +360,7 @@ public TradeLineItem AddTradeAllowance(CurrencyCodes currency, decimal? basisAmo /// Reason for the surcharge /// Optional reason code for the surcharge public TradeLineItem AddTradeCharge(CurrencyCodes currency, decimal? basisAmount, decimal actualAmount, - string reason, ChargeReasonCodes? reasonCode = null) + string reason, ChargeReasonCodes? reasonCode = null, decimal? multiplierFactor = null) { this.TradeAllowanceCharges.Add(new TradeCharge() { @@ -367,7 +368,8 @@ public TradeLineItem AddTradeCharge(CurrencyCodes currency, decimal? basisAmount ActualAmount = actualAmount, BasisAmount = basisAmount, Reason = reason, - ReasonCode = reasonCode + ReasonCode = reasonCode, + MultiplierFactor = multiplierFactor }); return this; } // !AddTradeAllowanceCharge() From 2efe8636fcd2dbe892d5be8161d4c115a21bea1f Mon Sep 17 00:00:00 2001 From: Eryk Gajos Date: Fri, 12 Sep 2025 13:10:15 +0200 Subject: [PATCH 2/2] - Added field name --- ZUGFeRD/AbstractTradeAllowanceCharge.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/ZUGFeRD/AbstractTradeAllowanceCharge.cs b/ZUGFeRD/AbstractTradeAllowanceCharge.cs index f4b42fc7..7aa80f30 100644 --- a/ZUGFeRD/AbstractTradeAllowanceCharge.cs +++ b/ZUGFeRD/AbstractTradeAllowanceCharge.cs @@ -82,6 +82,7 @@ public abstract class AbstractTradeAllowanceCharge : Charge /// /// Surcharges/discounts at invoice level - percentage rate + /// BT-94, BT-101 /// public decimal? MultiplierFactor { get; internal set; } }