@@ -147,17 +147,18 @@ public void TestReferenceExtendedInvoice()
147
147
Assert . AreEqual ( desc . TradeLineItems . Count , 6 ) ;
148
148
Assert . AreEqual ( desc . LineTotalAmount , 457.20m ) ;
149
149
150
- foreach ( TradeAllowanceCharge charge in desc . TradeAllowanceCharges )
150
+ IList < TradeAllowanceCharge > _tradeAllowanceCharges = desc . GetTradeAllowanceCharges ( ) ;
151
+ foreach ( TradeAllowanceCharge charge in _tradeAllowanceCharges )
151
152
{
152
153
Assert . AreEqual ( charge . Tax . TypeCode , TaxTypes . VAT ) ;
153
154
Assert . AreEqual ( charge . Tax . CategoryCode , TaxCategoryCodes . S ) ;
154
155
}
155
156
156
- Assert . AreEqual ( desc . TradeAllowanceCharges . Count , 4 ) ;
157
- Assert . AreEqual ( desc . TradeAllowanceCharges [ 0 ] . Tax . Percent , 19m ) ;
158
- Assert . AreEqual ( desc . TradeAllowanceCharges [ 1 ] . Tax . Percent , 7m ) ;
159
- Assert . AreEqual ( desc . TradeAllowanceCharges [ 2 ] . Tax . Percent , 19m ) ;
160
- Assert . AreEqual ( desc . TradeAllowanceCharges [ 3 ] . Tax . Percent , 7m ) ;
157
+ Assert . AreEqual ( _tradeAllowanceCharges . Count , 4 ) ;
158
+ Assert . AreEqual ( _tradeAllowanceCharges [ 0 ] . Tax . Percent , 19m ) ;
159
+ Assert . AreEqual ( _tradeAllowanceCharges [ 1 ] . Tax . Percent , 7m ) ;
160
+ Assert . AreEqual ( _tradeAllowanceCharges [ 2 ] . Tax . Percent , 19m ) ;
161
+ Assert . AreEqual ( _tradeAllowanceCharges [ 3 ] . Tax . Percent , 7m ) ;
161
162
162
163
Assert . AreEqual ( desc . ServiceCharges . Count , 1 ) ;
163
164
Assert . AreEqual ( desc . ServiceCharges [ 0 ] . Tax . TypeCode , TaxTypes . VAT ) ;
@@ -1510,7 +1511,7 @@ public void TestWriteAndReadExtended()
1510
1511
Assert . AreEqual ( timestamp . AddDays ( 14 ) , loadedInvoice . BillingPeriodEnd ) ;
1511
1512
1512
1513
//TradeAllowanceCharges
1513
- var tradeAllowanceCharge = loadedInvoice . TradeAllowanceCharges . FirstOrDefault ( i => i . Reason == "Reason for charge" ) ;
1514
+ var tradeAllowanceCharge = loadedInvoice . GetTradeAllowanceCharges ( ) . FirstOrDefault ( i => i . Reason == "Reason for charge" ) ;
1514
1515
Assert . IsNotNull ( tradeAllowanceCharge ) ;
1515
1516
Assert . IsTrue ( tradeAllowanceCharge . ChargeIndicator ) ;
1516
1517
Assert . AreEqual ( "Reason for charge" , tradeAllowanceCharge . Reason ) ;
@@ -1602,7 +1603,7 @@ public void TestWriteAndReadExtended()
1602
1603
Assert . AreEqual ( "987654" , accountingAccount . TradeAccountID ) ;
1603
1604
1604
1605
1605
- var lineItemTradeAllowanceCharge = loadedLineItem . TradeAllowanceCharges . FirstOrDefault ( i => i . Reason == "Reason: UnitTest" ) ;
1606
+ var lineItemTradeAllowanceCharge = loadedLineItem . GetTradeAllowanceCharges ( ) . FirstOrDefault ( i => i . Reason == "Reason: UnitTest" ) ;
1606
1607
Assert . IsNotNull ( lineItemTradeAllowanceCharge ) ;
1607
1608
Assert . IsTrue ( lineItemTradeAllowanceCharge . ChargeIndicator ) ;
1608
1609
Assert . AreEqual ( 10m , lineItemTradeAllowanceCharge . BasisAmount ) ;
@@ -1781,6 +1782,50 @@ public void TestBasisQuantityMultiple()
1781
1782
Assert . AreEqual ( "27.50" , node . InnerText ) ;
1782
1783
} // !TestBasisQuantityMultiple()
1783
1784
1785
+
1786
+ [ TestMethod ]
1787
+ public void TestTradeAllowanceChargeWithoutExplicitPercentage ( )
1788
+ {
1789
+ InvoiceDescriptor invoice = InvoiceProvider . CreateInvoice ( ) ;
1790
+
1791
+ // fake values, does not matter for our test case
1792
+ invoice . AddTradeAllowanceCharge ( true , 100 , CurrencyCodes . EUR , 10 , "" , TaxTypes . VAT , TaxCategoryCodes . S , 19 ) ;
1793
+
1794
+ MemoryStream ms = new MemoryStream ( ) ;
1795
+ invoice . Save ( ms , ZUGFeRDVersion . Version21 , Profile . Extended ) ;
1796
+ ms . Position = 0 ;
1797
+
1798
+ InvoiceDescriptor loadedInvoice = InvoiceDescriptor . Load ( ms ) ;
1799
+ IList < TradeAllowanceCharge > allowanceCharges = loadedInvoice . GetTradeAllowanceCharges ( ) ;
1800
+
1801
+ Assert . IsTrue ( allowanceCharges . Count == 1 ) ;
1802
+ Assert . AreEqual ( allowanceCharges [ 0 ] . BasisAmount , 100m ) ;
1803
+ Assert . AreEqual ( allowanceCharges [ 0 ] . Amount , 10m ) ;
1804
+ Assert . AreEqual ( allowanceCharges [ 0 ] . ChargePercentage , null ) ;
1805
+ } // !TestTradeAllowanceChargeWithoutExplicitPercentage()
1806
+
1807
+
1808
+ [ TestMethod ]
1809
+ public void TestTradeAllowanceChargeWithExplicitPercentage ( )
1810
+ {
1811
+ InvoiceDescriptor invoice = InvoiceProvider . CreateInvoice ( ) ;
1812
+
1813
+ // fake values, does not matter for our test case
1814
+ invoice . AddTradeAllowanceCharge ( true , 100 , CurrencyCodes . EUR , 10 , 12 , "" , TaxTypes . VAT , TaxCategoryCodes . S , 19 ) ;
1815
+
1816
+ MemoryStream ms = new MemoryStream ( ) ;
1817
+ invoice . Save ( ms , ZUGFeRDVersion . Version21 , Profile . Extended ) ;
1818
+ ms . Position = 0 ;
1819
+ InvoiceDescriptor loadedInvoice = InvoiceDescriptor . Load ( ms ) ;
1820
+ IList < TradeAllowanceCharge > allowanceCharges = loadedInvoice . GetTradeAllowanceCharges ( ) ;
1821
+
1822
+ Assert . IsTrue ( allowanceCharges . Count == 1 ) ;
1823
+ Assert . AreEqual ( allowanceCharges [ 0 ] . BasisAmount , 100m ) ;
1824
+ Assert . AreEqual ( allowanceCharges [ 0 ] . Amount , 10m ) ;
1825
+ Assert . AreEqual ( allowanceCharges [ 0 ] . ChargePercentage , 12 ) ;
1826
+ } // !TestTradeAllowanceChargeWithExplicitPercentage()
1827
+
1828
+
1784
1829
[ TestMethod ]
1785
1830
public void TestReferenceXRechnung21UBL ( )
1786
1831
{
0 commit comments