diff --git a/Mustang-CLI/src/main/java/org/mustangproject/commandline/FileChecker.java b/Mustang-CLI/src/main/java/org/mustangproject/commandline/FileChecker.java old mode 100644 new mode 100755 diff --git a/Mustang-CLI/src/main/java/org/mustangproject/commandline/FileTraverser.java b/Mustang-CLI/src/main/java/org/mustangproject/commandline/FileTraverser.java old mode 100644 new mode 100755 diff --git a/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java b/Mustang-CLI/src/main/java/org/mustangproject/commandline/Main.java old mode 100644 new mode 100755 diff --git a/Mustang-CLI/src/main/java/org/mustangproject/commandline/StatRun.java b/Mustang-CLI/src/main/java/org/mustangproject/commandline/StatRun.java old mode 100644 new mode 100755 diff --git a/NOTICE.txt b/NOTICE.txt deleted file mode 100644 index 2d28d372..00000000 --- a/NOTICE.txt +++ /dev/null @@ -1,14 +0,0 @@ -Apache PDFBox -Copyright 2014 The Apache Software Foundation - -This product includes software developed at -The Apache Software Foundation (http://www.apache.org/). - -Based on source code originally developed in the PDFBox, JempBox and -FontBox projects. -Copyright (c) 2002-2007, www.pdfbox.org -Copyright (c) 2006-2007, www.jempbox.org - -Based on source code originally developed in the PaDaF project. -Copyright (c) 2010 Atos Worldline SAS - diff --git a/library/src/main/resources/stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt b/library/src/main/resources/stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt index 0a72e60d..8b015f28 100644 --- a/library/src/main/resources/stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt +++ b/library/src/main/resources/stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt @@ -1,3008 +1,3008 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - <meta http-equiv="X-UA-Compatible" content="IE=9"/> - <xsl:comment>[if IE]><STYLE type="text/css">.altova-rotate-left-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)} .altova-rotate-right-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1)} </STYLE><![endif]</xsl:comment> - <xsl:comment>[if !IE]><!</xsl:comment> - <style type="text/css">.altova-rotate-left-textbox{-webkit-transform: rotate(-90deg) translate(-100%, 0%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(-90deg) translate(-100%, 0%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(-90deg) translate(-100%, 0%); -ms-transform-origin: 0% 0%;}.altova-rotate-right-textbox{-webkit-transform: rotate(90deg) translate(0%, -100%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(90deg) translate(0%, -100%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(90deg) translate(0%, -100%); -ms-transform-origin: 0% 0%;}</style> - <xsl:comment><![endif]</xsl:comment> - <style type="text/css">@page { margin-left:0.60in; margin-right:0.60in; margin-top:0.79in; margin-bottom:0.79in } @media print { br.altova-page-break { page-break-before: always; } }</style> - </head> - <body style="font-family:Courier; font-size:small; "> - <xsl:for-each select="$XML"> - <xsl:for-each select="rsm:CrossIndustryDocument"> - <span> - <xsl:text>Stylesheet Lesbarmachung der XML-Daten von ZUGFeRD-Rechnungen</xsl:text> - </span> - <br/> - <span> - <xsl:text>ZUGFeRD-Version   : 1.0 vom 25.06.2014 </xsl:text> - </span> - <br/> - <span> - <xsl:text>Stylesheet-Version: 1.0 vom 25.06.2014</xsl:text> - </span> - <br/> - <span> - <xsl:text>Codelisten-Version: 1.0 vom 25.06.2014</xsl:text> - </span> - <br/> - <span> - <xsl:text>(c) AWV e.V. 2014</xsl:text> - </span> - <xsl:variable name="altova:table"> - <table style="border-collapse:collapse; " border="1" width="100%"> - <xsl:variable name="altova:CurrContextGrid_0" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr> - <td> - <br/> - <h2> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:Name"> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text>(</xsl:text> - </span> - <xsl:for-each select="ram:TypeCode"> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text>) Nr. </xsl:text> - </span> - <xsl:for-each select="ram:ID"> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </h2> - <xsl:for-each select="rsm:SpecifiedExchangedDocumentContext"> - <br/> - <xsl:for-each select="ram:TestIndicator"> - <xsl:for-each select="udt:Indicator"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Testkennzeichen      : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:BusinessProcessSpecifiedDocumentContextParameter"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Geschäftsprozess     : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedExchangedDocumentContext"> - <xsl:for-each select="ram:GuidelineSpecifiedDocumentContextParameter"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Anwendungsempfehlung : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:CopyIndicator"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Kopie                : </xsl:text> - </span> - <xsl:for-each select="udt:Indicator"> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:LanguageID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Sprache              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:InvoiceCurrencyCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Währung              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - </td> - </tr> - <tr> - <td> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:EffectiveSpecifiedPeriod"> - <xsl:for-each select="ram:CompleteDateTime"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Vertragliches Fälligkeitsdatum: </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ActualDeliverySupplyChainEvent"> - <xsl:for-each select="ram:OccurrenceDateTime"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Liefer- und Leistungsdatum    : </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:BillingSpecifiedPeriod"> - <xsl:for-each select="ram:StartDateTime"> - <br/> - <span> - <xsl:text>Abrechnungszeitraum           : </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - <span> - <xsl:text> bis </xsl:text> - </span> - <xsl:for-each select="ram:EndDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerReference"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Referenz des Käufers          : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:PaymentReference"> - <br/> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text>Zahlungsreferenz              : </xsl:text> - </span> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:ReceivableSpecifiedTradeAccountingAccount"> - <xsl:for-each select="ram:ID"> - <br/> - <span> - <xsl:text>Buchungsreferenz              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:ApplicableTradeDeliveryTerms"> - <xsl:for-each select="ram:DeliveryTypeCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Lieferbedingung (codiert)     : </xsl:text> - </span> - <xsl:call-template name="DeliveryTypeCode"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:RelatedSupplyChainConsignment"> - <xsl:for-each select="ram:SpecifiedLogisticsTransportMovement"> - <xsl:for-each select="ram:ModeCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Versandart (codiert)          : </xsl:text> - </span> - <xsl:call-template name="ram:VersandMode"/> - </xsl:for-each> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Versand-ID                    : </xsl:text> - </span> - <xsl:apply-templates/> - <xsl:for-each select="@schemeID"> - <span style="empty-cells:hide; "> - <xsl:text>, Art: </xsl:text> - </span> - <xsl:call-template name="ram:Versand_Identifer"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerOrderReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Bestellung                    : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_1"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_1" select="string($altova:seqContentStrings_1)"/> - <xsl:value-of select="$altova:sContent_1"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:DespatchAdviceReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Lieferavis                    : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_2"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_2" select="string($altova:seqContentStrings_2)"/> - <xsl:value-of select="$altova:sContent_2"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:DeliveryNoteReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Lieferschein                  : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_3"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_3" select="string($altova:seqContentStrings_3)"/> - <xsl:value-of select="$altova:sContent_3"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:ContractReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Vertrag                       : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_4"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_4" select="string($altova:seqContentStrings_4)"/> - <xsl:value-of select="$altova:sContent_4"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:CustomerOrderReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Kundenbestellung              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_5"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_5" select="string($altova:seqContentStrings_5)"/> - <xsl:value-of select="$altova:sContent_5"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:AdditionalReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Weitere Referenz              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_6"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_6" select="string($altova:seqContentStrings_6)"/> - <xsl:value-of select="$altova:sContent_6"/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:TypeCode"> - <span style="empty-cells:hide; "> - <xsl:text>, Art der Referenz: </xsl:text> - </span> - <xsl:call-template name="ram:Referenz"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - <span style="empty-cells:hide; "> - <xsl:text> </xsl:text> - </span> - </td> - </tr> - <tr> - <td> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:SellerTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Verkäufer:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Käufer:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:ProductEndUserTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Endverbraucher:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ShipToTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Warenempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:UltimateShipToTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Endempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ShipFromTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Versender:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:InvoiceeTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Rechnungsempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:PayeeTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Zahlungsempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - <tr> - <td> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <br/> - <xsl:for-each select="ram:IncludedNote"> - <xsl:for-each select="ram:SubjectCode"> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>Qualifizierung der Textart: </xsl:text> - </span> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ContentCode"> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>, Qualifizierung des Textes: </xsl:text> - </span> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:Content"> - <br/> - <span style="font-weight:bold; white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - <br/> - <br/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; "> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_7" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="text-align:center; vertical-align:middle; "> - <td style="border-bottom-style:solid; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> - <span style="font-weight:bold; "> - <xsl:text>Pos</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:left; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Kunde</xsl:text> - </span> - <br/> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Lief.</xsl:text> - </span> - <br/> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr</xsl:text> - </span> - <br/> - <span style="font-weight:bold; "> - <xsl:text>(Art)</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <span style="font-weight:bold; "> - <xsl:text>Beschreibung</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>E-Preis</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:120px; "> - <span style="font-weight:bold; "> - <xsl:text>Menge</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Steuer</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Entgelt</xsl:text> - </span> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:IncludedSupplyChainTradeLineItem"> - <xsl:if test="fn:not( fn:empty(ram:SpecifiedTradeProduct))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_8" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="vertical-align:top; "> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> - <xsl:for-each select="ram:AssociatedDocumentLineDocument"> - <xsl:if test="fn:empty(ram:IncludedNote)"> - <xsl:for-each select="ram:LineID"> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:BuyerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:SellerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:GlobalID"> - <xsl:apply-templates/> - <br/> - <xsl:for-each select="@schemeID"> - <xsl:call-template name="ram:Global_Identifier"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:Name"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - <br/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:if test="fn:exists(ram:GrossPriceProductTradePrice)"> - <xsl:for-each select="ram:GrossPriceProductTradePrice"> - <xsl:for-each select="ram:BasisQuantity"> - <span> - <xsl:text>Preisbasismenge: </xsl:text> - </span> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - <xsl:if test="fn:not(fn:exists(ram:GrossPriceProductTradePrice))"> - <xsl:for-each select="ram:NetPriceProductTradePrice"> - <xsl:for-each select="ram:BasisQuantity"> - <br/> - <span> - <xsl:text>Preisbasismenge: </xsl:text> - </span> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:if test="fn:exists(ram:GrossPriceProductTradePrice)"> - <xsl:for-each select="ram:GrossPriceProductTradePrice"> - <xsl:for-each select="ram:ChargeAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_9"> - <xsl:value-of select="format-number(number(string(.)), '##0,0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_9" select="string($altova:seqContentStrings_9)"/> - <xsl:value-of select="$altova:sContent_9"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - <xsl:if test="not(fn:exists(ram:GrossPriceProductTradePrice))"> - <xsl:for-each select="ram:NetPriceProductTradePrice"> - <xsl:for-each select="ram:ChargeAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_10"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_10" select="string($altova:seqContentStrings_10)"/> - <xsl:value-of select="$altova:sContent_10"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:120px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:BilledQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - <xsl:for-each select="ram:ChargeFreeQuantity"> - <br/> - <span> - <xsl:text>kostenfrei:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:ApplicableTradeTax"> - <xsl:call-template name="ram:TradeTax"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> - <xsl:for-each select="ram:LineTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_11"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_11" select="string($altova:seqContentStrings_11)"/> - <xsl:value-of select="$altova:sContent_11"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:for-each select="ram:AssociatedDocumentLineDocument"> - <xsl:if test="fn:not( fn:empty(ram:IncludedNote))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; border-top-style:none; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_12" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> - <xsl:for-each select="ram:LineID"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - <td style="border-bottom-style:none; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <xsl:for-each select="ram:IncludedNote"> - <xsl:for-each select="ram:Content"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:SubjectCode"> - <br/> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>Qualifizierung der Textart: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ContentCode"> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>, Qualifizierung des Textes: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:for-each select="ram:GrossPriceProductTradePrice"> - <xsl:if test="fn:not( fn:empty(ram:AppliedTradeAllowanceCharge))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_13" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-bottom-style:none; border-left-style:none; border-top-style:none; width:30px; "/> - <td style="border-bottom-style:none; border-top-style:none; width:110px; "/> - <td style="border-bottom-style:none; border-right-style:none; border-top-style:none; "> - <xsl:variable name="altova:table"> - <table style="border:0px; border-style:none; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_14" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:left; width:70px; "> - <span style="font-style:italic; "> - <xsl:text>Art</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:left; "> - <span style="font-style:italic; "> - <xsl:text>Grund</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:70px; "> - <span style="font-style:italic; "> - <xsl:text>%</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:110px; "> - <span style="font-style:italic; "> - <xsl:text>Basisbetrag</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:120px; "> - <span style="font-style:italic; "> - <xsl:text>Basismenge</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:110px; "> - <span style="font-style:italic; "> - <xsl:text>Betrag</xsl:text> - </span> - </th> - <th style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; width:112px; "/> - </tr> - </thead> - <tbody> - <xsl:for-each select="ram:AppliedTradeAllowanceCharge"> - <xsl:sort select="ram:SequenceNumeric" data-type="text" order="ascending"/> - <tr> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; vertical-align:top; width:70px; "> - <xsl:for-each select="ram:ChargeIndicator"> - <xsl:for-each select="udt:Indicator"> - <span> - <xsl:value-of select="if (. = fn:true())then 'Zuschlag' else 'Abschlag'"/> - </span> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SequenceNumeric"> - <span> - <xsl:text> Nr. </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; vertical-align:top; "> - <xsl:for-each select="ram:Reason"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ReasonCode"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:call-template name="AllowanceChargeReasonCode"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:70px; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_15"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_15" select="string($altova:seqContentStrings_15)"/> - <xsl:value-of select="$altova:sContent_15"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_16"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_16" select="string($altova:seqContentStrings_16)"/> - <xsl:value-of select="$altova:sContent_16"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:120px; "> - <xsl:for-each select="ram:BasisQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:ActualAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_17"> - <xsl:value-of select="format-number(number(if(../ram:ChargeIndicator/udt:Indicator = fn:false()) then -1*. else .), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_17" select="string($altova:seqContentStrings_17)"/> - <xsl:value-of select="$altova:sContent_17"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:108px; "/> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(../../ram:SpecifiedSupplyChainTradeSettlement/ram:SpecifiedTradeSettlementMonetarySummation/ram:TotalAllowanceChargeAmount)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_18" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:30px; "/> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - <td style="border-bottom-style:none; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <br/> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span> - <xsl:text>Summe:</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:double; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="$XML"> - <xsl:for-each select="rsm:CrossIndustryDocument"> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:IncludedSupplyChainTradeLineItem"> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> - <xsl:for-each select="ram:TotalAllowanceChargeAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_19"> - <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_19" select="string($altova:seqContentStrings_19)"/> - <xsl:value-of select="$altova:sContent_19"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "/> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:for-each> - </xsl:for-each> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; border-top-style:none; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_20" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:30px; "/> - <td style="border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - <td style="border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:Description"> - <br/> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ActualDeliverySupplyChainEvent"> - <xsl:for-each select="ram:OccurrenceDateTime"> - <br/> - <span> - <xsl:text>* Leistungsdatum: </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:BillingSpecifiedPeriod"> - <br/> - <span> - <xsl:text>* Berechnungszeitraum: </xsl:text> - </span> - <xsl:for-each select="ram:StartDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:EndDateTime"> - <span> - <xsl:text> bis </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:OriginTradeCountry"> - <xsl:for-each select="ram:ID"> - <br/> - <span> - <xsl:text>* Herkunftsland: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:PackageQuantity"> - <br/> - <span> - <xsl:text>* Anzahl Packstücke: </xsl:text> - </span> - <span> - <xsl:variable name="altova:seqContentStrings_21"> - <xsl:value-of select="format-number(number(string(.)), '##0', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_21" select="string($altova:seqContentStrings_21)"/> - <xsl:value-of select="$altova:sContent_21"/> - </span> - </xsl:for-each> - <xsl:call-template name="PackageQuantity"/> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerOrderReferencedDocument"> - <br/> - <span> - <xsl:text>* Bestellung</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:ContractReferencedDocument"> - <br/> - <span> - <xsl:text>* Vertrag</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:AdditionalReferencedDocument"> - <br/> - <span> - <xsl:text>* Dokument (</xsl:text> - </span> - <xsl:for-each select="ram:ReferenceTypeCode"> - <xsl:call-template name="ram:Referenz"/> - </xsl:for-each> - <span> - <xsl:text>)</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:CustomerOrderReferencedDocument"> - <br/> - <span> - <xsl:text>* Kundenbestellung</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:DespatchAdviceReferencedDocument"> - <br/> - <span> - <xsl:text>* Lieferavis</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:ReceivingAdviceReferencedDocument"> - <br/> - <span> - <xsl:text>* Wareneingang </xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:DeliveryNoteReferencedDocument"> - <br/> - <span> - <xsl:text>* Lieferschein</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeAccountingAccount"> - <xsl:for-each select="ram:ID"> - <br/> - <span> - <xsl:text>* Buchungsreferenz: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:DesignatedProductClassification"> - <br/> - <span> - <xsl:text>* Klassifikation: </xsl:text> - </span> - <xsl:for-each select="ram:ClassCode"> - <span> - <xsl:text>[</xsl:text> - </span> - <xsl:apply-templates/> - <span> - <xsl:text>] </xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ClassName"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ClassCode"> - <xsl:call-template name="Klassifikationsart"/> - <xsl:for-each select="@listVersionID"> - <span> - <xsl:text>, Version: </xsl:text> - </span> - <span> - <xsl:value-of select="string(.)"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ShipToTradeParty"> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Abweichender Warenempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - <xsl:for-each select="ram:UltimateShipToTradeParty"> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Abweichender Endempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:if test="fn:exists(ram:ApplicableProductCharacteristic)"> - <br/> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Weitere Eigenschaften:</xsl:text> - </span> - <br/> - </xsl:if> - <xsl:for-each select="ram:ApplicableProductCharacteristic"> - <xsl:for-each select="ram:Description"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <span> - <xsl:text>: </xsl:text> - </span> - <xsl:for-each select="ram:TypeCode"> - <xsl:apply-templates/> - </xsl:for-each> - <span> - <xsl:text> = </xsl:text> - </span> - <xsl:for-each select="ram:Value"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ValueMeasure"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:if test="fn:exists(ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct)"> - <br/> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Basisartikel:</xsl:text> - </span> - <br/> - </xsl:if> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:if test="fn:exists(ram:IncludedReferencedProduct)"> - <xsl:variable name="altova:table"> - <table style="border:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_22" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; text-align:left; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Kunde</xsl:text> - </span> - <br/> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Lief.</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; width:110px; "> - <span> - <xsl:text>Art-Nr. (Art)</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; "> - <span> - <xsl:text>Beschreibung</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; text-align:right; width:120px; "> - <span> - <xsl:text>Menge</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="ram:IncludedReferencedProduct"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; text-align:left; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:BuyerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:SellerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:GlobalID"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:GlobalID"> - <xsl:for-each select="@schemeID"> - <xsl:call-template name="ram:Global_Identifier"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; "> - <xsl:for-each select="ram:Name"> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:Description"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; text-align:right; vertical-align:top; width:120px; "> - <xsl:for-each select="ram:UnitQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:for-each> - </xsl:for-each> - <br/> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; border-top-style:none; "> - <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:SpecifiedTradePaymentTerms)"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Zahlungsbedingungen:</xsl:text> - </span> - <br/> - <br/> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-right-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_23" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-left-style:none; "> - <span> - <xsl:text>Beschreibung</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Fälligkeit</xsl:text> - </span> - </th> - <th style="border-right-style:none; width:110px; "> - <span> - <xsl:text>Teilzahlung</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradePaymentTerms"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; "> - <xsl:for-each select="ram:Description"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; text-align:center; width:110px; "> - <xsl:for-each select="ram:DueDateDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-right-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:PartialPaymentAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_24"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_24" select="string($altova:seqContentStrings_24)"/> - <xsl:value-of select="$altova:sContent_24"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td colspan="3" style="border-left-style:none; border-right-style:none; border-top-style:none; min-height:0px; "> - <xsl:if test="fn:exists(ram:ApplicableTradePaymentPenaltyTerms) or fn:exists(ram:ApplicableTradePaymentDiscountTerms)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-left-style:none; border-top-style:none; margin:0px; padding:0px; " border="1" width="100%"> - <xsl:variable name="altova:CurrContextGrid_25" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="border-bottom-style:none; border-top-style:none; "> - <td style="border-bottom-style:none; border-left-style:none; border-top-style:none; min-height:0px; "/> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Bezug</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Innerhalb</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Basisbetrag</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>%</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:center; width:108px; "> - <span style="font-weight:bold; "> - <xsl:text>Betrag</xsl:text> - </span> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(ram:ApplicableTradePaymentPenaltyTerms)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-bottom-style:none; border-collapse:collapse; margin:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_26" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:ApplicableTradePaymentPenaltyTerms"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; min-height:0px; text-align:right; "> - <span> - <xsl:text>Zuschlag  </xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <xsl:for-each select="ram:BasisDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisPeriodMeasure"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_27"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_27" select="string($altova:seqContentStrings_27)"/> - <xsl:value-of select="$altova:sContent_27"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_28"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_28" select="string($altova:seqContentStrings_28)"/> - <xsl:value-of select="$altova:sContent_28"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:right; width:108px; "> - <xsl:for-each select="ram:ActualPenaltyAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_29"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_29" select="string($altova:seqContentStrings_29)"/> - <xsl:value-of select="$altova:sContent_29"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(ram:ApplicableTradePaymentDiscountTerms)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; margin:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_30" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:ApplicableTradePaymentDiscountTerms"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; min-height:0px; text-align:right; "> - <span> - <xsl:text>Skonto  </xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <xsl:for-each select="ram:BasisDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisPeriodMeasure"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_31"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_31" select="string($altova:seqContentStrings_31)"/> - <xsl:value-of select="$altova:sContent_31"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_32"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_32" select="string($altova:seqContentStrings_32)"/> - <xsl:value-of select="$altova:sContent_32"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:right; width:108px; "> - <xsl:for-each select="ram:ActualDiscountAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_33"> - <xsl:value-of select="format-number(number(-1 * .), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_33" select="string($altova:seqContentStrings_33)"/> - <xsl:value-of select="$altova:sContent_33"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </td> - </tr> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans)"> - <br/> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Zahlungsart:</xsl:text> - </span> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementPaymentMeans"> - <xsl:for-each select="ram:Information"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:TypeCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Zahlungstyp (codiert): </xsl:text> - </span> - <xsl:call-template name="ram:PaymentType"/> - </xsl:for-each> - <xsl:for-each select="ram:ID"> - <xsl:for-each select="@schemeAgencyID"> - <br/> - <span> - <xsl:text>Gläubiger-ID         : </xsl:text> - </span> - <span> - <xsl:value-of select="string(.)"/> - </span> - </xsl:for-each> - <br/> - <span> - <xsl:text>Mandatsreferenz      : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:PayerPartyDebtorFinancialAccount"> - <xsl:for-each select="ram:IBANID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-IBAN          : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ProprietaryID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-Kontonummer   : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:PayerSpecifiedDebtorFinancialInstitution"> - <xsl:for-each select="ram:BICID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-BIC           : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:GermanBankleitzahlID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-Bankleitzahl  : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:Name"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-Kreditinstitut: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:PayeePartyCreditorFinancialAccount"> - <xsl:for-each select="ram:AccountName"> - <br/> - <span> - <xsl:text>Verkäufer-Kontoname  : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:IBANID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-IBAN       : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ProprietaryID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-Kontonummer: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:PayeeSpecifiedCreditorFinancialInstitution"> - <xsl:for-each select="ram:BICID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-BIC        : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:GermanBankleitzahlID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-BLZ        : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:Name"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-Kreditinst.: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; border-right-style:none; border-top-style:none; "> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <br/> - <xsl:if test="fn:exists(ram:SpecifiedTradeAllowanceCharge) or fn:exists(ram:SpecifiedLogisticsServiceCharge)"> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Zu- und Abschläge:</xsl:text> - </span> - <br/> - <br/> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; empty-cells:hide; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_34" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th colspan="2" style="border-left-style:none; "> - <span> - <xsl:text>Art</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>%</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>Basisbetrag</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Basismenge</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Steuer</xsl:text> - </span> - </th> - <th style="border-right-style:none; width:110px; "> - <span> - <xsl:text>Betrag</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="ram:SpecifiedTradeAllowanceCharge"> - <xsl:sort select="ram:SequenceNumeric" data-type="text" order="ascending"/> - <tr> - <td style="border-left-style:none; "> - <xsl:for-each select="ram:ChargeIndicator"> - <xsl:for-each select="udt:Indicator"> - <span> - <xsl:value-of select="if (. = fn:true())then 'Zuschlag' else 'Abschlag'"/> - </span> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SequenceNumeric"> - <span> - <xsl:text> Nr. </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td> - <xsl:for-each select="ram:Reason"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ReasonCode"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:call-template name="AllowanceChargeReasonCode"/> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_35"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_35" select="string($altova:seqContentStrings_35)"/> - <xsl:value-of select="$altova:sContent_35"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_36"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_36" select="string($altova:seqContentStrings_36)"/> - <xsl:value-of select="$altova:sContent_36"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:CategoryTradeTax"> - <xsl:call-template name="ram:TradeTax"/> - </xsl:for-each> - </td> - <td style="border-right-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:ActualAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_37"> - <xsl:value-of select="format-number(number(if (../ram:ChargeIndicator/udt:Indicator = fn:true()) then . else -1 * .), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_37" select="string($altova:seqContentStrings_37)"/> - <xsl:value-of select="$altova:sContent_37"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - <xsl:if test="fn:exists(ram:SpecifiedLogisticsServiceCharge)"> - <xsl:if test="fn:not(fn:exists(ram:SpecifiedTradeAllowanceCharge))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-top-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_38" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:SpecifiedLogisticsServiceCharge"> - <tr> - <td style="border-left-style:none; border-top-style:solid; text-align:center; "> - <span style="font-weight:bold; "> - <xsl:text>Art</xsl:text> - </span> - </td> - <td style="border-top-style:solid; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Steuer</xsl:text> - </span> - </td> - <td style="border-right-style:none; border-top-style:solid; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Betrag</xsl:text> - </span> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:variable name="altova:table"> - <table style="border:0px; border-top-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_39" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:SpecifiedLogisticsServiceCharge"> - <tr> - <td style="border-left-style:none; border-top-style:none; "> - <xsl:for-each select="ram:Description"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </td> - <td style="border-top-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:AppliedTradeTax"> - <xsl:call-template name="ram:TradeTax"/> - </xsl:for-each> - </td> - <td style="border-right-style:none; border-top-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:AppliedAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_40"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_40" select="string($altova:seqContentStrings_40)"/> - <xsl:value-of select="$altova:sContent_40"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:if> - <br/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"/> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; border-top-style:none; "> - <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:ApplicableTradeTax)"> - <br/> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Steuern:</xsl:text> - </span> - <br/> - <br/> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-right-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_41" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-left-style:none; "> - <span> - <xsl:text>Art (Kategorie)</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>Warenwert</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>Zu-/Abschlag</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Nettobetrag</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>USt. %</xsl:text> - </span> - </th> - <th style="border-right-style:none; width:110px; "> - <span> - <xsl:text>USt.-Betrag</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:ApplicableTradeTax"> - <tr> - <td style="border-left-style:none; "> - <xsl:for-each select="ram:TypeCode"> - <xsl:apply-templates/> - </xsl:for-each> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:for-each select="ram:CategoryCode"> - <span> - <xsl:text>(</xsl:text> - </span> - <xsl:apply-templates/> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ExemptionReason"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:LineTotalBasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_42"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_42" select="string($altova:seqContentStrings_42)"/> - <xsl:value-of select="$altova:sContent_42"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:AllowanceChargeBasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_43"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_43" select="string($altova:seqContentStrings_43)"/> - <xsl:value-of select="$altova:sContent_43"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_44"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_44" select="string($altova:seqContentStrings_44)"/> - <xsl:value-of select="$altova:sContent_44"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:ApplicablePercent"> - <span> - <xsl:variable name="altova:seqContentStrings_45"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_45" select="string($altova:seqContentStrings_45)"/> - <xsl:value-of select="$altova:sContent_45"/> - </span> - </xsl:for-each> - </td> - <td style="border-right-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:CalculatedAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_46"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_46" select="string($altova:seqContentStrings_46)"/> - <xsl:value-of select="$altova:sContent_46"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; text-align:left; "> - <br/> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Belegsummen:</xsl:text> - </span> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> - <xsl:variable name="altova:table"> - <table style="border:0px; " border="1" width="100%"> - <xsl:variable name="altova:CurrContextGrid_47" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr> - <td style="border-style:none; "/> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> - <span style="font-weight:bold; "> - <xsl:text>Positionssumme</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:LineTotalAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_48"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_48" select="string($altova:seqContentStrings_48)"/> - <xsl:value-of select="$altova:sContent_48"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <span> - <xsl:text>Gesamtbetrag der Zuschläge</xsl:text> - </span> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:ChargeTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_49"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_49" select="string($altova:seqContentStrings_49)"/> - <xsl:value-of select="$altova:sContent_49"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <span> - <xsl:text>Gesamtbetrag der Abschläge</xsl:text> - </span> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:AllowanceTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_50"> - <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_50" select="string($altova:seqContentStrings_50)"/> - <xsl:value-of select="$altova:sContent_50"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> - <span style="font-weight:bold; "> - <xsl:text>Rechnungssumme ohne USt.</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:TaxBasisTotalAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_51"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_51" select="string($altova:seqContentStrings_51)"/> - <xsl:value-of select="$altova:sContent_51"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <span> - <xsl:text>Steuerbetrag</xsl:text> - </span> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:TaxTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_52"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_52" select="string($altova:seqContentStrings_52)"/> - <xsl:value-of select="$altova:sContent_52"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border-bottom-style:double; border-bottom-width:medium; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> - <span style="font-weight:bold; "> - <xsl:text>Bruttosumme</xsl:text> - </span> - </td> - <td style="border-bottom-style:double; border-bottom-width:medium; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:GrandTotalAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_53"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_53" select="string($altova:seqContentStrings_53)"/> - <xsl:value-of select="$altova:sContent_53"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <xsl:if test="(ram:TotalPrepaidAmount>=0 and fn:exists(ram:TotalPrepaidAmount)) or(fn:not(fn:exists(ram:TotalPrepaidAmount)) and fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID , 'basic' )))"> - <span> - <xsl:text>Erhaltene Anzahlungen</xsl:text> - </span> - <br/> - </xsl:if> - <xsl:if test="ram:TotalPrepaidAmount<0 and fn:exists(ram:TotalPrepaidAmount)"> - <span> - <xsl:text>Offene Zahlungen</xsl:text> - </span> - <br/> - </xsl:if> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:if test="fn:exists(TotalPrepaidAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID , 'basic' ))"> - <xsl:for-each select="ram:TotalPrepaidAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_54"> - <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_54" select="string($altova:seqContentStrings_54)"/> - <xsl:value-of select="$altova:sContent_54"/> - </span> - </xsl:for-each> - </xsl:if> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <xsl:if test="fn:exists(ram:DuePayableAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/GuidelineSpecifiedDocumentContextParameter/ID , 'basic' ))"> - <span style="font-weight:bold; "> - <xsl:text>Zahlbetrag</xsl:text> - </span> - </xsl:if> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:if test="fn:exists(ram:DuePayableAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/GuidelineSpecifiedDocumentContextParameter/ID , 'basic' ))"> - <xsl:for-each select="ram:DuePayableAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_55"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_55" select="string($altova:seqContentStrings_55)"/> - <xsl:value-of select="$altova:sContent_55"/> - </span> - </xsl:for-each> - </xsl:if> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - <br/> - </xsl:for-each> - </xsl:for-each> - <br/> - <br/> - </body> - </html> - </xsl:template> - <xsl:template name="ram:Party"> - <xsl:for-each select="ram:ID"> - <span> - <xsl:text>Nummer        : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="@schemeID"> - <xsl:call-template name="local_Identifier"/> - </xsl:for-each> - <xsl:for-each select="ram:GlobalID"> - <br/> - <span> - <xsl:text>Globale Nummer: </xsl:text> - </span> - <xsl:apply-templates/> - <xsl:for-each select="@schemeID"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:call-template name="ram:Global_Identifier"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:Name"> - <br/> - <span style="font-weight:bold; white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:DefinedTradeContact"> - <xsl:for-each select="ram:PersonName"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:DepartmentName"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:PostalTradeAddress"> - <xsl:for-each select="ram:LineOne"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:LineTwo"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:CountryID"> - <br/> - <xsl:apply-templates/> - <span> - <xsl:text> </xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:PostcodeCode"> - <xsl:apply-templates/> - <span> - <xsl:text> </xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:CityName"> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:DefinedTradeContact"> - <xsl:for-each select="ram:TelephoneUniversalCommunication"> - <xsl:for-each select="ram:CompleteNumber"> - <br/> - <span> - <xsl:text>Telefon      : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:FaxUniversalCommunication"> - <xsl:for-each select="ram:CompleteNumber"> - <br/> - <span> - <xsl:text>Fax          : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:EmailURIUniversalCommunication"> - <xsl:for-each select="ram:URIID"> - <br/> - <span> - <xsl:text>E-Mail       : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTaxRegistration"> - <xsl:for-each select="ram:ID"> - <br/> - <xsl:call-template name="ram:TaxRegistration"/> - </xsl:for-each> - </xsl:for-each> - <br/> - </xsl:template> - <xsl:template name="ram:TradeTax"> - <xsl:for-each select="ram:ApplicablePercent"> - <span> - <xsl:variable name="altova:seqContentStrings_56"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_56" select="string($altova:seqContentStrings_56)"/> - <xsl:value-of select="$altova:sContent_56"/> - </span> - <span> - <xsl:text> %</xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:TypeCode"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:CategoryCode"> - <span> - <xsl:text> (</xsl:text> - </span> - <xsl:apply-templates/> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:CalculatedAmount"> - <span> - <xsl:text> entspricht </xsl:text> - </span> - <span> - <xsl:variable name="altova:seqContentStrings_57"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_57" select="string($altova:seqContentStrings_57)"/> - <xsl:value-of select="$altova:sContent_57"/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ExemptionReason"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:template> - <xsl:template name="ram:Positionsreferenz"> - <xsl:for-each select="ram:ID"> - <span> - <xsl:text> Nr. </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:text> vom </xsl:text> - </span> - <span> - <xsl:variable name="altova:seqContentStrings_58"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_58" select="string($altova:seqContentStrings_58)"/> - <xsl:value-of select="$altova:sContent_58"/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:LineID"> - <span> - <xsl:text> Zeile </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:template> - <xsl:template name="ram:Datum"> - <span> - <xsl:value-of select="if ( @format = '102') then concat(substring(.,7,2),'.',substring(.,5,2),'.',substring(.,1,4)) else -if ( @format = '610') then concat(substring(.,5,2),'-',substring(.,1,4)) else -if ( @format = '616') then concat('KW ',substring(.,5,2),' ',substring(.,1,4)) else -concat('Ungültiges Datumsformat für: ', .)"/> - </span> - </xsl:template> - <xsl:template name="ram:Versand_Identifer"> - <span> - <xsl:value-of select="if(. eq 'GSIN') then . else -if(. eq 'GINC') then . else -if(. eq 'SSCC') then 'Nummer der Versandeinheit' else -if(. eq 'FLIGHT_NO') then 'Flugnummer' else -if(. eq 'NUMBER_PLATE') then 'Nummernschild' else -if(. eq 'SHIPMENT_REFERENCE') then 'Sendungs-/Ladungsbezugsnummer' else -."/> - </span> - </xsl:template> - <xsl:template name="ram:Global_Identifier"> - <span> - <xsl:text>(</xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq '0021') then 'BIC' else -if (. eq '0060') then 'DUNS' else -if (. eq '0088') then 'GTIN' else -if (. eq '0160') then 'GLN' else -if (. eq '0177') then 'OSCAR' else -."/> - </span> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:template> - <xsl:template name="ram:Menge"> - <span> - <xsl:variable name="altova:seqContentStrings_59"> - <xsl:value-of select="format-number(number(string(.)), '##0', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_59" select="string($altova:seqContentStrings_59)"/> - <xsl:value-of select="$altova:sContent_59"/> - </span> - <xsl:for-each select="@unitCode"> - <span> - <xsl:text> </xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'C62') then 'Stk' else -if (. eq 'DAY') then 'Tag(e)' else -if (. eq 'HAR') then 'ha' else -if (. eq 'HUR') then 'Std' else -if (. eq 'KGM') then 'kg' else -if (. eq 'KTM') then 'km' else -if (. eq 'LS') then 'pausch' else -if (. eq 'LTR') then 'l' else -if (. eq 'MIN') then 'min' else -if (. eq 'MMK') then 'mm²' else -if (. eq 'MMT') then 'mm' else -if (. eq 'MTK') then 'm²' else -if (. eq 'MTQ') then 'm³' else -if (. eq 'MTR') then 'm' else -if (. eq 'NAR') then 'Anz' else -if (. eq 'NPR') then 'Paar' else -if (. eq 'P1') then '%' else -if (. eq 'SET') then 'Set' else -if (. eq 'TNE') then 't' else -if (. eq 'WEE') then 'Woche(n)' else -."/> - </span> - </xsl:for-each> - </xsl:template> - <xsl:template name="ram:TaxRegistration"> - <span> - <xsl:value-of select="if ( @schemeID = 'FC') then concat('Steuernummer : ', .) else -if ( @schemeID = 'VA') then concat('USt.-Id.-Nr. : ', .) else -concat('Unbekannte Steuernummer (', @schemeID , '): ', .)"/> - </span> - </xsl:template> - <xsl:template name="ram:VersandMode"> - <span> - <xsl:value-of select="if (. eq '0')then '0 - Nicht spezifiziert' else -if (. eq '1')then '1 - Seefracht' else -if (. eq '2')then '2 - Schiene' else -if (. eq '3')then '3 - Straße' else -if (. eq '4')then '4 - Luftfracht' else -if (. eq '5')then '5 - Post/Paketversand' else -if (. eq '6')then '6 - Multimodaler Transport/kombinierter Verkehr' else -if (. eq '7')then '7 - Feste Transportinstallation' else -if (. eq '8')then '8 - Transport auf Binnengewässern' else -if (. eq '9')then '9 - Nicht anwendbar' else -fn:concat(.,' - unbekannte Transportart')"/> - </span> - </xsl:template> - <xsl:template name="ram:PaymentType"> - <span> - <xsl:value-of select="if(. eq '1') then concat(.,' - nicht definiert') else -if(. eq '3') then concat(.,' - Belastung durch automatisierte Clearingstelle') else -if(. eq '10') then concat(.,' - Barzahlung') else -if(. eq '20') then concat(.,' - per Scheck') else -if(. eq '31') then concat(.,' - per Überweisung (SEPA)') else -if(. eq '42') then concat(.,' - per Überweisung (nicht SEPA)') else -if(. eq '48') then concat(.,' - per Kreditkarte') else -if(. eq '49') then concat(.,' - per Lastschrift') else -if(. eq '97') then concat(.,' - per Ausgleich zwischen Partnern') else -."/> - </span> - </xsl:template> - <xsl:template name="ram:Referenz"> - <span> - <xsl:value-of select="if (. eq 'AAA')then 'Auftragsbestätigung' else -if (. eq 'AAB')then 'Proforma-Rechnung' else -if (. eq 'AAG') then 'Angebot' else -if (. eq 'AAJ') then 'Lieferauftrag' else -if (. eq 'AAL') then 'Zeichnung' else -if (. eq 'AAM') then 'Frachtbrief' else -if (. eq 'AAS') then 'Transportdokument' else -if (. eq 'ABT') then 'Zollerklärung' else -if (. eq 'AER') then 'Projektspezifikation' else -if (. eq 'AGG') then 'Reklamation' else -if (. eq 'AJS') then 'Vereinbarung' else -if (. eq 'ALO') then 'Wareneingang' else -if (. eq 'ALQ') then 'Rücksendungsanzeige' else -if (. eq 'API') then 'Bestandsbericht' else -if (. eq 'ASI') then 'Abliefernachweis' else -if (. eq 'AUD') then 'Inkasso-Referenz' else -if (. eq 'AWR') then 'Ursprungsbeleg' else -if (. eq 'BO') then 'Rahmenauftrag' else -if (. eq 'BC') then 'Vertrag (Käufer)' else -if (. eq 'CD') then 'Gutschrift' else -if (. eq 'DL') then 'Belastungsanzeige' else -if (. eq 'MG') then 'Zählernummer' else -if (. eq 'OI') then 'Vorherige Rechnung' else -if (. eq 'PK') then 'Packliste' else -if (. eq 'PL') then 'Preisliste' else -if (. eq 'POR') then 'Bestellantwort' else -if (. eq 'PP') then 'Bestelländerung' else -if (. eq 'TIN') then 'Transportauftrag' else -if (. eq 'VN') then 'Auftragsnummer (Lieferant)' else -."/> - </span> - </xsl:template> - <xsl:template name="PackageQuantity"> - <xsl:for-each select="ram:PackageQuantity"> - <xsl:for-each select="@unitCode"> - <span> - <xsl:text> </xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'BA') then 'Tonne' else -if (. eq 'BC') then 'Getränkekiste' else -if (. eq 'BG') then 'Tüte, Beutel' else -if (. eq 'BO') then 'Flasche' else -if (. eq 'BX') then 'Schachtel' else -if (. eq 'CS') then 'Kiste' else -if (. eq 'CT') then 'Karton' else -if (. eq 'CX') then 'Dose' else -if (. eq 'NE') then 'Unverpackt oder ausgepackt' else -if (. eq 'PX') then 'Palette' else -if (. eq 'RO') then 'Rolle' else -if (. eq 'SA') then 'Sack' -else ."/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:template> - <xsl:template name="local_Identifier"> - <span> - <xsl:text>(</xsl:text> - </span> - <xsl:choose> - <xsl:when test=". instance of element()"> - <xsl:apply-templates/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="."/> - </xsl:otherwise> - </xsl:choose> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:template> - <xsl:template name="Klassifikationsart"> - <xsl:for-each select="@listID"> - <span> - <xsl:text>, Art: </xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'GPC') then 'Global Product Classification (GS1)' else -if (. eq 'ECL') then 'eCl@ass' else -if (. eq 'UNSPSC') then 'United Nations Standard Products and Services Code® (UNSPSC®)' else -if (. eq 'HS') then 'Zolltarifnummer (Harmonised System)' else -if (. eq 'CBV') then 'Gemeinsames Vokabular für öffentliche Aufträge (Common Procurement Vocabulary - CPV)' else -if (. eq 'SELLER_ASSIGNED') then 'vom Verkäufer vergeben' else -if (. eq 'BUYER_ASSIGNED') then 'vom Käufer vergeben' else -."/> - </span> - </xsl:for-each> - </xsl:template> - <xsl:template name="DeliveryTypeCode"> - <span> - <xsl:value-of select="if (. eq 'XW') then 'ab Werk' else -if (. eq 'FCA') then 'frei Frachtführer' else -if (. eq 'FAS') then 'frei längsseits Schiff' else -if (. eq 'FOB') then 'frei an Bord' else -if (. eq 'CFR') then 'Kosten und Fracht' else -if (. eq 'CIF') then 'Kosten, Versicherung und Fracht bis zum Bestimmungshafen' else -if (. eq 'DAT') then 'geliefert Terminal' else -if (. eq 'DAP') then 'geliefert benannter Ort' else -if (. eq 'CPT') then 'Fracht bezahlt bis' else -if (. eq 'CIP') then 'Fracht und Versicherung bezahlt' else -if (. eq 'DDP') then 'geliefert Zoll bezahlt' else -."/> - </span> - </xsl:template> - <xsl:template name="AllowanceChargeReasonCode"> - <span> - <xsl:text>(</xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'AA') then 'Werbekostenzuschuß' else -if (. eq 'ADR') then 'Andere Dienste' else -if (. eq 'AEO') then 'Sammel- und Recyclingservice' else -if (. eq 'DI') then 'Abzug (Rabatt)' else -if (. eq 'EAB') then 'Skonto' else -if (. eq 'FC') then 'Frachtgebühren' else -if (. eq 'IN') then 'Versicherung' else -if (. eq 'MAC') then 'Mindermengenzuschlag' else -if (. eq 'NAA') then 'Einwegbehälter' else -if (. eq 'PC') then 'Verpacken' else -if (. eq 'RAA') then 'Rückvergütung' else -if (. eq 'SH') then 'Spezielle Handhabungsdienstleistungen' else -."/> - </span> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:template> - <xsl:function name="altova:is-cell-empty" as="xs:boolean"> - <xsl:param name="altova:cell" as="element()"/> - <xsl:sequence select="altova:is-node-empty( $altova:cell )"/> - </xsl:function> - <xsl:function name="altova:is-node-empty" as="xs:boolean"> - <xsl:param name="altova:node" as="element()"/> - <xsl:sequence select="every $altova:child in $altova:node/child::node() satisfies ( ( boolean( $altova:child/self::text() ) and string-length( $altova:child ) = 0 ) or ( ( boolean( $altova:child/self::div ) or boolean( $altova:child/self::span ) or boolean( $altova:child/self::a ) ) and altova:is-node-empty( $altova:child ) ) )"/> - </xsl:function> - <xsl:function name="altova:col-span" as="xs:integer"> - <xsl:param name="altova:cell" as="element()"/> - <xsl:sequence select="if ( exists( $altova:cell/@colspan ) ) then xs:integer( $altova:cell/@colspan ) else 1"/> - </xsl:function> - <xsl:template match="@* | node()" mode="altova:generate-table"> - <xsl:param name="altova:generate-cols"/> - <xsl:copy> - <xsl:apply-templates select="@* | node()" mode="#current"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:copy> - </xsl:template> - <xsl:template match="tbody" mode="altova:generate-table"> - <xsl:param name="altova:generate-cols"/> - <xsl:choose> - <xsl:when test="empty(tr)"> - <xsl:copy> - <tr> - <td/> - </tr> - </xsl:copy> - </xsl:when> - <xsl:otherwise> - <xsl:copy> - <xsl:apply-templates select="@* | node()" mode="#current"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:copy> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - <xsl:template match="th | td" mode="altova:generate-table"> - <xsl:choose> - <xsl:when test="altova:is-cell-empty( . )"> - <xsl:copy> - <xsl:apply-templates select="@*" mode="#current"/> - <xsl:text> </xsl:text> - </xsl:copy> - </xsl:when> - <xsl:otherwise> - <xsl:copy> - <xsl:apply-templates select="@* | node()" mode="#current"/> - </xsl:copy> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - <xsl:function name="altova:GetChartYValuesForSingleSeries"> - <xsl:param name="seqCategoryLeafPos" as="node()*"/> - <xsl:param name="nodeSeriesLeafPos" as="node()"/> - <xsl:param name="bValuesInCategory" as="xs:boolean"/> - <xsl:for-each select="$seqCategoryLeafPos"> - <xsl:element name="altova:Value"> - <xsl:value-of select="altova:GetChartYValueForSingleSeriesPos($nodeSeriesLeafPos, ., $bValuesInCategory)"/> - </xsl:element> - </xsl:for-each> - </xsl:function> - <xsl:function name="altova:GetChartYValueForSingleSeriesPos"> - <xsl:param name="nodeSeriesLeafPos" as="node()"/> - <xsl:param name="nodeCategoryLeafPos" as="node()"/> - <xsl:param name="bValuesInCategory" as="xs:boolean"/> - <xsl:variable name="altova:seqCategoryContextIds" select="$nodeCategoryLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> - <xsl:variable name="altova:seqSeriesContextIds" select="$nodeSeriesLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> - <xsl:variable name="altova:sCommonContextId" select="for $i in $altova:seqCategoryContextIds return if (some $j in $altova:seqSeriesContextIds satisfies $i eq $j) then $i else ()" as="xs:string*"/> - <xsl:choose> - <xsl:when test="count($altova:sCommonContextId) gt 1"> - <xsl:message select="concat('Es wurden mehrere Werte anstatt eines einzigen gefunden (Contexts: ', string-join($altova:sCommonContextId, ', '), ').')" terminate="yes"/> - </xsl:when> - <xsl:when test="count($altova:sCommonContextId) lt 1"> - <xsl:message select="concat('XBRL Chart: Info: No value found for position labeled "', $nodeCategoryLeafPos/@altova:sLabel, '"')" terminate="no"/> - <xsl:sequence select="'altova:no-value'"/> - </xsl:when> - <xsl:when test="$bValuesInCategory"> - <xsl:sequence select="xs:string($nodeCategoryLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> - </xsl:when> - <xsl:otherwise> - <xsl:sequence select="xs:string($nodeSeriesLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> - </xsl:otherwise> - </xsl:choose> - </xsl:function> - <xsl:function name="altova:GetChartLabelForPos" as="xs:string"> - <xsl:param name="nodeParam" as="node()"/> - <xsl:value-of select="string-join($nodeParam/ancestor-or-self::altova:Pos/@altova:sLabel, ' ')"/> - </xsl:function> - <xsl:function name="altova:convert-length-to-pixel" as="xs:decimal"> - <xsl:param name="altova:length"/> - <xsl:variable name="normLength" select="normalize-space($altova:length)"/> - <xsl:choose> - <xsl:when test="ends-with($normLength, 'px')"> - <xsl:value-of select="substring-before($normLength, 'px')"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'in')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * $altova:nPxPerIn"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'cm')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * $altova:nPxPerIn div 2.54"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'mm')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'mm')) * $altova:nPxPerIn div 25.4"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pt')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * $altova:nPxPerIn div 72.0"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pc')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * $altova:nPxPerIn div 6.0"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$normLength"/> - </xsl:otherwise> - </xsl:choose> - </xsl:function> - <xsl:function name="altova:convert-length-to-mm" as="xs:decimal"> - <xsl:param name="altova:length"/> - <xsl:variable name="normLength" select="normalize-space($altova:length)"/> - <xsl:choose> - <xsl:when test="ends-with($normLength, 'px')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'px')) div $altova:nPxPerIn * 25.4"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'in')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * 25.4"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'cm')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * 10"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'mm')"> - <xsl:value-of select="substring-before($normLength, 'mm') "/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pt')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * 25.4 div 72.0"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pc')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * 25.4 div 6.0"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="number($normLength) div $altova:nPxPerIn * 25.4"/> - </xsl:otherwise> - </xsl:choose> - </xsl:function> -</xsl:stylesheet> +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Nutzungsrechte +ZUGFeRD Datenformat Version 1.0, 25.6.2014 + +Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung +eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht +diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“) + +Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung +frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine +Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht +diskriminierenden Bedingungen an. + +Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung +abrufbar unter www.ferd-net.de. + +Im Einzelnen schließt die Nutzungsgewährung ein: +===================================== + +FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils +geltenden und akzeptierten Fassung (www.ferd-net.de) ein. +Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, +Weiterbearbeitung und Verbindung mit anderen Produkten. +Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder +anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige +Anwendungen und Dienste. +Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente +und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um +notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch +die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. +Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, +unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit +anderen Produkten einzuräumen. + +Die Lizenz wird kostenfrei zur Verfügung gestellt. + +Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen +Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, +Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, +beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der +Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können. + +--> +<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:altova="http://www.altova.com" xmlns:altovaext="http://www.altova.com/xslt-extensions" xmlns:clitype="clitype" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:ix="http://www.xbrl.org/2008/inlineXBRL" xmlns:java="java" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:sps="http://www.altova.com/StyleVision/user-xpath-functions" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="#all"> + <xsl:output version="4.0" method="html" indent="no" encoding="UTF-8" use-character-maps="spaces" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/> + <xsl:character-map name="spaces"> + <xsl:output-character character=" " string="&nbsp;"/> + </xsl:character-map> + <xsl:param name="altova:bGeneratingFromPxf" select="false()"/> + <xsl:param name="SV_OutputFormat" select="'HTML'"/> + <xsl:param name="SV_BaseOutputFileName" as="xs:string?"> + <xsl:sequence select="for $i in altovaext:get-base-output-uri(), $j in tokenize( $i, '[/\\]' )[last()] return replace( $j, '\.[^\.\s#%;]*$', '' )" use-when="function-available('altovaext:get-base-output-uri')"/> + </xsl:param> + <xsl:param name="SV_GeneratedFileNamePrefix" select="if ( $SV_BaseOutputFileName ) then $SV_BaseOutputFileName else 'zugferd_1p0_s1p0_c1p0'" as="xs:string?"/> + <xsl:variable name="XML" select="/"/> + <xsl:variable name="altova:nPxPerIn" select="96"/> + <xsl:decimal-format name="format1" grouping-separator="." decimal-separator=","/> + <xsl:import-schema schema-location="../schema/ZUGFeRD_1p0.xsd" use-when="system-property('xsl:is-schema-aware')='yes'" namespace="urn:ferd:CrossIndustryDocument:invoice:1p0"/> + <xsl:variable name="altova:CssImages" select="()"/> + <xsl:template match="/"> + <xsl:call-template name="altova:Root"/> + </xsl:template> + <xsl:template name="altova:Root"> + <html> + <head> + <title/> + <meta http-equiv="X-UA-Compatible" content="IE=9"/> + <xsl:comment>[if IE]><STYLE type="text/css">.altova-rotate-left-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)} .altova-rotate-right-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1)} </STYLE><![endif]</xsl:comment> + <xsl:comment>[if !IE]><!</xsl:comment> + <style type="text/css">.altova-rotate-left-textbox{-webkit-transform: rotate(-90deg) translate(-100%, 0%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(-90deg) translate(-100%, 0%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(-90deg) translate(-100%, 0%); -ms-transform-origin: 0% 0%;}.altova-rotate-right-textbox{-webkit-transform: rotate(90deg) translate(0%, -100%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(90deg) translate(0%, -100%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(90deg) translate(0%, -100%); -ms-transform-origin: 0% 0%;}</style> + <xsl:comment><![endif]</xsl:comment> + <style type="text/css">@page { margin-left:0.60in; margin-right:0.60in; margin-top:0.79in; margin-bottom:0.79in } @media print { br.altova-page-break { page-break-before: always; } }</style> + </head> + <body style="font-family:Courier; font-size:small; "> + <xsl:for-each select="$XML"> + <xsl:for-each select="rsm:CrossIndustryDocument"> + <span> + <xsl:text>Stylesheet Lesbarmachung der XML-Daten von ZUGFeRD-Rechnungen</xsl:text> + </span> + <br/> + <span> + <xsl:text>ZUGFeRD-Version   : 1.0 vom 25.06.2014 </xsl:text> + </span> + <br/> + <span> + <xsl:text>Stylesheet-Version: 1.0 vom 25.06.2014</xsl:text> + </span> + <br/> + <span> + <xsl:text>Codelisten-Version: 1.0 vom 25.06.2014</xsl:text> + </span> + <br/> + <span> + <xsl:text>(c) AWV e.V. 2014</xsl:text> + </span> + <xsl:variable name="altova:table"> + <table style="border-collapse:collapse; " border="1" width="100%"> + <xsl:variable name="altova:CurrContextGrid_0" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr> + <td> + <br/> + <h2> + <xsl:for-each select="rsm:HeaderExchangedDocument"> + <xsl:for-each select="ram:Name"> + <span style="font-weight:bold; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + <span style="empty-cells:hide; font-weight:bold; "> + <xsl:text>(</xsl:text> + </span> + <xsl:for-each select="ram:TypeCode"> + <xsl:apply-templates/> + </xsl:for-each> + <span style="empty-cells:hide; font-weight:bold; "> + <xsl:text>) Nr. </xsl:text> + </span> + <xsl:for-each select="ram:ID"> + <span style="font-weight:bold; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + <span style="empty-cells:hide; font-weight:bold; "> + <xsl:text> vom </xsl:text> + </span> + <xsl:for-each select="ram:IssueDateTime"> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </h2> + <xsl:for-each select="rsm:SpecifiedExchangedDocumentContext"> + <br/> + <xsl:for-each select="ram:TestIndicator"> + <xsl:for-each select="udt:Indicator"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Testkennzeichen      : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:BusinessProcessSpecifiedDocumentContextParameter"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Geschäftsprozess     : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedExchangedDocumentContext"> + <xsl:for-each select="ram:GuidelineSpecifiedDocumentContextParameter"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Anwendungsempfehlung : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:HeaderExchangedDocument"> + <xsl:for-each select="ram:CopyIndicator"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Kopie                : </xsl:text> + </span> + <xsl:for-each select="udt:Indicator"> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:HeaderExchangedDocument"> + <xsl:for-each select="ram:LanguageID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Sprache              : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:InvoiceCurrencyCode"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Währung              : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <br/> + </td> + </tr> + <tr> + <td> + <xsl:for-each select="rsm:HeaderExchangedDocument"> + <xsl:for-each select="ram:EffectiveSpecifiedPeriod"> + <xsl:for-each select="ram:CompleteDateTime"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Vertragliches Fälligkeitsdatum: </xsl:text> + </span> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> + <xsl:for-each select="ram:ActualDeliverySupplyChainEvent"> + <xsl:for-each select="ram:OccurrenceDateTime"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Liefer- und Leistungsdatum    : </xsl:text> + </span> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:BillingSpecifiedPeriod"> + <xsl:for-each select="ram:StartDateTime"> + <br/> + <span> + <xsl:text>Abrechnungszeitraum           : </xsl:text> + </span> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + <span> + <xsl:text> bis </xsl:text> + </span> + <xsl:for-each select="ram:EndDateTime"> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <br/> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:BuyerReference"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Referenz des Käufers          : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:PaymentReference"> + <br/> + <span style="empty-cells:hide; font-weight:bold; "> + <xsl:text>Zahlungsreferenz              : </xsl:text> + </span> + <span style="font-weight:bold; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:ReceivableSpecifiedTradeAccountingAccount"> + <xsl:for-each select="ram:ID"> + <br/> + <span> + <xsl:text>Buchungsreferenz              : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:ApplicableTradeDeliveryTerms"> + <xsl:for-each select="ram:DeliveryTypeCode"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Lieferbedingung (codiert)     : </xsl:text> + </span> + <xsl:call-template name="DeliveryTypeCode"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> + <xsl:for-each select="ram:RelatedSupplyChainConsignment"> + <xsl:for-each select="ram:SpecifiedLogisticsTransportMovement"> + <xsl:for-each select="ram:ModeCode"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Versandart (codiert)          : </xsl:text> + </span> + <xsl:call-template name="ram:VersandMode"/> + </xsl:for-each> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Versand-ID                    : </xsl:text> + </span> + <xsl:apply-templates/> + <xsl:for-each select="@schemeID"> + <span style="empty-cells:hide; "> + <xsl:text>, Art: </xsl:text> + </span> + <xsl:call-template name="ram:Versand_Identifer"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <br/> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:BuyerOrderReferencedDocument"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Bestellung                    : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <span style="empty-cells:hide; "> + <xsl:text> vom </xsl:text> + </span> + <xsl:for-each select="ram:IssueDateTime"> + <span> + <xsl:variable name="altova:seqContentStrings_1"> + <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_1" select="string($altova:seqContentStrings_1)"/> + <xsl:value-of select="$altova:sContent_1"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> + <xsl:for-each select="ram:DespatchAdviceReferencedDocument"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Lieferavis                    : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <span style="empty-cells:hide; "> + <xsl:text> vom </xsl:text> + </span> + <xsl:for-each select="ram:IssueDateTime"> + <span> + <xsl:variable name="altova:seqContentStrings_2"> + <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_2" select="string($altova:seqContentStrings_2)"/> + <xsl:value-of select="$altova:sContent_2"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> + <xsl:for-each select="ram:DeliveryNoteReferencedDocument"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Lieferschein                  : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <span style="empty-cells:hide; "> + <xsl:text> vom </xsl:text> + </span> + <xsl:for-each select="ram:IssueDateTime"> + <span> + <xsl:variable name="altova:seqContentStrings_3"> + <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_3" select="string($altova:seqContentStrings_3)"/> + <xsl:value-of select="$altova:sContent_3"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:ContractReferencedDocument"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Vertrag                       : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <span style="empty-cells:hide; "> + <xsl:text> vom </xsl:text> + </span> + <xsl:for-each select="ram:IssueDateTime"> + <span> + <xsl:variable name="altova:seqContentStrings_4"> + <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_4" select="string($altova:seqContentStrings_4)"/> + <xsl:value-of select="$altova:sContent_4"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:CustomerOrderReferencedDocument"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Kundenbestellung              : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <span style="empty-cells:hide; "> + <xsl:text> vom </xsl:text> + </span> + <xsl:for-each select="ram:IssueDateTime"> + <span> + <xsl:variable name="altova:seqContentStrings_5"> + <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_5" select="string($altova:seqContentStrings_5)"/> + <xsl:value-of select="$altova:sContent_5"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:AdditionalReferencedDocument"> + <xsl:for-each select="ram:ID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Weitere Referenz              : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <span style="empty-cells:hide; "> + <xsl:text> vom </xsl:text> + </span> + <xsl:for-each select="ram:IssueDateTime"> + <span> + <xsl:variable name="altova:seqContentStrings_6"> + <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_6" select="string($altova:seqContentStrings_6)"/> + <xsl:value-of select="$altova:sContent_6"/> + </span> + </xsl:for-each> + <xsl:for-each select="ram:TypeCode"> + <span style="empty-cells:hide; "> + <xsl:text>, Art der Referenz: </xsl:text> + </span> + <xsl:call-template name="ram:Referenz"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <br/> + <span style="empty-cells:hide; "> + <xsl:text> </xsl:text> + </span> + </td> + </tr> + <tr> + <td> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:SellerTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Verkäufer:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:BuyerTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Käufer:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> + <xsl:for-each select="ram:ProductEndUserTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Endverbraucher:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> + <xsl:for-each select="ram:ShipToTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Abweichender Warenempfänger:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> + <xsl:for-each select="ram:UltimateShipToTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Abweichender Endempfänger:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> + <xsl:for-each select="ram:ShipFromTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Abweichender Versender:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:InvoiceeTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Abweichender Rechnungsempfänger:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:PayeeTradeParty"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Abweichender Zahlungsempfänger:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </td> + </tr> + <tr> + <td> + <xsl:for-each select="rsm:HeaderExchangedDocument"> + <br/> + <xsl:for-each select="ram:IncludedNote"> + <xsl:for-each select="ram:SubjectCode"> + <span style="color:gray; empty-cells:hide; "> + <xsl:text>Qualifizierung der Textart: </xsl:text> + </span> + <span style="font-weight:bold; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + <xsl:for-each select="ram:ContentCode"> + <span style="color:gray; empty-cells:hide; "> + <xsl:text>, Qualifizierung des Textes: </xsl:text> + </span> + <span style="font-weight:bold; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + <xsl:for-each select="ram:Content"> + <br/> + <span style="font-weight:bold; white-space:pre-wrap; "> + <xsl:apply-templates/> + </span> + <br/> + <br/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-bottom-style:none; "> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_7" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr style="text-align:center; vertical-align:middle; "> + <td style="border-bottom-style:solid; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> + <span style="font-weight:bold; "> + <xsl:text>Pos</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:left; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Art-Nr-Kunde</xsl:text> + </span> + <br/> + <span style="font-weight:bold; "> + <xsl:text>Art-Nr-Lief.</xsl:text> + </span> + <br/> + <span style="font-weight:bold; "> + <xsl:text>Art-Nr</xsl:text> + </span> + <br/> + <span style="font-weight:bold; "> + <xsl:text>(Art)</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; "> + <span style="font-weight:bold; "> + <xsl:text>Beschreibung</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>E-Preis</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:120px; "> + <span style="font-weight:bold; "> + <xsl:text>Menge</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Steuer</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Entgelt</xsl:text> + </span> + </td> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:IncludedSupplyChainTradeLineItem"> + <xsl:if test="fn:not( fn:empty(ram:SpecifiedTradeProduct))"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_8" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr style="vertical-align:top; "> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> + <xsl:for-each select="ram:AssociatedDocumentLineDocument"> + <xsl:if test="fn:empty(ram:IncludedNote)"> + <xsl:for-each select="ram:LineID"> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:if> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "> + <xsl:for-each select="ram:SpecifiedTradeProduct"> + <xsl:for-each select="ram:BuyerAssignedID"> + <xsl:apply-templates/> + </xsl:for-each> + <br/> + <xsl:for-each select="ram:SellerAssignedID"> + <xsl:apply-templates/> + </xsl:for-each> + <br/> + <xsl:for-each select="ram:GlobalID"> + <xsl:apply-templates/> + <br/> + <xsl:for-each select="@schemeID"> + <xsl:call-template name="ram:Global_Identifier"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; "> + <xsl:for-each select="ram:SpecifiedTradeProduct"> + <xsl:for-each select="ram:Name"> + <span style="white-space:pre-wrap; "> + <xsl:apply-templates/> + </span> + <br/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> + <xsl:if test="fn:exists(ram:GrossPriceProductTradePrice)"> + <xsl:for-each select="ram:GrossPriceProductTradePrice"> + <xsl:for-each select="ram:BasisQuantity"> + <span> + <xsl:text>Preisbasismenge: </xsl:text> + </span> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </xsl:for-each> + </xsl:if> + <xsl:if test="fn:not(fn:exists(ram:GrossPriceProductTradePrice))"> + <xsl:for-each select="ram:NetPriceProductTradePrice"> + <xsl:for-each select="ram:BasisQuantity"> + <br/> + <span> + <xsl:text>Preisbasismenge: </xsl:text> + </span> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </xsl:for-each> + </xsl:if> + </xsl:for-each> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> + <xsl:if test="fn:exists(ram:GrossPriceProductTradePrice)"> + <xsl:for-each select="ram:GrossPriceProductTradePrice"> + <xsl:for-each select="ram:ChargeAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_9"> + <xsl:value-of select="format-number(number(string(.)), '##0,0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_9" select="string($altova:seqContentStrings_9)"/> + <xsl:value-of select="$altova:sContent_9"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:if> + <xsl:if test="not(fn:exists(ram:GrossPriceProductTradePrice))"> + <xsl:for-each select="ram:NetPriceProductTradePrice"> + <xsl:for-each select="ram:ChargeAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_10"> + <xsl:value-of select="format-number(number(string(.)), '###.##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_10" select="string($altova:seqContentStrings_10)"/> + <xsl:value-of select="$altova:sContent_10"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:if> + </xsl:for-each> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:120px; "> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> + <xsl:for-each select="ram:BilledQuantity"> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + <xsl:for-each select="ram:ChargeFreeQuantity"> + <br/> + <span> + <xsl:text>kostenfrei:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> + <xsl:for-each select="ram:ApplicableTradeTax"> + <xsl:call-template name="ram:TradeTax"/> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:solid; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> + <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> + <xsl:for-each select="ram:LineTotalAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_11"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_11" select="string($altova:seqContentStrings_11)"/> + <xsl:value-of select="$altova:sContent_11"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </td> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + <xsl:for-each select="ram:AssociatedDocumentLineDocument"> + <xsl:if test="fn:not( fn:empty(ram:IncludedNote))"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-spacing:0px; border-top-style:none; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_12" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr style="empty-cells:hide; vertical-align:top; "> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> + <xsl:for-each select="ram:LineID"> + <xsl:apply-templates/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> + <td style="border-bottom-style:none; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> + <xsl:for-each select="ram:IncludedNote"> + <xsl:for-each select="ram:Content"> + <span style="white-space:pre-wrap; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + <xsl:for-each select="ram:SubjectCode"> + <br/> + <span style="color:gray; empty-cells:hide; "> + <xsl:text>Qualifizierung der Textart: </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:ContentCode"> + <span style="color:gray; empty-cells:hide; "> + <xsl:text>, Qualifizierung des Textes: </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <br/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> + <xsl:for-each select="ram:GrossPriceProductTradePrice"> + <xsl:if test="fn:not( fn:empty(ram:AppliedTradeAllowanceCharge))"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_13" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr style="empty-cells:hide; vertical-align:top; "> + <td style="border-bottom-style:none; border-left-style:none; border-top-style:none; width:30px; "/> + <td style="border-bottom-style:none; border-top-style:none; width:110px; "/> + <td style="border-bottom-style:none; border-right-style:none; border-top-style:none; "> + <xsl:variable name="altova:table"> + <table style="border:0px; border-style:none; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_14" select="."/> + <xsl:variable name="altova:ColumnData"/> + <thead> + <tr> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:left; width:70px; "> + <span style="font-style:italic; "> + <xsl:text>Art</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:left; "> + <span style="font-style:italic; "> + <xsl:text>Grund</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:70px; "> + <span style="font-style:italic; "> + <xsl:text>%</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:110px; "> + <span style="font-style:italic; "> + <xsl:text>Basisbetrag</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:120px; "> + <span style="font-style:italic; "> + <xsl:text>Basismenge</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:110px; "> + <span style="font-style:italic; "> + <xsl:text>Betrag</xsl:text> + </span> + </th> + <th style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; width:112px; "/> + </tr> + </thead> + <tbody> + <xsl:for-each select="ram:AppliedTradeAllowanceCharge"> + <xsl:sort select="ram:SequenceNumeric" data-type="text" order="ascending"/> + <tr> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; vertical-align:top; width:70px; "> + <xsl:for-each select="ram:ChargeIndicator"> + <xsl:for-each select="udt:Indicator"> + <span> + <xsl:value-of select="if (. = fn:true())then 'Zuschlag' else 'Abschlag'"/> + </span> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SequenceNumeric"> + <span> + <xsl:text> Nr. </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; vertical-align:top; "> + <xsl:for-each select="ram:Reason"> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:ReasonCode"> + <span> + <xsl:text> </xsl:text> + </span> + <xsl:call-template name="AllowanceChargeReasonCode"/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:70px; "> + <xsl:for-each select="ram:CalculationPercent"> + <span> + <xsl:variable name="altova:seqContentStrings_15"> + <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_15" select="string($altova:seqContentStrings_15)"/> + <xsl:value-of select="$altova:sContent_15"/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:110px; "> + <xsl:for-each select="ram:BasisAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_16"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_16" select="string($altova:seqContentStrings_16)"/> + <xsl:value-of select="$altova:sContent_16"/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:120px; "> + <xsl:for-each select="ram:BasisQuantity"> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:110px; "> + <xsl:for-each select="ram:ActualAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_17"> + <xsl:value-of select="format-number(number(if(../ram:ChargeIndicator/udt:Indicator = fn:false()) then -1*. else .), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_17" select="string($altova:seqContentStrings_17)"/> + <xsl:value-of select="$altova:sContent_17"/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:108px; "/> + </tr> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </td> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + <xsl:if test="fn:exists(../../ram:SpecifiedSupplyChainTradeSettlement/ram:SpecifiedTradeSettlementMonetarySummation/ram:TotalAllowanceChargeAmount)"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_18" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr style="empty-cells:hide; vertical-align:top; "> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:30px; "/> + <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> + <td style="border-bottom-style:none; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> + <br/> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> + <span> + <xsl:text>Summe:</xsl:text> + </span> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:double; empty-cells:hide; text-align:right; width:110px; "> + <xsl:for-each select="$XML"> + <xsl:for-each select="rsm:CrossIndustryDocument"> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:IncludedSupplyChainTradeLineItem"> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> + <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> + <xsl:for-each select="ram:TotalAllowanceChargeAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_19"> + <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_19" select="string($altova:seqContentStrings_19)"/> + <xsl:value-of select="$altova:sContent_19"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "/> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + </xsl:for-each> + </xsl:for-each> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-spacing:0px; border-top-style:none; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_20" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr style="empty-cells:hide; vertical-align:top; "> + <td style="border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:30px; "/> + <td style="border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> + <td style="border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> + <xsl:for-each select="ram:SpecifiedTradeProduct"> + <xsl:for-each select="ram:Description"> + <br/> + <span style="white-space:pre-wrap; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> + <xsl:for-each select="ram:ActualDeliverySupplyChainEvent"> + <xsl:for-each select="ram:OccurrenceDateTime"> + <br/> + <span> + <xsl:text>* Leistungsdatum: </xsl:text> + </span> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> + <xsl:for-each select="ram:BillingSpecifiedPeriod"> + <br/> + <span> + <xsl:text>* Berechnungszeitraum: </xsl:text> + </span> + <xsl:for-each select="ram:StartDateTime"> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:EndDateTime"> + <span> + <xsl:text> bis </xsl:text> + </span> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedTradeProduct"> + <xsl:for-each select="ram:OriginTradeCountry"> + <xsl:for-each select="ram:ID"> + <br/> + <span> + <xsl:text>* Herkunftsland: </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> + <xsl:for-each select="ram:PackageQuantity"> + <br/> + <span> + <xsl:text>* Anzahl Packstücke: </xsl:text> + </span> + <span> + <xsl:variable name="altova:seqContentStrings_21"> + <xsl:value-of select="format-number(number(string(.)), '##0', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_21" select="string($altova:seqContentStrings_21)"/> + <xsl:value-of select="$altova:sContent_21"/> + </span> + </xsl:for-each> + <xsl:call-template name="PackageQuantity"/> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> + <xsl:for-each select="ram:BuyerOrderReferencedDocument"> + <br/> + <span> + <xsl:text>* Bestellung</xsl:text> + </span> + <xsl:call-template name="ram:Positionsreferenz"/> + </xsl:for-each> + <xsl:for-each select="ram:ContractReferencedDocument"> + <br/> + <span> + <xsl:text>* Vertrag</xsl:text> + </span> + <xsl:call-template name="ram:Positionsreferenz"/> + </xsl:for-each> + <xsl:for-each select="ram:AdditionalReferencedDocument"> + <br/> + <span> + <xsl:text>* Dokument (</xsl:text> + </span> + <xsl:for-each select="ram:ReferenceTypeCode"> + <xsl:call-template name="ram:Referenz"/> + </xsl:for-each> + <span> + <xsl:text>)</xsl:text> + </span> + <xsl:call-template name="ram:Positionsreferenz"/> + </xsl:for-each> + <xsl:for-each select="ram:CustomerOrderReferencedDocument"> + <br/> + <span> + <xsl:text>* Kundenbestellung</xsl:text> + </span> + <xsl:call-template name="ram:Positionsreferenz"/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> + <xsl:for-each select="ram:DespatchAdviceReferencedDocument"> + <br/> + <span> + <xsl:text>* Lieferavis</xsl:text> + </span> + <xsl:call-template name="ram:Positionsreferenz"/> + </xsl:for-each> + <xsl:for-each select="ram:ReceivingAdviceReferencedDocument"> + <br/> + <span> + <xsl:text>* Wareneingang </xsl:text> + </span> + <xsl:call-template name="ram:Positionsreferenz"/> + </xsl:for-each> + <xsl:for-each select="ram:DeliveryNoteReferencedDocument"> + <br/> + <span> + <xsl:text>* Lieferschein</xsl:text> + </span> + <xsl:call-template name="ram:Positionsreferenz"/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> + <xsl:for-each select="ram:SpecifiedTradeAccountingAccount"> + <xsl:for-each select="ram:ID"> + <br/> + <span> + <xsl:text>* Buchungsreferenz: </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedTradeProduct"> + <xsl:for-each select="ram:DesignatedProductClassification"> + <br/> + <span> + <xsl:text>* Klassifikation: </xsl:text> + </span> + <xsl:for-each select="ram:ClassCode"> + <span> + <xsl:text>[</xsl:text> + </span> + <xsl:apply-templates/> + <span> + <xsl:text>] </xsl:text> + </span> + </xsl:for-each> + <xsl:for-each select="ram:ClassName"> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:ClassCode"> + <xsl:call-template name="Klassifikationsart"/> + <xsl:for-each select="@listVersionID"> + <span> + <xsl:text>, Version: </xsl:text> + </span> + <span> + <xsl:value-of select="string(.)"/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> + <xsl:for-each select="ram:ShipToTradeParty"> + <br/> + <span style="text-decoration:underline; "> + <xsl:text>Abweichender Warenempfänger:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + <xsl:for-each select="ram:UltimateShipToTradeParty"> + <br/> + <span style="text-decoration:underline; "> + <xsl:text>Abweichender Endempfänger:</xsl:text> + </span> + <br/> + <xsl:call-template name="ram:Party"/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedTradeProduct"> + <xsl:if test="fn:exists(ram:ApplicableProductCharacteristic)"> + <br/> + <br/> + <span style="text-decoration:underline; "> + <xsl:text>Weitere Eigenschaften:</xsl:text> + </span> + <br/> + </xsl:if> + <xsl:for-each select="ram:ApplicableProductCharacteristic"> + <xsl:for-each select="ram:Description"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + <span> + <xsl:text>: </xsl:text> + </span> + <xsl:for-each select="ram:TypeCode"> + <xsl:apply-templates/> + </xsl:for-each> + <span> + <xsl:text> = </xsl:text> + </span> + <xsl:for-each select="ram:Value"> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:ValueMeasure"> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:if test="fn:exists(ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct)"> + <br/> + <br/> + <span style="text-decoration:underline; "> + <xsl:text>Basisartikel:</xsl:text> + </span> + <br/> + </xsl:if> + <xsl:for-each select="ram:SpecifiedTradeProduct"> + <xsl:if test="fn:exists(ram:IncludedReferencedProduct)"> + <xsl:variable name="altova:table"> + <table style="border:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_22" select="."/> + <xsl:variable name="altova:ColumnData"/> + <thead> + <tr> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; text-align:left; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Art-Nr-Kunde</xsl:text> + </span> + <br/> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Art-Nr-Lief.</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; width:110px; "> + <span> + <xsl:text>Art-Nr. (Art)</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; "> + <span> + <xsl:text>Beschreibung</xsl:text> + </span> + </th> + <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; text-align:right; width:120px; "> + <span> + <xsl:text>Menge</xsl:text> + </span> + </th> + </tr> + </thead> + <tbody> + <xsl:for-each select="ram:IncludedReferencedProduct"> + <tr> + <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; text-align:left; vertical-align:top; width:110px; "> + <xsl:for-each select="ram:BuyerAssignedID"> + <xsl:apply-templates/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; width:110px; "> + <xsl:for-each select="ram:SellerAssignedID"> + <xsl:apply-templates/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; width:110px; "> + <xsl:for-each select="ram:GlobalID"> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:GlobalID"> + <xsl:for-each select="@schemeID"> + <xsl:call-template name="ram:Global_Identifier"/> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; "> + <xsl:for-each select="ram:Name"> + <xsl:apply-templates/> + </xsl:for-each> + <br/> + <xsl:for-each select="ram:Description"> + <xsl:apply-templates/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; text-align:right; vertical-align:top; width:120px; "> + <xsl:for-each select="ram:UnitQuantity"> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + </xsl:for-each> + </td> + <td style="border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:for-each> + <br/> + </td> + </tr> + <tr> + <td style="border-bottom-style:none; border-top-style:none; "> + <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:SpecifiedTradePaymentTerms)"> + <br/> + <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> + <xsl:text>Zahlungsbedingungen:</xsl:text> + </span> + <br/> + <br/> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-right-style:none; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_23" select="."/> + <xsl:variable name="altova:ColumnData"/> + <thead> + <tr> + <th style="border-left-style:none; "> + <span> + <xsl:text>Beschreibung</xsl:text> + </span> + </th> + <th style="width:110px; "> + <span> + <xsl:text>Fälligkeit</xsl:text> + </span> + </th> + <th style="border-right-style:none; width:110px; "> + <span> + <xsl:text>Teilzahlung</xsl:text> + </span> + </th> + </tr> + </thead> + <tbody> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:SpecifiedTradePaymentTerms"> + <tr> + <td style="border-bottom-style:none; border-left-style:none; "> + <xsl:for-each select="ram:Description"> + <span style="white-space:pre-wrap; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; text-align:center; width:110px; "> + <xsl:for-each select="ram:DueDateDateTime"> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-right-style:none; text-align:right; width:110px; "> + <xsl:for-each select="ram:PartialPaymentAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_24"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_24" select="string($altova:seqContentStrings_24)"/> + <xsl:value-of select="$altova:sContent_24"/> + </span> + </xsl:for-each> + </td> + </tr> + <tr> + <td colspan="3" style="border-left-style:none; border-right-style:none; border-top-style:none; min-height:0px; "> + <xsl:if test="fn:exists(ram:ApplicableTradePaymentPenaltyTerms) or fn:exists(ram:ApplicableTradePaymentDiscountTerms)"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-left-style:none; border-top-style:none; margin:0px; padding:0px; " border="1" width="100%"> + <xsl:variable name="altova:CurrContextGrid_25" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr style="border-bottom-style:none; border-top-style:none; "> + <td style="border-bottom-style:none; border-left-style:none; border-top-style:none; min-height:0px; "/> + <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Bezug</xsl:text> + </span> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Innerhalb</xsl:text> + </span> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Basisbetrag</xsl:text> + </span> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>%</xsl:text> + </span> + </td> + <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:center; width:108px; "> + <span style="font-weight:bold; "> + <xsl:text>Betrag</xsl:text> + </span> + </td> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + <xsl:if test="fn:exists(ram:ApplicableTradePaymentPenaltyTerms)"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-bottom-style:none; border-collapse:collapse; margin:0px; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_26" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <xsl:for-each select="ram:ApplicableTradePaymentPenaltyTerms"> + <tr> + <td style="border-bottom-style:none; border-left-style:none; min-height:0px; text-align:right; "> + <span> + <xsl:text>Zuschlag  </xsl:text> + </span> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> + <xsl:for-each select="ram:BasisDateTime"> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> + <xsl:for-each select="ram:BasisPeriodMeasure"> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> + <xsl:for-each select="ram:BasisAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_27"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_27" select="string($altova:seqContentStrings_27)"/> + <xsl:value-of select="$altova:sContent_27"/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> + <xsl:for-each select="ram:CalculationPercent"> + <span> + <xsl:variable name="altova:seqContentStrings_28"> + <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_28" select="string($altova:seqContentStrings_28)"/> + <xsl:value-of select="$altova:sContent_28"/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:right; width:108px; "> + <xsl:for-each select="ram:ActualPenaltyAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_29"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_29" select="string($altova:seqContentStrings_29)"/> + <xsl:value-of select="$altova:sContent_29"/> + </span> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + <xsl:if test="fn:exists(ram:ApplicableTradePaymentDiscountTerms)"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; margin:0px; padding:0px; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_30" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <xsl:for-each select="ram:ApplicableTradePaymentDiscountTerms"> + <tr> + <td style="border-bottom-style:none; border-left-style:none; min-height:0px; text-align:right; "> + <span> + <xsl:text>Skonto  </xsl:text> + </span> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> + <xsl:for-each select="ram:BasisDateTime"> + <xsl:for-each select="udt:DateTimeString"> + <xsl:call-template name="ram:Datum"/> + </xsl:for-each> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> + <xsl:for-each select="ram:BasisPeriodMeasure"> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> + <xsl:for-each select="ram:BasisAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_31"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_31" select="string($altova:seqContentStrings_31)"/> + <xsl:value-of select="$altova:sContent_31"/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> + <xsl:for-each select="ram:CalculationPercent"> + <span> + <xsl:variable name="altova:seqContentStrings_32"> + <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_32" select="string($altova:seqContentStrings_32)"/> + <xsl:value-of select="$altova:sContent_32"/> + </span> + </xsl:for-each> + </td> + <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:right; width:108px; "> + <xsl:for-each select="ram:ActualDiscountAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_33"> + <xsl:value-of select="format-number(number(-1 * .), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_33" select="string($altova:seqContentStrings_33)"/> + <xsl:value-of select="$altova:sContent_33"/> + </span> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + </td> + </tr> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans)"> + <br/> + <span style="font-weight:bold; text-decoration:underline; "> + <xsl:text>Zahlungsart:</xsl:text> + </span> + <br/> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:SpecifiedTradeSettlementPaymentMeans"> + <xsl:for-each select="ram:Information"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:TypeCode"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Zahlungstyp (codiert): </xsl:text> + </span> + <xsl:call-template name="ram:PaymentType"/> + </xsl:for-each> + <xsl:for-each select="ram:ID"> + <xsl:for-each select="@schemeAgencyID"> + <br/> + <span> + <xsl:text>Gläubiger-ID         : </xsl:text> + </span> + <span> + <xsl:value-of select="string(.)"/> + </span> + </xsl:for-each> + <br/> + <span> + <xsl:text>Mandatsreferenz      : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:PayerPartyDebtorFinancialAccount"> + <xsl:for-each select="ram:IBANID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Käufer-IBAN          : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:ProprietaryID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Käufer-Kontonummer   : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:PayerSpecifiedDebtorFinancialInstitution"> + <xsl:for-each select="ram:BICID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Käufer-BIC           : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:GermanBankleitzahlID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Käufer-Bankleitzahl  : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:Name"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Käufer-Kreditinstitut: </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <br/> + <xsl:for-each select="ram:PayeePartyCreditorFinancialAccount"> + <xsl:for-each select="ram:AccountName"> + <br/> + <span> + <xsl:text>Verkäufer-Kontoname  : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:IBANID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Verkäufer-IBAN       : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:ProprietaryID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Verkäufer-Kontonummer: </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:PayeeSpecifiedCreditorFinancialInstitution"> + <xsl:for-each select="ram:BICID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Verkäufer-BIC        : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:GermanBankleitzahlID"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Verkäufer-BLZ        : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:Name"> + <br/> + <span style="empty-cells:hide; "> + <xsl:text>Verkäufer-Kreditinst.: </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </xsl:if> + </td> + </tr> + <tr> + <td style="border-bottom-style:none; border-right-style:none; border-top-style:none; "> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <br/> + <xsl:if test="fn:exists(ram:SpecifiedTradeAllowanceCharge) or fn:exists(ram:SpecifiedLogisticsServiceCharge)"> + <span style="font-weight:bold; text-decoration:underline; "> + <xsl:text>Zu- und Abschläge:</xsl:text> + </span> + <br/> + <br/> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; empty-cells:hide; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_34" select="."/> + <xsl:variable name="altova:ColumnData"/> + <thead> + <tr> + <th colspan="2" style="border-left-style:none; "> + <span> + <xsl:text>Art</xsl:text> + </span> + </th> + <th> + <span> + <xsl:text>%</xsl:text> + </span> + </th> + <th> + <span> + <xsl:text>Basisbetrag</xsl:text> + </span> + </th> + <th style="width:110px; "> + <span> + <xsl:text>Basismenge</xsl:text> + </span> + </th> + <th style="width:110px; "> + <span> + <xsl:text>Steuer</xsl:text> + </span> + </th> + <th style="border-right-style:none; width:110px; "> + <span> + <xsl:text>Betrag</xsl:text> + </span> + </th> + </tr> + </thead> + <tbody> + <xsl:for-each select="ram:SpecifiedTradeAllowanceCharge"> + <xsl:sort select="ram:SequenceNumeric" data-type="text" order="ascending"/> + <tr> + <td style="border-left-style:none; "> + <xsl:for-each select="ram:ChargeIndicator"> + <xsl:for-each select="udt:Indicator"> + <span> + <xsl:value-of select="if (. = fn:true())then 'Zuschlag' else 'Abschlag'"/> + </span> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SequenceNumeric"> + <span> + <xsl:text> Nr. </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </td> + <td> + <xsl:for-each select="ram:Reason"> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:ReasonCode"> + <span> + <xsl:text> </xsl:text> + </span> + <xsl:call-template name="AllowanceChargeReasonCode"/> + </xsl:for-each> + </td> + <td style="text-align:right; "> + <xsl:for-each select="ram:CalculationPercent"> + <span> + <xsl:variable name="altova:seqContentStrings_35"> + <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_35" select="string($altova:seqContentStrings_35)"/> + <xsl:value-of select="$altova:sContent_35"/> + </span> + </xsl:for-each> + </td> + <td style="text-align:right; "> + <xsl:for-each select="ram:BasisAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_36"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_36" select="string($altova:seqContentStrings_36)"/> + <xsl:value-of select="$altova:sContent_36"/> + </span> + </xsl:for-each> + </td> + <td style="text-align:right; width:110px; "> + <xsl:for-each select="ram:BasisQuantity"> + <xsl:call-template name="ram:Menge"/> + </xsl:for-each> + </td> + <td style="text-align:right; width:110px; "> + <xsl:for-each select="ram:CategoryTradeTax"> + <xsl:call-template name="ram:TradeTax"/> + </xsl:for-each> + </td> + <td style="border-right-style:none; text-align:right; width:110px; "> + <xsl:for-each select="ram:ActualAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_37"> + <xsl:value-of select="format-number(number(if (../ram:ChargeIndicator/udt:Indicator = fn:true()) then . else -1 * .), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_37" select="string($altova:seqContentStrings_37)"/> + <xsl:value-of select="$altova:sContent_37"/> + </span> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + <xsl:if test="fn:exists(ram:SpecifiedLogisticsServiceCharge)"> + <xsl:if test="fn:not(fn:exists(ram:SpecifiedTradeAllowanceCharge))"> + <xsl:variable name="altova:table"> + <table style="border:0px; border-top-style:none; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_38" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <xsl:for-each select="ram:SpecifiedLogisticsServiceCharge"> + <tr> + <td style="border-left-style:none; border-top-style:solid; text-align:center; "> + <span style="font-weight:bold; "> + <xsl:text>Art</xsl:text> + </span> + </td> + <td style="border-top-style:solid; text-align:center; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Steuer</xsl:text> + </span> + </td> + <td style="border-right-style:none; border-top-style:solid; text-align:center; width:110px; "> + <span style="font-weight:bold; "> + <xsl:text>Betrag</xsl:text> + </span> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + <xsl:variable name="altova:table"> + <table style="border:0px; border-top-style:none; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_39" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <xsl:for-each select="ram:SpecifiedLogisticsServiceCharge"> + <tr> + <td style="border-left-style:none; border-top-style:none; "> + <xsl:for-each select="ram:Description"> + <span style="white-space:pre-wrap; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + </td> + <td style="border-top-style:none; text-align:right; width:110px; "> + <xsl:for-each select="ram:AppliedTradeTax"> + <xsl:call-template name="ram:TradeTax"/> + </xsl:for-each> + </td> + <td style="border-right-style:none; border-top-style:none; text-align:right; width:110px; "> + <xsl:for-each select="ram:AppliedAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_40"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_40" select="string($altova:seqContentStrings_40)"/> + <xsl:value-of select="$altova:sContent_40"/> + </span> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + </xsl:if> + <br/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"/> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-bottom-style:none; border-top-style:none; "> + <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:ApplicableTradeTax)"> + <br/> + <span style="font-weight:bold; text-decoration:underline; "> + <xsl:text>Steuern:</xsl:text> + </span> + <br/> + <br/> + <xsl:variable name="altova:table"> + <table style="border:0px; border-collapse:collapse; border-right-style:none; width:100%; " border="1"> + <xsl:variable name="altova:CurrContextGrid_41" select="."/> + <xsl:variable name="altova:ColumnData"/> + <thead> + <tr> + <th style="border-left-style:none; "> + <span> + <xsl:text>Art (Kategorie)</xsl:text> + </span> + </th> + <th> + <span> + <xsl:text>Warenwert</xsl:text> + </span> + </th> + <th> + <span> + <xsl:text>Zu-/Abschlag</xsl:text> + </span> + </th> + <th style="width:110px; "> + <span> + <xsl:text>Nettobetrag</xsl:text> + </span> + </th> + <th style="width:110px; "> + <span> + <xsl:text>USt. %</xsl:text> + </span> + </th> + <th style="border-right-style:none; width:110px; "> + <span> + <xsl:text>USt.-Betrag</xsl:text> + </span> + </th> + </tr> + </thead> + <tbody> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:ApplicableTradeTax"> + <tr> + <td style="border-left-style:none; "> + <xsl:for-each select="ram:TypeCode"> + <xsl:apply-templates/> + </xsl:for-each> + <span> + <xsl:text> </xsl:text> + </span> + <xsl:for-each select="ram:CategoryCode"> + <span> + <xsl:text>(</xsl:text> + </span> + <xsl:apply-templates/> + <span> + <xsl:text>)</xsl:text> + </span> + </xsl:for-each> + <xsl:for-each select="ram:ExemptionReason"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + </td> + <td style="text-align:right; "> + <xsl:for-each select="ram:LineTotalBasisAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_42"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_42" select="string($altova:seqContentStrings_42)"/> + <xsl:value-of select="$altova:sContent_42"/> + </span> + </xsl:for-each> + </td> + <td style="text-align:right; "> + <xsl:for-each select="ram:AllowanceChargeBasisAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_43"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_43" select="string($altova:seqContentStrings_43)"/> + <xsl:value-of select="$altova:sContent_43"/> + </span> + </xsl:for-each> + </td> + <td style="text-align:right; width:110px; "> + <xsl:for-each select="ram:BasisAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_44"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_44" select="string($altova:seqContentStrings_44)"/> + <xsl:value-of select="$altova:sContent_44"/> + </span> + </xsl:for-each> + </td> + <td style="text-align:right; width:110px; "> + <xsl:for-each select="ram:ApplicablePercent"> + <span> + <xsl:variable name="altova:seqContentStrings_45"> + <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_45" select="string($altova:seqContentStrings_45)"/> + <xsl:value-of select="$altova:sContent_45"/> + </span> + </xsl:for-each> + </td> + <td style="border-right-style:none; text-align:right; width:110px; "> + <xsl:for-each select="ram:CalculatedAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_46"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_46" select="string($altova:seqContentStrings_46)"/> + <xsl:value-of select="$altova:sContent_46"/> + </span> + </xsl:for-each> + </td> + </tr> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:if> + </td> + </tr> + <tr> + <td style="border-bottom-style:none; text-align:left; "> + <br/> + <span style="font-weight:bold; text-decoration:underline; "> + <xsl:text>Belegsummen:</xsl:text> + </span> + <br/> + <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> + <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> + <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> + <xsl:variable name="altova:table"> + <table style="border:0px; " border="1" width="100%"> + <xsl:variable name="altova:CurrContextGrid_47" select="."/> + <xsl:variable name="altova:ColumnData"/> + <tbody> + <tr> + <td style="border-style:none; "/> + <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> + <span style="font-weight:bold; "> + <xsl:text>Positionssumme</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> + <xsl:for-each select="ram:LineTotalAmount"> + <span style="font-weight:bold; "> + <xsl:variable name="altova:seqContentStrings_48"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_48" select="string($altova:seqContentStrings_48)"/> + <xsl:value-of select="$altova:sContent_48"/> + </span> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-style:none; "/> + <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> + <span> + <xsl:text>Gesamtbetrag der Zuschläge</xsl:text> + </span> + </td> + <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> + <xsl:for-each select="ram:ChargeTotalAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_49"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_49" select="string($altova:seqContentStrings_49)"/> + <xsl:value-of select="$altova:sContent_49"/> + </span> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-style:none; "/> + <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> + <span> + <xsl:text>Gesamtbetrag der Abschläge</xsl:text> + </span> + </td> + <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> + <xsl:for-each select="ram:AllowanceTotalAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_50"> + <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_50" select="string($altova:seqContentStrings_50)"/> + <xsl:value-of select="$altova:sContent_50"/> + </span> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-style:none; "/> + <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> + <span style="font-weight:bold; "> + <xsl:text>Rechnungssumme ohne USt.</xsl:text> + </span> + </td> + <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> + <xsl:for-each select="ram:TaxBasisTotalAmount"> + <span style="font-weight:bold; "> + <xsl:variable name="altova:seqContentStrings_51"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_51" select="string($altova:seqContentStrings_51)"/> + <xsl:value-of select="$altova:sContent_51"/> + </span> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-style:none; "/> + <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> + <span> + <xsl:text>Steuerbetrag</xsl:text> + </span> + </td> + <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> + <xsl:for-each select="ram:TaxTotalAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_52"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_52" select="string($altova:seqContentStrings_52)"/> + <xsl:value-of select="$altova:sContent_52"/> + </span> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-style:none; "/> + <td style="border-bottom-style:double; border-bottom-width:medium; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> + <span style="font-weight:bold; "> + <xsl:text>Bruttosumme</xsl:text> + </span> + </td> + <td style="border-bottom-style:double; border-bottom-width:medium; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> + <xsl:for-each select="ram:GrandTotalAmount"> + <span style="font-weight:bold; "> + <xsl:variable name="altova:seqContentStrings_53"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_53" select="string($altova:seqContentStrings_53)"/> + <xsl:value-of select="$altova:sContent_53"/> + </span> + </xsl:for-each> + </td> + </tr> + <tr> + <td style="border-style:none; "/> + <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> + <xsl:if test="(ram:TotalPrepaidAmount>=0 and fn:exists(ram:TotalPrepaidAmount)) or(fn:not(fn:exists(ram:TotalPrepaidAmount)) and fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID , 'basic' )))"> + <span> + <xsl:text>Erhaltene Anzahlungen</xsl:text> + </span> + <br/> + </xsl:if> + <xsl:if test="ram:TotalPrepaidAmount<0 and fn:exists(ram:TotalPrepaidAmount)"> + <span> + <xsl:text>Offene Zahlungen</xsl:text> + </span> + <br/> + </xsl:if> + </td> + <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> + <xsl:if test="fn:exists(TotalPrepaidAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID , 'basic' ))"> + <xsl:for-each select="ram:TotalPrepaidAmount"> + <span> + <xsl:variable name="altova:seqContentStrings_54"> + <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_54" select="string($altova:seqContentStrings_54)"/> + <xsl:value-of select="$altova:sContent_54"/> + </span> + </xsl:for-each> + </xsl:if> + </td> + </tr> + <tr> + <td style="border-style:none; "/> + <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> + <xsl:if test="fn:exists(ram:DuePayableAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/GuidelineSpecifiedDocumentContextParameter/ID , 'basic' ))"> + <span style="font-weight:bold; "> + <xsl:text>Zahlbetrag</xsl:text> + </span> + </xsl:if> + </td> + <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> + <xsl:if test="fn:exists(ram:DuePayableAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/GuidelineSpecifiedDocumentContextParameter/ID , 'basic' ))"> + <xsl:for-each select="ram:DuePayableAmount"> + <span style="font-weight:bold; "> + <xsl:variable name="altova:seqContentStrings_55"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_55" select="string($altova:seqContentStrings_55)"/> + <xsl:value-of select="$altova:sContent_55"/> + </span> + </xsl:for-each> + </xsl:if> + </td> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + </td> + </tr> + </tbody> + </table> + </xsl:variable> + <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> + <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> + <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + <br/> + </xsl:for-each> + </xsl:for-each> + <br/> + <br/> + </body> + </html> + </xsl:template> + <xsl:template name="ram:Party"> + <xsl:for-each select="ram:ID"> + <span> + <xsl:text>Nummer        : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="@schemeID"> + <xsl:call-template name="local_Identifier"/> + </xsl:for-each> + <xsl:for-each select="ram:GlobalID"> + <br/> + <span> + <xsl:text>Globale Nummer: </xsl:text> + </span> + <xsl:apply-templates/> + <xsl:for-each select="@schemeID"> + <span> + <xsl:text> </xsl:text> + </span> + <xsl:call-template name="ram:Global_Identifier"/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:Name"> + <br/> + <span style="font-weight:bold; white-space:pre-wrap; "> + <xsl:apply-templates/> + </span> + </xsl:for-each> + <xsl:for-each select="ram:DefinedTradeContact"> + <xsl:for-each select="ram:PersonName"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:DepartmentName"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:PostalTradeAddress"> + <xsl:for-each select="ram:LineOne"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:LineTwo"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:CountryID"> + <br/> + <xsl:apply-templates/> + <span> + <xsl:text> </xsl:text> + </span> + </xsl:for-each> + <xsl:for-each select="ram:PostcodeCode"> + <xsl:apply-templates/> + <span> + <xsl:text> </xsl:text> + </span> + </xsl:for-each> + <xsl:for-each select="ram:CityName"> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <br/> + <xsl:for-each select="ram:DefinedTradeContact"> + <xsl:for-each select="ram:TelephoneUniversalCommunication"> + <xsl:for-each select="ram:CompleteNumber"> + <br/> + <span> + <xsl:text>Telefon      : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:FaxUniversalCommunication"> + <xsl:for-each select="ram:CompleteNumber"> + <br/> + <span> + <xsl:text>Fax          : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:EmailURIUniversalCommunication"> + <xsl:for-each select="ram:URIID"> + <br/> + <span> + <xsl:text>E-Mail       : </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:for-each> + </xsl:for-each> + <xsl:for-each select="ram:SpecifiedTaxRegistration"> + <xsl:for-each select="ram:ID"> + <br/> + <xsl:call-template name="ram:TaxRegistration"/> + </xsl:for-each> + </xsl:for-each> + <br/> + </xsl:template> + <xsl:template name="ram:TradeTax"> + <xsl:for-each select="ram:ApplicablePercent"> + <span> + <xsl:variable name="altova:seqContentStrings_56"> + <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_56" select="string($altova:seqContentStrings_56)"/> + <xsl:value-of select="$altova:sContent_56"/> + </span> + <span> + <xsl:text> %</xsl:text> + </span> + </xsl:for-each> + <xsl:for-each select="ram:TypeCode"> + <span> + <xsl:text> </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:CategoryCode"> + <span> + <xsl:text> (</xsl:text> + </span> + <xsl:apply-templates/> + <span> + <xsl:text>)</xsl:text> + </span> + </xsl:for-each> + <xsl:for-each select="ram:CalculatedAmount"> + <span> + <xsl:text> entspricht </xsl:text> + </span> + <span> + <xsl:variable name="altova:seqContentStrings_57"> + <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_57" select="string($altova:seqContentStrings_57)"/> + <xsl:value-of select="$altova:sContent_57"/> + </span> + </xsl:for-each> + <xsl:for-each select="ram:ExemptionReason"> + <br/> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:template> + <xsl:template name="ram:Positionsreferenz"> + <xsl:for-each select="ram:ID"> + <span> + <xsl:text> Nr. </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + <xsl:for-each select="ram:IssueDateTime"> + <span> + <xsl:text> vom </xsl:text> + </span> + <span> + <xsl:variable name="altova:seqContentStrings_58"> + <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> + <xsl:variable name="sText" as="xs:string?"> + <xsl:text>. </xsl:text> + </xsl:variable> + <xsl:value-of select="$sText"/> + <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_58" select="string($altova:seqContentStrings_58)"/> + <xsl:value-of select="$altova:sContent_58"/> + </span> + </xsl:for-each> + <xsl:for-each select="ram:LineID"> + <span> + <xsl:text> Zeile </xsl:text> + </span> + <xsl:apply-templates/> + </xsl:for-each> + </xsl:template> + <xsl:template name="ram:Datum"> + <span> + <xsl:value-of select="if ( @format = '102') then concat(substring(.,7,2),'.',substring(.,5,2),'.',substring(.,1,4)) else +if ( @format = '610') then concat(substring(.,5,2),'-',substring(.,1,4)) else +if ( @format = '616') then concat('KW ',substring(.,5,2),' ',substring(.,1,4)) else +concat('Ungültiges Datumsformat für: ', .)"/> + </span> + </xsl:template> + <xsl:template name="ram:Versand_Identifer"> + <span> + <xsl:value-of select="if(. eq 'GSIN') then . else +if(. eq 'GINC') then . else +if(. eq 'SSCC') then 'Nummer der Versandeinheit' else +if(. eq 'FLIGHT_NO') then 'Flugnummer' else +if(. eq 'NUMBER_PLATE') then 'Nummernschild' else +if(. eq 'SHIPMENT_REFERENCE') then 'Sendungs-/Ladungsbezugsnummer' else +."/> + </span> + </xsl:template> + <xsl:template name="ram:Global_Identifier"> + <span> + <xsl:text>(</xsl:text> + </span> + <span> + <xsl:value-of select="if (. eq '0021') then 'BIC' else +if (. eq '0060') then 'DUNS' else +if (. eq '0088') then 'GTIN' else +if (. eq '0160') then 'GLN' else +if (. eq '0177') then 'OSCAR' else +."/> + </span> + <span> + <xsl:text>)</xsl:text> + </span> + </xsl:template> + <xsl:template name="ram:Menge"> + <span> + <xsl:variable name="altova:seqContentStrings_59"> + <xsl:value-of select="format-number(number(string(.)), '##0', 'format1')"/> + </xsl:variable> + <xsl:variable name="altova:sContent_59" select="string($altova:seqContentStrings_59)"/> + <xsl:value-of select="$altova:sContent_59"/> + </span> + <xsl:for-each select="@unitCode"> + <span> + <xsl:text> </xsl:text> + </span> + <span> + <xsl:value-of select="if (. eq 'C62') then 'Stk' else +if (. eq 'DAY') then 'Tag(e)' else +if (. eq 'HAR') then 'ha' else +if (. eq 'HUR') then 'Std' else +if (. eq 'KGM') then 'kg' else +if (. eq 'KTM') then 'km' else +if (. eq 'LS') then 'pausch' else +if (. eq 'LTR') then 'l' else +if (. eq 'MIN') then 'min' else +if (. eq 'MMK') then 'mm²' else +if (. eq 'MMT') then 'mm' else +if (. eq 'MTK') then 'm²' else +if (. eq 'MTQ') then 'm³' else +if (. eq 'MTR') then 'm' else +if (. eq 'NAR') then 'Anz' else +if (. eq 'NPR') then 'Paar' else +if (. eq 'P1') then '%' else +if (. eq 'SET') then 'Set' else +if (. eq 'TNE') then 't' else +if (. eq 'WEE') then 'Woche(n)' else +."/> + </span> + </xsl:for-each> + </xsl:template> + <xsl:template name="ram:TaxRegistration"> + <span> + <xsl:value-of select="if ( @schemeID = 'FC') then concat('Steuernummer : ', .) else +if ( @schemeID = 'VA') then concat('USt.-Id.-Nr. : ', .) else +concat('Unbekannte Steuernummer (', @schemeID , '): ', .)"/> + </span> + </xsl:template> + <xsl:template name="ram:VersandMode"> + <span> + <xsl:value-of select="if (. eq '0')then '0 - Nicht spezifiziert' else +if (. eq '1')then '1 - Seefracht' else +if (. eq '2')then '2 - Schiene' else +if (. eq '3')then '3 - Straße' else +if (. eq '4')then '4 - Luftfracht' else +if (. eq '5')then '5 - Post/Paketversand' else +if (. eq '6')then '6 - Multimodaler Transport/kombinierter Verkehr' else +if (. eq '7')then '7 - Feste Transportinstallation' else +if (. eq '8')then '8 - Transport auf Binnengewässern' else +if (. eq '9')then '9 - Nicht anwendbar' else +fn:concat(.,' - unbekannte Transportart')"/> + </span> + </xsl:template> + <xsl:template name="ram:PaymentType"> + <span> + <xsl:value-of select="if(. eq '1') then concat(.,' - nicht definiert') else +if(. eq '3') then concat(.,' - Belastung durch automatisierte Clearingstelle') else +if(. eq '10') then concat(.,' - Barzahlung') else +if(. eq '20') then concat(.,' - per Scheck') else +if(. eq '31') then concat(.,' - per Überweisung (SEPA)') else +if(. eq '42') then concat(.,' - per Überweisung (nicht SEPA)') else +if(. eq '48') then concat(.,' - per Kreditkarte') else +if(. eq '49') then concat(.,' - per Lastschrift') else +if(. eq '97') then concat(.,' - per Ausgleich zwischen Partnern') else +."/> + </span> + </xsl:template> + <xsl:template name="ram:Referenz"> + <span> + <xsl:value-of select="if (. eq 'AAA')then 'Auftragsbestätigung' else +if (. eq 'AAB')then 'Proforma-Rechnung' else +if (. eq 'AAG') then 'Angebot' else +if (. eq 'AAJ') then 'Lieferauftrag' else +if (. eq 'AAL') then 'Zeichnung' else +if (. eq 'AAM') then 'Frachtbrief' else +if (. eq 'AAS') then 'Transportdokument' else +if (. eq 'ABT') then 'Zollerklärung' else +if (. eq 'AER') then 'Projektspezifikation' else +if (. eq 'AGG') then 'Reklamation' else +if (. eq 'AJS') then 'Vereinbarung' else +if (. eq 'ALO') then 'Wareneingang' else +if (. eq 'ALQ') then 'Rücksendungsanzeige' else +if (. eq 'API') then 'Bestandsbericht' else +if (. eq 'ASI') then 'Abliefernachweis' else +if (. eq 'AUD') then 'Inkasso-Referenz' else +if (. eq 'AWR') then 'Ursprungsbeleg' else +if (. eq 'BO') then 'Rahmenauftrag' else +if (. eq 'BC') then 'Vertrag (Käufer)' else +if (. eq 'CD') then 'Gutschrift' else +if (. eq 'DL') then 'Belastungsanzeige' else +if (. eq 'MG') then 'Zählernummer' else +if (. eq 'OI') then 'Vorherige Rechnung' else +if (. eq 'PK') then 'Packliste' else +if (. eq 'PL') then 'Preisliste' else +if (. eq 'POR') then 'Bestellantwort' else +if (. eq 'PP') then 'Bestelländerung' else +if (. eq 'TIN') then 'Transportauftrag' else +if (. eq 'VN') then 'Auftragsnummer (Lieferant)' else +."/> + </span> + </xsl:template> + <xsl:template name="PackageQuantity"> + <xsl:for-each select="ram:PackageQuantity"> + <xsl:for-each select="@unitCode"> + <span> + <xsl:text> </xsl:text> + </span> + <span> + <xsl:value-of select="if (. eq 'BA') then 'Tonne' else +if (. eq 'BC') then 'Getränkekiste' else +if (. eq 'BG') then 'Tüte, Beutel' else +if (. eq 'BO') then 'Flasche' else +if (. eq 'BX') then 'Schachtel' else +if (. eq 'CS') then 'Kiste' else +if (. eq 'CT') then 'Karton' else +if (. eq 'CX') then 'Dose' else +if (. eq 'NE') then 'Unverpackt oder ausgepackt' else +if (. eq 'PX') then 'Palette' else +if (. eq 'RO') then 'Rolle' else +if (. eq 'SA') then 'Sack' +else ."/> + </span> + </xsl:for-each> + </xsl:for-each> + </xsl:template> + <xsl:template name="local_Identifier"> + <span> + <xsl:text>(</xsl:text> + </span> + <xsl:choose> + <xsl:when test=". instance of element()"> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="."/> + </xsl:otherwise> + </xsl:choose> + <span> + <xsl:text>)</xsl:text> + </span> + </xsl:template> + <xsl:template name="Klassifikationsart"> + <xsl:for-each select="@listID"> + <span> + <xsl:text>, Art: </xsl:text> + </span> + <span> + <xsl:value-of select="if (. eq 'GPC') then 'Global Product Classification (GS1)' else +if (. eq 'ECL') then 'eCl@ass' else +if (. eq 'UNSPSC') then 'United Nations Standard Products and Services Code® (UNSPSC®)' else +if (. eq 'HS') then 'Zolltarifnummer (Harmonised System)' else +if (. eq 'CBV') then 'Gemeinsames Vokabular für öffentliche Aufträge (Common Procurement Vocabulary - CPV)' else +if (. eq 'SELLER_ASSIGNED') then 'vom Verkäufer vergeben' else +if (. eq 'BUYER_ASSIGNED') then 'vom Käufer vergeben' else +."/> + </span> + </xsl:for-each> + </xsl:template> + <xsl:template name="DeliveryTypeCode"> + <span> + <xsl:value-of select="if (. eq 'XW') then 'ab Werk' else +if (. eq 'FCA') then 'frei Frachtführer' else +if (. eq 'FAS') then 'frei längsseits Schiff' else +if (. eq 'FOB') then 'frei an Bord' else +if (. eq 'CFR') then 'Kosten und Fracht' else +if (. eq 'CIF') then 'Kosten, Versicherung und Fracht bis zum Bestimmungshafen' else +if (. eq 'DAT') then 'geliefert Terminal' else +if (. eq 'DAP') then 'geliefert benannter Ort' else +if (. eq 'CPT') then 'Fracht bezahlt bis' else +if (. eq 'CIP') then 'Fracht und Versicherung bezahlt' else +if (. eq 'DDP') then 'geliefert Zoll bezahlt' else +."/> + </span> + </xsl:template> + <xsl:template name="AllowanceChargeReasonCode"> + <span> + <xsl:text>(</xsl:text> + </span> + <span> + <xsl:value-of select="if (. eq 'AA') then 'Werbekostenzuschuß' else +if (. eq 'ADR') then 'Andere Dienste' else +if (. eq 'AEO') then 'Sammel- und Recyclingservice' else +if (. eq 'DI') then 'Abzug (Rabatt)' else +if (. eq 'EAB') then 'Skonto' else +if (. eq 'FC') then 'Frachtgebühren' else +if (. eq 'IN') then 'Versicherung' else +if (. eq 'MAC') then 'Mindermengenzuschlag' else +if (. eq 'NAA') then 'Einwegbehälter' else +if (. eq 'PC') then 'Verpacken' else +if (. eq 'RAA') then 'Rückvergütung' else +if (. eq 'SH') then 'Spezielle Handhabungsdienstleistungen' else +."/> + </span> + <span> + <xsl:text>)</xsl:text> + </span> + </xsl:template> + <xsl:function name="altova:is-cell-empty" as="xs:boolean"> + <xsl:param name="altova:cell" as="element()"/> + <xsl:sequence select="altova:is-node-empty( $altova:cell )"/> + </xsl:function> + <xsl:function name="altova:is-node-empty" as="xs:boolean"> + <xsl:param name="altova:node" as="element()"/> + <xsl:sequence select="every $altova:child in $altova:node/child::node() satisfies ( ( boolean( $altova:child/self::text() ) and string-length( $altova:child ) = 0 ) or ( ( boolean( $altova:child/self::div ) or boolean( $altova:child/self::span ) or boolean( $altova:child/self::a ) ) and altova:is-node-empty( $altova:child ) ) )"/> + </xsl:function> + <xsl:function name="altova:col-span" as="xs:integer"> + <xsl:param name="altova:cell" as="element()"/> + <xsl:sequence select="if ( exists( $altova:cell/@colspan ) ) then xs:integer( $altova:cell/@colspan ) else 1"/> + </xsl:function> + <xsl:template match="@* | node()" mode="altova:generate-table"> + <xsl:param name="altova:generate-cols"/> + <xsl:copy> + <xsl:apply-templates select="@* | node()" mode="#current"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:copy> + </xsl:template> + <xsl:template match="tbody" mode="altova:generate-table"> + <xsl:param name="altova:generate-cols"/> + <xsl:choose> + <xsl:when test="empty(tr)"> + <xsl:copy> + <tr> + <td/> + </tr> + </xsl:copy> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates select="@* | node()" mode="#current"> + <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> + </xsl:apply-templates> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:template match="th | td" mode="altova:generate-table"> + <xsl:choose> + <xsl:when test="altova:is-cell-empty( . )"> + <xsl:copy> + <xsl:apply-templates select="@*" mode="#current"/> + <xsl:text> </xsl:text> + </xsl:copy> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:apply-templates select="@* | node()" mode="#current"/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:function name="altova:GetChartYValuesForSingleSeries"> + <xsl:param name="seqCategoryLeafPos" as="node()*"/> + <xsl:param name="nodeSeriesLeafPos" as="node()"/> + <xsl:param name="bValuesInCategory" as="xs:boolean"/> + <xsl:for-each select="$seqCategoryLeafPos"> + <xsl:element name="altova:Value"> + <xsl:value-of select="altova:GetChartYValueForSingleSeriesPos($nodeSeriesLeafPos, ., $bValuesInCategory)"/> + </xsl:element> + </xsl:for-each> + </xsl:function> + <xsl:function name="altova:GetChartYValueForSingleSeriesPos"> + <xsl:param name="nodeSeriesLeafPos" as="node()"/> + <xsl:param name="nodeCategoryLeafPos" as="node()"/> + <xsl:param name="bValuesInCategory" as="xs:boolean"/> + <xsl:variable name="altova:seqCategoryContextIds" select="$nodeCategoryLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> + <xsl:variable name="altova:seqSeriesContextIds" select="$nodeSeriesLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> + <xsl:variable name="altova:sCommonContextId" select="for $i in $altova:seqCategoryContextIds return if (some $j in $altova:seqSeriesContextIds satisfies $i eq $j) then $i else ()" as="xs:string*"/> + <xsl:choose> + <xsl:when test="count($altova:sCommonContextId) gt 1"> + <xsl:message select="concat('Es wurden mehrere Werte anstatt eines einzigen gefunden (Contexts: ', string-join($altova:sCommonContextId, ', '), ').')" terminate="yes"/> + </xsl:when> + <xsl:when test="count($altova:sCommonContextId) lt 1"> + <xsl:message select="concat('XBRL Chart: Info: No value found for position labeled "', $nodeCategoryLeafPos/@altova:sLabel, '"')" terminate="no"/> + <xsl:sequence select="'altova:no-value'"/> + </xsl:when> + <xsl:when test="$bValuesInCategory"> + <xsl:sequence select="xs:string($nodeCategoryLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> + </xsl:when> + <xsl:otherwise> + <xsl:sequence select="xs:string($nodeSeriesLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:function> + <xsl:function name="altova:GetChartLabelForPos" as="xs:string"> + <xsl:param name="nodeParam" as="node()"/> + <xsl:value-of select="string-join($nodeParam/ancestor-or-self::altova:Pos/@altova:sLabel, ' ')"/> + </xsl:function> + <xsl:function name="altova:convert-length-to-pixel" as="xs:decimal"> + <xsl:param name="altova:length"/> + <xsl:variable name="normLength" select="normalize-space($altova:length)"/> + <xsl:choose> + <xsl:when test="ends-with($normLength, 'px')"> + <xsl:value-of select="substring-before($normLength, 'px')"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'in')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * $altova:nPxPerIn"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'cm')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * $altova:nPxPerIn div 2.54"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'mm')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'mm')) * $altova:nPxPerIn div 25.4"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'pt')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * $altova:nPxPerIn div 72.0"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'pc')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * $altova:nPxPerIn div 6.0"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$normLength"/> + </xsl:otherwise> + </xsl:choose> + </xsl:function> + <xsl:function name="altova:convert-length-to-mm" as="xs:decimal"> + <xsl:param name="altova:length"/> + <xsl:variable name="normLength" select="normalize-space($altova:length)"/> + <xsl:choose> + <xsl:when test="ends-with($normLength, 'px')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'px')) div $altova:nPxPerIn * 25.4"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'in')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * 25.4"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'cm')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * 10"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'mm')"> + <xsl:value-of select="substring-before($normLength, 'mm') "/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'pt')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * 25.4 div 72.0"/> + </xsl:when> + <xsl:when test="ends-with($normLength, 'pc')"> + <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * 25.4 div 6.0"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="number($normLength) div $altova:nPxPerIn * 25.4"/> + </xsl:otherwise> + </xsl:choose> + </xsl:function> +</xsl:stylesheet> diff --git a/library/src/test/resources/migration/input/ZUGFeRD1_COMFORT_Einfach.xml b/library/src/test/resources/migration/input/ZUGFeRD1_COMFORT_Einfach.xml index 08991a06..db6672dd 100644 --- a/library/src/test/resources/migration/input/ZUGFeRD1_COMFORT_Einfach.xml +++ b/library/src/test/resources/migration/input/ZUGFeRD1_COMFORT_Einfach.xml @@ -1,216 +1,216 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - -Nutzungsrechte -ZUGFeRD Datenformat Version 1.0, 25.6.2014 -Beispiel Version 29.09.2014 - -Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung -eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht -diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“) - -Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung -frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine -Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht -diskriminierenden Bedingungen an. - -Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung -abrufbar unter www.ferd-net.de. - -Im Einzelnen schließt die Nutzungsgewährung ein: -===================================== - -FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils -geltenden und akzeptierten Fassung (www.ferd-net.de) ein. -Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, -Weiterbearbeitung und Verbindung mit anderen Produkten. -Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder -anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige -Anwendungen und Dienste. -Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente -und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um -notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch -die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. -Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, -unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit -anderen Produkten einzuräumen. - -Die Lizenz wird kostenfrei zur Verfügung gestellt. - -Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen -Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, -Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, -beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der -Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können. - ---> -<rsm:CrossIndustryDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"> - <rsm:SpecifiedExchangedDocumentContext> - <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. --> - <ram:GuidelineSpecifiedDocumentContextParameter> - <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID> - </ram:GuidelineSpecifiedDocumentContextParameter> - </rsm:SpecifiedExchangedDocumentContext> - <rsm:HeaderExchangedDocument> - <ram:ID>471102</ram:ID> - <ram:Name>RECHNUNG</ram:Name> - <ram:TypeCode>380</ram:TypeCode> - <ram:IssueDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString></ram:IssueDateTime> - <ram:IncludedNote> - <ram:Content>Rechnung gemäß Bestellung vom 01.03.2013.</ram:Content> - </ram:IncludedNote> - <ram:IncludedNote> - <ram:Content>Lieferant GmbH -Lieferantenstraße 20 -80333 München -Deutschland -Geschäftsführer: Hans Muster -Handelsregisternummer: H A 123 -</ram:Content> -<ram:SubjectCode>REG</ram:SubjectCode> - </ram:IncludedNote> - </rsm:HeaderExchangedDocument> - <rsm:SpecifiedSupplyChainTradeTransaction> - <ram:ApplicableSupplyChainTradeAgreement> - <ram:SellerTradeParty> - <ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID> - <ram:Name>Lieferant GmbH</ram:Name> - <ram:PostalTradeAddress> - <ram:PostcodeCode>80333</ram:PostcodeCode> - <ram:LineOne>Lieferantenstraße 20</ram:LineOne> - <ram:CityName>München</ram:CityName> - <ram:CountryID>DE</ram:CountryID> - </ram:PostalTradeAddress> - <ram:SpecifiedTaxRegistration> - <ram:ID schemeID="FC">201/113/40209</ram:ID> - </ram:SpecifiedTaxRegistration> - <ram:SpecifiedTaxRegistration> - <ram:ID schemeID="VA">DE123456789</ram:ID> - </ram:SpecifiedTaxRegistration> - </ram:SellerTradeParty> - <ram:BuyerTradeParty> - <ram:ID>GE2020211</ram:ID> - <ram:GlobalID schemeID="0088">4000001987658</ram:GlobalID> - <ram:Name>Kunden AG Mitte</ram:Name> - <ram:DefinedTradeContact> - <ram:PersonName>Hans Muster</ram:PersonName> - </ram:DefinedTradeContact> - <ram:PostalTradeAddress> - <ram:PostcodeCode>69876</ram:PostcodeCode> - <ram:LineOne>Kundenstraße 15</ram:LineOne> - <ram:CityName>Frankfurt</ram:CityName> - <ram:CountryID>DE</ram:CountryID> - </ram:PostalTradeAddress> - </ram:BuyerTradeParty> - </ram:ApplicableSupplyChainTradeAgreement> - <ram:ApplicableSupplyChainTradeDelivery> - <ram:ActualDeliverySupplyChainEvent> - <ram:OccurrenceDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString> </ram:OccurrenceDateTime> - </ram:ActualDeliverySupplyChainEvent> - </ram:ApplicableSupplyChainTradeDelivery> - <ram:ApplicableSupplyChainTradeSettlement> - <ram:PaymentReference>2013-471102</ram:PaymentReference> - <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode> - <ram:SpecifiedTradeSettlementPaymentMeans> - <ram:TypeCode>31</ram:TypeCode> - <ram:Information>Überweisung</ram:Information> - <ram:PayeePartyCreditorFinancialAccount> - <ram:IBANID>DE08700901001234567890</ram:IBANID> - </ram:PayeePartyCreditorFinancialAccount> - <ram:PayeeSpecifiedCreditorFinancialInstitution> - <ram:BICID>GENODEF1M04</ram:BICID> - </ram:PayeeSpecifiedCreditorFinancialInstitution> - </ram:SpecifiedTradeSettlementPaymentMeans> - <ram:ApplicableTradeTax> - <ram:CalculatedAmount currencyID="EUR">19.25</ram:CalculatedAmount> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:BasisAmount currencyID="EUR">275.00</ram:BasisAmount> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:ApplicableTradeTax> - <ram:CalculatedAmount currencyID="EUR">37.62</ram:CalculatedAmount> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:BasisAmount currencyID="EUR">198.00</ram:BasisAmount> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradePaymentTerms> - <ram:Description>Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013</ram:Description> - <ram:DueDateDateTime><udt:DateTimeString format="102">20130404</udt:DateTimeString></ram:DueDateDateTime> - </ram:SpecifiedTradePaymentTerms> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">473.00</ram:LineTotalAmount> - <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount> - <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount> - <ram:TaxBasisTotalAmount currencyID="EUR">473.00</ram:TaxBasisTotalAmount> - <ram:TaxTotalAmount currencyID="EUR">56.87</ram:TaxTotalAmount> - <ram:GrandTotalAmount currencyID="EUR">529.87</ram:GrandTotalAmount> - <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount> - <ram:DuePayableAmount currencyID="EUR">529.87</ram:DuePayableAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:ApplicableSupplyChainTradeSettlement> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument> - <ram:LineID>1</ram:LineID> - </ram:AssociatedDocumentLineDocument> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">198.00</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID> - <ram:SellerAssignedID>TB100A4</ram:SellerAssignedID> - <ram:Name>Trennblätter A4</ram:Name> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument> - <ram:LineID>2</ram:LineID> - </ram:AssociatedDocumentLineDocument> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">275.00</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0160">4000050986428</ram:GlobalID> - <ram:SellerAssignedID>ARNR2</ram:SellerAssignedID> - <ram:Name>Joghurt Banane</ram:Name> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - </rsm:SpecifiedSupplyChainTradeTransaction> +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Nutzungsrechte +ZUGFeRD Datenformat Version 1.0, 25.6.2014 +Beispiel Version 29.09.2014 + +Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung +eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht +diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“) + +Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung +frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine +Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht +diskriminierenden Bedingungen an. + +Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung +abrufbar unter www.ferd-net.de. + +Im Einzelnen schließt die Nutzungsgewährung ein: +===================================== + +FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils +geltenden und akzeptierten Fassung (www.ferd-net.de) ein. +Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, +Weiterbearbeitung und Verbindung mit anderen Produkten. +Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder +anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige +Anwendungen und Dienste. +Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente +und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um +notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch +die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. +Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, +unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit +anderen Produkten einzuräumen. + +Die Lizenz wird kostenfrei zur Verfügung gestellt. + +Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen +Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, +Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, +beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der +Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können. + +--> +<rsm:CrossIndustryDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"> + <rsm:SpecifiedExchangedDocumentContext> + <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. --> + <ram:GuidelineSpecifiedDocumentContextParameter> + <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:comfort</ram:ID> + </ram:GuidelineSpecifiedDocumentContextParameter> + </rsm:SpecifiedExchangedDocumentContext> + <rsm:HeaderExchangedDocument> + <ram:ID>471102</ram:ID> + <ram:Name>RECHNUNG</ram:Name> + <ram:TypeCode>380</ram:TypeCode> + <ram:IssueDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString></ram:IssueDateTime> + <ram:IncludedNote> + <ram:Content>Rechnung gemäß Bestellung vom 01.03.2013.</ram:Content> + </ram:IncludedNote> + <ram:IncludedNote> + <ram:Content>Lieferant GmbH +Lieferantenstraße 20 +80333 München +Deutschland +Geschäftsführer: Hans Muster +Handelsregisternummer: H A 123 +</ram:Content> +<ram:SubjectCode>REG</ram:SubjectCode> + </ram:IncludedNote> + </rsm:HeaderExchangedDocument> + <rsm:SpecifiedSupplyChainTradeTransaction> + <ram:ApplicableSupplyChainTradeAgreement> + <ram:SellerTradeParty> + <ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID> + <ram:Name>Lieferant GmbH</ram:Name> + <ram:PostalTradeAddress> + <ram:PostcodeCode>80333</ram:PostcodeCode> + <ram:LineOne>Lieferantenstraße 20</ram:LineOne> + <ram:CityName>München</ram:CityName> + <ram:CountryID>DE</ram:CountryID> + </ram:PostalTradeAddress> + <ram:SpecifiedTaxRegistration> + <ram:ID schemeID="FC">201/113/40209</ram:ID> + </ram:SpecifiedTaxRegistration> + <ram:SpecifiedTaxRegistration> + <ram:ID schemeID="VA">DE123456789</ram:ID> + </ram:SpecifiedTaxRegistration> + </ram:SellerTradeParty> + <ram:BuyerTradeParty> + <ram:ID>GE2020211</ram:ID> + <ram:GlobalID schemeID="0088">4000001987658</ram:GlobalID> + <ram:Name>Kunden AG Mitte</ram:Name> + <ram:DefinedTradeContact> + <ram:PersonName>Hans Muster</ram:PersonName> + </ram:DefinedTradeContact> + <ram:PostalTradeAddress> + <ram:PostcodeCode>69876</ram:PostcodeCode> + <ram:LineOne>Kundenstraße 15</ram:LineOne> + <ram:CityName>Frankfurt</ram:CityName> + <ram:CountryID>DE</ram:CountryID> + </ram:PostalTradeAddress> + </ram:BuyerTradeParty> + </ram:ApplicableSupplyChainTradeAgreement> + <ram:ApplicableSupplyChainTradeDelivery> + <ram:ActualDeliverySupplyChainEvent> + <ram:OccurrenceDateTime><udt:DateTimeString format="102">20130305</udt:DateTimeString> </ram:OccurrenceDateTime> + </ram:ActualDeliverySupplyChainEvent> + </ram:ApplicableSupplyChainTradeDelivery> + <ram:ApplicableSupplyChainTradeSettlement> + <ram:PaymentReference>2013-471102</ram:PaymentReference> + <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode> + <ram:SpecifiedTradeSettlementPaymentMeans> + <ram:TypeCode>31</ram:TypeCode> + <ram:Information>Überweisung</ram:Information> + <ram:PayeePartyCreditorFinancialAccount> + <ram:IBANID>DE08700901001234567890</ram:IBANID> + </ram:PayeePartyCreditorFinancialAccount> + <ram:PayeeSpecifiedCreditorFinancialInstitution> + <ram:BICID>GENODEF1M04</ram:BICID> + </ram:PayeeSpecifiedCreditorFinancialInstitution> + </ram:SpecifiedTradeSettlementPaymentMeans> + <ram:ApplicableTradeTax> + <ram:CalculatedAmount currencyID="EUR">19.25</ram:CalculatedAmount> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:BasisAmount currencyID="EUR">275.00</ram:BasisAmount> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:ApplicableTradeTax> + <ram:CalculatedAmount currencyID="EUR">37.62</ram:CalculatedAmount> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:BasisAmount currencyID="EUR">198.00</ram:BasisAmount> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradePaymentTerms> + <ram:Description>Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013</ram:Description> + <ram:DueDateDateTime><udt:DateTimeString format="102">20130404</udt:DateTimeString></ram:DueDateDateTime> + </ram:SpecifiedTradePaymentTerms> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">473.00</ram:LineTotalAmount> + <ram:ChargeTotalAmount currencyID="EUR">0.00</ram:ChargeTotalAmount> + <ram:AllowanceTotalAmount currencyID="EUR">0.00</ram:AllowanceTotalAmount> + <ram:TaxBasisTotalAmount currencyID="EUR">473.00</ram:TaxBasisTotalAmount> + <ram:TaxTotalAmount currencyID="EUR">56.87</ram:TaxTotalAmount> + <ram:GrandTotalAmount currencyID="EUR">529.87</ram:GrandTotalAmount> + <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount> + <ram:DuePayableAmount currencyID="EUR">529.87</ram:DuePayableAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:ApplicableSupplyChainTradeSettlement> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument> + <ram:LineID>1</ram:LineID> + </ram:AssociatedDocumentLineDocument> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">9.9000</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">20.0000</ram:BilledQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">198.00</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0160">4012345001235</ram:GlobalID> + <ram:SellerAssignedID>TB100A4</ram:SellerAssignedID> + <ram:Name>Trennblätter A4</ram:Name> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument> + <ram:LineID>2</ram:LineID> + </ram:AssociatedDocumentLineDocument> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">5.5000</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">275.00</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0160">4000050986428</ram:GlobalID> + <ram:SellerAssignedID>ARNR2</ram:SellerAssignedID> + <ram:Name>Joghurt Banane</ram:Name> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + </rsm:SpecifiedSupplyChainTradeTransaction> </rsm:CrossIndustryDocument> \ No newline at end of file diff --git a/library/src/test/resources/migration/input/ZUGFeRD1_EXTENDED_Warenrechnung.xml b/library/src/test/resources/migration/input/ZUGFeRD1_EXTENDED_Warenrechnung.xml index 2f3c87bf..0f26d3ea 100644 --- a/library/src/test/resources/migration/input/ZUGFeRD1_EXTENDED_Warenrechnung.xml +++ b/library/src/test/resources/migration/input/ZUGFeRD1_EXTENDED_Warenrechnung.xml @@ -1,520 +1,520 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - -Nutzungsrechte -ZUGFeRD Datenformat Version 1.0, 25.6.2014 -Beispiel Version 29.09.2014 - -Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung -eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht -diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“) - -Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung -frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine -Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht -diskriminierenden Bedingungen an. - -Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung -abrufbar unter www.ferd-net.de. - -Im Einzelnen schließt die Nutzungsgewährung ein: -===================================== - -FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils -geltenden und akzeptierten Fassung (www.ferd-net.de) ein. -Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, -Weiterbearbeitung und Verbindung mit anderen Produkten. -Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder -anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige -Anwendungen und Dienste. -Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente -und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um -notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch -die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. -Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, -unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit -anderen Produkten einzuräumen. - -Die Lizenz wird kostenfrei zur Verfügung gestellt. - -Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen -Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, -Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, -beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der -Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können. - ---> - -<rsm:CrossIndustryDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"> - <rsm:SpecifiedExchangedDocumentContext> - <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. --> - <ram:GuidelineSpecifiedDocumentContextParameter> - <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID> - </ram:GuidelineSpecifiedDocumentContextParameter> - </rsm:SpecifiedExchangedDocumentContext> - <rsm:HeaderExchangedDocument> - <ram:ID>R87654321012345</ram:ID> - <ram:Name>WARENRECHNUNG</ram:Name> - <ram:TypeCode>380</ram:TypeCode> - <ram:IssueDateTime> - <udt:DateTimeString format="102">20130806</udt:DateTimeString> - </ram:IssueDateTime> - <ram:IncludedNote> - <ram:ContentCode>ST3</ram:ContentCode> - <ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content> - <ram:SubjectCode>AAK</ram:SubjectCode> - </ram:IncludedNote> - <ram:IncludedNote> - <ram:ContentCode>EEV</ram:ContentCode> - <ram:Content>Der Verkäufer bleibt Eigentümer der Waren bis zu vollständigen Erfüllung der Kaufpreisforderung.</ram:Content> - <ram:SubjectCode>AAJ</ram:SubjectCode> - </ram:IncludedNote> - <ram:IncludedNote> - <ram:Content>MUSTERLIEFERANT GMBH -BAHNHOFSTRASSE 99 -99199 MUSTERHAUSEN -Geschäftsführung: -Max Mustermann -USt-IdNr: DE123456789 -Telefon: +49 932 431 0 -www.musterlieferant.de -HRB Nr. 372876 -Amtsgericht Musterstadt -GLN 4304171000002 -WEEE-Reg-Nr.: DE87654321</ram:Content> - <ram:SubjectCode>REG</ram:SubjectCode> - </ram:IncludedNote> - <ram:IncludedNote> - <ram:Content>Leergutwert: 46,50</ram:Content> - </ram:IncludedNote> - </rsm:HeaderExchangedDocument> - <rsm:SpecifiedSupplyChainTradeTransaction> - <ram:ApplicableSupplyChainTradeAgreement> - <ram:SellerTradeParty> - <ram:ID>549910</ram:ID> - <ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID> - <ram:Name>MUSTERLIEFERANT GMBH</ram:Name> - <ram:DefinedTradeContact> - <ram:TelephoneUniversalCommunication> - <ram:CompleteNumber>+49 932 431 500</ram:CompleteNumber> - </ram:TelephoneUniversalCommunication> - <ram:EmailURIUniversalCommunication> - <ram:URIID>max.mustermann@musterlieferant.de</ram:URIID> - </ram:EmailURIUniversalCommunication> - </ram:DefinedTradeContact> - <ram:PostalTradeAddress> - <ram:PostcodeCode>99199</ram:PostcodeCode> - <ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne> - <ram:CityName>MUSTERHAUSEN</ram:CityName> - <ram:CountryID>DE</ram:CountryID> - </ram:PostalTradeAddress> - <ram:SpecifiedTaxRegistration> - <ram:ID schemeID="VA">DE123456789</ram:ID> - </ram:SpecifiedTaxRegistration> - </ram:SellerTradeParty> - <ram:BuyerTradeParty> - <ram:ID>009420</ram:ID> - <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID> - <ram:Name>MUSTER-KUNDE GMBH</ram:Name> - <ram:PostalTradeAddress> - <ram:PostcodeCode>40235</ram:PostcodeCode> - <ram:LineOne>KUNDENWEG 88</ram:LineOne> - <ram:CityName>DUESSELDORF</ram:CityName> - <ram:CountryID>DE</ram:CountryID> - </ram:PostalTradeAddress> - </ram:BuyerTradeParty> - <ram:BuyerOrderReferencedDocument> - <ram:IssueDateTime>2013-08-01T00:00:00</ram:IssueDateTime> - <ram:ID>B123456789</ram:ID> - </ram:BuyerOrderReferencedDocument> - <ram:AdditionalReferencedDocument> - <ram:IssueDateTime>2013-08-02T00:00:00</ram:IssueDateTime> - <ram:TypeCode>VN</ram:TypeCode> - <ram:ID>A456123</ram:ID> - </ram:AdditionalReferencedDocument> - </ram:ApplicableSupplyChainTradeAgreement> - <ram:ApplicableSupplyChainTradeDelivery> - <ram:ShipToTradeParty> - <ram:GlobalID schemeID="0088">4304171088093</ram:GlobalID> - <ram:Name>MUSTER-MARKT</ram:Name> - <ram:DefinedTradeContact> - <ram:DepartmentName>8211</ram:DepartmentName> - </ram:DefinedTradeContact> - <ram:PostalTradeAddress> - <ram:PostcodeCode>31157</ram:PostcodeCode> - <ram:LineOne>HAUPTSTRASSE 44</ram:LineOne> - <ram:CityName>SARSTEDT</ram:CityName> - <ram:CountryID>DE</ram:CountryID> - </ram:PostalTradeAddress> - </ram:ShipToTradeParty> - <ram:ActualDeliverySupplyChainEvent> - <ram:OccurrenceDateTime> - <udt:DateTimeString format="102">20130805</udt:DateTimeString> - </ram:OccurrenceDateTime> - </ram:ActualDeliverySupplyChainEvent> - <ram:DeliveryNoteReferencedDocument> - <ram:IssueDateTime>2013-08-05T00:00:00</ram:IssueDateTime> - <ram:ID>L87654321012345</ram:ID> - </ram:DeliveryNoteReferencedDocument> - </ram:ApplicableSupplyChainTradeDelivery> - <ram:ApplicableSupplyChainTradeSettlement> - <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode> - <ram:InvoiceeTradeParty> - <ram:ID>009420</ram:ID> - <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID> - <ram:Name>MUSTER-KUNDE GMBH</ram:Name> - <ram:PostalTradeAddress> - <ram:PostcodeCode>40235</ram:PostcodeCode> - <ram:LineOne>KUNDENWEG 88</ram:LineOne> - <ram:CityName>DUESSELDORF</ram:CityName> - <ram:CountryID>DE</ram:CountryID> - </ram:PostalTradeAddress> - </ram:InvoiceeTradeParty> - <ram:ApplicableTradeTax> - <ram:CalculatedAmount currencyID="EUR">61.07</ram:CalculatedAmount> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:BasisAmount currencyID="EUR">321.40</ram:BasisAmount> - <ram:LineTotalBasisAmount currencyID="EUR">326.50</ram:LineTotalBasisAmount> - <ram:AllowanceChargeBasisAmount currencyID="EUR">-5.10</ram:AllowanceChargeBasisAmount> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:ApplicableTradeTax> - <ram:CalculatedAmount currencyID="EUR">8.93</ram:CalculatedAmount> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:BasisAmount currencyID="EUR">127.59</ram:BasisAmount> - <ram:LineTotalBasisAmount currencyID="EUR">130.70</ram:LineTotalBasisAmount> - <ram:AllowanceChargeBasisAmount currencyID="EUR">-3.11</ram:AllowanceChargeBasisAmount> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeAllowanceCharge> - <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> - <ram:CalculationPercent>2.00</ram:CalculationPercent> - <ram:BasisAmount currencyID="EUR">280.00</ram:BasisAmount> - <ram:ActualAmount currencyID="EUR">5.60</ram:ActualAmount> - <ram:Reason>Rechnungsrabatt 1</ram:Reason> - <ram:CategoryTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:CategoryTradeTax> - </ram:SpecifiedTradeAllowanceCharge> - <ram:SpecifiedTradeAllowanceCharge> - <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> - <ram:CalculationPercent>2.00</ram:CalculationPercent> - <ram:BasisAmount currencyID="EUR">130.70</ram:BasisAmount> - <ram:ActualAmount currencyID="EUR">2.61</ram:ActualAmount> - <ram:Reason>Rechnungsrabatt 1</ram:Reason> - <ram:CategoryTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:CategoryTradeTax> - </ram:SpecifiedTradeAllowanceCharge> - <ram:SpecifiedTradeAllowanceCharge> - <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> - <ram:BasisAmount currencyID="EUR">280.00</ram:BasisAmount> - <ram:ActualAmount currencyID="EUR">2.50</ram:ActualAmount> - <ram:Reason>Rechnungsrabatt 2</ram:Reason> - <ram:CategoryTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:CategoryTradeTax> - </ram:SpecifiedTradeAllowanceCharge> - <ram:SpecifiedTradeAllowanceCharge> - <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> - <ram:BasisAmount currencyID="EUR">130.70</ram:BasisAmount> - <ram:ActualAmount currencyID="EUR">0.50</ram:ActualAmount> - <ram:Reason>Rechnungsrabatt 2</ram:Reason> - <ram:CategoryTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:CategoryTradeTax> - </ram:SpecifiedTradeAllowanceCharge> - <ram:SpecifiedLogisticsServiceCharge> - <ram:Description>Transportkosten</ram:Description> - <ram:AppliedAmount currencyID="EUR">3.00</ram:AppliedAmount> - <ram:AppliedTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:AppliedTradeTax> - </ram:SpecifiedLogisticsServiceCharge> - <ram:SpecifiedTradePaymentTerms> - <ram:Description>Bei Zahlung innerhalb 14 Tagen gewähren wir 2,0% Skonto.</ram:Description> - <ram:ApplicableTradePaymentDiscountTerms> - <ram:BasisPeriodMeasure unitCode="DAY">14</ram:BasisPeriodMeasure> - <ram:CalculationPercent>2.00</ram:CalculationPercent> - </ram:ApplicableTradePaymentDiscountTerms> - </ram:SpecifiedTradePaymentTerms> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">457.20</ram:LineTotalAmount> - <ram:ChargeTotalAmount currencyID="EUR">3.00</ram:ChargeTotalAmount> - <ram:AllowanceTotalAmount currencyID="EUR">11.21</ram:AllowanceTotalAmount> - <ram:TaxBasisTotalAmount currencyID="EUR">448.99</ram:TaxBasisTotalAmount> - <ram:TaxTotalAmount currencyID="EUR">70.00</ram:TaxTotalAmount> - <ram:GrandTotalAmount currencyID="EUR">518.99</ram:GrandTotalAmount> - <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount> - <ram:DuePayableAmount currencyID="EUR">518.99</ram:DuePayableAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:ApplicableSupplyChainTradeSettlement> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument> - <ram:IncludedNote> - <ram:Content>Wichtige Information: Bei Bestellungen bis zum 19.12. ist die Auslieferung bis spätestens 23.12. garantiert.</ram:Content> - </ram:IncludedNote> - </ram:AssociatedDocumentLineDocument> - <ram:SpecifiedSupplyChainTradeSettlement /> - </ram:IncludedSupplyChainTradeLineItem> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument /> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">100.0000</ram:BilledQuantity> - <ram:PackageQuantity unitCode="CT">4.0000</ram:PackageQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">100.00</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID> - <ram:SellerAssignedID>ZS997</ram:SellerAssignedID> - <ram:Name>Zitronensäure 100ml</ram:Name> - <ram:ApplicableProductCharacteristic> - <ram:TypeCode>PACKAGING_TYPE</ram:TypeCode> - <ram:Description>Verpackungsart</ram:Description> - <ram:Value>BO</ram:Value> - </ram:ApplicableProductCharacteristic> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument /> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">1.5000</ram:ChargeAmount> - <ram:AppliedTradeAllowanceCharge> - <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> - <ram:CalculationPercent>2.00</ram:CalculationPercent> - <ram:BasisAmount currencyID="EUR">1.5000</ram:BasisAmount> - <ram:ActualAmount currencyID="EUR">0.0300</ram:ActualAmount> - <ram:Reason>Artikelrabatt 1</ram:Reason> - </ram:AppliedTradeAllowanceCharge> - <ram:AppliedTradeAllowanceCharge> - <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> - <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity> - <ram:ActualAmount currencyID="EUR">0.0200</ram:ActualAmount> - <ram:Reason>Artikelrabatt 2</ram:Reason> - </ram:AppliedTradeAllowanceCharge> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">1.4500</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity> - <ram:PackageQuantity unitCode="CT">1.0000</ram:PackageQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">72.50</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID> - <ram:SellerAssignedID>GZ250</ram:SellerAssignedID> - <ram:Name>Gelierzucker Extra 250g</ram:Name> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument /> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">10.0000</ram:BilledQuantity> - <ram:PackageQuantity unitCode="CT">1.0000</ram:PackageQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">0.00</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID> - <ram:SellerAssignedID>GZ250</ram:SellerAssignedID> - <ram:Name>Gelierzucker Extra 250g</ram:Name> - <ram:Description>Artikel wie vereinbart ohne Berechnung</ram:Description> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument> - <ram:IncludedNote> - <ram:Content>Öko-Kontroll-Nr.: DE-BW-006-987654321054</ram:Content> - <ram:SubjectCode>AAY</ram:SubjectCode> - </ram:IncludedNote> - </ram:AssociatedDocumentLineDocument> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">12.0000</ram:ChargeAmount> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">12.0000</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">15.0000</ram:BilledQuantity> - <ram:PackageQuantity unitCode="BO">20.0000</ram:PackageQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">180.00</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0088">4100130013294</ram:GlobalID> - <ram:SellerAssignedID>2031</ram:SellerAssignedID> - <ram:BuyerAssignedID>K4321</ram:BuyerAssignedID> - <ram:Name>Bierbrau Pils 20/0500</ram:Name> - <ram:Description>EAN-VKE: 4100130913297</ram:Description> - <ram:ApplicableProductCharacteristic> - <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode> - <ram:Description>Verpackung</ram:Description> - <ram:Value>Kiste</ram:Value> - </ram:ApplicableProductCharacteristic> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument /> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">3.1000</ram:ChargeAmount> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">3.1000</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">15.0000</ram:BilledQuantity> - <ram:PackageQuantity unitCode="BC">1.0000</ram:PackageQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>19.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">46.50</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0088">2001015001325</ram:GlobalID> - <ram:SellerAssignedID>1805</ram:SellerAssignedID> - <ram:BuyerAssignedID>K4322</ram:BuyerAssignedID> - <ram:Name>Leergutpfand 20 x 0,5l</ram:Name> - <ram:ApplicableProductCharacteristic> - <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode> - <ram:Description>Verpackung</ram:Description> - <ram:Value>unverpackt</ram:Value> - </ram:ApplicableProductCharacteristic> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - <ram:IncludedSupplyChainTradeLineItem> - <ram:AssociatedDocumentLineDocument /> - <ram:SpecifiedSupplyChainTradeAgreement> - <ram:GrossPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">30.0000</ram:ChargeAmount> - <ram:AppliedTradeAllowanceCharge> - <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> - <ram:CalculationPercent>3.00</ram:CalculationPercent> - <ram:BasisAmount currencyID="EUR">30.0000</ram:BasisAmount> - <ram:ActualAmount currencyID="EUR">0.9000</ram:ActualAmount> - <ram:Reason>Artikelrabatt 1</ram:Reason> - </ram:AppliedTradeAllowanceCharge> - </ram:GrossPriceProductTradePrice> - <ram:NetPriceProductTradePrice> - <ram:ChargeAmount currencyID="EUR">29.1000</ram:ChargeAmount> - </ram:NetPriceProductTradePrice> - </ram:SpecifiedSupplyChainTradeAgreement> - <ram:SpecifiedSupplyChainTradeDelivery> - <ram:BilledQuantity unitCode="C62">2.0000</ram:BilledQuantity> - <ram:PackageQuantity unitCode="PX">1.0000</ram:PackageQuantity> - </ram:SpecifiedSupplyChainTradeDelivery> - <ram:SpecifiedSupplyChainTradeSettlement> - <ram:ApplicableTradeTax> - <ram:TypeCode>VAT</ram:TypeCode> - <ram:CategoryCode>S</ram:CategoryCode> - <ram:ApplicablePercent>7.00</ram:ApplicablePercent> - </ram:ApplicableTradeTax> - <ram:SpecifiedTradeSettlementMonetarySummation> - <ram:LineTotalAmount currencyID="EUR">58.20</ram:LineTotalAmount> - </ram:SpecifiedTradeSettlementMonetarySummation> - </ram:SpecifiedSupplyChainTradeSettlement> - <ram:SpecifiedTradeProduct> - <ram:GlobalID schemeID="0088">4123456000038</ram:GlobalID> - <ram:SellerAssignedID>MP107</ram:SellerAssignedID> - <ram:Name>Mischpalette Joghurt Karton 3 x 20</ram:Name> - <ram:ApplicableProductCharacteristic> - <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode> - <ram:Description>Verpackung</ram:Description> - <ram:Value>Karton</ram:Value> - </ram:ApplicableProductCharacteristic> - <ram:IncludedReferencedProduct> - <ram:GlobalID schemeID="0088">4123456001035</ram:GlobalID> - <ram:SellerAssignedID>JOG103</ram:SellerAssignedID> - <ram:Name>Erdbeer 20 x 150g Becher</ram:Name> - <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity> - </ram:IncludedReferencedProduct> - <ram:IncludedReferencedProduct> - <ram:GlobalID schemeID="0088">4123456002032</ram:GlobalID> - <ram:SellerAssignedID>JOG203</ram:SellerAssignedID> - <ram:Name>Banane 20 x 150g Becher</ram:Name> - <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity> - </ram:IncludedReferencedProduct> - <ram:IncludedReferencedProduct> - <ram:GlobalID schemeID="0088">4123456003039</ram:GlobalID> - <ram:SellerAssignedID>JOG303</ram:SellerAssignedID> - <ram:Name>Schoko 20 x 150g Becher</ram:Name> - <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity> - </ram:IncludedReferencedProduct> - </ram:SpecifiedTradeProduct> - </ram:IncludedSupplyChainTradeLineItem> - </rsm:SpecifiedSupplyChainTradeTransaction> -</rsm:CrossIndustryDocument> +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Nutzungsrechte +ZUGFeRD Datenformat Version 1.0, 25.6.2014 +Beispiel Version 29.09.2014 + +Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung +eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht +diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“) + +Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung +frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine +Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht +diskriminierenden Bedingungen an. + +Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung +abrufbar unter www.ferd-net.de. + +Im Einzelnen schließt die Nutzungsgewährung ein: +===================================== + +FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils +geltenden und akzeptierten Fassung (www.ferd-net.de) ein. +Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, +Weiterbearbeitung und Verbindung mit anderen Produkten. +Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder +anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige +Anwendungen und Dienste. +Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente +und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um +notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch +die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. +Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, +unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit +anderen Produkten einzuräumen. + +Die Lizenz wird kostenfrei zur Verfügung gestellt. + +Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen +Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, +Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, +beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der +Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können. + +--> + +<rsm:CrossIndustryDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15"> + <rsm:SpecifiedExchangedDocumentContext> + <ram:TestIndicator><udt:Indicator>true</udt:Indicator></ram:TestIndicator><!-- Im Echtbetrieb muss der TestIndicator entweder vollständig entfallen oder auf false stehen. --> + <ram:GuidelineSpecifiedDocumentContextParameter> + <ram:ID>urn:ferd:CrossIndustryDocument:invoice:1p0:extended</ram:ID> + </ram:GuidelineSpecifiedDocumentContextParameter> + </rsm:SpecifiedExchangedDocumentContext> + <rsm:HeaderExchangedDocument> + <ram:ID>R87654321012345</ram:ID> + <ram:Name>WARENRECHNUNG</ram:Name> + <ram:TypeCode>380</ram:TypeCode> + <ram:IssueDateTime> + <udt:DateTimeString format="102">20130806</udt:DateTimeString> + </ram:IssueDateTime> + <ram:IncludedNote> + <ram:ContentCode>ST3</ram:ContentCode> + <ram:Content>Es bestehen Rabatt- oder Bonusvereinbarungen.</ram:Content> + <ram:SubjectCode>AAK</ram:SubjectCode> + </ram:IncludedNote> + <ram:IncludedNote> + <ram:ContentCode>EEV</ram:ContentCode> + <ram:Content>Der Verkäufer bleibt Eigentümer der Waren bis zu vollständigen Erfüllung der Kaufpreisforderung.</ram:Content> + <ram:SubjectCode>AAJ</ram:SubjectCode> + </ram:IncludedNote> + <ram:IncludedNote> + <ram:Content>MUSTERLIEFERANT GMBH +BAHNHOFSTRASSE 99 +99199 MUSTERHAUSEN +Geschäftsführung: +Max Mustermann +USt-IdNr: DE123456789 +Telefon: +49 932 431 0 +www.musterlieferant.de +HRB Nr. 372876 +Amtsgericht Musterstadt +GLN 4304171000002 +WEEE-Reg-Nr.: DE87654321</ram:Content> + <ram:SubjectCode>REG</ram:SubjectCode> + </ram:IncludedNote> + <ram:IncludedNote> + <ram:Content>Leergutwert: 46,50</ram:Content> + </ram:IncludedNote> + </rsm:HeaderExchangedDocument> + <rsm:SpecifiedSupplyChainTradeTransaction> + <ram:ApplicableSupplyChainTradeAgreement> + <ram:SellerTradeParty> + <ram:ID>549910</ram:ID> + <ram:GlobalID schemeID="0088">4333741000005</ram:GlobalID> + <ram:Name>MUSTERLIEFERANT GMBH</ram:Name> + <ram:DefinedTradeContact> + <ram:TelephoneUniversalCommunication> + <ram:CompleteNumber>+49 932 431 500</ram:CompleteNumber> + </ram:TelephoneUniversalCommunication> + <ram:EmailURIUniversalCommunication> + <ram:URIID>max.mustermann@musterlieferant.de</ram:URIID> + </ram:EmailURIUniversalCommunication> + </ram:DefinedTradeContact> + <ram:PostalTradeAddress> + <ram:PostcodeCode>99199</ram:PostcodeCode> + <ram:LineOne>BAHNHOFSTRASSE 99</ram:LineOne> + <ram:CityName>MUSTERHAUSEN</ram:CityName> + <ram:CountryID>DE</ram:CountryID> + </ram:PostalTradeAddress> + <ram:SpecifiedTaxRegistration> + <ram:ID schemeID="VA">DE123456789</ram:ID> + </ram:SpecifiedTaxRegistration> + </ram:SellerTradeParty> + <ram:BuyerTradeParty> + <ram:ID>009420</ram:ID> + <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID> + <ram:Name>MUSTER-KUNDE GMBH</ram:Name> + <ram:PostalTradeAddress> + <ram:PostcodeCode>40235</ram:PostcodeCode> + <ram:LineOne>KUNDENWEG 88</ram:LineOne> + <ram:CityName>DUESSELDORF</ram:CityName> + <ram:CountryID>DE</ram:CountryID> + </ram:PostalTradeAddress> + </ram:BuyerTradeParty> + <ram:BuyerOrderReferencedDocument> + <ram:IssueDateTime>2013-08-01T00:00:00</ram:IssueDateTime> + <ram:ID>B123456789</ram:ID> + </ram:BuyerOrderReferencedDocument> + <ram:AdditionalReferencedDocument> + <ram:IssueDateTime>2013-08-02T00:00:00</ram:IssueDateTime> + <ram:TypeCode>VN</ram:TypeCode> + <ram:ID>A456123</ram:ID> + </ram:AdditionalReferencedDocument> + </ram:ApplicableSupplyChainTradeAgreement> + <ram:ApplicableSupplyChainTradeDelivery> + <ram:ShipToTradeParty> + <ram:GlobalID schemeID="0088">4304171088093</ram:GlobalID> + <ram:Name>MUSTER-MARKT</ram:Name> + <ram:DefinedTradeContact> + <ram:DepartmentName>8211</ram:DepartmentName> + </ram:DefinedTradeContact> + <ram:PostalTradeAddress> + <ram:PostcodeCode>31157</ram:PostcodeCode> + <ram:LineOne>HAUPTSTRASSE 44</ram:LineOne> + <ram:CityName>SARSTEDT</ram:CityName> + <ram:CountryID>DE</ram:CountryID> + </ram:PostalTradeAddress> + </ram:ShipToTradeParty> + <ram:ActualDeliverySupplyChainEvent> + <ram:OccurrenceDateTime> + <udt:DateTimeString format="102">20130805</udt:DateTimeString> + </ram:OccurrenceDateTime> + </ram:ActualDeliverySupplyChainEvent> + <ram:DeliveryNoteReferencedDocument> + <ram:IssueDateTime>2013-08-05T00:00:00</ram:IssueDateTime> + <ram:ID>L87654321012345</ram:ID> + </ram:DeliveryNoteReferencedDocument> + </ram:ApplicableSupplyChainTradeDelivery> + <ram:ApplicableSupplyChainTradeSettlement> + <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode> + <ram:InvoiceeTradeParty> + <ram:ID>009420</ram:ID> + <ram:GlobalID schemeID="0088">4304171000002</ram:GlobalID> + <ram:Name>MUSTER-KUNDE GMBH</ram:Name> + <ram:PostalTradeAddress> + <ram:PostcodeCode>40235</ram:PostcodeCode> + <ram:LineOne>KUNDENWEG 88</ram:LineOne> + <ram:CityName>DUESSELDORF</ram:CityName> + <ram:CountryID>DE</ram:CountryID> + </ram:PostalTradeAddress> + </ram:InvoiceeTradeParty> + <ram:ApplicableTradeTax> + <ram:CalculatedAmount currencyID="EUR">61.07</ram:CalculatedAmount> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:BasisAmount currencyID="EUR">321.40</ram:BasisAmount> + <ram:LineTotalBasisAmount currencyID="EUR">326.50</ram:LineTotalBasisAmount> + <ram:AllowanceChargeBasisAmount currencyID="EUR">-5.10</ram:AllowanceChargeBasisAmount> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:ApplicableTradeTax> + <ram:CalculatedAmount currencyID="EUR">8.93</ram:CalculatedAmount> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:BasisAmount currencyID="EUR">127.59</ram:BasisAmount> + <ram:LineTotalBasisAmount currencyID="EUR">130.70</ram:LineTotalBasisAmount> + <ram:AllowanceChargeBasisAmount currencyID="EUR">-3.11</ram:AllowanceChargeBasisAmount> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeAllowanceCharge> + <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> + <ram:CalculationPercent>2.00</ram:CalculationPercent> + <ram:BasisAmount currencyID="EUR">280.00</ram:BasisAmount> + <ram:ActualAmount currencyID="EUR">5.60</ram:ActualAmount> + <ram:Reason>Rechnungsrabatt 1</ram:Reason> + <ram:CategoryTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:CategoryTradeTax> + </ram:SpecifiedTradeAllowanceCharge> + <ram:SpecifiedTradeAllowanceCharge> + <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> + <ram:CalculationPercent>2.00</ram:CalculationPercent> + <ram:BasisAmount currencyID="EUR">130.70</ram:BasisAmount> + <ram:ActualAmount currencyID="EUR">2.61</ram:ActualAmount> + <ram:Reason>Rechnungsrabatt 1</ram:Reason> + <ram:CategoryTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:CategoryTradeTax> + </ram:SpecifiedTradeAllowanceCharge> + <ram:SpecifiedTradeAllowanceCharge> + <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> + <ram:BasisAmount currencyID="EUR">280.00</ram:BasisAmount> + <ram:ActualAmount currencyID="EUR">2.50</ram:ActualAmount> + <ram:Reason>Rechnungsrabatt 2</ram:Reason> + <ram:CategoryTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:CategoryTradeTax> + </ram:SpecifiedTradeAllowanceCharge> + <ram:SpecifiedTradeAllowanceCharge> + <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> + <ram:BasisAmount currencyID="EUR">130.70</ram:BasisAmount> + <ram:ActualAmount currencyID="EUR">0.50</ram:ActualAmount> + <ram:Reason>Rechnungsrabatt 2</ram:Reason> + <ram:CategoryTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:CategoryTradeTax> + </ram:SpecifiedTradeAllowanceCharge> + <ram:SpecifiedLogisticsServiceCharge> + <ram:Description>Transportkosten</ram:Description> + <ram:AppliedAmount currencyID="EUR">3.00</ram:AppliedAmount> + <ram:AppliedTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:AppliedTradeTax> + </ram:SpecifiedLogisticsServiceCharge> + <ram:SpecifiedTradePaymentTerms> + <ram:Description>Bei Zahlung innerhalb 14 Tagen gewähren wir 2,0% Skonto.</ram:Description> + <ram:ApplicableTradePaymentDiscountTerms> + <ram:BasisPeriodMeasure unitCode="DAY">14</ram:BasisPeriodMeasure> + <ram:CalculationPercent>2.00</ram:CalculationPercent> + </ram:ApplicableTradePaymentDiscountTerms> + </ram:SpecifiedTradePaymentTerms> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">457.20</ram:LineTotalAmount> + <ram:ChargeTotalAmount currencyID="EUR">3.00</ram:ChargeTotalAmount> + <ram:AllowanceTotalAmount currencyID="EUR">11.21</ram:AllowanceTotalAmount> + <ram:TaxBasisTotalAmount currencyID="EUR">448.99</ram:TaxBasisTotalAmount> + <ram:TaxTotalAmount currencyID="EUR">70.00</ram:TaxTotalAmount> + <ram:GrandTotalAmount currencyID="EUR">518.99</ram:GrandTotalAmount> + <ram:TotalPrepaidAmount currencyID="EUR">0.00</ram:TotalPrepaidAmount> + <ram:DuePayableAmount currencyID="EUR">518.99</ram:DuePayableAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:ApplicableSupplyChainTradeSettlement> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument> + <ram:IncludedNote> + <ram:Content>Wichtige Information: Bei Bestellungen bis zum 19.12. ist die Auslieferung bis spätestens 23.12. garantiert.</ram:Content> + </ram:IncludedNote> + </ram:AssociatedDocumentLineDocument> + <ram:SpecifiedSupplyChainTradeSettlement /> + </ram:IncludedSupplyChainTradeLineItem> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument /> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">1.0000</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">100.0000</ram:BilledQuantity> + <ram:PackageQuantity unitCode="CT">4.0000</ram:PackageQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">100.00</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0088">4123456000014</ram:GlobalID> + <ram:SellerAssignedID>ZS997</ram:SellerAssignedID> + <ram:Name>Zitronensäure 100ml</ram:Name> + <ram:ApplicableProductCharacteristic> + <ram:TypeCode>PACKAGING_TYPE</ram:TypeCode> + <ram:Description>Verpackungsart</ram:Description> + <ram:Value>BO</ram:Value> + </ram:ApplicableProductCharacteristic> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument /> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">1.5000</ram:ChargeAmount> + <ram:AppliedTradeAllowanceCharge> + <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> + <ram:CalculationPercent>2.00</ram:CalculationPercent> + <ram:BasisAmount currencyID="EUR">1.5000</ram:BasisAmount> + <ram:ActualAmount currencyID="EUR">0.0300</ram:ActualAmount> + <ram:Reason>Artikelrabatt 1</ram:Reason> + </ram:AppliedTradeAllowanceCharge> + <ram:AppliedTradeAllowanceCharge> + <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> + <ram:BasisQuantity unitCode="C62">1</ram:BasisQuantity> + <ram:ActualAmount currencyID="EUR">0.0200</ram:ActualAmount> + <ram:Reason>Artikelrabatt 2</ram:Reason> + </ram:AppliedTradeAllowanceCharge> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">1.4500</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">50.0000</ram:BilledQuantity> + <ram:PackageQuantity unitCode="CT">1.0000</ram:PackageQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">72.50</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID> + <ram:SellerAssignedID>GZ250</ram:SellerAssignedID> + <ram:Name>Gelierzucker Extra 250g</ram:Name> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument /> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">0.0000</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">10.0000</ram:BilledQuantity> + <ram:PackageQuantity unitCode="CT">1.0000</ram:PackageQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">0.00</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0088">4123456000021</ram:GlobalID> + <ram:SellerAssignedID>GZ250</ram:SellerAssignedID> + <ram:Name>Gelierzucker Extra 250g</ram:Name> + <ram:Description>Artikel wie vereinbart ohne Berechnung</ram:Description> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument> + <ram:IncludedNote> + <ram:Content>Öko-Kontroll-Nr.: DE-BW-006-987654321054</ram:Content> + <ram:SubjectCode>AAY</ram:SubjectCode> + </ram:IncludedNote> + </ram:AssociatedDocumentLineDocument> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">12.0000</ram:ChargeAmount> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">12.0000</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">15.0000</ram:BilledQuantity> + <ram:PackageQuantity unitCode="BO">20.0000</ram:PackageQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">180.00</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0088">4100130013294</ram:GlobalID> + <ram:SellerAssignedID>2031</ram:SellerAssignedID> + <ram:BuyerAssignedID>K4321</ram:BuyerAssignedID> + <ram:Name>Bierbrau Pils 20/0500</ram:Name> + <ram:Description>EAN-VKE: 4100130913297</ram:Description> + <ram:ApplicableProductCharacteristic> + <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode> + <ram:Description>Verpackung</ram:Description> + <ram:Value>Kiste</ram:Value> + </ram:ApplicableProductCharacteristic> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument /> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">3.1000</ram:ChargeAmount> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">3.1000</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">15.0000</ram:BilledQuantity> + <ram:PackageQuantity unitCode="BC">1.0000</ram:PackageQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>19.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">46.50</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0088">2001015001325</ram:GlobalID> + <ram:SellerAssignedID>1805</ram:SellerAssignedID> + <ram:BuyerAssignedID>K4322</ram:BuyerAssignedID> + <ram:Name>Leergutpfand 20 x 0,5l</ram:Name> + <ram:ApplicableProductCharacteristic> + <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode> + <ram:Description>Verpackung</ram:Description> + <ram:Value>unverpackt</ram:Value> + </ram:ApplicableProductCharacteristic> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + <ram:IncludedSupplyChainTradeLineItem> + <ram:AssociatedDocumentLineDocument /> + <ram:SpecifiedSupplyChainTradeAgreement> + <ram:GrossPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">30.0000</ram:ChargeAmount> + <ram:AppliedTradeAllowanceCharge> + <ram:ChargeIndicator><udt:Indicator>false</udt:Indicator></ram:ChargeIndicator> + <ram:CalculationPercent>3.00</ram:CalculationPercent> + <ram:BasisAmount currencyID="EUR">30.0000</ram:BasisAmount> + <ram:ActualAmount currencyID="EUR">0.9000</ram:ActualAmount> + <ram:Reason>Artikelrabatt 1</ram:Reason> + </ram:AppliedTradeAllowanceCharge> + </ram:GrossPriceProductTradePrice> + <ram:NetPriceProductTradePrice> + <ram:ChargeAmount currencyID="EUR">29.1000</ram:ChargeAmount> + </ram:NetPriceProductTradePrice> + </ram:SpecifiedSupplyChainTradeAgreement> + <ram:SpecifiedSupplyChainTradeDelivery> + <ram:BilledQuantity unitCode="C62">2.0000</ram:BilledQuantity> + <ram:PackageQuantity unitCode="PX">1.0000</ram:PackageQuantity> + </ram:SpecifiedSupplyChainTradeDelivery> + <ram:SpecifiedSupplyChainTradeSettlement> + <ram:ApplicableTradeTax> + <ram:TypeCode>VAT</ram:TypeCode> + <ram:CategoryCode>S</ram:CategoryCode> + <ram:ApplicablePercent>7.00</ram:ApplicablePercent> + </ram:ApplicableTradeTax> + <ram:SpecifiedTradeSettlementMonetarySummation> + <ram:LineTotalAmount currencyID="EUR">58.20</ram:LineTotalAmount> + </ram:SpecifiedTradeSettlementMonetarySummation> + </ram:SpecifiedSupplyChainTradeSettlement> + <ram:SpecifiedTradeProduct> + <ram:GlobalID schemeID="0088">4123456000038</ram:GlobalID> + <ram:SellerAssignedID>MP107</ram:SellerAssignedID> + <ram:Name>Mischpalette Joghurt Karton 3 x 20</ram:Name> + <ram:ApplicableProductCharacteristic> + <ram:TypeCode>PACKAGING_MATERIAL</ram:TypeCode> + <ram:Description>Verpackung</ram:Description> + <ram:Value>Karton</ram:Value> + </ram:ApplicableProductCharacteristic> + <ram:IncludedReferencedProduct> + <ram:GlobalID schemeID="0088">4123456001035</ram:GlobalID> + <ram:SellerAssignedID>JOG103</ram:SellerAssignedID> + <ram:Name>Erdbeer 20 x 150g Becher</ram:Name> + <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity> + </ram:IncludedReferencedProduct> + <ram:IncludedReferencedProduct> + <ram:GlobalID schemeID="0088">4123456002032</ram:GlobalID> + <ram:SellerAssignedID>JOG203</ram:SellerAssignedID> + <ram:Name>Banane 20 x 150g Becher</ram:Name> + <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity> + </ram:IncludedReferencedProduct> + <ram:IncludedReferencedProduct> + <ram:GlobalID schemeID="0088">4123456003039</ram:GlobalID> + <ram:SellerAssignedID>JOG303</ram:SellerAssignedID> + <ram:Name>Schoko 20 x 150g Becher</ram:Name> + <ram:UnitQuantity unitCode="C62">20.0000</ram:UnitQuantity> + </ram:IncludedReferencedProduct> + </ram:SpecifiedTradeProduct> + </ram:IncludedSupplyChainTradeLineItem> + </rsm:SpecifiedSupplyChainTradeTransaction> +</rsm:CrossIndustryDocument> diff --git a/src/main/java-templates/org/mustangproject/ZUGFeRD/Version.java b/src/main/java-templates/org/mustangproject/ZUGFeRD/Version.java deleted file mode 100644 index f669dfe4..00000000 --- a/src/main/java-templates/org/mustangproject/ZUGFeRD/Version.java +++ /dev/null @@ -1,23 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public final class Version { - public static final String VERSION = "${project.version}"; -} diff --git a/src/main/java/org/mustangproject/XMLTools.java b/src/main/java/org/mustangproject/XMLTools.java deleted file mode 100644 index 4c2877b3..00000000 --- a/src/main/java/org/mustangproject/XMLTools.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.mustangproject; - -public class XMLTools { - public static String encodeXML(CharSequence s) { - StringBuilder sb = new StringBuilder(); - int len = s.length(); - for (int i=0;i<len;i++) { - int c = s.charAt(i); - if (c >= 0xd800 && c <= 0xdbff && i + 1 < len) { - c = ((c-0xd7c0)<<10) | (s.charAt(++i)&0x3ff); // UTF16 decode - } - if (c < 0x80) { // ASCII range: test most common case first - if (c < 0x20 && (c != '\t' && c != '\r' && c != '\n')) { - // Illegal XML character, even encoded. Skip or substitute - sb.append("�"); // Unicode replacement character - } else { - switch(c) { - case '&': sb.append("&"); break; - case '>': sb.append(">"); break; - case '<': sb.append("<"); break; - // Uncomment next two if encoding for an XML attribute -// case '\'' sb.append("'"); break; -// case '\"' sb.append("""); break; - // Uncomment next three if you prefer, but not required -// case '\n' sb.append(" "); break; -// case '\r' sb.append(" "); break; -// case '\t' sb.append(" "); break; - - default: sb.append((char)c); - } - } - } else if ((c >= 0xd800 && c <= 0xdfff) || c == 0xfffe || c == 0xffff) { - // Illegal XML character, even encoded. Skip or substitute - sb.append("�"); // Unicode replacement character - } else { - sb.append("&#x"); - sb.append(Integer.toHexString(c)); - sb.append(';'); - } - } - return sb.toString(); - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/CustomXMLProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/CustomXMLProvider.java deleted file mode 100644 index 0b03bd69..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/CustomXMLProvider.java +++ /dev/null @@ -1,61 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public class CustomXMLProvider implements IXMLProvider, IProfileProvider { - - protected byte[] zugferdData; - - @Override - public byte[] getXML() { - return zugferdData; - } - - public void setXML(byte[] newData) { - String zf = new String(newData); - if (!zf.contains("CrossIndustry")) { - throw new RuntimeException("ZUGFeRD XML does not contain (<rsm:)CrossIndustry and can thus not be valid"); - } - - zugferdData = newData; - } - - @Override - public void generateXML(IZUGFeRDExportableTransaction trans) { - // TODO Auto-generated method stub - - } - - @Override - public void setTest() { - // TODO Auto-generated method stub - - } - - @Override - public String getProfile() { - // TODO Auto-generated method stub - return null; - } - - @Override - public void setProfile(ZUGFeRDConformanceLevel level) { - // TODO Auto-generated method stub - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IExporterFactory.java b/src/main/java/org/mustangproject/ZUGFeRD/IExporterFactory.java deleted file mode 100644 index 6822d744..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IExporterFactory.java +++ /dev/null @@ -1,66 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.io.IOException; -import java.io.InputStream; - -public interface IExporterFactory { - /** - * factory: loads a PDF file and returns an appropriate exporter - * - * @param pdfFilename binary of a PDF/A1 compliant document - * @return the generated exporter - * @throws IOException if anything is wrong with filename - */ - public ZUGFeRDExporter load(String pdfFilename) throws IOException; - - /** - * Makes A PDF/A3a-compliant document from a PDF-A1 compliant document (on the - * metadata level, this will not e.g. convert graphics to JPG-2000) - * - * @param pdfBinary binary of a PDF/A1 compliant document - * @return the generated exporter - * @throws IOException (should not happen at all) - */ - public ZUGFeRDExporter load(byte[] pdfBinary) throws IOException; - - /** - * Makes A PDF/A3a-compliant document from a PDF-A1 compliant document (on the - * metadata level, this will not e.g. convert graphics to JPG-2000) - * - * @param pdfSource source to read a PDF/A1 compliant document from - * @throws IOException if anything is wrong with inputstream - * @return the generated ZUGFeRDExporter - */ - public ZUGFeRDExporter load(InputStream pdfSource) throws IOException; - - public IExporterFactory setCreator(String creator); - - public IExporterFactory setConformanceLevel(PDFAConformanceLevel newLevel); - - public IExporterFactory setProducer(String producer); - - public IExporterFactory setZUGFeRDVersion(int version); - - public IExporterFactory ignorePDFAErrors(); - - public IExporterFactory setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel zugferdConformanceLevel); - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IProfileProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/IProfileProvider.java deleted file mode 100644 index d4469edb..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IProfileProvider.java +++ /dev/null @@ -1,27 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public interface IProfileProvider { - - public String getProfile(); - - public void setProfile(ZUGFeRDConformanceLevel level); - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IXMLProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/IXMLProvider.java deleted file mode 100644 index e24feef5..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IXMLProvider.java +++ /dev/null @@ -1,29 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public interface IXMLProvider { - - public byte[] getXML(); - - public void setTest(); - - public void generateXML(IZUGFeRDExportableTransaction trans); - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java deleted file mode 100644 index 667a4c78..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceCharge.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2015 AlexanderSchmidt. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.mustangproject.ZUGFeRD; - -import org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants; - -import java.math.BigDecimal; - -/** - * @author AlexanderSchmidt - */ -public interface IZUGFeRDAllowanceCharge { - - BigDecimal getTotalAmount(); - - String getReason(); - - BigDecimal getTaxPercent(); - - default String getCategoryCode() { - return TaxCategoryCodeTypeConstants.STANDARDRATE; - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDDate.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDDate.java deleted file mode 100644 index 3134a3b3..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDDate.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.mustangproject.ZUGFeRD; - -import java.util.Date; - -public interface IZUGFeRDDate { - - Date getDate(); - - default ZUGFeRDDateFormat getFormat() { - return ZUGFeRDDateFormat.DATE; - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContact.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContact.java deleted file mode 100644 index f5312ff8..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContact.java +++ /dev/null @@ -1,136 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -/** - * Mustangproject's ZUGFeRD implementation neccessary interface for ZUGFeRD exporter Licensed under the APLv2 - * - * @author jstaerk - * @version 1.2.0 - * dated 2014-05-10 - */ - - -public interface IZUGFeRDExportableContact { - - /** - * customer identification assigned by the seller - * - * @return customer identification - */ - default String getID() { - return null; - } - - /** - * customer global identification assigned by the seller - * - * @return customer identification - */ - default String getGlobalID() { - return null; - } - - /** - * customer global identification scheme - * - * @return customer identification - */ - default String getGlobalIDScheme() { - return null; - } - - - /** - * First and last name of the recipient - * - * @return First and last name of the recipient - */ - default String getName() { - return null; - } - - default String getPhone() { - return null; - } - - default String getEMail() { - return null; - } - - - /** - * Postal code of the recipient - * - * @return Postal code of the recipient - */ - default String getZIP() { - return null; - } - - - /** - * VAT ID (Umsatzsteueridentifikationsnummer) of the contact - * - * @return VAT ID (Umsatzsteueridentifikationsnummer) of the contact - */ - default String getVATID() { - return null; - } - - - /** - * two-letter country code of the contact - * - * @return two-letter iso country code of the contact - */ - default String getCountry() { - return null; - } - - - /** - * Returns the city of the contact - * - * @return Returns the city of the recipient - */ - default String getLocation() { - return null; - } - - - /** - * Returns the street address (street+number) of the contact - * - * @return street address (street+number) of the contact - */ - default String getStreet() { - return null; - } - - /** - * returns additional address information which is display in xml tag "LineTwo" - * - * @return additional address information - */ - default String getAdditionalAddress() { - return null; - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java deleted file mode 100644 index a4dfcc80..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItem.java +++ /dev/null @@ -1,64 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; -/** - * Mustangproject's ZUGFeRD implementation - * Neccessary interface for ZUGFeRD exporter - * Licensed under the APLv2 - * @date 2014-05-10 - * @version 1.2.0 - * @author jstaerk - * */ - -import org.mustangproject.ZUGFeRD.model.TaxCategoryCodeTypeConstants; - -import java.math.BigDecimal; - -public interface IZUGFeRDExportableItem { - - IZUGFeRDExportableProduct getProduct(); - - IZUGFeRDAllowanceCharge[] getItemAllowances(); - - IZUGFeRDAllowanceCharge[] getItemCharges(); - - - /** - * The price of one item excl. taxes - * - * @return The price of one item excl. taxes - */ - BigDecimal getPrice(); - - /** - * how many - * - * @return the quantity of the item - */ - BigDecimal getQuantity(); - - default String getCategoryCode() { - return TaxCategoryCodeTypeConstants.STANDARDRATE; - } - - default String getAdditionalReferencedDocumentID() { - return null; - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableProduct.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableProduct.java deleted file mode 100644 index ab441e74..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableProduct.java +++ /dev/null @@ -1,99 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; - -/** - * Mustangproject's ZUGFeRD implementation - * Necessary interface for ZUGFeRD exporter - * Licensed under the APLv2 - * - * @author jstaerk - * @version 1.2.0 - * dated 2014-05-10 - */ - -public interface IZUGFeRDExportableProduct { - - /** - * Unit code of the product - * Most common ones are - * C62 one (piece) - * DAY day - * HAR hectare - * HUR hour - * KGM kilogram - * KTM kilometre - * KWH kilowatt hour - * LS lump sum - * LTR litre - * MIN minute - * MMK square millimetre - * MMT millimetre - * MTK square metre - * MTQ cubic metre - * MTR metre - * NAR number of articles - * NPR number of pairs - * P1 percent - * SET set - * TNE tonne (metric ton) - * WEE week - * - * @return a UN/ECE rec 20 unit code see https://www.unece.org/fileadmin/DAM/cefact/recommendations/rec20/rec20_rev3_Annex2e.pdf - */ - String getUnit(); - - /** - * Short name of the product - * - * @return Short name of the product - */ - String getName(); - - /** - * long description of the product - * - * @return long description of the product - */ - String getDescription(); - - /** - * VAT percent of the product (e.g. 19, or 5.1 if you like) - * - * @return VAT percent of the product - */ - BigDecimal getVATPercent(); - - default boolean isIntraCommunitySupply() { - return false; - } - - default String getTaxCategoryCode() { - if (isIntraCommunitySupply()) { - return "K"; - } else { - return "S"; - - } - } - - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java deleted file mode 100644 index 920ab7d2..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransaction.java +++ /dev/null @@ -1,384 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; -/** - * Mustangproject's ZUGFeRD implementation - * Neccessary interface for ZUGFeRD exporter - * Licensed under the APLv2 - * @date 2014-05-10 to 2014-06-25 - * @version 1.2.0 - * @author jstaerk - * */ - - -import java.math.BigDecimal; -import java.util.Date; - -import org.mustangproject.ZUGFeRD.model.DocumentCodeTypeConstants; - -public interface IZUGFeRDExportableTransaction { - - /** - * appears in /rsm:CrossIndustryDocument/rsm:HeaderExchangedDocument/ram:Name - * - * @return Name of document - */ - default String getDocumentName() { - return "RECHNUNG"; - } - - - /** - * - * - * @return Code of Document - */ - default String getDocumentCode() { - return DocumentCodeTypeConstants.INVOICE; - } - - - /** - * Number, typically invoice number of the invoice - * - * @return invoice number - */ - default String getNumber() { - return null; - } - - - /** - * the date when the invoice was created - * - * @return when the invoice was created - */ - default Date getIssueDate() { - return null; - } - - - /** - * this should be the full sender institution name, details, manager and tax registration. It is one of the few functions which may return null. e.g. - * <p> - * Lieferant GmbH Lieferantenstraße 20 80333 München Deutschland Geschäftsführer: Hans Muster Handelsregisternummer: H A 123 - * - * @return null or full sender institution name, details, manager and tax registration - */ - default String getOwnOrganisationFullPlaintextInfo() { - return null; - } - - - /** - * when the invoice is to be paid - * - * @return when the invoice is to be paid - */ - default Date getDueDate() { - return null; - } - - - /** - * who processed the order - * - * @return the contact person at the supplier side - */ - default IZUGFeRDExportableContact getOwnContact() { - return null; - } - - - IZUGFeRDAllowanceCharge[] getZFAllowances(); - - - IZUGFeRDAllowanceCharge[] getZFCharges(); - - - IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges(); - - - IZUGFeRDExportableItem[] getZFItems(); - - - /** - * the recipient - * - * @return the recipient of the invoice - */ - IZUGFeRDExportableContact getRecipient(); - - - /** - * the creditors payment informations - * @deprecated use getTradeSettlement - * @return an array of IZUGFeRDTradeSettlementPayment - */ - @Deprecated - default IZUGFeRDTradeSettlementPayment[] getTradeSettlementPayment() { - return null; - } - /** - * the payment information for any payment means - * - * @return an array of IZUGFeRDTradeSettlement - */ - default IZUGFeRDTradeSettlement[] getTradeSettlement() { - return null; - } - - - /** - * Tax ID (not VAT ID) of the sender - * - * @return Tax ID (not VAT ID) of the sender - */ - default String getOwnTaxID() { - return null; - } - - - /** - * VAT ID (Umsatzsteueridentifikationsnummer) of the sender - * - * @return VAT ID (Umsatzsteueridentifikationsnummer) of the sender - */ - default String getOwnVATID() { - return null; - } - - - /** - * supplier identification assigned by the costumer - * - * @return the sender's identification - */ - default String getOwnForeignOrganisationID() { - return null; - } - - - /** - * own name - * - * @return the sender's organisation name - */ - default String getOwnOrganisationName() { - return null; - } - - - /** - * own street address - * - * @return sender street address - */ - default String getOwnStreet() { - return null; - } - - - /** - * own street postal code - * - * @return sender postal code - */ - default String getOwnZIP() { - return null; - } - - - /** - * own city - * - * @return the invoice sender's city - */ - default String getOwnLocation() { - return null; - } - - - /** - * own two digit country code - * - * @return the invoice senders two character country iso code - */ - default String getOwnCountry() { - return null; - } - - - /** - * get delivery date - * - * @return the day the goods have been delivered - */ - Date getDeliveryDate(); - - /** - * get delivery date in more specific form. If this and getDeliveryDate() are - * specified, this value will be taken - * - * @return instance holding date and format - */ - default IZUGFeRDDate getZFDeliveryDate() { - return null; - } - - - /** - * get main invoice currency used on the invoice - * - * @return three character currency of this invoice - */ - default String getCurrency() { - return null; - } - - - /** - * get payment term descriptional text e.g. Bis zum 22.10.2015 ohne Abzug - * - * @return get payment terms - */ - default String getPaymentTermDescription() { - return null; - } - - /** - * get payment terms. if set, getPaymentTermDescription() and getDueDate() are - * ignored - * - * @return - */ - default IZUGFeRDPaymentTerms getPaymentTerms() { - return null; - } - - - /** - * get reference document number typically used for Invoice Corrections Will be added as IncludedNote in comfort profile - * - * @return the ID of the document this document refers to - */ - default String getReferenceNumber() { - return null; - } - - - /** - * consignee identification (identification of the organisation the goods are shipped to [assigned by the costumer]) - * - * @return the sender's identification - */ - default String getShipToOrganisationID() { - return null; - } - - - /** - * consignee name (name of the organisation the goods are shipped to) - * - * @return the consignee's organisation name - */ - default String getShipToOrganisationName() { - return null; - } - - - /** - * consignee street address (street of the organisation the goods are shipped to) - * - * @return consignee street address - */ - default String getShipToStreet() { - return null; - } - - - /** - * consignee street postal code (postal code of the organisation the goods are shipped to) - * - * @return consignee postal code - */ - default String getShipToZIP() { - return null; - } - - - /** - * consignee city (city of the organisation the goods are shipped to) - * - * @return the consignee's city - */ - default String getShipToLocation() { - return null; - } - - - /** - * consignee two digit country code (country code of the organisation the goods are shipped to) - * - * @return the consignee's two character country iso code - */ - default String getShipToCountry() { - return null; - } - - - /** - * get the ID of the BuyerOrderReferencedDocument, which sits in the ApplicableSupplyChainTradeAgreement - * - * @return the ID of the document - */ - default String getBuyerOrderReferencedDocumentID() { - return null; - } - - - /** - * get the issue timestamp of the BuyerOrderReferencedDocument, which sits in the ApplicableSupplyChainTradeAgreement - * - * @return the IssueDateTime in format CCYY-MM-DDTHH:MM:SS - */ - default String getBuyerOrderReferencedDocumentIssueDateTime() { - return null; - } - - - /** - * get the TotalPrepaidAmount located in SpecifiedTradeSettlementMonetarySummation (v1) or SpecifiedTradeSettlementHeaderMonetarySummation (v2) - * - * @return the total sum (incl. VAT) of prepayments, i.e. the difference between GrandTotalAmount and DuePayableAmount - */ - default BigDecimal getTotalPrepaidAmount() { - return BigDecimal.ZERO; - } - - - /*** - * delivery address, i.e. ram:ShipToTradeParty (only supported for zf2) - * @return - */ - - default IZUGFeRDExportableContact getDeliveryAddress() { - return null; - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDPaymentDiscountTerms.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDPaymentDiscountTerms.java deleted file mode 100644 index ebb6bee0..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDPaymentDiscountTerms.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; - -public interface IZUGFeRDPaymentDiscountTerms { - - BigDecimal getCalculationPercentage(); - - IZUGFeRDDate getBaseDate(); - - int getBasePeriodMeasure(); - - String getBasePeriodUnitCode(); - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDPaymentTerms.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDPaymentTerms.java deleted file mode 100644 index f49215bc..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDPaymentTerms.java +++ /dev/null @@ -1,10 +0,0 @@ -package org.mustangproject.ZUGFeRD; - -public interface IZUGFeRDPaymentTerms { - - String getDescription(); - - IZUGFeRDDate getDueDate(); - - IZUGFeRDPaymentDiscountTerms getDiscountTerms(); -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java deleted file mode 100644 index 7e92b204..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlement.java +++ /dev/null @@ -1,40 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 by ak on 12.04.19. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public interface IZUGFeRDTradeSettlement { - - /*** - * - * @return zf2 xml for applicableHeaderTradeSettlement - */ - String getSettlementXML(); - - - /*** - * - * @return zf2 xml for applicableHeaderTradePayment - */ - default String getPaymentXML() { - return null; - } - - - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementDebit.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementDebit.java deleted file mode 100644 index 457c2a3d..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementDebit.java +++ /dev/null @@ -1,57 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 by ak on 12.04.19. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import org.mustangproject.XMLTools; - -public interface IZUGFeRDTradeSettlementDebit extends IZUGFeRDTradeSettlement { - - - - default String getSettlementXML() { - - - - String xml = " <ram:SpecifiedTradeSettlementPaymentMeans>\n" //$NON-NLS-1$ - + " <ram:TypeCode>59</ram:TypeCode>\n" //$NON-NLS-1$ - + " <ram:PayerPartyDebtorFinancialAccount>\n" //$NON-NLS-1$ - + " <ram:IBANID>"+XMLTools.encodeXML(getIBAN())+"</ram:IBANID>\n" //$NON-NLS-1$ - + " </ram:PayerPartyDebtorFinancialAccount>\n"; //$NON-NLS-1$ - - xml = xml + " </ram:SpecifiedTradeSettlementPaymentMeans>\n"; //$NON-NLS-1$ - return xml; - } - - default String getPaymentXML() { - return "<ram:DirectDebitMandateID>"+XMLTools.encodeXML(getMandate())+"</ram:DirectDebitMandateID>"; - } - - - /*** - * @return IBAN of the debtor (optional) - */ - String getIBAN(); - - - /*** - * @return sepa direct debit mandate reference - */ - String getMandate(); - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java b/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java deleted file mode 100644 index f4ecaf4d..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPayment.java +++ /dev/null @@ -1,111 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 by ak on 12.04.19. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.text.SimpleDateFormat; - -import org.mustangproject.XMLTools; - -public interface IZUGFeRDTradeSettlementPayment extends IZUGFeRDTradeSettlement { - - /** - * get payment information text. e.g. Bank transfer - * - * @return payment information text - */ - default String getOwnPaymentInfoText() { - return null; - } - - /** - * BIC of the sender - * - * @return the BIC code of the recipient sender's bank - */ - default String getOwnBIC() { - return null; - } - - - /** - * BLZ of the sender - * - * @return the BLZ code of the recipient sender's bank - */ - default String getOwnBLZ() { - return null; - } - - - /** - * Bank name of the sender - * - * @return the name of the sender's bank - */ - default String getOwnBankName() { - return null; - } - - - /** - * IBAN of the sender - * - * @return the IBAN of the invoice sender's bank account - */ - default String getOwnIBAN() { - return null; - } - - - /** - * IBAN of the sender - * - * @return the Account Number of the invoice sender's bank account - */ - default String getOwnKto() { - return null; - } - - default String getSettlementXML() { - String xml = " <ram:SpecifiedTradeSettlementPaymentMeans>\n" //$NON-NLS-1$ - + " <ram:TypeCode>42</ram:TypeCode>\n" //$NON-NLS-1$ - + " <ram:Information>Überweisung</ram:Information>\n" //$NON-NLS-1$ - + " <ram:PayeePartyCreditorFinancialAccount>\n" //$NON-NLS-1$ - + " <ram:IBANID>" + XMLTools.encodeXML(getOwnIBAN()) + "</ram:IBANID>\n"; //$NON-NLS-1$ //$NON-NLS-2$ - if (getOwnKto()!=null) { - xml+= " <ram:ProprietaryID>" + XMLTools.encodeXML(getOwnKto()) + "</ram:ProprietaryID>\n"; //$NON-NLS-1$ //$NON-NLS-2$ - - } - xml+= " </ram:PayeePartyCreditorFinancialAccount>\n" //$NON-NLS-1$ - + " <ram:PayeeSpecifiedCreditorFinancialInstitution>\n" //$NON-NLS-1$ - + " <ram:BICID>" + XMLTools.encodeXML(getOwnBIC()) + "</ram:BICID>\n" //$NON-NLS-1$ //$NON-NLS-2$ - // + " <ram:Name>"+trans.getOwnBankName()+"</ram:Name>\n" //$NON-NLS-1$ - // //$NON-NLS-2$ - + " </ram:PayeeSpecifiedCreditorFinancialInstitution>\n" //$NON-NLS-1$ - + " </ram:SpecifiedTradeSettlementPaymentMeans>\n"; //$NON-NLS-1$ - return xml; - } - - - /* I'd love to implement getPaymentXML() and put <ram:DueDateDateTime> there because this is where it belongs - * unfortunately, the due date is part of the transaction which is not accessible here :-( - */ - - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/PDFAConformanceLevel.java b/src/main/java/org/mustangproject/ZUGFeRD/PDFAConformanceLevel.java deleted file mode 100644 index 47cfaeb6..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/PDFAConformanceLevel.java +++ /dev/null @@ -1,42 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public enum PDFAConformanceLevel { - ACCESSIBLE("A"), BASIC("B"), UNICODE("U"); - - private final String letter; - - PDFAConformanceLevel(String letter) { - this.letter = letter; - } - - public String getLetter() { - return letter; - } - - public static PDFAConformanceLevel findByLetter(String letter) { - for (PDFAConformanceLevel candidate : values()) { - if (candidate.letter.equals(letter)) { - return candidate; - } - } - throw new IllegalArgumentException("PDF conformance level <" + letter + "> is unknown."); - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java b/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java deleted file mode 100644 index 3ba0acc1..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/VATAmount.java +++ /dev/null @@ -1,96 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; - -/** - * Mustangproject's ZUGFeRD implementation - * ZUGFeRD exporter helper class - * Licensed under the APLv2 - * - * @author jstaerk - * @version 1.2.0 - * dated 2015-10-29 - */ -public class VATAmount { - - public VATAmount(BigDecimal basis, BigDecimal calculated, String categoryCode) { - super(); - this.basis = basis; - this.calculated = calculated; - this.categoryCode = categoryCode; - } - - BigDecimal basis, calculated; - - String categoryCode; - - public BigDecimal getBasis() { - return basis; - } - - public void setBasis(BigDecimal basis) { - this.basis = basis; - } - - public BigDecimal getCalculated() { - return calculated; - } - - public void setCalculated(BigDecimal calculated) { - this.calculated = calculated; - } - - /** - * - * @deprecated Use {@link #getCategoryCode() instead} - * @return String with category code - */ - @Deprecated - public String getDocumentCode() { - return categoryCode; - } - - /** - * @param documentCode as String - * @deprecated Use {@link #setCategoryCode(String)} instead - */ - @Deprecated - public void setDocumentCode(String documentCode) { - this.categoryCode = documentCode; - } - - public String getCategoryCode() { - return categoryCode; - } - - public void setCategoryCode(String categoryCode) { - this.categoryCode = categoryCode; - } - - public VATAmount add(VATAmount v) { - return new VATAmount(basis.add(v.getBasis()), calculated.add(v.getCalculated()), this.categoryCode); - } - - public VATAmount subtract(VATAmount v) { - return new VATAmount(basis.subtract(v.getBasis()), calculated.subtract(v.getCalculated()), this.categoryCode); - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaPDFAExtensions.java b/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaPDFAExtensions.java deleted file mode 100644 index 3e0dca57..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaPDFAExtensions.java +++ /dev/null @@ -1,140 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -/** - * Mustangproject's ZUGFeRD implementation - * ZUGFeRD exporter helper class - * Licensed under the APLv2 - * @date 2014-05-10 - * @version 1.2.0 - * @author jstaerk - * */ - -import org.apache.xmpbox.XMPMetadata; -import org.apache.xmpbox.XmpConstants; -import org.apache.xmpbox.schema.PDFAExtensionSchema; -import org.apache.xmpbox.type.*; - -/** - * Additionally to adding a RDF namespace with a indication which file - * attachment if Zugferd, this namespace has to be described in a PDFA Extension - * Schema. I know there is a PDFAExtensionSchema in the context of PDFBox' - * XMPBOX but I have been using PDFBox' JempBOX so far because I could not find - * out how to write XMPBOX XMPMetadata to a PDF file. So this is my version of - * PDFAExtensionSchema for PDFBox' jempbox XMPMetadata - * - * @author jstaerk - */ - -@StructuredType(preferedPrefix = "pdfaExtension", namespace = "http://www.aiim.org/pdfa/ns/extension/") -public class XMPSchemaPDFAExtensions extends PDFAExtensionSchema { - - public final String xmlns_pdfaSchema = "http://www.aiim.org/pdfa/ns/schema#"; - public final String prefix_pdfaSchema = "pdfaSchema"; - public final String xmlns_pdfaProperty = "http://www.aiim.org/pdfa/ns/property#"; - public final String prefix_pdfaProperty = "pdfaProperty"; - public String namespace = null; - public String prefix = null; - - protected ZUGFeRDExporter exporter; - - - protected void setZUGFeRDVersion(int ver) { - namespace = exporter.getNamespaceForVersion(ver); - prefix = exporter.getPrefixForVersion(ver); - } - - - private DefinedStructuredType addProperty(ArrayProperty parent, String name, String type, String category, - String description) { - XMPMetadata metadata = getMetadata(); - - DefinedStructuredType li = new DefinedStructuredType(metadata, getNamespace(), getPrefix(), - XmpConstants.LIST_NAME); - li.setAttribute(new Attribute(getNamespace(), XmpConstants.PARSE_TYPE, XmpConstants.RESOURCE_NAME)); - - ChoiceType pdfa2 = new ChoiceType(metadata, xmlns_pdfaProperty, prefix_pdfaProperty, PDFAPropertyType.NAME, - name); - li.addProperty(pdfa2); - - pdfa2 = new ChoiceType(metadata, xmlns_pdfaProperty, prefix_pdfaProperty, PDFAPropertyType.VALUETYPE, type); - li.addProperty(pdfa2); - - pdfa2 = new ChoiceType(metadata, xmlns_pdfaProperty, prefix_pdfaProperty, PDFAPropertyType.CATEGORY, category); - li.addProperty(pdfa2); - - pdfa2 = new ChoiceType(metadata, xmlns_pdfaProperty, prefix_pdfaProperty, PDFAPropertyType.DESCRIPTION, - description); - li.addProperty(pdfa2); - - parent.addProperty(li); - - return li; - } - - public XMPSchemaPDFAExtensions(ZUGFeRDExporter ze, XMPMetadata metadata, int ZFVersion) { - super(metadata); - exporter=ze; - setZUGFeRDVersion(ZFVersion); - attachExtensions(metadata, true); - } - - public XMPSchemaPDFAExtensions(ZUGFeRDExporter ze, XMPMetadata metadata, int ZFVersion, boolean withZF) { - super(metadata); - exporter=ze; - setZUGFeRDVersion(ZFVersion); - attachExtensions(metadata, withZF); - } - - public void attachExtensions(XMPMetadata metadata, boolean withZF) { - - addNamespace(xmlns_pdfaSchema, prefix_pdfaSchema); - addNamespace(xmlns_pdfaProperty, prefix_pdfaProperty); - - ArrayProperty newBag = createArrayProperty(SCHEMAS, Cardinality.Bag); - DefinedStructuredType li = new DefinedStructuredType(metadata, getNamespace(), getPrefix(), - XmpConstants.LIST_NAME); - li.setAttribute(new Attribute(getNamespace(), XmpConstants.PARSE_TYPE, XmpConstants.RESOURCE_NAME)); - newBag.addProperty(li); - addProperty(newBag); - if (withZF) { - TextType pdfa1 = new TextType(metadata, xmlns_pdfaSchema, prefix_pdfaSchema, PDFASchemaType.SCHEMA, - "ZUGFeRD PDFA Extension Schema"); - li.addProperty(pdfa1); - - pdfa1 = new TextType(metadata, xmlns_pdfaSchema, prefix_pdfaSchema, PDFASchemaType.NAMESPACE_URI, - namespace); - li.addProperty(pdfa1); - - pdfa1 = new TextType(metadata, xmlns_pdfaSchema, prefix_pdfaSchema, PDFASchemaType.PREFIX, prefix); - li.addProperty(pdfa1); - - ArrayProperty newSeq = new ArrayProperty(metadata, xmlns_pdfaSchema, prefix_pdfaSchema, - PDFASchemaType.PROPERTY, Cardinality.Seq); - li.addProperty(newSeq); - - addProperty(newSeq, "DocumentFileName", "Text", "external", "name of the embedded XML invoice file"); - addProperty(newSeq, "DocumentType", "Text", "external", "INVOICE"); - addProperty(newSeq, "Version", "Text", "external", "The actual version of the ZUGFeRD XML schema"); - addProperty(newSeq, "ConformanceLevel", "Text", "external", - "The selected ZUGFeRD profile completeness"); - } - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaZugferd.java b/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaZugferd.java deleted file mode 100644 index 04d19c21..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/XMPSchemaZugferd.java +++ /dev/null @@ -1,64 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; -/** - * Mustangproject's ZUGFeRD implementation - * ZUGFeRD exporter helper class - * Licensed under the APLv2 - * @date 2014-05-10 - * @version 1.2.0s - * @author jstaerk - * */ - -import org.apache.xmpbox.XMPMetadata; -import org.apache.xmpbox.schema.XMPSchema; - -public class XMPSchemaZugferd extends XMPSchema { - - /*** - * This is what needs to be added to the RDF metadata - basically the name of the embedded Zugferd file - * @param metadata the xmp to be added to - * @param zfVersion which ZF version to use (2 for FX) - * @param isFacturX whether to export as Factur-X - * @param conformanceLevel e.g. conformanceLevel.EN16931 - * @param URN the xml URI for the XMP - * @param prefix the xml namespace prefix for the XMP, zf for ZUGFeRD, fx for Factur-X - * @param filename the filename of the invoice - */ - public XMPSchemaZugferd(XMPMetadata metadata, int zfVersion, boolean isFacturX, ZUGFeRDConformanceLevel conformanceLevel, String URN, String prefix, String filename) { - super(metadata, URN, prefix, "ZUGFeRD Schema"); - - setAboutAsSimple(""); - - String conformanceLevelValue = conformanceLevel.name(); - if (conformanceLevelValue.equals("BASICWL")) { - conformanceLevelValue = "BASIC WL"; - } else if (conformanceLevelValue.equals("EN16931")) { - conformanceLevelValue = "EN 16931"; - } - setTextPropertyValue("ConformanceLevel", conformanceLevelValue); - setTextPropertyValue("DocumentType", "INVOICE"); - setTextPropertyValue("DocumentFileName", filename); - String version="1.0"; - if ((zfVersion==2)&&(!isFacturX)) { - version="2p0"; - } - setTextPropertyValue("Version", version); - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java deleted file mode 100644 index f8278a32..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD1PullProvider.java +++ /dev/null @@ -1,119 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import org.mustangproject.ZUGFeRD.model.CrossIndustryDocumentType; -import org.mustangproject.ZUGFeRD.model.DocumentContextParameterTypeConstants; -import org.mustangproject.ZUGFeRD.model.ZFNamespacePrefixMapper; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import java.io.ByteArrayOutputStream; - -public class ZUGFeRD1PullProvider implements IXMLProvider, IProfileProvider { - - - protected byte[] zugferdData; - private Marshaller marshaller; - - private boolean isTest; - private ZUGFeRDConformanceLevel level; - - - public void setProfile(ZUGFeRDConformanceLevel level) { - this.level = level; - } - - public String getProfile() { - switch (level) { - case BASIC: return DocumentContextParameterTypeConstants.BASIC; - case COMFORT: return DocumentContextParameterTypeConstants.COMFORT; - default: return DocumentContextParameterTypeConstants.EXTENDED; - } - } - - - /** - * enables the flag to indicate a test invoice in the XML structure - */ - public void setTest() { - isTest = true; - } - - public ZUGFeRD1PullProvider() { - // TODO Auto-generated constructor stub - try { - marshaller = JAXBContext.newInstance("org.mustangproject.ZUGFeRD.model").createMarshaller(); - marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); - marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); - marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new ZFNamespacePrefixMapper()); - } catch (JAXBException e) { - throw new ZUGFeRDExportException("Could not initialize JAXB", e); - } - - } - - private String createZugferdXMLForTransaction(IZUGFeRDExportableTransaction trans) { - - JAXBElement<CrossIndustryDocumentType> jaxElement = - new ZUGFeRDTransactionModelConverter(trans).withTest(isTest).withProfile(getProfile()).convertToModel(); - - try { - return marshalJaxToXMLString(jaxElement); - } catch (JAXBException e) { - throw new ZUGFeRDExportException("Could not marshal ZUGFeRD transaction to XML", e); - } - } - - private String marshalJaxToXMLString(Object jaxElement) throws JAXBException { - ByteArrayOutputStream outputXml = new ByteArrayOutputStream(); - marshaller.marshal(jaxElement, outputXml); - return outputXml.toString(); - } - - - @Override - public byte[] getXML() { - return zugferdData; - } - - - @Override - public void generateXML(IZUGFeRDExportableTransaction trans) { - // create a dummy file stream, this would probably normally be a - // FileInputStream - - byte[] zugferdRaw = createZugferdXMLForTransaction(trans).getBytes(); //$NON-NLS-1$ - - if ((zugferdRaw[0] == (byte) 0xEF) - && (zugferdRaw[1] == (byte) 0xBB) - && (zugferdRaw[2] == (byte) 0xBF)) { - // I don't like BOMs, lets remove it - zugferdData = new byte[zugferdRaw.length - 3]; - System.arraycopy(zugferdRaw, 3, zugferdData, 0, - zugferdRaw.length - 3); - } else { - zugferdData = zugferdRaw; - } - } - - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java deleted file mode 100644 index ebfb6135..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRD2PullProvider.java +++ /dev/null @@ -1,624 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.io.IOException; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.logging.Level; -import java.util.logging.Logger; - -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.DocumentHelper; -import org.dom4j.io.OutputFormat; -import org.dom4j.io.XMLWriter; -import org.mustangproject.XMLTools; -import org.mustangproject.toecount.Toecount; - -public class ZUGFeRD2PullProvider implements IXMLProvider, IProfileProvider { - - private class LineCalc { - private BigDecimal totalGross; - private BigDecimal priceGross; - private BigDecimal itemTotalNetAmount; - private BigDecimal itemTotalVATAmount; - - public LineCalc(IZUGFeRDExportableItem currentItem) { - BigDecimal multiplicator = currentItem.getProduct().getVATPercent().divide(new BigDecimal(100)) - .add(new BigDecimal(1)); - priceGross = currentItem.getPrice().multiply(multiplicator); - totalGross = currentItem.getPrice().multiply(multiplicator).multiply(currentItem.getQuantity()); - itemTotalNetAmount = currentItem.getQuantity().multiply(currentItem.getPrice()).setScale(2, - BigDecimal.ROUND_HALF_UP); - itemTotalVATAmount = totalGross.subtract(itemTotalNetAmount); - } - - public BigDecimal getItemTotalNetAmount() { - return itemTotalNetAmount; - } - - public BigDecimal getItemTotalVATAmount() { - return itemTotalVATAmount; - } - - public BigDecimal getItemTotalGrossAmount() { - return itemTotalVATAmount; - } - - public BigDecimal getPriceGross() { - return priceGross; - } - - } - - //// MAIN CLASS - - protected byte[] zugferdData; - private IZUGFeRDExportableTransaction trans; - private ZUGFeRDConformanceLevel level; - private String paymentTermsDescription; - - @Override - public void setProfile(ZUGFeRDConformanceLevel level) { - this.level = level; - } - - /** - * enables the flag to indicate a test invoice in the XML structure - */ - @Override - public void setTest() { - } - - public static String nDigitFormat(BigDecimal value, int scale) { - /* - * I needed 123,45, locale independent.I tried - * NumberFormat.getCurrencyInstance().format( 12345.6789 ); but that is locale - * specific.I also tried DecimalFormat df = new DecimalFormat( "0,00" ); - * df.setDecimalSeparatorAlwaysShown(true); df.setGroupingUsed(false); - * DecimalFormatSymbols symbols = new DecimalFormatSymbols(); - * symbols.setDecimalSeparator(','); symbols.setGroupingSeparator(' '); - * df.setDecimalFormatSymbols(symbols); - * - * but that would not switch off grouping. Although I liked very much the - * (incomplete) "BNF diagram" in - * http://docs.oracle.com/javase/tutorial/i18n/format/decimalFormat.html in the - * end I decided to calculate myself and take eur+sparator+cents - * - */ - return value.setScale(scale, RoundingMode.HALF_UP).toPlainString(); - - } - - private String vatFormat(BigDecimal value) { - return ZUGFeRD2PullProvider.nDigitFormat(value, 2); - } - - private String currencyFormat(BigDecimal value) { - return ZUGFeRD2PullProvider.nDigitFormat(value, 2); - } - - private String priceFormat(BigDecimal value) { - return ZUGFeRD2PullProvider.nDigitFormat(value, 4); - } - - private String quantityFormat(BigDecimal value) { - return ZUGFeRD2PullProvider.nDigitFormat(value, 4); - } - - @Override - public byte[] getXML() { - - byte[] res = zugferdData; - - StringWriter sw = new StringWriter(); - Document document = null; - try { - document = DocumentHelper.parseText(new String(zugferdData)); - } catch (DocumentException e1) { - Logger.getLogger(ZUGFeRD2PullProvider.class.getName()).log(Level.SEVERE, null, e1); - } - try { - OutputFormat format = OutputFormat.createPrettyPrint(); - XMLWriter writer = new XMLWriter(sw, format); - writer.write(document); - res = sw.toString().getBytes("UTF-8"); - - } catch (IOException e) { - Logger.getLogger(ZUGFeRD2PullProvider.class.getName()).log(Level.SEVERE, null, e); - } - - return res; - - } - - private BigDecimal getTotalPrepaid() { - if (trans.getTotalPrepaidAmount() == null) { - return new BigDecimal(0); - } else { - return trans.getTotalPrepaidAmount(); - } - } - - private BigDecimal getTotalGross() { - - BigDecimal res = getTotal(); - HashMap<BigDecimal, VATAmount> VATPercentAmountMap = getVATPercentAmountMap(); - for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { - VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); - res = res.add(amount.getCalculated()); - } - return res; - } - - private BigDecimal getTotal() { - BigDecimal res = new BigDecimal(0); - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { - LineCalc lc = new LineCalc(currentItem); - res = res.add(lc.getItemTotalNetAmount()); - } - return res; - } - - /** - * which taxes have been used with which amounts in this transaction, empty for - * no taxes, or e.g. 19=>190 and 7=>14 if 1000 Eur were applicable to 19% VAT - * (=>190 EUR VAT) and 200 EUR were applicable to 7% (=>14 EUR VAT) 190 Eur - * - * @return which taxes have been used with which amounts in this invoice - */ - private HashMap<BigDecimal, VATAmount> getVATPercentAmountMap() { - HashMap<BigDecimal, VATAmount> hm = new HashMap<>(); - - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { - BigDecimal percent = currentItem.getProduct().getVATPercent(); - LineCalc lc = new LineCalc(currentItem); - VATAmount itemVATAmount = new VATAmount(lc.getItemTotalNetAmount(), lc.getItemTotalVATAmount(), - trans.getDocumentCode()); - VATAmount current = hm.get(percent); - if (current == null) { - hm.put(percent, itemVATAmount); - } else { - hm.put(percent, current.add(itemVATAmount)); - } - } - return hm; - } - - @Override - public String getProfile() { -// return "urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2"; - return "urn:cen.eu:en16931:2017"; - } - - protected String getContactAsXML(IZUGFeRDExportableContact contact) { - String xml = " <ram:Name>" + XMLTools.encodeXML(contact.getName()) + "</ram:Name>\n" //$NON-NLS-1$ //$NON-NLS-2$ - // + " <DefinedTradeContact>\n" - // + " <PersonName>xxx</PersonName>\n" - // + " </DefinedTradeContact>\n" - + " <ram:PostalTradeAddress>\n" //$NON-NLS-1$ - + " <ram:PostcodeCode>" + XMLTools.encodeXML(contact.getZIP()) //$NON-NLS-1$ - + "</ram:PostcodeCode>\n" //$NON-NLS-1$ - + " <ram:LineOne>" + XMLTools.encodeXML(contact.getStreet()) //$NON-NLS-1$ - + "</ram:LineOne>\n"; //$NON-NLS-1$ - if (trans.getRecipient().getAdditionalAddress() != null) { - xml += " <ram:LineTwo>" + XMLTools.encodeXML(contact.getAdditionalAddress()) //$NON-NLS-1$ - + "</ram:LineTwo>\n"; //$NON-NLS-1$ - } - xml += " <ram:CityName>" + XMLTools.encodeXML(contact.getLocation()) //$NON-NLS-1$ - + "</ram:CityName>\n" //$NON-NLS-1$ - + " <ram:CountryID>" + XMLTools.encodeXML(contact.getCountry()) //$NON-NLS-1$ - + "</ram:CountryID>\n" //$NON-NLS-1$ - + " </ram:PostalTradeAddress>\n"; //$NON-NLS-1$ - if (contact.getVATID() != null) { - xml += " <ram:SpecifiedTaxRegistration>\n" //$NON-NLS-1$ - + " <ram:ID schemeID=\"VA\">" + XMLTools.encodeXML(contact.getVATID()) //$NON-NLS-1$ - + "</ram:ID>\n" //$NON-NLS-1$ - + " </ram:SpecifiedTaxRegistration>\n"; //$NON-NLS-1$ - } - return xml; - - } - - @Override - public void generateXML(IZUGFeRDExportableTransaction trans) { - this.trans = trans; - - boolean hasDueDate=false; - String taxCategoryCode=""; - SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); //$NON-NLS-1$ - SimpleDateFormat zugferdDateFormat = new SimpleDateFormat("yyyyMMdd"); //$NON-NLS-1$ - String exemptionReason=""; - - if (paymentTermsDescription==null) { - paymentTermsDescription= "Zahlbar ohne Abzug bis " + germanDateFormat.format(trans.getDueDate()); - - } - if (trans.getPaymentTermDescription()!=null) { - paymentTermsDescription=trans.getPaymentTermDescription(); - } - - String senderReg = ""; - if (trans.getOwnOrganisationFullPlaintextInfo() != null) { - senderReg = "" + "<ram:IncludedNote>\n" + " <ram:Content>\n" - + XMLTools.encodeXML(trans.getOwnOrganisationFullPlaintextInfo()) + " </ram:Content>\n" - + "<ram:SubjectCode>REG</ram:SubjectCode>\n" + "</ram:IncludedNote>\n"; - - } - - String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" //$NON-NLS-1$ - - + "<rsm:CrossIndustryInvoice xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:rsm=\"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100\"" - // + " - // xsi:schemaLocation=\"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100 - // ../Schema/ZUGFeRD1p0.xsd\"" - + " xmlns:ram=\"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100\"" - + " xmlns:udt=\"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100\">\n" //$NON-NLS-1$ - + " <rsm:ExchangedDocumentContext>\n" //$NON-NLS-1$ - // + " - // <ram:TestIndicator><udt:Indicator>"+testBooleanStr+"</udt:Indicator></ram:TestIndicator>\n" - // //$NON-NLS-1$ - + " <ram:GuidelineSpecifiedDocumentContextParameter>\n" //$NON-NLS-1$ - + " <ram:ID>" + getProfile() + "</ram:ID>\n" //$NON-NLS-1$ - + " </ram:GuidelineSpecifiedDocumentContextParameter>\n" //$NON-NLS-1$ - + " </rsm:ExchangedDocumentContext>\n" //$NON-NLS-1$ - + " <rsm:ExchangedDocument>\n" //$NON-NLS-1$ - + " <ram:ID>" + XMLTools.encodeXML(trans.getNumber()) + "</ram:ID>\n" //$NON-NLS-1$ //$NON-NLS-2$ - // + " <ram:Name>RECHNUNG</ram:Name>\n" //$NON-NLS-1$ - + " <ram:TypeCode>380</ram:TypeCode>\n" //$NON-NLS-1$ - + " <ram:IssueDateTime><udt:DateTimeString format=\"102\">" //$NON-NLS-1$ - + zugferdDateFormat.format(trans.getIssueDate()) + "</udt:DateTimeString></ram:IssueDateTime>\n" // date //$NON-NLS-1$ - // format - // was - // 20130605 - + senderReg - // + " <IncludedNote>\n" - // + " <Content>\n" - // + "Rechnung gemäß Bestellung Nr. 2013-471331 vom 01.03.2013.\n" - // + "\n" - // + " </Content>\n" - // + " </IncludedNote>\n" - // + " <IncludedNote>\n" - // + " <Content>\n" - // + "Es bestehen Rabatt- und Bonusvereinbarungen.\n" - // + " </Content>\n" - // + " <SubjectCode>AAK</SubjectCode>\n" - // + " </IncludedNote>\n" - + " </rsm:ExchangedDocument>\n" //$NON-NLS-1$ - + " <rsm:SupplyChainTradeTransaction>\n"; //$NON-NLS-1$ - int lineID = 0; - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { - lineID++; - taxCategoryCode=currentItem.getProduct().getTaxCategoryCode(); - if (currentItem.getProduct().isIntraCommunitySupply()) { - exemptionReason="<ram:ExemptionReason>Intra-community supply</ram:ExemptionReason>"; - } - - LineCalc lc = new LineCalc(currentItem); - xml = xml + " <ram:IncludedSupplyChainTradeLineItem>\n" + //$NON-NLS-1$ - " <ram:AssociatedDocumentLineDocument>\n" //$NON-NLS-1$ - + " <ram:LineID>" + lineID + "</ram:LineID>\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " </ram:AssociatedDocumentLineDocument>\n" //$NON-NLS-1$ - + " <ram:SpecifiedTradeProduct>\n" //$NON-NLS-1$ - // + " <GlobalID schemeID=\"0160\">4012345001235</GlobalID>\n" - // + " <SellerAssignedID>KR3M</SellerAssignedID>\n" - // + " <BuyerAssignedID>55T01</BuyerAssignedID>\n" - + " <ram:Name>" + XMLTools.encodeXML(currentItem.getProduct().getName()) + "</ram:Name>\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " <ram:Description>" + XMLTools.encodeXML(currentItem.getProduct().getDescription()) //$NON-NLS-1$ - + "</ram:Description>\n" //$NON-NLS-1$ - + " </ram:SpecifiedTradeProduct>\n" //$NON-NLS-1$ - - + " <ram:SpecifiedLineTradeAgreement>\n" //$NON-NLS-1$ - + " <ram:GrossPriceProductTradePrice>\n" //$NON-NLS-1$ - + " <ram:ChargeAmount>" + priceFormat(lc.getPriceGross()) //$NON-NLS-1$ - + "</ram:ChargeAmount>\n" //$NON-NLS-1$ //currencyID=\"EUR\" - + " <ram:BasisQuantity unitCode=\"" + XMLTools.encodeXML(currentItem.getProduct().getUnit()) //$NON-NLS-1$ - + "\">1.0000</ram:BasisQuantity>\n" //$NON-NLS-1$ - // + " <AppliedTradeAllowanceCharge>\n" - // + " <ChargeIndicator>false</ChargeIndicator>\n" - // + " <ActualAmount currencyID=\"EUR\">0.6667</ActualAmount>\n" - // + " <Reason>Rabatt</Reason>\n" - // + " </AppliedTradeAllowanceCharge>\n" - + " </ram:GrossPriceProductTradePrice>\n" //$NON-NLS-1$ - + " <ram:NetPriceProductTradePrice>\n" //$NON-NLS-1$ - + " <ram:ChargeAmount>" + priceFormat(currentItem.getPrice()) //$NON-NLS-1$ - + "</ram:ChargeAmount>\n" //$NON-NLS-1$ // currencyID=\"EUR\" - + " <ram:BasisQuantity unitCode=\"" + XMLTools.encodeXML(currentItem.getProduct().getUnit()) //$NON-NLS-1$ - + "\">1.0000</ram:BasisQuantity>\n" //$NON-NLS-1$ - + " </ram:NetPriceProductTradePrice>\n" //$NON-NLS-1$ - + " </ram:SpecifiedLineTradeAgreement>\n" //$NON-NLS-1$ - - + " <ram:SpecifiedLineTradeDelivery>\n" //$NON-NLS-1$ - + " <ram:BilledQuantity unitCode=\"" + XMLTools.encodeXML(currentItem.getProduct().getUnit()) + "\">" //$NON-NLS-1$ //$NON-NLS-2$ - + quantityFormat(currentItem.getQuantity()) + "</ram:BilledQuantity>\n" //$NON-NLS-1$ - + " </ram:SpecifiedLineTradeDelivery>\n" //$NON-NLS-1$ - + " <ram:SpecifiedLineTradeSettlement>\n" //$NON-NLS-1$ - + " <ram:ApplicableTradeTax>\n" //$NON-NLS-1$ - + " <ram:TypeCode>VAT</ram:TypeCode>\n" //$NON-NLS-1$ - + exemptionReason - + " <ram:CategoryCode>"+currentItem.getProduct().getTaxCategoryCode()+"</ram:CategoryCode>\n" //$NON-NLS-1$ - - + " <ram:RateApplicablePercent>" //$NON-NLS-1$ - + vatFormat(currentItem.getProduct().getVATPercent()) + "</ram:RateApplicablePercent>\n" //$NON-NLS-1$ - + " </ram:ApplicableTradeTax>\n" //$NON-NLS-1$ - + " <ram:SpecifiedTradeSettlementLineMonetarySummation>\n" //$NON-NLS-1$ - + " <ram:LineTotalAmount>" + currencyFormat(lc.getItemTotalNetAmount()) //$NON-NLS-1$ - + "</ram:LineTotalAmount>\n" //$NON-NLS-1$ // currencyID=\"EUR\" - + " </ram:SpecifiedTradeSettlementLineMonetarySummation>\n"; //$NON-NLS-1$ - if (currentItem.getAdditionalReferencedDocumentID()!=null) { - xml=xml + " <ram:AdditionalReferencedDocument><ram:IssuerAssignedID>"+currentItem.getAdditionalReferencedDocumentID()+"</ram:IssuerAssignedID><ram:TypeCode>130</ram:TypeCode></ram:AdditionalReferencedDocument>\n"; //$NON-NLS-1$ - - } - xml=xml + " </ram:SpecifiedLineTradeSettlement>\n" //$NON-NLS-1$ - + " </ram:IncludedSupplyChainTradeLineItem>\n"; //$NON-NLS-1$ - - } - - xml = xml + " <ram:ApplicableHeaderTradeAgreement>\n"; //$NON-NLS-1$ - if (trans.getReferenceNumber() != null) { - xml = xml + " <ram:BuyerReference>" + XMLTools.encodeXML(trans.getReferenceNumber()) + "</ram:BuyerReference>\n"; - - } - xml = xml + " <ram:SellerTradeParty>\n" //$NON-NLS-1$ - // + " <GlobalID schemeID=\"0088\">4000001123452</GlobalID>\n" - + " <ram:Name>" + XMLTools.encodeXML(trans.getOwnOrganisationName()) + "</ram:Name>\n"; //$NON-NLS-1$ //$NON-NLS-2$ - - if ((trans.getOwnVATID()!=null)&&(trans.getOwnOrganisationName()!=null)) { - - xml = xml + " <ram:SpecifiedLegalOrganization>\n" + " <ram:ID>" - + XMLTools.encodeXML(trans.getOwnVATID()) + "</ram:ID>\n" + " <ram:TradingBusinessName>" - + XMLTools.encodeXML(trans.getOwnOrganisationName()) + "</ram:TradingBusinessName>\n" - + " </ram:SpecifiedLegalOrganization>"; - } - - if (trans.getOwnContact() != null) { - xml = xml + "<ram:DefinedTradeContact>\n" + " <ram:PersonName>" + XMLTools.encodeXML(trans.getOwnContact().getName()) - + "</ram:PersonName>\n"; - if (trans.getOwnContact().getPhone() != null) { - - xml = xml + " <ram:TelephoneUniversalCommunication>\n" + " <ram:CompleteNumber>" - + XMLTools.encodeXML(trans.getOwnContact().getPhone()) + "</ram:CompleteNumber>\n" - + " </ram:TelephoneUniversalCommunication>\n"; - } - if (trans.getOwnContact().getEMail() != null) { - - xml = xml + " <ram:EmailURIUniversalCommunication>\n" + " <ram:URIID>" - + XMLTools.encodeXML(trans.getOwnContact().getEMail()) + "</ram:URIID>\n" - + " </ram:EmailURIUniversalCommunication>\n"; - } - xml = xml + " </ram:DefinedTradeContact>"; - - } - - xml = xml + " <ram:PostalTradeAddress>\n" + " <ram:PostcodeCode>" - + XMLTools.encodeXML(trans.getOwnZIP()) + "</ram:PostcodeCode>\n" + " <ram:LineOne>" - + XMLTools.encodeXML(trans.getOwnStreet()) + "</ram:LineOne>\n" + " <ram:CityName>" + XMLTools.encodeXML(trans.getOwnLocation()) - + "</ram:CityName>\n" + " <ram:CountryID>" + XMLTools.encodeXML(trans.getOwnCountry()) - + "</ram:CountryID>\n" + " </ram:PostalTradeAddress>\n" - + " <ram:SpecifiedTaxRegistration>\n" //$NON-NLS-1$ - + " <ram:ID schemeID=\"FC\">" + XMLTools.encodeXML(trans.getOwnTaxID()) + "</ram:ID>\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " </ram:SpecifiedTaxRegistration>\n" //$NON-NLS-1$ - + " <ram:SpecifiedTaxRegistration>\n" //$NON-NLS-1$ - + " <ram:ID schemeID=\"VA\">" + XMLTools.encodeXML(trans.getOwnVATID()) + "</ram:ID>\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " </ram:SpecifiedTaxRegistration>\n" //$NON-NLS-1$ - + " </ram:SellerTradeParty>\n" //$NON-NLS-1$ - + " <ram:BuyerTradeParty>\n"; //$NON-NLS-1$ - // + " <ID>GE2020211</ID>\n" - // + " <GlobalID schemeID=\"0088\">4000001987658</GlobalID>\n" - - xml+=getContactAsXML(trans.getRecipient()); - xml += " </ram:BuyerTradeParty>\n" //$NON-NLS-1$ - // + " <BuyerOrderReferencedDocument>\n" - // + " <IssueDateTime format=\"102\">20130301</IssueDateTime>\n" - // + " <ID>2013-471331</ID>\n" - // + " </BuyerOrderReferencedDocument>\n" - + " </ram:ApplicableHeaderTradeAgreement>\n" //$NON-NLS-1$ - + " <ram:ApplicableHeaderTradeDelivery>\n" ; - if (this.trans.getDeliveryAddress()!=null) { - xml += "<ram:ShipToTradeParty>"+ - getContactAsXML(this.trans.getDeliveryAddress())+ - "</ram:ShipToTradeParty>"; - } - - xml+= " <ram:ActualDeliverySupplyChainEvent>\n" - + " <ram:OccurrenceDateTime>"; - - if (trans.getZFDeliveryDate() != null) { - ZUGFeRDDateFormat dateFormat = trans.getZFDeliveryDate().getFormat(); - Date date = trans.getZFDeliveryDate().getDate(); - xml += "<udt:DateTimeString format=\"" + dateFormat.getDateTimeType() + "\">" - + dateFormat.getFormatter().format(date) + "</udt:DateTimeString>"; - } else if (trans.getDeliveryDate() != null) { - xml += "<udt:DateTimeString format=\"102\">" + zugferdDateFormat.format(trans.getDeliveryDate()) - + "</udt:DateTimeString>"; - } else { - throw new IllegalStateException("No delivery date provided"); - } - xml += "</ram:OccurrenceDateTime>\n"; - xml += " </ram:ActualDeliverySupplyChainEvent>\n" - /* - * + " <DeliveryNoteReferencedDocument>\n" + - * " <IssueDateTime format=\"102\">20130603</IssueDateTime>\n" + - * " <ID>2013-51112</ID>\n" + - * " </DeliveryNoteReferencedDocument>\n" - */ - + " </ram:ApplicableHeaderTradeDelivery>\n" + " <ram:ApplicableHeaderTradeSettlement>\n" //$NON-NLS-2$ - + " <ram:PaymentReference>" + XMLTools.encodeXML(trans.getNumber()) + "</ram:PaymentReference>\n" //$NON-NLS-1$ //$NON-NLS-2$ - + " <ram:InvoiceCurrencyCode>" + trans.getCurrency() + "</ram:InvoiceCurrencyCode>\n"; //$NON-NLS-1$ - - if (trans.getTradeSettlementPayment()!=null) { - for (IZUGFeRDTradeSettlementPayment payment : trans.getTradeSettlementPayment()) { - if(payment!=null) { - hasDueDate=true; - xml+=payment.getSettlementXML(); - } - } - } - if (trans.getTradeSettlement()!=null) { - for (IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { - if(payment!=null) { - if (payment instanceof IZUGFeRDTradeSettlementPayment) { - hasDueDate=true; - } - xml+=payment.getSettlementXML(); - } - } - } - - HashMap<BigDecimal, VATAmount> VATPercentAmountMap = getVATPercentAmountMap(); - for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { - VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); - if (amount != null) { - xml += " <ram:ApplicableTradeTax>\n" //$NON-NLS-1$ - + " <ram:CalculatedAmount>" + currencyFormat(amount.getCalculated()) //$NON-NLS-1$ - + "</ram:CalculatedAmount>\n" //$NON-NLS-1$ //currencyID=\"EUR\" - + " <ram:TypeCode>VAT</ram:TypeCode>\n" //$NON-NLS-1$ - + exemptionReason - + " <ram:BasisAmount>" + currencyFormat(amount.getBasis()) + "</ram:BasisAmount>\n" // currencyID=\"EUR\" - + " <ram:CategoryCode>"+taxCategoryCode+"</ram:CategoryCode>\n" //$NON-NLS-1$ - + " <ram:RateApplicablePercent>" + vatFormat(currentTaxPercent) //$NON-NLS-1$ - + "</ram:RateApplicablePercent>\n" + " </ram:ApplicableTradeTax>\n"; //$NON-NLS-2$ - - } - } - - if (trans.getPaymentTerms() == null) { - xml = xml + " <ram:SpecifiedTradePaymentTerms>\n" //$NON-NLS-1$ - + " <ram:Description>" + paymentTermsDescription + "</ram:Description>\n"; - - if (trans.getTradeSettlement() != null) { - for (IZUGFeRDTradeSettlement payment : trans.getTradeSettlement()) { - if (payment != null) { - xml += payment.getPaymentXML(); - } - } - } - - if (hasDueDate) { - xml = xml + " <ram:DueDateDateTime><udt:DateTimeString format=\"102\">" // $NON-NLS-2$ - + zugferdDateFormat.format(trans.getDueDate()) - + "</udt:DateTimeString></ram:DueDateDateTime>\n";// 20130704 //$NON-NLS-1$ - - } - xml = xml + " </ram:SpecifiedTradePaymentTerms>\n"; //$NON-NLS-1$ - } else { - xml = xml + buildPaymentTermsXml(); - } - - xml = xml + " <ram:SpecifiedTradeSettlementHeaderMonetarySummation>\n" //$NON-NLS-1$ - + " <ram:LineTotalAmount>" + currencyFormat(getTotal()) + "</ram:LineTotalAmount>\n" //$NON-NLS-1$ //$NON-NLS-2$ - // currencyID=\"EUR\" - + " <ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount>\n" //$NON-NLS-1$ currencyID=\"EUR\" - + " <ram:AllowanceTotalAmount>0.00</ram:AllowanceTotalAmount>\n" //$NON-NLS-1$ // - // currencyID=\"EUR\" - // + " <ChargeTotalAmount currencyID=\"EUR\">5.80</ChargeTotalAmount>\n" - // + " <AllowanceTotalAmount currencyID=\"EUR\">14.73</AllowanceTotalAmount>\n" - + " <ram:TaxBasisTotalAmount>" + currencyFormat(getTotal()) + "</ram:TaxBasisTotalAmount>\n" //$NON-NLS-1$ //$NON-NLS-2$ - // // - // currencyID=\"EUR\" - + " <ram:TaxTotalAmount currencyID=\"" + trans.getCurrency() + "\">" //$NON-NLS-1$ - + currencyFormat(getTotalGross().subtract(getTotal())) + "</ram:TaxTotalAmount>\n" //$NON-NLS-1$ - + " <ram:GrandTotalAmount>" + currencyFormat(getTotalGross()) + "</ram:GrandTotalAmount>\n" //$NON-NLS-1$ //$NON-NLS-2$ - // // - // currencyID=\"EUR\" - + " <ram:TotalPrepaidAmount>" + currencyFormat(getTotalPrepaid()) + "</ram:TotalPrepaidAmount>\n" - + " <ram:DuePayableAmount>" + currencyFormat(getTotalGross().subtract(getTotalPrepaid())) + "</ram:DuePayableAmount>\n" //$NON-NLS-1$ //$NON-NLS-2$ - // // - // currencyID=\"EUR\" - + " </ram:SpecifiedTradeSettlementHeaderMonetarySummation>\n" //$NON-NLS-1$ - + " </ram:ApplicableHeaderTradeSettlement>\n"; //$NON-NLS-1$ - // + " <IncludedSupplyChainTradeLineItem>\n" - // + " <AssociatedDocumentLineDocument>\n" - // + " <IncludedNote>\n" - // + " <Content>Wir erlauben uns Ihnen folgende Positionen aus der Lieferung Nr. - // 2013-51112 in Rechnung zu stellen:</Content>\n" - // + " </IncludedNote>\n" - // + " </AssociatedDocumentLineDocument>\n" - // + " </IncludedSupplyChainTradeLineItem>\n"; - - xml = xml + " </rsm:SupplyChainTradeTransaction>\n" //$NON-NLS-1$ - + "</rsm:CrossIndustryInvoice>"; //$NON-NLS-1$ - - byte[] zugferdRaw; - try { - zugferdRaw = xml.getBytes("UTF-8"); - - if ((zugferdRaw[0] == (byte) 0xEF) && (zugferdRaw[1] == (byte) 0xBB) && (zugferdRaw[2] == (byte) 0xBF)) { - // I don't like BOMs, lets remove it - zugferdData = new byte[zugferdRaw.length - 3]; - System.arraycopy(zugferdRaw, 3, zugferdData, 0, zugferdRaw.length - 3); - } else { - zugferdData = zugferdRaw; - } - } catch (UnsupportedEncodingException e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - } // $NON-NLS-1$ - } - - private String buildPaymentTermsXml() { - String paymentTermsXml = "<ram:SpecifiedTradePaymentTerms>"; - - IZUGFeRDPaymentTerms paymentTerms = trans.getPaymentTerms(); - IZUGFeRDPaymentDiscountTerms discountTerms = paymentTerms.getDiscountTerms(); - IZUGFeRDDate dueDate = paymentTerms.getDueDate(); - if (dueDate != null && discountTerms != null && discountTerms.getBaseDate() != null) { - throw new IllegalStateException( - "if paymentTerms.dueDate is specified, paymentTerms.discountTerms.baseDate has not to be specified"); - } - paymentTermsXml += "<ram:Description>" + paymentTerms.getDescription() + "</ram:Description>"; - if (dueDate != null) { - paymentTermsXml += "<ram:DueDateDateTime>"; - paymentTermsXml += "<udt:DateTimeString format=\"" + dueDate.getFormat().getDateTimeType() + "\">" - + dueDate.getFormat().getFormatter().format(dueDate.getDate()) + "</udt:DateTimeString>"; - paymentTermsXml += "</ram:DueDateDateTime>"; - } - - if (discountTerms != null) { - paymentTermsXml += "<ram:ApplicableTradePaymentDiscountTerms>"; - String currency = trans.getCurrency(); - String basisAmount = currencyFormat(getTotalGross()); - paymentTermsXml += "<ram:BasisAmount currencyID=\"" + currency + "\">" + basisAmount + "</ram:BasisAmount>"; - paymentTermsXml += "<ram:CalculationPercent>" + discountTerms.getCalculationPercentage().toString() - + "</ram:CalculationPercent>"; - - if (discountTerms.getBaseDate() != null) { - Date baseDate = discountTerms.getBaseDate().getDate(); - ZUGFeRDDateFormat baseDateFormat = discountTerms.getBaseDate().getFormat(); - paymentTermsXml += "<ram:BasisDateTime>"; - paymentTermsXml += "<udt:DateTimeString format=\"" + baseDateFormat.getDateTimeType() + "\">" + baseDateFormat.getFormatter().format(baseDate) + "</udt:DateTimeString>"; - paymentTermsXml += "</ram:BasisDateTime>"; - - paymentTermsXml += "<ram:BasisPeriodMeasure unitCode=\"" + discountTerms.getBasePeriodUnitCode() + "\">" - + discountTerms.getBasePeriodMeasure() + "</ram:BasisPeriodMeasure>"; - } - - paymentTermsXml += "</ram:ApplicableTradePaymentDiscountTerms>"; - } - - paymentTermsXml += "</ram:SpecifiedTradePaymentTerms>"; - return paymentTermsXml; - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDConformanceLevel.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDConformanceLevel.java deleted file mode 100644 index d59b2f40..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDConformanceLevel.java +++ /dev/null @@ -1,23 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public enum ZUGFeRDConformanceLevel { - BASIC, COMFORT, EXTENDED, EN16931/*=Comfort*/, MINIMUM, BASICWL /*basic without lines, less than basic*/, CIUS -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java deleted file mode 100644 index 3457fe18..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDDateFormat.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.mustangproject.ZUGFeRD; - -import java.text.SimpleDateFormat; - -import org.mustangproject.ZUGFeRD.model.DateTimeTypeConstants; - -public enum ZUGFeRDDateFormat { - - MONTH_OF_YEAR(DateTimeTypeConstants.MONTH, new SimpleDateFormat("yyyyMM")), - WEEK_OF_YEAR(DateTimeTypeConstants.WEEK, new SimpleDateFormat("yyyyww")), - DATE(DateTimeTypeConstants.DATE, new SimpleDateFormat("yyyyMMdd")); - - private String dateTimeType; - private SimpleDateFormat formatter; - - private ZUGFeRDDateFormat(String dateTimeType, SimpleDateFormat formatter) { - this.dateTimeType = dateTimeType; - this.formatter = formatter; - } - - public String getDateTimeType() { - return dateTimeType; - } - - public SimpleDateFormat getFormatter() { - return formatter; - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExportException.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExportException.java deleted file mode 100644 index c318fccd..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExportException.java +++ /dev/null @@ -1,41 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public class ZUGFeRDExportException extends RuntimeException { - /** - * - */ - private static final long serialVersionUID = 1L; - - public ZUGFeRDExportException() { - } - - public ZUGFeRDExportException(String message) { - super(message); - } - - public ZUGFeRDExportException(String message, Throwable cause) { - super(message, cause); - } - - public ZUGFeRDExportException(Throwable cause) { - super(cause); - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java deleted file mode 100644 index 87db4324..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporter.java +++ /dev/null @@ -1,746 +0,0 @@ - -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -/* - * Mustangproject's ZUGFeRD implementation ZUGFeRD exporter Licensed under the - * APLv2 - * - * @date 2014-07-12 - * @version 1.2.0 - * @author jstaerk - * - */ - -import org.apache.pdfbox.cos.COSArray; -import org.apache.pdfbox.cos.COSBase; -import org.apache.pdfbox.cos.COSDictionary; -import org.apache.pdfbox.cos.COSName; -import org.apache.pdfbox.cos.COSObject; -import org.apache.pdfbox.pdmodel.*; -import org.apache.pdfbox.pdmodel.common.PDMetadata; -import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification; -import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile; -import org.apache.xmpbox.XMPMetadata; -import org.apache.xmpbox.schema.AdobePDFSchema; -import org.apache.xmpbox.schema.DublinCoreSchema; -import org.apache.xmpbox.schema.PDFAIdentificationSchema; -import org.apache.xmpbox.schema.XMPBasicSchema; -import org.apache.xmpbox.type.BadFieldValueException; -import org.apache.xmpbox.xml.XmpSerializer; - -import javax.xml.transform.TransformerException; -import java.io.*; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.Map; - -public class ZUGFeRDExporter implements Closeable { - - public static final int DefaultZUGFeRDVersion = 1; - - private boolean isFacturX = false; - - /** - * To use the ZUGFeRD exporter, implement IZUGFeRDExportableTransaction in - * yourTransaction (which will require you to implement Product, Item and - * Contact) then call doc = PDDocument.load(PDFfilename); // automatically add - * Zugferd to all outgoing invoices ZUGFeRDExporter ze = new ZUGFeRDExporter(); - * ze.PDFmakeA3compliant(doc, "Your application name", - * System.getProperty("user.name"), true); ze.PDFattachZugferdFile(doc, - * yourTransaction); - * <p/> - * doc.save(PDFfilename); - * - * @author jstaerk - * @deprecated Use the factory methods {@link #createFromPDFA3(String)}, - * {@link #createFromPDFA3(InputStream)} or the - * {@link ZUGFeRDExporterFromA1Factory} instead - */ - // // MAIN CLASS - @Deprecated - private PDFAConformanceLevel conformanceLevel = PDFAConformanceLevel.UNICODE; - - // BASIC, COMFORT etc - may be set from outside. - @Deprecated - private ZUGFeRDConformanceLevel profile = ZUGFeRDConformanceLevel.EN16931; - - /** - * Data (XML invoice) to be added to the ZUGFeRD PDF. It may be externally set, - * in which case passing a IZUGFeRDExportableTransaction is not necessary. By - * default it is null meaning the caller needs to pass a - * IZUGFeRDExportableTransaction for the XML to be populated. - */ - IXMLProvider xmlProvider; - protected PDMetadata metadata = null; - protected PDFAIdentificationSchema pdfaid = null; - protected XMPMetadata xmp = null; - /** - * Producer attribute for PDF - */ - protected String producer = "mustangproject"; - /** - * Author/Creator attribute for PDF - */ - protected String creator = "mustangproject"; - /** - * CreatorTool - */ - protected String creatorTool = "mustangproject"; - - @Deprecated - private boolean ignoreA1Errors; - protected boolean ensurePDFisUpgraded = true; - private PDDocument doc; - int ZFVersion; - - private HashMap<String, byte[]> additionalFiles = new HashMap<String, byte[]>(); - - - private boolean disableAutoClose; - - private boolean fileAttached = false; - protected boolean attachZUGFeRDHeaders = true; - - private boolean documentPrepared = false; - - public ZUGFeRDExporter() { - init(); - } - - public ZUGFeRDExporter(PDDocument doc2) { - doc = doc2; - init(); - } - - /** - * Adds additional file attachments into the ZF - * @param filename the name of the attachment - * @param filecontent the bytearray with the file contents - */ - public void addAdditionalFile(String filename, byte[] filecontent) { - additionalFiles.put(filename, filecontent); - - } - - /*** - * internal helper function: get namespace for given zugferd or factur-x version - * @param ver the ZUGFeRD version - * @return the URN of the namespace - */ - public String getNamespaceForVersion(int ver) { - if (isFacturX) { - return "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#"; - } else if (ver == 1) { - return "urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#"; - } else if (ver == 2) { - return "urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#"; - - } else { - throw new IllegalArgumentException("Version not supported"); - } - } - - /*** - * internal helper: returns the namespace prefix for the given zf/fx version number - * @param ver the zf/fx version - * @return the namespace prefix as string, without colon - */ - public String getPrefixForVersion(int ver) { - if (isFacturX) { - return "fx"; - } else { - return "zf"; - } - } - - /*** - * internal helper: return the name of the file attachment for the given zf/fx version - * @param ver the zf/fx version - * @return the filename of the file to be embedded - */ - public String getFilenameForVersion(int ver) { - if (isFacturX) { - return "factur-x.xml"; - } else { - if (ver==1) { - return "ZUGFeRD-invoice.xml"; - } else { - return "zugferd-invoice.xml"; - } - } - } - - @Deprecated - public void setZUGFeRDVersion(int ver) { - if (ver == 1) { - ZUGFeRD1PullProvider z1p = new ZUGFeRD1PullProvider(); - this.xmlProvider = z1p; - } else if (ver == 2) { - ZUGFeRD2PullProvider z2p = new ZUGFeRD2PullProvider(); - this.xmlProvider = z2p; - } else { - throw new IllegalArgumentException("Version not supported"); - } - ZFVersion = ver; - } - - public IXMLProvider getProvider() { - return xmlProvider; - } - - private void init() { - setZUGFeRDVersion(DefaultZUGFeRDVersion); - } - - public void setFacturX() { - setZUGFeRDVersion(2); - isFacturX = true; - } - - /** - * All files are PDF/A-3, setConformance refers to the level conformance. - * - * PDF/A-3 has three conformance levels, called "A", "U" and "B". - * <p> - * PDF/A-3-B where B means only visually preservable, U -standard for Mustang- - * means visually and unicode preservable and A means full compliance, i.e. - * visually, unicode and structurally preservable and tagged PDF, i.e. useful - * metainformation for blind people. - * <p> - * Feel free to pass "A" as new level if you know what you are doing :-) - * @param newLevel "A", "U" or "B" - * - * @deprecated Use {@link ZUGFeRDExporterFromA1Factory} instead - */ - @Deprecated - public void setConformanceLevel(PDFAConformanceLevel newLevel) { - if (newLevel == null) { - throw new NullPointerException("pdf conformance level"); - } - conformanceLevel = newLevel; - } - - /** - * All files are PDF/A-3, setConformance refers to the level conformance. - * <p> - * PDF/A-3 has three conformance levels, called "A", "U" and "B". - * <p> - * PDF/A-3-B where B means only visually preservable, U -standard for Mustang- - * means visually and unicode preservable and A means full compliance, i.e. - * visually, unicode and structurally preservable and tagged PDF, i.e. useful - * metainformation for blind people. - * <p> - * Feel free to pass "A" as new level if you know what you are doing :-) - * - * @param newLevel "A", "U" or "B" - * @deprecated Use - * {@link #setConformanceLevel(org.mustangproject.ZUGFeRD.PDFAConformanceLevel)} - * instead - */ - @Deprecated - public void setConformanceLevel(String newLevel) { - conformanceLevel = PDFAConformanceLevel.findByLetter(newLevel); - } - - /** - * enables the flag to indicate a test invoice in the XML structure - */ - public void setTest() { - xmlProvider.setTest(); - } - - /** - * @deprecated Use {@link ZUGFeRDExporterFromA1Factory} instead - */ - @Deprecated - public void ignoreA1Errors() { - ignoreA1Errors = true; - } - - /*** - * load from a pdf which is already A/3 - * @param filename the PDF - * @throws IOException if anything is wrong with filename - * @deprecated Use the factory method {@link #createFromPDFA3(String)} instead - */ - @Deprecated - public void loadPDFA3(String filename) throws IOException { - doc = PDDocument.load(new File(filename)); - } - - /*** - * factory create a ZUGFeRD exporter for a PDF/A-3 pdf file - * @param filename of the pdf - * @return the created ZUGFeRDExporter - * @throws IOException if something is wrong with filename - */ - public static ZUGFeRDExporter createFromPDFA3(String filename) throws IOException { - return new ZUGFeRDExporter(PDDocument.load(new File(filename))); - } - - /** - * load from a pdf which is already A/3 from filestream - * @param file InputStream to load pdf from - * @deprecated Use the factory method {@link #createFromPDFA3(InputStream)} instead - * @throws IOException in case anything is wrong with file - * - */ - @Deprecated - public void loadPDFA3(InputStream file) throws IOException { - doc = PDDocument.load(file); - } - - /*** - * factory create a ZUGFeRD exporter for a PDF/A-3 inputstream - * @param pdfSource the InputStream of the pdf - * @return the created ZUGFeRDExporter - * @throws IOException (should not happen) - */ - public static ZUGFeRDExporter createFromPDFA3(InputStream pdfSource) throws IOException { - return new ZUGFeRDExporter(PDDocument.load(pdfSource)); - } - - /** - * Makes A PDF/A3a-compliant document from a PDF-A1 compliant document (on the - * metadata level, this will not e.g. convert graphics to JPG-2000) - * @param filename the pdf - * @param producer the name of the xmp producer (app) - * @param creator the name of the xmp creator (user) - * @param attachZugferdHeaders whether to attach XMP ZUGFeRD headers - * @return the created PDFbox PDDocumentCatalog - * @throws IOException if anything is wrong with file - * @throws TransformerException in case of xml (XMP) parsing issues - * @deprecated use the {@link ZUGFeRDExporterFromA1Factory} instead - */ - @Deprecated - public PDDocumentCatalog PDFmakeA3compliant(String filename, String producer, String creator, - boolean attachZugferdHeaders) throws IOException, TransformerException { - - doc = createPDFA1Factory().setProducer(producer).setCreator(creator).load(filename).doc; - - return doc.getDocumentCatalog(); - } - - /*** - * - * Makes A PDF/A3a-compliant document from a PDF-A1 compliant document (on the - * metadata level, this will not e.g. convert graphics to JPG-2000) - - * @param file the InputStream of the pdf - * @param producer the name of the xmp producer (app) - * @param creator the name of the xmp creator (user) - * @param attachZugferdHeaders whether to attach XMP ZUGFeRD headers - * @return the created PDFbox PDDocumentCatalog - * @throws IOException if anything is wrong with file - * @throws TransformerException in case of xml (XMP) parsing issues - * @deprecated use the {@link ZUGFeRDExporterFromA1Factory} instead - */ - @Deprecated - public PDDocumentCatalog PDFmakeA3compliant(InputStream file, String producer, String creator, - boolean attachZugferdHeaders) throws IOException, TransformerException { - - doc = createPDFA1Factory().setProducer(producer).setCreator(creator).load(file).doc; - - return doc.getDocumentCatalog(); - } - - - private IExporterFactory createPDFA1Factory() { - ZUGFeRDExporterFromA1Factory factory = new ZUGFeRDExporterFromA1Factory(); - if (ignoreA1Errors) { - factory.ignorePDFAErrors(); - } - return factory.setZUGFeRDConformanceLevel(profile).setConformanceLevel(conformanceLevel); - } - - @Override - public void close() throws IOException { - if (doc != null) { - doc.close(); - } - } - - /** - * Embeds the Zugferd XML structure in a file named ZUGFeRD-invoice.xml. - * - * @param trans a IZUGFeRDExportableTransaction that provides the data-model to - * populate the XML. This parameter may be null, if so the XML data - * should hav ebeen set via - * <code>setZUGFeRDXMLData(byte[] zugferdData)</code> - * @throws IOException if anything is wrong with already loaded PDF - */ - public void PDFattachZugferdFile(IZUGFeRDExportableTransaction trans) throws IOException { - prepareDocument(); - ((IProfileProvider) xmlProvider).setProfile(profile); - xmlProvider.generateXML(trans); - String filename = getFilenameForVersion(ZFVersion); - PDFAttachGenericFile(doc, filename, "Alternative", - "Invoice metadata conforming to ZUGFeRD standard (http://www.ferd-net.de/front_content.php?idcat=231&lang=4)", - "text/xml", xmlProvider.getXML()); - for (String filenameAdditional : additionalFiles.keySet()) { - PDFAttachGenericFile(doc, filenameAdditional, "Supplement", "ZUGFeRD extension/additional data", "text/xml", additionalFiles.get(filenameAdditional)); - } - } - - /*** - * Perform the final export to a now ZUGFeRD-enriched PDF file - * @param ZUGFeRDfilename the pdf file name - * @throws IOException if anything is wrong in the target location - */ - public void export(String ZUGFeRDfilename) throws IOException { - if (!documentPrepared) { - prepareDocument(); - } - if ((!fileAttached) && (attachZUGFeRDHeaders)) { - throw new IOException( - "File must be attached (usually with PDFattachZugferdFile) before perfoming this operation"); - } - doc.save(ZUGFeRDfilename); - if (!disableAutoClose) { - close(); - } - } - - - /*** - * Perform the final export to a now ZUGFeRD-enriched PDF file as OutputStream - * @param output the OutputStream - * @throws IOException if anything is wrong in the OutputStream - */ - public void export(OutputStream output) throws IOException { - if (!documentPrepared) { - prepareDocument(); - } - if ((!fileAttached) && (attachZUGFeRDHeaders)) { - throw new IOException( - "File must be attached (usually with PDFattachZugferdFile) before perfoming this operation"); - } - doc.save(output); - if (!disableAutoClose) { - close(); - } - } - - /** - * Embeds an external file (generic - any type allowed) in the PDF. - * - * @param doc PDDocument to attach the file to. - * @param filename name of the file that will become attachment name in the PDF - * @param relationship how the file relates to the content, e.g. "Alternative" - * @param description Human-readable description of the file content - * @param subType type of the data e.g. could be "text/xml" - mime like - * @param data the binary data of the file/attachment - * @throws java.io.IOException if anything is wrong with filename - */ - public void PDFAttachGenericFile(PDDocument doc, String filename, String relationship, String description, - String subType, byte[] data) throws IOException { - fileAttached = true; - - PDComplexFileSpecification fs = new PDComplexFileSpecification(); - fs.setFile(filename); - - COSDictionary dict = fs.getCOSObject(); - dict.setName("AFRelationship", relationship); - dict.setString("UF", filename); - dict.setString("Desc", description); - - ByteArrayInputStream fakeFile = new ByteArrayInputStream(data); - PDEmbeddedFile ef = new PDEmbeddedFile(doc, fakeFile); -// ef.addCompression(); - ef.setSubtype(subType); - ef.setSize(data.length); - ef.setCreationDate(new GregorianCalendar()); - - ef.setModDate(GregorianCalendar.getInstance()); - - fs.setEmbeddedFile(ef); - - // In addition make sure the embedded file is set under /UF - dict = fs.getCOSObject(); - COSDictionary efDict = (COSDictionary) dict.getDictionaryObject(COSName.EF); - COSBase lowerLevelFile = efDict.getItem(COSName.F); - efDict.setItem(COSName.UF, lowerLevelFile); - - // now add the entry to the embedded file tree and set in the document. - PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog()); - PDEmbeddedFilesNameTreeNode efTree = names.getEmbeddedFiles(); - if (efTree == null) { - efTree = new PDEmbeddedFilesNameTreeNode(); - } - - Map<String, PDComplexFileSpecification> namesMap = new HashMap<>(); - - Map<String, PDComplexFileSpecification> oldNamesMap = efTree.getNames(); - if (oldNamesMap != null) { - for (String key : oldNamesMap.keySet()) { - namesMap.put(key, oldNamesMap.get(key)); - } - } - namesMap.put(filename, fs); - efTree.setNames(namesMap); - - names.setEmbeddedFiles(efTree); - doc.getDocumentCatalog().setNames(names); - - // AF entry (Array) in catalog with the FileSpec - COSBase AFEntry = (COSBase)doc.getDocumentCatalog().getCOSObject().getItem("AF"); - if ((AFEntry == null)) - { - COSArray cosArray = new COSArray(); - cosArray.add(fs); - doc.getDocumentCatalog().getCOSObject().setItem("AF", cosArray); - } else if (AFEntry instanceof COSArray) - { - COSArray cosArray = (COSArray)AFEntry; - cosArray.add(fs); - doc.getDocumentCatalog().getCOSObject().setItem("AF", cosArray); - } else if ((AFEntry instanceof COSObject) && - ((COSObject)AFEntry).getObject() instanceof COSArray) - { - COSArray cosArray = (COSArray)((COSObject)AFEntry).getObject(); - cosArray.add(fs); - } else - { - throw new IOException("Unexpected object type for PDFDocument/Catalog/COSDictionary/Item(AF)"); - } - } - - /** - * Sets the ZUGFeRD XML data to be attached as a single byte array. This is - * useful for use-cases where the XML has already been produced by some external - * API or component. - * - * @param zugferdData XML data to be set as a byte array (XML file in raw form). - * @throws IOException (should not happen) - */ - public void setZUGFeRDXMLData(byte[] zugferdData) throws IOException { - CustomXMLProvider cus = new CustomXMLProvider(); - cus.setXML(zugferdData); - this.xmlProvider = cus; - PDFattachZugferdFile(null); - - } - - /** - * Sets the ZUGFeRD profile. - * - * @param zUGFeRDConformanceLevel the new conformance level - * @deprecated Use {@link ZUGFeRDExporterFromA1Factory} instead - */ - @Deprecated - public void setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel zUGFeRDConformanceLevel) { - if (zUGFeRDConformanceLevel == null) { - throw new NullPointerException("ZUGFeRD conformance level"); - } - this.profile = zUGFeRDConformanceLevel; - } - - /** - * Sets the ZUGFeRD profile. - * - * @param zUGFeRDConformanceLevel the new conformance level - * @deprecated Use {@link #setConformanceLevel(PDFAConformanceLevel)} instead - */ - @Deprecated - public void setZUGFeRDConformanceLevel(String zUGFeRDConformanceLevel) { - this.profile = ZUGFeRDConformanceLevel.valueOf(zUGFeRDConformanceLevel); - } - - /** - * * - * Returns the PDFBox PDF Document - * - * @return PDDocument the PDFBox PDF - */ - public PDDocument getDoc() { - return doc; - } - - /** - * This will add both the RDF-indication which embedded file is Zugferd and the - * neccessary PDF/A schema extension description to be able to add this - * information to RDF - * - * @param metadata the PDFbox XMPMetadata object - */ - protected void addXMP(XMPMetadata metadata) { - - if (attachZUGFeRDHeaders) { - XMPSchemaZugferd zf = new XMPSchemaZugferd(metadata, ZFVersion, isFacturX, profile, - getNamespaceForVersion(ZFVersion), getPrefixForVersion(ZFVersion), - getFilenameForVersion(ZFVersion)); - - metadata.addSchema(zf); - } - - XMPSchemaPDFAExtensions pdfaex = new XMPSchemaPDFAExtensions(this, metadata, ZFVersion, attachZUGFeRDHeaders); - pdfaex.setZUGFeRDVersion(ZFVersion); - metadata.addSchema(pdfaex); - } - - protected byte[] serializeXmpMetadata(XMPMetadata xmpMetadata) throws TransformerException { - XmpSerializer serializer = new XmpSerializer(); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - - String prefix = "<?xpacket begin=\"\uFEFF\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>"; - String suffix = "<?xpacket end=\"w\"?>"; - - try { - buffer.write(prefix.getBytes("UTF-8")); // see https://github.com/ZUGFeRD/mustangproject/issues/44 - serializer.serialize(xmpMetadata, buffer, false); - buffer.write(suffix.getBytes("UTF-8")); - } catch (UnsupportedEncodingException e) - { - throw new TransformerException(e); - } catch (IOException e) - { - throw new TransformerException(e); - } - return buffer.toByteArray(); - } - - protected void prepareDocument() throws IOException { - String fullProducer = producer + " (via mustangproject.org " + org.mustangproject.ZUGFeRD.Version.VERSION + ")"; - - PDDocumentCatalog cat = doc.getDocumentCatalog(); - metadata = new PDMetadata(doc); - cat.setMetadata(metadata); - - xmp = XMPMetadata.createXMPMetadata(); - - pdfaid = new PDFAIdentificationSchema(xmp); - - xmp.addSchema(pdfaid); - - DublinCoreSchema dc = xmp.createAndAddDublinCoreSchema(); - - dc.addCreator(creator); - - XMPBasicSchema xsb = xmp.createAndAddXMPBasicSchema(); - - xsb.setCreatorTool(creatorTool); - xsb.setCreateDate(GregorianCalendar.getInstance()); - // PDDocumentInformation pdi=doc.getDocumentInformation(); - PDDocumentInformation pdi = new PDDocumentInformation(); - pdi.setProducer(fullProducer); - pdi.setAuthor(creator); - doc.setDocumentInformation(pdi); - - AdobePDFSchema pdf = xmp.createAndAddAdobePDFSchema(); - pdf.setProducer(fullProducer); - if (ensurePDFisUpgraded) { - try { - pdfaid.setConformance(conformanceLevel.getLetter());// $NON-NLS-1$ //$NON-NLS-1$ - } catch (BadFieldValueException ex) { - // This should be impossible, because it would occur only if an illegal - // conformance level is supplied, - // however the enum enforces that the conformance level is valid. - throw new Error(ex); - } - - pdfaid.setPart(3); - } - addXMP(xmp); /* - * this is the only line where we do something Zugferd-specific, i.e. add PDF - * metadata specifically for Zugferd, not generically for a embedded file - */ - - - try { - metadata.importXMPMetadata(serializeXmpMetadata(xmp)); - - } catch (TransformerException e) { - throw new ZUGFeRDExportException("Could not export XmpMetadata", e); - } - documentPrepared = true; - } - - /** - * @return if pdf file will be automatically closed after adding ZF - */ - public boolean isAutoCloseDisabled() { - return disableAutoClose; - } - - /** - * @param disableAutoClose prevent PDF file from being closed after adding ZF - */ - public void disableAutoClose(boolean disableAutoClose) { - this.disableAutoClose = disableAutoClose; - } - - /** - * the human author (use factory method instead) - * - * @param creator the (human) name who created the PDF - */ - @Deprecated - public void setCreator(String creator) { - this.creator = creator; - } - - /** - * the CreatorTool attribute for the PDF - * - * @param creatorTool the application which created the PDF - */ - protected void setCreatorTool(String creatorTool) { - this.creatorTool = creatorTool; - } - - /** - * the authoring software (use factory method instead) - * - * @param producer the authoring software - */ - @Deprecated - public void setProducer(String producer) { - this.producer = producer; - } - - /** - * @param ensurePDFisUpgraded if not set the PDF/A won't be relabelled A/3, e.g. if it already is one - */ - public void setPDFA3(boolean ensurePDFisUpgraded) { - this.ensurePDFisUpgraded = ensurePDFisUpgraded; - } - - /** - * @param attachZUGFeRDHeaders if false the ZUGFeRD XMP metadata won't be added, e.g. if it's not the first file - */ - public void setAttachZUGFeRDHeaders(boolean attachZUGFeRDHeaders) { - this.attachZUGFeRDHeaders = attachZUGFeRDHeaders; - } - - /** - * encapsulate the deprecated setters - * @param zfVersion 1 or 2 - * @param zugferdConformanceLevel BASIC, COMFORT, EN16931, etc. - * @param creator PDF creator - * @param producer PDF producer - */ - public void configure(int zfVersion, ZUGFeRDConformanceLevel zugferdConformanceLevel, String creator, String producer) { - setZUGFeRDVersion(zfVersion); - setZUGFeRDConformanceLevel(zugferdConformanceLevel); - setCreator(creator); - setProducer(producer); - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA1Factory.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA1Factory.java deleted file mode 100644 index 7e61b8c3..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA1Factory.java +++ /dev/null @@ -1,28 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - - -public class ZUGFeRDExporterFromA1Factory extends ZUGFeRDExporterFromA3Factory implements IExporterFactory { - public ZUGFeRDExporterFromA1Factory() { - ensurePDFisUpgraded = true; - - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3Factory.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3Factory.java deleted file mode 100644 index 483f174f..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDExporterFromA3Factory.java +++ /dev/null @@ -1,208 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import org.apache.pdfbox.io.IOUtils; -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.preflight.PreflightDocument; -import org.apache.pdfbox.preflight.exception.ValidationException; -import org.apache.pdfbox.preflight.parser.PreflightParser; -import org.apache.pdfbox.preflight.utils.ByteArrayDataSource; - -import javax.activation.DataSource; -import javax.activation.FileDataSource; -import java.io.*; -import java.util.HashMap; - -public class ZUGFeRDExporterFromA3Factory implements IExporterFactory { - protected boolean ignorePDFAErrors = false; - protected ZUGFeRDConformanceLevel zugferdConformanceLevel = ZUGFeRDConformanceLevel.EXTENDED; - protected PDFAConformanceLevel conformanceLevel = PDFAConformanceLevel.UNICODE; - /** - * Producer (attribute for PDF - */ - protected String producer = "mustangproject"; - /** - * Human creator (attribute for PDF) - */ - protected String creator = "mustangproject"; - /** - * Creator tool (attribute for PDF) - */ - protected String creatorTool = null; - - private HashMap<String, byte[]> additionalXMLs = new HashMap<String, byte[]>(); - - - protected int ZFVersion = ZUGFeRDExporter.DefaultZUGFeRDVersion; - protected boolean ensurePDFisUpgraded = false; - private boolean attachZUGFeRDHeaders = true; - - /** - * Makes A PDF/A3a-compliant document from a PDF-A1 compliant document (on the - * metadata level, this will not e.g. convert graphics to JPG-2000) - * - * @param pdfFilename filename of an PDF/A1 compliant document - */ - public ZUGFeRDExporter load(String pdfFilename) throws IOException { - - ensurePDFIsValidPDFA(new FileDataSource(pdfFilename)); - try (FileInputStream pdf = new FileInputStream(pdfFilename)) { - return load(readAllBytes(pdf)); - } - } - - - /** - * Makes A PDF/A3a-compliant document from a PDF-A1 compliant document (on the - * metadata level, this will not e.g. convert graphics to JPG-2000) - * - * @param pdfBinary binary of a PDF/A1 compliant document - */ - public ZUGFeRDExporter load(byte[] pdfBinary) throws IOException { - ensurePDFIsValidPDFA(new ByteArrayDataSource(new ByteArrayInputStream(pdfBinary))); - PDDocument doc = PDDocument.load(pdfBinary); - ZUGFeRDExporter zugFeRDExporter = new ZUGFeRDExporter(doc); - zugFeRDExporter.configure(ZFVersion, zugferdConformanceLevel, creator, producer); - zugFeRDExporter.setAttachZUGFeRDHeaders(attachZUGFeRDHeaders); - zugFeRDExporter.setPDFA3(ensurePDFisUpgraded); - - return zugFeRDExporter; - } - - public ZUGFeRDExporterFromA3Factory() { - - ensurePDFisUpgraded = false; - } - - /** - * Makes A PDF/A3a-compliant document from a PDF-A1 compliant document (on the - * metadata level, this will not e.g. convert graphics to JPG-2000) - * - * @param pdfSource source to read a PDF/A1 compliant document from - */ - public ZUGFeRDExporter load(InputStream pdfSource) throws IOException { - return load(readAllBytes(pdfSource)); - } - - private void ensurePDFIsValidPDFA(final DataSource dataSource) throws IOException { - if (!ignorePDFAErrors && !isValidA1(dataSource)) { - throw new IOException("File is not a valid PDF/A input file"); - } - } - - private static byte[] readAllBytes(InputStream in) throws IOException { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - IOUtils.copy(in, buffer); - return buffer.toByteArray(); - } - - private static boolean isValidA1(DataSource dataSource) throws IOException { - return getPDFAParserValidationResult(new PreflightParser(dataSource)); - } - - /** - * Sets the ZUGFeRD conformance level (override). - * - * @param zugferdConformanceLevel the new conformance level - */ - public IExporterFactory setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel zugferdConformanceLevel) { - this.zugferdConformanceLevel = zugferdConformanceLevel; - return this; - } - - private static boolean getPDFAParserValidationResult(PreflightParser parser) throws IOException { - /* - * Parse the PDF file with PreflightParser that inherits from the - * NonSequentialParser. Some additional controls are present to check a set of - * PDF/A requirements. (Stream length consistency, EOL after some Keyword...) - */ - parser.parse();// might add a Format.PDF_A1A as parameter and iterate through A1 and A3 - - try (PreflightDocument document = parser.getPreflightDocument()) { - /* - * Once the syntax validation is done, the parser can provide a - * PreflightDocument (that inherits from PDDocument) This document process the - * end of PDF/A validation. - */ - - document.validate(); - - // Get validation result - return document.getResult().isValid(); - } catch (ValidationException e) { - /* - * the parse method can throw a SyntaxValidationException if the PDF file can't - * be parsed. In this case, the exception contains an instance of - * ValidationResult - */ - return false; - } - } - - /** - * All files are PDF/A-3, setConformance refers to the level conformance. - * <p> - * PDF/A-3 has three coformance levels, called "A", "U" and "B". - * <p> - * PDF/A-3-B where B means only visually preservable, U -standard for Mustang- - * means visually and unicode preservable and A means full compliance, i.e. - * visually, unicode and structurally preservable and tagged PDF, i.e. useful - * metainformation for blind people. - * <p> - * Feel free to pass "A" as new level if you know what you are doing :-) - */ - public IExporterFactory setConformanceLevel(PDFAConformanceLevel newLevel) { - conformanceLevel = newLevel; - return this; - } - - public IExporterFactory ignorePDFAErrors() { - this.ignorePDFAErrors = true; - return this; - } - - - public IExporterFactory setCreator(String creator) { - this.creator = creator; - return this; - } - - public IExporterFactory setCreatorTool(String creatorTool) { - this.creatorTool = creatorTool; - return this; - } - - public IExporterFactory setProducer(String producer) { - this.producer = producer; - return this; - } - - public IExporterFactory setAttachZUGFeRDHeaders(boolean attachHeaders) { - this.attachZUGFeRDHeaders = attachHeaders; - return this; - } - - - @Override - public IExporterFactory setZUGFeRDVersion(int version) { - this.ZFVersion = version; - return this; - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java deleted file mode 100644 index 2179cfe7..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporter.java +++ /dev/null @@ -1,452 +0,0 @@ -/** - * ********************************************************************** Copyright 2018 Jochen Staerk Use is subject to license terms. Licensed under the - * Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ -package org.mustangproject.ZUGFeRD; -/** - * Mustangproject's ZUGFeRD implementation ZUGFeRD importer Licensed under the APLv2 - * - * @date 2014-07-07 - * @version 1.1.0 - * @author jstaerk - */ - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Scanner; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; - -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.PDDocumentNameDictionary; -import org.apache.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode; -import org.apache.pdfbox.pdmodel.common.PDNameTreeNode; -import org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification; -import org.apache.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -public class ZUGFeRDImporter { - - /** - * if metadata has been found - */ - private boolean containsMeta = false; - /** - * map filenames of additional XML files to their contents - */ - private HashMap<String, byte[]> additionalXMLs = new HashMap<>(); - /** - * Raw XML form of the extracted data - may be directly obtained. - */ - private byte[] rawXML = null; - /** - * XMP metadata - */ - private String xmpString = null; // XMP metadata - /** - * parsed Document - */ - private Document document; - - - public ZUGFeRDImporter(String pdfFilename) { - try (InputStream bis = Files.newInputStream(Paths.get(pdfFilename), StandardOpenOption.READ)) { - extractLowLevel(bis); - } catch (IOException e) { - Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); - throw new ZUGFeRDExportException(e); - } - } - - - public ZUGFeRDImporter(InputStream pdfStream) { - try { - extractLowLevel(pdfStream); - } catch (IOException e) { - Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); - throw new ZUGFeRDExportException(e); - } - } - - - /** - * Extracts a ZUGFeRD invoice from a PDF document represented by an input stream. Errors are reported via exception handling. - * - * @param pdfStream a inputstream of a pdf file - */ - private void extractLowLevel(InputStream pdfStream) throws IOException { - try (PDDocument doc = PDDocument.load(pdfStream)) { - // PDDocumentInformation info = doc.getDocumentInformation(); - PDDocumentNameDictionary names = new PDDocumentNameDictionary(doc.getDocumentCatalog()); - //start - - if (doc.getDocumentCatalog() == null || doc.getDocumentCatalog().getMetadata() == null) { - Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.INFO, "no-xmlpart"); - return; - } - - InputStream XMP = doc.getDocumentCatalog().getMetadata().exportXMPMetadata(); - xmpString = convertStreamToString(XMP); - - PDEmbeddedFilesNameTreeNode etn = names.getEmbeddedFiles(); - if (etn == null) { - return; - } - - Map<String, PDComplexFileSpecification> efMap = etn.getNames(); - // String filePath = "/tmp/"; - - if (efMap != null) { - extractFiles(efMap); // see - // https://memorynotfound.com/apache-pdfbox-extract-embedded-file-pdf-document/ - } else { - - List<PDNameTreeNode<PDComplexFileSpecification>> kids = etn.getKids(); - for (PDNameTreeNode<PDComplexFileSpecification> node : kids) { - Map<String, PDComplexFileSpecification> namesL = node.getNames(); - extractFiles(namesL); - } - } - } - } - - - private void extractFiles(Map<String, PDComplexFileSpecification> names) throws IOException { - for (String alias : names.keySet()) { - - PDComplexFileSpecification fileSpec = names.get(alias); - String filename = fileSpec.getFilename(); - /** - * filenames for invoice data (ZUGFeRD v1 and v2, Factur-X) - */ - if ((filename.equals("ZUGFeRD-invoice.xml") || (filename.equals("zugferd-invoice.xml")) || filename.equals("factur-x.xml"))) { //$NON-NLS-1$ - containsMeta = true; - - PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile(); - // String embeddedFilename = filePath + filename; - // File file = new File(filePath + filename); - // System.out.println("Writing " + embeddedFilename); - // ByteArrayOutputStream fileBytes=new - // ByteArrayOutputStream(); - // FileOutputStream fos = new FileOutputStream(file); - - setRawXML(embeddedFile.toByteArray()); - - // fos.write(embeddedFile.getByteArray()); - // fos.close(); - } - if (filename.startsWith("additional_data")) { - PDEmbeddedFile embeddedFile = fileSpec.getEmbeddedFile(); - additionalXMLs.put(filename, embeddedFile.toByteArray()); - } - } - } - - - private Document getDocument() { - return document; - } - - - private void setDocument() throws ParserConfigurationException, IOException, SAXException { - DocumentBuilderFactory xmlFact = DocumentBuilderFactory.newInstance(); - xmlFact.setNamespaceAware(false); - DocumentBuilder builder = xmlFact.newDocumentBuilder(); - ByteArrayInputStream is = new ByteArrayInputStream(rawXML); - is.skip(guessBOMSize(is)); - document = builder.parse(is); - } - - - public void setRawXML(byte[] rawXML) throws IOException { - this.rawXML = rawXML; - try { - setDocument(); - } catch (ParserConfigurationException | SAXException e) { - Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); - throw new ZUGFeRDExportException(e); - } - } - - - /** - * Skips over a BOM at the beginning of the given ByteArrayInputStream, if one exists. - * - * @param is the ByteArrayInputStream used - * @throws IOException if can not be read from is - * @see <a href="https://www.w3.org/TR/xml/#sec-guessing">Autodetection of Character Encodings</a> - */ - private int guessBOMSize(ByteArrayInputStream is) throws IOException { - byte[] pad = new byte[4]; - is.read(pad); - is.reset(); - int test2 = ((pad[0] & 0xFF) << 8) | (pad[1] & 0xFF); - int test3 = ((test2 & 0xFFFF) << 8) | (pad[2] & 0xFF); - int test4 = ((test3 & 0xFFFFFF) << 8) | (pad[3] & 0xFF); - // - if (test4 == 0x0000FEFF || test4 == 0xFFFE0000 || test4 == 0x0000FFFE || test4 == 0xFEFF0000) { - // UCS-4: BOM takes 4 bytes - return 4; - } else if (test3 == 0xEFBBFF) { - // UTF-8: BOM takes 3 bytes - return 3; - } else if (test2 == 0xFEFF || test2 == 0xFFFE) { - // UTF-16: BOM takes 2 bytes - return 2; - } - return 0; - } - - - private String extractString(String xpathStr) { - if (!containsMeta) { - throw new ZUGFeRDExportException("No suitable data/ZUGFeRD file could be found."); - } - String result; - try { - Document document = getDocument(); - XPathFactory xpathFact = XPathFactory.newInstance(); - XPath xpath = xpathFact.newXPath(); - result = xpath.evaluate(xpathStr, document); - } catch (XPathExpressionException e) { - Logger.getLogger(ZUGFeRDImporter.class.getName()).log(Level.SEVERE, null, e); - throw new ZUGFeRDExportException(e); - } - return result; - } - - - /** - * @return the reference (purpose) the sender specified for this invoice - */ - public String getForeignReference() { - String result = extractString("//ApplicableHeaderTradeSettlement/PaymentReference"); - if (result == null || result.isEmpty()) { - result = extractString("//ApplicableSupplyChainTradeSettlement/PaymentReference"); - } - return result; - } - - - /** - * @return the document code - */ - public String getDocumentCode() { - return extractString("//HeaderExchangedDocument/TypeCode"); - } - - - /** - * @return the referred document - */ - public String getReference() { - return extractString("//ApplicableHeaderTradeAgreement/BuyerReference"); - } - - - /** - * @return the sender's bank's BLZ code - * @deprecated use BIC and IBAN instead of BLZ and KTO - */ - @Deprecated - public String getBLZ() { - return extractString("//PayeeSpecifiedCreditorFinancialInstitution/GermanBankleitzahlID"); - } - - - /** - * @return the sender's account number - * @deprecated use BIC and IBAN instead of BLZ and KTO - */ - @Deprecated - public String getKTO() { - return extractString("//PayeePartyCreditorFinancialAccount/ProprietaryID"); - } - - - /** - * @return the sender's bank's BIC code - */ - public String getBIC() { - return extractString("//PayeeSpecifiedCreditorFinancialInstitution/BICID"); - } - - - /** - * @return the sender's bank name - */ - public String getBankName() { - return extractString("//PayeeSpecifiedCreditorFinancialInstitution/Name"); - } - - - /** - * @return the sender's account IBAN code - */ - public String getIBAN() { - return extractString("//PayeePartyCreditorFinancialAccount/IBANID"); - } - - - public String getHolder() { - return extractString("//SellerTradeParty/Name"); - } - - - /** - * @return the total payable amount - */ - public String getAmount() { - String result = extractString("//SpecifiedTradeSettlementHeaderMonetarySummation/DuePayableAmount"); - if (result == null || result.isEmpty()) { - result = extractString("//SpecifiedTradeSettlementMonetarySummation/GrandTotalAmount"); - } - return result; - } - - - /** - * @return when the payment is due - */ - public String getDueDate() { - return extractString("//SpecifiedTradePaymentTerms/DueDateDateTime/DateTimeString"); - } - - - public HashMap<String, byte[]> getAdditionalData() { - return additionalXMLs; - } - - - /** - * get xmp metadata of the PDF, null if not available - * - * @return string - */ - public String getXMP() { - return xmpString; - } - - - /** - * @return if export found parseable ZUGFeRD data - */ - public boolean containsMeta() { - return containsMeta; - } - - - /** - * @param meta raw XML to be set - * @throws IOException if raw can not be set - */ - public void setMeta(String meta) throws IOException { - setRawXML(meta.getBytes()); - } - - - /** - * @return raw XML of the invoice - */ - public String getMeta() { - if (rawXML == null) { - return null; - } - - return new String(rawXML); - } - - - public int getVersion() throws Exception { - if (!containsMeta) { - throw new Exception("Not yet parsed"); - } - if (getUTF8().contains("<rsm:CrossIndustryDocument")) { - return 1; - } else if (getUTF8().contains("<rsm:CrossIndustryInvoice")) { - return 2; - } - throw new Exception("ZUGFeRD version could not be determined"); - } - - - /** - * @return return UTF8 XML (without BOM) of the invoice - */ - public String getUTF8() { - if (rawXML == null) { - return null; - } - if (rawXML.length < 3) { - return new String(rawXML); - } - - - byte[] bomlessData; - - if ((rawXML[0] == (byte) 0xEF) - && (rawXML[1] == (byte) 0xBB) - && (rawXML[2] == (byte) 0xBF)) { - // I don't like BOMs, lets remove it - bomlessData = new byte[rawXML.length - 3]; - System.arraycopy(rawXML, 3, bomlessData, 0, - rawXML.length - 3); - } else { - bomlessData = rawXML; - } - - return new String(bomlessData); - } - - - /** - * Returns the raw XML data as extracted from the ZUGFeRD PDF file. - * - * @return the raw ZUGFeRD XML data - */ - public byte[] getRawXML() { - return rawXML; - } - - - /** - * will return true if the metadata (just extract-ed or set with setMeta) contains ZUGFeRD XML - * - * @return true if the invoice contains ZUGFeRD XML - */ - public boolean canParse() { - - // SpecifiedExchangedDocumentContext is in the schema, so a relatively good - // indication if zugferd is present - better than just invoice - String meta = getMeta(); - return (meta != null) && (meta.length() > 0) && ((meta.contains("SpecifiedExchangedDocumentContext") //$NON-NLS-1$ - /* ZF1 */ || meta.contains("ExchangedDocumentContext") /* ZF2 */)); - } - - - static String convertStreamToString(java.io.InputStream is) { - // source https://stackoverflow.com/questions/309424/how-do-i-read-convert-an-inputstream-into-a-string-in-java referring to - // https://community.oracle.com/blogs/pat/2004/10/23/stupid-scanner-tricks - Scanner s = new Scanner(is, "UTF-8").useDelimiter("\\A"); - return s.hasNext() ? s.next() : ""; - } - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporterException.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporterException.java deleted file mode 100644 index a1ea969f..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDImporterException.java +++ /dev/null @@ -1,23 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 ak on 09.04.19. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public class ZUGFeRDImporterException extends RuntimeException { - -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDMigrator.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDMigrator.java deleted file mode 100644 index 83d67468..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDMigrator.java +++ /dev/null @@ -1,101 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import javax.xml.transform.*; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; -import java.io.*; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class ZUGFeRDMigrator { - - static final ClassLoader CLASS_LOADER = ZUGFeRDMigrator.class.getClassLoader(); - private static final String RESOURCE_PATH = ""; //$NON-NLS-1$ - private static final Logger LOG = Logger.getLogger(ZUGFeRDMigrator.class.getName()); - // private static File createTempFileResult(final Transformer transformer, final StreamSource toTransform, -// final String suffix) throws TransformerException, IOException { -// File result = File.createTempFile("ZUV_", suffix); //$NON-NLS-1$ -// result.deleteOnExit(); -// -// try (FileOutputStream fos = new FileOutputStream(result)) { -// transformer.transform(toTransform, new StreamResult(fos)); -// } -// return result; -// } - private TransformerFactory mFactory = null; - private Templates mXsltTemplate = null; - - public ZUGFeRDMigrator() { - mFactory = new net.sf.saxon.TransformerFactoryImpl(); - //fact = TransformerFactory.newInstance(); - mFactory.setURIResolver(new ClasspathResourceURIResolver()); - try { - mXsltTemplate = mFactory.newTemplates(new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "COMFORTtoEN16931.xsl"))); - } catch (TransformerConfigurationException ex) { - LOG.log(Level.SEVERE, null, ex); - } - } - - public String migrateFromV1ToV2(String xmlFilename) throws FileNotFoundException, TransformerException, UnsupportedEncodingException { - /** - * * - * http://www.unece.org/fileadmin/DAM/cefact/xml/XML-Naming-And-Design-Rules-V2_1.pdf - * http://www.ferd-net.de/upload/Dokumente/FACTUR-X_ZUGFeRD_2p0_Teil1_Profil_EN16931_1p03.pdf - * http://countwordsfree.com/xmlviewer - */ - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - applySchematronXsl(new FileInputStream(xmlFilename), baos); - - String res = null; - res = baos.toString("UTF-8"); - - //migrate the profiles - - res=res.replace("urn:ferd:CrossIndustryDocument:invoice:1p0:basic", "urn:cen.eu:en16931:2017#compliant#urn:zugferd.de:2p0:basic"); - res=res.replace("urn:ferd:CrossIndustryDocument:invoice:1p0:comfort", "urn:cen.eu:en16931:2017"); - res=res.replace("urn:ferd:CrossIndustryDocument:invoice:1p0:extended", "urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended"); - - //somehow the XML parser seems to insert erreneous XML namespaces, depending on which one it is, saxon seems to be cleaner. - //nevertheless, remove them manually - res=res.replace("<rsm:ExchangedDocument xmlns:qdt=\"urn:un:unece:uncefact:data:standard:QualifiedDataType:100\">", "<rsm:ExchangedDocument>"); - res=res.replace("<rsm:SupplyChainTradeTransaction xmlns:qdt=\"urn:un:unece:uncefact:data:standard:QualifiedDataType:100\">", "<rsm:SupplyChainTradeTransaction>"); - - - return res; - } - - public void applySchematronXsl(final InputStream xmlFile, - final OutputStream EN16931Outstream) throws TransformerException { - Transformer transformer = mXsltTemplate.newTransformer(); - transformer.transform(new StreamSource(xmlFile), new StreamResult(EN16931Outstream)); - } - - private static class ClasspathResourceURIResolver implements URIResolver { - ClasspathResourceURIResolver() { - // Do nothing, just prevents synthetic access warning. - } - - @Override - public Source resolve(String href, String base) throws TransformerException { - return new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + href)); - } - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java deleted file mode 100644 index b89f17de..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverter.java +++ /dev/null @@ -1,1263 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; -import java.math.RoundingMode; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; - -import javax.xml.bind.JAXBElement; - -import org.mustangproject.ZUGFeRD.model.AmountType; -import org.mustangproject.ZUGFeRD.model.CodeType; -import org.mustangproject.ZUGFeRD.model.CountryIDType; -import org.mustangproject.ZUGFeRD.model.CreditorFinancialAccountType; -import org.mustangproject.ZUGFeRD.model.CreditorFinancialInstitutionType; -import org.mustangproject.ZUGFeRD.model.CrossIndustryDocumentType; -import org.mustangproject.ZUGFeRD.model.DateTimeType; -import org.mustangproject.ZUGFeRD.model.DateTimeTypeConstants; -import org.mustangproject.ZUGFeRD.model.DocumentCodeType; -import org.mustangproject.ZUGFeRD.model.DocumentContextParameterType; -import org.mustangproject.ZUGFeRD.model.DocumentLineDocumentType; -import org.mustangproject.ZUGFeRD.model.ExchangedDocumentContextType; -import org.mustangproject.ZUGFeRD.model.ExchangedDocumentType; -import org.mustangproject.ZUGFeRD.model.IDType; -import org.mustangproject.ZUGFeRD.model.IndicatorType; -import org.mustangproject.ZUGFeRD.model.LogisticsServiceChargeType; -import org.mustangproject.ZUGFeRD.model.MeasureType; -import org.mustangproject.ZUGFeRD.model.NoteType; -import org.mustangproject.ZUGFeRD.model.NoteTypeConstants; -import org.mustangproject.ZUGFeRD.model.ObjectFactory; -import org.mustangproject.ZUGFeRD.model.PaymentMeansCodeType; -import org.mustangproject.ZUGFeRD.model.PaymentMeansCodeTypeConstants; -import org.mustangproject.ZUGFeRD.model.PercentType; -import org.mustangproject.ZUGFeRD.model.QuantityType; -import org.mustangproject.ZUGFeRD.model.ReferencedDocumentType; -import org.mustangproject.ZUGFeRD.model.SupplyChainEventType; -import org.mustangproject.ZUGFeRD.model.SupplyChainTradeAgreementType; -import org.mustangproject.ZUGFeRD.model.SupplyChainTradeDeliveryType; -import org.mustangproject.ZUGFeRD.model.SupplyChainTradeLineItemType; -import org.mustangproject.ZUGFeRD.model.SupplyChainTradeSettlementType; -import org.mustangproject.ZUGFeRD.model.SupplyChainTradeTransactionType; -import org.mustangproject.ZUGFeRD.model.TaxCategoryCodeType; -import org.mustangproject.ZUGFeRD.model.TaxRegistrationType; -import org.mustangproject.ZUGFeRD.model.TaxRegistrationTypeConstants; -import org.mustangproject.ZUGFeRD.model.TaxTypeCodeType; -import org.mustangproject.ZUGFeRD.model.TaxTypeCodeTypeConstants; -import org.mustangproject.ZUGFeRD.model.TextType; -import org.mustangproject.ZUGFeRD.model.TradeAddressType; -import org.mustangproject.ZUGFeRD.model.TradeAllowanceChargeType; -import org.mustangproject.ZUGFeRD.model.TradePartyType; -import org.mustangproject.ZUGFeRD.model.TradePaymentDiscountTermsType; -import org.mustangproject.ZUGFeRD.model.TradePaymentTermsType; -import org.mustangproject.ZUGFeRD.model.TradePriceType; -import org.mustangproject.ZUGFeRD.model.TradeProductType; -import org.mustangproject.ZUGFeRD.model.TradeSettlementMonetarySummationType; -import org.mustangproject.ZUGFeRD.model.TradeSettlementPaymentMeansType; -import org.mustangproject.ZUGFeRD.model.TradeTaxType; - -class ZUGFeRDTransactionModelConverter { - private static final SimpleDateFormat zugferdDateFormat = new SimpleDateFormat("yyyyMMdd"); - private static final ObjectFactory xmlFactory = new ObjectFactory(); - - private final IZUGFeRDExportableTransaction trans; - private final Totals totals; - private boolean isTest; - private String currency = "EUR"; - private String profile; - - - ZUGFeRDTransactionModelConverter(IZUGFeRDExportableTransaction trans) { - this.trans = trans; - totals = new Totals(); - currency = trans.getCurrency() != null ? trans.getCurrency() : currency; - } - - - JAXBElement<CrossIndustryDocumentType> convertToModel() { - CrossIndustryDocumentType invoice = xmlFactory - .createCrossIndustryDocumentType(); - - invoice.setSpecifiedExchangedDocumentContext(getDocumentContext()); - invoice.setHeaderExchangedDocument(getDocument()); - invoice.setSpecifiedSupplyChainTradeTransaction(getTradeTransaction()); - - return xmlFactory - .createCrossIndustryDocument(invoice); - } - - - private ExchangedDocumentContextType getDocumentContext() { - - ExchangedDocumentContextType context = xmlFactory - .createExchangedDocumentContextType(); - DocumentContextParameterType contextParameter = xmlFactory - .createDocumentContextParameterType(); - IDType idType = xmlFactory.createIDType(); - idType.setValue(profile); - contextParameter.setID(idType); - context.getGuidelineSpecifiedDocumentContextParameter().add( - contextParameter); - - IndicatorType testIndicator = xmlFactory.createIndicatorType(); - testIndicator.setIndicator(isTest); - context.setTestIndicator(testIndicator); - - return context; - } - - - private ExchangedDocumentType getDocument() { - - ExchangedDocumentType document = xmlFactory - .createExchangedDocumentType(); - - IDType id = xmlFactory.createIDType(); - id.setValue(trans.getNumber()); - document.setID(id); - - DateTimeType issueDateTime = xmlFactory.createDateTimeType(); - DateTimeType.DateTimeString issueDateTimeString = xmlFactory - .createDateTimeTypeDateTimeString(); - issueDateTimeString.setFormat(DateTimeTypeConstants.DATE); - issueDateTimeString.setValue(zugferdDateFormat.format(trans - .getIssueDate())); - issueDateTime.setDateTimeString(issueDateTimeString); - document.setIssueDateTime(issueDateTime); - - DocumentCodeType documentCodeType = xmlFactory.createDocumentCodeType(); - documentCodeType.setValue(trans.getDocumentCode()); - document.setTypeCode(documentCodeType); - - TextType name = xmlFactory.createTextType(); - name.setValue(trans.getDocumentName()); - document.getName().add(name); - - if (trans.getOwnOrganisationFullPlaintextInfo() != null) { - NoteType regularInfo = xmlFactory.createNoteType(); - CodeType regularInfoSubjectCode = xmlFactory.createCodeType(); - regularInfoSubjectCode.setValue(NoteTypeConstants.REGULARINFO); - regularInfo.setSubjectCode(regularInfoSubjectCode); - TextType regularInfoContent = xmlFactory.createTextType(); - regularInfoContent.setValue(trans - .getOwnOrganisationFullPlaintextInfo()); - regularInfo.getContent().add(regularInfoContent); - document.getIncludedNote().add(regularInfo); - } - - if (trans.getReferenceNumber() != null && !"".equals(trans.getReferenceNumber())) { - NoteType referenceInfo = xmlFactory.createNoteType(); - TextType referenceInfoContent = xmlFactory.createTextType(); - referenceInfoContent.setValue(trans.getReferenceNumber()); - referenceInfo.getContent().add(referenceInfoContent); - document.getIncludedNote().add(referenceInfo); - } - - return document; - } - - - private SupplyChainTradeTransactionType getTradeTransaction() { - - SupplyChainTradeTransactionType transaction = xmlFactory - .createSupplyChainTradeTransactionType(); - transaction.getApplicableSupplyChainTradeAgreement().add( - getTradeAgreement()); - transaction.setApplicableSupplyChainTradeDelivery(getTradeDelivery()); - transaction.setApplicableSupplyChainTradeSettlement(getTradeSettlement()); - transaction.getIncludedSupplyChainTradeLineItem().addAll( - getLineItems()); - - return transaction; - } - - - private SupplyChainTradeAgreementType getTradeAgreement() { - - SupplyChainTradeAgreementType tradeAgreement = xmlFactory - .createSupplyChainTradeAgreementType(); - - tradeAgreement.setBuyerTradeParty(getBuyer()); - tradeAgreement.setSellerTradeParty(getSeller()); - - if (trans.getBuyerOrderReferencedDocumentID() != null) { - ReferencedDocumentType refdoc = xmlFactory.createReferencedDocumentType(); - IDType id = xmlFactory.createIDType(); - id.setValue(trans.getBuyerOrderReferencedDocumentID()); - refdoc.getID().add(id); - - if (trans.getBuyerOrderReferencedDocumentIssueDateTime() != null) { - refdoc.setIssueDateTime(trans.getBuyerOrderReferencedDocumentIssueDateTime()); - } - - tradeAgreement.getBuyerOrderReferencedDocument().add(refdoc); - } - - return tradeAgreement; - } - - - private TradePartyType getBuyer() { - - TradePartyType buyerTradeParty = xmlFactory.createTradePartyType(); - - if (trans.getRecipient().getID() != null) { - IDType buyerID = xmlFactory.createIDType(); - buyerID.setValue(trans.getRecipient().getID()); - buyerTradeParty.getID().add(buyerID); - } - if (trans.getRecipient().getGlobalID() != null) { - IDType globalID = xmlFactory.createIDType(); - globalID.setValue(trans.getRecipient().getGlobalID()); - globalID.setSchemeID(trans.getRecipient().getGlobalIDScheme()); - buyerTradeParty.getGlobalID().add(globalID); - } - - TextType buyerName = xmlFactory.createTextType(); - buyerName.setValue(trans.getRecipient().getName()); - buyerTradeParty.setName(buyerName); - - TradeAddressType buyerAddressType = xmlFactory.createTradeAddressType(); - TextType buyerCityName = xmlFactory.createTextType(); - buyerCityName.setValue(trans.getRecipient().getLocation()); - buyerAddressType.setCityName(buyerCityName); - - CountryIDType buyerCountryId = xmlFactory.createCountryIDType(); - buyerCountryId.setValue(trans.getRecipient().getCountry()); - buyerAddressType.setCountryID(buyerCountryId); - - TextType buyerAddress = xmlFactory.createTextType(); - buyerAddress.setValue(trans.getRecipient().getStreet()); - buyerAddressType.setLineOne(buyerAddress); - - if (trans.getRecipient().getAdditionalAddress() != null) { - TextType buyerAdditionalAddress = xmlFactory.createTextType(); - buyerAdditionalAddress.setValue(trans.getRecipient().getAdditionalAddress()); - buyerAddressType.setLineTwo(buyerAdditionalAddress); - } - - CodeType buyerPostcode = xmlFactory.createCodeType(); - buyerPostcode.setValue(trans.getRecipient().getZIP()); - buyerAddressType.getPostcodeCode().add(buyerPostcode); - - buyerTradeParty.setPostalTradeAddress(buyerAddressType); - - // Ust-ID - TaxRegistrationType buyerTaxRegistration = xmlFactory - .createTaxRegistrationType(); - IDType buyerUstId = xmlFactory.createIDType(); - buyerUstId.setValue(trans.getRecipient().getVATID()); - buyerUstId.setSchemeID(TaxRegistrationTypeConstants.USTID); - buyerTaxRegistration.setID(buyerUstId); - buyerTradeParty.getSpecifiedTaxRegistration().add(buyerTaxRegistration); - - return buyerTradeParty; - } - - - private TradePartyType getSeller() { - - TradePartyType sellerTradeParty = xmlFactory.createTradePartyType(); - - if (trans.getOwnForeignOrganisationID() != null) { - IDType sellerID = xmlFactory.createIDType(); - sellerID.setValue(trans.getOwnForeignOrganisationID()); - sellerTradeParty.getID().add(sellerID); - } - - TextType sellerName = xmlFactory.createTextType(); - sellerName.setValue(trans.getOwnOrganisationName()); - sellerTradeParty.setName(sellerName); - - TradeAddressType sellerAddressType = xmlFactory - .createTradeAddressType(); - TextType sellerCityName = xmlFactory.createTextType(); - sellerCityName.setValue(trans.getOwnLocation()); - sellerAddressType.setCityName(sellerCityName); - - CountryIDType sellerCountryId = xmlFactory.createCountryIDType(); - sellerCountryId.setValue(trans.getOwnCountry()); - sellerAddressType.setCountryID(sellerCountryId); - - TextType sellerAddress = xmlFactory.createTextType(); - sellerAddress.setValue(trans.getOwnStreet()); - sellerAddressType.setLineOne(sellerAddress); - - CodeType sellerPostcode = xmlFactory.createCodeType(); - sellerPostcode.setValue(trans.getOwnZIP()); - sellerAddressType.getPostcodeCode().add(sellerPostcode); - - sellerTradeParty.setPostalTradeAddress(sellerAddressType); - - // Steuernummer - TaxRegistrationType sellerTaxRegistration = xmlFactory - .createTaxRegistrationType(); - IDType sellerTaxId = xmlFactory.createIDType(); - sellerTaxId.setValue(trans.getOwnTaxID()); - sellerTaxId.setSchemeID(TaxRegistrationTypeConstants.TAXID); - sellerTaxRegistration.setID(sellerTaxId); - sellerTradeParty.getSpecifiedTaxRegistration().add( - sellerTaxRegistration); - - // Ust-ID - sellerTaxRegistration = xmlFactory.createTaxRegistrationType(); - IDType sellerUstId = xmlFactory.createIDType(); - sellerUstId.setValue(trans.getOwnVATID()); - sellerUstId.setSchemeID(TaxRegistrationTypeConstants.USTID); - sellerTaxRegistration.setID(sellerUstId); - sellerTradeParty.getSpecifiedTaxRegistration().add( - sellerTaxRegistration); - - return sellerTradeParty; - } - - - /** - * If the ship-to party (e.g. in the case of international transactions) or, in the case of virtual goods, the recipient has to be shown separately on an - * invoice, then this is done by adding the ShipToTradeParty - */ - private TradePartyType getShipToParty() { - if (trans.getShipToOrganisationName() == null) { - return null; - } - - TradePartyType shipToParty = xmlFactory.createTradePartyType(); - - if (trans.getShipToOrganisationID() != null) { - IDType sellerID = xmlFactory.createIDType(); - sellerID.setValue(trans.getShipToOrganisationID()); - shipToParty.getID().add(sellerID); - } - - TextType shipToName = xmlFactory.createTextType(); - shipToName.setValue(trans.getShipToOrganisationName()); - shipToParty.setName(shipToName); - - if (trans.getShipToLocation() != null) { - TradeAddressType shipToAddressType = xmlFactory - .createTradeAddressType(); - TextType shipToCityName = xmlFactory.createTextType(); - shipToCityName.setValue(trans.getShipToLocation()); - shipToAddressType.setCityName(shipToCityName); - - CountryIDType shipToCountryId = xmlFactory.createCountryIDType(); - shipToCountryId.setValue(trans.getShipToCountry()); - shipToAddressType.setCountryID(shipToCountryId); - - TextType shipToAddress = xmlFactory.createTextType(); - shipToAddress.setValue(trans.getShipToStreet()); - shipToAddressType.setLineOne(shipToAddress); - - CodeType shipToPostcode = xmlFactory.createCodeType(); - shipToPostcode.setValue(trans.getShipToZIP()); - shipToAddressType.getPostcodeCode().add(shipToPostcode); - - shipToParty.setPostalTradeAddress(shipToAddressType); - } - - return shipToParty; - } - - - private SupplyChainTradeDeliveryType getTradeDelivery() { - - SupplyChainTradeDeliveryType tradeDelivery = xmlFactory - .createSupplyChainTradeDeliveryType(); - - if (getShipToParty() != null) { - tradeDelivery.setShipToTradeParty(getShipToParty()); - } - - SupplyChainEventType deliveryEvent = xmlFactory - .createSupplyChainEventType(); - DateTimeType deliveryDate = xmlFactory.createDateTimeType(); - DateTimeType.DateTimeString deliveryDateString = xmlFactory - .createDateTimeTypeDateTimeString(); - IZUGFeRDDate zfDeliveryDate = trans.getZFDeliveryDate(); - if (zfDeliveryDate != null) { - ZUGFeRDDateFormat deliveryDateFormat = zfDeliveryDate.getFormat(); - deliveryDateString.setFormat(deliveryDateFormat.getDateTimeType()); - deliveryDateString.setValue( - deliveryDateFormat.getFormatter().format(zfDeliveryDate.getDate())); - } else if (trans.getDeliveryDate() != null) { - deliveryDateString.setFormat(DateTimeTypeConstants.DATE); - deliveryDateString.setValue(zugferdDateFormat.format(trans.getDeliveryDate())); - } else { - throw new IllegalStateException("No delivery date provided"); - } - deliveryDate.setDateTimeString(deliveryDateString); - deliveryEvent.getOccurrenceDateTime().add(deliveryDate); - tradeDelivery.getActualDeliverySupplyChainEvent().add(deliveryEvent); - - return tradeDelivery; - } - - - private SupplyChainTradeSettlementType getTradeSettlement() { - SupplyChainTradeSettlementType tradeSettlement = xmlFactory - .createSupplyChainTradeSettlementType(); - - TextType paymentReference = xmlFactory.createTextType(); - paymentReference.setValue(trans.getNumber()); - tradeSettlement.getPaymentReference().add(paymentReference); - - CodeType currencyCode = xmlFactory.createCodeType(); - currencyCode.setValue(currency); - tradeSettlement.setInvoiceCurrencyCode(currencyCode); - - tradeSettlement.getSpecifiedTradeSettlementPaymentMeans().addAll( - getPaymentData()); - tradeSettlement.getApplicableTradeTax().addAll(getTradeTax()); - tradeSettlement.getSpecifiedTradePaymentTerms().addAll( - getPaymentTerms()); - if (trans.getZFAllowances() != null) { - tradeSettlement.getSpecifiedTradeAllowanceCharge().addAll( - getHeaderAllowances()); - } - if (trans.getZFLogisticsServiceCharges() != null) { - tradeSettlement.getSpecifiedLogisticsServiceCharge().addAll( - getHeaderLogisticsServiceCharges()); - } - if (trans.getZFCharges() != null) { - tradeSettlement.getSpecifiedTradeAllowanceCharge().addAll( - getHeaderCharges()); - } - - tradeSettlement.setSpecifiedTradeSettlementMonetarySummation(getMonetarySummation()); - - return tradeSettlement; - } - - - private List<TradeSettlementPaymentMeansType> getPaymentData() { - List<TradeSettlementPaymentMeansType> result = new ArrayList<>(); - for (IZUGFeRDTradeSettlementPayment settlementPayment : trans.getTradeSettlementPayment()) { - TradeSettlementPaymentMeansType paymentData = xmlFactory - .createTradeSettlementPaymentMeansType(); - PaymentMeansCodeType paymentDataType = xmlFactory - .createPaymentMeansCodeType(); - paymentDataType.setValue(PaymentMeansCodeTypeConstants.BANKACCOUNT); - paymentData.setTypeCode(paymentDataType); - - TextType paymentInfo = xmlFactory.createTextType(); - String paymentInfoText = settlementPayment.getOwnPaymentInfoText(); - if (paymentInfoText == null) { - paymentInfoText = ""; - } - paymentInfo.setValue(paymentInfoText); - paymentData.getInformation().add(paymentInfo); - - CreditorFinancialAccountType bankAccount = xmlFactory - .createCreditorFinancialAccountType(); - IDType iban = xmlFactory.createIDType(); - iban.setValue(settlementPayment.getOwnIBAN()); - bankAccount.setIBANID(iban); - IDType kto = xmlFactory.createIDType(); - kto.setValue(settlementPayment.getOwnKto()); - bankAccount.setProprietaryID(kto); - paymentData.setPayeePartyCreditorFinancialAccount(bankAccount); - - CreditorFinancialInstitutionType bankData = xmlFactory - .createCreditorFinancialInstitutionType(); - IDType bicId = xmlFactory.createIDType(); - bicId.setValue(settlementPayment.getOwnBIC()); - bankData.setBICID(bicId); - TextType bankName = xmlFactory.createTextType(); - bankName.setValue(settlementPayment.getOwnBankName()); - bankData.setName(bankName); - IDType blz = xmlFactory.createIDType(); - blz.setValue(settlementPayment.getOwnBLZ()); - bankData.setGermanBankleitzahlID(blz); - - paymentData.setPayeeSpecifiedCreditorFinancialInstitution(bankData); - result.add(paymentData); - } - return result; - } - - - private Collection<TradeTaxType> getTradeTax() { - List<TradeTaxType> tradeTaxTypes = new ArrayList<>(); - - HashMap<BigDecimal, VATAmount> VATPercentAmountMap = this.getVATPercentAmountMap(); - for (BigDecimal currentTaxPercent : VATPercentAmountMap.keySet()) { - - TradeTaxType tradeTax = xmlFactory.createTradeTaxType(); - TaxTypeCodeType taxTypeCode = xmlFactory.createTaxTypeCodeType(); - taxTypeCode.setValue(TaxTypeCodeTypeConstants.SALESTAX); - tradeTax.setTypeCode(taxTypeCode); - - TaxCategoryCodeType taxCategoryCode = xmlFactory.createTaxCategoryCodeType(); - VATAmount vatAmount = VATPercentAmountMap.get(currentTaxPercent); - taxCategoryCode.setValue(vatAmount.getCategoryCode()); - tradeTax.setCategoryCode(taxCategoryCode); - - VATAmount amount = VATPercentAmountMap.get(currentTaxPercent); - - PercentType taxPercent = xmlFactory.createPercentType(); - taxPercent.setValue(vatFormat(currentTaxPercent)); - tradeTax.setApplicablePercent(taxPercent); - - AmountType calculatedTaxAmount = xmlFactory.createAmountType(); - calculatedTaxAmount.setCurrencyID(currency); - calculatedTaxAmount.setValue(currencyFormat(amount.getCalculated())); - tradeTax.getCalculatedAmount().add(calculatedTaxAmount); - - AmountType basisTaxAmount = xmlFactory.createAmountType(); - basisTaxAmount.setCurrencyID(currency); - basisTaxAmount.setValue(currencyFormat(amount.getBasis())); - tradeTax.getBasisAmount().add(basisTaxAmount); - - tradeTaxTypes.add(tradeTax); - } - - return tradeTaxTypes; - } - - - private Collection<TradeAllowanceChargeType> getHeaderAllowances() { - List<TradeAllowanceChargeType> headerAllowances = new ArrayList<>(); - - for (IZUGFeRDAllowanceCharge iAllowance : trans.getZFAllowances()) { - - TradeAllowanceChargeType allowance = xmlFactory.createTradeAllowanceChargeType(); - IndicatorType chargeIndicator = xmlFactory.createIndicatorType(); - chargeIndicator.setIndicator(false); - allowance.setChargeIndicator(chargeIndicator); - - AmountType actualAmount = xmlFactory.createAmountType(); - actualAmount.setCurrencyID(currency); - actualAmount.setValue(currencyFormat(iAllowance.getTotalAmount())); - allowance.getActualAmount().add(actualAmount); - - TextType reason = xmlFactory.createTextType(); - reason.setValue(iAllowance.getReason()); - allowance.setReason(reason); - - TradeTaxType tradeTax = xmlFactory.createTradeTaxType(); - PercentType vatPercent = xmlFactory.createPercentType(); - vatPercent.setValue(currencyFormat(iAllowance.getTaxPercent())); - tradeTax.setApplicablePercent(vatPercent); - - /* - * Only in extended AmountType basisAmount = - * xmlFactory.createAmountType(); - * basisAmount.setCurrencyID(trans.getInvoiceCurrency()); - * basisAmount.setValue(amount.getBasis()); - * allowance.setBasisAmount(basisAmount); - */ - TaxCategoryCodeType taxType = xmlFactory.createTaxCategoryCodeType(); - taxType.setValue(iAllowance.getCategoryCode()); - tradeTax.setCategoryCode(taxType); - - TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType(); - taxCode.setValue(TaxTypeCodeTypeConstants.SALESTAX); - tradeTax.setTypeCode(taxCode); - - allowance.getCategoryTradeTax().add(tradeTax); - headerAllowances.add(allowance); - } - - return headerAllowances; - } - - - private Collection<TradeAllowanceChargeType> getHeaderCharges() { - List<TradeAllowanceChargeType> headerCharges = new ArrayList<>(); - - for (IZUGFeRDAllowanceCharge iCharge : trans.getZFCharges()) { - - TradeAllowanceChargeType charge = xmlFactory.createTradeAllowanceChargeType(); - IndicatorType chargeIndicator = xmlFactory.createIndicatorType(); - chargeIndicator.setIndicator(true); - charge.setChargeIndicator(chargeIndicator); - - AmountType actualAmount = xmlFactory.createAmountType(); - actualAmount.setCurrencyID(currency); - actualAmount.setValue(currencyFormat(iCharge.getTotalAmount())); - charge.getActualAmount().add(actualAmount); - - TextType reason = xmlFactory.createTextType(); - reason.setValue(iCharge.getReason()); - charge.setReason(reason); - - TradeTaxType tradeTax = xmlFactory.createTradeTaxType(); - PercentType vatPercent = xmlFactory.createPercentType(); - vatPercent.setValue(currencyFormat(iCharge.getTaxPercent())); - tradeTax.setApplicablePercent(vatPercent); - - /* - * Only in extended AmountType basisAmount = - * xmlFactory.createAmountType(); - * basisAmount.setCurrencyID(trans.getInvoiceCurrency()); - * basisAmount.setValue(amount.getBasis()); - * allowance.setBasisAmount(basisAmount); - */ - TaxCategoryCodeType taxType = xmlFactory.createTaxCategoryCodeType(); - taxType.setValue(iCharge.getCategoryCode()); - tradeTax.setCategoryCode(taxType); - - TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType(); - taxCode.setValue(TaxTypeCodeTypeConstants.SALESTAX); - tradeTax.setTypeCode(taxCode); - - charge.getCategoryTradeTax().add(tradeTax); - headerCharges.add(charge); - - } - - return headerCharges; - } - - - private Collection<LogisticsServiceChargeType> getHeaderLogisticsServiceCharges() { - List<LogisticsServiceChargeType> headerServiceCharge = new ArrayList<>(); - - for (IZUGFeRDAllowanceCharge iServiceCharge : trans.getZFLogisticsServiceCharges()) { - - LogisticsServiceChargeType serviceCharge = xmlFactory.createLogisticsServiceChargeType(); - - AmountType actualAmount = xmlFactory.createAmountType(); - actualAmount.setCurrencyID(currency); - actualAmount.setValue(currencyFormat(iServiceCharge.getTotalAmount())); - serviceCharge.getAppliedAmount().add(actualAmount); - - TextType reason = xmlFactory.createTextType(); - reason.setValue(iServiceCharge.getReason()); - serviceCharge.getDescription().add(reason); - - TradeTaxType tradeTax = xmlFactory.createTradeTaxType(); - - PercentType vatPercent = xmlFactory.createPercentType(); - vatPercent.setValue(currencyFormat(iServiceCharge.getTaxPercent())); - tradeTax.setApplicablePercent(vatPercent); - - /* - * Only in extended AmountType basisAmount = - * xmlFactory.createAmountType(); - * basisAmount.setCurrencyID(trans.getInvoiceCurrency()); - * basisAmount.setValue(amount.getBasis()); - * allowance.setBasisAmount(basisAmount); - */ - TaxCategoryCodeType taxType = xmlFactory.createTaxCategoryCodeType(); - taxType.setValue(iServiceCharge.getCategoryCode()); - tradeTax.setCategoryCode(taxType); - - TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType(); - taxCode.setValue(TaxTypeCodeTypeConstants.SALESTAX); - tradeTax.setTypeCode(taxCode); - - serviceCharge.getAppliedTradeTax().add(tradeTax); - headerServiceCharge.add(serviceCharge); - - } - - return headerServiceCharge; - } - - - private Collection<TradePaymentTermsType> getPaymentTerms() { - if (trans.getPaymentTerms() != null) { - return handlePaymentTermsObject(trans.getPaymentTerms()); - } - List<TradePaymentTermsType> paymentTerms = new ArrayList<>(); - - TradePaymentTermsType paymentTerm = xmlFactory - .createTradePaymentTermsType(); - DateTimeType dueDate = xmlFactory.createDateTimeType(); - DateTimeType.DateTimeString dueDateString = xmlFactory - .createDateTimeTypeDateTimeString(); - dueDateString.setFormat(DateTimeTypeConstants.DATE); - dueDateString.setValue(zugferdDateFormat.format(trans.getDueDate())); - dueDate.setDateTimeString(dueDateString); - paymentTerm.setDueDateDateTime(dueDate); - - TextType paymentTermDescr = xmlFactory.createTextType(); - - String paymentTermDescription = trans.getPaymentTermDescription(); - if (paymentTermDescription == null) { - paymentTermDescription = ""; - } - paymentTermDescr.setValue(paymentTermDescription); - paymentTerm.getDescription().add(paymentTermDescr); - - paymentTerms.add(paymentTerm); - - return paymentTerms; - } - - private Collection<TradePaymentTermsType> handlePaymentTermsObject(IZUGFeRDPaymentTerms paymentTerms) { - List<TradePaymentTermsType> xmlPaymentTerms = new ArrayList<>(); - - TradePaymentTermsType paymentTerm = xmlFactory.createTradePaymentTermsType(); - - TextType paymentTermDescr = xmlFactory.createTextType(); - - String paymentTermDescription = paymentTerms.getDescription(); - if (paymentTermDescription == null) { - paymentTermDescription = ""; - } - paymentTermDescr.setValue(paymentTermDescription); - paymentTerm.getDescription().add(paymentTermDescr); - - IZUGFeRDPaymentDiscountTerms discountTerms = paymentTerms.getDiscountTerms(); - if (paymentTerms.getDueDate() != null && discountTerms != null && discountTerms.getBaseDate() != null) { - throw new IllegalStateException( - "if paymentTerms.dueDate is specified, paymentTerms.discountTerms.baseDate has not to be specified"); - } - - if (paymentTerms.getDueDate() != null) { - DateTimeType dueDate = xmlFactory.createDateTimeType(); - DateTimeType.DateTimeString dueDateString = xmlFactory.createDateTimeTypeDateTimeString(); - dueDateString.setFormat(paymentTerms.getDueDate().getFormat().getDateTimeType()); - dueDateString.setValue( - paymentTerms.getDueDate().getFormat().getFormatter().format(paymentTerms.getDueDate().getDate())); - dueDate.setDateTimeString(dueDateString); - paymentTerm.setDueDateDateTime(dueDate); - } - - if (discountTerms != null) { - TradePaymentDiscountTermsType tradePaymentDiscountTerms = xmlFactory.createTradePaymentDiscountTermsType(); - - PercentType calculationPercent = xmlFactory.createPercentType(); - calculationPercent.setValue(discountTerms.getCalculationPercentage()); - tradePaymentDiscountTerms.setCalculationPercent(calculationPercent); - - AmountType basisAmount = xmlFactory.createAmountType(); - basisAmount.setCurrencyID(currency); - basisAmount.setValue(currencyFormat(totals.totalGrossAmount)); - tradePaymentDiscountTerms.getBasisAmount().add(basisAmount); - - if (discountTerms.getBaseDate() != null) { - DateTimeType baseDate = xmlFactory.createDateTimeType(); - DateTimeType.DateTimeString baseDateString = xmlFactory.createDateTimeTypeDateTimeString(); - baseDateString.setFormat(discountTerms.getBaseDate().getFormat().getDateTimeType()); - baseDateString.setValue(discountTerms.getBaseDate().getFormat().getFormatter() - .format(discountTerms.getBaseDate().getDate())); - baseDate.setDateTimeString(baseDateString); - tradePaymentDiscountTerms.setBasisDateTime(baseDate); - - MeasureType basisPeriodMeasure = xmlFactory.createMeasureType(); - basisPeriodMeasure.setUnitCode(discountTerms.getBasePeriodUnitCode()); - basisPeriodMeasure.setValue(new BigDecimal(discountTerms.getBasePeriodMeasure())); - tradePaymentDiscountTerms.setBasisPeriodMeasure(basisPeriodMeasure); - } - paymentTerm.getApplicableTradePaymentDiscountTerms().add(tradePaymentDiscountTerms); - } - xmlPaymentTerms.add(paymentTerm); - - return xmlPaymentTerms; - } - - - private TradeSettlementMonetarySummationType getMonetarySummation() { - TradeSettlementMonetarySummationType monetarySummation = xmlFactory - .createTradeSettlementMonetarySummationType(); - - // AllowanceTotalAmount = sum of all allowances - AmountType allowanceTotalAmount = xmlFactory.createAmountType(); - allowanceTotalAmount.setCurrencyID(currency); - if (trans.getZFAllowances() != null) { - BigDecimal totalHeaderAllowance = BigDecimal.ZERO; - for (IZUGFeRDAllowanceCharge headerAllowance : trans - .getZFAllowances()) { - totalHeaderAllowance = headerAllowance.getTotalAmount().add( - totalHeaderAllowance); - } - allowanceTotalAmount.setValue(currencyFormat(totalHeaderAllowance)); - } else { - allowanceTotalAmount.setValue(currencyFormat(BigDecimal.ZERO)); - } - monetarySummation.getAllowanceTotalAmount().add(allowanceTotalAmount); - - // ChargeTotalAmount = sum of all Logistic service charges + normal - // charges - BigDecimal totalCharge = BigDecimal.ZERO; - AmountType totalChargeAmount = xmlFactory.createAmountType(); - totalChargeAmount.setCurrencyID(currency); - if (trans.getZFLogisticsServiceCharges() != null) { - for (IZUGFeRDAllowanceCharge logisticsServiceCharge : trans - .getZFLogisticsServiceCharges()) { - totalCharge = logisticsServiceCharge.getTotalAmount().add( - totalCharge); - } - } - if (trans.getZFCharges() != null) { - for (IZUGFeRDAllowanceCharge charge : trans.getZFCharges()) { - totalCharge = charge.getTotalAmount().add(totalCharge); - } - } - - totalChargeAmount.setValue(currencyFormat(totalCharge)); - - monetarySummation.getChargeTotalAmount().add(totalChargeAmount); - - /* - * AmountType chargeTotalAmount = xmlFactory.createAmountType(); - * chargeTotalAmount.setCurrencyID(trans.getInvoiceCurrency()); - * chargeTotalAmount.setValue(currencyFormat(BigDecimal.ZERO)); - * monetarySummation.getChargeTotalAmount().add(chargeTotalAmount); - */ - - AmountType lineTotalAmount = xmlFactory.createAmountType(); - lineTotalAmount.setCurrencyID(currency); - lineTotalAmount.setValue(currencyFormat(totals.getLineTotal())); - monetarySummation.getLineTotalAmount().add(lineTotalAmount); - - AmountType taxBasisTotalAmount = xmlFactory.createAmountType(); - taxBasisTotalAmount.setCurrencyID(currency); - taxBasisTotalAmount.setValue(currencyFormat(totals.getTotalNet())); - monetarySummation.getTaxBasisTotalAmount().add(taxBasisTotalAmount); - - AmountType taxTotalAmount = xmlFactory.createAmountType(); - taxTotalAmount.setCurrencyID(currency); - taxTotalAmount.setValue(currencyFormat(totals.getTaxTotal())); - monetarySummation.getTaxTotalAmount().add(taxTotalAmount); - - AmountType grandTotalAmount = xmlFactory.createAmountType(); - grandTotalAmount.setCurrencyID(currency); - grandTotalAmount.setValue(currencyFormat(totals.getTotalGross())); - monetarySummation.getGrandTotalAmount().add(grandTotalAmount); - - AmountType totalPrepaidAmount = xmlFactory.createAmountType(); - totalPrepaidAmount.setCurrencyID(currency); - totalPrepaidAmount.setValue(currencyFormat(trans.getTotalPrepaidAmount())); - monetarySummation.getTotalPrepaidAmount().add(totalPrepaidAmount); - - AmountType duePayableAmount = xmlFactory.createAmountType(); - duePayableAmount.setCurrencyID(currency); - duePayableAmount.setValue(currencyFormat(totals.getTotalGross().subtract(trans.getTotalPrepaidAmount()))); - monetarySummation.getDuePayableAmount().add(duePayableAmount); - - return monetarySummation; - } - - - private Collection<SupplyChainTradeLineItemType> getLineItems() { - - ArrayList<SupplyChainTradeLineItemType> lineItems = new ArrayList<>(); - int lineID = 0; - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { - lineID++; - LineCalc lc = new LineCalc(currentItem); - SupplyChainTradeLineItemType lineItem = xmlFactory - .createSupplyChainTradeLineItemType(); - - DocumentLineDocumentType lineDocument = xmlFactory - .createDocumentLineDocumentType(); - IDType lineNumber = xmlFactory.createIDType(); - lineNumber.setValue(Integer.toString(lineID)); - lineDocument.setLineID(lineNumber); - lineItem.setAssociatedDocumentLineDocument(lineDocument); - - SupplyChainTradeAgreementType tradeAgreement = xmlFactory - .createSupplyChainTradeAgreementType(); - TradePriceType grossTradePrice = xmlFactory.createTradePriceType(); - QuantityType grossQuantity = xmlFactory.createQuantityType(); - grossQuantity.setUnitCode(currentItem.getProduct().getUnit()); - grossQuantity.setValue(quantityFormat(BigDecimal.ONE)); - grossTradePrice.setBasisQuantity(grossQuantity); - - AmountType grossChargeAmount = xmlFactory.createAmountType(); - grossChargeAmount.setCurrencyID(currency); - grossChargeAmount.setValue(priceFormat(currentItem.getPrice())); - grossTradePrice.getChargeAmount().add(grossChargeAmount); - tradeAgreement.getGrossPriceProductTradePrice() - .add(grossTradePrice); - - if (currentItem.getItemAllowances() != null) { - for (IZUGFeRDAllowanceCharge itemAllowance : currentItem - .getItemAllowances()) { - TradeAllowanceChargeType eItemAllowance = xmlFactory - .createTradeAllowanceChargeType(); - IndicatorType chargeIndicator = xmlFactory - .createIndicatorType(); - chargeIndicator.setIndicator(false); - eItemAllowance.setChargeIndicator(chargeIndicator); - AmountType actualAmount = xmlFactory.createAmountType(); - actualAmount.setCurrencyID(currency); - actualAmount.setValue(priceFormat(itemAllowance - .getTotalAmount().divide(currentItem.getQuantity(), - 4, BigDecimal.ROUND_HALF_UP))); - eItemAllowance.getActualAmount().add(actualAmount); - TextType reason = xmlFactory.createTextType(); - reason.setValue(itemAllowance.getReason()); - eItemAllowance.setReason(reason); - grossTradePrice.getAppliedTradeAllowanceCharge().add( - eItemAllowance); - } - } - - if (currentItem.getItemCharges() != null) { - for (IZUGFeRDAllowanceCharge itemCharge : currentItem - .getItemCharges()) { - TradeAllowanceChargeType eItemCharge = xmlFactory - .createTradeAllowanceChargeType(); - AmountType actualAmount = xmlFactory.createAmountType(); - actualAmount.setCurrencyID(currency); - actualAmount.setValue(priceFormat(itemCharge - .getTotalAmount().divide(currentItem.getQuantity(), - 4, BigDecimal.ROUND_HALF_UP))); - eItemCharge.getActualAmount().add(actualAmount); - TextType reason = xmlFactory.createTextType(); - reason.setValue(itemCharge.getReason()); - eItemCharge.setReason(reason); - IndicatorType chargeIndicator = xmlFactory - .createIndicatorType(); - chargeIndicator.setIndicator(true); - eItemCharge.setChargeIndicator(chargeIndicator); - grossTradePrice.getAppliedTradeAllowanceCharge().add( - eItemCharge); - } - } - - TradePriceType netTradePrice = xmlFactory.createTradePriceType(); - QuantityType netQuantity = xmlFactory.createQuantityType(); - netQuantity.setUnitCode(currentItem.getProduct().getUnit()); - netQuantity.setValue(quantityFormat(BigDecimal.ONE)); - netTradePrice.setBasisQuantity(netQuantity); - - AmountType netChargeAmount = xmlFactory.createAmountType(); - netChargeAmount.setCurrencyID(currency); - netChargeAmount.setValue(priceFormat(lc.getItemNetAmount())); - netTradePrice.getChargeAmount().add(netChargeAmount); - tradeAgreement.getNetPriceProductTradePrice().add(netTradePrice); - - lineItem.setSpecifiedSupplyChainTradeAgreement(tradeAgreement); - - SupplyChainTradeDeliveryType tradeDelivery = xmlFactory - .createSupplyChainTradeDeliveryType(); - QuantityType billedQuantity = xmlFactory.createQuantityType(); - billedQuantity.setUnitCode(currentItem.getProduct().getUnit()); - billedQuantity.setValue(quantityFormat(currentItem.getQuantity())); - tradeDelivery.setBilledQuantity(billedQuantity); - lineItem.setSpecifiedSupplyChainTradeDelivery(tradeDelivery); - - SupplyChainTradeSettlementType tradeSettlement = xmlFactory - .createSupplyChainTradeSettlementType(); - TradeTaxType tradeTax = xmlFactory.createTradeTaxType(); - - TaxCategoryCodeType taxCategoryCode = xmlFactory.createTaxCategoryCodeType(); - taxCategoryCode.setValue(currentItem.getCategoryCode()); - tradeTax.setCategoryCode(taxCategoryCode); - - TaxTypeCodeType taxCode = xmlFactory.createTaxTypeCodeType(); - taxCode.setValue(TaxTypeCodeTypeConstants.SALESTAX); - tradeTax.setTypeCode(taxCode); - - PercentType taxPercent = xmlFactory.createPercentType(); - taxPercent.setValue(vatFormat(currentItem.getProduct() - .getVATPercent())); - tradeTax.setApplicablePercent(taxPercent); - tradeSettlement.getApplicableTradeTax().add(tradeTax); - - TradeSettlementMonetarySummationType monetarySummation = xmlFactory - .createTradeSettlementMonetarySummationType(); - AmountType itemAmount = xmlFactory.createAmountType(); - itemAmount.setCurrencyID(currency); - itemAmount.setValue(currencyFormat(lc.getItemTotalNetAmount())); - monetarySummation.getLineTotalAmount().add(itemAmount); - tradeSettlement - .setSpecifiedTradeSettlementMonetarySummation(monetarySummation); - - lineItem.setSpecifiedSupplyChainTradeSettlement(tradeSettlement); - - TradeProductType tradeProduct = xmlFactory.createTradeProductType(); - TextType productName = xmlFactory.createTextType(); - productName.setValue(currentItem.getProduct().getName()); - tradeProduct.getName().add(productName); - - TextType productDescription = xmlFactory.createTextType(); - productDescription.setValue(currentItem.getProduct() - .getDescription()); - tradeProduct.getDescription().add(productDescription); - lineItem.setSpecifiedTradeProduct(tradeProduct); - - lineItems.add(lineItem); - } - - return lineItems; - } - - - private BigDecimal vatFormat(BigDecimal value) { - return value.setScale(2, RoundingMode.HALF_UP); - } - - - private BigDecimal currencyFormat(BigDecimal value) { - return value.setScale(2, RoundingMode.HALF_UP); - } - - - private BigDecimal priceFormat(BigDecimal value) { - return value.setScale(4, RoundingMode.HALF_UP); - } - - - private BigDecimal quantityFormat(BigDecimal value) { - return value.setScale(4, RoundingMode.HALF_UP); - } - - - /** - * which taxes have been used with which amounts in this transaction, empty for no taxes, or e.g. 19=>190 and 7=>14 if 1000 Eur were applicable to 19% VAT - * (=>190 EUR VAT) and 200 EUR were applicable to 7% (=>14 EUR VAT) 190 Eur - * - * @return HashMap<BigDecimal, VATAmount> which taxes have been used with which amounts - */ - private HashMap<BigDecimal, VATAmount> getVATPercentAmountMap() { - return getVATPercentAmountMap(false); - } - - - private HashMap<BigDecimal, VATAmount> getVATPercentAmountMap(Boolean itemOnly) { - HashMap<BigDecimal, VATAmount> hm = new HashMap<>(); - - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { - BigDecimal percent = currentItem.getProduct().getVATPercent(); - LineCalc lc = new LineCalc(currentItem); - VATAmount itemVATAmount = new VATAmount(lc.getItemTotalNetAmount(), lc.getItemTotalVATAmount(), lc.getCategoryCode()); - VATAmount current = hm.get(percent); - if (current == null) { - hm.put(percent, itemVATAmount); - } else { - hm.put(percent, current.add(itemVATAmount)); - } - } - if (itemOnly) { - return hm; - } - if (trans.getZFAllowances() != null) { - for (IZUGFeRDAllowanceCharge headerAllowance : trans.getZFAllowances()) { - BigDecimal percent = headerAllowance.getTaxPercent(); - VATAmount itemVATAmount = new VATAmount( - headerAllowance.getTotalAmount(), headerAllowance - .getTotalAmount().multiply(percent) - .divide(new BigDecimal(100)), - trans.getDocumentCode()); - VATAmount current = hm.get(percent); - if (current == null) { - hm.put(percent, itemVATAmount); - } else { - hm.put(percent, current.subtract(itemVATAmount)); - } - } - } - - if (trans.getZFLogisticsServiceCharges() != null) { - for (IZUGFeRDAllowanceCharge logisticsServiceCharge : trans - .getZFLogisticsServiceCharges()) { - BigDecimal percent = logisticsServiceCharge.getTaxPercent(); - VATAmount itemVATAmount = new VATAmount( - logisticsServiceCharge.getTotalAmount(), - logisticsServiceCharge.getTotalAmount() - .multiply(percent).divide(new BigDecimal(100)), - logisticsServiceCharge.getCategoryCode()); - VATAmount current = hm.get(percent); - if (current == null) { - hm.put(percent, itemVATAmount); - } else { - hm.put(percent, current.add(itemVATAmount)); - } - } - } - - if (trans.getZFCharges() != null) { - for (IZUGFeRDAllowanceCharge charge : trans.getZFCharges()) { - BigDecimal percent = charge.getTaxPercent(); - VATAmount itemVATAmount = new VATAmount( - charge.getTotalAmount(), charge.getTotalAmount() - .multiply(percent).divide(new BigDecimal(100)), - charge.getCategoryCode()); - VATAmount current = hm.get(percent); - if (current == null) { - hm.put(percent, itemVATAmount); - } else { - hm.put(percent, current.add(itemVATAmount)); - } - } - } - - return hm; - } - - - ZUGFeRDTransactionModelConverter withTest(boolean isTest) { - this.isTest = isTest; - return this; - } - - - public ZUGFeRDTransactionModelConverter withProfile(String profile) { - this.profile = profile; - return this; - } - - private class LineCalc { - - private BigDecimal totalGross; - private BigDecimal itemTotalNetAmount; - private BigDecimal itemTotalVATAmount; - private BigDecimal itemNetAmount; - private String categoryCode; - - - public LineCalc(IZUGFeRDExportableItem currentItem) { - BigDecimal totalAllowance = BigDecimal.ZERO; - BigDecimal totalCharge = BigDecimal.ZERO; - - if (currentItem.getItemAllowances() != null) { - for (IZUGFeRDAllowanceCharge itemAllowance : currentItem - .getItemAllowances()) { - totalAllowance = itemAllowance.getTotalAmount().add( - totalAllowance); - } - } - - if (currentItem.getItemCharges() != null) { - for (IZUGFeRDAllowanceCharge itemCharge : currentItem - .getItemCharges()) { - totalCharge = itemCharge.getTotalAmount().add(totalCharge); - } - } - - BigDecimal multiplicator = currentItem.getProduct().getVATPercent() - .divide(new BigDecimal(100), 4, BigDecimal.ROUND_HALF_UP) - .add(BigDecimal.ONE); - // priceGross=currentItem.getPrice().multiply(multiplicator); - - totalGross = currentItem.getPrice() - .multiply(currentItem.getQuantity()) - .subtract(totalAllowance).add(totalCharge) - .multiply(multiplicator); - itemTotalNetAmount = currentItem.getPrice() - .multiply(currentItem.getQuantity()) - .subtract(totalAllowance).add(totalCharge) - .setScale(2, BigDecimal.ROUND_HALF_UP); - itemTotalVATAmount = totalGross.subtract(itemTotalNetAmount); - itemNetAmount = currentItem - .getPrice() - .multiply(currentItem.getQuantity()) - .subtract(totalAllowance) - .add(totalCharge) - .divide(currentItem.getQuantity(), 4, - BigDecimal.ROUND_HALF_UP); - categoryCode = currentItem.getCategoryCode(); - } - - - public BigDecimal getItemTotalNetAmount() { - return itemTotalNetAmount; - } - - - public BigDecimal getItemTotalVATAmount() { - return itemTotalVATAmount; - } - - - public BigDecimal getItemNetAmount() { - return itemNetAmount; - } - - - public String getCategoryCode() { - return categoryCode; - } - - } - - private class Totals { - private BigDecimal totalNetAmount; - private BigDecimal totalGrossAmount; - private BigDecimal lineTotalAmount; - private BigDecimal totalTaxAmount; - - - public Totals() { - BigDecimal res = BigDecimal.ZERO; - for (IZUGFeRDExportableItem currentItem : trans.getZFItems()) { - LineCalc lc = new LineCalc(currentItem); - res = res.add(lc.getItemTotalNetAmount()); - } - // Set line total - lineTotalAmount = res; - - if (trans.getZFAllowances() != null) { - for (IZUGFeRDAllowanceCharge headerAllowance : trans - .getZFAllowances()) { - res = res.subtract(headerAllowance.getTotalAmount()); - } - } - - if (trans.getZFLogisticsServiceCharges() != null) { - for (IZUGFeRDAllowanceCharge logisticsServiceCharge : trans - .getZFLogisticsServiceCharges()) { - res = res.add(logisticsServiceCharge.getTotalAmount()); - } - } - - if (trans.getZFCharges() != null) { - for (IZUGFeRDAllowanceCharge charge : trans.getZFCharges()) { - res = res.add(charge.getTotalAmount()); - } - } - - // Set total net amount - totalNetAmount = res; - - HashMap<BigDecimal, VATAmount> vatAmountHashMap = getVATPercentAmountMap(); - for (VATAmount amount : vatAmountHashMap.values()) { - res = res.add(amount.getCalculated()); - } - - // Set total gross amount - totalGrossAmount = res; - - totalTaxAmount = totalGrossAmount - .subtract(totalNetAmount); - } - - - public BigDecimal getTotalNet() { - return totalNetAmount; - } - - - public BigDecimal getTotalGross() { - return totalGrossAmount; - } - - - public BigDecimal getLineTotal() { - return lineTotalAmount; - } - - - public BigDecimal getTaxTotal() { - return totalTaxAmount; - } - - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java b/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java deleted file mode 100644 index eb75f9dd..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/ZUGFeRDVisualizer.java +++ /dev/null @@ -1,165 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import javax.xml.transform.*; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class ZUGFeRDVisualizer { - - static final ClassLoader CLASS_LOADER = ZUGFeRDVisualizer.class.getClassLoader(); - private static final String RESOURCE_PATH = ""; //$NON-NLS-1$ - private static final Logger LOG = Logger.getLogger(ZUGFeRDVisualizer.class.getName()); - // private static File createTempFileResult(final Transformer transformer, final - // StreamSource toTransform, - // final String suffix) throws TransformerException, IOException { - // File result = File.createTempFile("ZUV_", suffix); //$NON-NLS-1$ - // result.deleteOnExit(); - // - // try (FileOutputStream fos = new FileOutputStream(result)) { - // transformer.transform(toTransform, new StreamResult(fos)); - // } - // return result; - // } - private TransformerFactory mFactory = null; - private Templates mXsltXRTemplate = null; - private Templates mXsltHTMLTemplate = null; - private Templates mXsltZF1HTMLTemplate = null; - - public ZUGFeRDVisualizer() { - mFactory = new net.sf.saxon.TransformerFactoryImpl(); - // fact = TransformerFactory.newInstance(); - mFactory.setURIResolver(new ClasspathResourceURIResolver()); - try { - mXsltXRTemplate = mFactory.newTemplates( - new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/cii-xr.xsl"))); - mXsltHTMLTemplate = mFactory.newTemplates(new StreamSource( - CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/xrechnung-html.xsl"))); - mXsltZF1HTMLTemplate = mFactory.newTemplates(new StreamSource( - CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + "stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt"))); - } catch (TransformerConfigurationException ex) { - LOG.log(Level.SEVERE, null, ex); - } - } - - public String visualize(String xmlFilename) - throws FileNotFoundException, TransformerException, UnsupportedEncodingException { - /** - * * - * http://www.unece.org/fileadmin/DAM/cefact/xml/XML-Naming-And-Design-Rules-V2_1.pdf - * http://www.ferd-net.de/upload/Dokumente/FACTUR-X_ZUGFeRD_2p0_Teil1_Profil_EN16931_1p03.pdf - * http://countwordsfree.com/xmlviewer - */ - FileInputStream fis=new FileInputStream(xmlFilename); - String fileContent=""; - try { - fileContent = new String(Files.readAllBytes(Paths.get(xmlFilename))); - } catch (IOException e2) { - LOG.log(Level.SEVERE, null, e2); - } - - ByteArrayOutputStream iaos = new ByteArrayOutputStream(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - String zf1Signature = "rsm:CrossIndustryDocument"; - if (fileContent.contains(zf1Signature)) { - applyZF1SchematronXsl(fis, baos); - - } else { - //zf2 or fx - applySchematronXsl(fis, iaos); - // take the copy of the stream and re-write it to an InputStream - PipedInputStream in = new PipedInputStream(); - PipedOutputStream out; - try { - out = new PipedOutputStream(in); - new Thread(new Runnable() { - public void run() { - try { - // write the original OutputStream to the PipedOutputStream - // note that in order for the below method to work, you need - // to ensure that the data has finished writing to the - // ByteArrayOutputStream - iaos.writeTo(out); - } catch (IOException e) { - LOG.log(Level.SEVERE, null, e); - } finally { - // close the PipedOutputStream here because we're done writing data - // once this thread has completed its run - if (out != null) { - // close the PipedOutputStream cleanly - try { - out.close(); - } catch (IOException e) { - // TODO Auto-generated catch block - LOG.log(Level.SEVERE, null, e); - } - } - } - } - }).start(); - applySchematronXsl2(in, baos); - } catch (IOException e1) { - LOG.log(Level.SEVERE, null, e1); - } - } - - return baos.toString("UTF-8"); - } - - public void applySchematronXsl(final InputStream xmlFile, final OutputStream HTMLOutstream) - throws TransformerException { - Transformer transformer = mXsltXRTemplate.newTransformer(); - - transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream)); - } - - public void applyZF1SchematronXsl(final InputStream xmlFile, final OutputStream HTMLOutstream) - throws TransformerException { - Transformer transformer = mXsltZF1HTMLTemplate.newTransformer(); - - transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream)); - } - - public void applySchematronXsl2(final InputStream xmlFile, final OutputStream HTMLOutstream) - throws TransformerException { - Transformer transformer = mXsltHTMLTemplate.newTransformer(); - - transformer.transform(new StreamSource(xmlFile), new StreamResult(HTMLOutstream)); - } - - private static class ClasspathResourceURIResolver implements URIResolver { - ClasspathResourceURIResolver() { - // Do nothing, just prevents synthetic access warning. - } - - @Override - public Source resolve(String href, String base) throws TransformerException { - return new StreamSource(CLASS_LOADER.getResourceAsStream(RESOURCE_PATH + href)); - } - } -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/DateTimeTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/DateTimeTypeConstants.java deleted file mode 100644 index 895aa899..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/DateTimeTypeConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class DateTimeTypeConstants { - public static final String DATE = "102"; - public static final String MONTH = "610"; - public static final String WEEK = "616"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/DocumentCodeTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/DocumentCodeTypeConstants.java deleted file mode 100644 index 028c7874..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/DocumentCodeTypeConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class DocumentCodeTypeConstants { - public static final String INVOICE = "380"; - public static final String DEBITNOTE = "84"; - public static final String CREDITNOTE = "389"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/DocumentContextParameterTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/DocumentContextParameterTypeConstants.java deleted file mode 100644 index d90eabd1..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/DocumentContextParameterTypeConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class DocumentContextParameterTypeConstants { - public static final String BASIC = "urn:ferd:CrossIndustryDocument:invoice:1p0:basic"; - public static final String COMFORT = "urn:ferd:CrossIndustryDocument:invoice:1p0:comfort"; - public static final String EXTENDED = "urn:ferd:CrossIndustryDocument:invoice:1p0:extended"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/NoteTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/NoteTypeConstants.java deleted file mode 100644 index 6b868dc6..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/NoteTypeConstants.java +++ /dev/null @@ -1,27 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class NoteTypeConstants { - public static final String GENERAL = ""; - public static final String REGULARINFO = "REG"; - public static final String PRICECONDITION = "AAK"; - public static final String CONDITIONS = "AAJ"; - public static final String PAYMENTINFO = "PMT"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/PaymentMeansCodeTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/PaymentMeansCodeTypeConstants.java deleted file mode 100644 index fda92820..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/PaymentMeansCodeTypeConstants.java +++ /dev/null @@ -1,31 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class PaymentMeansCodeTypeConstants { - public static final String BANKACCOUNT = "42"; - public static final String NOTSPECIFIED = "1"; - public static final String AUTOMATICCLEARING = "3"; - public static final String CASH = "10"; - public static final String CHECK = "20"; - public static final String DEBITADVICE = "31"; - public static final String CREDITCARD = "48"; - public static final String DEBIT = "49"; - public static final String COMPENSATION = "97"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/QuantityTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/QuantityTypeConstants.java deleted file mode 100644 index 99bc7033..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/QuantityTypeConstants.java +++ /dev/null @@ -1,43 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class QuantityTypeConstants { - public static final String PIECE = "C62"; - public static final String DAY = "DAY"; - public static final String HECTARE = "HAR"; - public static final String HOUR = "HUR"; - public static final String KILOGRAM = "KGM"; - public static final String KILOMETER = "KTM"; - public static final String KILOWATTHOUR = "KWH"; - public static final String FIXEDRATE = "LS"; - public static final String LITRE = "LTR"; - public static final String MINUTE = "MIN"; - public static final String SQUAREMILLIMETER = "MMK"; - public static final String MILLIMETER = "MMT"; - public static final String SQUAREMETER = "MTK"; - public static final String CUBICMETER = "MTQ"; - public static final String METER = "MTR"; - public static final String PRODUCTCOUNT = "NAR"; - public static final String PRODUCTPAIR = "NPR"; - public static final String PERCENT = "P1"; - public static final String SET = "SET"; - public static final String TON = "TNE"; - public static final String WEEK = "WEE"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java deleted file mode 100644 index 979207c8..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/TaxCategoryCodeTypeConstants.java +++ /dev/null @@ -1,28 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class TaxCategoryCodeTypeConstants { - public static final String STANDARDRATE = "S"; - public static final String REVERSECHARGE = "AE"; - public static final String TAXEXEMPT = "E"; - public static final String ZEROTAXPRODUCTS = "Z"; - public static final String UNTAXEDSERVICE = "O"; - public static final String INTRACOMMUNITY = "IC"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/TaxRegistrationTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/TaxRegistrationTypeConstants.java deleted file mode 100644 index ff5c03f5..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/TaxRegistrationTypeConstants.java +++ /dev/null @@ -1,24 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class TaxRegistrationTypeConstants { - public static final String USTID = "VA"; - public static final String TAXID = "FC"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/TaxTypeCodeTypeConstants.java b/src/main/java/org/mustangproject/ZUGFeRD/model/TaxTypeCodeTypeConstants.java deleted file mode 100644 index 46bb3e75..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/TaxTypeCodeTypeConstants.java +++ /dev/null @@ -1,25 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -public class TaxTypeCodeTypeConstants { - public static final String SALESTAX = "VAT"; - public static final String INSURANCETAX = "ZF_INSURANCE_TAX"; - public static final String OLDPART = "AAJ"; -} diff --git a/src/main/java/org/mustangproject/ZUGFeRD/model/ZFNamespacePrefixMapper.java b/src/main/java/org/mustangproject/ZUGFeRD/model/ZFNamespacePrefixMapper.java deleted file mode 100644 index 4b3f2915..00000000 --- a/src/main/java/org/mustangproject/ZUGFeRD/model/ZFNamespacePrefixMapper.java +++ /dev/null @@ -1,49 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD.model; - -import com.sun.xml.bind.marshaller.NamespacePrefixMapper; - -import java.util.HashMap; -import java.util.Map; - -public class ZFNamespacePrefixMapper extends NamespacePrefixMapper { - - private Map<String, String> namespaceMap = new HashMap<>(); - - /** - * Create mappings. - */ - public ZFNamespacePrefixMapper() { - - namespaceMap.put("urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12", "ram"); - namespaceMap.put("urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15", "udt"); - namespaceMap.put("urn:ferd:CrossIndustryDocument:invoice:1p0", "rsm"); - } - - /* (non-Javadoc) - * Returning null when not found based on spec. - * @see com.sun.xml.bind.marshaller.NamespacePrefixMapper#getPreferredPrefix(java.lang.String, java.lang.String, boolean) - */ - @Override - public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) { - return namespaceMap.getOrDefault(namespaceUri, suggestion); - } - -} diff --git a/src/main/java/org/mustangproject/toecount/FileChecker.java b/src/main/java/org/mustangproject/toecount/FileChecker.java deleted file mode 100755 index 27273e2e..00000000 --- a/src/main/java/org/mustangproject/toecount/FileChecker.java +++ /dev/null @@ -1,95 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.toecount; - -import java.math.BigDecimal; - -import org.mustangproject.ZUGFeRD.ZUGFeRDImporter; - -public class FileChecker { - String filename; - StatRun thisRun; - boolean isPDF = false; - - public FileChecker(String filename, StatRun statistics) { - this.filename = filename; - thisRun = statistics; - thisRun.incFileCount(); - String extension = ""; - if (!thisRun.shallIgnoreFileExt()) { - int extIndex = filename.lastIndexOf("."); - if (extIndex >= 0) { - extension = filename.substring(extIndex).toLowerCase(); - isPDF = extension.equals(".pdf");// alternative check for PDF: File starts with %PDF- - if (isPDF) { - thisRun.incPDFCount(); - } - } - - } else { - thisRun.incPDFCount(); - } - } - - public boolean checkForZUGFeRD() { - if ((!isPDF) && (!thisRun.shallIgnoreFileExt())) { - return false; - } - ZUGFeRDImporter zi = new ZUGFeRDImporter(filename); - try { - if (zi.canParse()) { - thisRun.incZUGFeRDCount(zi.getVersion()); - thisRun.incTotal(new BigDecimal(zi.getAmount())); - return true; - } else { - return false; - } - } catch (NullPointerException e) { - // something really rare happened -- corrupted ZF? - /*** - * e.g. Exception in thread "main" java.lang.NullPointerException - at org.mustangproject.ZUGFeRD.ZUGFeRDImporter.extractLowLevel(ZUGFeRDImporter.java:90) - at org.mustangproject.ZUGFeRD.ZUGFeRDImporter.extract(ZUGFeRDImporter.java:64) - at toecount.FileChecker.checkForZUGFeRD(FileChecker.java:33) - at toecount.Toecount.main(Toecount.java:111) - * - */ - // Ignore nevertheless, most likely we're batch processing - return false; - } catch (Exception e2) { - /** - * probably thrown up from - AM org.apache.pdfbox.pdfparser.PDFParser parse, most likely - INFORMATION: Document is encrypted - but also other internal PDF errors possible like - ..Okt 23, 2015 11:17:53 AM org.apache.pdfbox.pdfparser.XrefTrailerResolver setStartxref - */ - return false; - } - } - - public boolean isPDF() { - return isPDF; - } - - public String getOutputLine() { - return thisRun.getOutputLine(); - } - -} diff --git a/src/main/java/org/mustangproject/toecount/FileTraverser.java b/src/main/java/org/mustangproject/toecount/FileTraverser.java deleted file mode 100755 index da530782..00000000 --- a/src/main/java/org/mustangproject/toecount/FileTraverser.java +++ /dev/null @@ -1,75 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.toecount; - -import java.io.IOException; -import java.nio.file.FileVisitResult; -import java.nio.file.Path; -import java.nio.file.SimpleFileVisitor; -import java.nio.file.attribute.BasicFileAttributes; - -import static java.nio.file.FileVisitResult.CONTINUE; - -public class FileTraverser extends SimpleFileVisitor<Path> { - - - private StatRun thisRun; - - public FileTraverser(StatRun statistics) { - this.thisRun = statistics; - } - - /** - * check each file - */ - @Override - public FileVisitResult visitFile(Path file, BasicFileAttributes attr) { - if (attr.isSymbolicLink()) { - // Not yet handled - } else if (attr.isRegularFile()) { - String filename = file.toString(); - FileChecker fc = new FileChecker(filename, thisRun); - fc.checkForZUGFeRD(); - System.out.print(fc.getOutputLine()); - - } - return CONTINUE; - } - - /** - * for each directory - */ - @Override - public FileVisitResult postVisitDirectory(Path dir, IOException exc) { - // System.out.format("Directory: %s%n", dir); - thisRun.incDirCount(); - return CONTINUE; - } - - - /** - * show errors like file permission stacktraces - */ - @Override - public FileVisitResult visitFileFailed(Path file, IOException exc) { - System.err.println(exc); - return CONTINUE; - } - -} diff --git a/src/main/java/org/mustangproject/toecount/StatRun.java b/src/main/java/org/mustangproject/toecount/StatRun.java deleted file mode 100755 index 8768850b..00000000 --- a/src/main/java/org/mustangproject/toecount/StatRun.java +++ /dev/null @@ -1,99 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.toecount; - -import java.math.BigDecimal; - -public class StatRun { - private int pdfCount = 0; - private int horseCount = 0; - private int fileCount = 0; - private int dirCount = 0; - private BigDecimal total = BigDecimal.ZERO; - private boolean checkFileExt = true; - - public void ignoreFileExtension() { - checkFileExt = false; - } - - public boolean shallIgnoreFileExt() { - return !checkFileExt; - } - - public void incFileCount() { - fileCount++; - } - - public void incPDFCount() { - pdfCount++; - } - - public void incZUGFeRDCount(int version) { - horseCount++; - } - - public void incDirCount() { - dirCount++; - } - - public int getFileCount() { - return fileCount; - } - - public int getPDFCount() { - return pdfCount; - } - - public int getZUGFeRDCount() { - return horseCount; - } - - public int getDirCount() { - return dirCount; - } - - /** - * returns final statistics - * - * @return english string with linefeeds detailling number of files, directories, number of pdfs and of zugferd files - */ - public String getSummaryLine() { - - return "\r\n===================================================================\r\n" + String.format( - "Files:\t%d\tDirs:\t%d\tPDF:\t%d\tZUGFeRD:\t%d\tTotal:\t%s\r\n", - getFileCount(), getDirCount(), getPDFCount(), getZUGFeRDCount(), total.toString()); - - } - - /** - * show that something is happening - * - * @return String, usually a dot - */ - public String getOutputLine() { - return "."; - } - - public void incTotal(BigDecimal delta) { - total=total.add(delta); - - } - - -} diff --git a/src/main/java/org/mustangproject/toecount/Toecount.java b/src/main/java/org/mustangproject/toecount/Toecount.java deleted file mode 100755 index a29e58c8..00000000 --- a/src/main/java/org/mustangproject/toecount/Toecount.java +++ /dev/null @@ -1,621 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.toecount; - -import java.io.BufferedReader; -import java.io.File; -import java.io.IOException; -import java.io.InputStreamReader; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.transform.TransformerException; - -import org.mustangproject.ZUGFeRD.ZUGFeRDConformanceLevel; -import org.mustangproject.ZUGFeRD.ZUGFeRDExporter; -import org.mustangproject.ZUGFeRD.ZUGFeRDExporterFromA1Factory; -import org.mustangproject.ZUGFeRD.ZUGFeRDImporter; -import org.mustangproject.ZUGFeRD.ZUGFeRDMigrator; - -/*** - * This is the command line interface to mustangproject - * - */ - -import com.sanityinc.jargs.CmdLineParser; -import com.sanityinc.jargs.CmdLineParser.Option; - -public class Toecount { - // build with: /opt/local/bin/mvn clean compile assembly:single - private static void printUsage() { - System.err.println(getUsage()); - } - - private static String getUsage() { - return "Usage: [-d,--directory] [-l,--listfromstdin] [-i,--ignorefileextension] | [-c,--combine] | [-e,--extract] | [-u,--upgrade] | [-a,--a3only] | [-h,--help] \r\n" - + "* Count operations\n" + " -d, --directory count ZUGFeRD files in directory to be scanned\n" - + " If it is a directory, it will recurse.\n" - + " -l, --listfromstdin count ZUGFeRD files from a list of linefeed separated files on runtime.\n" - + " It will start once a blank line has been entered.\n" + "\n" - + " Additional parameter for both count operations\n" - + " [-i, --ignorefileextension] Check for all files (*.*) instead of PDF files only (*.pdf)\n" - + "\n" + "* Merge operations\n" + " -e, --extract extract ZUGFeRD PDF to XML file\n" - + " Additional parameters (optional - user will be prompted if not defined)\n" - + " [--source <filename>]: set input PDF file\n" - + " [--out <filename>]: set output XML file\n" - + " -u, --upgrade upgrade ZUGFeRD XML to ZUGFeRD 2 XML\n" - + " Additional parameters (optional - user will be prompted if not defined)\n" - + " [--source <filename>]: set input XML ZUGFeRD 1 file\n" - + " [--out <filename>]: set output XML ZUGFeRD 2 file\n" - + " -a, --a3only upgrade from PDF/A1 to A3 only (no ZUGFeRD data attached)\n" - + " Additional parameters (optional - user will be prompted if not defined)\n" - + " [--source <filename>]: set input PDF file\n" - + " [--out <filename>]: set output PDF file\n" - + " -c, --combine combine XML and PDF file to ZUGFeRD PDF file\n" - + " Additional parameters (optional - user will be prompted if not defined)\n" - + " [--source <filename>]: set input PDF file\n" - + " [--source-xml <filename>]: set input XML file\n" - + " [--out <filename>]: set output PDF file\n" - + " [--format <fx|zf>]: set ZUGFeRD or FacturX\n" - + " [--version <1|2>]: set ZUGFeRD version\n" - + " [--profile <...>]: set ZUGFeRD profile\n" - + " For ZUGFeRD v1: <B>ASIC, <C>OMFORT or <E>XTENDED\n" - + " For ZUGFeRD v2: <M>INIMUM, BASIC <W>L, <B>ASIC, <C>IUS, <E>N16931, E<X>TENDED "; - } - - private static void printHelp() { - System.out.println("Mustangproject.org " + org.mustangproject.ZUGFeRD.Version.VERSION + " \r\n" - + "A Apache Public License library and command line tool for statistics on PDF invoices with\r\n" - + "ZUGFeRD Metadata (http://www.zugferd.org)\r\n" + "\r\n" + getUsage() + "\r\n" - + "* Count operations\r\n" + "\t-d, --directory\tcount ZUGFeRD files in directory to be scanned\r\n" - + "\t\tIf it is a directory, it will recurse.\r\n" - + "\t-l, --listfromstdin\tcount ZUGFeRD files from a list of linefeed separated files on runtime.\r\n" - + "\t\tIt will start once a blank line has been entered.\r\n" + "\r\n" - + "\tAdditional parameter for both count operations\r\n" - + "\t[-i, --ignorefileextension]\tCheck for all files (*.*) instead of PDF files only (*.pdf)\r\n" - + "\r\n" + "* Merge operations\r\n" + "\t-e, --extract\textract ZUGFeRD PDF to XML file\r\n" - + "\t\tAdditional parameters (optional - user will be prompted if not defined)\r\n" - + "\t\t[--source <filename>]: set input PDF file\r\n" - + "\t\t[--out <filename>]: set output XML file\r\n" - + "\t-u, --upgrade\tupgrade ZUGFeRD XML to ZUGFeRD 2 XML\r\n" - + "\t\tAdditional parameters (optional - user will be prompted if not defined)\r\n" - + "\t\t[--source <filename>]: set input XML ZUGFeRD 1 file\r\n" - + "\t\t[--out <filename>]: set output XML ZUGFeRD 2 file\r\n" - + "\t-a, --a3only\tupgrade from PDF/A1 to A3 only (no ZUGFeRD data attached) \r\n" - + "\t\tAdditional parameters (optional - user will be prompted if not defined)\r\n" - + "\t\t[--source <filename>]: set input PDF file\r\n" - + "\t\t[--out <filename>]: set output PDF file\r\n" - + "\t-c, --combine\tcombine XML and PDF file to ZUGFeRD PDF file\r\n" - + "\t\tAdditional parameters (optional - user will be prompted if not defined)\r\n" - + "\t\t[--source <filename>]: set input PDF file\r\n" - + "\t\t[--source-xml <filename>]: set input XML file\r\n" - + "\t\t[--out <filename>]: set output PDF file\r\n" - + "\t\t[--format <fx|zf>]: enable factur-x or ZUGFeRD\r\n" - + "\t\t[--version <1|2>]: set ZUGFeRD version\r\n" + "\t\t[--profile <...>]: set ZUGFeRD profile\r\n" - + "\t\t\tFor ZUGFeRD v1: <B>ASIC, <C>OMFORT or <E>XTENDED\r\n" - + "\t\t\tFor ZUGFeRD v2: <M>INIMUM, BASIC <W>L, <B>ASIC, <C>IUS, <E>N16931, E<X>TENDED\r\n"); - } - - /** - * Asks the user (repeatedly, if neccessary) on the command line for a String - * (offering a defaultValue) conforming to a Regex pattern - * - * @param prompt - * the question to be asked to the user - * @param defaultValue - * the default return value if user hits enter - * @param pattern - * a regex of acceptable values - * @return the user answer conforming to pattern - * @throws Exception - * if pattern not compielable or IOexception on input - */ - protected static String getStringFromUser(String prompt, String defaultValue, String pattern) throws Exception { - String input = ""; - if (!defaultValue.matches(pattern)) { - throw new Exception("Default value must match pattern"); - } - boolean firstInput = true; - do { - // for a more sophisticated dialogue maybe https://github.com/mabe02/lanterna/ - // could be taken into account - System.out.print(prompt + " (default: " + defaultValue + ")"); - if (!firstInput) { - System.out.print("\n(allowed pattern: " + pattern + ")"); - - } - System.out.print(":"); - BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); - try { - input = buffer.readLine(); - } catch (IOException e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - - } - - if (input.isEmpty()) { - // pressed return without entering anything - input = defaultValue; - } - - firstInput = false; - } while (!input.matches(pattern)); - - return input; - } - - /** - * Prompts the user for a input or output filename - * - * @param prompt the text the user is asked - * @param defaultFilename a default Filename - * @param expectedExtension will warn if filename does not match expected file extension - * @param ensureFileExists will warn if file does NOT exist (for input files) - * @param ensureFileNotExists will warn if file DOES exist (for output files) - * @return String - */ - protected static String getFilenameFromUser(String prompt, String defaultFilename, String expectedExtension, - boolean ensureFileExists, boolean ensureFileNotExists) { - boolean fileExistenceOK = false; - String selectedName = ""; - do { - // for a more sophisticated dialogue maybe https://github.com/mabe02/lanterna/ - // could be taken into account - System.out.print(prompt + " (default: " + defaultFilename + "):"); - BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in)); - try { - selectedName = buffer.readLine(); - } catch (IOException e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - - } - - if (selectedName.isEmpty()) { - // pressed return without entering anything - selectedName = defaultFilename; - } - - // error cases - if (!selectedName.toLowerCase().endsWith(expectedExtension.toLowerCase())) { - System.err.println("Expected " + expectedExtension - + " extension, this may corrupt your file. Do you still want to continue?(Y|N)"); - String selectedAnswer = ""; - try { - selectedAnswer = buffer.readLine(); - } catch (IOException e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - } - if (!selectedAnswer.equals("Y") && !selectedAnswer.equals("y")) { - System.err.println("Aborted by user"); - System.exit(-1); - } - - } else if (ensureFileExists) { - if (fileExists(selectedName)) { - fileExistenceOK = true; - } else { - System.out.println("File does not exist, try again or CTRL+C to cancel"); - // discard the input, a scanner.reset is not sufficient - fileExistenceOK = false; - } - } else { - fileExistenceOK = true; - - if (ensureFileNotExists) { - if (fileExists(selectedName)) { - fileExistenceOK = false; - System.out.println("Output file already exists, try again or CTRL+C to cancel"); - // discard the input, a scanner.reset is not sufficient - } - } else { - fileExistenceOK = true; - } - } - - } while (!fileExistenceOK); - - return selectedName; - } - - // /opt/local/bin/mvn clean compile assembly:single - public static void main(String[] args) { - try { - - CmdLineParser parser = new CmdLineParser(); - - // Option: Help - Option<Boolean> helpOption = parser.addBooleanOption('h', "help"); - // Option: Action - Option<String> actionOption = parser.addStringOption('a', "action"); - - // Generic options available for multiple command - // --source: input file - Option<String> sourceOption = parser.addStringOption("source"); - // --out: output file - Option<String> outOption = parser.addStringOption("out"); - - // Command: Extract XML - // --extract - // (--source: input PDF file) - // (--out: output XML file) - Option<Boolean> extractOption = parser.addBooleanOption('e', "extract"); - - // Command: Migrating ZUGFeRD 1 to 2 - // --upgrade - // (--source: input XML ZUGFeRD 1 file) - // (--out: output XML ZUGFeRD 2 file) - Option<Boolean> upgradeOption = parser.addBooleanOption('u', "upgrade"); - - // Command: Convert PDF/A-1 to PDF/A-3 - // --a3only - // (--source: input PDF file) - // (--out: output PDF file) - Option<Boolean> a3onlyOption = parser.addBooleanOption('a', "a3only"); - - // Command: Combining PDF and XML - // --combine - // (--source: input PDF file) - // (--source-xml: input XML file) - // (--out: output PDF file) - // (--version: ZUGFeRD version) - // (--profile: ZUGFeRD profile) - Option<Boolean> combineOption = parser.addBooleanOption('c', "combine"); - Option<String> sourceXmlOption = parser.addStringOption("source-xml"); - Option<String> formatOption = parser.addStringOption('f', "format"); - Option<String> zugferdVersionOption = parser.addStringOption("version"); - Option<String> zugferdProfileOption = parser.addStringOption("profile"); - - // Command: Show metrics in dir - // --directory - // (--ignorefileextension) - Option<String> dirnameOption = parser.addStringOption('d', "directory"); - Option<Boolean> ignoreFileExtOption = parser.addBooleanOption('i', "ignorefileextension"); - - // Command: Show metrics from list from stdin - // --listfromstdin - Option<Boolean> filesFromStdInOption = parser.addBooleanOption('l', "listfromstdin"); - - try { - parser.parse(args); - } catch (CmdLineParser.OptionException e) { - System.err.println(e.getMessage()); - printUsage(); - System.exit(2); - } - - // Retrieve all options - String action = parser.getOptionValue(actionOption); - String directoryName = parser.getOptionValue(dirnameOption); - Boolean filesFromStdIn = parser.getOptionValue(filesFromStdInOption, Boolean.FALSE); - Boolean combineRequested = parser.getOptionValue(combineOption, Boolean.FALSE) || ((action!=null)&&(action.equals("combine"))); - Boolean extractRequested = parser.getOptionValue(extractOption, Boolean.FALSE) || ((action!=null)&&(action.equals("extract"))); - Boolean helpRequested = parser.getOptionValue(helpOption, Boolean.FALSE) || ((action!=null)&&(action.equals("help"))); - Boolean upgradeRequested = parser.getOptionValue(upgradeOption, Boolean.FALSE) || ((action!=null)&&(action.equals("upgrade"))); - Boolean ignoreFileExt = parser.getOptionValue(ignoreFileExtOption, Boolean.FALSE); - Boolean a3only = parser.getOptionValue(a3onlyOption, Boolean.FALSE) || ((action!=null)&&(action.equals("a3"))); - String sourceName = parser.getOptionValue(sourceOption); - String sourceXMLName = parser.getOptionValue(sourceXmlOption); - String outName = parser.getOptionValue(outOption); - String format = parser.getOptionValue(formatOption); - String zugferdVersion = parser.getOptionValue(zugferdVersionOption); - String zugferdProfile = parser.getOptionValue(zugferdProfileOption); - - if (helpRequested) { - printHelp(); - } else if (((directoryName != null) && (directoryName.length() > 0)) || filesFromStdIn.booleanValue()) { - performMetrics(directoryName, filesFromStdIn, ignoreFileExt); - } else if (combineRequested) { - performCombine(sourceName, sourceXMLName, outName, format, zugferdVersion, zugferdProfile); - } else if (extractRequested) { - performExtract(sourceName, outName); - } else if (a3only) { - performConvert(sourceName, outName); - } else if (upgradeRequested) { - performUpgrade(sourceName, outName); - } else { - // no argument or argument unknown - printUsage(); - System.exit(2); - } - } catch (Exception e) { - - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - System.exit(-1); - } - - } - - private static void performUpgrade(String xmlName, String outName) throws IOException, TransformerException { - - // Get params from user if not already defined - if (xmlName == null) { - xmlName = getFilenameFromUser("ZUGFeRD 1.0 XML source", "ZUGFeRD-invoice.xml", "xml", true, false); - } else { - System.out.println("ZUGFeRD 1.0 XML source set to " + xmlName); - } - if (outName == null) { - outName = getFilenameFromUser("ZUGFeRD 2.0 XML target", "zugferd-invoice.xml", "xml", false, true); - } else { - System.out.println("ZUGFeRD 1.0 XML source set to " + outName); - } - - // Verify params - ensureFileExists(xmlName); - ensureFileNotExists(outName); - - // All params are good! continue... - ZUGFeRDMigrator zmi = new ZUGFeRDMigrator(); - String xml = null; - xml = zmi.migrateFromV1ToV2(xmlName); - Files.write(Paths.get(outName), xml.getBytes()); - System.out.println("Written to " + outName); - /* - * } catch (FileNotFoundException ex) { - * Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, ex); - */ - } - - private static void performConvert(String pdfName, String outName) throws IOException { - /* - * ZUGFeRDExporter ze= new ZUGFeRDExporterFromA1Factory() - * .setProducer("toecount") .setCreator(System.getProperty("user.name")) - * .loadFromPDFA1("invoice.pdf"); - */ - // Get params from user if not already defined - if (pdfName == null) { - pdfName = getFilenameFromUser("Source PDF", "invoice.pdf", "pdf", true, false); - } else { - System.out.println("Source PDF set to " + pdfName); - } - if (outName == null) { - outName = getFilenameFromUser("Target PDF", "invoice.a3.pdf", "pdf", false, true); - } else { - System.out.println("Target PDF set to " + outName); - } - - // Verify params - ensureFileExists(pdfName); - ensureFileNotExists(outName); - - // All params are good! continue... - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setAttachZUGFeRDHeaders(false).load(pdfName); - - ze.export(outName); - System.out.println("Written to " + outName); - } - - private static void performExtract(String pdfName, String xmlName) throws IOException { - // Get params from user if not already defined - if (pdfName == null) { - pdfName = getFilenameFromUser("Source PDF", "invoice.pdf", "pdf", true, false); - } else { - System.out.println("Source PDF set to " + pdfName); - } - if (xmlName == null) { - xmlName = getFilenameFromUser("ZUGFeRD XML", "ZUGFeRD-invoice.xml", "xml", false, true); - } else { - System.out.println("ZUGFeRD XML set to " + pdfName); - } - - // Verify params - ensureFileExists(pdfName); - ensureFileNotExists(xmlName); - - // All params are good! continue... - ZUGFeRDImporter zi = new ZUGFeRDImporter(pdfName); - byte[] XMLContent = zi.getRawXML(); - if (XMLContent == null) { - System.err.println("No ZUGFeRD XML found in PDF file"); - - } else { - Files.write(Paths.get(xmlName), XMLContent); - System.out.println("Written to " + xmlName); - } - } - - private static void performCombine(String pdfName, String xmlName, String outName, String format, String zfVersion, - String zfProfile) throws Exception { - /* - * ZUGFeRDExporter ze= new ZUGFeRDExporterFromA1Factory() - * .setProducer("toecount") .setCreator(System.getProperty("user.name")) - * .loadFromPDFA1("invoice.pdf"); - */ - try { - int zfIntVersion = ZUGFeRDExporter.DefaultZUGFeRDVersion; - ZUGFeRDConformanceLevel zfConformanceLevelProfile = ZUGFeRDConformanceLevel.EXTENDED; - - if (pdfName == null) { - pdfName = getFilenameFromUser("Source PDF", "invoice.pdf", "pdf", true, false); - } else { - System.out.println("Source PDF set to " + pdfName); - } - - if (xmlName == null) { - xmlName = getFilenameFromUser("ZUGFeRD XML", "ZUGFeRD-invoice.xml", "xml", true, false); - } else { - System.out.println("ZUGFeRD XML set to " + xmlName); - } - - if (outName == null) { - outName = getFilenameFromUser("Ouput PDF", "invoice.ZUGFeRD.pdf", "pdf", false, true); - } else { - System.out.println("Ouput PDF set to " + outName); - } - - if (format == null) { - try { - format = getStringFromUser("Format (fx=Factur-X, zf=ZUGFeRD,)", "zf", "fx|zf"); - } catch (Exception e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - } - } else { - System.out.println("Format set to " + format); - } - - if (zfVersion == null) { - try { - zfVersion = getStringFromUser("Version (1 or 2)", "1", "1|2"); - } catch (Exception e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - } - } else { - System.out.println("Version set to " + zfVersion); - } - zfIntVersion = Integer.valueOf(zfVersion); - - if (zfProfile == null) { - try { - if (format.equals("zf") && (zfIntVersion == 1)) { - zfProfile = getStringFromUser("Profile b)asic, c)omfort or e)xtended", "e", "B|b|C|c|E|e"); - } else { - zfProfile = getStringFromUser( - "Profile [M]INIMUM, BASIC [W]L, [B]ASIC,\n" + "[C]IUS, [E]N16931, E[X]TENDED", "E", - "M|m|W|w|B|b|C|c|E|e|X|x|"); - } - } catch (Exception e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - - } - } else { - System.out.println("Profile set to " + zfProfile); - } - zfProfile = zfProfile.toLowerCase(); - - // Verify params - ensureFileExists(pdfName); - ensureFileExists(xmlName); - ensureFileNotExists(outName); - - if ((format.equals("fx")) && (zfIntVersion > 1)) { - throw new Exception("Factur-X is only available in version 1 (roughly corresponding to ZF2)"); - } - - if ((format.equals("zf")) && (zfIntVersion == 1)) { - if (zfProfile.equals("b")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.BASIC; - } else if (zfProfile.equals("c")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.COMFORT; - } else if (zfProfile.equals("e")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.EXTENDED; - } else { - throw new Exception(String.format("Unknown ZUGFeRD profile '%s'", zfProfile)); - } - } else if (((format.equals("zf")) && (zfIntVersion == 2)) || (format.equals("fx"))) { - if (zfProfile.equals("m")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.MINIMUM; - } else if (zfProfile.equals("w")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.BASICWL; - } else if (zfProfile.equals("b")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.BASIC; - } else if (zfProfile.equals("c")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.CIUS; - } else if (zfProfile.equals("e")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.EN16931; - } else if (zfProfile.equals("x")) { - zfConformanceLevelProfile = ZUGFeRDConformanceLevel.EXTENDED; - } else { - throw new Exception(String.format("Unknown ZUGFeRD profile '%s'", zfProfile)); - } - } else { - throw new Exception(String.format("Unknown version '%i'", zfIntVersion)); - } - - // All params are good! continue... - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setProducer("Toecount") - .setZUGFeRDVersion(zfIntVersion) - .setCreator(System.getProperty("user.name")).setZUGFeRDConformanceLevel(zfConformanceLevelProfile) - .load(pdfName); - - if (format.equals("fx")) { - ze.setFacturX(); - } - - ze.setZUGFeRDXMLData(Files.readAllBytes(Paths.get(xmlName))); - - ze.export(outName); - - System.out.println("Written to " + outName); - - } catch (IOException e) { - Logger.getLogger(Toecount.class.getName()).log(Level.SEVERE, null, e); - - } - } - - private static void performMetrics(String directoryName, Boolean filesFromStdIn, Boolean ignoreFileExt) - throws IOException { - - StatRun sr = new StatRun(); - if (ignoreFileExt) { - sr.ignoreFileExtension(); - } - if (directoryName != null) { - Path startingDir = Paths.get(directoryName); - - if (Files.isRegularFile(startingDir)) { - String filename = startingDir.toString(); - FileChecker fc = new FileChecker(filename, sr); - - fc.checkForZUGFeRD(); - System.out.print(fc.getOutputLine()); - - } else if (Files.isDirectory(startingDir)) { - FileTraverser pf = new FileTraverser(sr); - Files.walkFileTree(startingDir, pf); - } - } - - if (filesFromStdIn) { - BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); - String s; - while ((s = in.readLine()) != null && s.length() != 0) { - FileChecker fc = new FileChecker(s, sr); - - fc.checkForZUGFeRD(); - System.out.print(fc.getOutputLine()); - - } - - } - System.out.println(sr.getSummaryLine()); - } - - private static void ensureFileExists(String fileName) throws IOException { - if (!fileExists(fileName)) { - throw new IOException(String.format("File %s does not exists", fileName)); - } - } - - private static void ensureFileNotExists(String fileName) throws IOException { - if (fileExists(fileName)) { - throw new IOException(String.format("File %s does not exists", fileName)); - } - } - - private static Boolean fileExists(String fileName) { - if (fileName == null) - return false; - File f = new File(fileName); - return f.exists(); - } - -} diff --git a/src/main/resources/COMFORTtoEN16931.xsl b/src/main/resources/COMFORTtoEN16931.xsl deleted file mode 100644 index c4f974a9..00000000 --- a/src/main/resources/COMFORTtoEN16931.xsl +++ /dev/null @@ -1,277 +0,0 @@ -<!-- - Copyright 2018 Jochen Staerk - - Use is subject to license terms. - - Licensed under the Apache License, Version 2.0 (the "License"); you may not - use this file except in compliance with the License. You may obtain a copy - of the License at http://www.apache.org/licenses/LICENSE-2.0. - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - - See the License for the specific language governing permissions and - limitations under the License. - --> -<xsl:stylesheet version="1.0" - xmlns:xsl="http://www.w3.org/1999/XSL/Transform" - xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" - - xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" - xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:100" - xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" - > - <!-- use saxon6 java -cp saxon.jar com.icl.saxon.StyleSheet -o target.xml - ZUGFeRD-invoice.xml v1to2.xsl see also http://www.lenzconsulting.com/namespaces-in-xslt/ - extension-element-prefixes="exsl str datetime uw" --> - <xsl:output encoding="UTF-8" indent="yes" method="xml" /> - -<!-- copy elements and all attributes but remove namespaces start -Will otherwise add sth like xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" on elements. -src: https://stackoverflow.com/questions/12465002/remove-namespace-declaration-from-xslt-stylesheet-with-xslt -This only seems to work in saxon, in xalan namespaces are still created--> -<!-- Copy elements --> -<xsl:template match="*" priority="-1"> - <xsl:element name="{name()}"> - <xsl:apply-templates select="node()|@*"/> - </xsl:element> -</xsl:template> - -<!-- Copy all other nodes --> -<xsl:template match="node()|@*" priority="-2"> - <xsl:copy /> -</xsl:template> -<!-- copy elements and all attributes but remove namespaces end --> - - <xsl:template match="//*[local-name() = 'CrossIndustryDocument']"> - <!-- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" - xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" - xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100" --> - <rsm:CrossIndustryInvoice xmlns:rsm="urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100" - xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100" - xmlns:qdt="urn:un:unece:uncefact:data:Standard:QualifiedDataType:100" - xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100"> - <xsl:text disable-output-escaping="yes"><!--</xsl:text> -Migrated by Mustangproject XSLT -<xsl:text disable-output-escaping="yes">--></xsl:text> - - <xsl:apply-templates select="*" /> - </rsm:CrossIndustryInvoice> - </xsl:template> - - <!-- xsl:template match="//*[local-name() = 'HeaderExchangedDocument']"> - <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template> --> - - <!-- element remode --> - <xsl:template match="//*[local-name() = 'TestIndicator']"> - <!-- Testindicator element has been removed --> - </xsl:template> - - <!-- element rename --> - <xsl:template match="//*[local-name() = 'SpecifiedExchangedDocumentContext']"> - <xsl:element name="rsm:ExchangedDocumentContext"> - <xsl:apply-templates select="@*|node()" /> - </xsl:element> - </xsl:template> - - <xsl:template match="//*[local-name() = 'HeaderExchangedDocument']"> - <rsm:ExchangedDocument> - <xsl:apply-templates select="@*|node()" /> - </rsm:ExchangedDocument> - </xsl:template> - - - <xsl:template match="//*[local-name() = 'ApplicablePercent']"> - <ram:RateApplicablePercent> - <xsl:apply-templates select="@*|node()" /> - </ram:RateApplicablePercent> - </xsl:template> - - - <xsl:template match="//*[local-name() = 'SpecifiedSupplyChainTradeDelivery']"> - <ram:SpecifiedLineTradeDelivery> - <xsl:apply-templates select="@*|node()" /> - </ram:SpecifiedLineTradeDelivery> - </xsl:template> - - <xsl:template match="//*[local-name() = 'SpecifiedLineTradeAgreement']"> - <ram:AssociatedDocumentLineDocument> - <xsl:apply-templates select="@*|node()" /> - </ram:AssociatedDocumentLineDocument> - </xsl:template> - - - <xsl:template - match="//*[local-name() = 'SpecifiedSupplyChainTradeAgreement']"> - <ram:SpecifiedLineTradeAgreement> - <xsl:apply-templates select="@*|node()" /> - </ram:SpecifiedLineTradeAgreement> - </xsl:template> - - <xsl:template - match="//*[local-name() = 'SpecifiedSupplyChainTradeSettlement']"> - <ram:SpecifiedLineTradeSettlement> - <xsl:apply-templates select="@*|node()" /> - </ram:SpecifiedLineTradeSettlement> - </xsl:template> - - <!-- SpecifiedTradeSettlementMonetarySummation -> SpecifiedTradeSettlementLineMonetarySummation - unterhalb SpecifiedLineTradeSettlement -> SpecifiedTradeSettlementHeaderMonetarySummation - unterhalb ApplicableHeaderTradeSettlement --> - - <xsl:template - match="//*[local-name()='SpecifiedSupplyChainTradeSettlement']/*[local-name()='SpecifiedTradeSettlementMonetarySummation']"> - <ram:SpecifiedTradeSettlementLineMonetarySummation> - <xsl:apply-templates select="@*|node()" /> - </ram:SpecifiedTradeSettlementLineMonetarySummation> - </xsl:template> - - <!-- ApplicableSupplyChainTradeSettlement --> - <xsl:template - match="//*[local-name() = 'ApplicableSupplyChainTradeSettlement']/*[local-name() = 'SpecifiedTradeSettlementMonetarySummation']"> - <ram:SpecifiedTradeSettlementHeaderMonetarySummation> - <xsl:apply-templates select="@*|node()" /> - </ram:SpecifiedTradeSettlementHeaderMonetarySummation> - </xsl:template> - - <xsl:template - match="//*[local-name() = 'ApplicableSupplyChainTradeAgreement']"> - <ram:ApplicableHeaderTradeAgreement> - <xsl:apply-templates select="@*|node()" /> - </ram:ApplicableHeaderTradeAgreement> - </xsl:template> - - <xsl:template - match="//*[local-name() = 'ApplicableSupplyChainTradeDelivery']"> - <ram:ApplicableHeaderTradeDelivery> - <xsl:apply-templates select="@*|node()" /> - </ram:ApplicableHeaderTradeDelivery> - </xsl:template> - - <xsl:template - match="//*[local-name() = 'ApplicableSupplyChainTradeSettlement']"> - <ram:ApplicableHeaderTradeSettlement> - <xsl:apply-templates select="@*|node()" /> - </ram:ApplicableHeaderTradeSettlement> - </xsl:template> - - <xsl:template - match="//*[local-name() = 'SpecifiedTradeAccountingAccount']"> - <ram:ReceivableSpecifiedTradeAccountingAccount> - <xsl:apply-templates select="@*|node()" /> - </ram:ReceivableSpecifiedTradeAccountingAccount> - </xsl:template> - <!-- rename hierarchical --> - - - - <xsl:template - match="//*[local-name() = 'BuyerOrderReferencedDocument' or local-name() = 'DeliveryNoteReferencedDocument' or local-name() = 'AdditionalReferencedDocument' or local-name() = 'ContractReferencedDocument']/*[local-name() = 'ID']"> - <ram:IssuerAssignedID> - <xsl:apply-templates select="@*|node()" /> - </ram:IssuerAssignedID> - </xsl:template> - - - - <xsl:template - match="//*[local-name() = 'ContractReferencedDocument']/*[local-name() = 'TypeCode']"> - <ram:ReferenceTypeCode> - <xsl:apply-templates select="@*|node()" /> - </ram:ReferenceTypeCode> - </xsl:template> - - <!-- rename and add --> - - <xsl:template match="//*[local-name() != 'HeaderExchangedDocument']/*[local-name() = 'IssueDateTime']"> - <ram:FormattedIssueDateTime> - <qdt:DateTimeString> - <xsl:apply-templates select="@*|node()" /> - </qdt:DateTimeString> - </ram:FormattedIssueDateTime> - </xsl:template> - - - <!-- rename and reorder --> - <xsl:template - match="//*[local-name() = 'SpecifiedSupplyChainTradeTransaction']"> - <rsm:SupplyChainTradeTransaction><!-- surplus namespaces --> - <xsl:apply-templates - select="./*[local-name() = 'IncludedSupplyChainTradeLineItem']" /> - <!-- now copy any other children that we haven't explicitly reordered; - again, possibly this is not what you want --> - <xsl:apply-templates - select="./*[not(local-name() = 'IncludedSupplyChainTradeLineItem')]" /> - - </rsm:SupplyChainTradeTransaction> - </xsl:template> - - <xsl:template - match="//*[local-name() = 'BuyerOrderReferencedDocument' or local-name() = 'DeliveryNoteReferencedDocument' or local-name() = 'AdditionalReferencedDocument' or local-name() = 'ContractReferencedDocument']"> - <xsl:element name="{name()}"> - - <xsl:apply-templates - select="./*[local-name() = 'ID']" /> - <xsl:apply-templates - select="./*[local-name() = 'TypeCode']" /> - <xsl:apply-templates - select="./*[not(local-name() = 'ID' or local-name() = 'TypeCode')]" /> - </xsl:element> - </xsl:template> - - <!-- innerhalb IncludedSupplyChainTradeLineItem zuerst AssociatedDocumentLineDocument - dann SpecifiedTradeProduct --> - <xsl:template match="//*[local-name() = 'IncludedSupplyChainTradeLineItem']"> - <ram:IncludedSupplyChainTradeLineItem> - <xsl:apply-templates - select="./*[local-name() = 'AssociatedDocumentLineDocument']" /> - <xsl:apply-templates select="./*[local-name() = 'SpecifiedTradeProduct']" /> - <!-- now copy any other children that we haven't explicitly reordered; - again, possibly this is not what you want --> - - <xsl:apply-templates - select="./*[not(local-name() = 'AssociatedDocumentLineDocument' or local-name() = 'SpecifiedTradeProduct')]" /> - - </ram:IncludedSupplyChainTradeLineItem> - </xsl:template> - - <xsl:template - match="//*[local-name() = 'SpecifiedLineTradeSettlement']"> - <ram:SpecifiedLineTradeSettlement> - - <xsl:apply-templates - select="./*[not(local-name() = 'SpecifiedTradeSettlementHeaderMonetarySummation' or local-name() = 'SpecifiedTradeSettlementLineMonetarySummation' or local-name() = 'SpecifiedTradeAccountingAccount')]" /> - <xsl:apply-templates - select="./*[local-name() = 'SpecifiedTradeSettlementHeaderMonetarySummation']" /> - <xsl:apply-templates - select="./*[local-name() = 'SpecifiedTradeSettlementLineMonetarySummation']" /> - <xsl:apply-templates - select="./*[local-name() = 'SpecifiedTradeAccountingAccount']" /> - - </ram:SpecifiedLineTradeSettlement> - </xsl:template> - <xsl:template - match="//*[local-name() = 'ApplicableHeaderTradeSettlement' or local-name() = 'SpecifiedLineTradeSettlement']"> - <xsl:element name="{name()}"> - - <xsl:apply-templates - select="./*[not(local-name() = 'SpecifiedTradeSettlementHeaderMonetarySummation' or local-name() = 'SpecifiedTradeSettlementMonetarySummation' or local-name() = 'SpecifiedTradeAccountingAccount')]" /> - <!-- xsl:apply-templates - select="./*[local-name() = 'SpecifiedTradeSettlementHeaderMonetarySummation']" /--> - <xsl:apply-templates - select="./*[local-name() = 'SpecifiedTradeSettlementMonetarySummation']" /> - <xsl:apply-templates - select="./*[local-name() = 'SpecifiedTradeAccountingAccount']" /> - - </xsl:element> - </xsl:template> - - - <!-- unterhalb von SupplyChainTradeTransaction muss zuerst die IncludedSupplyChainTradeLineItem - kommen --> - <!-- rest --> - <!-- this is the identity transform: it copies everything that isn't matched - by a more specific template --> - -</xsl:stylesheet> \ No newline at end of file diff --git a/src/main/resources/schema/ZUGFeRD1p0.xsd b/src/main/resources/schema/ZUGFeRD1p0.xsd deleted file mode 100644 index 41e2cc9c..00000000 --- a/src/main/resources/schema/ZUGFeRD1p0.xsd +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" - xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" - xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" - xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - targetNamespace="urn:ferd:CrossIndustryDocument:invoice:1p0" - elementFormDefault="qualified"> - <xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" - schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_QualifiedDataType_12.xsd"/> - <xs:import namespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" - schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_12.xsd"/> - <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd"/> - <xs:element name="CrossIndustryDocument" type="rsm:CrossIndustryDocumentType"/> - <xs:complexType name="CrossIndustryDocumentType"> - <xs:sequence> - <xs:element name="SpecifiedExchangedDocumentContext" type="ram:ExchangedDocumentContextType"/> - <xs:element name="HeaderExchangedDocument" type="ram:ExchangedDocumentType"/> - <xs:element name="SpecifiedSupplyChainTradeTransaction" type="ram:SupplyChainTradeTransactionType"/> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_QualifiedDataType_12.xsd b/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_QualifiedDataType_12.xsd deleted file mode 100644 index 77d4e7ed..00000000 --- a/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_QualifiedDataType_12.xsd +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" - xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - targetNamespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" - elementFormDefault="qualified" - version="12.0"> - <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd"/> - <xs:simpleType name="AllowanceChargeReasonCodeContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="AllowanceChargeReasonCodeType"> - <xs:simpleContent> - <xs:extension base="qdt:AllowanceChargeReasonCodeContentType"/> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="CountryIDContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="CountryIDType"> - <xs:simpleContent> - <xs:extension base="qdt:CountryIDContentType"/> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="DateMandatoryDateTimeType"> - <xs:union memberTypes="xs:dateTime xs:date"/> - </xs:simpleType> - <xs:simpleType name="DeliveryTermsCodeContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="DeliveryTermsCodeType"> - <xs:simpleContent> - <xs:extension base="qdt:DeliveryTermsCodeContentType"/> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="DocumentCodeContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="DocumentCodeType"> - <xs:simpleContent> - <xs:extension base="qdt:DocumentCodeContentType"/> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="PaymentMeansCodeContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="PaymentMeansCodeType"> - <xs:simpleContent> - <xs:extension base="qdt:PaymentMeansCodeContentType"/> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="ReferenceCodeContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="ReferenceCodeType"> - <xs:simpleContent> - <xs:extension base="qdt:ReferenceCodeContentType"/> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="TaxCategoryCodeContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="TaxCategoryCodeType"> - <xs:simpleContent> - <xs:extension base="qdt:TaxCategoryCodeContentType"/> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="TaxTypeCodeContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="TaxTypeCodeType"> - <xs:simpleContent> - <xs:extension base="qdt:TaxTypeCodeContentType"/> - </xs:simpleContent> - </xs:complexType> -</xs:schema> diff --git a/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_12.xsd b/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_12.xsd deleted file mode 100644 index c2647960..00000000 --- a/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_ReusableAggregateBusinessInformationEntity_12.xsd +++ /dev/null @@ -1,391 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" - xmlns:xs="http://www.w3.org/2001/XMLSchema" - xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" - xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - targetNamespace="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" - elementFormDefault="qualified" - version="12.0"> - <xs:import namespace="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" - schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_QualifiedDataType_12.xsd"/> - <xs:import namespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - schemaLocation="ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd"/> - <xs:complexType name="CreditorFinancialAccountType"> - <xs:sequence> - <xs:element name="IBANID" type="udt:IDType" minOccurs="0"/> - <xs:element name="AccountName" type="udt:TextType" minOccurs="0"/> - <xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CreditorFinancialInstitutionType"> - <xs:sequence> - <xs:element name="BICID" type="udt:IDType" minOccurs="0"/> - <xs:element name="GermanBankleitzahlID" type="udt:IDType" minOccurs="0"/> - <xs:element name="Name" type="udt:TextType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DebtorFinancialAccountType"> - <xs:sequence> - <xs:element name="IBANID" type="udt:IDType" minOccurs="0"/> - <xs:element name="ProprietaryID" type="udt:IDType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DebtorFinancialInstitutionType"> - <xs:sequence> - <xs:element name="BICID" type="udt:IDType" minOccurs="0"/> - <xs:element name="GermanBankleitzahlID" type="udt:IDType" minOccurs="0"/> - <xs:element name="Name" type="udt:TextType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentContextParameterType"> - <xs:sequence> - <xs:element name="ID" type="udt:IDType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="DocumentLineDocumentType"> - <xs:sequence> - <xs:element name="LineID" type="udt:IDType" minOccurs="0"/> - <xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ExchangedDocumentContextType"> - <xs:sequence> - <xs:element name="TestIndicator" type="udt:IndicatorType" minOccurs="0"/> - <xs:element name="BusinessProcessSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" - minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="GuidelineSpecifiedDocumentContextParameter" type="ram:DocumentContextParameterType" - minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ExchangedDocumentType"> - <xs:sequence> - <xs:element name="ID" type="udt:IDType" minOccurs="0"/> - <xs:element name="Name" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TypeCode" type="qdt:DocumentCodeType" minOccurs="0"/> - <xs:element name="IssueDateTime" type="udt:DateTimeType" minOccurs="0"/> - <xs:element name="CopyIndicator" type="udt:IndicatorType" minOccurs="0"/> - <xs:element name="LanguageID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="IncludedNote" type="ram:NoteType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="EffectiveSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="LogisticsServiceChargeType"> - <xs:sequence> - <xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AppliedAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AppliedTradeTax" type="ram:TradeTaxType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="LogisticsTransportMovementType"> - <xs:sequence> - <xs:element name="ModeCode" type="udt:CodeType" minOccurs="0"/> - <xs:element name="ID" type="udt:IDType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="NoteType"> - <xs:sequence> - <xs:element name="ContentCode" type="udt:CodeType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Content" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="SubjectCode" type="udt:CodeType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProductCharacteristicType"> - <xs:sequence> - <xs:element name="TypeCode" type="udt:CodeType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ValueMeasure" type="udt:MeasureType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Value" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ProductClassificationType"> - <xs:sequence> - <xs:element name="ClassCode" type="udt:CodeType" minOccurs="0"/> - <xs:element name="ClassName" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferencedDocumentType"> - <xs:sequence> - <xs:element name="IssueDateTime" type="qdt:DateMandatoryDateTimeType" minOccurs="0"/> - <xs:element name="LineID" type="udt:IDType" minOccurs="0"/> - <xs:element name="TypeCode" type="qdt:DocumentCodeType" minOccurs="0"/> - <xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ReferenceTypeCode" type="qdt:ReferenceCodeType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="ReferencedProductType"> - <xs:sequence> - <xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/> - <xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/> - <xs:element name="Name" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="UnitQuantity" type="udt:QuantityType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SpecifiedPeriodType"> - <xs:sequence> - <xs:element name="StartDateTime" type="udt:DateTimeType" minOccurs="0"/> - <xs:element name="EndDateTime" type="udt:DateTimeType" minOccurs="0"/> - <xs:element name="CompleteDateTime" type="udt:DateTimeType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplyChainConsignmentType"> - <xs:sequence> - <xs:element name="SpecifiedLogisticsTransportMovement" type="ram:LogisticsTransportMovementType" - minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplyChainEventType"> - <xs:sequence> - <xs:element name="OccurrenceDateTime" type="udt:DateTimeType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplyChainTradeAgreementType"> - <xs:sequence> - <xs:element name="BuyerReference" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="SellerTradeParty" type="ram:TradePartyType" minOccurs="0"/> - <xs:element name="BuyerTradeParty" type="ram:TradePartyType" minOccurs="0"/> - <xs:element name="ProductEndUserTradeParty" type="ram:TradePartyType" minOccurs="0"/> - <xs:element name="ApplicableTradeDeliveryTerms" type="ram:TradeDeliveryTermsType" minOccurs="0"/> - <xs:element name="BuyerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="ContractReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="AdditionalReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="GrossPriceProductTradePrice" type="ram:TradePriceType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="NetPriceProductTradePrice" type="ram:TradePriceType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="CustomerOrderReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" - maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplyChainTradeDeliveryType"> - <xs:sequence> - <xs:element name="BilledQuantity" type="udt:QuantityType" minOccurs="0"/> - <xs:element name="ChargeFreeQuantity" type="udt:QuantityType" minOccurs="0"/> - <xs:element name="PackageQuantity" type="udt:QuantityType" minOccurs="0"/> - <xs:element name="RelatedSupplyChainConsignment" type="ram:SupplyChainConsignmentType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="ShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/> - <xs:element name="UltimateShipToTradeParty" type="ram:TradePartyType" minOccurs="0"/> - <xs:element name="ShipFromTradeParty" type="ram:TradePartyType" minOccurs="0"/> - <xs:element name="ActualDeliverySupplyChainEvent" type="ram:SupplyChainEventType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="DespatchAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/> - <xs:element name="ReceivingAdviceReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="DeliveryNoteReferencedDocument" type="ram:ReferencedDocumentType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplyChainTradeLineItemType"> - <xs:sequence> - <xs:element name="AssociatedDocumentLineDocument" type="ram:DocumentLineDocumentType" minOccurs="0"/> - <xs:element name="SpecifiedSupplyChainTradeAgreement" type="ram:SupplyChainTradeAgreementType" - minOccurs="0"/> - <xs:element name="SpecifiedSupplyChainTradeDelivery" type="ram:SupplyChainTradeDeliveryType" minOccurs="0"/> - <xs:element name="SpecifiedSupplyChainTradeSettlement" type="ram:SupplyChainTradeSettlementType" - minOccurs="0"/> - <xs:element name="SpecifiedTradeProduct" type="ram:TradeProductType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplyChainTradeSettlementType"> - <xs:sequence> - <xs:element name="PaymentReference" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="InvoiceCurrencyCode" type="udt:CodeType" minOccurs="0"/> - <xs:element name="InvoiceeTradeParty" type="ram:TradePartyType" minOccurs="0"/> - <xs:element name="PayeeTradeParty" type="ram:TradePartyType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="SpecifiedTradeSettlementPaymentMeans" type="ram:TradeSettlementPaymentMeansType" - minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ApplicableTradeTax" type="ram:TradeTaxType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BillingSpecifiedPeriod" type="ram:SpecifiedPeriodType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="SpecifiedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="SpecifiedLogisticsServiceCharge" type="ram:LogisticsServiceChargeType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="SpecifiedTradePaymentTerms" type="ram:TradePaymentTermsType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="SpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="SpecifiedTradeSettlementMonetarySummation" type="ram:TradeSettlementMonetarySummationType" - minOccurs="0"/> - <xs:element name="ReceivableSpecifiedTradeAccountingAccount" type="ram:TradeAccountingAccountType" - minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="SupplyChainTradeTransactionType"> - <xs:sequence> - <xs:element name="ApplicableSupplyChainTradeAgreement" type="ram:SupplyChainTradeAgreementType" - minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ApplicableSupplyChainTradeDelivery" type="ram:SupplyChainTradeDeliveryType" - minOccurs="0"/> - <xs:element name="ApplicableSupplyChainTradeSettlement" type="ram:SupplyChainTradeSettlementType" - minOccurs="0"/> - <xs:element name="IncludedSupplyChainTradeLineItem" type="ram:SupplyChainTradeLineItemType" minOccurs="0" - maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TaxRegistrationType"> - <xs:sequence> - <xs:element name="ID" type="udt:IDType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeAccountingAccountType"> - <xs:sequence> - <xs:element name="ID" type="udt:IDType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeAddressType"> - <xs:sequence> - <xs:element name="PostcodeCode" type="udt:CodeType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="LineOne" type="udt:TextType" minOccurs="0"/> - <xs:element name="LineTwo" type="udt:TextType" minOccurs="0"/> - <xs:element name="CityName" type="udt:TextType" minOccurs="0"/> - <xs:element name="CountryID" type="qdt:CountryIDType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeAllowanceChargeType"> - <xs:sequence> - <xs:element name="ChargeIndicator" type="udt:IndicatorType" minOccurs="0"/> - <xs:element name="SequenceNumeric" type="udt:NumericType" minOccurs="0"/> - <xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/> - <xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0"/> - <xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/> - <xs:element name="ActualAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ReasonCode" type="qdt:AllowanceChargeReasonCodeType" minOccurs="0"/> - <xs:element name="Reason" type="udt:TextType" minOccurs="0"/> - <xs:element name="CategoryTradeTax" type="ram:TradeTaxType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeContactType"> - <xs:sequence> - <xs:element name="PersonName" type="udt:TextType" minOccurs="0"/> - <xs:element name="DepartmentName" type="udt:TextType" minOccurs="0"/> - <xs:element name="TelephoneUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="FaxUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="EmailURIUniversalCommunication" type="ram:UniversalCommunicationType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeCountryType"> - <xs:sequence> - <xs:element name="ID" type="qdt:CountryIDType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeDeliveryTermsType"> - <xs:sequence> - <xs:element name="DeliveryTypeCode" type="qdt:DeliveryTermsCodeType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradePartyType"> - <xs:sequence> - <xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Name" type="udt:TextType" minOccurs="0"/> - <xs:element name="DefinedTradeContact" type="ram:TradeContactType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="PostalTradeAddress" type="ram:TradeAddressType" minOccurs="0"/> - <xs:element name="SpecifiedTaxRegistration" type="ram:TaxRegistrationType" minOccurs="0" - maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradePaymentDiscountTermsType"> - <xs:sequence> - <xs:element name="BasisDateTime" type="udt:DateTimeType" minOccurs="0"/> - <xs:element name="BasisPeriodMeasure" type="udt:MeasureType" minOccurs="0"/> - <xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/> - <xs:element name="ActualDiscountAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradePaymentPenaltyTermsType"> - <xs:sequence> - <xs:element name="BasisDateTime" type="udt:DateTimeType" minOccurs="0"/> - <xs:element name="BasisPeriodMeasure" type="udt:MeasureType" minOccurs="0"/> - <xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="CalculationPercent" type="udt:PercentType" minOccurs="0"/> - <xs:element name="ActualPenaltyAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradePaymentTermsType"> - <xs:sequence> - <xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="DueDateDateTime" type="udt:DateTimeType" minOccurs="0"/> - <xs:element name="PartialPaymentAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ApplicableTradePaymentPenaltyTerms" type="ram:TradePaymentPenaltyTermsType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="ApplicableTradePaymentDiscountTerms" type="ram:TradePaymentDiscountTermsType" - minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradePriceType"> - <xs:sequence> - <xs:element name="ChargeAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="BasisQuantity" type="udt:QuantityType" minOccurs="0"/> - <xs:element name="AppliedTradeAllowanceCharge" type="ram:TradeAllowanceChargeType" minOccurs="0" - maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeProductType"> - <xs:sequence> - <xs:element name="GlobalID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="SellerAssignedID" type="udt:IDType" minOccurs="0"/> - <xs:element name="BuyerAssignedID" type="udt:IDType" minOccurs="0"/> - <xs:element name="Name" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="Description" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ApplicableProductCharacteristic" type="ram:ProductCharacteristicType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="DesignatedProductClassification" type="ram:ProductClassificationType" minOccurs="0" - maxOccurs="unbounded"/> - <xs:element name="OriginTradeCountry" type="ram:TradeCountryType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="IncludedReferencedProduct" type="ram:ReferencedProductType" minOccurs="0" - maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeSettlementMonetarySummationType"> - <xs:sequence> - <xs:element name="LineTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ChargeTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AllowanceTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TaxBasisTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TaxTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="GrandTotalAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TotalPrepaidAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TotalAllowanceChargeAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="DuePayableAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeSettlementPaymentMeansType"> - <xs:sequence> - <xs:element name="TypeCode" type="qdt:PaymentMeansCodeType" minOccurs="0"/> - <xs:element name="Information" type="udt:TextType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="ID" type="udt:IDType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="PayerPartyDebtorFinancialAccount" type="ram:DebtorFinancialAccountType" minOccurs="0"/> - <xs:element name="PayeePartyCreditorFinancialAccount" type="ram:CreditorFinancialAccountType" - minOccurs="0"/> - <xs:element name="PayerSpecifiedDebtorFinancialInstitution" type="ram:DebtorFinancialInstitutionType" - minOccurs="0"/> - <xs:element name="PayeeSpecifiedCreditorFinancialInstitution" type="ram:CreditorFinancialInstitutionType" - minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="TradeTaxType"> - <xs:sequence> - <xs:element name="CalculatedAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="TypeCode" type="qdt:TaxTypeCodeType" minOccurs="0"/> - <xs:element name="ExemptionReason" type="udt:TextType" minOccurs="0"/> - <xs:element name="BasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="LineTotalBasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="AllowanceChargeBasisAmount" type="udt:AmountType" minOccurs="0" maxOccurs="unbounded"/> - <xs:element name="CategoryCode" type="qdt:TaxCategoryCodeType" minOccurs="0"/> - <xs:element name="ApplicablePercent" type="udt:PercentType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="UniversalCommunicationType"> - <xs:sequence> - <xs:element name="URIID" type="udt:IDType" minOccurs="0"/> - <xs:element name="CompleteNumber" type="udt:TextType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> -</xs:schema> diff --git a/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd b/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd deleted file mode 100644 index 9a8e41c4..00000000 --- a/src/main/resources/schema/ZUGFeRD1p0_urn_un_unece_uncefact_data_standard_UnqualifiedDataType_15.xsd +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<xs:schema xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - xmlns:xs="http://www.w3.org/2001/XMLSchema" - targetNamespace="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" - elementFormDefault="qualified" - version="15.0"> - <xs:complexType name="AmountType"> - <xs:simpleContent> - <xs:extension base="xs:decimal"> - <xs:attribute name="currencyID" type="udt:AmountTypeCurrencyIDContentType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="AmountTypeCurrencyIDContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="CodeType"> - <xs:simpleContent> - <xs:extension base="xs:token"> - <xs:attribute name="listID" type="xs:token"/> - <xs:attribute name="listVersionID" type="xs:token"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="DateTimeType"> - <xs:choice> - <xs:element name="DateTimeString"> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="xs:string"> - <xs:attribute name="format" type="xs:string"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:choice> - </xs:complexType> - <xs:complexType name="IDType"> - <xs:simpleContent> - <xs:extension base="xs:token"> - <xs:attribute name="schemeID" type="xs:token"/> - <xs:attribute name="schemeAgencyID" type="udt:IDTypeSchemeAgencyIDContentType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="IDTypeSchemeAgencyIDContentType"> - <xs:restriction base="xs:token"/> - </xs:simpleType> - <xs:complexType name="IndicatorType"> - <xs:choice> - <xs:element name="Indicator" type="xs:boolean"/> - </xs:choice> - </xs:complexType> - <xs:complexType name="MeasureType"> - <xs:simpleContent> - <xs:extension base="xs:decimal"> - <xs:attribute name="unitCode" type="udt:MeasureTypeUnitCodeContentType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="MeasureTypeUnitCodeContentType"> - <xs:restriction base="xs:token"> - <xs:minLength value="1"/> - <xs:maxLength value="3"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="NumericType"> - <xs:simpleContent> - <xs:extension base="xs:decimal"/> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="PercentType"> - <xs:simpleContent> - <xs:extension base="xs:decimal"/> - </xs:simpleContent> - </xs:complexType> - <xs:complexType name="QuantityType"> - <xs:simpleContent> - <xs:extension base="xs:decimal"> - <xs:attribute name="unitCode" type="udt:QuantityTypeUnitCodeContentType"/> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - <xs:simpleType name="QuantityTypeUnitCodeContentType"> - <xs:restriction base="xs:token"> - <xs:minLength value="1"/> - <xs:maxLength value="3"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="TextType"> - <xs:simpleContent> - <xs:extension base="xs:string"/> - </xs:simpleContent> - </xs:complexType> -</xs:schema> diff --git a/src/main/resources/stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt b/src/main/resources/stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt deleted file mode 100644 index 8b015f28..00000000 --- a/src/main/resources/stylesheets/ZUGFeRD_1p0_c1p0_s1p0.xslt +++ /dev/null @@ -1,3008 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - -Nutzungsrechte -ZUGFeRD Datenformat Version 1.0, 25.6.2014 - -Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung -eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht -diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“) - -Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung -frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine -Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht -diskriminierenden Bedingungen an. - -Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung -abrufbar unter www.ferd-net.de. - -Im Einzelnen schließt die Nutzungsgewährung ein: -===================================== - -FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils -geltenden und akzeptierten Fassung (www.ferd-net.de) ein. -Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, -Weiterbearbeitung und Verbindung mit anderen Produkten. -Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder -anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige -Anwendungen und Dienste. -Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente -und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um -notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch -die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. -Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, -unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit -anderen Produkten einzuräumen. - -Die Lizenz wird kostenfrei zur Verfügung gestellt. - -Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen -Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, -Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, -beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der -Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können. - ---> -<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:altova="http://www.altova.com" xmlns:altovaext="http://www.altova.com/xslt-extensions" xmlns:clitype="clitype" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:ix="http://www.xbrl.org/2008/inlineXBRL" xmlns:java="java" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:qdt="urn:un:unece:uncefact:data:standard:QualifiedDataType:12" xmlns:ram="urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12" xmlns:rsm="urn:ferd:CrossIndustryDocument:invoice:1p0" xmlns:sps="http://www.altova.com/StyleVision/user-xpath-functions" xmlns:udt="urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="#all"> - <xsl:output version="4.0" method="html" indent="no" encoding="UTF-8" use-character-maps="spaces" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd"/> - <xsl:character-map name="spaces"> - <xsl:output-character character=" " string="&nbsp;"/> - </xsl:character-map> - <xsl:param name="altova:bGeneratingFromPxf" select="false()"/> - <xsl:param name="SV_OutputFormat" select="'HTML'"/> - <xsl:param name="SV_BaseOutputFileName" as="xs:string?"> - <xsl:sequence select="for $i in altovaext:get-base-output-uri(), $j in tokenize( $i, '[/\\]' )[last()] return replace( $j, '\.[^\.\s#%;]*$', '' )" use-when="function-available('altovaext:get-base-output-uri')"/> - </xsl:param> - <xsl:param name="SV_GeneratedFileNamePrefix" select="if ( $SV_BaseOutputFileName ) then $SV_BaseOutputFileName else 'zugferd_1p0_s1p0_c1p0'" as="xs:string?"/> - <xsl:variable name="XML" select="/"/> - <xsl:variable name="altova:nPxPerIn" select="96"/> - <xsl:decimal-format name="format1" grouping-separator="." decimal-separator=","/> - <xsl:import-schema schema-location="../schema/ZUGFeRD_1p0.xsd" use-when="system-property('xsl:is-schema-aware')='yes'" namespace="urn:ferd:CrossIndustryDocument:invoice:1p0"/> - <xsl:variable name="altova:CssImages" select="()"/> - <xsl:template match="/"> - <xsl:call-template name="altova:Root"/> - </xsl:template> - <xsl:template name="altova:Root"> - <html> - <head> - <title/> - <meta http-equiv="X-UA-Compatible" content="IE=9"/> - <xsl:comment>[if IE]><STYLE type="text/css">.altova-rotate-left-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3)} .altova-rotate-right-textbox{filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1)} </STYLE><![endif]</xsl:comment> - <xsl:comment>[if !IE]><!</xsl:comment> - <style type="text/css">.altova-rotate-left-textbox{-webkit-transform: rotate(-90deg) translate(-100%, 0%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(-90deg) translate(-100%, 0%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(-90deg) translate(-100%, 0%); -ms-transform-origin: 0% 0%;}.altova-rotate-right-textbox{-webkit-transform: rotate(90deg) translate(0%, -100%); -webkit-transform-origin: 0% 0%;-moz-transform: rotate(90deg) translate(0%, -100%); -moz-transform-origin: 0% 0%;-ms-transform: rotate(90deg) translate(0%, -100%); -ms-transform-origin: 0% 0%;}</style> - <xsl:comment><![endif]</xsl:comment> - <style type="text/css">@page { margin-left:0.60in; margin-right:0.60in; margin-top:0.79in; margin-bottom:0.79in } @media print { br.altova-page-break { page-break-before: always; } }</style> - </head> - <body style="font-family:Courier; font-size:small; "> - <xsl:for-each select="$XML"> - <xsl:for-each select="rsm:CrossIndustryDocument"> - <span> - <xsl:text>Stylesheet Lesbarmachung der XML-Daten von ZUGFeRD-Rechnungen</xsl:text> - </span> - <br/> - <span> - <xsl:text>ZUGFeRD-Version   : 1.0 vom 25.06.2014 </xsl:text> - </span> - <br/> - <span> - <xsl:text>Stylesheet-Version: 1.0 vom 25.06.2014</xsl:text> - </span> - <br/> - <span> - <xsl:text>Codelisten-Version: 1.0 vom 25.06.2014</xsl:text> - </span> - <br/> - <span> - <xsl:text>(c) AWV e.V. 2014</xsl:text> - </span> - <xsl:variable name="altova:table"> - <table style="border-collapse:collapse; " border="1" width="100%"> - <xsl:variable name="altova:CurrContextGrid_0" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr> - <td> - <br/> - <h2> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:Name"> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text>(</xsl:text> - </span> - <xsl:for-each select="ram:TypeCode"> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text>) Nr. </xsl:text> - </span> - <xsl:for-each select="ram:ID"> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </h2> - <xsl:for-each select="rsm:SpecifiedExchangedDocumentContext"> - <br/> - <xsl:for-each select="ram:TestIndicator"> - <xsl:for-each select="udt:Indicator"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Testkennzeichen      : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:BusinessProcessSpecifiedDocumentContextParameter"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Geschäftsprozess     : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedExchangedDocumentContext"> - <xsl:for-each select="ram:GuidelineSpecifiedDocumentContextParameter"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Anwendungsempfehlung : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:CopyIndicator"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Kopie                : </xsl:text> - </span> - <xsl:for-each select="udt:Indicator"> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:LanguageID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Sprache              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:InvoiceCurrencyCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Währung              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - </td> - </tr> - <tr> - <td> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <xsl:for-each select="ram:EffectiveSpecifiedPeriod"> - <xsl:for-each select="ram:CompleteDateTime"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Vertragliches Fälligkeitsdatum: </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ActualDeliverySupplyChainEvent"> - <xsl:for-each select="ram:OccurrenceDateTime"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Liefer- und Leistungsdatum    : </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:BillingSpecifiedPeriod"> - <xsl:for-each select="ram:StartDateTime"> - <br/> - <span> - <xsl:text>Abrechnungszeitraum           : </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - <span> - <xsl:text> bis </xsl:text> - </span> - <xsl:for-each select="ram:EndDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerReference"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Referenz des Käufers          : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:PaymentReference"> - <br/> - <span style="empty-cells:hide; font-weight:bold; "> - <xsl:text>Zahlungsreferenz              : </xsl:text> - </span> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:ReceivableSpecifiedTradeAccountingAccount"> - <xsl:for-each select="ram:ID"> - <br/> - <span> - <xsl:text>Buchungsreferenz              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:ApplicableTradeDeliveryTerms"> - <xsl:for-each select="ram:DeliveryTypeCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Lieferbedingung (codiert)     : </xsl:text> - </span> - <xsl:call-template name="DeliveryTypeCode"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:RelatedSupplyChainConsignment"> - <xsl:for-each select="ram:SpecifiedLogisticsTransportMovement"> - <xsl:for-each select="ram:ModeCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Versandart (codiert)          : </xsl:text> - </span> - <xsl:call-template name="ram:VersandMode"/> - </xsl:for-each> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Versand-ID                    : </xsl:text> - </span> - <xsl:apply-templates/> - <xsl:for-each select="@schemeID"> - <span style="empty-cells:hide; "> - <xsl:text>, Art: </xsl:text> - </span> - <xsl:call-template name="ram:Versand_Identifer"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerOrderReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Bestellung                    : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_1"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_1" select="string($altova:seqContentStrings_1)"/> - <xsl:value-of select="$altova:sContent_1"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:DespatchAdviceReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Lieferavis                    : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_2"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_2" select="string($altova:seqContentStrings_2)"/> - <xsl:value-of select="$altova:sContent_2"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:DeliveryNoteReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Lieferschein                  : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_3"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_3" select="string($altova:seqContentStrings_3)"/> - <xsl:value-of select="$altova:sContent_3"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:ContractReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Vertrag                       : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_4"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_4" select="string($altova:seqContentStrings_4)"/> - <xsl:value-of select="$altova:sContent_4"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:CustomerOrderReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Kundenbestellung              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_5"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_5" select="string($altova:seqContentStrings_5)"/> - <xsl:value-of select="$altova:sContent_5"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:AdditionalReferencedDocument"> - <xsl:for-each select="ram:ID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Weitere Referenz              : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <span style="empty-cells:hide; "> - <xsl:text> vom </xsl:text> - </span> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:variable name="altova:seqContentStrings_6"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_6" select="string($altova:seqContentStrings_6)"/> - <xsl:value-of select="$altova:sContent_6"/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:TypeCode"> - <span style="empty-cells:hide; "> - <xsl:text>, Art der Referenz: </xsl:text> - </span> - <xsl:call-template name="ram:Referenz"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <br/> - <span style="empty-cells:hide; "> - <xsl:text> </xsl:text> - </span> - </td> - </tr> - <tr> - <td> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:SellerTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Verkäufer:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Käufer:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeAgreement"> - <xsl:for-each select="ram:ProductEndUserTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Endverbraucher:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ShipToTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Warenempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:UltimateShipToTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Endempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ShipFromTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Versender:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:InvoiceeTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Rechnungsempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:PayeeTradeParty"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Abweichender Zahlungsempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - <tr> - <td> - <xsl:for-each select="rsm:HeaderExchangedDocument"> - <br/> - <xsl:for-each select="ram:IncludedNote"> - <xsl:for-each select="ram:SubjectCode"> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>Qualifizierung der Textart: </xsl:text> - </span> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ContentCode"> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>, Qualifizierung des Textes: </xsl:text> - </span> - <span style="font-weight:bold; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:Content"> - <br/> - <span style="font-weight:bold; white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - <br/> - <br/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; "> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_7" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="text-align:center; vertical-align:middle; "> - <td style="border-bottom-style:solid; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> - <span style="font-weight:bold; "> - <xsl:text>Pos</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:left; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Kunde</xsl:text> - </span> - <br/> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Lief.</xsl:text> - </span> - <br/> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr</xsl:text> - </span> - <br/> - <span style="font-weight:bold; "> - <xsl:text>(Art)</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <span style="font-weight:bold; "> - <xsl:text>Beschreibung</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>E-Preis</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:120px; "> - <span style="font-weight:bold; "> - <xsl:text>Menge</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Steuer</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Entgelt</xsl:text> - </span> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:IncludedSupplyChainTradeLineItem"> - <xsl:if test="fn:not( fn:empty(ram:SpecifiedTradeProduct))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_8" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="vertical-align:top; "> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> - <xsl:for-each select="ram:AssociatedDocumentLineDocument"> - <xsl:if test="fn:empty(ram:IncludedNote)"> - <xsl:for-each select="ram:LineID"> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:BuyerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:SellerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:GlobalID"> - <xsl:apply-templates/> - <br/> - <xsl:for-each select="@schemeID"> - <xsl:call-template name="ram:Global_Identifier"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:Name"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - <br/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:if test="fn:exists(ram:GrossPriceProductTradePrice)"> - <xsl:for-each select="ram:GrossPriceProductTradePrice"> - <xsl:for-each select="ram:BasisQuantity"> - <span> - <xsl:text>Preisbasismenge: </xsl:text> - </span> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - <xsl:if test="fn:not(fn:exists(ram:GrossPriceProductTradePrice))"> - <xsl:for-each select="ram:NetPriceProductTradePrice"> - <xsl:for-each select="ram:BasisQuantity"> - <br/> - <span> - <xsl:text>Preisbasismenge: </xsl:text> - </span> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:if test="fn:exists(ram:GrossPriceProductTradePrice)"> - <xsl:for-each select="ram:GrossPriceProductTradePrice"> - <xsl:for-each select="ram:ChargeAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_9"> - <xsl:value-of select="format-number(number(string(.)), '##0,0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_9" select="string($altova:seqContentStrings_9)"/> - <xsl:value-of select="$altova:sContent_9"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - <xsl:if test="not(fn:exists(ram:GrossPriceProductTradePrice))"> - <xsl:for-each select="ram:NetPriceProductTradePrice"> - <xsl:for-each select="ram:ChargeAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_10"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_10" select="string($altova:seqContentStrings_10)"/> - <xsl:value-of select="$altova:sContent_10"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:120px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:BilledQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - <xsl:for-each select="ram:ChargeFreeQuantity"> - <br/> - <span> - <xsl:text>kostenfrei:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:ApplicableTradeTax"> - <xsl:call-template name="ram:TradeTax"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:solid; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> - <xsl:for-each select="ram:LineTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_11"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_11" select="string($altova:seqContentStrings_11)"/> - <xsl:value-of select="$altova:sContent_11"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:for-each select="ram:AssociatedDocumentLineDocument"> - <xsl:if test="fn:not( fn:empty(ram:IncludedNote))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; border-top-style:none; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_12" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:center; width:30px; "> - <xsl:for-each select="ram:LineID"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - <td style="border-bottom-style:none; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <xsl:for-each select="ram:IncludedNote"> - <xsl:for-each select="ram:Content"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:SubjectCode"> - <br/> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>Qualifizierung der Textart: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ContentCode"> - <span style="color:gray; empty-cells:hide; "> - <xsl:text>, Qualifizierung des Textes: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:for-each select="ram:GrossPriceProductTradePrice"> - <xsl:if test="fn:not( fn:empty(ram:AppliedTradeAllowanceCharge))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_13" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-bottom-style:none; border-left-style:none; border-top-style:none; width:30px; "/> - <td style="border-bottom-style:none; border-top-style:none; width:110px; "/> - <td style="border-bottom-style:none; border-right-style:none; border-top-style:none; "> - <xsl:variable name="altova:table"> - <table style="border:0px; border-style:none; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_14" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:left; width:70px; "> - <span style="font-style:italic; "> - <xsl:text>Art</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:left; "> - <span style="font-style:italic; "> - <xsl:text>Grund</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:70px; "> - <span style="font-style:italic; "> - <xsl:text>%</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:110px; "> - <span style="font-style:italic; "> - <xsl:text>Basisbetrag</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:120px; "> - <span style="font-style:italic; "> - <xsl:text>Basismenge</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; font-weight:normal; text-align:right; width:110px; "> - <span style="font-style:italic; "> - <xsl:text>Betrag</xsl:text> - </span> - </th> - <th style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; width:112px; "/> - </tr> - </thead> - <tbody> - <xsl:for-each select="ram:AppliedTradeAllowanceCharge"> - <xsl:sort select="ram:SequenceNumeric" data-type="text" order="ascending"/> - <tr> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; vertical-align:top; width:70px; "> - <xsl:for-each select="ram:ChargeIndicator"> - <xsl:for-each select="udt:Indicator"> - <span> - <xsl:value-of select="if (. = fn:true())then 'Zuschlag' else 'Abschlag'"/> - </span> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SequenceNumeric"> - <span> - <xsl:text> Nr. </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; vertical-align:top; "> - <xsl:for-each select="ram:Reason"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ReasonCode"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:call-template name="AllowanceChargeReasonCode"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:70px; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_15"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_15" select="string($altova:seqContentStrings_15)"/> - <xsl:value-of select="$altova:sContent_15"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_16"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_16" select="string($altova:seqContentStrings_16)"/> - <xsl:value-of select="$altova:sContent_16"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:120px; "> - <xsl:for-each select="ram:BasisQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:ActualAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_17"> - <xsl:value-of select="format-number(number(if(../ram:ChargeIndicator/udt:Indicator = fn:false()) then -1*. else .), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_17" select="string($altova:seqContentStrings_17)"/> - <xsl:value-of select="$altova:sContent_17"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:108px; "/> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(../../ram:SpecifiedSupplyChainTradeSettlement/ram:SpecifiedTradeSettlementMonetarySummation/ram:TotalAllowanceChargeAmount)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_18" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:30px; "/> - <td style="border-bottom-style:none; border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - <td style="border-bottom-style:none; border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <br/> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "> - <span> - <xsl:text>Summe:</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:double; empty-cells:hide; text-align:right; width:110px; "> - <xsl:for-each select="$XML"> - <xsl:for-each select="rsm:CrossIndustryDocument"> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:IncludedSupplyChainTradeLineItem"> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> - <xsl:for-each select="ram:TotalAllowanceChargeAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_19"> - <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_19" select="string($altova:seqContentStrings_19)"/> - <xsl:value-of select="$altova:sContent_19"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; text-align:right; width:110px; "/> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:for-each> - </xsl:for-each> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-spacing:0px; border-top-style:none; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_20" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="empty-cells:hide; vertical-align:top; "> - <td style="border-collapse:collapse; border-left-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:30px; "/> - <td style="border-collapse:collapse; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - <td style="border-collapse:collapse; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; "> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:Description"> - <br/> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ActualDeliverySupplyChainEvent"> - <xsl:for-each select="ram:OccurrenceDateTime"> - <br/> - <span> - <xsl:text>* Leistungsdatum: </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:BillingSpecifiedPeriod"> - <br/> - <span> - <xsl:text>* Berechnungszeitraum: </xsl:text> - </span> - <xsl:for-each select="ram:StartDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:EndDateTime"> - <span> - <xsl:text> bis </xsl:text> - </span> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:OriginTradeCountry"> - <xsl:for-each select="ram:ID"> - <br/> - <span> - <xsl:text>* Herkunftsland: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:PackageQuantity"> - <br/> - <span> - <xsl:text>* Anzahl Packstücke: </xsl:text> - </span> - <span> - <xsl:variable name="altova:seqContentStrings_21"> - <xsl:value-of select="format-number(number(string(.)), '##0', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_21" select="string($altova:seqContentStrings_21)"/> - <xsl:value-of select="$altova:sContent_21"/> - </span> - </xsl:for-each> - <xsl:call-template name="PackageQuantity"/> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeAgreement"> - <xsl:for-each select="ram:BuyerOrderReferencedDocument"> - <br/> - <span> - <xsl:text>* Bestellung</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:ContractReferencedDocument"> - <br/> - <span> - <xsl:text>* Vertrag</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:AdditionalReferencedDocument"> - <br/> - <span> - <xsl:text>* Dokument (</xsl:text> - </span> - <xsl:for-each select="ram:ReferenceTypeCode"> - <xsl:call-template name="ram:Referenz"/> - </xsl:for-each> - <span> - <xsl:text>)</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:CustomerOrderReferencedDocument"> - <br/> - <span> - <xsl:text>* Kundenbestellung</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:DespatchAdviceReferencedDocument"> - <br/> - <span> - <xsl:text>* Lieferavis</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:ReceivingAdviceReferencedDocument"> - <br/> - <span> - <xsl:text>* Wareneingang </xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - <xsl:for-each select="ram:DeliveryNoteReferencedDocument"> - <br/> - <span> - <xsl:text>* Lieferschein</xsl:text> - </span> - <xsl:call-template name="ram:Positionsreferenz"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeAccountingAccount"> - <xsl:for-each select="ram:ID"> - <br/> - <span> - <xsl:text>* Buchungsreferenz: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:for-each select="ram:DesignatedProductClassification"> - <br/> - <span> - <xsl:text>* Klassifikation: </xsl:text> - </span> - <xsl:for-each select="ram:ClassCode"> - <span> - <xsl:text>[</xsl:text> - </span> - <xsl:apply-templates/> - <span> - <xsl:text>] </xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ClassName"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ClassCode"> - <xsl:call-template name="Klassifikationsart"/> - <xsl:for-each select="@listVersionID"> - <span> - <xsl:text>, Version: </xsl:text> - </span> - <span> - <xsl:value-of select="string(.)"/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedSupplyChainTradeDelivery"> - <xsl:for-each select="ram:ShipToTradeParty"> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Abweichender Warenempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - <xsl:for-each select="ram:UltimateShipToTradeParty"> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Abweichender Endempfänger:</xsl:text> - </span> - <br/> - <xsl:call-template name="ram:Party"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:if test="fn:exists(ram:ApplicableProductCharacteristic)"> - <br/> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Weitere Eigenschaften:</xsl:text> - </span> - <br/> - </xsl:if> - <xsl:for-each select="ram:ApplicableProductCharacteristic"> - <xsl:for-each select="ram:Description"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <span> - <xsl:text>: </xsl:text> - </span> - <xsl:for-each select="ram:TypeCode"> - <xsl:apply-templates/> - </xsl:for-each> - <span> - <xsl:text> = </xsl:text> - </span> - <xsl:for-each select="ram:Value"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ValueMeasure"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:if test="fn:exists(ram:SpecifiedTradeProduct/ram:IncludedReferencedProduct)"> - <br/> - <br/> - <span style="text-decoration:underline; "> - <xsl:text>Basisartikel:</xsl:text> - </span> - <br/> - </xsl:if> - <xsl:for-each select="ram:SpecifiedTradeProduct"> - <xsl:if test="fn:exists(ram:IncludedReferencedProduct)"> - <xsl:variable name="altova:table"> - <table style="border:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_22" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; text-align:left; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Kunde</xsl:text> - </span> - <br/> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Art-Nr-Lief.</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; width:110px; "> - <span> - <xsl:text>Art-Nr. (Art)</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; "> - <span> - <xsl:text>Beschreibung</xsl:text> - </span> - </th> - <th style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; text-align:right; width:120px; "> - <span> - <xsl:text>Menge</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="ram:IncludedReferencedProduct"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; text-align:left; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:BuyerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:SellerAssignedID"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; width:110px; "> - <xsl:for-each select="ram:GlobalID"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:GlobalID"> - <xsl:for-each select="@schemeID"> - <xsl:call-template name="ram:Global_Identifier"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; vertical-align:top; "> - <xsl:for-each select="ram:Name"> - <xsl:apply-templates/> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:Description"> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-left-style:none; border-right-style:none; border-top-style:none; text-align:right; vertical-align:top; width:120px; "> - <xsl:for-each select="ram:UnitQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:for-each> - </td> - <td style="border-collapse:collapse; border-left-style:none; border-right-style:none; border-spacing:0px; border-top-style:none; empty-cells:hide; width:110px; "/> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:for-each> - </xsl:for-each> - <br/> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; border-top-style:none; "> - <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:SpecifiedTradePaymentTerms)"> - <br/> - <span style="empty-cells:hide; font-weight:bold; text-decoration:underline; "> - <xsl:text>Zahlungsbedingungen:</xsl:text> - </span> - <br/> - <br/> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-right-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_23" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-left-style:none; "> - <span> - <xsl:text>Beschreibung</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Fälligkeit</xsl:text> - </span> - </th> - <th style="border-right-style:none; width:110px; "> - <span> - <xsl:text>Teilzahlung</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradePaymentTerms"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; "> - <xsl:for-each select="ram:Description"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; text-align:center; width:110px; "> - <xsl:for-each select="ram:DueDateDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-right-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:PartialPaymentAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_24"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_24" select="string($altova:seqContentStrings_24)"/> - <xsl:value-of select="$altova:sContent_24"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td colspan="3" style="border-left-style:none; border-right-style:none; border-top-style:none; min-height:0px; "> - <xsl:if test="fn:exists(ram:ApplicableTradePaymentPenaltyTerms) or fn:exists(ram:ApplicableTradePaymentDiscountTerms)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-left-style:none; border-top-style:none; margin:0px; padding:0px; " border="1" width="100%"> - <xsl:variable name="altova:CurrContextGrid_25" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr style="border-bottom-style:none; border-top-style:none; "> - <td style="border-bottom-style:none; border-left-style:none; border-top-style:none; min-height:0px; "/> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Bezug</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Innerhalb</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Basisbetrag</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>%</xsl:text> - </span> - </td> - <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:center; width:108px; "> - <span style="font-weight:bold; "> - <xsl:text>Betrag</xsl:text> - </span> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(ram:ApplicableTradePaymentPenaltyTerms)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-bottom-style:none; border-collapse:collapse; margin:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_26" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:ApplicableTradePaymentPenaltyTerms"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; min-height:0px; text-align:right; "> - <span> - <xsl:text>Zuschlag  </xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <xsl:for-each select="ram:BasisDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisPeriodMeasure"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_27"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_27" select="string($altova:seqContentStrings_27)"/> - <xsl:value-of select="$altova:sContent_27"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_28"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_28" select="string($altova:seqContentStrings_28)"/> - <xsl:value-of select="$altova:sContent_28"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:right; width:108px; "> - <xsl:for-each select="ram:ActualPenaltyAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_29"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_29" select="string($altova:seqContentStrings_29)"/> - <xsl:value-of select="$altova:sContent_29"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(ram:ApplicableTradePaymentDiscountTerms)"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; margin:0px; padding:0px; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_30" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:ApplicableTradePaymentDiscountTerms"> - <tr> - <td style="border-bottom-style:none; border-left-style:none; min-height:0px; text-align:right; "> - <span> - <xsl:text>Skonto  </xsl:text> - </span> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:center; width:110px; "> - <xsl:for-each select="ram:BasisDateTime"> - <xsl:for-each select="udt:DateTimeString"> - <xsl:call-template name="ram:Datum"/> - </xsl:for-each> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisPeriodMeasure"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_31"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_31" select="string($altova:seqContentStrings_31)"/> - <xsl:value-of select="$altova:sContent_31"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; min-height:0px; text-align:right; width:110px; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_32"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_32" select="string($altova:seqContentStrings_32)"/> - <xsl:value-of select="$altova:sContent_32"/> - </span> - </xsl:for-each> - </td> - <td style="border-bottom-style:none; border-right-style:none; min-height:0px; text-align:right; width:108px; "> - <xsl:for-each select="ram:ActualDiscountAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_33"> - <xsl:value-of select="format-number(number(-1 * .), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_33" select="string($altova:seqContentStrings_33)"/> - <xsl:value-of select="$altova:sContent_33"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </td> - </tr> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:SpecifiedTradeSettlementPaymentMeans)"> - <br/> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Zahlungsart:</xsl:text> - </span> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementPaymentMeans"> - <xsl:for-each select="ram:Information"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:TypeCode"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Zahlungstyp (codiert): </xsl:text> - </span> - <xsl:call-template name="ram:PaymentType"/> - </xsl:for-each> - <xsl:for-each select="ram:ID"> - <xsl:for-each select="@schemeAgencyID"> - <br/> - <span> - <xsl:text>Gläubiger-ID         : </xsl:text> - </span> - <span> - <xsl:value-of select="string(.)"/> - </span> - </xsl:for-each> - <br/> - <span> - <xsl:text>Mandatsreferenz      : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:PayerPartyDebtorFinancialAccount"> - <xsl:for-each select="ram:IBANID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-IBAN          : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ProprietaryID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-Kontonummer   : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:PayerSpecifiedDebtorFinancialInstitution"> - <xsl:for-each select="ram:BICID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-BIC           : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:GermanBankleitzahlID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-Bankleitzahl  : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:Name"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Käufer-Kreditinstitut: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:PayeePartyCreditorFinancialAccount"> - <xsl:for-each select="ram:AccountName"> - <br/> - <span> - <xsl:text>Verkäufer-Kontoname  : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:IBANID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-IBAN       : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ProprietaryID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-Kontonummer: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:PayeeSpecifiedCreditorFinancialInstitution"> - <xsl:for-each select="ram:BICID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-BIC        : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:GermanBankleitzahlID"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-BLZ        : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:Name"> - <br/> - <span style="empty-cells:hide; "> - <xsl:text>Verkäufer-Kreditinst.: </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </xsl:if> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; border-right-style:none; border-top-style:none; "> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <br/> - <xsl:if test="fn:exists(ram:SpecifiedTradeAllowanceCharge) or fn:exists(ram:SpecifiedLogisticsServiceCharge)"> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Zu- und Abschläge:</xsl:text> - </span> - <br/> - <br/> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; empty-cells:hide; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_34" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th colspan="2" style="border-left-style:none; "> - <span> - <xsl:text>Art</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>%</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>Basisbetrag</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Basismenge</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Steuer</xsl:text> - </span> - </th> - <th style="border-right-style:none; width:110px; "> - <span> - <xsl:text>Betrag</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="ram:SpecifiedTradeAllowanceCharge"> - <xsl:sort select="ram:SequenceNumeric" data-type="text" order="ascending"/> - <tr> - <td style="border-left-style:none; "> - <xsl:for-each select="ram:ChargeIndicator"> - <xsl:for-each select="udt:Indicator"> - <span> - <xsl:value-of select="if (. = fn:true())then 'Zuschlag' else 'Abschlag'"/> - </span> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SequenceNumeric"> - <span> - <xsl:text> Nr. </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td> - <xsl:for-each select="ram:Reason"> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:ReasonCode"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:call-template name="AllowanceChargeReasonCode"/> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:CalculationPercent"> - <span> - <xsl:variable name="altova:seqContentStrings_35"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_35" select="string($altova:seqContentStrings_35)"/> - <xsl:value-of select="$altova:sContent_35"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_36"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_36" select="string($altova:seqContentStrings_36)"/> - <xsl:value-of select="$altova:sContent_36"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisQuantity"> - <xsl:call-template name="ram:Menge"/> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:CategoryTradeTax"> - <xsl:call-template name="ram:TradeTax"/> - </xsl:for-each> - </td> - <td style="border-right-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:ActualAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_37"> - <xsl:value-of select="format-number(number(if (../ram:ChargeIndicator/udt:Indicator = fn:true()) then . else -1 * .), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_37" select="string($altova:seqContentStrings_37)"/> - <xsl:value-of select="$altova:sContent_37"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - <xsl:if test="fn:exists(ram:SpecifiedLogisticsServiceCharge)"> - <xsl:if test="fn:not(fn:exists(ram:SpecifiedTradeAllowanceCharge))"> - <xsl:variable name="altova:table"> - <table style="border:0px; border-top-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_38" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:SpecifiedLogisticsServiceCharge"> - <tr> - <td style="border-left-style:none; border-top-style:solid; text-align:center; "> - <span style="font-weight:bold; "> - <xsl:text>Art</xsl:text> - </span> - </td> - <td style="border-top-style:solid; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Steuer</xsl:text> - </span> - </td> - <td style="border-right-style:none; border-top-style:solid; text-align:center; width:110px; "> - <span style="font-weight:bold; "> - <xsl:text>Betrag</xsl:text> - </span> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - <xsl:variable name="altova:table"> - <table style="border:0px; border-top-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_39" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <xsl:for-each select="ram:SpecifiedLogisticsServiceCharge"> - <tr> - <td style="border-left-style:none; border-top-style:none; "> - <xsl:for-each select="ram:Description"> - <span style="white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - </td> - <td style="border-top-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:AppliedTradeTax"> - <xsl:call-template name="ram:TradeTax"/> - </xsl:for-each> - </td> - <td style="border-right-style:none; border-top-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:AppliedAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_40"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_40" select="string($altova:seqContentStrings_40)"/> - <xsl:value-of select="$altova:sContent_40"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </xsl:if> - <br/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"/> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; border-top-style:none; "> - <xsl:if test="fn:exists(rsm:SpecifiedSupplyChainTradeTransaction/ram:ApplicableSupplyChainTradeSettlement/ram:ApplicableTradeTax)"> - <br/> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Steuern:</xsl:text> - </span> - <br/> - <br/> - <xsl:variable name="altova:table"> - <table style="border:0px; border-collapse:collapse; border-right-style:none; width:100%; " border="1"> - <xsl:variable name="altova:CurrContextGrid_41" select="."/> - <xsl:variable name="altova:ColumnData"/> - <thead> - <tr> - <th style="border-left-style:none; "> - <span> - <xsl:text>Art (Kategorie)</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>Warenwert</xsl:text> - </span> - </th> - <th> - <span> - <xsl:text>Zu-/Abschlag</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>Nettobetrag</xsl:text> - </span> - </th> - <th style="width:110px; "> - <span> - <xsl:text>USt. %</xsl:text> - </span> - </th> - <th style="border-right-style:none; width:110px; "> - <span> - <xsl:text>USt.-Betrag</xsl:text> - </span> - </th> - </tr> - </thead> - <tbody> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:ApplicableTradeTax"> - <tr> - <td style="border-left-style:none; "> - <xsl:for-each select="ram:TypeCode"> - <xsl:apply-templates/> - </xsl:for-each> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:for-each select="ram:CategoryCode"> - <span> - <xsl:text>(</xsl:text> - </span> - <xsl:apply-templates/> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ExemptionReason"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:LineTotalBasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_42"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_42" select="string($altova:seqContentStrings_42)"/> - <xsl:value-of select="$altova:sContent_42"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; "> - <xsl:for-each select="ram:AllowanceChargeBasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_43"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_43" select="string($altova:seqContentStrings_43)"/> - <xsl:value-of select="$altova:sContent_43"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:BasisAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_44"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_44" select="string($altova:seqContentStrings_44)"/> - <xsl:value-of select="$altova:sContent_44"/> - </span> - </xsl:for-each> - </td> - <td style="text-align:right; width:110px; "> - <xsl:for-each select="ram:ApplicablePercent"> - <span> - <xsl:variable name="altova:seqContentStrings_45"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_45" select="string($altova:seqContentStrings_45)"/> - <xsl:value-of select="$altova:sContent_45"/> - </span> - </xsl:for-each> - </td> - <td style="border-right-style:none; text-align:right; width:110px; "> - <xsl:for-each select="ram:CalculatedAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_46"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_46" select="string($altova:seqContentStrings_46)"/> - <xsl:value-of select="$altova:sContent_46"/> - </span> - </xsl:for-each> - </td> - </tr> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:if> - </td> - </tr> - <tr> - <td style="border-bottom-style:none; text-align:left; "> - <br/> - <span style="font-weight:bold; text-decoration:underline; "> - <xsl:text>Belegsummen:</xsl:text> - </span> - <br/> - <xsl:for-each select="rsm:SpecifiedSupplyChainTradeTransaction"> - <xsl:for-each select="ram:ApplicableSupplyChainTradeSettlement"> - <xsl:for-each select="ram:SpecifiedTradeSettlementMonetarySummation"> - <xsl:variable name="altova:table"> - <table style="border:0px; " border="1" width="100%"> - <xsl:variable name="altova:CurrContextGrid_47" select="."/> - <xsl:variable name="altova:ColumnData"/> - <tbody> - <tr> - <td style="border-style:none; "/> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> - <span style="font-weight:bold; "> - <xsl:text>Positionssumme</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:LineTotalAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_48"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_48" select="string($altova:seqContentStrings_48)"/> - <xsl:value-of select="$altova:sContent_48"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <span> - <xsl:text>Gesamtbetrag der Zuschläge</xsl:text> - </span> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:ChargeTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_49"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_49" select="string($altova:seqContentStrings_49)"/> - <xsl:value-of select="$altova:sContent_49"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <span> - <xsl:text>Gesamtbetrag der Abschläge</xsl:text> - </span> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:AllowanceTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_50"> - <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_50" select="string($altova:seqContentStrings_50)"/> - <xsl:value-of select="$altova:sContent_50"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> - <span style="font-weight:bold; "> - <xsl:text>Rechnungssumme ohne USt.</xsl:text> - </span> - </td> - <td style="border-bottom-style:solid; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:TaxBasisTotalAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_51"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_51" select="string($altova:seqContentStrings_51)"/> - <xsl:value-of select="$altova:sContent_51"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <span> - <xsl:text>Steuerbetrag</xsl:text> - </span> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:TaxTotalAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_52"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_52" select="string($altova:seqContentStrings_52)"/> - <xsl:value-of select="$altova:sContent_52"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border-bottom-style:double; border-bottom-width:medium; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:left; width:220px; "> - <span style="font-weight:bold; "> - <xsl:text>Bruttosumme</xsl:text> - </span> - </td> - <td style="border-bottom-style:double; border-bottom-width:medium; border-left-style:none; border-right-style:none; border-top-style:none; padding:1px; text-align:right; width:110px; "> - <xsl:for-each select="ram:GrandTotalAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_53"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_53" select="string($altova:seqContentStrings_53)"/> - <xsl:value-of select="$altova:sContent_53"/> - </span> - </xsl:for-each> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <xsl:if test="(ram:TotalPrepaidAmount>=0 and fn:exists(ram:TotalPrepaidAmount)) or(fn:not(fn:exists(ram:TotalPrepaidAmount)) and fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID , 'basic' )))"> - <span> - <xsl:text>Erhaltene Anzahlungen</xsl:text> - </span> - <br/> - </xsl:if> - <xsl:if test="ram:TotalPrepaidAmount<0 and fn:exists(ram:TotalPrepaidAmount)"> - <span> - <xsl:text>Offene Zahlungen</xsl:text> - </span> - <br/> - </xsl:if> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:if test="fn:exists(TotalPrepaidAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/ram:GuidelineSpecifiedDocumentContextParameter/ram:ID , 'basic' ))"> - <xsl:for-each select="ram:TotalPrepaidAmount"> - <span> - <xsl:variable name="altova:seqContentStrings_54"> - <xsl:value-of select="format-number(number(-1*.), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_54" select="string($altova:seqContentStrings_54)"/> - <xsl:value-of select="$altova:sContent_54"/> - </span> - </xsl:for-each> - </xsl:if> - </td> - </tr> - <tr> - <td style="border-style:none; "/> - <td style="border:0px; border-top-style:double; padding:1px; text-align:left; width:220px; "> - <xsl:if test="fn:exists(ram:DuePayableAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/GuidelineSpecifiedDocumentContextParameter/ID , 'basic' ))"> - <span style="font-weight:bold; "> - <xsl:text>Zahlbetrag</xsl:text> - </span> - </xsl:if> - </td> - <td style="border:0px; border-top-style:double; padding:1px; text-align:right; width:110px; "> - <xsl:if test="fn:exists(ram:DuePayableAmount) or fn:not(ends-with( ../../../rsm:SpecifiedExchangedDocumentContext/GuidelineSpecifiedDocumentContextParameter/ID , 'basic' ))"> - <xsl:for-each select="ram:DuePayableAmount"> - <span style="font-weight:bold; "> - <xsl:variable name="altova:seqContentStrings_55"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_55" select="string($altova:seqContentStrings_55)"/> - <xsl:value-of select="$altova:sContent_55"/> - </span> - </xsl:for-each> - </xsl:if> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - </td> - </tr> - </tbody> - </table> - </xsl:variable> - <xsl:variable name="altova:col-count" select="sum( for $altova:cell in $altova:table/table/(thead | tbody | tfoot)[ 1 ]/tr[ 1 ]/(th | td) return altova:col-span( $altova:cell ) )"/> - <xsl:variable name="altova:generate-cols" as="xs:boolean*" select="for $altova:pos in 1 to $altova:col-count return true()"/> - <xsl:apply-templates select="$altova:table" mode="altova:generate-table"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - <br/> - </xsl:for-each> - </xsl:for-each> - <br/> - <br/> - </body> - </html> - </xsl:template> - <xsl:template name="ram:Party"> - <xsl:for-each select="ram:ID"> - <span> - <xsl:text>Nummer        : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="@schemeID"> - <xsl:call-template name="local_Identifier"/> - </xsl:for-each> - <xsl:for-each select="ram:GlobalID"> - <br/> - <span> - <xsl:text>Globale Nummer: </xsl:text> - </span> - <xsl:apply-templates/> - <xsl:for-each select="@schemeID"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:call-template name="ram:Global_Identifier"/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:Name"> - <br/> - <span style="font-weight:bold; white-space:pre-wrap; "> - <xsl:apply-templates/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:DefinedTradeContact"> - <xsl:for-each select="ram:PersonName"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:DepartmentName"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:PostalTradeAddress"> - <xsl:for-each select="ram:LineOne"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:LineTwo"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:CountryID"> - <br/> - <xsl:apply-templates/> - <span> - <xsl:text> </xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:PostcodeCode"> - <xsl:apply-templates/> - <span> - <xsl:text> </xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:CityName"> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <br/> - <xsl:for-each select="ram:DefinedTradeContact"> - <xsl:for-each select="ram:TelephoneUniversalCommunication"> - <xsl:for-each select="ram:CompleteNumber"> - <br/> - <span> - <xsl:text>Telefon      : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:FaxUniversalCommunication"> - <xsl:for-each select="ram:CompleteNumber"> - <br/> - <span> - <xsl:text>Fax          : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:EmailURIUniversalCommunication"> - <xsl:for-each select="ram:URIID"> - <br/> - <span> - <xsl:text>E-Mail       : </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:for-each> - </xsl:for-each> - <xsl:for-each select="ram:SpecifiedTaxRegistration"> - <xsl:for-each select="ram:ID"> - <br/> - <xsl:call-template name="ram:TaxRegistration"/> - </xsl:for-each> - </xsl:for-each> - <br/> - </xsl:template> - <xsl:template name="ram:TradeTax"> - <xsl:for-each select="ram:ApplicablePercent"> - <span> - <xsl:variable name="altova:seqContentStrings_56"> - <xsl:value-of select="format-number(number(string(.)), '###.##0,####', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_56" select="string($altova:seqContentStrings_56)"/> - <xsl:value-of select="$altova:sContent_56"/> - </span> - <span> - <xsl:text> %</xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:TypeCode"> - <span> - <xsl:text> </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:CategoryCode"> - <span> - <xsl:text> (</xsl:text> - </span> - <xsl:apply-templates/> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:for-each> - <xsl:for-each select="ram:CalculatedAmount"> - <span> - <xsl:text> entspricht </xsl:text> - </span> - <span> - <xsl:variable name="altova:seqContentStrings_57"> - <xsl:value-of select="format-number(number(string(.)), '##0,00', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_57" select="string($altova:seqContentStrings_57)"/> - <xsl:value-of select="$altova:sContent_57"/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:ExemptionReason"> - <br/> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:template> - <xsl:template name="ram:Positionsreferenz"> - <xsl:for-each select="ram:ID"> - <span> - <xsl:text> Nr. </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - <xsl:for-each select="ram:IssueDateTime"> - <span> - <xsl:text> vom </xsl:text> - </span> - <span> - <xsl:variable name="altova:seqContentStrings_58"> - <xsl:value-of select="format-number(number(substring(string(string(.)), 9, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(.)), 6, 2)), '00', 'format1')"/> - <xsl:variable name="sText" as="xs:string?"> - <xsl:text>. </xsl:text> - </xsl:variable> - <xsl:value-of select="$sText"/> - <xsl:value-of select="format-number(number(substring(string(string(string(.))), 1, 4)), '0000', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_58" select="string($altova:seqContentStrings_58)"/> - <xsl:value-of select="$altova:sContent_58"/> - </span> - </xsl:for-each> - <xsl:for-each select="ram:LineID"> - <span> - <xsl:text> Zeile </xsl:text> - </span> - <xsl:apply-templates/> - </xsl:for-each> - </xsl:template> - <xsl:template name="ram:Datum"> - <span> - <xsl:value-of select="if ( @format = '102') then concat(substring(.,7,2),'.',substring(.,5,2),'.',substring(.,1,4)) else -if ( @format = '610') then concat(substring(.,5,2),'-',substring(.,1,4)) else -if ( @format = '616') then concat('KW ',substring(.,5,2),' ',substring(.,1,4)) else -concat('Ungültiges Datumsformat für: ', .)"/> - </span> - </xsl:template> - <xsl:template name="ram:Versand_Identifer"> - <span> - <xsl:value-of select="if(. eq 'GSIN') then . else -if(. eq 'GINC') then . else -if(. eq 'SSCC') then 'Nummer der Versandeinheit' else -if(. eq 'FLIGHT_NO') then 'Flugnummer' else -if(. eq 'NUMBER_PLATE') then 'Nummernschild' else -if(. eq 'SHIPMENT_REFERENCE') then 'Sendungs-/Ladungsbezugsnummer' else -."/> - </span> - </xsl:template> - <xsl:template name="ram:Global_Identifier"> - <span> - <xsl:text>(</xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq '0021') then 'BIC' else -if (. eq '0060') then 'DUNS' else -if (. eq '0088') then 'GTIN' else -if (. eq '0160') then 'GLN' else -if (. eq '0177') then 'OSCAR' else -."/> - </span> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:template> - <xsl:template name="ram:Menge"> - <span> - <xsl:variable name="altova:seqContentStrings_59"> - <xsl:value-of select="format-number(number(string(.)), '##0', 'format1')"/> - </xsl:variable> - <xsl:variable name="altova:sContent_59" select="string($altova:seqContentStrings_59)"/> - <xsl:value-of select="$altova:sContent_59"/> - </span> - <xsl:for-each select="@unitCode"> - <span> - <xsl:text> </xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'C62') then 'Stk' else -if (. eq 'DAY') then 'Tag(e)' else -if (. eq 'HAR') then 'ha' else -if (. eq 'HUR') then 'Std' else -if (. eq 'KGM') then 'kg' else -if (. eq 'KTM') then 'km' else -if (. eq 'LS') then 'pausch' else -if (. eq 'LTR') then 'l' else -if (. eq 'MIN') then 'min' else -if (. eq 'MMK') then 'mm²' else -if (. eq 'MMT') then 'mm' else -if (. eq 'MTK') then 'm²' else -if (. eq 'MTQ') then 'm³' else -if (. eq 'MTR') then 'm' else -if (. eq 'NAR') then 'Anz' else -if (. eq 'NPR') then 'Paar' else -if (. eq 'P1') then '%' else -if (. eq 'SET') then 'Set' else -if (. eq 'TNE') then 't' else -if (. eq 'WEE') then 'Woche(n)' else -."/> - </span> - </xsl:for-each> - </xsl:template> - <xsl:template name="ram:TaxRegistration"> - <span> - <xsl:value-of select="if ( @schemeID = 'FC') then concat('Steuernummer : ', .) else -if ( @schemeID = 'VA') then concat('USt.-Id.-Nr. : ', .) else -concat('Unbekannte Steuernummer (', @schemeID , '): ', .)"/> - </span> - </xsl:template> - <xsl:template name="ram:VersandMode"> - <span> - <xsl:value-of select="if (. eq '0')then '0 - Nicht spezifiziert' else -if (. eq '1')then '1 - Seefracht' else -if (. eq '2')then '2 - Schiene' else -if (. eq '3')then '3 - Straße' else -if (. eq '4')then '4 - Luftfracht' else -if (. eq '5')then '5 - Post/Paketversand' else -if (. eq '6')then '6 - Multimodaler Transport/kombinierter Verkehr' else -if (. eq '7')then '7 - Feste Transportinstallation' else -if (. eq '8')then '8 - Transport auf Binnengewässern' else -if (. eq '9')then '9 - Nicht anwendbar' else -fn:concat(.,' - unbekannte Transportart')"/> - </span> - </xsl:template> - <xsl:template name="ram:PaymentType"> - <span> - <xsl:value-of select="if(. eq '1') then concat(.,' - nicht definiert') else -if(. eq '3') then concat(.,' - Belastung durch automatisierte Clearingstelle') else -if(. eq '10') then concat(.,' - Barzahlung') else -if(. eq '20') then concat(.,' - per Scheck') else -if(. eq '31') then concat(.,' - per Überweisung (SEPA)') else -if(. eq '42') then concat(.,' - per Überweisung (nicht SEPA)') else -if(. eq '48') then concat(.,' - per Kreditkarte') else -if(. eq '49') then concat(.,' - per Lastschrift') else -if(. eq '97') then concat(.,' - per Ausgleich zwischen Partnern') else -."/> - </span> - </xsl:template> - <xsl:template name="ram:Referenz"> - <span> - <xsl:value-of select="if (. eq 'AAA')then 'Auftragsbestätigung' else -if (. eq 'AAB')then 'Proforma-Rechnung' else -if (. eq 'AAG') then 'Angebot' else -if (. eq 'AAJ') then 'Lieferauftrag' else -if (. eq 'AAL') then 'Zeichnung' else -if (. eq 'AAM') then 'Frachtbrief' else -if (. eq 'AAS') then 'Transportdokument' else -if (. eq 'ABT') then 'Zollerklärung' else -if (. eq 'AER') then 'Projektspezifikation' else -if (. eq 'AGG') then 'Reklamation' else -if (. eq 'AJS') then 'Vereinbarung' else -if (. eq 'ALO') then 'Wareneingang' else -if (. eq 'ALQ') then 'Rücksendungsanzeige' else -if (. eq 'API') then 'Bestandsbericht' else -if (. eq 'ASI') then 'Abliefernachweis' else -if (. eq 'AUD') then 'Inkasso-Referenz' else -if (. eq 'AWR') then 'Ursprungsbeleg' else -if (. eq 'BO') then 'Rahmenauftrag' else -if (. eq 'BC') then 'Vertrag (Käufer)' else -if (. eq 'CD') then 'Gutschrift' else -if (. eq 'DL') then 'Belastungsanzeige' else -if (. eq 'MG') then 'Zählernummer' else -if (. eq 'OI') then 'Vorherige Rechnung' else -if (. eq 'PK') then 'Packliste' else -if (. eq 'PL') then 'Preisliste' else -if (. eq 'POR') then 'Bestellantwort' else -if (. eq 'PP') then 'Bestelländerung' else -if (. eq 'TIN') then 'Transportauftrag' else -if (. eq 'VN') then 'Auftragsnummer (Lieferant)' else -."/> - </span> - </xsl:template> - <xsl:template name="PackageQuantity"> - <xsl:for-each select="ram:PackageQuantity"> - <xsl:for-each select="@unitCode"> - <span> - <xsl:text> </xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'BA') then 'Tonne' else -if (. eq 'BC') then 'Getränkekiste' else -if (. eq 'BG') then 'Tüte, Beutel' else -if (. eq 'BO') then 'Flasche' else -if (. eq 'BX') then 'Schachtel' else -if (. eq 'CS') then 'Kiste' else -if (. eq 'CT') then 'Karton' else -if (. eq 'CX') then 'Dose' else -if (. eq 'NE') then 'Unverpackt oder ausgepackt' else -if (. eq 'PX') then 'Palette' else -if (. eq 'RO') then 'Rolle' else -if (. eq 'SA') then 'Sack' -else ."/> - </span> - </xsl:for-each> - </xsl:for-each> - </xsl:template> - <xsl:template name="local_Identifier"> - <span> - <xsl:text>(</xsl:text> - </span> - <xsl:choose> - <xsl:when test=". instance of element()"> - <xsl:apply-templates/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="."/> - </xsl:otherwise> - </xsl:choose> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:template> - <xsl:template name="Klassifikationsart"> - <xsl:for-each select="@listID"> - <span> - <xsl:text>, Art: </xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'GPC') then 'Global Product Classification (GS1)' else -if (. eq 'ECL') then 'eCl@ass' else -if (. eq 'UNSPSC') then 'United Nations Standard Products and Services Code® (UNSPSC®)' else -if (. eq 'HS') then 'Zolltarifnummer (Harmonised System)' else -if (. eq 'CBV') then 'Gemeinsames Vokabular für öffentliche Aufträge (Common Procurement Vocabulary - CPV)' else -if (. eq 'SELLER_ASSIGNED') then 'vom Verkäufer vergeben' else -if (. eq 'BUYER_ASSIGNED') then 'vom Käufer vergeben' else -."/> - </span> - </xsl:for-each> - </xsl:template> - <xsl:template name="DeliveryTypeCode"> - <span> - <xsl:value-of select="if (. eq 'XW') then 'ab Werk' else -if (. eq 'FCA') then 'frei Frachtführer' else -if (. eq 'FAS') then 'frei längsseits Schiff' else -if (. eq 'FOB') then 'frei an Bord' else -if (. eq 'CFR') then 'Kosten und Fracht' else -if (. eq 'CIF') then 'Kosten, Versicherung und Fracht bis zum Bestimmungshafen' else -if (. eq 'DAT') then 'geliefert Terminal' else -if (. eq 'DAP') then 'geliefert benannter Ort' else -if (. eq 'CPT') then 'Fracht bezahlt bis' else -if (. eq 'CIP') then 'Fracht und Versicherung bezahlt' else -if (. eq 'DDP') then 'geliefert Zoll bezahlt' else -."/> - </span> - </xsl:template> - <xsl:template name="AllowanceChargeReasonCode"> - <span> - <xsl:text>(</xsl:text> - </span> - <span> - <xsl:value-of select="if (. eq 'AA') then 'Werbekostenzuschuß' else -if (. eq 'ADR') then 'Andere Dienste' else -if (. eq 'AEO') then 'Sammel- und Recyclingservice' else -if (. eq 'DI') then 'Abzug (Rabatt)' else -if (. eq 'EAB') then 'Skonto' else -if (. eq 'FC') then 'Frachtgebühren' else -if (. eq 'IN') then 'Versicherung' else -if (. eq 'MAC') then 'Mindermengenzuschlag' else -if (. eq 'NAA') then 'Einwegbehälter' else -if (. eq 'PC') then 'Verpacken' else -if (. eq 'RAA') then 'Rückvergütung' else -if (. eq 'SH') then 'Spezielle Handhabungsdienstleistungen' else -."/> - </span> - <span> - <xsl:text>)</xsl:text> - </span> - </xsl:template> - <xsl:function name="altova:is-cell-empty" as="xs:boolean"> - <xsl:param name="altova:cell" as="element()"/> - <xsl:sequence select="altova:is-node-empty( $altova:cell )"/> - </xsl:function> - <xsl:function name="altova:is-node-empty" as="xs:boolean"> - <xsl:param name="altova:node" as="element()"/> - <xsl:sequence select="every $altova:child in $altova:node/child::node() satisfies ( ( boolean( $altova:child/self::text() ) and string-length( $altova:child ) = 0 ) or ( ( boolean( $altova:child/self::div ) or boolean( $altova:child/self::span ) or boolean( $altova:child/self::a ) ) and altova:is-node-empty( $altova:child ) ) )"/> - </xsl:function> - <xsl:function name="altova:col-span" as="xs:integer"> - <xsl:param name="altova:cell" as="element()"/> - <xsl:sequence select="if ( exists( $altova:cell/@colspan ) ) then xs:integer( $altova:cell/@colspan ) else 1"/> - </xsl:function> - <xsl:template match="@* | node()" mode="altova:generate-table"> - <xsl:param name="altova:generate-cols"/> - <xsl:copy> - <xsl:apply-templates select="@* | node()" mode="#current"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:copy> - </xsl:template> - <xsl:template match="tbody" mode="altova:generate-table"> - <xsl:param name="altova:generate-cols"/> - <xsl:choose> - <xsl:when test="empty(tr)"> - <xsl:copy> - <tr> - <td/> - </tr> - </xsl:copy> - </xsl:when> - <xsl:otherwise> - <xsl:copy> - <xsl:apply-templates select="@* | node()" mode="#current"> - <xsl:with-param name="altova:generate-cols" select="$altova:generate-cols"/> - </xsl:apply-templates> - </xsl:copy> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - <xsl:template match="th | td" mode="altova:generate-table"> - <xsl:choose> - <xsl:when test="altova:is-cell-empty( . )"> - <xsl:copy> - <xsl:apply-templates select="@*" mode="#current"/> - <xsl:text> </xsl:text> - </xsl:copy> - </xsl:when> - <xsl:otherwise> - <xsl:copy> - <xsl:apply-templates select="@* | node()" mode="#current"/> - </xsl:copy> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - <xsl:function name="altova:GetChartYValuesForSingleSeries"> - <xsl:param name="seqCategoryLeafPos" as="node()*"/> - <xsl:param name="nodeSeriesLeafPos" as="node()"/> - <xsl:param name="bValuesInCategory" as="xs:boolean"/> - <xsl:for-each select="$seqCategoryLeafPos"> - <xsl:element name="altova:Value"> - <xsl:value-of select="altova:GetChartYValueForSingleSeriesPos($nodeSeriesLeafPos, ., $bValuesInCategory)"/> - </xsl:element> - </xsl:for-each> - </xsl:function> - <xsl:function name="altova:GetChartYValueForSingleSeriesPos"> - <xsl:param name="nodeSeriesLeafPos" as="node()"/> - <xsl:param name="nodeCategoryLeafPos" as="node()"/> - <xsl:param name="bValuesInCategory" as="xs:boolean"/> - <xsl:variable name="altova:seqCategoryContextIds" select="$nodeCategoryLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> - <xsl:variable name="altova:seqSeriesContextIds" select="$nodeSeriesLeafPos/altova:Context/@altova:ContextId" as="xs:string*"/> - <xsl:variable name="altova:sCommonContextId" select="for $i in $altova:seqCategoryContextIds return if (some $j in $altova:seqSeriesContextIds satisfies $i eq $j) then $i else ()" as="xs:string*"/> - <xsl:choose> - <xsl:when test="count($altova:sCommonContextId) gt 1"> - <xsl:message select="concat('Es wurden mehrere Werte anstatt eines einzigen gefunden (Contexts: ', string-join($altova:sCommonContextId, ', '), ').')" terminate="yes"/> - </xsl:when> - <xsl:when test="count($altova:sCommonContextId) lt 1"> - <xsl:message select="concat('XBRL Chart: Info: No value found for position labeled "', $nodeCategoryLeafPos/@altova:sLabel, '"')" terminate="no"/> - <xsl:sequence select="'altova:no-value'"/> - </xsl:when> - <xsl:when test="$bValuesInCategory"> - <xsl:sequence select="xs:string($nodeCategoryLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> - </xsl:when> - <xsl:otherwise> - <xsl:sequence select="xs:string($nodeSeriesLeafPos/altova:Context[@altova:ContextId eq $altova:sCommonContextId]/@altova:Value)"/> - </xsl:otherwise> - </xsl:choose> - </xsl:function> - <xsl:function name="altova:GetChartLabelForPos" as="xs:string"> - <xsl:param name="nodeParam" as="node()"/> - <xsl:value-of select="string-join($nodeParam/ancestor-or-self::altova:Pos/@altova:sLabel, ' ')"/> - </xsl:function> - <xsl:function name="altova:convert-length-to-pixel" as="xs:decimal"> - <xsl:param name="altova:length"/> - <xsl:variable name="normLength" select="normalize-space($altova:length)"/> - <xsl:choose> - <xsl:when test="ends-with($normLength, 'px')"> - <xsl:value-of select="substring-before($normLength, 'px')"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'in')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * $altova:nPxPerIn"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'cm')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * $altova:nPxPerIn div 2.54"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'mm')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'mm')) * $altova:nPxPerIn div 25.4"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pt')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * $altova:nPxPerIn div 72.0"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pc')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * $altova:nPxPerIn div 6.0"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$normLength"/> - </xsl:otherwise> - </xsl:choose> - </xsl:function> - <xsl:function name="altova:convert-length-to-mm" as="xs:decimal"> - <xsl:param name="altova:length"/> - <xsl:variable name="normLength" select="normalize-space($altova:length)"/> - <xsl:choose> - <xsl:when test="ends-with($normLength, 'px')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'px')) div $altova:nPxPerIn * 25.4"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'in')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'in')) * 25.4"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'cm')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'cm')) * 10"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'mm')"> - <xsl:value-of select="substring-before($normLength, 'mm') "/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pt')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pt')) * 25.4 div 72.0"/> - </xsl:when> - <xsl:when test="ends-with($normLength, 'pc')"> - <xsl:value-of select="xs:decimal(substring-before($normLength, 'pc')) * 25.4 div 6.0"/> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="number($normLength) div $altova:nPxPerIn * 25.4"/> - </xsl:otherwise> - </xsl:choose> - </xsl:function> -</xsl:stylesheet> diff --git a/src/test/java/org/mustangproject/ZUGFeRD/BackwardCompatibilityTest.java b/src/test/java/org/mustangproject/ZUGFeRD/BackwardCompatibilityTest.java deleted file mode 100644 index f8fef6a9..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/BackwardCompatibilityTest.java +++ /dev/null @@ -1,432 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; - -import junit.framework.TestCase; - -/*** - * This is a test to confirm the minimum steps to implement a interface are still sufficient - * - * @author jstaerk - * - */ -public class BackwardCompatibilityTest extends TestCase implements IZUGFeRDExportableTransaction{ - - final String TARGET_PDF_ZF1 = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506zf1.pdf"; - final String TARGET_PDF_ZF2 = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506zf2.pdf"; - final String TARGET_PDF_FX = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506fx.pdf"; - - /** - * The exporter test bases on @{code - * ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds - * metadata, writes to @{code ./target/testout-*} and then imports to check the - * values. It would not make sense to have it run before the less complex - * importer test (which is probably redundant). As only Name Ascending is - * supported for Test Unit sequence, I renamed the Exporter Test test-Z-Export - */ - public void testZF1Export() { - - - // the writing part - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setZUGFeRDVersion(1).setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931).load(SOURCE_PDF)) { - - ze.PDFattachZugferdFile(this); - ze.disableAutoClose(true); - ze.export(TARGET_PDF_ZF1); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ze.export(baos); - ze.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); - // check for pdf-a schema extension -// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1); -// assertFalse(pdfContent.indexOf("<pdfaSchema:prefix>zf</pdfaSchema:prefix>") == -1); -// assertFalse(pdfContent.indexOf("urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#") == -1); - - } catch (IOException e) { - fail("IOException should not happen in testZExport"); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_ZF1); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getIBAN(), getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - - - } - - public void testZF2Export() { - - - // the writing part - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setZUGFeRDVersion(2).setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931).load(SOURCE_PDF)) { - - ze.PDFattachZugferdFile(this); - ze.disableAutoClose(true); - ze.export(TARGET_PDF_ZF2); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ze.export(baos); - ze.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); - // check for pdf-a schema extension -// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1); -// assertFalse(pdfContent.indexOf("<pdfaSchema:prefix>zf</pdfaSchema:prefix>") == -1); -// assertFalse(pdfContent.indexOf("urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#") == -1); - - } catch (IOException e) { - fail("IOException should not happen in testZExport"); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_ZF2); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getIBAN(), getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - - - } - public void testFXExport() { - - // the writing part - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setZUGFeRDVersion(2).setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931).load(SOURCE_PDF)) { - - ze.setFacturX(); - ze.PDFattachZugferdFile(this); - ze.disableAutoClose(true); - ze.export(TARGET_PDF_FX); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ze.export(baos); - ze.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); - // check for pdf-a schema extension -// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1); -// assertFalse(pdfContent.indexOf("<pdfaSchema:prefix>zf</pdfaSchema:prefix>") == -1); -// assertFalse(pdfContent.indexOf("urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#") == -1); - - } catch (IOException e) { - fail("IOException should not happen in testZExport"); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF_FX); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getIBAN(), getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - - - } - class Contact implements IZUGFeRDExportableContact { - public String getCountry() { - return "DE"; - } - - public String getLocation() { - return "Spielkreis"; - } - - public String getName() { - return "Theodor Est"; - } - - public String getStreet() { - return "Bahnstr. 42"; - } - - public String getVATID() { - return "DE999999999"; - } - - public String getZIP() { - return "88802"; - } - - } - class Payment implements IZUGFeRDTradeSettlementPayment { - - @Override - public String getOwnBIC() { - return "bla"; - } - - @Override - public String getOwnBankName() { - return "bla"; - } - - @Override - public String getOwnIBAN() { - return "bla"; - } - - } - - class Item implements IZUGFeRDExportableItem { - public Item(BigDecimal price, BigDecimal quantity, Product product) { - super(); - this.price = price; - this.quantity = quantity; - this.product = product; - } - - private BigDecimal price, quantity; - private Product product; - - public BigDecimal getPrice() { - return price; - } - - public void setPrice(BigDecimal price) { - this.price = price; - } - - public BigDecimal getQuantity() { - return quantity; - } - - public void setQuantity(BigDecimal quantity) { - this.quantity = quantity; - } - - public Product getProduct() { - return product; - } - - public void setProduct(Product product) { - this.product = product; - } - - public IZUGFeRDAllowanceCharge[] getItemAllowances() { - // TODO Auto-generated method stub - return null; - } - - public IZUGFeRDAllowanceCharge[] getItemCharges() { - // TODO Auto-generated method stub - return null; - } - } - - class Product implements IZUGFeRDExportableProduct { - public Product(String description, String name, String unit, BigDecimal vATPercent) { - super(); - this.description = description; - this.name = name; - this.unit = unit; - VATPercent = vATPercent; - } - - private String description, name, unit; - private BigDecimal VATPercent; - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - public BigDecimal getVATPercent() { - return VATPercent; - } - - public void setVATPercent(BigDecimal vATPercent) { - VATPercent = vATPercent; - } - } - - @Override - public Date getDeliveryDate() { - return new GregorianCalendar(2019, Calendar.JUNE, 10).getTime(); - } - - - - @Override - public IZUGFeRDExportableContact getRecipient() { - return new Contact(); - } - - - // - public IZUGFeRDTradeSettlementPayment[] getTradeSettlementPayment() { - Payment P = new Payment(); - IZUGFeRDTradeSettlementPayment[] allP = new Payment[1]; - allP[0] = P; - return allP; - - } - - public IZUGFeRDAllowanceCharge[] getZFAllowances() { - // TODO Auto-generated method stub - return null; - } - - public IZUGFeRDAllowanceCharge[] getZFCharges() { - // TODO Auto-generated method stub - return null; - } - - @Override - public IZUGFeRDExportableItem[] getZFItems() { - Item[] allItems = new Item[3]; - Product designProduct = new Product("", "Design (hours): Of a sample invoice", "HUR", - new BigDecimal("7.000000")); - Product balloonProduct = new Product("", "Ballons: various colors, ~2000ml", "C62", new BigDecimal("19.000000")); - Product airProduct = new Product("", "Hot air „heiße Luft“ (litres)", "LTR", new BigDecimal("19.000000")); - - allItems[0] = new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct); - allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct); - allItems[2] = new Item(new BigDecimal("0.025"), new BigDecimal("800"), airProduct); - return allItems; - } - - public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { - // TODO Auto-generated method stub - return null; - } - - @Override - public Date getDueDate() { - return new GregorianCalendar(2019, Calendar.JULY, 1).getTime(); - } - - @Override - public Date getIssueDate() { - return new GregorianCalendar(2019, Calendar.JUNE, 10).getTime(); - } - - - @Override - public String getNumber() { - return "RE-20190610/507"; - } - - - - public String getOwnBIC() { - return "COBADEFFXXX"; - } - - public String getOwnBankName() { - return "Commerzbank"; - } - - - @Override - public String getOwnCountry() { - return "DE"; - } - - public String getOwnIBAN() { - return "DE88 2008 0000 0970 3757 00"; - } - - - @Override - public String getOwnLocation() { - return "Stadthausen"; - } - - @Override - public String getOwnOrganisationFullPlaintextInfo() { - return "Bei Spiel GmbH\n" + "Ecke 12\n" + "12345 Stadthausen\n" + "Geschäftsführer: Max Mustermann"; - } - - - @Override - public String getOwnOrganisationName() { - return "Bei Spiel GmbH"; - } - - @Override - public String getOwnStreet() { - return "Ecke 12"; - } - - @Override - public String getOwnTaxID() { - return "22/815/0815/4"; - } - - @Override - public String getOwnVATID() { - return "DE136695976"; - } - - @Override - public String getOwnZIP() { - return "12345"; - } - - - - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/BaseTest.java b/src/test/java/org/mustangproject/ZUGFeRD/BaseTest.java deleted file mode 100644 index 8d3152b6..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/BaseTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import junit.framework.Test; -import junit.framework.TestSuite; -import junit.framework.TestCase; - -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; - -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; - -public class BaseTest extends TestCase { - /** - * Create the test case - * - * @param testName name of the test case - */ - public BaseTest(String testName) { - super(testName); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() { - return new TestSuite(BaseTest.class); - } - - public void testCorrectDigits() { - assertEquals("0.00", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal(0),2)); - assertEquals("-1.10", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("-1.10"),2)); - assertEquals("-1.10", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("-1.1"),2)); - assertEquals("-1.01", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("-1.01"),2)); - assertEquals("20000123.35", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("20000123.3489"),2)); - assertEquals("20000123.34", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("20000123.3419"),2)); - assertEquals("12.00", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("12"),2)); - assertEquals("12", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("12"),0)); - assertEquals("20000123.342", ZUGFeRD2PullProvider.nDigitFormat(new BigDecimal("20000123.3419"),3)); - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java deleted file mode 100644 index fd2a107e..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDAllowanceChargeImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; - -public class IZUGFeRDAllowanceChargeImpl implements IZUGFeRDAllowanceCharge { - private BigDecimal totalAmount; - private String reason; - private BigDecimal taxPercent; - - @Override - public BigDecimal getTotalAmount() { - return totalAmount; - } - - @Override - public String getReason() { - return reason; - } - - @Override - public BigDecimal getTaxPercent() { - return taxPercent; - } - - public IZUGFeRDAllowanceChargeImpl setTotalAmount(BigDecimal totalAmount) { - this.totalAmount = totalAmount; - return this; - } - - public IZUGFeRDAllowanceChargeImpl setReason(String reason) { - this.reason = reason; - return this; - } - - public IZUGFeRDAllowanceChargeImpl setTaxPercent(BigDecimal taxPercent) { - this.taxPercent = taxPercent; - return this; - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDDateImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDDateImpl.java deleted file mode 100644 index 01a4d19c..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDDateImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package org.mustangproject.ZUGFeRD; - -import java.util.Date; - -public class IZUGFeRDDateImpl implements IZUGFeRDDate { - - private Date date; - private ZUGFeRDDateFormat format = ZUGFeRDDateFormat.DATE; - - public IZUGFeRDDateImpl setDate(Date date) { - this.date = date; - return this; - } - - public IZUGFeRDDateImpl setFormat(ZUGFeRDDateFormat format) { - this.format = format; - return this; - } - - @Override - public Date getDate() { - return date; - } - - @Override - public ZUGFeRDDateFormat getFormat() { - return format; - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContactImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContactImpl.java deleted file mode 100644 index 38a17900..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableContactImpl.java +++ /dev/null @@ -1,88 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public class IZUGFeRDExportableContactImpl implements IZUGFeRDExportableContact { - private String name; - private String zIP; - private String vATID; - private String country; - private String location; - private String street; - - @Override - public String getName() { - return name; - } - - @Override - public String getZIP() { - return zIP; - } - - @Override - public String getVATID() { - return vATID; - } - - @Override - public String getCountry() { - return country; - } - - @Override - public String getLocation() { - return location; - } - - @Override - public String getStreet() { - return street; - } - - public IZUGFeRDExportableContactImpl setName(String name) { - this.name = name; - return this; - } - - public IZUGFeRDExportableContactImpl setZIP(String zIP) { - this.zIP = zIP; - return this; - } - - public IZUGFeRDExportableContactImpl setVATID(String vATID) { - this.vATID = vATID; - return this; - } - - public IZUGFeRDExportableContactImpl setCountry(String country) { - this.country = country; - return this; - } - - public IZUGFeRDExportableContactImpl setLocation(String location) { - this.location = location; - return this; - } - - public IZUGFeRDExportableContactImpl setStreet(String street) { - this.street = street; - return this; - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItemImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItemImpl.java deleted file mode 100644 index e8733ffd..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableItemImpl.java +++ /dev/null @@ -1,79 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; - -public class IZUGFeRDExportableItemImpl implements IZUGFeRDExportableItem { - private IZUGFeRDExportableProduct product; - private IZUGFeRDAllowanceCharge[] itemAllowances; - private IZUGFeRDAllowanceCharge[] itemCharges; - private BigDecimal price; - private BigDecimal quantity; - - @Override - public IZUGFeRDExportableProduct getProduct() { - return product; - } - - @Override - public IZUGFeRDAllowanceCharge[] getItemAllowances() { - return itemAllowances; - } - - @Override - public IZUGFeRDAllowanceCharge[] getItemCharges() { - return itemCharges; - } - - @Override - public BigDecimal getPrice() { - return price; - } - - @Override - public BigDecimal getQuantity() { - return quantity; - } - - public IZUGFeRDExportableItemImpl setProduct(IZUGFeRDExportableProduct product) { - this.product = product; - return this; - } - - public IZUGFeRDExportableItemImpl setItemAllowances(IZUGFeRDAllowanceCharge[] itemAllowances) { - this.itemAllowances = itemAllowances; - return this; - } - - public IZUGFeRDExportableItemImpl setItemCharges(IZUGFeRDAllowanceCharge[] itemCharges) { - this.itemCharges = itemCharges; - return this; - } - - public IZUGFeRDExportableItemImpl setPrice(BigDecimal price) { - this.price = price; - return this; - } - - public IZUGFeRDExportableItemImpl setQuantity(BigDecimal quantity) { - this.quantity = quantity; - return this; - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableProductImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableProductImpl.java deleted file mode 100644 index ebc3dad5..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableProductImpl.java +++ /dev/null @@ -1,68 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; - -public class IZUGFeRDExportableProductImpl implements IZUGFeRDExportableProduct { - private String unit; - private String name; - private String description; - private BigDecimal vatPercent; - - @Override - public String getUnit() { - return unit; - } - - @Override - public String getName() { - return name; - } - - @Override - public String getDescription() { - return description; - } - - @Override - public BigDecimal getVATPercent() { - return vatPercent; - } - - public IZUGFeRDExportableProductImpl setUnit(String unit) { - this.unit = unit; - return this; - } - - public IZUGFeRDExportableProductImpl setName(String name) { - this.name = name; - return this; - } - - public IZUGFeRDExportableProductImpl setDescription(String description) { - this.description = description; - return this; - } - - public IZUGFeRDExportableProductImpl setVatPercent(BigDecimal vatPercent) { - this.vatPercent = vatPercent; - return this; - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java deleted file mode 100644 index eda39ae0..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDExportableTransactionImpl.java +++ /dev/null @@ -1,267 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.util.Date; - -public class IZUGFeRDExportableTransactionImpl implements IZUGFeRDExportableTransaction { - - private String number; - private Date issueDate; - private String ownOrganisationFullPlaintextInfo; - private Date dueDate; - private IZUGFeRDAllowanceCharge[] zFAllowances; - private IZUGFeRDAllowanceCharge[] zFCharges; - private IZUGFeRDAllowanceCharge[] zFLogisticsServiceCharges; - private IZUGFeRDExportableItem[] zFItems; - private IZUGFeRDExportableContact recipient; - private IZUGFeRDTradeSettlementPayment[] settlementPayments; - private IZUGFeRDDate zfDeliveryDate; - private String ownTaxID; - private String ownVATID; - private String ownOrganisationName; - private String ownStreet; - private String ownZIP; - private String ownLocation; - private String ownCountry; - private Date deliveryDate; - private String currency; - private String paymentTermDescription; - private String referenceNumber; - - @Override - public String getNumber() { - return number; - } - - @Override - public Date getIssueDate() { - return issueDate; - } - - @Override - public String getOwnOrganisationFullPlaintextInfo() { - return ownOrganisationFullPlaintextInfo; - } - - @Override - public Date getDueDate() { - return dueDate; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFAllowances() { - return zFAllowances; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFCharges() { - return zFCharges; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { - return zFLogisticsServiceCharges; - } - - @Override - public IZUGFeRDExportableItem[] getZFItems() { - return zFItems; - } - - @Override - public IZUGFeRDExportableContact getRecipient() { - return recipient; - } - - @Override - public IZUGFeRDTradeSettlementPayment[] getTradeSettlementPayment() { - return settlementPayments; - } - - @Override - public String getOwnTaxID() { - return ownTaxID; - } - - @Override - public String getOwnVATID() { - return ownVATID; - } - - @Override - public String getOwnOrganisationName() { - return ownOrganisationName; - } - - @Override - public String getOwnStreet() { - return ownStreet; - } - - @Override - public String getOwnZIP() { - return ownZIP; - } - - @Override - public String getOwnLocation() { - return ownLocation; - } - - @Override - public String getOwnCountry() { - return ownCountry; - } - - @Override - public Date getDeliveryDate() { - return deliveryDate; - } - - @Override - public String getCurrency() { - return currency; - } - - @Override - public String getPaymentTermDescription() { - return paymentTermDescription; - } - - @Override - public String getReferenceNumber() { - return referenceNumber; - } - - @Override - public IZUGFeRDDate getZFDeliveryDate() { - return zfDeliveryDate; - } - - public IZUGFeRDExportableTransactionImpl setNumber(String number) { - this.number = number; - return this; - } - - public IZUGFeRDExportableTransactionImpl setIssueDate(Date issueDate) { - this.issueDate = issueDate; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnOrganisationFullPlaintextInfo(String ownOrganisationFullPlaintextInfo) { - this.ownOrganisationFullPlaintextInfo = ownOrganisationFullPlaintextInfo; - return this; - } - - public IZUGFeRDExportableTransactionImpl setDueDate(Date dueDate) { - this.dueDate = dueDate; - return this; - } - - public IZUGFeRDExportableTransactionImpl setZFAllowances(IZUGFeRDAllowanceCharge... zFAllowances) { - this.zFAllowances = zFAllowances; - return this; - } - - public IZUGFeRDExportableTransactionImpl setZFCharges(IZUGFeRDAllowanceCharge... zFCharges) { - this.zFCharges = zFCharges; - return this; - } - - public IZUGFeRDExportableTransactionImpl setZFLogisticsServiceCharges(IZUGFeRDAllowanceCharge... zFLogisticsServiceCharges) { - this.zFLogisticsServiceCharges = zFLogisticsServiceCharges; - return this; - } - - public IZUGFeRDExportableTransactionImpl setZFItems(IZUGFeRDExportableItem... zFItems) { - this.zFItems = zFItems; - return this; - } - - public IZUGFeRDExportableTransactionImpl setRecipient(IZUGFeRDExportableContact recipient) { - this.recipient = recipient; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnTaxID(String ownTaxID) { - this.ownTaxID = ownTaxID; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnVATID(String ownVATID) { - this.ownVATID = ownVATID; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnOrganisationName(String ownOrganisationName) { - this.ownOrganisationName = ownOrganisationName; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnStreet(String ownStreet) { - this.ownStreet = ownStreet; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnZIP(String ownZIP) { - this.ownZIP = ownZIP; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnLocation(String ownLocation) { - this.ownLocation = ownLocation; - return this; - } - - public IZUGFeRDExportableTransactionImpl setOwnCountry(String ownCountry) { - this.ownCountry = ownCountry; - return this; - } - - public IZUGFeRDExportableTransactionImpl setDeliveryDate(Date deliveryDate) { - this.deliveryDate = deliveryDate; - return this; - } - - public IZUGFeRDExportableTransactionImpl setZfDeliveryDate(IZUGFeRDDate zfDeliveryDate) { - this.zfDeliveryDate = zfDeliveryDate; - return this; - } - - public IZUGFeRDExportableTransactionImpl setCurrency(String currency) { - this.currency = currency; - return this; - } - - public IZUGFeRDExportableTransactionImpl setPaymentTermDescription(String paymentTermDescription) { - this.paymentTermDescription = paymentTermDescription; - return this; - } - - public IZUGFeRDExportableTransactionImpl setReferenceNumber(String referenceNumber) { - this.referenceNumber = referenceNumber; - return this; - } - - public IZUGFeRDExportableTransactionImpl setTradeSettlementPayment(IZUGFeRDTradeSettlementPayment... settlementPayments) { - this.settlementPayments = settlementPayments; - return this; - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPaymentImpl.java b/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPaymentImpl.java deleted file mode 100644 index 8ad9839a..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/IZUGFeRDTradeSettlementPaymentImpl.java +++ /dev/null @@ -1,90 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 by ak on 12.04.19. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -public class IZUGFeRDTradeSettlementPaymentImpl implements IZUGFeRDTradeSettlementPayment { - - private String ownKto; - private String ownBLZ; - private String ownBIC; - private String ownBankName; - private String ownIBAN; - private String ownPaymentInfoText; - - @Override - public String getOwnKto() { - return ownKto; - } - - @Override - public String getOwnBLZ() { - return ownBLZ; - } - - @Override - public String getOwnBIC() { - return ownBIC; - } - - @Override - public String getOwnBankName() { - return ownBankName; - } - - @Override - public String getOwnIBAN() { - return ownIBAN; - } - - @Override - public String getOwnPaymentInfoText() { - return ownPaymentInfoText; - } - - public IZUGFeRDTradeSettlementPaymentImpl setOwnBLZ(String ownBLZ) { - this.ownBLZ = ownBLZ; - return this; - } - - public IZUGFeRDTradeSettlementPaymentImpl setOwnBIC(String ownBIC) { - this.ownBIC = ownBIC; - return this; - } - - public IZUGFeRDTradeSettlementPaymentImpl setOwnBankName(String ownBankName) { - this.ownBankName = ownBankName; - return this; - } - - public IZUGFeRDTradeSettlementPaymentImpl setOwnKto(String ownKto) { - this.ownKto = ownKto; - return this; - } - - public IZUGFeRDTradeSettlementPaymentImpl setOwnIBAN(String ownIBAN) { - this.ownIBAN = ownIBAN; - return this; - } - - public IZUGFeRDTradeSettlementPaymentImpl setOwnPaymentInfoText(String ownPaymentInfoText) { - this.ownPaymentInfoText = ownPaymentInfoText; - return this; - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java deleted file mode 100644 index 4252e2cb..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderTestCase.java +++ /dev/null @@ -1,242 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2019 by ak on 12.04.19. - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import junit.framework.TestCase; - -import java.math.BigDecimal; - -import org.mustangproject.ZUGFeRD.MustangReaderTestCase.Item; - -public abstract class MustangReaderTestCase extends TestCase implements IZUGFeRDExportableTransaction { - - public MustangReaderTestCase(String testName) { - super(testName); - } - - - @Override - public IZUGFeRDTradeSettlementPayment[] getTradeSettlementPayment() { - Payment[] payments = new Payment[1]; - payments[0] = new Payment(); - return payments; - } - - protected class Payment implements IZUGFeRDTradeSettlementPayment { - - @Override - public String getOwnKto() { - return "44421800"; - } - - @Override - public String getOwnBLZ() { - return "41441604"; - } - - @Override - public String getOwnBIC() { - return "COBADEFFXXX"; - } - - @Override - public String getOwnBankName() { - return "Commerzbank"; - } - - @Override - public String getOwnPaymentInfoText() { - return "Überweisung"; - } - - @Override - public String getOwnIBAN() { - return "DE88 2008 0000 0970 3757 00"; - } - } - - protected class RecipientContact implements IZUGFeRDExportableContact { - - @Override - public String getCountry() { - return "DE"; - } - - @Override - public String getLocation() { - return "Spielkreis"; - } - - @Override - public String getName() { - return "Theodor Est"; - } - - @Override - public String getStreet() { - return "Bahnstr. 42"; - } - - @Override - public String getVATID() { - return "DE999999999"; - } - - @Override - public String getZIP() { - return "88802"; - } - } - - protected class SenderContact implements IZUGFeRDExportableContact { - - - - @Override - public String getName() { - return "Ingmar N. Fo"; - } - - @Override - public String getPhone() { - return "++49(0)237823"; - } - - @Override - public String getEMail() { - return "info@localhost.local"; - } - - } - - protected class Item implements IZUGFeRDExportableItem { - - public Item(BigDecimal price, BigDecimal quantity, IZUGFeRDExportableProduct product) { - super(); - this.price = price; - this.quantity = quantity; - this.product = product; - } - - private BigDecimal price, quantity; - private IZUGFeRDExportableProduct product; - private String addReference=null; - - public String getAdditionalReferencedDocumentID() { - return addReference; - } - - @Override - public BigDecimal getPrice() { - return price; - } - - public void setPrice(BigDecimal price) { - this.price = price; - } - - @Override - public BigDecimal getQuantity() { - return quantity; - } - - public void setQuantity(BigDecimal quantity) { - this.quantity = quantity; - } - - @Override - public IZUGFeRDExportableProduct getProduct() { - return product; - } - - public void setProduct(IZUGFeRDExportableProduct product) { - this.product = product; - } - - @Override - public IZUGFeRDAllowanceCharge[] getItemAllowances() { - return null; - } - - @Override - public IZUGFeRDAllowanceCharge[] getItemCharges() { - return null; - } - - public String getAddReference() { - return addReference; - } - - public void setAddReference(String addReference) { - this.addReference = addReference; - } - - - } - - protected class Product implements IZUGFeRDExportableProduct { - private String description, name, unit; - private BigDecimal VATPercent; - - public Product(String description, String name, String unit, BigDecimal VATPercent) { - super(); - this.description = description; - this.name = name; - this.unit = unit; - this.VATPercent = VATPercent; - } - - @Override - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - @Override - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Override - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - @Override - public BigDecimal getVATPercent() { - return VATPercent; - } - - public void setVATPercent(BigDecimal VATPercent) { - this.VATPercent = VATPercent; - } - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java deleted file mode 100644 index e1908c7b..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterCustomXMLTest.java +++ /dev/null @@ -1,470 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class MustangReaderWriterCustomXMLTest extends TestCase { - - /** - * Create the test case - * - * @param testName name of the test case - */ - public MustangReaderWriterCustomXMLTest(String testName) { - super(testName); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() { - return new TestSuite(MustangReaderWriterCustomXMLTest.class); - } - - // //////// TESTS - // ////////////////////////////////////////////////////////////////////////////////////////// - public void testCustomZF2Export() { - - final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506custom.pdf"; - // the writing part - - try { - InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf"); - - ZUGFeRDExporter zea1 = new ZUGFeRDExporterFromA1Factory().setProducer("My Application").setCreator("Test").setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931) - .load(SOURCE_PDF); - - final byte[] UTF8ByteOrderMark = new byte[]{(byte) 0xef, (byte) 0xbb, (byte) 0xbf}; - /* we have much more information than just in the basic profile (comfort or extended) but it's perfectly valid to provide more information, just not less. - * test the export with bom (which is valid) because this will also test the import (which also needs to work and needs to be tested) - * */ - String ownZUGFeRDXML = new String(UTF8ByteOrderMark, StandardCharsets.UTF_8) + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + - "<rsm:CrossIndustryInvoice xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:rsm=\"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100\" xmlns:ram=\"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100\" xmlns:udt=\"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100\">\n" + - " <rsm:ExchangedDocumentContext>\n" + - " <ram:TestIndicator><udt:Indicator>false</udt:Indicator></ram:TestIndicator>\n" + - " <ram:GuidelineSpecifiedDocumentContextParameter>\n" + - " <ram:ID>urn:cen.eu:en16931:2017:compliant:factur-x.eu:1p0:extended</ram:ID>\n" + - " </ram:GuidelineSpecifiedDocumentContextParameter>\n" + - " </rsm:ExchangedDocumentContext>\n" + - " <rsm:ExchangedDocument>\n" + - " <ram:ID>RE-20171118/506</ram:ID>\n" + - " <ram:Name>RECHNUNG</ram:Name>\n" + - " <ram:TypeCode>380</ram:TypeCode>\n" + - " <ram:IssueDateTime><udt:DateTimeString format=\"102\">20171118</udt:DateTimeString></ram:IssueDateTime>\n" + - " </rsm:ExchangedDocument>\n" + - " <rsm:SupplyChainTradeTransaction>\n" + - " <ram:IncludedSupplyChainTradeLineItem>\n" + - " <ram:AssociatedDocumentLineDocument>\n" + - " <ram:LineID>1</ram:LineID>\n" + - " </ram:AssociatedDocumentLineDocument>\n" + - " <ram:SpecifiedTradeProduct>\n" + - " <ram:Name>Künstlerische Gestaltung (Stunde): Einer Beispielrechnung</ram:Name>\n" + - " <ram:Description></ram:Description>\n" + - " </ram:SpecifiedTradeProduct>\n" + - " <ram:SpecifiedLineTradeAgreement>\n" + - " <ram:GrossPriceProductTradePrice>\n" + - " <ram:ChargeAmount currencyID=\"EUR\">160.0000</ram:ChargeAmount>\n" + - " <ram:BasisQuantity unitCode=\"HUR\">1.0000</ram:BasisQuantity>\n" + - " </ram:GrossPriceProductTradePrice>\n" + - " <ram:NetPriceProductTradePrice>\n" + - " <ram:ChargeAmount currencyID=\"EUR\">160.0000</ram:ChargeAmount>\n" + - " <ram:BasisQuantity unitCode=\"HUR\">1.0000</ram:BasisQuantity>\n" + - " </ram:NetPriceProductTradePrice>\n" + - " </ram:SpecifiedLineTradeAgreement>\n" + - " <ram:SpecifiedLineTradeDelivery>\n" + - " <ram:BilledQuantity unitCode=\"HUR\">1.0000</ram:BilledQuantity>\n" + - " </ram:SpecifiedLineTradeDelivery>\n" + - " <ram:SpecifiedLineTradeSettlement>\n" + - " <ram:ApplicableTradeTax>\n" + - " <ram:TypeCode>VAT</ram:TypeCode>\n" + - " <ram:CategoryCode>S</ram:CategoryCode>\n" + - " <ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>\n" + - " </ram:ApplicableTradeTax>\n" + - " <ram:SpecifiedTradeSettlementLineMonetarySummation>\n" + - " <ram:LineTotalAmount currencyID=\"EUR\">160.00</ram:LineTotalAmount>\n" + - " </ram:SpecifiedTradeSettlementLineMonetarySummation>\n" + - " </ram:SpecifiedLineTradeSettlement>\n" + - " </ram:IncludedSupplyChainTradeLineItem>\n" + - " <ram:IncludedSupplyChainTradeLineItem>\n" + - " <ram:AssociatedDocumentLineDocument>\n" + - " <ram:LineID>2</ram:LineID>\n" + - " </ram:AssociatedDocumentLineDocument>\n" + - " <ram:SpecifiedTradeProduct>\n" + - " <ram:Name>Luftballon: Bunt, ca. 500ml</ram:Name>\n" + - " <ram:Description></ram:Description>\n" + - " </ram:SpecifiedTradeProduct>\n" + - " <ram:SpecifiedLineTradeAgreement>\n" + - " <ram:GrossPriceProductTradePrice>\n" + - " <ram:ChargeAmount currencyID=\"EUR\">0.7900</ram:ChargeAmount>\n" + - " <ram:BasisQuantity unitCode=\"C62\">1.0000</ram:BasisQuantity>\n" + - " </ram:GrossPriceProductTradePrice>\n" + - " <ram:NetPriceProductTradePrice>\n" + - " <ram:ChargeAmount currencyID=\"EUR\">0.7900</ram:ChargeAmount>\n" + - " <ram:BasisQuantity unitCode=\"C62\">1.0000</ram:BasisQuantity>\n" + - " </ram:NetPriceProductTradePrice>\n" + - " </ram:SpecifiedLineTradeAgreement>\n" + - " <ram:SpecifiedLineTradeDelivery>\n" + - " <ram:BilledQuantity unitCode=\"C62\">400.0000</ram:BilledQuantity>\n" + - " </ram:SpecifiedLineTradeDelivery>\n" + - " <ram:SpecifiedLineTradeSettlement>\n" + - " <ram:ApplicableTradeTax>\n" + - " <ram:TypeCode>VAT</ram:TypeCode>\n" + - " <ram:CategoryCode>S</ram:CategoryCode>\n" + - " <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>\n" + - " </ram:ApplicableTradeTax>\n" + - " <ram:SpecifiedTradeSettlementLineMonetarySummation>\n" + - " <ram:LineTotalAmount currencyID=\"EUR\">316.00</ram:LineTotalAmount>\n" + - " </ram:SpecifiedTradeSettlementLineMonetarySummation>\n" + - " </ram:SpecifiedLineTradeSettlement>\n" + - " </ram:IncludedSupplyChainTradeLineItem>\n" + - " <ram:IncludedSupplyChainTradeLineItem>\n" + - " <ram:AssociatedDocumentLineDocument>\n" + - " <ram:LineID>3</ram:LineID>\n" + - " </ram:AssociatedDocumentLineDocument>\n" + - " <ram:SpecifiedTradeProduct>\n" + - " <ram:Name>Heiße Luft pro Liter</ram:Name>\n" + - " <ram:Description></ram:Description>\n" + - " </ram:SpecifiedTradeProduct>\n" + - " <ram:SpecifiedLineTradeAgreement>\n" + - " <ram:GrossPriceProductTradePrice>\n" + - " <ram:ChargeAmount currencyID=\"EUR\">0.1000</ram:ChargeAmount>\n" + - " <ram:BasisQuantity unitCode=\"LTR\">1.0000</ram:BasisQuantity>\n" + - " </ram:GrossPriceProductTradePrice>\n" + - " <ram:NetPriceProductTradePrice>\n" + - " <ram:ChargeAmount currencyID=\"EUR\">0.1000</ram:ChargeAmount>\n" + - " <ram:BasisQuantity unitCode=\"LTR\">1.0000</ram:BasisQuantity>\n" + - " </ram:NetPriceProductTradePrice>\n" + - " </ram:SpecifiedLineTradeAgreement>\n" + - " <ram:SpecifiedLineTradeDelivery>\n" + - " <ram:BilledQuantity unitCode=\"LTR\">200.0000</ram:BilledQuantity>\n" + - " </ram:SpecifiedLineTradeDelivery>\n" + - " <ram:SpecifiedLineTradeSettlement>\n" + - " <ram:ApplicableTradeTax>\n" + - " <ram:TypeCode>VAT</ram:TypeCode>\n" + - " <ram:CategoryCode>S</ram:CategoryCode>\n" + - " <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>\n" + - " </ram:ApplicableTradeTax>\n" + - " <ram:SpecifiedTradeSettlementLineMonetarySummation>\n" + - " <ram:LineTotalAmount currencyID=\"EUR\">20.00</ram:LineTotalAmount>\n" + - " </ram:SpecifiedTradeSettlementLineMonetarySummation>\n" + - " </ram:SpecifiedLineTradeSettlement>\n" + - " </ram:IncludedSupplyChainTradeLineItem>\n" + - " <ram:ApplicableHeaderTradeAgreement>\n" + - " <ram:SellerTradeParty>\n" + - " <ram:Name>Bei Spiel GmbH</ram:Name>\n" + - " <ram:PostalTradeAddress>\n" + - " <ram:PostcodeCode>12345</ram:PostcodeCode>\n" + - " <ram:LineOne>Ecke 12</ram:LineOne>\n" + - " <ram:CityName>Stadthausen</ram:CityName>\n" + - " <ram:CountryID>DE</ram:CountryID>\n" + - " </ram:PostalTradeAddress>\n" + - " <ram:SpecifiedTaxRegistration>\n" + - " <ram:ID schemeID=\"FC\">22/815/0815/4</ram:ID>\n" + - " </ram:SpecifiedTaxRegistration>\n" + - " <ram:SpecifiedTaxRegistration>\n" + - " <ram:ID schemeID=\"VA\">DE136695976</ram:ID>\n" + - " </ram:SpecifiedTaxRegistration>\n" + - " </ram:SellerTradeParty>\n" + - " <ram:BuyerTradeParty>\n" + - " <ram:Name>Theodor Est</ram:Name>\n" + - " <ram:PostalTradeAddress>\n" + - " <ram:PostcodeCode>88802</ram:PostcodeCode>\n" + - " <ram:LineOne>Bahnstr. 42</ram:LineOne>\n" + - " <ram:CityName>Spielkreis</ram:CityName>\n" + - " <ram:CountryID>DE</ram:CountryID>\n" + - " </ram:PostalTradeAddress>\n" + - " <ram:SpecifiedTaxRegistration>\n" + - " <ram:ID schemeID=\"VA\">DE999999999</ram:ID>\n" + - " </ram:SpecifiedTaxRegistration>\n" + - " </ram:BuyerTradeParty>\n" + - " </ram:ApplicableHeaderTradeAgreement>\n" + - " <ram:ApplicableHeaderTradeDelivery>\n" + - " <ram:ActualDeliverySupplyChainEvent>\n" + - " <ram:OccurrenceDateTime><udt:DateTimeString format=\"102\">20171117</udt:DateTimeString></ram:OccurrenceDateTime>\n" + - " </ram:ActualDeliverySupplyChainEvent>\n" + - " </ram:ApplicableHeaderTradeDelivery>\n" + - " <ram:ApplicableHeaderTradeSettlement>\n" + - " <ram:PaymentReference>RE-20171118/506</ram:PaymentReference>\n" + - " <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\n" + - " <ram:SpecifiedTradeSettlementPaymentMeans>\n" + - " <ram:TypeCode>42</ram:TypeCode>\n" + - " <ram:Information>Überweisung</ram:Information>\n" + - " <ram:PayeePartyCreditorFinancialAccount>\n" + - " <ram:IBANID>DE88 2008 0000 0970 3757 00</ram:IBANID>\n" + - " <ram:ProprietaryID>44421800</ram:ProprietaryID>\n" + - " </ram:PayeePartyCreditorFinancialAccount>\n" + - " <ram:PayeeSpecifiedCreditorFinancialInstitution>\n" + - " <ram:BICID>COBADEFFXXX</ram:BICID>\n" + - " <ram:GermanBankleitzahlID>41441604</ram:GermanBankleitzahlID>\n" + - " <ram:Name>Commerzbank</ram:Name>\n" + - " </ram:PayeeSpecifiedCreditorFinancialInstitution>\n" + - " </ram:SpecifiedTradeSettlementPaymentMeans>\n" + - " <ram:ApplicableTradeTax>\n" + - " <ram:CalculatedAmount currencyID=\"EUR\">11.20</ram:CalculatedAmount>\n" + - " <ram:TypeCode>VAT</ram:TypeCode>\n" + - " <ram:BasisAmount currencyID=\"EUR\">160.00</ram:BasisAmount>\n" + - " <ram:CategoryCode>S</ram:CategoryCode>\n" + - " <ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>\n" + - " </ram:ApplicableTradeTax>\n" + - " <ram:ApplicableTradeTax>\n" + - " <ram:CalculatedAmount currencyID=\"EUR\">63.84</ram:CalculatedAmount>\n" + - " <ram:TypeCode>VAT</ram:TypeCode>\n" + - " <ram:BasisAmount currencyID=\"EUR\">336.00</ram:BasisAmount>\n" + - " <ram:CategoryCode>S</ram:CategoryCode>\n" + - " <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>\n" + - " </ram:ApplicableTradeTax>\n" + - " <ram:SpecifiedTradePaymentTerms>\n" + - " <ram:Description>Zahlbar ohne Abzug bis 09.12.2017</ram:Description>\n" + - " <ram:DueDateDateTime><udt:DateTimeString format=\"102\">20171209</udt:DateTimeString></ram:DueDateDateTime>\n" + - " </ram:SpecifiedTradePaymentTerms>\n" + - " <ram:SpecifiedTradeSettlementHeaderMonetarySummation>\n" + - " <ram:LineTotalAmount currencyID=\"EUR\">496.00</ram:LineTotalAmount>\n" + - " <ram:ChargeTotalAmount currencyID=\"EUR\">0.00</ram:ChargeTotalAmount>\n" + - " <ram:AllowanceTotalAmount currencyID=\"EUR\">0.00</ram:AllowanceTotalAmount>\n" + - " <ram:TaxBasisTotalAmount currencyID=\"EUR\">496.00</ram:TaxBasisTotalAmount>\n" + - " <ram:TaxTotalAmount currencyID=\"EUR\">75.04</ram:TaxTotalAmount>\n" + - " <ram:GrandTotalAmount currencyID=\"EUR\">571.04</ram:GrandTotalAmount>\n" + - " <ram:DuePayableAmount currencyID=\"EUR\">571.04</ram:DuePayableAmount>\n" + - " </ram:SpecifiedTradeSettlementHeaderMonetarySummation>\n" + - " </ram:ApplicableHeaderTradeSettlement>\n" + - " </rsm:SupplyChainTradeTransaction>\n" + - "</rsm:CrossIndustryInvoice>"; - zea1.setZUGFeRDXMLData(ownZUGFeRDXML.getBytes("UTF-8")); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - zea1.disableAutoClose(true); - zea1.export(TARGET_PDF); - zea1.export(baos); - zea1.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); - assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1); - - } catch (IOException e) { - e.printStackTrace(); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBLZ(), "41441604"); - assertEquals(zi.getBIC(), "COBADEFFXXX"); - assertEquals(zi.getIBAN(), "DE88 2008 0000 0970 3757 00"); - assertEquals(zi.getKTO(), "44421800"); - assertEquals(zi.getHolder(), "Bei Spiel GmbH"); - assertEquals(zi.getForeignReference(), "RE-20171118/506"); - } - - /** - * The exporter test bases on @{code - * ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds - * metadata, writes to @{code ./target/testout-*} and then imports to check the - * values. It would not make sense to have it run before the less complex - * importer test (which is probably redundant). As only Name Ascending is - * supported for Test Unit sequence, I renamed the Exporter Test test-Z-Export - */ - public void testCustomZF1Export() { - - final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505custom.pdf"; - // the writing part - - try { - InputStream SOURCE_PDF = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf"); - - ZUGFeRDExporter zea1 = new ZUGFeRDExporterFromA1Factory() - .setProducer("My Application") - .setCreator("Test") - .setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.BASIC) - .load(SOURCE_PDF); - /* we have much more information than just in the basic profile (comfort or extended) but it's perfectly valid to provide more information, just not less. */ - String ownZUGFeRDXML = "<rsm:CrossIndustryDocument xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ram=\"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:12\" xmlns:udt=\"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:15\" xmlns:rsm=\"urn:ferd:CrossIndustryDocument:invoice:1p0\">\n" - + "<rsm:SpecifiedExchangedDocumentContext>\n" + "<ram:TestIndicator>\n" - + "<udt:Indicator>false</udt:Indicator>\n" + "</ram:TestIndicator>\n" - + "<ram:GuidelineSpecifiedDocumentContextParameter>\n" + "<ram:ID>\n" - + "urn:ferd:CrossIndustryDocument:invoice:1p0:basic\n" + "</ram:ID>\n" - + "</ram:GuidelineSpecifiedDocumentContextParameter>\n" - + "</rsm:SpecifiedExchangedDocumentContext>\n" + "<rsm:HeaderExchangedDocument>\n" - + "<ram:ID>RE-20170509/505</ram:ID>\n" + "<ram:Name>RECHNUNG</ram:Name>\n" - + "<ram:TypeCode>380</ram:TypeCode>\n" + "<ram:IssueDateTime>\n" - + "<udt:DateTimeString format=\"102\">20170509</udt:DateTimeString>\n" + "</ram:IssueDateTime>\n" - + "</rsm:HeaderExchangedDocument>\n" + "<rsm:SpecifiedSupplyChainTradeTransaction>\n" - + "<ram:ApplicableSupplyChainTradeAgreement>\n" + "<ram:SellerTradeParty>\n" - + "<ram:Name>Bei Spiel GmbH</ram:Name>\n" + "<ram:PostalTradeAddress>\n" - + "<ram:PostcodeCode>12345</ram:PostcodeCode>\n" + "<ram:LineOne>Ecke 12</ram:LineOne>\n" - + "<ram:CityName>Stadthausen</ram:CityName>\n" + "<ram:CountryID>DE</ram:CountryID>\n" - + "</ram:PostalTradeAddress>\n" + "<ram:SpecifiedTaxRegistration>\n" - + "<ram:ID schemeID=\"FC\">22/815/0815/4</ram:ID>\n" + "</ram:SpecifiedTaxRegistration>\n" - + "<ram:SpecifiedTaxRegistration>\n" + "<ram:ID schemeID=\"VA\">DE136695976</ram:ID>\n" - + "</ram:SpecifiedTaxRegistration>\n" + "</ram:SellerTradeParty>\n" + "<ram:BuyerTradeParty>\n" - + "<ram:Name>Theodor Est</ram:Name>\n" + "<ram:PostalTradeAddress>\n" - + "<ram:PostcodeCode>88802</ram:PostcodeCode>\n" + "<ram:LineOne>Bahnstr. 42</ram:LineOne>\n" - + "<ram:CityName>Spielkreis</ram:CityName>\n" + "<ram:CountryID>DE</ram:CountryID>\n" - + "</ram:PostalTradeAddress>\n" + "<ram:SpecifiedTaxRegistration>\n" - + "<ram:ID schemeID=\"VA\">DE999999999</ram:ID>\n" + "</ram:SpecifiedTaxRegistration>\n" - + "</ram:BuyerTradeParty>\n" + "</ram:ApplicableSupplyChainTradeAgreement>\n" - + "<ram:ApplicableSupplyChainTradeDelivery>\n" + "<ram:ActualDeliverySupplyChainEvent>\n" - + "<ram:OccurrenceDateTime>\n" - + "<udt:DateTimeString format=\"102\">20170507</udt:DateTimeString>\n" - + "</ram:OccurrenceDateTime>\n" + "</ram:ActualDeliverySupplyChainEvent>\n" - + "</ram:ApplicableSupplyChainTradeDelivery>\n" + "<ram:ApplicableSupplyChainTradeSettlement>\n" - + "<ram:PaymentReference>RE-20170509/505</ram:PaymentReference>\n" - + "<ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>\n" - + "<ram:SpecifiedTradeSettlementPaymentMeans>\n" + "<ram:TypeCode>42</ram:TypeCode>\n" - + "<ram:Information>Überweisung</ram:Information>\n" + "<ram:PayeePartyCreditorFinancialAccount>\n" - + "<ram:IBANID>DE88 2008 0000 0970 3757 00</ram:IBANID>\n" - + "<ram:ProprietaryID>44421800</ram:ProprietaryID>\n" - + "</ram:PayeePartyCreditorFinancialAccount>\n" - + "<ram:PayeeSpecifiedCreditorFinancialInstitution>\n" - + "<ram:BICID>COBADEFFXXX</ram:BICID>\n" - + "<ram:GermanBankleitzahlID>41441604</ram:GermanBankleitzahlID>\n" - + "<ram:Name>Commerzbank</ram:Name>\n" - + "</ram:PayeeSpecifiedCreditorFinancialInstitution>\n" - + "</ram:SpecifiedTradeSettlementPaymentMeans>\n" + "<ram:ApplicableTradeTax>\n" - + "<ram:CalculatedAmount currencyID=\"EUR\">11.20</ram:CalculatedAmount>\n" - + "<ram:TypeCode>VAT</ram:TypeCode>\n" - + "<ram:BasisAmount currencyID=\"EUR\">160.00</ram:BasisAmount>\n" - + "<ram:CategoryCode>S</ram:CategoryCode>\n" - + "<ram:ApplicablePercent>7.00</ram:ApplicablePercent>\n" + "</ram:ApplicableTradeTax>\n" - + "<ram:ApplicableTradeTax>\n" - + "<ram:CalculatedAmount currencyID=\"EUR\">63.84</ram:CalculatedAmount>\n" - + "<ram:TypeCode>VAT</ram:TypeCode>\n" - + "<ram:BasisAmount currencyID=\"EUR\">336.00</ram:BasisAmount>\n" - + "<ram:CategoryCode>S</ram:CategoryCode>\n" - + "<ram:ApplicablePercent>19.00</ram:ApplicablePercent>\n" + "</ram:ApplicableTradeTax>\n" - + "<ram:SpecifiedTradePaymentTerms>\n" - + "<ram:Description>Zahlbar ohne Abzug bis zum 30.05.2017</ram:Description>\n" - + "<ram:DueDateDateTime>\n" + "<udt:DateTimeString format=\"102\">20170530</udt:DateTimeString>\n" - + "</ram:DueDateDateTime>\n" + "</ram:SpecifiedTradePaymentTerms>\n" - + "<ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "<ram:LineTotalAmount currencyID=\"EUR\">496.00</ram:LineTotalAmount>\n" - + "<ram:ChargeTotalAmount currencyID=\"EUR\">0.00</ram:ChargeTotalAmount>\n" - + "<ram:AllowanceTotalAmount currencyID=\"EUR\">0.00</ram:AllowanceTotalAmount>\n" - + "<ram:TaxBasisTotalAmount currencyID=\"EUR\">496.00</ram:TaxBasisTotalAmount>\n" - + "<ram:TaxTotalAmount currencyID=\"EUR\">75.04</ram:TaxTotalAmount>\n" - + "<ram:GrandTotalAmount currencyID=\"EUR\">571.04</ram:GrandTotalAmount>\n" - + "<ram:DuePayableAmount currencyID=\"EUR\">571.04</ram:DuePayableAmount>\n" - + "</ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "</ram:ApplicableSupplyChainTradeSettlement>\n" + "<ram:IncludedSupplyChainTradeLineItem>\n" - + "<ram:AssociatedDocumentLineDocument>\n" + "<ram:LineID>1</ram:LineID>\n" - + "</ram:AssociatedDocumentLineDocument>\n" + "<ram:SpecifiedSupplyChainTradeAgreement>\n" - + "<ram:GrossPriceProductTradePrice>\n" - + "<ram:ChargeAmount currencyID=\"EUR\">160.0000</ram:ChargeAmount>\n" - + "<ram:BasisQuantity unitCode=\"HUR\">1.0000</ram:BasisQuantity>\n" - + "</ram:GrossPriceProductTradePrice>\n" + "<ram:NetPriceProductTradePrice>\n" - + "<ram:ChargeAmount currencyID=\"EUR\">160.0000</ram:ChargeAmount>\n" - + "<ram:BasisQuantity unitCode=\"HUR\">1.0000</ram:BasisQuantity>\n" - + "</ram:NetPriceProductTradePrice>\n" + "</ram:SpecifiedSupplyChainTradeAgreement>\n" - + "<ram:SpecifiedSupplyChainTradeDelivery>\n" - + "<ram:BilledQuantity unitCode=\"HUR\">1.0000</ram:BilledQuantity>\n" - + "</ram:SpecifiedSupplyChainTradeDelivery>\n" + "<ram:SpecifiedSupplyChainTradeSettlement>\n" - + "<ram:ApplicableTradeTax>\n" + "<ram:TypeCode>VAT</ram:TypeCode>\n" - + "<ram:CategoryCode>S</ram:CategoryCode>\n" - + "<ram:ApplicablePercent>7.00</ram:ApplicablePercent>\n" + "</ram:ApplicableTradeTax>\n" - + "<ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "<ram:LineTotalAmount currencyID=\"EUR\">160.00</ram:LineTotalAmount>\n" - + "</ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "</ram:SpecifiedSupplyChainTradeSettlement>\n" + "<ram:SpecifiedTradeProduct>\n" + "<ram:Name>\n" - + "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung\n" + "</ram:Name>\n" - + "<ram:Description/>\n" + "</ram:SpecifiedTradeProduct>\n" - + "</ram:IncludedSupplyChainTradeLineItem>\n" + "<ram:IncludedSupplyChainTradeLineItem>\n" - + "<ram:AssociatedDocumentLineDocument>\n" + "<ram:LineID>2</ram:LineID>\n" - + "</ram:AssociatedDocumentLineDocument>\n" + "<ram:SpecifiedSupplyChainTradeAgreement>\n" - + "<ram:GrossPriceProductTradePrice>\n" - + "<ram:ChargeAmount currencyID=\"EUR\">0.7900</ram:ChargeAmount>\n" - + "<ram:BasisQuantity unitCode=\"C62\">1.0000</ram:BasisQuantity>\n" - + "</ram:GrossPriceProductTradePrice>\n" + "<ram:NetPriceProductTradePrice>\n" - + "<ram:ChargeAmount currencyID=\"EUR\">0.7900</ram:ChargeAmount>\n" - + "<ram:BasisQuantity unitCode=\"C62\">1.0000</ram:BasisQuantity>\n" - + "</ram:NetPriceProductTradePrice>\n" + "</ram:SpecifiedSupplyChainTradeAgreement>\n" - + "<ram:SpecifiedSupplyChainTradeDelivery>\n" - + "<ram:BilledQuantity unitCode=\"C62\">400.0000</ram:BilledQuantity>\n" - + "</ram:SpecifiedSupplyChainTradeDelivery>\n" + "<ram:SpecifiedSupplyChainTradeSettlement>\n" - + "<ram:ApplicableTradeTax>\n" + "<ram:TypeCode>VAT</ram:TypeCode>\n" - + "<ram:CategoryCode>S</ram:CategoryCode>\n" - + "<ram:ApplicablePercent>19.00</ram:ApplicablePercent>\n" + "</ram:ApplicableTradeTax>\n" - + "<ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "<ram:LineTotalAmount currencyID=\"EUR\">316.00</ram:LineTotalAmount>\n" - + "</ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "</ram:SpecifiedSupplyChainTradeSettlement>\n" + "<ram:SpecifiedTradeProduct>\n" - + "<ram:Name>Luftballon: Bunt, ca. 500ml</ram:Name>\n" + "<ram:Description/>\n" - + "</ram:SpecifiedTradeProduct>\n" + "</ram:IncludedSupplyChainTradeLineItem>\n" - + "<ram:IncludedSupplyChainTradeLineItem>\n" + "<ram:AssociatedDocumentLineDocument>\n" - + "<ram:LineID>3</ram:LineID>\n" + "</ram:AssociatedDocumentLineDocument>\n" - + "<ram:SpecifiedSupplyChainTradeAgreement>\n" + "<ram:GrossPriceProductTradePrice>\n" - + "<ram:ChargeAmount currencyID=\"EUR\">0.1000</ram:ChargeAmount>\n" - + "<ram:BasisQuantity unitCode=\"LTR\">1.0000</ram:BasisQuantity>\n" - + "</ram:GrossPriceProductTradePrice>\n" + "<ram:NetPriceProductTradePrice>\n" - + "<ram:ChargeAmount currencyID=\"EUR\">0.1000</ram:ChargeAmount>\n" - + "<ram:BasisQuantity unitCode=\"LTR\">1.0000</ram:BasisQuantity>\n" - + "</ram:NetPriceProductTradePrice>\n" + "</ram:SpecifiedSupplyChainTradeAgreement>\n" - + "<ram:SpecifiedSupplyChainTradeDelivery>\n" - + "<ram:BilledQuantity unitCode=\"LTR\">200.0000</ram:BilledQuantity>\n" - + "</ram:SpecifiedSupplyChainTradeDelivery>\n" + "<ram:SpecifiedSupplyChainTradeSettlement>\n" - + "<ram:ApplicableTradeTax>\n" + "<ram:TypeCode>VAT</ram:TypeCode>\n" - + "<ram:CategoryCode>S</ram:CategoryCode>\n" - + "<ram:ApplicablePercent>19.00</ram:ApplicablePercent>\n" + "</ram:ApplicableTradeTax>\n" - + "<ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "<ram:LineTotalAmount currencyID=\"EUR\">20.00</ram:LineTotalAmount>\n" - + "</ram:SpecifiedTradeSettlementMonetarySummation>\n" - + "</ram:SpecifiedSupplyChainTradeSettlement>\n" + "<ram:SpecifiedTradeProduct>\n" - + "<ram:Name>Heiße Luft pro Liter</ram:Name>\n" + "<ram:Description/>\n" - + "</ram:SpecifiedTradeProduct>\n" + "</ram:IncludedSupplyChainTradeLineItem>\n" - + "</rsm:SpecifiedSupplyChainTradeTransaction>\n" + "</rsm:CrossIndustryDocument>"; - zea1.setZUGFeRDXMLData(ownZUGFeRDXML.getBytes("UTF-8")); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - zea1.disableAutoClose(true); - zea1.export(TARGET_PDF); - zea1.export(baos); - zea1.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); - assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>BASIC</zf:ConformanceLevel>") == -1); - - } catch (IOException e) { - e.printStackTrace(); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), "COBADEFFXXX"); - assertEquals(zi.getBLZ(), "41441604"); - assertEquals(zi.getIBAN(), "DE88 2008 0000 0970 3757 00"); - assertEquals(zi.getKTO(), "44421800"); - assertEquals(zi.getHolder(), "Bei Spiel GmbH"); - assertEquals(zi.getForeignReference(), "RE-20170509/505"); - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java deleted file mode 100644 index 3f1ebfc3..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterEdgeTest.java +++ /dev/null @@ -1,242 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; - -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class MustangReaderWriterEdgeTest extends MustangReaderTestCase { - - @Override - public Date getDeliveryDate() { - return new GregorianCalendar(2017, Calendar.MAY, 7).getTime(); - } - - @Override - public Date getDueDate() { - return new GregorianCalendar(2017, Calendar.MAY, 30).getTime(); - } - - @Override - public Date getIssueDate() { - return new GregorianCalendar(2017, Calendar.MAY, 9).getTime(); - } - - @Override - public String getNumber() { - return "RE-20170509/505"; - } - - @Override - public String getOwnCountry() { - return "DE"; - } - - @Override - public String getOwnLocation() { - return "Stadthausen"; - } - - @Override - public String getOwnOrganisationName() { - return "Bei Spiel GmbH"; - } - - @Override - public String getOwnStreet() { - return "Ecke 12"; - } - - - @Override - public IZUGFeRDExportableContact getOwnContact() { - return new SenderContact(); - - } - - @Override - public String getOwnTaxID() { - return "22/815/0815/4"; - } - - @Override - public String getOwnVATID() { - return "DE136695976"; - } - - @Override - public String getOwnZIP() { - return "12345"; - } - - @Override - public IZUGFeRDExportableContact getRecipient() { - return new RecipientContact(); - } - - @Override - public String getOwnOrganisationFullPlaintextInfo() { - return null; - } - - @Override - public String getCurrency() { - return "EUR"; - } - - @Override - public IZUGFeRDExportableItem[] getZFItems() { - Item[] allItems = new Item[3]; - Product designProduct = new Product("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung", "HUR", new BigDecimal("7.000000")); - Product balloonProduct = new Product("", "Luftballon: Bunt, ca. 500ml", "C62", new BigDecimal("19.000000")); - Product airProduct = new Product("", "Heiße Luft pro Liter", "LTR", new BigDecimal("19.000000")); - - allItems[0] = new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct); - allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct); - allItems[2] = new Item(new BigDecimal("0.10"), new BigDecimal("200"), airProduct); - return allItems; - } - - @Override - public String getPaymentTermDescription() { - SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); - return "Zahlbar ohne Abzug bis zum " + germanDateFormat.format(getDueDate()); - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFAllowances() { - return null; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFCharges() { - return null; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { - return null; - } - - @Override - public String getReferenceNumber() { - return "AB321"; - } - - /** - * Create the test case - * - * @param testName name of the test case - */ - public MustangReaderWriterEdgeTest(String testName) { - super(testName); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() { - return new TestSuite(MustangReaderWriterEdgeTest.class); - } - - // //////// TESTS ////////////////////////////////////////////////////////////////////////////////////////// - - /** - * The importer test imports from ./src/test/MustangGnuaccountingBeispielRE-20170509_505.pdf to check the values. - * As only Name Ascending is supported for Test Unit sequence, I renamed the this test-A-Import to run before - * testZExport - */ - - public void testAImport() { - InputStream inputStream = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); - ZUGFeRDImporter zi = new ZUGFeRDImporter(inputStream); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getBLZ(), getTradeSettlementPayment()[0].getOwnBLZ()); - assertEquals(zi.getIBAN(), getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getKTO(), getTradeSettlementPayment()[0].getOwnKto()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getDueDate(), "20170530"); - assertEquals(zi.getForeignReference(), getNumber()); - assertEquals(zi.getDocumentCode(), "380"); - - } - - /** - * The exporter test bases on @{code ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds metadata, - * writes to @{code ./target/testout-*} and then imports to check the values. - * It would not make sense to have it run before the less complex importer test (which is probably redundant). - * As only Name Ascending is supported for Test Unit sequence, I renamed the Exporter Test test-Z-Export - */ - public void testEdgeExport() { - - final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505newEdge.pdf"; - // the writing part - - try (InputStream SOURCE_PDF = - this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA3Factory() - .setProducer("My Application") - .setCreator(System.getProperty("user.name")) - .setZUGFeRDVersion(1) - .ignorePDFAErrors() - .load(SOURCE_PDF)) { - ze.PDFattachZugferdFile(this); - String theXML = new String(ze.getProvider().getXML()); - assertTrue(theXML.contains("<rsm:CrossIndustryDocument")); - ze.export(TARGET_PDF); - } catch (IOException e) { - fail("IOException should not happen in testEdgeExport"); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getBLZ(), getTradeSettlementPayment()[0].getOwnBLZ()); - assertEquals(zi.getIBAN(), getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getKTO(), getTradeSettlementPayment()[0].getOwnKto()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - try { - assertEquals(zi.getVersion(), 1); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java b/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java deleted file mode 100644 index 38f9a552..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/MustangReaderWriterTest.java +++ /dev/null @@ -1,482 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.apache.pdfbox.pdmodel.PDDocument; -import org.apache.pdfbox.pdmodel.common.PDMetadata; -import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException; -import org.apache.xmpbox.XMPMetadata; -import org.apache.xmpbox.schema.PDFAIdentificationSchema; -import org.apache.xmpbox.xml.DomXmpParser; -import org.apache.xmpbox.xml.XmpParsingException; -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; -import org.mustangproject.ZUGFeRD.model.DocumentContextParameterTypeConstants; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.*; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class MustangReaderWriterTest extends MustangReaderTestCase { - - @Override - public Date getDeliveryDate() { - return new GregorianCalendar(2019, Calendar.JUNE, 10).getTime(); - } - - @Override - public Date getDueDate() { - return new GregorianCalendar(2019, Calendar.JULY, 1).getTime(); - } - - @Override - public Date getIssueDate() { - return new GregorianCalendar(2019, Calendar.JUNE, 10).getTime(); - } - - @Override - public String getNumber() { - return "RE-20190610/507"; - } - - @Override - public String getOwnCountry() { - return "DE"; - } - - @Override - public String getOwnLocation() { - return "Stadthausen"; - } - - @Override - public String getOwnOrganisationName() { - return "Bei Spiel GmbH"; - } - - @Override - public String getOwnStreet() { - return "Ecke 12"; - } - - @Override - public String getOwnTaxID() { - return "22/815/0815/4"; - } - - @Override - public String getOwnVATID() { - return "DE136695976"; - } - - @Override - public String getOwnZIP() { - return "12345"; - } - - @Override - public IZUGFeRDExportableContact getRecipient() { - return new RecipientContact(); - } - - @Override - public IZUGFeRDExportableContact getOwnContact() { - return new SenderContact(); - } - - @Override - public String getOwnOrganisationFullPlaintextInfo() { - return null; - } - - @Override - public String getCurrency() { - return "EUR"; - } - - @Override - public IZUGFeRDExportableItem[] getZFItems() { - Item[] allItems = new Item[3]; - Product designProduct = new Product("", "Design (hours): Of a sample invoice", "HUR", - new BigDecimal("7.000000")); - Product balloonProduct = new Product("", "Ballons: various colors, ~2000ml", "C62", new BigDecimal("19.000000")); - Product airProduct = new Product("", "Hot air „heiße Luft“ (litres)", "LTR", new BigDecimal("19.000000")); - - allItems[0] = new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct); - allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct); - allItems[2] = new Item(new BigDecimal("0.025"), new BigDecimal("800"), airProduct); - return allItems; - } - - @Override - public String getPaymentTermDescription() { - SimpleDateFormat isoDateFormat = new SimpleDateFormat("yyyy-MM-dd"); - return "Remit until " + isoDateFormat.format(getDueDate()); - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFAllowances() { - return null; - // throw new UnsupportedOperationException("Not supported yet."); //To change - // body of generated methods, choose Tools | Templates. - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFCharges() { - return null; - // throw new UnsupportedOperationException("Not supported yet."); //To change - // body of generated methods, choose Tools | Templates. - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { - return null; - // throw new UnsupportedOperationException("Not supported yet."); //To change - // body of generated methods, choose Tools | Templates. - } - - @Override - public String getReferenceNumber() { - return "AB321"; - } - - /** - * Create the test case - * - * @param testName name of the test case - */ - public MustangReaderWriterTest(String testName) { - super(testName); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() { - return new TestSuite(MustangReaderWriterTest.class); - } - - // //////// TESTS - // ////////////////////////////////////////////////////////////////////////////////////////// - - /** - * The importer test imports from ./src/test/MustangGnuaccountingBeispielRE-20170509_505.pdf to check the - * values. As only Name Ascending is supported for Test Unit sequence, I renamed the this testAImport - * to run before testZExport - */ - - public void testAImport() { - InputStream inputStream = this.getClass().getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505.pdf"); - ZUGFeRDImporter zi = new ZUGFeRDImporter(inputStream); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBLZ(), getTradeSettlementPayment()[0].getOwnBLZ()); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getIBAN(),getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getKTO(), getTradeSettlementPayment()[0].getOwnKto()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), "RE-20170509/505"); - assertEquals(zi.getBankName(), "Commerzbank"); - } - - public void testForeignImport() { - InputStream inputStream = this.getClass().getResourceAsStream("/zugferd_invoice.pdf"); - ZUGFeRDImporter zi = new ZUGFeRDImporter(inputStream); - - // Reading ZUGFeRD - String amount = zi.getAmount(); - - assertEquals("<?xpacket begin=\"\" id=\"W5M0MpCehiHzreSzNTczkc9d\"?>\n" + - " <x:xmpmeta xmlns:x=\"adobe:ns:meta/\">\n" + - " <rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n" + - " <rdf:Description rdf:about=\"\" xmlns:xmpMM=\"http://ns.adobe.com/xap/1.0/mm/\">\n" + - " <xmpMM:InstanceID>uuid:6776DD95-DAF6-768E-DAE6-2697750D95C5</xmpMM:InstanceID>\n" + - " <xmpMM:DocumentID>uuid:47380404-5938-FE2C-8F0B-B505DCE43BF5</xmpMM:DocumentID>\n" + - " </rdf:Description>\n" + - " <rdf:Description rdf:about=\"\" xmlns:zf=\"urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#\">\n" + - " <zf:ConformanceLevel>BASIC</zf:ConformanceLevel>\n" + - " <zf:DocumentFileName>ZUGFeRD-invoice.xml</zf:DocumentFileName>\n" + - " <zf:DocumentType>INVOICE</zf:DocumentType>\n" + - " <zf:Version>1.0</zf:Version>\n" + - " </rdf:Description>\n" + - " <rdf:Description rdf:about=\"\" xmlns:pdfaExtension=\"http://www.aiim.org/pdfa/ns/extension/\" xmlns:pdfaSchema=\"http://www.aiim.org/pdfa/ns/schema#\" xmlns:pdfaProperty=\"http://www.aiim.org/pdfa/ns/property#\">\n" + - " <pdfaExtension:schemas>\n" + - " <rdf:Bag>\n" + - " <rdf:li rdf:parseType=\"Resource\">\n" + - " <pdfaSchema:schema>ZUGFeRD PDFA Extension Schema</pdfaSchema:schema>\n" + - " <pdfaSchema:namespaceURI>urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#</pdfaSchema:namespaceURI>\n" + - " <pdfaSchema:prefix>zf</pdfaSchema:prefix>\n" + - " <pdfaSchema:property>\n" + - " <rdf:Seq>\n" + - " <rdf:li rdf:parseType=\"Resource\">\n" + - " <pdfaProperty:name>DocumentFileName</pdfaProperty:name>\n" + - " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n" + - " <pdfaProperty:category>external</pdfaProperty:category>\n" + - " <pdfaProperty:description>name of the embedded XML invoice file</pdfaProperty:description>\n" + - " </rdf:li>\n" + - " <rdf:li rdf:parseType=\"Resource\">\n" + - " <pdfaProperty:name>DocumentType</pdfaProperty:name>\n" + - " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n" + - " <pdfaProperty:category>external</pdfaProperty:category>\n" + - " <pdfaProperty:description>INVOICE</pdfaProperty:description>\n" + - " </rdf:li>\n" + - " <rdf:li rdf:parseType=\"Resource\">\n" + - " <pdfaProperty:name>Version</pdfaProperty:name>\n" + - " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n" + - " <pdfaProperty:category>external</pdfaProperty:category>\n" + - " <pdfaProperty:description>The actual version of the ZUGFeRD XML schema</pdfaProperty:description>\n" + - " </rdf:li>\n" + - " <rdf:li rdf:parseType=\"Resource\">\n" + - " <pdfaProperty:name>ConformanceLevel</pdfaProperty:name>\n" + - " <pdfaProperty:valueType>Text</pdfaProperty:valueType>\n" + - " <pdfaProperty:category>external</pdfaProperty:category>\n" + - " <pdfaProperty:description>The conformance level of the embedded ZUGFeRD data</pdfaProperty:description>\n" + - " </rdf:li>\n" + - " </rdf:Seq>\n" + - " </pdfaSchema:property>\n" + - " </rdf:li>\n" + - " </rdf:Bag>\n" + - " </pdfaExtension:schemas>\n" + - " </rdf:Description>\n" + - " <rdf:Description rdf:about=\"\" xmlns:pdfaid=\"http://www.aiim.org/pdfa/ns/id/\">\n" + - " <pdfaid:part>3</pdfaid:part>\n" + - " <pdfaid:conformance>B</pdfaid:conformance>\n" + - " </rdf:Description>\n" + - " <rdf:Description rdf:about=\"\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\">\n" + - " <xmp:CreateDate>2014-07-11T13:39:46+02:00</xmp:CreateDate>\n" + - " <xmp:ModifyDate>2014-07-11T13:39:46+02:00</xmp:ModifyDate>\n" + - " <xmp:CreatorTool>zugferd_invoice.java</xmp:CreatorTool>\n" + - " <xmp:MetadataDate>2014-07-11T13:39:46+02:00</xmp:MetadataDate>\n" + - " </rdf:Description>\n" + - " <rdf:Description rdf:about=\"\" xmlns:pdf=\"http://ns.adobe.com/pdf/1.3/\">\n" + - " <pdf:Producer>PDFlib Personalization Server 9.0.3 (JDK 1.6/Mac OS X-10.6 64)</pdf:Producer>\n" + - " </rdf:Description>\n" + - " <rdf:Description rdf:about=\"\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n" + - " <dc:title>\n" + - " <rdf:Alt>\n" + - " <rdf:li xml:lang=\"x-default\">ZUGFeRD Rechnung $Revision: 1.13 $</rdf:li>\n" + - " </rdf:Alt>\n" + - " </dc:title>\n" + - " </rdf:Description>\n" + - " </rdf:RDF>\n" + - " </x:xmpmeta>\n" + - "<?xpacket end=\"r\"?>", zi.getXMP()); - // this resembles the data written in MustangReaderWriterCustomXMLTest - assertEquals(amount, "1005.55"); - - } - - - public void testMigratePDFA1ToA3() throws IOException { -// just make sure there is no Exception - InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20171118_506blanko.pdf"); - - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setAttachZUGFeRDHeaders(false).load(SOURCE_PDF); - - File tempFile = File.createTempFile("ZUGFeRD-", "-test"); - ze.export(tempFile.getAbsolutePath()); - tempFile.deleteOnExit(); - checkPdfA3B(tempFile); - } - - public void testMigratePDFA1ToA3Stream() throws IOException { - // just make sure there is no Exception - InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20171118_506blanko.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setAttachZUGFeRDHeaders(false).load(SOURCE_PDF); - - File tempFile = File.createTempFile("ZUGFeRD-", "-test"); - tempFile.deleteOnExit(); - try (FileOutputStream fos = new FileOutputStream(tempFile)) { - ze.export(fos); - } - checkPdfA3B(tempFile); - } - - private void checkPdfA3B(File tempFile) throws IOException, InvalidPasswordException { - try (PDDocument doc = PDDocument.load(tempFile)) { - PDMetadata metadata = doc.getDocumentCatalog().getMetadata(); - InputStream exportXMPMetadata = metadata.exportXMPMetadata(); - byte[] xmpBytes = new byte[exportXMPMetadata.available()]; - exportXMPMetadata.read(xmpBytes); - final XMPMetadata xmp = new DomXmpParser().parse(xmpBytes); - PDFAIdentificationSchema pdfaid = xmp.getPDFIdentificationSchema(); - assertEquals(pdfaid.getPart().intValue(), 3); - assertEquals(pdfaid.getConformance(), "U"); - } catch (XmpParsingException e) { - throw new IllegalStateException("Failed to read PDF", e); - } - } - - /** - * The exporter test bases on @{code - * ./src/test/MustangGnuaccountingBeispielRE-20140703_502blanko.pdf}, adds - * metadata, writes to @{code ./target/testout-*} and then imports to check the - * values. It would not make sense to have it run before the less complex - * importer test (which is probably redundant). As only Name Ascending is - * supported for Test Unit sequence, I renamed the Exporter Test test-Z-Export - */ - public void testZExport() { - - final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506new.pdf"; - - // the writing part - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setZUGFeRDVersion(2).setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931).load(SOURCE_PDF)) { - - ze.PDFattachZugferdFile(this); - ze.disableAutoClose(true); - ze.export(TARGET_PDF); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ze.export(baos); - ze.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); - // check for pdf-a schema extension -// assertFalse(pdfContent.indexOf("<zf:ConformanceLevel>EN 16931</zf:ConformanceLevel>") == -1); -// assertFalse(pdfContent.indexOf("<pdfaSchema:prefix>zf</pdfaSchema:prefix>") == -1); -// assertFalse(pdfContent.indexOf("urn:zugferd:pdfa:CrossIndustryDocument:invoice:2p0#") == -1); - - } catch (IOException e) { - fail("IOException should not happen in testZExport"); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getReference(), getReferenceNumber()); - assertEquals(zi.getIBAN(), getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getKTO(), getTradeSettlementPayment()[0].getOwnKto()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - } - - /** - * Quick and dirty copy of testZExport to check if v1 files contain - * the correct profile string when the comfort profile is selected. - */ - public void testZExportv1Profile() { - - final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506new.pdf"; - - // the writing part - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setZUGFeRDVersion(1).setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.COMFORT).load(SOURCE_PDF)) { - - ze.PDFattachZugferdFile(this); - ze.disableAutoClose(true); - ze.export(TARGET_PDF); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ze.export(baos); - ze.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf(DocumentContextParameterTypeConstants.BASIC) >= 0); - assertFalse(pdfContent.indexOf(DocumentContextParameterTypeConstants.EXTENDED) >= 0); - assertTrue(pdfContent.indexOf(DocumentContextParameterTypeConstants.COMFORT) >= 0); - - } catch (IOException e) { - fail("IOException should not happen in testZExport"); - } - } - - - public void testFXExport() throws Exception { - - final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20171118_506fx.pdf"; - - // the writing part - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20171118_506blanko.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().setZUGFeRDVersion(2).setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931).load(SOURCE_PDF)) { - ze.setFacturX(); - ze.PDFattachZugferdFile(this); - ze.disableAutoClose(true); - ze.export(TARGET_PDF); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ze.export(baos); - ze.close(); - String pdfContent = baos.toString("UTF-8"); - assertFalse(pdfContent.indexOf("(via mustangproject.org") == -1); - // check for pdf-a schema extension - assertFalse(pdfContent.indexOf("<fx:ConformanceLevel>EN 16931</fx:ConformanceLevel>") == -1); - assertFalse(pdfContent.indexOf("<pdfaSchema:prefix>fx</pdfaSchema:prefix>") == -1); - assertFalse(pdfContent.indexOf("urn:cen.eu:en16931:2017") == -1); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getIBAN(), getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getKTO(), getTradeSettlementPayment()[0].getOwnKto()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - } - - public void testExceptionOnPDF14() { - - final String TARGET_PDF = "./target/testout-MustangGnuaccountingBeispielRE-20170509_505new.pdf"; - - boolean exceptionThrown = false; - // the writing part - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDF14.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA1Factory().load(SOURCE_PDF)) { - - ze.PDFattachZugferdFile(this); - ze.export(TARGET_PDF); - - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ze.export(baos); - } catch (IOException ex) { - // should throw a java.io.IOException: File is not a valid PDF/A-1 input file - exceptionThrown = true; - } - assertTrue(exceptionThrown); - - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/ResourceUtilities.java b/src/test/java/org/mustangproject/ZUGFeRD/ResourceUtilities.java deleted file mode 100644 index cf908e72..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/ResourceUtilities.java +++ /dev/null @@ -1,216 +0,0 @@ -/** ********************************************************************** - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.io.*; -import java.net.URI; -import java.net.URISyntaxException; -import java.nio.charset.Charset; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.logging.Level; -import java.util.logging.Logger; - - -/** - * This test utility class is providing usability functions for test file resources - */ -public class ResourceUtilities { - private static final Logger LOG = Logger.getLogger(ResourceUtilities.class.getName()); - - /** - * Loading a File into a String using a certain encoding and file path - * @param encoding the charset used in the file - * @param path the path to the file - * @return the file contents as a String - * @throws IOException if the file cannot be read - */ - public static String readFile(Charset encoding, String path) throws IOException { - byte[] content = Files.readAllBytes(Paths.get(path)); - return new String(content, encoding); - } - - /** - * Saving a String as a file to a certain file path - * @param encoding the charset used in the file - * @param path the path to the file - * @param content the contents of the file - * @throws FileNotFoundException if the file cannot be found - */ - public static void saveFile(Charset encoding, String path, String content) throws FileNotFoundException { - - // resources will be released automatically - try (PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File(path)), encoding), true)) { - out.println(content); - } - } - - - /** - * The relative path of the test file will be resolved and the absolute will be returned - * - * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>. - * @return the absolute path of the test file - * @throws FileNotFoundException If the file could not be found - */ - public static String getAbsolutePath(String relativeFilePath) throws FileNotFoundException { - URI uri = null; - try { - uri = ResourceUtilities.class.getClassLoader().getResource(relativeFilePath).toURI(); - uri = new URI(toExternalForm(uri)); - } catch (URISyntaxException ex) { - LOG.log(Level.SEVERE, null, ex); - } - if (uri == null) { - throw new FileNotFoundException("Could not find the file '" + relativeFilePath + "'!"); - } - return uri.getPath(); - } - - /** - * The relative path of the test file will be resolved and the absolute will be returned - * - * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>. - * @return the URI created based on the relativeFilePath - * @throws URISyntaxException if no URI could be created from the given relative path - */ - public static URI getURI(String relativeFilePath) throws URISyntaxException { - String filePath = "file:" + ResourceUtilities.class.getClassLoader().getResource(relativeFilePath).getPath(); - filePath = toExternalForm(new URI(filePath)); - return new URI(filePath); - } - - /** - * The relative path of the test file will be used to determine an absolute - * path to a temporary directory in the output directory. - * - * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>. - * @return absolute path to a test output - * @throws IOException if no absolute Path could be created. - */ - public static String getTestOutput(String relativeFilePath) throws IOException { - File tempFile = File.createTempFile(relativeFilePath, null); - tempFile.deleteOnExit(); - return tempFile.getAbsolutePath(); - } - - /** - * The Input of the test file will be resolved and the absolute will be returned - * - * @param relativeFilePath Path of the test resource relative to <code>src/test/resource/</code>. - * @return the absolute path of the test file - */ - public static InputStream getTestResourceAsStream(String relativeFilePath) { - return ResourceUtilities.class.getClassLoader().getResourceAsStream(relativeFilePath); - } - - /** - * Relative to the test output directory a test file will be returned dependent on the relativeFilePath provided. - * - * @param relativeFilePath Path of the test output resource relative to <code>target/test-classes/</code>. - * @return the empty <code>File</code> of the test output (to be filled) - */ - public static File newTestOutputFile(String relativeFilePath) { - String filepath = null; - try { - filepath = ResourceUtilities.class.getClassLoader().getResource("").toURI().getPath() + relativeFilePath; - } catch (URISyntaxException ex) { - LOG.log(Level.SEVERE, null, ex); - } - return new File(filepath); - } - - /** - * @return the absolute path of the test output folder, which is usually <code>target/test-classes/</code>. - */ - public static String getTestOutputFolder() { - String testFolder = null; - try { - testFolder = ResourceUtilities.class.getClassLoader().getResource("").toURI().getPath(); - } catch (URISyntaxException ex) { - LOG.log(Level.SEVERE, null, ex); - } - return testFolder; - } - - public static File getTempTestDirectory() { - File tempDir = new File(ResourceUtilities.getTestOutputFolder() + "temp"); - tempDir.mkdir(); //if it already exist no problem - return tempDir; - } - - /** - * To fix the 3 slashes bug for File URI: For example: - * file:/C:/work/test.txt gives file:///C:/work/test.txt - * - * @param u - the File URI - * @return the String of the URI - */ - public static String toExternalForm(URI u) { - StringBuilder sb = new StringBuilder(); - if (u.getScheme() != null) { - sb.append(u.getScheme()); - sb.append(':'); - } - if (u.isOpaque()) { - sb.append(u.getSchemeSpecificPart()); - } else { - if (u.getHost() != null) { - sb.append("//"); - if (u.getUserInfo() != null) { - sb.append(u.getUserInfo()); - sb.append('@'); - } - boolean needBrackets = ((u.getHost().indexOf(':') >= 0) && !u.getHost().startsWith("[") && !u.getHost().endsWith("]")); - if (needBrackets) - sb.append('['); - sb.append(u.getHost()); - if (needBrackets) - sb.append(']'); - if (u.getPort() != -1) { - sb.append(':'); - sb.append(u.getPort()); - } - } else if (u.getRawAuthority() != null) { - sb.append("//"); - sb.append(u.getRawAuthority()); - } else { - sb.append("//"); - } - if (u.getRawPath() != null) - sb.append(u.getRawPath()); - if (u.getRawQuery() != null) { - sb.append('?'); - sb.append(u.getRawQuery()); - } - } - if (u.getFragment() != null) { - sb.append('#'); - sb.append(u.getFragment()); - } - String ret = null; - try { - ret = new URI(sb.toString()).toASCIIString(); - } catch (URISyntaxException ex) { - LOG.log(Level.SEVERE, null, ex); - } - return ret; - } - - private ResourceUtilities() { - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/VersionMigrationTest.java b/src/test/java/org/mustangproject/ZUGFeRD/VersionMigrationTest.java deleted file mode 100644 index 62e83b67..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/VersionMigrationTest.java +++ /dev/null @@ -1,116 +0,0 @@ -/** ********************************************************************** - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.xmlunit.builder.DiffBuilder; -import org.xmlunit.diff.Diff; - -import javax.xml.transform.TransformerException; -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Collection; -import java.util.logging.Level; -import java.util.logging.Logger; - -import static org.junit.Assert.assertFalse; - - -/** - * Every ZUGFeRD 1.0 XML file from <code>src/test/resources/migration/input</code> - * will be migrated to <code>src/test/resources/migration/output</code>. - * If there is a similar named file as test reference <code>src/test/resources/migration/reference</code> a test - * will be triggered for every single file. - * - * Note: Any 'ZUGFeRD1' will be exchanged to 'ZUGFeRD2' during migration and adequate reference will be searched for. - */ -@RunWith(Parameterized.class) -public class VersionMigrationTest { - - private static final Logger LOG = Logger.getLogger(VersionMigrationTest.class.getName()); - - private static final String INPUT_DIR = "src" + File.separator + "test" + File.separator + "resources" + File.separator + "migration" + File.separator + "input" + File.separator; - private static final String REFERENCE_DIR = "src" + File.separator + "test" + File.separator + "resources" + File.separator + "migration" + File.separator + "reference" + File.separator; - private static final String OUTPUT_DIR = "target" + File.separator + "test-classes" + File.separator + "migration" + File.separator + "output" + File.separator; - private File mTestFile = null; - - @BeforeClass - public static void setUpBeforeClass() throws Exception { - // Creating the output directory for the tests - new File(OUTPUT_DIR).mkdirs(); - } - - public VersionMigrationTest(File testFile) { - mTestFile = testFile; - } - - @Parameterized.Parameters(name = "Test# {index}: {0}") - public static Collection<Object[]> data() { - Collection<Object[]> testSuiteData = new ArrayList<Object[]>(); - addFilesFromFolder(new File(INPUT_DIR), testSuiteData); - return testSuiteData; - } - - private static void addFilesFromFolder(final File folder, Collection<Object[]> testSuiteData) { - for (final File fileEntry : folder.listFiles()) { - String filePath = fileEntry.getAbsolutePath(); - if (fileEntry.isDirectory()) { - LOG.log(Level.INFO, "*** testDirectory:{0}", filePath); - addFilesFromFolder(fileEntry, testSuiteData); - } else { - LOG.log(Level.INFO, "*** testFile: {0}", filePath); - Object[] testData = new Object[]{fileEntry}; - testSuiteData.add(testData); - } - } - } - - @Test - /** - * ZUGFeRD 1.0 to 2.0 migration test. - * For more information see class description. */ - public void testFile() { - testMigration(mTestFile.getName()); - } - - private void testMigration(String fileName) { - try { - String tmp = new ZUGFeRDMigrator().migrateFromV1ToV2(INPUT_DIR + fileName); - String newName = fileName.replace("ZUGFeRD1", "ZUGFeRD2"); - ResourceUtilities.saveFile(StandardCharsets.UTF_8, OUTPUT_DIR + newName, tmp); - if (new File(REFERENCE_DIR + newName).exists()) { - // we need to save the string and reload it otherwise two bytes are missing (likely EOF related) - String outXML = ResourceUtilities.readFile(StandardCharsets.UTF_8, OUTPUT_DIR + newName); - String refXML = ResourceUtilities.readFile(StandardCharsets.UTF_8, REFERENCE_DIR + newName); - Diff myDiff = DiffBuilder.compare(refXML).withTest(outXML).checkForSimilar().ignoreComments().ignoreWhitespace().build(); - assertFalse(myDiff.toString(), myDiff.hasDifferences()); - } else { - LOG.log(Level.INFO, "\n*** Migrated from ZUGFeRD 1.0 to 2.0 invoice: '" + newName + "'' ***\n", OUTPUT_DIR); - } - } catch (IOException | TransformerException t) { - LOG.log(Level.SEVERE, t.getMessage(), t); - Assert.fail("Failed with " + t.getClass().getName() + ": '" + t.getMessage() + "'"); - } - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java b/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java deleted file mode 100644 index ef52b2a2..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/ZF2EdgeTest.java +++ /dev/null @@ -1,333 +0,0 @@ - -/** ********************************************************************** - * - * Copyright 2019 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; - -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; -import org.mustangproject.ZUGFeRD.MustangReaderTestCase.Item; - -import junit.framework.Test; -import junit.framework.TestSuite; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class ZF2EdgeTest extends MustangReaderTestCase implements IZUGFeRDExportableTransaction { - final String TARGET_PDF = "./target/testout-ZF2newEdge.pdf"; - - protected class EdgeProduct implements IZUGFeRDExportableProduct { - private String description, name, unit; - - public EdgeProduct(String description, String name, String unit) { - super(); - this.description = description; - this.name = name; - this.unit = unit; - } - - @Override - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - @Override - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Override - public String getUnit() { - return unit; - } - - public void setUnit(String unit) { - this.unit = unit; - } - - @Override - public BigDecimal getVATPercent() { - return BigDecimal.ZERO; - } - - @Override - public boolean isIntraCommunitySupply() { - return true; // simulate intra community supply - } - } - - protected class DebitPayment implements IZUGFeRDTradeSettlementDebit { - - @Override - public String getIBAN() { - return "DE540815"; - } - - @Override - public String getMandate() { - return "DE99XX12345"; - } - - } - - @Override - public IZUGFeRDTradeSettlementPayment[] getTradeSettlementPayment() { - return null; - } - - @Override - public IZUGFeRDTradeSettlement[] getTradeSettlement() { - IZUGFeRDTradeSettlement[] payments = new DebitPayment[1]; - payments[0] = new DebitPayment(); - return payments; - } - - @Override - public Date getDeliveryDate() { - return new GregorianCalendar(2017, Calendar.MAY, 7).getTime(); - } - - @Override - public Date getDueDate() { - return new GregorianCalendar(2017, Calendar.MAY, 30).getTime(); - } - - @Override - public Date getIssueDate() { - return new GregorianCalendar(2017, Calendar.MAY, 9).getTime(); - } - - @Override - public String getNumber() { - return "RE-20170509/505"; - } - - @Override - public String getOwnCountry() { - return "DE"; - } - - @Override - public String getOwnLocation() { - return "Stadthausen"; - } - - @Override - public String getOwnOrganisationName() { - return "Bei Spiel GmbH"; - } - - @Override - public String getOwnStreet() { - return "Ecke 12"; - } - - @Override - public IZUGFeRDExportableContact getOwnContact() { - return new SenderContact(); - - } - - @Override - public String getOwnTaxID() { - return "22/815/0815/4"; - } - - @Override - public String getOwnVATID() { - return "DE136695976"; - } - - @Override - public String getOwnZIP() { - return "12345"; - } - - @Override - public IZUGFeRDExportableContact getRecipient() { - return new RecipientContact(); - } - - @Override - public IZUGFeRDExportableContact getDeliveryAddress() { - return new RecipientContact(); - } - - @Override - public String getOwnOrganisationFullPlaintextInfo() { - return null; - } - - @Override - public String getCurrency() { - return "USD"; - } - - @Override - public IZUGFeRDExportableItem[] getZFItems() { - Item[] allItems = new Item[3]; - EdgeProduct designProduct = new EdgeProduct("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung", - "HUR"); - EdgeProduct balloonProduct = new EdgeProduct("", "Bestellerweiterung für E&F Umbau", "C62");// test for issue - // 103 - EdgeProduct airProduct = new EdgeProduct("", "Heiße Luft pro Liter", "LTR"); - - Item design=new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct); - design.setAddReference("1825"); - allItems[0] = design; - allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct); - allItems[2] = new Item(new BigDecimal("0.10"), new BigDecimal("200"), airProduct); - return allItems; - } - - @Override - public String getPaymentTermDescription() { - SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); - return "Zahlbar ohne Abzug bis zum " + germanDateFormat.format(getDueDate()); - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFAllowances() { - return null; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFCharges() { - return null; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { - return null; - } - - @Override - public String getReferenceNumber() { - return "AB321"; - } - - /** - * Create the test case - * - * @param testName name of the test case - */ - public ZF2EdgeTest(String testName) { - super(testName); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() { - return new TestSuite(ZF2EdgeTest.class); - } - - // //////// TESTS - // ////////////////////////////////////////////////////////////////////////////////////////// - - /** - * The exporter test bases on @{code - * ./src/test/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf}, adds - * metadata, writes to @{code ./target/testout-*} and then imports to check the - * values. - */ - public void testEdgeExport() { - - // the writing part - - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA3Factory().setProducer("My Application") - .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() - .load(SOURCE_PDF)) { - ze.PDFattachZugferdFile(this); - String theXML = new String(ze.getProvider().getXML()); - assertTrue(theXML.contains("<rsm:CrossIndustryInvoice")); - ze.export(TARGET_PDF); - } catch (IOException e) { - fail("IOException should not be raised in testEdgeExport"); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); - - assertTrue(zi.getUTF8().contains("<ram:TypeCode>59</ram:TypeCode>")); - assertTrue(zi.getUTF8().contains("<ram:ShipToTradeParty>")); - assertTrue(zi.getUTF8().contains("<ram:IBANID>DE540815</ram:IBANID>")); - assertTrue(zi.getUTF8().contains("<ram:DirectDebitMandateID>DE99XX12345</ram:DirectDebitMandateID>")); - assertFalse(zi.getUTF8().contains("<ram:DueDateDateTime>")); - assertFalse(zi.getUTF8().contains("EUR")); - assertTrue(zi.getUTF8().contains("USD"));//currency should be USD, test for #150 - - // Reading ZUGFeRD - assertEquals("496.00", zi.getAmount()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - try { - assertEquals(zi.getVersion(), 2); - } catch (Exception e) { - e.printStackTrace(); - } - - } - - /** - * The exporter test bases on @{code - * ./src/test/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf}, adds - * metadata, writes to @{code ./target/testout-*} and then imports to check the - * values. - */ - public void testOutputStreamExport() { - - // the writing part - - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA3Factory().setProducer("My Application") - .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).ignorePDFAErrors() - .load(SOURCE_PDF)) { - ze.PDFattachZugferdFile(this); - String theXML = new String(ze.getProvider().getXML()); - assertTrue(theXML.contains("<rsm:CrossIndustryInvoice")); - ze.export(bos); - } catch (IOException e) { - fail("IOException should not be raised in testEdgeExport"); - } - - } - -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/ZF2Test.java b/src/test/java/org/mustangproject/ZUGFeRD/ZF2Test.java deleted file mode 100644 index f5441ad0..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/ZF2Test.java +++ /dev/null @@ -1,226 +0,0 @@ - -/** ********************************************************************** - * - * Copyright 2019 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.junit.FixMethodOrder; -import org.junit.runners.MethodSorters; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; - -@FixMethodOrder(MethodSorters.NAME_ASCENDING) -public class ZF2Test extends MustangReaderTestCase { - final String TARGET_PDF = "./target/testout-ZF2new.pdf"; - - - @Override - public Date getDeliveryDate() { - return new GregorianCalendar(2017, Calendar.MAY, 7).getTime(); - } - - @Override - public Date getDueDate() { - return new GregorianCalendar(2017, Calendar.MAY, 30).getTime(); - } - - @Override - public Date getIssueDate() { - return new GregorianCalendar(2017, Calendar.MAY, 9).getTime(); - } - - @Override - public String getNumber() { - return "RE-20170509/505"; - } - - @Override - public String getOwnCountry() { - return "DE"; - } - - @Override - public String getOwnLocation() { - return "Stadthausen"; - } - - @Override - public String getOwnOrganisationName() { - return "Bei Spiel GmbH"; - } - - @Override - public String getOwnStreet() { - return "Ecke 12"; - } - - @Override - public IZUGFeRDExportableContact getOwnContact() { - return new SenderContact(); - - } - - @Override - public String getOwnTaxID() { - return "22/815/0815/4"; - } - - @Override - public String getOwnVATID() { - return "DE136695976"; - } - - @Override - public String getOwnZIP() { - return "12345"; - } - - @Override - public IZUGFeRDExportableContact getRecipient() { - return new RecipientContact(); - } - - @Override - public String getOwnOrganisationFullPlaintextInfo() { - return null; - } - - @Override - public String getCurrency() { - return "EUR"; - } - - @Override - public IZUGFeRDExportableItem[] getZFItems() { - Item[] allItems = new Item[3]; - Product designProduct = new Product("", "Künstlerische Gestaltung (Stunde): Einer Beispielrechnung", "HUR", - new BigDecimal("7.000000")); - Product balloonProduct = new Product("", "Bestellerweiterung für E&F Umbau", "C62", - new BigDecimal("19.000000"));// test for issue 103 - Product airProduct = new Product("", "Heiße Luft pro Liter", "LTR", new BigDecimal("19.000000")); - - allItems[0] = new Item(new BigDecimal("160"), new BigDecimal("1"), designProduct); - allItems[1] = new Item(new BigDecimal("0.79"), new BigDecimal("400"), balloonProduct); - allItems[2] = new Item(new BigDecimal("0.10"), new BigDecimal("200"), airProduct); - return allItems; - } - - @Override - public String getPaymentTermDescription() { - SimpleDateFormat germanDateFormat = new SimpleDateFormat("dd.MM.yyyy"); - return "Zahlbar ohne Abzug bis zum " + germanDateFormat.format(getDueDate()); - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFAllowances() { - return null; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFCharges() { - return null; - } - - @Override - public IZUGFeRDAllowanceCharge[] getZFLogisticsServiceCharges() { - return null; - } - - @Override - public String getReferenceNumber() { - return "AB321"; - } - - /** - * Create the test case - * - * @param testName name of the test case - */ - public ZF2Test(String testName) { - super(testName); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() { - return new TestSuite(ZF2Test.class); - } - - // //////// TESTS - // ////////////////////////////////////////////////////////////////////////////////////////// - - /** - * The exporter test bases on @{code - * ./src/test/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf}, adds - * metadata, writes to @{code ./target/testout-*} and then imports to check the - * values. - */ - public void testExport() { - - // the writing part - - try (InputStream SOURCE_PDF = this.getClass() - .getResourceAsStream("/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf"); - - ZUGFeRDExporter ze = new ZUGFeRDExporterFromA3Factory().setProducer("My Application") - .setCreator(System.getProperty("user.name")).setZUGFeRDVersion(2).setZUGFeRDConformanceLevel(ZUGFeRDConformanceLevel.EN16931).ignorePDFAErrors() - .load(SOURCE_PDF)) { - - ze.PDFattachZugferdFile(this); - String theXML = new String(ze.getProvider().getXML()); - assertTrue(theXML.contains("<rsm:CrossIndustryInvoice")); - ze.export(TARGET_PDF); - } catch (IOException e) { - fail("IOException should not be raised in testEdgeExport"); - } - - // now check the contents (like MustangReaderTest) - ZUGFeRDImporter zi = new ZUGFeRDImporter(TARGET_PDF); - - assertTrue(zi.getUTF8().contains("<ram:DueDateDateTime>")); - - // Reading ZUGFeRD - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - - assertEquals(zi.getAmount(), "571.04"); - assertEquals(zi.getBIC(), getTradeSettlementPayment()[0].getOwnBIC()); - assertEquals(zi.getIBAN(),getTradeSettlementPayment()[0].getOwnIBAN()); - assertEquals(zi.getHolder(), getOwnOrganisationName()); - assertEquals(zi.getForeignReference(), getNumber()); - - - try { - assertEquals(zi.getVersion(), 2); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverterTest.java b/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverterTest.java deleted file mode 100644 index 1f1a071d..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRDTransactionModelConverterTest.java +++ /dev/null @@ -1,173 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.GregorianCalendar; - -import javax.xml.bind.JAXBElement; - -import org.junit.Test; -import org.mustangproject.ZUGFeRD.model.CrossIndustryDocumentType; - -public class ZUGFeRDTransactionModelConverterTest { - @Test - public void convertToModel_convertsMinimalTransactionToValidXml() throws Exception { - // setup - IZUGFeRDExportableTransaction transaction = new IZUGFeRDExportableTransactionImpl() - .setIssueDate(createDate(2000, 1, 1)) - .setDeliveryDate(createDate(2000, 1, 2)) - .setDueDate(createDate(2000, 1, 3)) - .setNumber("num") - .setRecipient(new IZUGFeRDExportableContactImpl() - .setName("recipient name") - .setStreet("recipient street") - .setLocation("recipient city") - .setCountry("recipient country") - ) - .setOwnOrganisationName("own org") - .setOwnStreet("own street") - .setOwnCountry("own country") - .setOwnLocation("own city") - .setTradeSettlementPayment(new IZUGFeRDTradeSettlementPaymentImpl().setOwnBankName("own bank")) - .setZFItems( - new IZUGFeRDExportableItemImpl() - .setProduct(new IZUGFeRDExportableProductImpl() - .setVatPercent(new BigDecimal("1.19")) - .setName("product name") - .setDescription("product description") - .setUnit("product unit") - ) - .setQuantity(BigDecimal.ONE) - .setPrice(BigDecimal.TEN) - ); - - // execution - final JAXBElement<CrossIndustryDocumentType> actual = - new ZUGFeRDTransactionModelConverter(transaction).convertToModel(); - - // evaluation - ZUGFeRDXMLAssert.assertValidZugferd(actual); - } - - @Test - public void convertToModel_convertsWithDateFormatToValidXml() throws Exception { - // setup - IZUGFeRDExportableTransaction transaction = new IZUGFeRDExportableTransactionImpl() - .setIssueDate(createDate(2000, 1, 1)) - .setZfDeliveryDate(createZfDate(2000, 1, 2, ZUGFeRDDateFormat.DATE)).setDueDate(createDate(2000, 1, 3)) - .setNumber("num") - .setRecipient(new IZUGFeRDExportableContactImpl().setName("recipient name") - .setStreet("recipient street").setLocation("recipient city").setCountry("recipient country")) - .setOwnOrganisationName("own org").setOwnStreet("own street").setOwnCountry("own country") - .setOwnLocation("own city") - .setTradeSettlementPayment(new IZUGFeRDTradeSettlementPaymentImpl().setOwnBankName("own bank")) - .setZFItems(new IZUGFeRDExportableItemImpl() - .setProduct(new IZUGFeRDExportableProductImpl().setVatPercent(new BigDecimal("1.19")) - .setName("product name").setDescription("product description").setUnit("product unit")) - .setQuantity(BigDecimal.ONE).setPrice(BigDecimal.TEN)); - - // execution - final JAXBElement<CrossIndustryDocumentType> actual = new ZUGFeRDTransactionModelConverter(transaction) - .convertToModel(); - - // evaluation - ZUGFeRDXMLAssert.assertValidZugferd(actual); - } - - @Test - public void convertToModel_convertsWithWeekFormatToValidXml() throws Exception { - // setup - IZUGFeRDExportableTransaction transaction = new IZUGFeRDExportableTransactionImpl() - .setIssueDate(createDate(2000, 1, 1)) - .setZfDeliveryDate(createZfDate(2000, 1, 2, ZUGFeRDDateFormat.WEEK_OF_YEAR)) - .setDueDate(createDate(2000, 1, 3)).setNumber("num") - .setRecipient(new IZUGFeRDExportableContactImpl().setName("recipient name") - .setStreet("recipient street").setLocation("recipient city").setCountry("recipient country")) - .setOwnOrganisationName("own org").setOwnStreet("own street").setOwnCountry("own country") - .setOwnLocation("own city") - .setTradeSettlementPayment(new IZUGFeRDTradeSettlementPaymentImpl().setOwnBankName("own bank")) - .setZFItems(new IZUGFeRDExportableItemImpl() - .setProduct(new IZUGFeRDExportableProductImpl().setVatPercent(new BigDecimal("1.19")) - .setName("product name").setDescription("product description").setUnit("product unit")) - .setQuantity(BigDecimal.ONE).setPrice(BigDecimal.TEN)); - - // execution - final JAXBElement<CrossIndustryDocumentType> actual = new ZUGFeRDTransactionModelConverter(transaction) - .convertToModel(); - - // evaluation - ZUGFeRDXMLAssert.assertValidZugferd(actual); - } - - @Test - public void convertToModel_convertsWithMonthFormatToValidXml() throws Exception { - // setup - IZUGFeRDExportableTransaction transaction = new IZUGFeRDExportableTransactionImpl() - .setIssueDate(createDate(2000, 1, 1)) - .setZfDeliveryDate(createZfDate(2000, 1, 2, ZUGFeRDDateFormat.MONTH_OF_YEAR)) - .setDueDate(createDate(2000, 1, 3)) - .setNumber("num") - .setRecipient(new IZUGFeRDExportableContactImpl() - .setName("recipient name") - .setStreet("recipient street") - .setLocation("recipient city") - .setCountry("recipient country") - ) - .setOwnOrganisationName("own org") - .setOwnStreet("own street") - .setOwnCountry("own country") - .setOwnLocation("own city") - .setTradeSettlementPayment(new IZUGFeRDTradeSettlementPaymentImpl().setOwnBankName("own bank")) - .setZFItems( - new IZUGFeRDExportableItemImpl() - .setProduct(new IZUGFeRDExportableProductImpl() - .setVatPercent(new BigDecimal("1.19")) - .setName("product name") - .setDescription("product description") - .setUnit("product unit") - ) - .setQuantity(BigDecimal.ONE) - .setPrice(BigDecimal.TEN) - ); - - // execution - final JAXBElement<CrossIndustryDocumentType> actual = - new ZUGFeRDTransactionModelConverter(transaction).convertToModel(); - - // evaluation - ZUGFeRDXMLAssert.assertValidZugferd(actual); - } - - private static Date createDate(int year, int month, int day) { - final GregorianCalendar calendar = new GregorianCalendar(); - calendar.set(year, month - 1, day); - return calendar.getTime(); - } - - private static IZUGFeRDDate createZfDate(int year, int month, int day, ZUGFeRDDateFormat format) { - final GregorianCalendar calendar = new GregorianCalendar(); - calendar.set(year, month - 1, day); - IZUGFeRDDateImpl date = new IZUGFeRDDateImpl(); - date.setDate(calendar.getTime()); - date.setFormat(format); - return date; - } -} diff --git a/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRDXMLAssert.java b/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRDXMLAssert.java deleted file mode 100644 index 55c3313e..00000000 --- a/src/test/java/org/mustangproject/ZUGFeRD/ZUGFeRDXMLAssert.java +++ /dev/null @@ -1,56 +0,0 @@ -/** ********************************************************************** - * - * Copyright 2018 Jochen Staerk - * - * Use is subject to license terms. - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not - * use this file except in compliance with the License. You may obtain a copy - * of the License at http://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * - *********************************************************************** */ -package org.mustangproject.ZUGFeRD; - -import com.helger.schematron.ISchematronResource; -import com.helger.schematron.pure.SchematronResourcePure; -import org.junit.Assert; -import org.mustangproject.ZUGFeRD.model.CrossIndustryDocumentType; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBElement; -import javax.xml.parsers.DocumentBuilderFactory; - -public class ZUGFeRDXMLAssert { - private static final ISchematronResource SCHEMATRON = loadSchematron(); - - public static void assertValidZugferd(JAXBElement<CrossIndustryDocumentType> xml) throws Exception { - assertValidZugferd(toDocument(xml)); - } - - public static void assertValidZugferd(Node xml) throws Exception { - Assert.assertTrue("schema valid", SCHEMATRON.getSchematronValidity(xml, null).isValid()); - } - - private static Document toDocument(Object jaxbElement) throws Exception { - final Document result = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); - JAXBContext.newInstance("org.mustangproject.ZUGFeRD.model").createMarshaller().marshal(jaxbElement, result); - return result; - } - - private static SchematronResourcePure loadSchematron() { - final SchematronResourcePure result = SchematronResourcePure.fromClassPath("/ZUGFeRD_1p0.scmt"); - if (!result.isValidSchematron()) { - throw new IllegalArgumentException("Invalid Schematron!"); - } - return result; - } -} diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf deleted file mode 100644 index d2bcf218..00000000 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505.pdf and /dev/null differ diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505PDF14.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505PDF14.pdf deleted file mode 100644 index afd897a1..00000000 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505PDF14.pdf and /dev/null differ diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf deleted file mode 100644 index 71e23ea7..00000000 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505PDFA3.pdf and /dev/null differ diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf deleted file mode 100644 index 31404812..00000000 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20170509_505blanko.pdf and /dev/null differ diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20171118_506blanko.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20171118_506blanko.pdf deleted file mode 100644 index e96dbb67..00000000 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20171118_506blanko.pdf and /dev/null differ diff --git a/src/test/resources/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf b/src/test/resources/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf deleted file mode 100644 index 9c4ae558..00000000 Binary files a/src/test/resources/MustangGnuaccountingBeispielRE-20190610_507blanko.pdf and /dev/null differ diff --git a/src/test/resources/ZUGFeRD_1p0.scmt b/src/test/resources/ZUGFeRD_1p0.scmt deleted file mode 100644 index fe8f8b0a..00000000 --- a/src/test/resources/ZUGFeRD_1p0.scmt +++ /dev/null @@ -1,25085 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - -Nutzungsrechte -ZUGFeRD Datenformat Version 1.0, 25.6.2014 - -Zweck des Forums für elektronische Rechnungen bei der AWV e.V („FeRD“) ist u.a. die Schaffung und Spezifizierung -eines offenen Datenformats für strukturierten elektronischen Datenaustausch auf der Grundlage offener und nicht -diskriminierender, standardisierter Technologien („ZUGFeRD Datenformat“) - -Das ZUGFeRD Datenformat wird nach Maßgabe des FeRD sowohl Unternehmen als auch der öffentlichen Verwaltung -frei zugänglich gemacht. Hierfür bietet FeRD allen Unternehmen und Organisationen der öffentlichen Verwaltung eine -Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD-Datenformats zu fairen, sachgerechten und nicht -diskriminierenden Bedingungen an. - -Die Spezifikation des FeRD zur Implementierung des ZUGFeRD Datenformats ist in ihrer jeweils geltenden Fassung -abrufbar unter www.ferd-net.de. - -Im Einzelnen schließt die Nutzungsgewährung ein: -===================================== - -FeRD räumt eine Lizenz für die Nutzung des urheberrechtlich geschützten ZUGFeRD Datenformats in der jeweils -geltenden und akzeptierten Fassung (www.ferd-net.de) ein. -Die Lizenz beinhaltet ein unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, -Weiterbearbeitung und Verbindung mit anderen Produkten. -Die Lizenz gilt insbesondere für die Entwicklung, die Gestaltung, die Herstellung, den Verkauf, die Nutzung oder -anderweitige Verwendung des ZUGFeRD Datenformats für Hardware- und/oder Softwareprodukte sowie sonstige -Anwendungen und Dienste. -Diese Lizenz schließt nicht die wesentlichen Patente der Mitglieder von FeRD ein. Als wesentliche Patente sind Patente -und Patentanmeldungen weltweit zu verstehen, die einen oder mehrere Patentansprüche beinhalten, bei denen es sich um -notwendige Ansprüche handelt. Notwendige Ansprüche sind lediglich jene Ansprüche der Wesentlichen Patente, die durch -die Implementierung des ZUGFeRD Datenformats notwendigerweise verletzt würden. -Der Lizenznehmer ist berechtigt, seinen jeweiligen Konzerngesellschaften ein unbefristetes, weltweites, nicht übertragbares, -unwiderrufliches Nutzungsrecht einschließlich des Rechts der Weiterentwicklung, Weiterbearbeitung und Verbindung mit -anderen Produkten einzuräumen. - -Die Lizenz wird kostenfrei zur Verfügung gestellt. - -Außer im Falle vorsätzlichen Verschuldens oder grober Fahrlässigkeit haftet FeRD weder für Nutzungsausfall, entgangenen -Gewinn, Datenverlust, Kommunikationsverlust, Einnahmeausfall, Vertragseinbußen, Geschäftsausfall oder für Kosten, -Schäden, Verluste oder Haftpflichten im Zusammenhang mit einer Unterbrechung der Geschäftstätigkeit, noch für konkrete, -beiläufig entstandene, mittelbare Schäden, Straf- oder Folgeschäden und zwar auch dann nicht, wenn die Möglichkeit der -Kosten, Verluste bzw. Schäden hätte normalerweise vorhergesehen werden können. - ---> - -<schema xmlns="http://purl.oclc.org/dsdl/schematron" - schemaVersion="iso"> - <title>Schema for ZUGFeRD; 1.0; urn:ferd:CrossIndustryDocument:invoice:1p0 - - - - - - - - - Element 'ram:ID' must occur exactly 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:TypeCode' must occur exactly 1 times. - - Element 'ram:IssueDateTime' must occur exactly 1 times. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:CancellationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:ControlRequirementIndicator' is marked as not used in the given context. - - - - - - Element 'udt:IndicatorString' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CustomsID' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:Disposition' is marked as not used in the given context. - - - - - - Element 'ram:CompleteDateTime' must occur exactly 1 times. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:ContinuousIndicator' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DurationMeasure' is marked as not used in the given context. - - - - - - Element 'ram:EndDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InclusiveIndicator' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OpenIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:SeasonCode' is marked as not used in the given context. - - - - - - Element 'ram:SequenceNumeric' is marked as not used in the given context. - - - - - - Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context. - - - - - - Element 'ram:StartDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:FirstSignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:FourthSignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Element 'ram:HeaderInformation' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:ContentCode' may occur at maximum 1 times. - - Element 'ram:Content' must occur at least 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:Subject' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineCountNumeric' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OwnerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PageID' is marked as not used in the given context. - - - - - - Element 'ram:PreviousDocumentID' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:Purpose' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:RecipientAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RejectionResponseDateTime' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:RemarksCode' is marked as not used in the given context. - - - - - - Element 'ram:RequestedResponseTypeCode' is marked as not used in the given context. - - Element 'ram:RequestedResponseTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ResponseDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ResponseDocumentTypeCode' is marked as not used in the given context. - - Element 'ram:ResponseDocumentTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ResponseReasonCode' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SecondSignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:SenderAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SenderTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubmissionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:SuffixID' is marked as not used in the given context. - - - - - - Element 'ram:SummaryInformation' is marked as not used in the given context. - - - - - - Element 'ram:ThirdSignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:TotalPageQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TraderAssignedID' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:VersionID' is marked as not used in the given context. - - - - - - Element 'ram:BusinessProcessSpecifiedDocumentContextParameter' may occur at maximum 1 times. - - Element 'ram:GuidelineSpecifiedDocumentContextParameter' must occur exactly 1 times. - - - - - - Element 'ram:ApplicationSpecifiedDocumentContextParameter' is marked as not used in the given context. - - - - - - Element 'ram:BIMSpecifiedDocumentContextParameter' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context. - - - - - - Element 'ram:Value' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:SpecifiedDocumentVersion' is marked as not used in the given context. - - - - - - Element 'ram:Value' is marked as not used in the given context. - - - - - - Element 'ram:MessageStandardSpecifiedDocumentContextParameter' is marked as not used in the given context. - - - - - - Element 'ram:ScenarioSpecifiedDocumentContextParameter' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTransactionID' is marked as not used in the given context. - - - - - - Element 'ram:SubsetSpecifiedDocumentContextParameter' is marked as not used in the given context. - - - - - - Element 'udt:IndicatorString' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableSupplyChainTradeAgreement' must occur exactly 1 times. - - Element 'ram:ApplicableSupplyChainTradeDelivery' must occur exactly 1 times. - - Element 'ram:ApplicableSupplyChainTradeSettlement' must occur exactly 1 times. - - Element 'ram:IncludedSupplyChainTradeLineItem' must occur at least 1 times. - - - - - - Element 'ram:BuyerReference' may occur at maximum 1 times. - - Element 'ram:SellerTradeParty' must occur exactly 1 times. - - Element 'ram:BuyerTradeParty' must occur exactly 1 times. - - Element 'ram:BuyerOrderReferencedDocument' may occur at maximum 1 times. - - Element 'ram:ContractReferencedDocument' may occur at maximum 1 times. - - Element 'ram:CustomerOrderReferencedDocument' may occur at maximum 1 times. - - - - - - Element 'ram:TypeCode' must occur exactly 1 times. - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Element 'ram:LineID' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:AdministrativeAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AdministrativeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AgreedPriceProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableSupplyChainForecastTerms' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeAllowanceCharge' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryTypeCode' must occur exactly 1 times. - - - - - - Element 'ram:DeclarationCountryRelationshipCode' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:FunctionCode' is marked as not used in the given context. - - - - - - Element 'ram:RelevantTradeLocation' is marked as not used in the given context. - - - - - - Element 'ram:RiskResponsibilityCode' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradePaymentTerms' is marked as not used in the given context. - - - - - - Element 'ram:BillOfQuantitiesReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:BlanketOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedAccountantTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerBankTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Element 'ram:LineID' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerTaxRepresentativeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:CarrierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueInformationProviderTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueInformationReceiverTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueRequestReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueSubscriptionReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Element 'ram:LineID' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Element 'ram:LineID' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryOrderFulfilmentLeadTimeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryPriorityCode' is marked as not used in the given context. - - - - - - Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:DiscountedProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:EngineeringChangeReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ExclusivitySpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ExportLicenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:GrossPriceProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:GuaranteedProductLifeSpanSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ImpactCode' is marked as not used in the given context. - - - - - - Element 'ram:ImportLicenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:IncrementalProductOrderableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:InformationUseRestrictionIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ItemBuyerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemSellerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LastKnownTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ListProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:MarketplaceOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MaterialReleaseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MaterialReturnsReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MaximumOrderQuantityOrderingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:MaximumProductOrderableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:MinimumOrderQuantityOrderingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:MinimumProductOrderableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:NetPriceProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:OrderProductUnitMeasureCode' is marked as not used in the given context. - - - - - - Element 'ram:OrderResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:OrderingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:OriginalOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PickUpOrderFulfilmentLeadTimeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:PreviousOrderChangeReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PreviousOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PreviousOrderResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PreviousPriceListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PriceListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PriorityCode' is marked as not used in the given context. - - - - - - Element 'ram:ProcurementTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ProductAvailabilityCode' is marked as not used in the given context. - - - - - - Element 'ram:ProductChargeFreeIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:ProductMadeToOrderIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ProductOrderableIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ProductReorderableIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PropertyClearanceTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PurchaseConditionsReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:QuotationProposalReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:QuotationProposalResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:QuotationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:Reference' is marked as not used in the given context. - - - - - - Element 'ram:RegistrationTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:RequestForQuotationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RequestForQuotationResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RequestedUnitProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:RequisitionReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ResaleProductUnitMeasureCode' is marked as not used in the given context. - - - - - - Element 'ram:ResaleSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:SalesAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SalesConditionsReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SalesReportReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedAccountantTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SellerTaxRepresentativeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:ShippingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:SupplyInstructionReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SupportCentreTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:TargetMarketTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:TurnInReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RelatedSupplyChainConsignment' may occur at maximum 1 times. - - Element 'ram:ActualDeliverySupplyChainEvent' may occur at maximum 1 times. - - - - - - Element 'ram:AcceptanceSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:OccurrenceDateTime' may occur at maximum 1 times. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DescriptionBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:DiscreteSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:EarliestOccurrenceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:FrequencyCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LatestOccurrenceDateTime' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:OccurrenceLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:OccurrenceSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualLoadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualUnloadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AgreedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTransportDangerousGoods' is marked as not used in the given context. - - - - - - Element 'ram:AvailableSupplyChainInventory' is marked as not used in the given context. - - - - - - Element 'ram:BilledQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ChargeFreeQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ChargeableWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:ConfirmedDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ConfirmedDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ConfirmedReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryInstructions' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Element 'ram:LineID' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Element 'ram:LineID' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:DespatchedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DisposalTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DueInAvailableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DueInForecastedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DueInRequestedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DueInReturnedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:EconomicOrderQuantity' is marked as not used in the given context. - - - - - - Element 'ram:FinalDeliveryIndicator' is marked as not used in the given context. - - - - - - Element 'ram:FinalDestinationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:GFMTransferRejectedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:GrossVolumeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:GrossWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:IncludedSupplyChainPackaging' is marked as not used in the given context. - - - - - - Element 'ram:IndividualPackageQuantity' is marked as not used in the given context. - - - - - - Element 'ram:InformationNote' is marked as not used in the given context. - - - - - - Element 'ram:InspectionSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:InventoryManagerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LogisticsPackage' is marked as not used in the given context. - - - - - - Element 'ram:LogisticsServiceProviderTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ModificationForecastedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:NetVolumeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:NetWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:OwnershipToTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PackageQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PackingListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PartialDeliveryAllowedIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PerPackageUnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PickUpAvailabilityDateTime' is marked as not used in the given context. - - - - - - Element 'ram:PlannedDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedLoadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedPickUpSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedSupplyChainConsignment' is marked as not used in the given context. - - - - - - Element 'ram:PlannedSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedUnloadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PreviousDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ProductUnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ProjectedSupplyChainSupplyPlan' is marked as not used in the given context. - - - - - - Element 'ram:ReceivedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ReceivingAdviceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeAllowanceCharge' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTransportDangerousGoods' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedInvoiceAmount' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedInvoiceDiscountAmount' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedInvoiceDiscountPercent' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AtArrivalLogisticsTransportMovement' is marked as not used in the given context. - - - - - - Element 'ram:AtDepartureLogisticsTransportMovement' is marked as not used in the given context. - - - - - - Element 'ram:AvailabilityDueDateTime' is marked as not used in the given context. - - - - - - Element 'ram:BondedWarehouseStorageTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:BorderCrossingLogisticsTransportMovement' is marked as not used in the given context. - - - - - - Element 'ram:CODAmount' is marked as not used in the given context. - - - - - - Element 'ram:CargoToleranceInformation' is marked as not used in the given context. - - - - - - Element 'ram:CarrierAcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:CarrierAcceptanceLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:CarrierAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CarrierAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CarrierProvidedInformation' is marked as not used in the given context. - - - - - - Element 'ram:CarrierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ChargeableTransportationStageQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ChargeableWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:ConnectingCarrierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ConsigneeAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ConsigneeAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:ConsigneeReceiptLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:ConsigneeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ConsignmentItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ConsignorAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ConsignorAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:ConsignorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ConsolidatorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ContainerizationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CustomsExportAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CustomsID' is marked as not used in the given context. - - - - - - Element 'ram:CustomsImportAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CustomsRequiredInvoiceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:CustomsTransitAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DangerousGoodsNotifierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DeclaredForCustomsLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:DeclaredValueForCarriageAmount' is marked as not used in the given context. - - - - - - Element 'ram:DeclaredValueForCustomsAmount' is marked as not used in the given context. - - - - - - Element 'ram:DeconsolidatorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryInformation' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryInstructions' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:DemurrageInformation' is marked as not used in the given context. - - - - - - Element 'ram:DespatchTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DestinationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:EstimatedApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:ExaminationTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:ExportExitDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ExportTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:ExportTradeGeopoliticalRegion' is marked as not used in the given context. - - - - - - Element 'ram:ExporterTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:FOBAmount' is marked as not used in the given context. - - - - - - Element 'ram:FinalDestinationLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:FinalDestinationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:FreightForwarderAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:FreightForwarderTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:GoodsReleaseRestriction' is marked as not used in the given context. - - - - - - Element 'ram:GrossVolumeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:GrossWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:GroupingCentreTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:ImportTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:ImporterTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:IncludedReferencedSupplyChainConsignment' is marked as not used in the given context. - - - - - - Element 'ram:IncludedSupplyChainConsignmentItem' is marked as not used in the given context. - - - - - - Element 'ram:IncludedTareGrossWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:InsuranceApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:InsurancePremiumAmount' is marked as not used in the given context. - - - - - - Element 'ram:InsuranceValueAmount' is marked as not used in the given context. - - - - - - Element 'ram:IntermediateConsigneeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceeAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LoadingBaseportLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:LoadingInformation' is marked as not used in the given context. - - - - - - Element 'ram:LoadingLengthMeasure' is marked as not used in the given context. - - - - - - Element 'ram:LoadingListQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LoadingSequenceNumeric' is marked as not used in the given context. - - - - - - Element 'ram:LocalConsigneeAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:MainCarriageLogisticsTransportMovement' is marked as not used in the given context. - - - - - - Element 'ram:ManifestAssociatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:NatureIdentificationTransportCargo' is marked as not used in the given context. - - - - - - Element 'ram:NetWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:NilCarriageValueIndicator' is marked as not used in the given context. - - - - - - Element 'ram:NilCustomsValueIndicator' is marked as not used in the given context. - - - - - - Element 'ram:NilInsuranceValueIndicator' is marked as not used in the given context. - - - - - - Element 'ram:NotifiedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:OnCarriageLogisticsTransportMovement' is marked as not used in the given context. - - - - - - Element 'ram:OriginTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:OriginTradeGeopoliticalRegion' is marked as not used in the given context. - - - - - - Element 'ram:PackageQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PackageType' is marked as not used in the given context. - - - - - - Element 'ram:PaymentArrangementCode' is marked as not used in the given context. - - - - - - Element 'ram:PhysicalLogisticsShippingMarks' is marked as not used in the given context. - - - - - - Element 'ram:PickUpTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PickUpTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:PreCarriageLogisticsTransportMovement' is marked as not used in the given context. - - - - - - Element 'ram:ReExportTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:RelatedSupplyChainTradeTransaction' is marked as not used in the given context. - - - - - - Element 'ram:ReportedLogisticsStatus' is marked as not used in the given context. - - - - - - Element 'ram:RiskFactorCode' is marked as not used in the given context. - - - - - - Element 'ram:SequenceNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ServiceChargeApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:ShipFromTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ShipStoresIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ShipToTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ActivityTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:ArrivalTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:BerthingTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:BoatsmenTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BorderCrossingDateTime' is marked as not used in the given context. - - - - - - Element 'ram:BorderCrossingTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:CallTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:CargoDescription' is marked as not used in the given context. - - - - - - Element 'ram:CarriedInactiveReferencedTransportMeans' is marked as not used in the given context. - - - - - - Element 'ram:CarriedMaterialGoodsCharacteristic' is marked as not used in the given context. - - - - - - Element 'ram:CarrierAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CarrierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ClosingDateTime' is marked as not used in the given context. - - - - - - Element 'ram:CommodityConsolidatorAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CommodityConsolidatorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ConsignmentQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ConsortiumCarrierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CrewListRelatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:CrewQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CrewTransportPerson' is marked as not used in the given context. - - - - - - Element 'ram:DangerousGoodsIndicator' is marked as not used in the given context. - - - - - - Element 'ram:DepartureTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:DocumentaryInstructionsNotifiedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ExcessTransportService' is marked as not used in the given context. - - - - - - Element 'ram:FirstArrivalTransportEvent' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:ISCCIssuingAuthorityTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:InspectionTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LiftingInstructionsRelatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LoadingInspectionTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LoadingTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:ManifestOnboardIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ManifestRelatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MasterResponsibleTransportPerson' is marked as not used in the given context. - - - - - - Element 'ram:Mode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:NVOCCCarrierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:NotifiedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:OwnerAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PackageQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PassengerListRelatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PassengerQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PilotTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PilotageExemptionID' is marked as not used in the given context. - - - - - - Element 'ram:SailingAdviceNotificationInformation' is marked as not used in the given context. - - - - - - Element 'ram:SailingAdviceNotifiedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ScheduledID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:StageCode' is marked as not used in the given context. - - - - - - Element 'ram:StayID' is marked as not used in the given context. - - - - - - Element 'ram:StevedoreTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:TerminalOperatorAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:TerminalOperatorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:TowageTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:TowingVesselRelatedLogisticsTransportMovement' is marked as not used in the given context. - - - - - - Element 'ram:TradedParcelQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TradingConsolidatorAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:TransitDirectionCode' is marked as not used in the given context. - - - - - - Element 'ram:TransportContractRelatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:TransportEquipmentQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TransportMeansSecurityOfficerTransportPerson' is marked as not used in the given context. - - - - - - Element 'ram:TransshipmentIntermediateTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:UnloadingInspectionTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:UnloadingTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:UsedLogisticsTransportMeans' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeDeliveryTerms' is marked as not used in the given context. - - - - - - Element 'ram:StorageTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:SummaryDescription' is marked as not used in the given context. - - - - - - Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalCollectChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalDisbursementAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalExportExitToImportEntryChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalPrepaidChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalTareWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:TradedParcelID' is marked as not used in the given context. - - - - - - Element 'ram:TransitLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:TransitTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:TransportContractReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:TransportEquipmentQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TransportEquipmentSplitGoodsIndicator' is marked as not used in the given context. - - - - - - Element 'ram:TransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:TransportLogisticsPackage' is marked as not used in the given context. - - - - - - Element 'ram:TransportService' is marked as not used in the given context. - - - - - - Element 'ram:TransportSplitDescription' is marked as not used in the given context. - - - - - - Element 'ram:TransshipmentLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:UnloadingBaseportLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:UnloadingSequenceNumeric' is marked as not used in the given context. - - - - - - Element 'ram:UtilizedLogisticsTransportEquipment' is marked as not used in the given context. - - - - - - Element 'ram:VanningTransportEvent' is marked as not used in the given context. - - - - - - Element 'ram:WarehouseArrivalDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RemainingRequestedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:RequestedDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:RequestedDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:RequestedPickUpSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:RequestedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:RequestedReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ReverseBilledQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SampleShipFromTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SampleShipToTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:ShipmentScheduleReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedDeliveryAdjustment' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsRegulatedGoods' is marked as not used in the given context. - - - - - - Element 'ram:TheoreticalWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:TurnInReceivedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:UltimateShipToDeliveryDateTime' is marked as not used in the given context. - - - - - - Element 'ram:UltimateShipToDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:UtilizedLogisticsTransportEquipment' is marked as not used in the given context. - - - - - - Element 'ram:PaymentReference' may occur at maximum 1 times. - - Element 'ram:InvoiceCurrencyCode' must occur exactly 1 times. - - Element 'ram:PayeeTradeParty' may occur at maximum 1 times. - - Element 'ram:BillingSpecifiedPeriod' may occur at maximum 1 times. - - Element 'ram:SpecifiedTradeSettlementMonetarySummation' must occur exactly 1 times. - - Element 'ram:ReceivableSpecifiedTradeAccountingAccount' may occur at maximum 1 times. - - - - - - Element 'ram:AcceptanceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AccountingApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AgreementReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AlternatePaymentApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:CalculatedAmount' must occur exactly 1 times. - - Element 'ram:TypeCode' must occur exactly 1 times. - - Element 'ram:BasisAmount' must occur exactly 1 times. - - Element 'ram:LineTotalBasisAmount' may occur at maximum 1 times. - - Element 'ram:AllowanceChargeBasisAmount' may occur at maximum 1 times. - - Element 'ram:ApplicablePercent' must occur exactly 1 times. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeLocation' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:BasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:CalculatedRate' is marked as not used in the given context. - - - - - - Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:CategoryName' is marked as not used in the given context. - - - - - - Element 'ram:CurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:CustomsDutyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:DeductionAmount' is marked as not used in the given context. - - - - - - Element 'ram:DeferredStatusPartyDebtorFinancialAccount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DueDateTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionAuthorizationID' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionReasonCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:FunctionCode' is marked as not used in the given context. - - - - - - Element 'ram:Guarantee' is marked as not used in the given context. - - - - - - Element 'ram:GuaranteeCode' is marked as not used in the given context. - - - - - - Element 'ram:InformationAmount' is marked as not used in the given context. - - - - - - Element 'ram:Jurisdiction' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:PaymentID' is marked as not used in the given context. - - - - - - Element 'ram:PaymentMethodCode' is marked as not used in the given context. - - - - - - Element 'ram:Rate' is marked as not used in the given context. - - - - - - Element 'ram:RateApplicablePercent' is marked as not used in the given context. - - - - - - Element 'ram:RateCode' is marked as not used in the given context. - - - - - - Element 'ram:RefundAmount' is marked as not used in the given context. - - - - - - Element 'ram:RegimeType' is marked as not used in the given context. - - - - - - Element 'ram:RegimeTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculatedAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculationRate' is marked as not used in the given context. - - - - - - Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:TariffDeductionQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context. - - - - - - Element 'ram:TaxExemptionAuthorityID' is marked as not used in the given context. - - - - - - Element 'ram:TaxPointDate' is marked as not used in the given context. - - - - - - Element 'ram:Type' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:UnitBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:StartDateTime' must occur exactly 1 times. - - Element 'ram:EndDateTime' must occur exactly 1 times. - - - - - - Element 'ram:CompleteDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ContinuousIndicator' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DurationMeasure' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InclusiveIndicator' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OpenIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:SeasonCode' is marked as not used in the given context. - - - - - - Element 'ram:SequenceNumeric' is marked as not used in the given context. - - - - - - Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:CreditNoteAmount' is marked as not used in the given context. - - - - - - Element 'ram:CreditReason' is marked as not used in the given context. - - - - - - Element 'ram:CreditReasonCode' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceID' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceIssuerID' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceType' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:CreditorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DiscountAmount' is marked as not used in the given context. - - - - - - Element 'ram:DiscountIndicator' is marked as not used in the given context. - - - - - - Element 'ram:DocumentaryCreditReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:DuePayableAmount' is marked as not used in the given context. - - - - - - Element 'ram:FactoringAgreementReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:FactoringListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:InspectionTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:InvoiceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceIssuerReference' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:InvoicerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:NextInvoiceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:OrderApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:OrderCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:PackagingPayerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PayerReference' is marked as not used in the given context. - - - - - - Element 'ram:PayerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PaymentAmount' is marked as not used in the given context. - - - - - - Element 'ram:PaymentApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:PaymentCurrencyCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PriceApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:PriceCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:ProFormaInvoiceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:QuotationApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:QuotationCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AbbreviatedName' is marked as not used in the given context. - - - - - - Element 'ram:AmountTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:CostAssignmentReference' is marked as not used in the given context. - - - - - - Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:MainAccountsChartID' is marked as not used in the given context. - - - - - - Element 'ram:MainAccountsChartReferenceID' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:SetTriggerCode' is marked as not used in the given context. - - - - - - Element 'ram:SubAccountID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceivedPaymentDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RemittanceAdviceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAdvancePayment' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context. - - - - - - Element 'ram:Description' must occur at least 1 times. - - Element 'ram:AppliedAmount' must occur exactly 1 times. - - - - - - Element 'ram:AllowanceCharge' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:AppliedFromLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:AppliedToLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' must occur exactly 1 times. - - Element 'ram:CategoryCode' must occur exactly 1 times. - - Element 'ram:ApplicablePercent' must occur exactly 1 times. - - - - - - Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeLocation' is marked as not used in the given context. - - - - - - Element 'ram:BasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:BasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:CalculatedAmount' is marked as not used in the given context. - - - - - - Element 'ram:CalculatedRate' is marked as not used in the given context. - - - - - - Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:CategoryName' is marked as not used in the given context. - - - - - - Element 'ram:CurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:CustomsDutyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:DeductionAmount' is marked as not used in the given context. - - - - - - Element 'ram:DeferredStatusPartyDebtorFinancialAccount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DueDateTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionAuthorizationID' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionReason' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionReasonCode' is marked as not used in the given context. - - - - - - Element 'ram:FunctionCode' is marked as not used in the given context. - - - - - - Element 'ram:Guarantee' is marked as not used in the given context. - - - - - - Element 'ram:GuaranteeCode' is marked as not used in the given context. - - - - - - Element 'ram:InformationAmount' is marked as not used in the given context. - - - - - - Element 'ram:Jurisdiction' is marked as not used in the given context. - - - - - - Element 'ram:LineTotalBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:PaymentID' is marked as not used in the given context. - - - - - - Element 'ram:PaymentMethodCode' is marked as not used in the given context. - - - - - - Element 'ram:Rate' is marked as not used in the given context. - - - - - - Element 'ram:RateApplicablePercent' is marked as not used in the given context. - - - - - - Element 'ram:RateCode' is marked as not used in the given context. - - - - - - Element 'ram:RefundAmount' is marked as not used in the given context. - - - - - - Element 'ram:RegimeType' is marked as not used in the given context. - - - - - - Element 'ram:RegimeTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculatedAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculationRate' is marked as not used in the given context. - - - - - - Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:TariffDeductionQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context. - - - - - - Element 'ram:TaxExemptionAuthorityID' is marked as not used in the given context. - - - - - - Element 'ram:TaxPointDate' is marked as not used in the given context. - - - - - - Element 'ram:Type' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:UnitBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:CalculationBasis' is marked as not used in the given context. - - - - - - Element 'ram:CalculationBasisCode' is marked as not used in the given context. - - - - - - Element 'ram:CalculationBasisTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChargeCategoryCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DisbursementAmount' is marked as not used in the given context. - - - - - - Element 'ram:FreightInvoiceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InformationTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:PayingPartyRoleCode' is marked as not used in the given context. - - - - - - Element 'ram:PaymentArrangementCode' is marked as not used in the given context. - - - - - - Element 'ram:PaymentPlaceLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:RepackageAppliedAmount' is marked as not used in the given context. - - - - - - Element 'ram:ServiceCategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ServiceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeSettlementPaymentMeans' is marked as not used in the given context. - - - - - - Element 'ram:TariffClassCode' is marked as not used in the given context. - - - - - - Element 'ram:TransportPaymentMethodCode' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:ChargeIndicator' must occur exactly 1 times. - - Element 'ram:ActualAmount' must occur exactly 1 times. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:AppliedDateTime' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:TypeCode' must occur exactly 1 times. - - Element 'ram:CategoryCode' must occur exactly 1 times. - - Element 'ram:ApplicablePercent' must occur exactly 1 times. - - - - - - Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeLocation' is marked as not used in the given context. - - - - - - Element 'ram:BasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:BasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:CalculatedAmount' is marked as not used in the given context. - - - - - - Element 'ram:CalculatedRate' is marked as not used in the given context. - - - - - - Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:CategoryName' is marked as not used in the given context. - - - - - - Element 'ram:CurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:CustomsDutyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:DeductionAmount' is marked as not used in the given context. - - - - - - Element 'ram:DeferredStatusPartyDebtorFinancialAccount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DueDateTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionAuthorizationID' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionReason' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionReasonCode' is marked as not used in the given context. - - - - - - Element 'ram:FunctionCode' is marked as not used in the given context. - - - - - - Element 'ram:Guarantee' is marked as not used in the given context. - - - - - - Element 'ram:GuaranteeCode' is marked as not used in the given context. - - - - - - Element 'ram:InformationAmount' is marked as not used in the given context. - - - - - - Element 'ram:Jurisdiction' is marked as not used in the given context. - - - - - - Element 'ram:LineTotalBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:PaymentID' is marked as not used in the given context. - - - - - - Element 'ram:PaymentMethodCode' is marked as not used in the given context. - - - - - - Element 'ram:Rate' is marked as not used in the given context. - - - - - - Element 'ram:RateApplicablePercent' is marked as not used in the given context. - - - - - - Element 'ram:RateCode' is marked as not used in the given context. - - - - - - Element 'ram:RefundAmount' is marked as not used in the given context. - - - - - - Element 'ram:RegimeType' is marked as not used in the given context. - - - - - - Element 'ram:RegimeTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculatedAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculationRate' is marked as not used in the given context. - - - - - - Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:TariffDeductionQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context. - - - - - - Element 'ram:TaxExemptionAuthorityID' is marked as not used in the given context. - - - - - - Element 'ram:TaxPointDate' is marked as not used in the given context. - - - - - - Element 'ram:Type' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:UnitBasisAmount' is marked as not used in the given context. - - - - - - Element 'udt:IndicatorString' is marked as not used in the given context. - - - - - - Element 'ram:DeductionAmount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:PrepaidIndicator' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UnitBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:Description' must occur at least 1 times. - - Element 'ram:ApplicableTradePaymentPenaltyTerms' may occur at maximum 1 times. - - Element 'ram:ApplicableTradePaymentDiscountTerms' may occur at maximum 1 times. - - - - - - Element 'ram:BasisAmount' may occur at maximum 1 times. - - Element 'ram:ActualDiscountAmount' may occur at maximum 1 times. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListVersionID' marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:BasisAmount' may occur at maximum 1 times. - - Element 'ram:ActualPenaltyAmount' may occur at maximum 1 times. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListVersionID' marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectDebitMandateID' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:DurationMeasure' is marked as not used in the given context. - - - - - - Element 'ram:EquivalentAmount' is marked as not used in the given context. - - - - - - Element 'ram:FromEventCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:InstructedAmount' is marked as not used in the given context. - - - - - - Element 'ram:InstructionCode' is marked as not used in the given context. - - - - - - Element 'ram:InstructionTypeCode' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:PartialPaymentPercent' is marked as not used in the given context. - - - - - - Element 'ram:PayeeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PaymentMeansID' is marked as not used in the given context. - - - - - - Element 'ram:SettlementPeriodMeasure' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context. - - - - - - Element 'ram:LineTotalAmount' must occur exactly 1 times. - - Element 'ram:ChargeTotalAmount' must occur exactly 1 times. - - Element 'ram:AllowanceTotalAmount' must occur exactly 1 times. - - Element 'ram:TaxBasisTotalAmount' must occur exactly 1 times. - - Element 'ram:TaxTotalAmount' must occur exactly 1 times. - - Element 'ram:GrandTotalAmount' must occur exactly 1 times. - - Element 'ram:TotalPrepaidAmount' may occur at maximum 1 times. - - Element 'ram:DuePayableAmount' may occur at maximum 1 times. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:EquivalentTransferTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:ExcludingTaxesLineTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:FreightChargeTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:GrandTotal' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:IncludingTaxesLineTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:InformationAmount' is marked as not used in the given context. - - - - - - Element 'ram:InsuranceChargeTotalAmount' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:PackingChargeTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:PaymentTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:RoundingAmount' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:TotalAllowanceChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalDiscountAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalDiscountBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalPenaltyAmount' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableTradeSettlementFinancialCard' is marked as not used in the given context. - - - - - - Element 'ram:GuaranteeMethodCode' is marked as not used in the given context. - - - - - - Attribute '@schemeAgencyID' is required in this context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IdentifiedTradeSettlementFinancialCard' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PaidAmount' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:BBANID' is marked as not used in the given context. - - - - - - Element 'ram:CurrencyCode' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:ProprietaryAccountName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:ProprietaryType' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UPICID' is marked as not used in the given context. - - - - - - Element 'ram:AustralianBSBID' is marked as not used in the given context. - - - - - - Element 'ram:AustrianBankleitzahlID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CHIPSParticipantID' is marked as not used in the given context. - - - - - - Element 'ram:CHIPSUniversalID' is marked as not used in the given context. - - - - - - Element 'ram:CanadianPaymentsAssociationID' is marked as not used in the given context. - - - - - - Element 'ram:ClearingSystemName' is marked as not used in the given context. - - - - - - Element 'ram:FedwireRoutingNumberID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:HellenicBankID' is marked as not used in the given context. - - - - - - Element 'ram:HongKongBankID' is marked as not used in the given context. - - - - - - Element 'ram:IndianFinancialSystemID' is marked as not used in the given context. - - - - - - Element 'ram:IrishNSCID' is marked as not used in the given context. - - - - - - Element 'ram:ItalianDomesticID' is marked as not used in the given context. - - - - - - Element 'ram:LocationFinancialInstitutionAddress' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:NewZealandNCCID' is marked as not used in the given context. - - - - - - Element 'ram:PolishNationalClearingID' is marked as not used in the given context. - - - - - - Element 'ram:PortugueseNCCID' is marked as not used in the given context. - - - - - - Element 'ram:RussianCentralBankID' is marked as not used in the given context. - - - - - - Element 'ram:SICID' is marked as not used in the given context. - - - - - - Element 'ram:SortCodeID' is marked as not used in the given context. - - - - - - Element 'ram:SouthAfricanNCCID' is marked as not used in the given context. - - - - - - Element 'ram:SpanishDomesticInterbankingID' is marked as not used in the given context. - - - - - - Element 'ram:SubDivisionBranchFinancialInstitution' is marked as not used in the given context. - - - - - - Element 'ram:SwissBCID' is marked as not used in the given context. - - - - - - Element 'ram:UKSortCodeID' is marked as not used in the given context. - - - - - - Element 'ram:AccountName' is marked as not used in the given context. - - - - - - Element 'ram:BBANID' is marked as not used in the given context. - - - - - - Element 'ram:CurrencyCode' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:ProprietaryAccountName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:ProprietaryType' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UPICID' is marked as not used in the given context. - - - - - - Element 'ram:AustralianBSBID' is marked as not used in the given context. - - - - - - Element 'ram:AustrianBankleitzahlID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CHIPSParticipantID' is marked as not used in the given context. - - - - - - Element 'ram:CHIPSUniversalID' is marked as not used in the given context. - - - - - - Element 'ram:CanadianPaymentsAssociationID' is marked as not used in the given context. - - - - - - Element 'ram:ClearingSystemName' is marked as not used in the given context. - - - - - - Element 'ram:FedwireRoutingNumberID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:HellenicBankID' is marked as not used in the given context. - - - - - - Element 'ram:HongKongBankID' is marked as not used in the given context. - - - - - - Element 'ram:IndianFinancialSystemID' is marked as not used in the given context. - - - - - - Element 'ram:IrishNSCID' is marked as not used in the given context. - - - - - - Element 'ram:ItalianDomesticID' is marked as not used in the given context. - - - - - - Element 'ram:LocationFinancialInstitutionAddress' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:NewZealandNCCID' is marked as not used in the given context. - - - - - - Element 'ram:PolishNationalClearingID' is marked as not used in the given context. - - - - - - Element 'ram:PortugueseNCCID' is marked as not used in the given context. - - - - - - Element 'ram:RussianCentralBankID' is marked as not used in the given context. - - - - - - Element 'ram:SICID' is marked as not used in the given context. - - - - - - Element 'ram:SouthAfricanNCCID' is marked as not used in the given context. - - - - - - Element 'ram:SpanishDomesticInterbankingID' is marked as not used in the given context. - - - - - - Element 'ram:SubDivisionBranchFinancialInstitution' is marked as not used in the given context. - - - - - - Element 'ram:SwissBCID' is marked as not used in the given context. - - - - - - Element 'ram:UKSortCodeID' is marked as not used in the given context. - - - - - - Element 'ram:PaymentChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:PaymentMethodCode' is marked as not used in the given context. - - - - - - Element 'ram:Type' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context. - - - - - - Element 'ram:TaxApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:TaxCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:TaxPointDateTime' is marked as not used in the given context. - - - - - - Element 'ram:TotalAdjustmentAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalInvoiceAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalTaxAmount' is marked as not used in the given context. - - - - - - Element 'ram:TransportationPayeeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedDocumentLineDocument' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedDocumentLineDocument' must occur exactly 1 times. - - Element 'ram:SpecifiedSupplyChainTradeSettlement' must occur exactly 1 times. - - - - - - Element 'ram:AccessoryApplicableReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalApplicableReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalID' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalInformationNote' is marked as not used in the given context. - - - - - - Element 'ram:AssertedDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ContentCode' may occur at maximum 1 times. - - Element 'ram:Content' must occur at least 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:Subject' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:LatestRevisionDateTime' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusReasonCode' is marked as not used in the given context. - - - - - - Element 'ram:ParentLineID' is marked as not used in the given context. - - - - - - Element 'ram:UUIDLineID' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedLogisticsTransportEquipment' is marked as not used in the given context. - - - - - - Element 'ram:BarcodeID' is marked as not used in the given context. - - - - - - Element 'ram:ComplementaryApplicableReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:ComponentApplicableReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:IncludedWithinSupplyChainConsignmentItem' is marked as not used in the given context. - - - - - - Element 'ram:PhysicalLogisticsPackage' is marked as not used in the given context. - - - - - - Element 'ram:RequiredApplicableReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:SequenceNumeric' is marked as not used in the given context. - - - - - - Element 'ram:BuyerOrderReferencedDocument' may occur at maximum 1 times. - - Element 'ram:ContractReferencedDocument' may occur at maximum 1 times. - - Element 'ram:GrossPriceProductTradePrice' may occur at maximum 1 times. - - Element 'ram:NetPriceProductTradePrice' may occur at maximum 1 times. - - Element 'ram:CustomerOrderReferencedDocument' may occur at maximum 1 times. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - Element 'ram:ReferenceTypeCode' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:AdministrativeAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AdministrativeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AgreedPriceProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableSupplyChainForecastTerms' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeAllowanceCharge' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeDeliveryTerms' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradePaymentTerms' is marked as not used in the given context. - - - - - - Element 'ram:BillOfQuantitiesReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:BlanketOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedAccountantTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerBankTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:BuyerReference' is marked as not used in the given context. - - - - - - Element 'ram:BuyerRequisitionerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerTaxRepresentativeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CarrierTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueInformationProviderTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueInformationReceiverTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueRequestReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:CatalogueSubscriptionReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryOrderFulfilmentLeadTimeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryPriorityCode' is marked as not used in the given context. - - - - - - Element 'ram:DemandForecastReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:DiscountedProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:EngineeringChangeReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ExclusivitySpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ExportLicenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ChargeAmount' must occur exactly 1 times. - - - - - - Element 'ram:ChargeIndicator' must occur exactly 1 times. - - Element 'ram:ActualAmount' must occur exactly 1 times. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:ActualTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:AppliedDateTime' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:CategoryTradeTax' is marked as not used in the given context. - - - - - - Element 'udt:IndicatorString' is marked as not used in the given context. - - - - - - Element 'ram:DeductionAmount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:PrepaidIndicator' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UnitBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Element 'ram:ChangeReason' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:ComparisonReferencePrice' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryTradeLocation' is marked as not used in the given context. - - - - - - Element 'ram:IncludedTradeTax' is marked as not used in the given context. - - - - - - Element 'ram:MaximumChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:MaximumQuantity' is marked as not used in the given context. - - - - - - Element 'ram:MinimumChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:MinimumQuantity' is marked as not used in the given context. - - - - - - Element 'ram:NetPriceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:OrderUnitConversionFactorNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RepackagingChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:RepairChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UnitAmount' is marked as not used in the given context. - - - - - - Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:GuaranteedProductLifeSpanSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ImpactCode' is marked as not used in the given context. - - - - - - Element 'ram:ImportLicenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:IncrementalProductOrderableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:InformationUseRestrictionIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ItemBuyerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemSellerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LastKnownTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ListProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:MarketplaceOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MaterialReleaseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MaterialReturnsReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MaximumOrderQuantityOrderingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:MaximumProductOrderableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:MinimumOrderQuantityOrderingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:MinimumProductOrderableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ChargeAmount' must occur exactly 1 times. - - - - - - Element 'ram:AppliedTradeAllowanceCharge' is marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Element 'ram:ChangeReason' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:ComparisonReferencePrice' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryTradeLocation' is marked as not used in the given context. - - - - - - Element 'ram:IncludedTradeTax' is marked as not used in the given context. - - - - - - Element 'ram:MaximumChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:MaximumQuantity' is marked as not used in the given context. - - - - - - Element 'ram:MinimumChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:MinimumQuantity' is marked as not used in the given context. - - - - - - Element 'ram:NetPriceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:OrderUnitConversionFactorNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RepackagingChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:RepairChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UnitAmount' is marked as not used in the given context. - - - - - - Element 'ram:ValiditySpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:OrderProductUnitMeasureCode' is marked as not used in the given context. - - - - - - Element 'ram:OrderResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:OrderingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:OriginalOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PickUpOrderFulfilmentLeadTimeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:PreviousOrderChangeReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PreviousOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PreviousOrderResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PreviousPriceListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PriceListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PriorityCode' is marked as not used in the given context. - - - - - - Element 'ram:ProcurementTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ProductAvailabilityCode' is marked as not used in the given context. - - - - - - Element 'ram:ProductChargeFreeIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ProductEndUserTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ProductMadeToOrderIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ProductOrderableIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ProductReorderableIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PromotionalDealReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PropertyClearanceTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PurchaseConditionsReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:QuotationProposalReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:QuotationProposalResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:QuotationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:Reference' is marked as not used in the given context. - - - - - - Element 'ram:RegistrationTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:RequestForQuotationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RequestForQuotationResponseReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RequestedUnitProductTradePrice' is marked as not used in the given context. - - - - - - Element 'ram:RequisitionReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RequisitionerReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ResaleProductUnitMeasureCode' is marked as not used in the given context. - - - - - - Element 'ram:ResaleSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:SalesAgentTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SalesConditionsReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SalesReportReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedAccountantTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SellerOrderReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SellerTaxRepresentativeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SellerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ShippingSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:SupplyInstructionReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SupportCentreTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:TargetMarketTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:TurnInReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:BilledQuantity' must occur exactly 1 times. - - Element 'ram:ActualDeliverySupplyChainEvent' may occur at maximum 1 times. - - Element 'ram:ReceivingAdviceReferencedDocument' may occur at maximum 1 times. - - - - - - Element 'ram:AcceptanceSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:OccurrenceDateTime' may occur at maximum 1 times. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DescriptionBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:DiscreteSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:EarliestOccurrenceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:FrequencyCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LatestOccurrenceDateTime' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:OccurrenceLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:OccurrenceSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ActualDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualLoadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualPickUpSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualReceiptSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ActualUnloadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AgreedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTransportDangerousGoods' is marked as not used in the given context. - - - - - - Element 'ram:AvailableSupplyChainInventory' is marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Element 'ram:ChargeableWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:ConfirmedDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ConfirmedDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ConfirmedReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ConsumptionReportReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryInstructions' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:DespatchedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DisposalTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DueInAvailableQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DueInForecastedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DueInRequestedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:DueInReturnedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:EconomicOrderQuantity' is marked as not used in the given context. - - - - - - Element 'ram:FinalDeliveryIndicator' is marked as not used in the given context. - - - - - - Element 'ram:FinalDestinationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:GFMTransferRejectedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:GrossVolumeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:GrossWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:IncludedSupplyChainPackaging' is marked as not used in the given context. - - - - - - Element 'ram:IndividualPackageQuantity' is marked as not used in the given context. - - - - - - Element 'ram:InformationNote' is marked as not used in the given context. - - - - - - Element 'ram:InspectionSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:InventoryManagerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LogisticsPackage' is marked as not used in the given context. - - - - - - Element 'ram:LogisticsServiceProviderTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ModificationForecastedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:NetVolumeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:NetWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:OwnershipToTradeParty' is marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Element 'ram:PackingListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PartialDeliveryAllowedIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PerPackageUnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PickUpAvailabilityDateTime' is marked as not used in the given context. - - - - - - Element 'ram:PlannedDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedLoadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedPickUpSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedSupplyChainConsignment' is marked as not used in the given context. - - - - - - Element 'ram:PlannedSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PlannedUnloadingSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:PreviousDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ProductUnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ProjectedSupplyChainSupplyPlan' is marked as not used in the given context. - - - - - - Element 'ram:ReceivedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AcceptableSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:AmendmentPurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:AttachedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:AttachmentBinaryObject' is marked as not used in the given context. - - - - - - Element 'ram:AuthenticatedOriginalIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CategoryCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:ContractualDocumentClause' is marked as not used in the given context. - - - - - - Element 'ram:CopyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:CopyIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CopyRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CreationDateTime' is marked as not used in the given context. - - - - - - Element 'ram:EffectiveSpecifiedPeriod' is marked as not used in the given context. - - - - - - Element 'ram:ElectronicPresentationIndicator' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:IssueLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:IssuerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:IssuerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ItemIdentificationID' is marked as not used in the given context. - - - - - - Element 'ram:LanguageID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:LineStatusCode' is marked as not used in the given context. - - - - - - Element 'ram:LodgementLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OriginalIssuedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:OriginalRequiredQuantity' is marked as not used in the given context. - - - - - - Element 'ram:PreviousRevisionID' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceiptDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RecipientTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:Remarks' is marked as not used in the given context. - - - - - - Element 'ram:Revision' is marked as not used in the given context. - - - - - - Element 'ram:RevisionDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RevisionID' is marked as not used in the given context. - - - - - - Element 'ram:SectionName' is marked as not used in the given context. - - - - - - Element 'ram:SignatoryDocumentAuthentication' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateLineID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:RelatedSupplyChainConsignment' is marked as not used in the given context. - - - - - - Element 'ram:RemainingRequestedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:RequestedDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:RequestedDespatchSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:RequestedPickUpSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:RequestedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:RequestedReleaseSupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ReverseBilledQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SampleShipFromTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:SampleShipToTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ShipFromTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:ShipmentScheduleReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedDeliveryAdjustment' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsRegulatedGoods' is marked as not used in the given context. - - - - - - Element 'ram:TheoreticalWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:TurnInReceivedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:UltimateShipToDeliveryDateTime' is marked as not used in the given context. - - - - - - Element 'ram:UltimateShipToDeliverySupplyChainEvent' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:DefinedTradeContact' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOfAssociatedTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:CAGEID' is marked as not used in the given context. - - - - - - Element 'ram:DODAACID' is marked as not used in the given context. - - - - - - Element 'ram:DUNSID' is marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' may occur at maximum 1 times. - - Element 'ram:FaxUniversalCommunication' may occur at maximum 1 times. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:DirectTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EDIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:URIID' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' is marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InstantMessagingUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:JobTitle' is marked as not used in the given context. - - - - - - Element 'ram:MobileTelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:PersonID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:Responsibility' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedContactPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedNote' is marked as not used in the given context. - - - - - - Element 'ram:CompleteNumber' must occur exactly 1 times. - - - - - - Element 'ram:Access' is marked as not used in the given context. - - - - - - Element 'ram:AreaNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ChannelCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CountryNumberCode' is marked as not used in the given context. - - - - - - Element 'ram:ExtensionNumber' is marked as not used in the given context. - - - - - - Element 'ram:HTMLPreferredIndicator' is marked as not used in the given context. - - - - - - Element 'ram:LocalNumber' is marked as not used in the given context. - - - - - - Element 'ram:URIID' is marked as not used in the given context. - - - - - - Element 'ram:UseCode' is marked as not used in the given context. - - - - - - Element 'ram:TelexUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:VOIPUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:EmailURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:EndPointURIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:FaxUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:GLNID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:IssuedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:LanguageCode' is marked as not used in the given context. - - - - - - Element 'ram:LogoAssociatedSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:LogoReferencedDocument' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostcodeCode' may occur at maximum 1 times. - - - - - - Element 'ram:AdditionalStreetName' is marked as not used in the given context. - - - - - - Element 'ram:AttentionOf' is marked as not used in the given context. - - - - - - Element 'ram:BuildingName' is marked as not used in the given context. - - - - - - Element 'ram:BuildingNumber' is marked as not used in the given context. - - - - - - Element 'ram:CareOf' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:CitySubDivisionName' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CountryIdentificationTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:CountryName' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionID' is marked as not used in the given context. - - - - - - Element 'ram:CountrySubDivisionName' is marked as not used in the given context. - - - - - - Element 'ram:DepartmentName' is marked as not used in the given context. - - - - - - Element 'ram:FreeForm' is marked as not used in the given context. - - - - - - Element 'ram:GeoCoordinateIdentificationGeographicalCoordinate' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:LineFive' is marked as not used in the given context. - - - - - - Element 'ram:LineFour' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:LineThree' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:PostOfficeBox' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:SecondaryPostcodeCode' is marked as not used in the given context. - - - - - - Element 'ram:StreetName' is marked as not used in the given context. - - - - - - Element 'ram:UTCOffsetNumeric' is marked as not used in the given context. - - - - - - Element 'ram:ProvidedTransportService' is marked as not used in the given context. - - - - - - Element 'ram:QualityAssuranceIndicator' is marked as not used in the given context. - - - - - - Element 'ram:RICID' is marked as not used in the given context. - - - - - - Element 'ram:RequestedNotificationReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:RoleCode' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAuthoritativeSignatoryPerson' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLegalOrganization' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedRepresentativePerson' is marked as not used in the given context. - - - - - - Element 'ram:AssociatedRegisteredTax' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:TelephoneUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:URIUniversalCommunication' is marked as not used in the given context. - - - - - - Element 'ram:UtilizedLogisticsTransportEquipment' is marked as not used in the given context. - - - - - - Element 'ram:BillingSpecifiedPeriod' may occur at maximum 1 times. - - Element 'ram:SpecifiedTradeAccountingAccount' may occur at maximum 1 times. - - - - - - Element 'ram:AcceptanceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AcceptanceTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:AccountingApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AgreementReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:AlternatePaymentApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:CalculatedAmount' may occur at maximum 1 times. - - Element 'ram:ApplicablePercent' must occur exactly 1 times. - - - - - - Element 'ram:AllowanceChargeBasisAmount' is marked as not used in the given context. - - - - - - Attribute @format' marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeLocation' is marked as not used in the given context. - - - - - - Element 'ram:BasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:BasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:BuyerDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerNonDeductibleTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:BuyerRepayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:CalculatedRate' is marked as not used in the given context. - - - - - - Element 'ram:CalculationSequenceNumeric' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:CategoryName' is marked as not used in the given context. - - - - - - Element 'ram:CurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:CustomsDutyIndicator' is marked as not used in the given context. - - - - - - Element 'ram:DeductionAmount' is marked as not used in the given context. - - - - - - Element 'ram:DeferredStatusPartyDebtorFinancialAccount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DueDateTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionAuthorizationID' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ExemptionReasonCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:FunctionCode' is marked as not used in the given context. - - - - - - Element 'ram:Guarantee' is marked as not used in the given context. - - - - - - Element 'ram:GuaranteeCode' is marked as not used in the given context. - - - - - - Element 'ram:InformationAmount' is marked as not used in the given context. - - - - - - Element 'ram:Jurisdiction' is marked as not used in the given context. - - - - - - Element 'ram:LineTotalBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:PaymentID' is marked as not used in the given context. - - - - - - Element 'ram:PaymentMethodCode' is marked as not used in the given context. - - - - - - Element 'ram:Rate' is marked as not used in the given context. - - - - - - Element 'ram:RateApplicablePercent' is marked as not used in the given context. - - - - - - Element 'ram:RateCode' is marked as not used in the given context. - - - - - - Element 'ram:RefundAmount' is marked as not used in the given context. - - - - - - Element 'ram:RegimeType' is marked as not used in the given context. - - - - - - Element 'ram:RegimeTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedBasisQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculatedAmount' is marked as not used in the given context. - - - - - - Element 'ram:SelfAssessedCalculationRate' is marked as not used in the given context. - - - - - - Element 'ram:SellerPayableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:SellerRefundableTaxSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:ServiceSupplyTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:TariffDeductionQuantity' is marked as not used in the given context. - - - - - - Element 'ram:TaxBasisAllowanceRate' is marked as not used in the given context. - - - - - - Element 'ram:TaxExemptionAuthorityID' is marked as not used in the given context. - - - - - - Element 'ram:TaxPointDate' is marked as not used in the given context. - - - - - - Element 'ram:Type' is marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Element 'ram:UnitBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:StartDateTime' must occur exactly 1 times. - - Element 'ram:EndDateTime' must occur exactly 1 times. - - - - - - Element 'ram:CompleteDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ContinuousIndicator' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DurationMeasure' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:InclusiveIndicator' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:OpenIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PurposeCode' is marked as not used in the given context. - - - - - - Element 'ram:SeasonCode' is marked as not used in the given context. - - - - - - Element 'ram:SequenceNumeric' is marked as not used in the given context. - - - - - - Element 'ram:StartDateFlexibilityCode' is marked as not used in the given context. - - - - - - Element 'udt:DateTime' is marked as not used in the given context. - - - - - - Attribute '@format' is required in this context. - - - - - - Element 'ram:CreditNoteAmount' is marked as not used in the given context. - - - - - - Element 'ram:CreditReason' is marked as not used in the given context. - - - - - - Element 'ram:CreditReasonCode' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceID' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceIssuerID' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceType' is marked as not used in the given context. - - - - - - Element 'ram:CreditorReferenceTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:CreditorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DeliveryChargeAmount' is marked as not used in the given context. - - - - - - Element 'ram:Description' is marked as not used in the given context. - - - - - - Element 'ram:DiscountAmount' is marked as not used in the given context. - - - - - - Element 'ram:DiscountIndicator' is marked as not used in the given context. - - - - - - Element 'ram:DocumentaryCreditReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:DuePayableAmount' is marked as not used in the given context. - - - - - - Element 'ram:FactoringAgreementReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:FactoringListReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:InspectionTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceIssuerReference' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:InvoiceeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:InvoicerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LetterOfCreditReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:NextInvoiceDateTime' is marked as not used in the given context. - - - - - - Element 'ram:OrderApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:OrderCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:PackagingPayerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PayableSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:PayeeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PayerReference' is marked as not used in the given context. - - - - - - Element 'ram:PayerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:PaymentAmount' is marked as not used in the given context. - - - - - - Element 'ram:PaymentApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:PaymentCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:PaymentReference' is marked as not used in the given context. - - - - - - Element 'ram:PriceApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:PriceCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:ProFormaInvoiceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:PurchaseSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:QuotationApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:QuotationCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:ReceivableSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:ReceivedPaymentDateTime' is marked as not used in the given context. - - - - - - Element 'ram:RemittanceAdviceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:SalesSpecifiedTradeAccountingAccount' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedAdvancePayment' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedFinancialAdjustment' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsServiceCharge' is marked as not used in the given context. - - - - - - Element 'ram:ID' must occur exactly 1 times. - - - - - - Element 'ram:AbbreviatedName' is marked as not used in the given context. - - - - - - Element 'ram:AmountTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:CostAssignmentReference' is marked as not used in the given context. - - - - - - Element 'ram:CostReferenceDimensionPattern' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:MainAccountsChartID' is marked as not used in the given context. - - - - - - Element 'ram:MainAccountsChartReferenceID' is marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:SetTriggerCode' is marked as not used in the given context. - - - - - - Element 'ram:SubAccountID' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeAllowanceCharge' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradePaymentTerms' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeSettlementFinancialCard' is marked as not used in the given context. - - - - - - Element 'ram:LineTotalAmount' must occur exactly 1 times. - - Element 'ram:TotalAllowanceChargeAmount' may occur at maximum 1 times. - - - - - - Element 'ram:AllowanceTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:ChargeTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:DuePayableAmount' is marked as not used in the given context. - - - - - - Element 'ram:EquivalentTransferTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:ExcludingTaxesLineTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:FreightChargeTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:GrandTotal' is marked as not used in the given context. - - - - - - Element 'ram:GrandTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:IncludingTaxesLineTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:InformationAmount' is marked as not used in the given context. - - - - - - Element 'ram:InsuranceChargeTotalAmount' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:PackingChargeTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:PaymentTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:RoundingAmount' is marked as not used in the given context. - - - - - - Element 'ram:TaxBasisTotalAmount' is marked as not used in the given context. - - - - - - Element 'ram:TaxTotalAmount' is marked as not used in the given context. - - - - - - Attribute '@currencyID' is required in this context. - - - - - - Attribute @currencyCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:TotalDiscountAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalDiscountBasisAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalPenaltyAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalPrepaidAmount' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedTradeSettlementPaymentMeans' is marked as not used in the given context. - - - - - - Element 'ram:SubtotalCalculatedTradeTax' is marked as not used in the given context. - - - - - - Element 'ram:TaxApplicableTradeCurrencyExchange' is marked as not used in the given context. - - - - - - Element 'ram:TaxCurrencyCode' is marked as not used in the given context. - - - - - - Element 'ram:TaxPointDateTime' is marked as not used in the given context. - - - - - - Element 'ram:TotalAdjustmentAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalInvoiceAmount' is marked as not used in the given context. - - - - - - Element 'ram:TotalTaxAmount' is marked as not used in the given context. - - - - - - Element 'ram:TransportationPayeeTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:GlobalID' may occur at maximum 1 times. - - Element 'ram:Name' must occur exactly 1 times. - - Element 'ram:Description' may occur at maximum 1 times. - - - - - - Element 'ram:AcquisitionLeadTimeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalDescription' is marked as not used in the given context. - - - - - - Element 'ram:AdditionalReferenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableMaterialGoodsCharacteristic' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' must occur exactly 1 times. - - Element 'ram:Description' must occur at least 1 times. - - Element 'ram:ValueMeasure' may occur at maximum 1 times. - - Element 'ram:Value' may occur at maximum 1 times. - - - - - - Element 'ram:ApplicableProductCharacteristicCondition' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableReferencedStandard' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:MeasurementMethodCode' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listID' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @listVersionID' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Element 'ram:ValueCode' is marked as not used in the given context. - - - - - - Element 'ram:ValueDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ValueIndicator' is marked as not used in the given context. - - - - - - Attribute @unitCodeListVersionID' marked as not used in the given context. - - - - - - Element 'ram:ValueSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:ApplicableSupplyChainPackaging' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTradeProductCertification' is marked as not used in the given context. - - - - - - Element 'ram:ApplicableTransportDangerousGoods' is marked as not used in the given context. - - - - - - Element 'ram:AreaDensityMeasure' is marked as not used in the given context. - - - - - - Element 'ram:AvailableMeasurementCode' is marked as not used in the given context. - - - - - - Element 'ram:BatchID' is marked as not used in the given context. - - - - - - Element 'ram:BrandName' is marked as not used in the given context. - - - - - - Element 'ram:BrandOwnerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:BrandRangeName' is marked as not used in the given context. - - - - - - Element 'ram:BuyerAssignedExtensionID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:CancellationAnnouncedLaunchDateTime' is marked as not used in the given context. - - - - - - Element 'ram:CertificationEvidenceReferenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ColourCode' is marked as not used in the given context. - - - - - - Element 'ram:ColourDescription' is marked as not used in the given context. - - - - - - Element 'ram:CommonName' is marked as not used in the given context. - - - - - - Element 'ram:ConciseDescription' is marked as not used in the given context. - - - - - - Element 'ram:ConfigurableIndicator' is marked as not used in the given context. - - - - - - Element 'ram:ConsumerAgeDescription' is marked as not used in the given context. - - - - - - Element 'ram:ConsumerGenderDescription' is marked as not used in the given context. - - - - - - Element 'ram:ContentUnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:CriticalityTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:CustomerAssignedID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:ClassCode' must occur exactly 1 times. - - Element 'ram:ClassName' must occur at least 1 times. - - - - - - Element 'ram:ApplicableReferencedStandard' is marked as not used in the given context. - - - - - - Attribute '@listID' is required in this context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @listAgencyID' marked as not used in the given context. - - - - - - Attribute @listAgencyName' marked as not used in the given context. - - - - - - Attribute @listName' marked as not used in the given context. - - - - - - Attribute @listSchemeURI' marked as not used in the given context. - - - - - - Attribute @listURI' marked as not used in the given context. - - - - - - Attribute @name' marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:ClassProductCharacteristic' is marked as not used in the given context. - - - - - - Element 'ram:SubClassCode' is marked as not used in the given context. - - - - - - Element 'ram:SystemID' is marked as not used in the given context. - - - - - - Element 'ram:SystemName' is marked as not used in the given context. - - - - - - Element 'ram:Designation' is marked as not used in the given context. - - - - - - Element 'ram:DistributorTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:DrainedNetWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:EndItemName' is marked as not used in the given context. - - - - - - Element 'ram:EndItemTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:EndUserTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:FIIGCriticalityTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:FSCID' is marked as not used in the given context. - - - - - - Element 'ram:FinalAssemblyTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:FromDeliveryLifeSpanMeasure' is marked as not used in the given context. - - - - - - Element 'ram:FromOpeningLifeSpanMeasure' is marked as not used in the given context. - - - - - - Element 'ram:FromProductionLifeSpanMeasure' is marked as not used in the given context. - - - - - - Element 'ram:GTINID' is marked as not used in the given context. - - - - - - Element 'ram:GeneticModificationExtentCode' is marked as not used in the given context. - - - - - - Element 'ram:GlobalExtensionID' is marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:GrossVolumeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:GrossWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:IncludedProductContentUnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:IncludedProductTypeQuantity' is marked as not used in the given context. - - - - - - Element 'ram:Name' must occur at least 1 times. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Attribute '@schemeID' is required in this context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:ID' is marked as not used in the given context. - - - - - - Element 'ram:IndustryAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:ManufacturerAssignedID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:RelationshipTypeCode' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Attribute '@unitCode' is required in this context. - - - - - - Attribute @unitCodeListAgencyID' marked as not used in the given context. - - - - - - Attribute @unitCodeListAgencyName' marked as not used in the given context. - - - - - - Attribute @unitCodeListID' marked as not used in the given context. - - - - - - Element 'ram:IndividualTradeProductInstance' is marked as not used in the given context. - - - - - - Element 'ram:IndustryAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:InformationNote' is marked as not used in the given context. - - - - - - Element 'ram:InnerPackContentUnitQuantity' is marked as not used in the given context. - - - - - - Element 'ram:InnerPackQuantity' is marked as not used in the given context. - - - - - - Element 'ram:InspectionReferenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:IntendedUse' is marked as not used in the given context. - - - - - - Element 'ram:LatestProductDataChangeDateTime' is marked as not used in the given context. - - - - - - Element 'ram:LegalRightsOwnerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:LinearSpatialDimension' is marked as not used in the given context. - - - - - - Element 'ram:MSDSReferenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:ManufactureTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:ManufacturerAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:ManufacturerTradeParty' is marked as not used in the given context. - - - - - - Element 'ram:MarkedSerialNumberIndicator' is marked as not used in the given context. - - - - - - Element 'ram:MarketingCampaignReferenceReferencedDocument' is marked as not used in the given context. - - - - - - Element 'ram:MarketingDescription' is marked as not used in the given context. - - - - - - Element 'ram:MaximumLinearSpatialDimension' is marked as not used in the given context. - - - - - - Element 'ram:MinimumLinearSpatialDimension' is marked as not used in the given context. - - - - - - Element 'ram:ModelID' is marked as not used in the given context. - - - - - - Element 'ram:ModelName' is marked as not used in the given context. - - - - - - Element 'ram:NIINID' is marked as not used in the given context. - - - - - - Element 'ram:NSNID' is marked as not used in the given context. - - - - - - Attribute @languageID' marked as not used in the given context. - - - - - - Attribute @languageLocaleID' marked as not used in the given context. - - - - - - Element 'ram:NetVolumeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:NetWeightMeasure' is marked as not used in the given context. - - - - - - Element 'ram:OriginLogisticsLocation' is marked as not used in the given context. - - - - - - Element 'ram:ID' may occur at maximum 1 times. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:Name' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateTradeCountrySubDivision' is marked as not used in the given context. - - - - - - Element 'ram:PhysicalFormDescription' is marked as not used in the given context. - - - - - - Element 'ram:PrePackagedIndicator' is marked as not used in the given context. - - - - - - Element 'ram:PresentationSpecifiedBinaryFile' is marked as not used in the given context. - - - - - - Element 'ram:PriorityCode' is marked as not used in the given context. - - - - - - Element 'ram:ProductGroupID' is marked as not used in the given context. - - - - - - Element 'ram:ProductionDiscontinuedDateTime' is marked as not used in the given context. - - - - - - Element 'ram:ProductionLeadTimeMeasure' is marked as not used in the given context. - - - - - - Element 'ram:PromotionalVariantID' is marked as not used in the given context. - - - - - - Element 'ram:RecyclingTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:RegulationConformityID' is marked as not used in the given context. - - - - - - Element 'ram:RejectionReasonCode' is marked as not used in the given context. - - - - - - Element 'ram:RepairLevelTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:ScientificName' is marked as not used in the given context. - - - - - - Element 'ram:SeasonCode' is marked as not used in the given context. - - - - - - Element 'ram:SeasonDescription' is marked as not used in the given context. - - - - - - Element 'ram:SecurityInformationNote' is marked as not used in the given context. - - - - - - Element 'ram:SellerAssignedExtensionID' is marked as not used in the given context. - - - - - - Attribute @schemeAgencyID' marked as not used in the given context. - - - - - - Attribute @schemeAgencyName' marked as not used in the given context. - - - - - - Attribute @schemeDataURI' marked as not used in the given context. - - - - - - Attribute @schemeID' marked as not used in the given context. - - - - - - Attribute @schemeName' marked as not used in the given context. - - - - - - Attribute @schemeURI' marked as not used in the given context. - - - - - - Attribute @schemeVersionID' marked as not used in the given context. - - - - - - Element 'ram:SizeDescription' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedSupplyChainDiscrepancy' is marked as not used in the given context. - - - - - - Element 'ram:StatusCode' is marked as not used in the given context. - - - - - - Element 'ram:StorageInformationNote' is marked as not used in the given context. - - - - - - Element 'ram:SubBrandName' is marked as not used in the given context. - - - - - - Element 'ram:SubstituteReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:SubstitutedReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:SuppliedFromTradeCountry' is marked as not used in the given context. - - - - - - Element 'ram:TrackingSystemID' is marked as not used in the given context. - - - - - - Element 'ram:TradeName' is marked as not used in the given context. - - - - - - Element 'ram:TransportInformationNote' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UnitTypeCode' is marked as not used in the given context. - - - - - - Element 'ram:UsageInformationNote' is marked as not used in the given context. - - - - - - Element 'ram:UseDescription' is marked as not used in the given context. - - - - - - Element 'ram:VariableMeasureIndicator' is marked as not used in the given context. - - - - - - Element 'ram:VariantDescription' is marked as not used in the given context. - - - - - - Element 'ram:SubordinateTradeLineItem' is marked as not used in the given context. - - - - - - Element 'ram:SubstituteApplicableReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:SubstitutedReferencedProduct' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - - - - Element 'ram:TypeExtensionCode' is marked as not used in the given context. - - - - - - Element 'ram:Information' is marked as not used in the given context. - - - - - - Element 'ram:LineItemQuantity' is marked as not used in the given context. - - - - - - Element 'ram:SalesAgentAssignedID' is marked as not used in the given context. - - - - - - Element 'ram:SpecifiedLogisticsPackage' is marked as not used in the given context. - - - - - - Element 'ram:TypeCode' is marked as not used in the given context. - - - diff --git a/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml b/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml deleted file mode 100644 index 0240b509..00000000 --- a/src/test/resources/migration/input/ZUGFeRD1-invoice-adjusted.xml +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - false - - - urn:ferd:CrossIndustryDocument:invoice:1p0:extended - - - - RE-20170509/506 - RECHNUNG2 - 380 - - 20170510 - - - - - - Bei Spiel GmbH - - 12345 - Ecke 12 - Stadthausen - DE - - - 22/815/0815/4 - - - DE136695976 - - - - Theodor Est - - 88802 - Bahnstr. 42 - Spielkreis - DE - - - DE999999999 - - - - - - - 20170507 - - - - - RE-20170509/505 - EUR - - 42 - Überweisung - - DE88 2008 0000 0970 3757 00 - 44421800 - - - COBADEFFXXX - 41441604 - Commerzbank - - - - 11.20 - VAT - 160.00 - S - 7.00 - - - 63.84 - VAT - 336.00 - S - 19.00 - - - Zahlbar ohne Abzug bis zum 30.05.2017 - - 20170530 - - - - 496.00 - 0.00 - 0.00 - 496.00 - 75.04 - 571.04 - 571.04 - - - - - 1 - - - - 160.0000 - 1.0000 - - - 160.0000 - 1.0000 - - - - 1.0000 - - - - VAT - S - 7.00 - - - 160.00 - - - - Künstlerische Gestaltung (Stunde): Einer weiteren Beispielrechnung - - - - - - 2 - - - - 0.7900 - 1.0000 - - - 0.7900 - 1.0000 - - - - 400.0000 - - - - VAT - S - 19.00 - - - 316.00 - - - - Luftballon: Bunt, ca. 500ml - - - - - - 3 - - - - 0.1000 - 1.0000 - - - 0.1000 - 1.0000 - - - - 200.0000 - - - - VAT - S - 19.00 - - - 20.00 - - - - Heiße Luft pro Liter - - - - - diff --git a/src/test/resources/migration/input/ZUGFeRD1-invoice.xml b/src/test/resources/migration/input/ZUGFeRD1-invoice.xml deleted file mode 100644 index 8f082f08..00000000 --- a/src/test/resources/migration/input/ZUGFeRD1-invoice.xml +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - false - - - urn:ferd:CrossIndustryDocument:invoice:1p0:extended - - - - RE-20170509/505 - RECHNUNG - 380 - - 20170509 - - - - - - Bei Spiel GmbH - - 12345 - Ecke 12 - Stadthausen - DE - - - 22/815/0815/4 - - - DE136695976 - - - - Theodor Est - - 88802 - Bahnstr. 42 - Spielkreis - DE - - - DE999999999 - - - - - - - 20170507 - - - - - RE-20170509/505 - EUR - - 42 - Überweisung - - DE88 2008 0000 0970 3757 00 - 44421800 - - - COBADEFFXXX - 41441604 - Commerzbank - - - - 11.20 - VAT - 160.00 - S - 7.00 - - - 63.84 - VAT - 336.00 - S - 19.00 - - - Zahlbar ohne Abzug bis zum 30.05.2017 - - 20170530 - - - - 496.00 - 0.00 - 0.00 - 496.00 - 75.04 - 571.04 - 571.04 - - - - - 1 - - - - 160.0000 - 1.0000 - - - 160.0000 - 1.0000 - - - - 1.0000 - - - - VAT - S - 7.00 - - - 160.00 - - - - Künstlerische Gestaltung (Stunde): Einer Beispielrechnung - - - - - - 2 - - - - 0.7900 - 1.0000 - - - 0.7900 - 1.0000 - - - - 400.0000 - - - - VAT - S - 19.00 - - - 316.00 - - - - Luftballon: Bunt, ca. 500ml - - - - - - 3 - - - - 0.1000 - 1.0000 - - - 0.1000 - 1.0000 - - - - 200.0000 - - - - VAT - S - 19.00 - - - 20.00 - - - - Heiße Luft pro Liter - - - - - diff --git a/src/test/resources/migration/input/ZUGFeRD1_COMFORT_Einfach.xml b/src/test/resources/migration/input/ZUGFeRD1_COMFORT_Einfach.xml deleted file mode 100644 index db6672dd..00000000 --- a/src/test/resources/migration/input/ZUGFeRD1_COMFORT_Einfach.xml +++ /dev/null @@ -1,216 +0,0 @@ - - - - - true - - urn:ferd:CrossIndustryDocument:invoice:1p0:comfort - - - - 471102 - RECHNUNG - 380 - 20130305 - - Rechnung gemäß Bestellung vom 01.03.2013. - - - Lieferant GmbH -Lieferantenstraße 20 -80333 München -Deutschland -Geschäftsführer: Hans Muster -Handelsregisternummer: H A 123 - -REG - - - - - - 4000001123452 - Lieferant GmbH - - 80333 - Lieferantenstraße 20 - München - DE - - - 201/113/40209 - - - DE123456789 - - - - GE2020211 - 4000001987658 - Kunden AG Mitte - - Hans Muster - - - 69876 - Kundenstraße 15 - Frankfurt - DE - - - - - - 20130305 - - - - 2013-471102 - EUR - - 31 - Überweisung - - DE08700901001234567890 - - - GENODEF1M04 - - - - 19.25 - VAT - 275.00 - S - 7.00 - - - 37.62 - VAT - 198.00 - S - 19.00 - - - Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013 - 20130404 - - - 473.00 - 0.00 - 0.00 - 473.00 - 56.87 - 529.87 - 0.00 - 529.87 - - - - - 1 - - - - 9.9000 - - - 9.9000 - - - - 20.0000 - - - - VAT - S - 19.00 - - - 198.00 - - - - 4012345001235 - TB100A4 - Trennblätter A4 - - - - - 2 - - - - 5.5000 - - - 5.5000 - - - - 50.0000 - - - - VAT - S - 7.00 - - - 275.00 - - - - 4000050986428 - ARNR2 - Joghurt Banane - - - - \ No newline at end of file diff --git a/src/test/resources/migration/input/ZUGFeRD1_EXTENDED_Warenrechnung.xml b/src/test/resources/migration/input/ZUGFeRD1_EXTENDED_Warenrechnung.xml deleted file mode 100644 index 0f26d3ea..00000000 --- a/src/test/resources/migration/input/ZUGFeRD1_EXTENDED_Warenrechnung.xml +++ /dev/null @@ -1,520 +0,0 @@ - - - - - - true - - urn:ferd:CrossIndustryDocument:invoice:1p0:extended - - - - R87654321012345 - WARENRECHNUNG - 380 - - 20130806 - - - ST3 - Es bestehen Rabatt- oder Bonusvereinbarungen. - AAK - - - EEV - Der Verkäufer bleibt Eigentümer der Waren bis zu vollständigen Erfüllung der Kaufpreisforderung. - AAJ - - - MUSTERLIEFERANT GMBH -BAHNHOFSTRASSE 99 -99199 MUSTERHAUSEN -Geschäftsführung: -Max Mustermann -USt-IdNr: DE123456789 -Telefon: +49 932 431 0 -www.musterlieferant.de -HRB Nr. 372876 -Amtsgericht Musterstadt -GLN 4304171000002 -WEEE-Reg-Nr.: DE87654321 - REG - - - Leergutwert: 46,50 - - - - - - 549910 - 4333741000005 - MUSTERLIEFERANT GMBH - - - +49 932 431 500 - - - max.mustermann@musterlieferant.de - - - - 99199 - BAHNHOFSTRASSE 99 - MUSTERHAUSEN - DE - - - DE123456789 - - - - 009420 - 4304171000002 - MUSTER-KUNDE GMBH - - 40235 - KUNDENWEG 88 - DUESSELDORF - DE - - - - 2013-08-01T00:00:00 - B123456789 - - - 2013-08-02T00:00:00 - VN - A456123 - - - - - 4304171088093 - MUSTER-MARKT - - 8211 - - - 31157 - HAUPTSTRASSE 44 - SARSTEDT - DE - - - - - 20130805 - - - - 2013-08-05T00:00:00 - L87654321012345 - - - - EUR - - 009420 - 4304171000002 - MUSTER-KUNDE GMBH - - 40235 - KUNDENWEG 88 - DUESSELDORF - DE - - - - 61.07 - VAT - 321.40 - 326.50 - -5.10 - S - 19.00 - - - 8.93 - VAT - 127.59 - 130.70 - -3.11 - S - 7.00 - - - false - 2.00 - 280.00 - 5.60 - Rechnungsrabatt 1 - - VAT - S - 19.00 - - - - false - 2.00 - 130.70 - 2.61 - Rechnungsrabatt 1 - - VAT - S - 7.00 - - - - false - 280.00 - 2.50 - Rechnungsrabatt 2 - - VAT - S - 19.00 - - - - false - 130.70 - 0.50 - Rechnungsrabatt 2 - - VAT - S - 7.00 - - - - Transportkosten - 3.00 - - VAT - S - 19.00 - - - - Bei Zahlung innerhalb 14 Tagen gewähren wir 2,0% Skonto. - - 14 - 2.00 - - - - 457.20 - 3.00 - 11.21 - 448.99 - 70.00 - 518.99 - 0.00 - 518.99 - - - - - - Wichtige Information: Bei Bestellungen bis zum 19.12. ist die Auslieferung bis spätestens 23.12. garantiert. - - - - - - - - - 1.0000 - - - 1.0000 - - - - 100.0000 - 4.0000 - - - - VAT - S - 19.00 - - - 100.00 - - - - 4123456000014 - ZS997 - Zitronensäure 100ml - - PACKAGING_TYPE - Verpackungsart - BO - - - - - - - - 1.5000 - - false - 2.00 - 1.5000 - 0.0300 - Artikelrabatt 1 - - - false - 1 - 0.0200 - Artikelrabatt 2 - - - - 1.4500 - - - - 50.0000 - 1.0000 - - - - VAT - S - 7.00 - - - 72.50 - - - - 4123456000021 - GZ250 - Gelierzucker Extra 250g - - - - - - - 0.0000 - - - 0.0000 - - - - 10.0000 - 1.0000 - - - - VAT - S - 7.00 - - - 0.00 - - - - 4123456000021 - GZ250 - Gelierzucker Extra 250g - Artikel wie vereinbart ohne Berechnung - - - - - - Öko-Kontroll-Nr.: DE-BW-006-987654321054 - AAY - - - - - 12.0000 - - - 12.0000 - - - - 15.0000 - 20.0000 - - - - VAT - S - 19.00 - - - 180.00 - - - - 4100130013294 - 2031 - K4321 - Bierbrau Pils 20/0500 - EAN-VKE: 4100130913297 - - PACKAGING_MATERIAL - Verpackung - Kiste - - - - - - - - 3.1000 - - - 3.1000 - - - - 15.0000 - 1.0000 - - - - VAT - S - 19.00 - - - 46.50 - - - - 2001015001325 - 1805 - K4322 - Leergutpfand 20 x 0,5l - - PACKAGING_MATERIAL - Verpackung - unverpackt - - - - - - - - 30.0000 - - false - 3.00 - 30.0000 - 0.9000 - Artikelrabatt 1 - - - - 29.1000 - - - - 2.0000 - 1.0000 - - - - VAT - S - 7.00 - - - 58.20 - - - - 4123456000038 - MP107 - Mischpalette Joghurt Karton 3 x 20 - - PACKAGING_MATERIAL - Verpackung - Karton - - - 4123456001035 - JOG103 - Erdbeer 20 x 150g Becher - 20.0000 - - - 4123456002032 - JOG203 - Banane 20 x 150g Becher - 20.0000 - - - 4123456003039 - JOG303 - Schoko 20 x 150g Becher - 20.0000 - - - - - diff --git a/src/test/resources/migration/reference/ZUGFeRD2-invoice-adjusted.xml b/src/test/resources/migration/reference/ZUGFeRD2-invoice-adjusted.xml deleted file mode 100644 index 770e7dc9..00000000 --- a/src/test/resources/migration/reference/ZUGFeRD2-invoice-adjusted.xml +++ /dev/null @@ -1,216 +0,0 @@ - - - - - urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended - - - - RE-20170509/506 - RECHNUNG2 - 380 - - 20170510 - - - - - - 1 - - - Künstlerische Gestaltung (Stunde): Einer weiteren Beispielrechnung - - - - - 160.0000 - 1.0000 - - - 160.0000 - 1.0000 - - - - 1.0000 - - - - VAT - S - 7.00 - - - 160.00 - - - - - - 2 - - - Luftballon: Bunt, ca. 500ml - - - - - 0.7900 - 1.0000 - - - 0.7900 - 1.0000 - - - - 400.0000 - - - - VAT - S - 19.00 - - - 316.00 - - - - - - 3 - - - Heiße Luft pro Liter - - - - - 0.1000 - 1.0000 - - - 0.1000 - 1.0000 - - - - 200.0000 - - - - VAT - S - 19.00 - - - 20.00 - - - - - - Bei Spiel GmbH - - 12345 - Ecke 12 - Stadthausen - DE - - - 22/815/0815/4 - - - DE136695976 - - - - Theodor Est - - 88802 - Bahnstr. 42 - Spielkreis - DE - - - DE999999999 - - - - - - - 20170507 - - - - - RE-20170509/505 - EUR - - 42 - Überweisung - - DE88 2008 0000 0970 3757 00 - 44421800 - - - COBADEFFXXX - 41441604 - Commerzbank - - - - 11.20 - VAT - 160.00 - S - 7.00 - - - 63.84 - VAT - 336.00 - S - 19.00 - - - Zahlbar ohne Abzug bis zum 30.05.2017 - - 20170530 - - - - 496.00 - 0.00 - 0.00 - 496.00 - 75.04 - 571.04 - 571.04 - - - - diff --git a/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml b/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml deleted file mode 100644 index a1ebb2b3..00000000 --- a/src/test/resources/migration/reference/ZUGFeRD2-invoice.xml +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended - - - - RE-20170509/505 - RECHNUNG - 380 - - 20170509 - - - - - - 1 - - - Künstlerische Gestaltung (Stunde): Einer Beispielrechnung - - - - - 160.0000 - 1.0000 - - - 160.0000 - 1.0000 - - - - 1.0000 - - - - VAT - S - 7.00 - - - 160.00 - - - - - - 2 - - - Luftballon: Bunt, ca. 500ml - - - - - 0.7900 - 1.0000 - - - 0.7900 - 1.0000 - - - - 400.0000 - - - - VAT - S - 19.00 - - - 316.00 - - - - - - 3 - - - Heiße Luft pro Liter - - - - - 0.1000 - 1.0000 - - - 0.1000 - 1.0000 - - - - 200.0000 - - - - VAT - S - 19.00 - - - 20.00 - - - - - - Bei Spiel GmbH - - 12345 - Ecke 12 - Stadthausen - DE - - - 22/815/0815/4 - - - DE136695976 - - - - Theodor Est - - 88802 - Bahnstr. 42 - Spielkreis - DE - - - DE999999999 - - - - - - - 20170507 - - - - - RE-20170509/505 - EUR - - 42 - Überweisung - - DE88 2008 0000 0970 3757 00 - 44421800 - - - COBADEFFXXX - 41441604 - Commerzbank - - - - 11.20 - VAT - 160.00 - S - 7.00 - - - 63.84 - VAT - 336.00 - S - 19.00 - - - Zahlbar ohne Abzug bis zum 30.05.2017 - - 20170530 - - - - 496.00 - 0.00 - 0.00 - 496.00 - 75.04 - 571.04 - 571.04 - - - - - diff --git a/src/test/resources/migration/reference/ZUGFeRD2_COMFORT_Einfach.xml b/src/test/resources/migration/reference/ZUGFeRD2_COMFORT_Einfach.xml deleted file mode 100644 index 81432621..00000000 --- a/src/test/resources/migration/reference/ZUGFeRD2_COMFORT_Einfach.xml +++ /dev/null @@ -1,225 +0,0 @@ - - - - - urn:cen.eu:en16931:2017 - - - - 471102 - RECHNUNG - 380 - - 20130305 - - - Rechnung gemäß Bestellung vom 01.03.2013. - - - Lieferant GmbH -Lieferantenstraße 20 -80333 München -Deutschland -Geschäftsführer: Hans Muster -Handelsregisternummer: H A 123 - - REG - - - - - - 1 - - - 4012345001235 - TB100A4 - Trennblätter A4 - - - - 9.9000 - - - 9.9000 - - - - 20.0000 - - - - VAT - S - 19.00 - - - 198.00 - - - - - - 2 - - - 4000050986428 - ARNR2 - Joghurt Banane - - - - 5.5000 - - - 5.5000 - - - - 50.0000 - - - - VAT - S - 7.00 - - - 275.00 - - - - - - 4000001123452 - Lieferant GmbH - - 80333 - Lieferantenstraße 20 - München - DE - - - 201/113/40209 - - - DE123456789 - - - - GE2020211 - 4000001987658 - Kunden AG Mitte - - Hans Muster - - - 69876 - Kundenstraße 15 - Frankfurt - DE - - - - - - - 20130305 - - - - - 2013-471102 - EUR - - 31 - Überweisung - - DE08700901001234567890 - - - GENODEF1M04 - - - - 19.25 - VAT - 275.00 - S - 7.00 - - - 37.62 - VAT - 198.00 - S - 19.00 - - - Zahlbar innerhalb 30 Tagen netto bis 04.04.2013, 3% Skonto innerhalb 10 Tagen bis 15.03.2013 - - 20130404 - - - - 473.00 - 0.00 - 0.00 - 473.00 - 56.87 - 529.87 - 0.00 - 529.87 - - - - diff --git a/src/test/resources/migration/reference/ZUGFeRD2_EXTENDED_Warenrechnung.xml b/src/test/resources/migration/reference/ZUGFeRD2_EXTENDED_Warenrechnung.xml deleted file mode 100644 index 2ee1b6ea..00000000 --- a/src/test/resources/migration/reference/ZUGFeRD2_EXTENDED_Warenrechnung.xml +++ /dev/null @@ -1,543 +0,0 @@ - - - - - - urn:cen.eu:en16931:2017#conformant#urn:zugferd.de:2p0:extended - - - - R87654321012345 - WARENRECHNUNG - 380 - - 20130806 - - - ST3 - Es bestehen Rabatt- oder Bonusvereinbarungen. - AAK - - - EEV - Der Verkäufer bleibt Eigentümer der Waren bis zu vollständigen Erfüllung der Kaufpreisforderung. - AAJ - - - MUSTERLIEFERANT GMBH -BAHNHOFSTRASSE 99 -99199 MUSTERHAUSEN -Geschäftsführung: -Max Mustermann -USt-IdNr: DE123456789 -Telefon: +49 932 431 0 -www.musterlieferant.de -HRB Nr. 372876 -Amtsgericht Musterstadt -GLN 4304171000002 -WEEE-Reg-Nr.: DE87654321 - REG - - - Leergutwert: 46,50 - - - - - - - Wichtige Information: Bei Bestellungen bis zum 19.12. ist die Auslieferung bis spätestens 23.12. garantiert. - - - - - - - - 4123456000014 - ZS997 - Zitronensäure 100ml - - PACKAGING_TYPE - Verpackungsart - BO - - - - - 1.0000 - - - 1.0000 - - - - 100.0000 - 4.0000 - - - - VAT - S - 19.00 - - - 100.00 - - - - - - - 4123456000021 - GZ250 - Gelierzucker Extra 250g - - - - 1.5000 - - - false - - 2.00 - 1.5000 - 0.0300 - Artikelrabatt 1 - - - - false - - 1 - 0.0200 - Artikelrabatt 2 - - - - 1.4500 - - - - 50.0000 - 1.0000 - - - - VAT - S - 7.00 - - - 72.50 - - - - - - - 4123456000021 - GZ250 - Gelierzucker Extra 250g - Artikel wie vereinbart ohne Berechnung - - - - 0.0000 - - - 0.0000 - - - - 10.0000 - 1.0000 - - - - VAT - S - 7.00 - - - 0.00 - - - - - - - Öko-Kontroll-Nr.: DE-BW-006-987654321054 - AAY - - - - 4100130013294 - 2031 - K4321 - Bierbrau Pils 20/0500 - EAN-VKE: 4100130913297 - - PACKAGING_MATERIAL - Verpackung - Kiste - - - - - 12.0000 - - - 12.0000 - - - - 15.0000 - 20.0000 - - - - VAT - S - 19.00 - - - 180.00 - - - - - - - 2001015001325 - 1805 - K4322 - Leergutpfand 20 x 0,5l - - PACKAGING_MATERIAL - Verpackung - unverpackt - - - - - 3.1000 - - - 3.1000 - - - - 15.0000 - 1.0000 - - - - VAT - S - 19.00 - - - 46.50 - - - - - - - 4123456000038 - MP107 - Mischpalette Joghurt Karton 3 x 20 - - PACKAGING_MATERIAL - Verpackung - Karton - - - 4123456001035 - JOG103 - Erdbeer 20 x 150g Becher - 20.0000 - - - 4123456002032 - JOG203 - Banane 20 x 150g Becher - 20.0000 - - - 4123456003039 - JOG303 - Schoko 20 x 150g Becher - 20.0000 - - - - - 30.0000 - - - false - - 3.00 - 30.0000 - 0.9000 - Artikelrabatt 1 - - - - 29.1000 - - - - 2.0000 - 1.0000 - - - - VAT - S - 7.00 - - - 58.20 - - - - - - 549910 - 4333741000005 - MUSTERLIEFERANT GMBH - - - +49 932 431 500 - - - max.mustermann@musterlieferant.de - - - - 99199 - BAHNHOFSTRASSE 99 - MUSTERHAUSEN - DE - - - DE123456789 - - - - 009420 - 4304171000002 - MUSTER-KUNDE GMBH - - 40235 - KUNDENWEG 88 - DUESSELDORF - DE - - - - B123456789 - - 2013-08-01T00:00:00 - - - - A456123 - VN - - 2013-08-02T00:00:00 - - - - - - 4304171088093 - MUSTER-MARKT - - 8211 - - - 31157 - HAUPTSTRASSE 44 - SARSTEDT - DE - - - - - 20130805 - - - - L87654321012345 - - 2013-08-05T00:00:00 - - - - - EUR - - 009420 - 4304171000002 - MUSTER-KUNDE GMBH - - 40235 - KUNDENWEG 88 - DUESSELDORF - DE - - - - 61.07 - VAT - 321.40 - 326.50 - -5.10 - S - 19.00 - - - 8.93 - VAT - 127.59 - 130.70 - -3.11 - S - 7.00 - - - - false - - 2.00 - 280.00 - 5.60 - Rechnungsrabatt 1 - - VAT - S - 19.00 - - - - - false - - 2.00 - 130.70 - 2.61 - Rechnungsrabatt 1 - - VAT - S - 7.00 - - - - - false - - 280.00 - 2.50 - Rechnungsrabatt 2 - - VAT - S - 19.00 - - - - - false - - 130.70 - 0.50 - Rechnungsrabatt 2 - - VAT - S - 7.00 - - - - Transportkosten - 3.00 - - VAT - S - 19.00 - - - - Bei Zahlung innerhalb 14 Tagen gewähren wir 2,0% Skonto. - - 14 - 2.00 - - - - 457.20 - 3.00 - 11.21 - 448.99 - 70.00 - 518.99 - 0.00 - 518.99 - - - - diff --git a/src/test/resources/zugferd_invoice.pdf b/src/test/resources/zugferd_invoice.pdf deleted file mode 100644 index 6dd5ca93..00000000 Binary files a/src/test/resources/zugferd_invoice.pdf and /dev/null differ