ZUGFeRD / mustangproject

Open Source Java e-Invoicing library, validator and tool (Factur-X/ZUGFeRD, UNCEFACT/CII XRechnung)
http://www.mustangproject.org
Apache License 2.0
242 stars 136 forks source link

Support XRechnung #86

Closed jstaerk closed 4 years ago

jstaerk commented 5 years ago
mkdir xr
cd xr
wget https://github.com/itplr-kosit/validator/releases/download/v1.0.2/validationtool-1.0.2-full.zip 
wget https://github.com/itplr-kosit/validator-configuration-xrechnung/releases/download/release-2018-12-19/validator-configuration-xrechnung_1.2.0_2018-12-19.zip 
unzip validationtool-1.0.2-full.zip
unzip validator-configuration-xrechnung_1.2.0_2018-12-19.zip
mkdir test/instances

now mvn clean package mustangproject, opening the resulting target/testout-MustangGnuaccountingBeispielRE-20171118_506new.pdf and save the zugferd-invoice.xml in test/instances . Change the GuidelineSpecifiedDocumentContextParameter/ID to urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2 and run

java -jar validationtool-1.0.2-standalone.jar -s scenarios.xml -o test/reports -h test/instances/*.xml

yields the following three errors in test/reports/zugferd-invoice-report.html

jstaerk commented 5 years ago

this way it would work


<?xml version="1.0" encoding="UTF-8"?>
<rsm:CrossIndustryInvoice 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" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <rsm:ExchangedDocumentContext>
      <ram:GuidelineSpecifiedDocumentContextParameter>
         <ram:ID>urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2</ram:ID>
      </ram:GuidelineSpecifiedDocumentContextParameter>
   </rsm:ExchangedDocumentContext>
   <rsm:ExchangedDocument>
      <ram:ID>RE-20171118/506</ram:ID>
      <ram:TypeCode>380</ram:TypeCode>
      <ram:IssueDateTime>
         <udt:DateTimeString format="102">20171118</udt:DateTimeString>
      </ram:IssueDateTime>
   </rsm:ExchangedDocument>
   <rsm:SupplyChainTradeTransaction>
      <ram:IncludedSupplyChainTradeLineItem>
         <ram:AssociatedDocumentLineDocument>
            <ram:LineID>1</ram:LineID>
         </ram:AssociatedDocumentLineDocument>
         <ram:SpecifiedTradeProduct>
            <ram:Name>Künstlerische Gestaltung (Stunde): Einer Beispielrechnung</ram:Name>
            <ram:Description />
         </ram:SpecifiedTradeProduct>
         <ram:SpecifiedLineTradeAgreement>
            <ram:GrossPriceProductTradePrice>
               <ram:ChargeAmount>160.0000</ram:ChargeAmount>
               <ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
            </ram:GrossPriceProductTradePrice>
            <ram:NetPriceProductTradePrice>
               <ram:ChargeAmount>160.0000</ram:ChargeAmount>
               <ram:BasisQuantity unitCode="HUR">1.0000</ram:BasisQuantity>
            </ram:NetPriceProductTradePrice>
         </ram:SpecifiedLineTradeAgreement>
         <ram:SpecifiedLineTradeDelivery>
            <ram:BilledQuantity unitCode="HUR">1.0000</ram:BilledQuantity>
         </ram:SpecifiedLineTradeDelivery>
         <ram:SpecifiedLineTradeSettlement>
            <ram:ApplicableTradeTax>
               <ram:TypeCode>VAT</ram:TypeCode>
               <ram:CategoryCode>S</ram:CategoryCode>
               <ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
            </ram:ApplicableTradeTax>
            <ram:SpecifiedTradeSettlementLineMonetarySummation>
               <ram:LineTotalAmount>160.00</ram:LineTotalAmount>
            </ram:SpecifiedTradeSettlementLineMonetarySummation>
         </ram:SpecifiedLineTradeSettlement>
      </ram:IncludedSupplyChainTradeLineItem>
      <ram:IncludedSupplyChainTradeLineItem>
         <ram:AssociatedDocumentLineDocument>
            <ram:LineID>2</ram:LineID>
         </ram:AssociatedDocumentLineDocument>
         <ram:SpecifiedTradeProduct>
            <ram:Name>Luftballon: Bunt, ca. 500ml</ram:Name>
            <ram:Description />
         </ram:SpecifiedTradeProduct>
         <ram:SpecifiedLineTradeAgreement>
            <ram:GrossPriceProductTradePrice>
               <ram:ChargeAmount>0.7900</ram:ChargeAmount>
               <ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
            </ram:GrossPriceProductTradePrice>
            <ram:NetPriceProductTradePrice>
               <ram:ChargeAmount>0.7900</ram:ChargeAmount>
               <ram:BasisQuantity unitCode="C62">1.0000</ram:BasisQuantity>
            </ram:NetPriceProductTradePrice>
         </ram:SpecifiedLineTradeAgreement>
         <ram:SpecifiedLineTradeDelivery>
            <ram:BilledQuantity unitCode="C62">400.0000</ram:BilledQuantity>
         </ram:SpecifiedLineTradeDelivery>
         <ram:SpecifiedLineTradeSettlement>
            <ram:ApplicableTradeTax>
               <ram:TypeCode>VAT</ram:TypeCode>
               <ram:CategoryCode>S</ram:CategoryCode>
               <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
            </ram:ApplicableTradeTax>
            <ram:SpecifiedTradeSettlementLineMonetarySummation>
               <ram:LineTotalAmount>316.00</ram:LineTotalAmount>
            </ram:SpecifiedTradeSettlementLineMonetarySummation>
         </ram:SpecifiedLineTradeSettlement>
      </ram:IncludedSupplyChainTradeLineItem>
      <ram:IncludedSupplyChainTradeLineItem>
         <ram:AssociatedDocumentLineDocument>
            <ram:LineID>3</ram:LineID>
         </ram:AssociatedDocumentLineDocument>
         <ram:SpecifiedTradeProduct>
            <ram:Name>Heiße Luft pro Liter</ram:Name>
            <ram:Description />
         </ram:SpecifiedTradeProduct>
         <ram:SpecifiedLineTradeAgreement>
            <ram:GrossPriceProductTradePrice>
               <ram:ChargeAmount>0.1000</ram:ChargeAmount>
               <ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
            </ram:GrossPriceProductTradePrice>
            <ram:NetPriceProductTradePrice>
               <ram:ChargeAmount>0.1000</ram:ChargeAmount>
               <ram:BasisQuantity unitCode="LTR">1.0000</ram:BasisQuantity>
            </ram:NetPriceProductTradePrice>
         </ram:SpecifiedLineTradeAgreement>
         <ram:SpecifiedLineTradeDelivery>
            <ram:BilledQuantity unitCode="LTR">200.0000</ram:BilledQuantity>
         </ram:SpecifiedLineTradeDelivery>
         <ram:SpecifiedLineTradeSettlement>
            <ram:ApplicableTradeTax>
               <ram:TypeCode>VAT</ram:TypeCode>
               <ram:CategoryCode>S</ram:CategoryCode>
               <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
            </ram:ApplicableTradeTax>
            <ram:SpecifiedTradeSettlementLineMonetarySummation>
               <ram:LineTotalAmount>20.00</ram:LineTotalAmount>
            </ram:SpecifiedTradeSettlementLineMonetarySummation>
         </ram:SpecifiedLineTradeSettlement>
      </ram:IncludedSupplyChainTradeLineItem>
      <ram:ApplicableHeaderTradeAgreement>
         <ram:BuyerReference>04011000-12345-34</ram:BuyerReference>
         <ram:SellerTradeParty>
            <ram:Name>Bei Spiel GmbH</ram:Name>
            <ram:SpecifiedLegalOrganization>
               <ram:ID>[HRA-Eintrag]</ram:ID>
               <ram:TradingBusinessName>[Seller trading name]</ram:TradingBusinessName>
            </ram:SpecifiedLegalOrganization>
            <ram:DefinedTradeContact>
               <ram:PersonName>nicht vorhanden</ram:PersonName>
               <ram:TelephoneUniversalCommunication>
                  <ram:CompleteNumber>+49 1234-5678</ram:CompleteNumber>
               </ram:TelephoneUniversalCommunication>
               <ram:EmailURIUniversalCommunication>
                  <ram:URIID>seller@email.de</ram:URIID>
               </ram:EmailURIUniversalCommunication>
            </ram:DefinedTradeContact>
            <ram:PostalTradeAddress>
               <ram:PostcodeCode>12345</ram:PostcodeCode>
               <ram:LineOne>Ecke 12</ram:LineOne>
               <ram:CityName>Stadthausen</ram:CityName>
               <ram:CountryID>DE</ram:CountryID>
            </ram:PostalTradeAddress>
            <ram:SpecifiedTaxRegistration>
               <ram:ID schemeID="FC">22/815/0815/4</ram:ID>
            </ram:SpecifiedTaxRegistration>
            <ram:SpecifiedTaxRegistration>
               <ram:ID schemeID="VA">DE136695976</ram:ID>
            </ram:SpecifiedTaxRegistration>
         </ram:SellerTradeParty>
         <ram:BuyerTradeParty>
            <ram:Name>Theodor Est</ram:Name>
            <ram:PostalTradeAddress>
               <ram:PostcodeCode>88802</ram:PostcodeCode>
               <ram:LineOne>Bahnstr. 42</ram:LineOne>
               <ram:CityName>Spielkreis</ram:CityName>
               <ram:CountryID>DE</ram:CountryID>
            </ram:PostalTradeAddress>
            <ram:SpecifiedTaxRegistration>
               <ram:ID schemeID="VA">DE999999999</ram:ID>
            </ram:SpecifiedTaxRegistration>
         </ram:BuyerTradeParty>
      </ram:ApplicableHeaderTradeAgreement>
      <ram:ApplicableHeaderTradeDelivery>
         <ram:ActualDeliverySupplyChainEvent>
            <ram:OccurrenceDateTime>
               <udt:DateTimeString format="102">20171117</udt:DateTimeString>
            </ram:OccurrenceDateTime>
         </ram:ActualDeliverySupplyChainEvent>
      </ram:ApplicableHeaderTradeDelivery>
      <ram:ApplicableHeaderTradeSettlement>
         <ram:PaymentReference>RE-20171118/506</ram:PaymentReference>
         <ram:InvoiceCurrencyCode>EUR</ram:InvoiceCurrencyCode>
         <ram:SpecifiedTradeSettlementPaymentMeans>
            <ram:TypeCode>42</ram:TypeCode>
            <ram:Information>Überweisung</ram:Information>
            <ram:PayeePartyCreditorFinancialAccount>
               <ram:IBANID>DE88 2008 0000 0970 3757 00</ram:IBANID>
               <ram:ProprietaryID>44421800</ram:ProprietaryID>
            </ram:PayeePartyCreditorFinancialAccount>
            <ram:PayeeSpecifiedCreditorFinancialInstitution>
               <ram:BICID>COBADEFFXXX</ram:BICID>
               <ram:GermanBankleitzahlID>41441604</ram:GermanBankleitzahlID>
            </ram:PayeeSpecifiedCreditorFinancialInstitution>
         </ram:SpecifiedTradeSettlementPaymentMeans>
         <ram:ApplicableTradeTax>
            <ram:CalculatedAmount>11.20</ram:CalculatedAmount>
            <ram:TypeCode>VAT</ram:TypeCode>
            <ram:BasisAmount>160.00</ram:BasisAmount>
            <ram:CategoryCode>S</ram:CategoryCode>
            <ram:RateApplicablePercent>7.00</ram:RateApplicablePercent>
         </ram:ApplicableTradeTax>
         <ram:ApplicableTradeTax>
            <ram:CalculatedAmount>63.84</ram:CalculatedAmount>
            <ram:TypeCode>VAT</ram:TypeCode>
            <ram:BasisAmount>336.00</ram:BasisAmount>
            <ram:CategoryCode>S</ram:CategoryCode>
            <ram:RateApplicablePercent>19.00</ram:RateApplicablePercent>
         </ram:ApplicableTradeTax>
         <ram:SpecifiedTradePaymentTerms>
            <ram:Description>Zahlbar ohne Abzug bis 09.12.2017</ram:Description>
            <ram:DueDateDateTime>
               <udt:DateTimeString format="102">20171209</udt:DateTimeString>
            </ram:DueDateDateTime>
         </ram:SpecifiedTradePaymentTerms>
         <ram:SpecifiedTradeSettlementHeaderMonetarySummation>
            <ram:LineTotalAmount>496.00</ram:LineTotalAmount>
            <ram:ChargeTotalAmount>0.00</ram:ChargeTotalAmount>
            <ram:AllowanceTotalAmount>0.00</ram:AllowanceTotalAmount>
            <ram:TaxBasisTotalAmount>496.00</ram:TaxBasisTotalAmount>
            <ram:TaxTotalAmount currencyID="EUR">75.04</ram:TaxTotalAmount>
            <ram:GrandTotalAmount>571.04</ram:GrandTotalAmount>
            <ram:DuePayableAmount>571.04</ram:DuePayableAmount>
         </ram:SpecifiedTradeSettlementHeaderMonetarySummation>
      </ram:ApplicableHeaderTradeSettlement>
   </rsm:SupplyChainTradeTransaction>
</rsm:CrossIndustryInvoice>
jstaerk commented 5 years ago

invoice.ZUGFeRD.pdf and this would be a sample of a zf2 invoice with a valid xrechnung as content

jstaerk commented 5 years ago

the current development snapshot of 1.7.2 now supports the previously missing ram:BuyerReference, ram:SpecifiedLegalOrganization and ram:DefinedTradeContact and the new sample invoice http://mustangproject.org/files/MustangGnuaccountingBeispielRE-20190610_507.pdf resp. http://mustangproject.org/files/zugferd-invoice.xml should use it. The only difference to a XRechnung should now be being urn:cen.eu:en16931:2017 instead of urn:cen.eu:en16931:2017#compliant#urn:xoev-de:kosit:standard:xrechnung_1.2

jstaerk commented 4 years ago

now it's there in mustang 2 alpha

jstaerk commented 3 years ago

And described in https://www.mustangproject.org/invoice-class/?lang=de#xrechnung