@@ -1340,7 +1340,7 @@ private void _WriteItemLevelAppliedTradeAllowanceCharge(ProfileAwareXmlTextWrite
1340
1340
if ( tradeAllowanceCharge . ChargePercentage . HasValue )
1341
1341
{
1342
1342
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 ) ;
1344
1344
Writer . WriteEndElement ( ) ;
1345
1345
}
1346
1346
#endregion
@@ -1349,7 +1349,7 @@ private void _WriteItemLevelAppliedTradeAllowanceCharge(ProfileAwareXmlTextWrite
1349
1349
if ( tradeAllowanceCharge . BasisAmount . HasValue )
1350
1350
{
1351
1351
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 ) ;
1353
1353
Writer . WriteEndElement ( ) ;
1354
1354
}
1355
1355
#endregion
@@ -1448,19 +1448,13 @@ private void _writeAdditionalReferencedDocument(AdditionalReferencedDocument doc
1448
1448
} // !_writeAdditionalReferencedDocument()
1449
1449
1450
1450
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 )
1452
1452
{
1453
1453
if ( ! value . HasValue )
1454
1454
{
1455
1455
return ;
1456
1456
}
1457
1457
1458
- writer . WriteStartElement ( prefix , tagName , profile ) ;
1459
- if ( forceCurrency )
1460
- {
1461
- writer . WriteAttributeString ( "currencyID" , this . Descriptor . Currency . EnumToString ( ) ) ;
1462
- }
1463
-
1464
1458
decimal rounded = Math . Round ( value . Value , numDecimals , MidpointRounding . AwayFromZero ) ;
1465
1459
if ( value == rounded )
1466
1460
{
@@ -1470,6 +1464,23 @@ private void _writeOptionalAdaptiveAmount(ProfileAwareXmlTextWriter writer, stri
1470
1464
{
1471
1465
writer . WriteValue ( _formatDecimal ( value . Value , maxNumDecimals ) ) ;
1472
1466
}
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 ) ;
1473
1484
1474
1485
writer . WriteEndElement ( ) ; // !tagName
1475
1486
} // !_writeOptionalAdaptiveAmount()
0 commit comments