Package com.itextpdf.text.zugferd
Class InvoiceDOM
java.lang.Object
com.itextpdf.text.zugferd.InvoiceDOM
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final CountryCodestatic final CurrencyCodestatic final NumberCheckerstatic final NumberCheckerstatic final DateFormatCodeprotected final Documentstatic final GlobalIdentifierCodestatic final MeasurementUnitCodestatic final PaymentMeansCodestatic final TaxCategoryCodestatic final TaxIDTypeCodestatic final TaxTypeCode -
Constructor Summary
ConstructorsConstructorDescriptionInvoiceDOM(BasicProfile data) Creates an object that will import data into an XML template. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidChecks if a string is empty and throws a DataIncompleteException if so.protected voidimportAppliedTradeAllowanceCharge(Element parent, boolean indicator, String actualAmount, String currencyID, String reason) Imports applied trade allowance charge data (line items).protected voidimportBuyerTradeParty(Element parent, BasicProfile data) Gets the buyer trade party data to import this data.protected voidimportContent(Element parent, String tag, String content, String... attributes) Helper method to set the content of a tag.private voidimportData(Document doc, BasicProfile data) Imports the data into the XML template.protected voidimportDateTime(Element parent, String tag, String dateTimeFormat, Date dateTime) Set the content of a date tag along with the attribute that defines the format.protected voidimportHeaderExchangedDocument(Element element, BasicProfile data) Imports the data for the following tag: rsm:HeaderExchangedDocumentprotected voidimportIncludedNotes(Element parent, int level, String[][] notes, String[] notesCodes) Includes notes and (in case of the COMFORT profile) the subject codes for those notes.protected voidimportInvoiceeTradeParty(Element parent, ComfortProfile data) Gets the invoicee party data to import this data.protected voidimportLineItemBasic(Element parent, String quantity, String code, String name) Imports the data for a line item (basic profile)protected voidimportLineItemComfort(Element parent, String lineID, String[][] note, String grossPriceChargeAmount, String grossPriceChargeAmountCurrencyID, String grossPriceBasisQuantity, String grossPriceBasisQuantityCode, Boolean[] grossPriceTradeAllowanceChargeIndicator, String[] grossPriceTradeAllowanceChargeActualAmount, String[] grossPriceTradeAllowanceChargeActualAmountCurrencyID, String[] grossPriceTradeAllowanceChargeReason, String netPriceChargeAmount, String netPriceChargeAmountCurrencyID, String netPriceBasisQuantity, String netPriceBasisQuantityCode, String billedQuantity, String billedQuantityCode, String[] settlementTaxTypeCode, String[] settlementTaxExemptionReason, String[] settlementTaxCategoryCode, String[] settlementTaxApplicablePercent, String totalAmount, String totalAmountCurrencyID, String specifiedTradeProductGlobalID, String specifiedTradeProductSchemeID, String specifiedTradeProductSellerAssignedID, String specifiedTradeProductBuyerAssignedID, String specifiedTradeProductName, String specifiedTradeProductDescription) Imports line item data (comfort profile).protected voidimportLineItemsBasic(Element parent, BasicProfile data) Gets line data to import the this data (basic profile).protected voidimportLineItemsComfort(Element parent, ComfortProfile data) Gets line item data to import the this data (comfort profile).protected voidimportPaymentMeans(Element parent, BasicProfile data) Gets the payment means data to imports this data.protected voidimportPaymentMeans(Element parent, String typeCode, String[] information, String id, String scheme, String payerIban, String payerProprietaryID, String iban, String accName, String accID, String payerBic, String payerBank, String payerInst, String bic, String bank, String inst) Imports payment means data.protected voidimportSellerTradeParty(Element parent, BasicProfile data) Gets the seller trade party data to import this data.protected voidimportSpecifiedExchangedDocumentContext(Element element, BasicProfile data) Imports the data for the following tag: rsm:SpecifiedExchangedDocumentContextprotected voidimportSpecifiedLogisticsServiceCharge(Element parent, ComfortProfile data) Gets specified logistics service charge data to import the this data.protected voidimportSpecifiedLogisticsServiceCharge(Element parent, String[] description, String appliedAmount, String currencyID, String[] typeCode, String[] categoryCode, String[] percent) Imports specified logistics service charge data.protected voidimportSpecifiedSupplyChainTradeTransaction(Element element, BasicProfile data) Imports the data for the following tag: rsm:SpecifiedSupplyChainTradeTransactionprotected voidimportSpecifiedTradeAllowanceCharge(Element parent, boolean indicator, String actualAmount, String actualAmountCurrency, String reason, String[] typeCode, String[] categoryCode, String[] percent) Imports specified trade allowance charge.protected voidimportSpecifiedTradeAllowanceCharge(Element parent, ComfortProfile data) Gets specified trade allowance charge data to import the this data.protected voidimportSpecifiedTradePaymentTerms(Element parent, ComfortProfile data) Gets specified trade payment terms data to import the this data.protected voidimportSpecifiedTradePaymentTerms(Element parent, String[] description, Date dateTime, String dateTimeFormat) Imports specified trade payment terms.protected voidimportTax(Element parent, BasicProfile data) Gets tax data to import the this data.protected voidImports tax data.protected voidimportTax(Element parent, String calculatedAmount, String currencyID, String typeCode, String exemptionReason, String basisAmount, String basisAmountCurr, String category, String percent) Imports tax data.protected voidimportTradeParty(Element parent, String id, String[] globalID, String[] globalIDScheme, String name, String postcode, String lineOne, String lineTwo, String cityName, String countryID, String[] taxRegistrationID, String[] taxRegistrationSchemeID) Imports trade party information (could be seller, buyer or invoicee).protected static voidremoveEmptyNodes(Node node) It is forbidden for a ZUGFeRD XML to contain empty tags, hence we use this method recursively to remove empty nodes.byte[]toXML()Exports the Document as an XML file.
-
Field Details
-
COUNTRY_CODE
-
CURR_CODE
-
DF_CODE
-
GI_CODE
-
M_UNIT_CODE
-
DEC2
-
DEC4
-
PM_CODE
-
TC_CODE
-
TIDT_CODE
-
TT_CODE
-
doc
-
-
Constructor Details
-
InvoiceDOM
public InvoiceDOM(BasicProfile data) throws ParserConfigurationException, SAXException, IOException, DataIncompleteException, InvalidCodeException Creates an object that will import data into an XML template.- Parameters:
data- If this is an instance of BASICInvoice, the BASIC profile will be used; If this is an instance of COMFORTInvoice, the COMFORT profile will be used.- Throws:
ParserConfigurationExceptionSAXExceptionIOExceptionDataIncompleteExceptionInvalidCodeException
-
-
Method Details
-
importData
private void importData(Document doc, BasicProfile data) throws DataIncompleteException, InvalidCodeException Imports the data into the XML template.- Parameters:
doc- the Document object we are going to populatedata- the interface that gives us access to the data- Throws:
InvalidCodeExceptionDataIncompleteException
-
importSpecifiedExchangedDocumentContext
Imports the data for the following tag: rsm:SpecifiedExchangedDocumentContext- Parameters:
element- the rsm:SpecifiedExchangedDocumentContext elementdata- the invoice data
-
importHeaderExchangedDocument
protected void importHeaderExchangedDocument(Element element, BasicProfile data) throws DataIncompleteException, InvalidCodeException Imports the data for the following tag: rsm:HeaderExchangedDocument- Parameters:
element- the rsm:HeaderExchangedDocument elementdata- the invoice data- Throws:
DataIncompleteExceptionInvalidCodeException
-
importContent
Helper method to set the content of a tag.- Parameters:
parent- the parent element of the tagtag- the tag for which we want to set the contentcontent- the new content for the tagattributes- a sequence of attributes of which the odd elements are keys, the even elements the corresponding value.
-
importDateTime
protected void importDateTime(Element parent, String tag, String dateTimeFormat, Date dateTime) throws InvalidCodeException Set the content of a date tag along with the attribute that defines the format.- Parameters:
parent- the parent element that holds the date tagtag- the date tag we want to changedateTimeFormat- the format that will be used as an attributedateTime- the actual date- Throws:
InvalidCodeException
-
importIncludedNotes
protected void importIncludedNotes(Element parent, int level, String[][] notes, String[] notesCodes) throws DataIncompleteException, InvalidCodeException Includes notes and (in case of the COMFORT profile) the subject codes for those notes.- Parameters:
parent- the parent element of the tag we want to changelevel- the level where the notices are added (header or line)notes- array of notesnotesCodes- array of codes for the notes. If not null, notes and notesCodes need to have an equal number of elements.- Throws:
DataIncompleteExceptionInvalidCodeException
-
importSpecifiedSupplyChainTradeTransaction
protected void importSpecifiedSupplyChainTradeTransaction(Element element, BasicProfile data) throws DataIncompleteException, InvalidCodeException Imports the data for the following tag: rsm:SpecifiedSupplyChainTradeTransaction- Parameters:
element-data- the invoice data- Throws:
DataIncompleteExceptionInvalidCodeException
-
importSellerTradeParty
protected void importSellerTradeParty(Element parent, BasicProfile data) throws DataIncompleteException, InvalidCodeException Gets the seller trade party data to import this data.- Parameters:
parent- the parent elementdata- the data- Throws:
DataIncompleteExceptionInvalidCodeException
-
importBuyerTradeParty
protected void importBuyerTradeParty(Element parent, BasicProfile data) throws DataIncompleteException, InvalidCodeException Gets the buyer trade party data to import this data.- Parameters:
parent- the parent elementdata- the data- Throws:
DataIncompleteExceptionInvalidCodeException
-
importInvoiceeTradeParty
protected void importInvoiceeTradeParty(Element parent, ComfortProfile data) throws DataIncompleteException, InvalidCodeException Gets the invoicee party data to import this data.- Parameters:
parent- the parent elementdata- the data- Throws:
DataIncompleteExceptionInvalidCodeException
-
importTradeParty
protected void importTradeParty(Element parent, String id, String[] globalID, String[] globalIDScheme, String name, String postcode, String lineOne, String lineTwo, String cityName, String countryID, String[] taxRegistrationID, String[] taxRegistrationSchemeID) throws DataIncompleteException, InvalidCodeException Imports trade party information (could be seller, buyer or invoicee).- Parameters:
parent- the parent elementid-globalID-globalIDScheme-name-postcode-lineOne-lineTwo-cityName-countryID-taxRegistrationID-taxRegistrationSchemeID-- Throws:
DataIncompleteExceptionInvalidCodeException
-
importPaymentMeans
Gets the payment means data to imports this data.- Parameters:
parent- the parent elementdata- the data- Throws:
InvalidCodeException
-
importPaymentMeans
protected void importPaymentMeans(Element parent, String typeCode, String[] information, String id, String scheme, String payerIban, String payerProprietaryID, String iban, String accName, String accID, String payerBic, String payerBank, String payerInst, String bic, String bank, String inst) throws InvalidCodeException Imports payment means data.- Parameters:
parent- the parent elementtypeCode-information-id-scheme-payerIban-payerProprietaryID-iban-accName-accID-payerBic-payerBank-payerInst-bic-bank-inst-- Throws:
InvalidCodeException
-
importTax
protected void importTax(Element parent, BasicProfile data) throws InvalidCodeException, DataIncompleteException Gets tax data to import the this data.- Parameters:
parent- the parent elementdata- the data- Throws:
DataIncompleteExceptionInvalidCodeException
-
importTax
protected void importTax(Element parent, String calculatedAmount, String currencyID, String typeCode, String exemptionReason, String basisAmount, String basisAmountCurr, String category, String percent) throws InvalidCodeException, DataIncompleteException Imports tax data.- Parameters:
parent-calculatedAmount-currencyID-typeCode-exemptionReason-basisAmount-basisAmountCurr-category-percent-- Throws:
InvalidCodeExceptionDataIncompleteException
-
importSpecifiedTradeAllowanceCharge
protected void importSpecifiedTradeAllowanceCharge(Element parent, ComfortProfile data) throws InvalidCodeException Gets specified trade allowance charge data to import the this data.- Parameters:
parent- the parent elementdata- the data- Throws:
InvalidCodeException
-
importSpecifiedTradeAllowanceCharge
protected void importSpecifiedTradeAllowanceCharge(Element parent, boolean indicator, String actualAmount, String actualAmountCurrency, String reason, String[] typeCode, String[] categoryCode, String[] percent) throws InvalidCodeException Imports specified trade allowance charge.- Parameters:
parent-indicator-actualAmount-actualAmountCurrency-reason-typeCode-categoryCode-percent-- Throws:
InvalidCodeException
-
importSpecifiedLogisticsServiceCharge
protected void importSpecifiedLogisticsServiceCharge(Element parent, ComfortProfile data) throws InvalidCodeException Gets specified logistics service charge data to import the this data.- Parameters:
parent- the parent elementdata- the data- Throws:
InvalidCodeException
-
importSpecifiedLogisticsServiceCharge
protected void importSpecifiedLogisticsServiceCharge(Element parent, String[] description, String appliedAmount, String currencyID, String[] typeCode, String[] categoryCode, String[] percent) throws InvalidCodeException Imports specified logistics service charge data.- Parameters:
parent- the parent elementdescription-appliedAmount-currencyID-typeCode-categoryCode-percent-- Throws:
InvalidCodeException
-
importSpecifiedTradePaymentTerms
protected void importSpecifiedTradePaymentTerms(Element parent, ComfortProfile data) throws InvalidCodeException Gets specified trade payment terms data to import the this data.- Parameters:
parent- the parent elementdata- the data- Throws:
InvalidCodeException
-
importSpecifiedTradePaymentTerms
protected void importSpecifiedTradePaymentTerms(Element parent, String[] description, Date dateTime, String dateTimeFormat) throws InvalidCodeException Imports specified trade payment terms.- Parameters:
parent- the parent elementdescription-dateTime-dateTimeFormat-- Throws:
InvalidCodeException
-
importLineItemsComfort
protected void importLineItemsComfort(Element parent, ComfortProfile data) throws DataIncompleteException, InvalidCodeException Gets line item data to import the this data (comfort profile).- Parameters:
parent- the parent elementdata- the data- Throws:
DataIncompleteExceptionInvalidCodeException
-
importLineItemComfort
protected void importLineItemComfort(Element parent, String lineID, String[][] note, String grossPriceChargeAmount, String grossPriceChargeAmountCurrencyID, String grossPriceBasisQuantity, String grossPriceBasisQuantityCode, Boolean[] grossPriceTradeAllowanceChargeIndicator, String[] grossPriceTradeAllowanceChargeActualAmount, String[] grossPriceTradeAllowanceChargeActualAmountCurrencyID, String[] grossPriceTradeAllowanceChargeReason, String netPriceChargeAmount, String netPriceChargeAmountCurrencyID, String netPriceBasisQuantity, String netPriceBasisQuantityCode, String billedQuantity, String billedQuantityCode, String[] settlementTaxTypeCode, String[] settlementTaxExemptionReason, String[] settlementTaxCategoryCode, String[] settlementTaxApplicablePercent, String totalAmount, String totalAmountCurrencyID, String specifiedTradeProductGlobalID, String specifiedTradeProductSchemeID, String specifiedTradeProductSellerAssignedID, String specifiedTradeProductBuyerAssignedID, String specifiedTradeProductName, String specifiedTradeProductDescription) throws DataIncompleteException, InvalidCodeException Imports line item data (comfort profile).- Parameters:
parent- the parent elementlineID-note-grossPriceChargeAmount-grossPriceChargeAmountCurrencyID-grossPriceBasisQuantity-grossPriceBasisQuantityCode-grossPriceTradeAllowanceChargeIndicator-grossPriceTradeAllowanceChargeActualAmount-grossPriceTradeAllowanceChargeActualAmountCurrencyID-grossPriceTradeAllowanceChargeReason-netPriceChargeAmount-netPriceChargeAmountCurrencyID-netPriceBasisQuantity-netPriceBasisQuantityCode-billedQuantity-billedQuantityCode-settlementTaxTypeCode-settlementTaxExemptionReason-settlementTaxCategoryCode-settlementTaxApplicablePercent-totalAmount-totalAmountCurrencyID-specifiedTradeProductGlobalID-specifiedTradeProductSchemeID-specifiedTradeProductSellerAssignedID-specifiedTradeProductBuyerAssignedID-specifiedTradeProductName-specifiedTradeProductDescription-- Throws:
DataIncompleteExceptionInvalidCodeException
-
importAppliedTradeAllowanceCharge
protected void importAppliedTradeAllowanceCharge(Element parent, boolean indicator, String actualAmount, String currencyID, String reason) throws DataIncompleteException, InvalidCodeException Imports applied trade allowance charge data (line items).- Parameters:
parent- the parent elementindicator-actualAmount-currencyID-reason-- Throws:
DataIncompleteExceptionInvalidCodeException
-
importTax
protected void importTax(Element parent, String typeCode, String exemptionReason, String category, String percent) throws InvalidCodeException, DataIncompleteException Imports tax data.- Parameters:
parent- the parent elementtypeCode-exemptionReason-category-percent-- Throws:
InvalidCodeExceptionDataIncompleteException
-
importLineItemsBasic
protected void importLineItemsBasic(Element parent, BasicProfile data) throws DataIncompleteException, InvalidCodeException Gets line data to import the this data (basic profile).- Parameters:
parent-data-- Throws:
DataIncompleteExceptionInvalidCodeException
-
importLineItemBasic
protected void importLineItemBasic(Element parent, String quantity, String code, String name) throws InvalidCodeException Imports the data for a line item (basic profile)- Parameters:
parent- the parent elementquantity-code-name-- Throws:
InvalidCodeException
-
toXML
Exports the Document as an XML file.- Returns:
- a byte[] with the data in XML format
- Throws:
TransformerException
-
removeEmptyNodes
It is forbidden for a ZUGFeRD XML to contain empty tags, hence we use this method recursively to remove empty nodes.- Parameters:
node- the node from which we want to remove the empty nodes
-
check
Checks if a string is empty and throws a DataIncompleteException if so.- Parameters:
s- the String to checkmessage- the message if an exception is thrown- Throws:
DataIncompleteException
-