2525namespace s2industries . ZUGFeRD . Test
2626{
2727 [ TestClass ]
28- public class BasicTests : TestBase
28+ public class GlobalTests : TestBase
2929 {
3030 InvoiceProvider InvoiceProvider = new InvoiceProvider ( ) ;
3131
3232
3333 [ TestMethod ]
34- public void TestAutomaticLineIds ( )
34+ public void TestAutomaticLineIds ( ZUGFeRDVersion version , Profile profile )
3535 {
3636 InvoiceDescriptor desc = this . InvoiceProvider . CreateInvoice ( ) ;
3737 desc . TradeLineItems . Clear ( ) ;
@@ -46,7 +46,7 @@ public void TestAutomaticLineIds()
4646
4747
4848 [ TestMethod ]
49- public void TestManualLineIds ( )
49+ public void TestManualLineIds ( ZUGFeRDVersion version , Profile profile )
5050 {
5151 InvoiceDescriptor desc = this . InvoiceProvider . CreateInvoice ( ) ;
5252 desc . TradeLineItems . Clear ( ) ;
@@ -59,7 +59,7 @@ public void TestManualLineIds()
5959
6060
6161 [ TestMethod ]
62- public void TestCommentLine ( )
62+ public void TestCommentLine ( ZUGFeRDVersion version , Profile profile )
6363 {
6464 string COMMENT = System . Guid . NewGuid ( ) . ToString ( ) ;
6565 string CUSTOM_LINE_ID = System . Guid . NewGuid ( ) . ToString ( ) ;
@@ -79,7 +79,7 @@ public void TestCommentLine()
7979 // test with manual line id
8080 desc = this . InvoiceProvider . CreateInvoice ( ) ;
8181 numberOfTradeLineItems = desc . TradeLineItems . Count ;
82- desc . AddTradeLineCommentItem ( CUSTOM_LINE_ID , COMMENT ) ;
82+ desc . AddTradeLineCommentItem ( lineID : CUSTOM_LINE_ID , comment : COMMENT ) ;
8383
8484 Assert . AreEqual ( numberOfTradeLineItems + 1 , desc . TradeLineItems . Count ) ;
8585 Assert . IsNotNull ( desc . TradeLineItems [ desc . TradeLineItems . Count - 1 ] . AssociatedDocument ) ;
@@ -105,5 +105,53 @@ public void TestGetVersion()
105105 path = _makeSurePathIsCrossPlatformCompatible ( path ) ;
106106 Assert . AreEqual ( InvoiceDescriptor . GetVersion ( path ) , ZUGFeRDVersion . Version23 ) ;
107107 } // !TestGetVersion()
108+
109+
110+ [ TestMethod ]
111+ [ DataRow ( ZUGFeRDVersion . Version1 , Profile . Extended ) ]
112+ [ DataRow ( ZUGFeRDVersion . Version20 , Profile . Extended ) ]
113+ [ DataRow ( ZUGFeRDVersion . Version23 , Profile . Extended ) ]
114+ public void SavingThenReadingAppliedTradeTaxes ( ZUGFeRDVersion version , Profile profile )
115+ {
116+ InvoiceDescriptor expected = InvoiceDescriptor . CreateInvoice ( "123" , new DateTime ( 2024 , 12 , 5 ) , CurrencyCodes . EUR ) ;
117+ var lineItem = expected . AddTradeLineItem ( name : "Something" ,
118+ grossUnitPrice : 9.9m ,
119+ netUnitPrice : 9.9m ,
120+ billedQuantity : 20m ,
121+ taxType : TaxTypes . VAT ,
122+ categoryCode : TaxCategoryCodes . S ,
123+ taxPercent : 19m
124+ ) ;
125+ lineItem . LineTotalAmount = 198m ; // 20 * 9.9
126+ expected . AddApplicableTradeTax (
127+ basisAmount : lineItem . LineTotalAmount ! . Value ,
128+ percent : 19m ,
129+ taxAmount : 29.82m , // 19% of 198
130+ typeCode : TaxTypes . VAT ,
131+ categoryCode : TaxCategoryCodes . S ,
132+ allowanceChargeBasisAmount : - 5m
133+ ) ;
134+ expected . LineTotalAmount = 198m ;
135+ expected . TaxBasisAmount = 198m ;
136+ expected . TaxTotalAmount = 29.82m ;
137+ expected . GrandTotalAmount = 198m + 29.82m ;
138+ expected . DuePayableAmount = expected . GrandTotalAmount ;
139+
140+ using MemoryStream ms = new ( ) ;
141+ expected . Save ( ms , version , profile ) ;
142+ ms . Seek ( 0 , SeekOrigin . Begin ) ;
143+
144+ InvoiceDescriptor actual = InvoiceDescriptor . Load ( ms ) ;
145+
146+ Assert . AreEqual ( expected . Taxes . Count , actual . Taxes . Count ) ;
147+ Assert . AreEqual ( 1 , actual . Taxes . Count ) ;
148+ Tax actualTax = actual . Taxes [ 0 ] ;
149+ Assert . AreEqual ( 198m , actualTax . BasisAmount ) ;
150+ Assert . AreEqual ( 19m , actualTax . Percent ) ;
151+ Assert . AreEqual ( 29.82m , actualTax . TaxAmount ) ;
152+ Assert . AreEqual ( TaxTypes . VAT , actualTax . TypeCode ) ;
153+ Assert . AreEqual ( TaxCategoryCodes . S , actualTax . CategoryCode ) ;
154+ Assert . AreEqual ( - 5m , actualTax . AllowanceChargeBasisAmount ) ;
155+ } // !SavingThenReadingAppliedTradeTaxes()
108156 }
109157}
0 commit comments