An open API service indexing awesome lists of open source software.

https://github.com/austriapro/ebinterface-ubl-mapping

Mapping ebInterface 4.x, 5.x and 6.x from and to UBL 2.1
https://github.com/austriapro/ebinterface-ubl-mapping

austriapro ebinterface mapping ubl

Last synced: 5 months ago
JSON representation

Mapping ebInterface 4.x, 5.x and 6.x from and to UBL 2.1

Awesome Lists containing this project

README

          

# ebinterface-ubl-mapping

[![Maven Central](https://maven-badges.herokuapp.com/maven-central/at.austriapro/ebinterface-ubl-mapping/badge.svg)](https://maven-badges.herokuapp.com/maven-central/at.austriapro/ebinterface-ubl-mapping)
[![javadoc](https://javadoc.io/badge2/at.austriapro/ebinterface-ubl-mapping/javadoc.svg)](https://javadoc.io/doc/at.austriapro/ebinterface-ubl-mapping)
[![CodeCov](https://codecov.io/gh/austriapro/ebinterface-ubl-mapping/branch/master/graph/badge.svg)](https://codecov.io/gh/austriapro/ebinterface-ubl-mapping)

Mapping ebInterface 4.x/5.x/6.x from and to UBL 2.1.

Author: Philip Helger

The reason why this project is not in the [ebinterface-mappings](https://github.com/austriapro/ebinterface-mappings) project is the totally different software stack used and the requirement of this project to be published on Maven central.

# Building

To build the project you need at least Java 17 (or newer) and Apache Maven 3.x. Build is quite easy: call `mvn clean install` in this directory and the final result will be in the `target` directory.
Additionally Eclipse project files for the latest Eclipse version are contained.

* Versions prior to v6 use Java 11 as the baseline.
* Versions prior to v5 use Java 1.8 as the baseline.

# Maven usage

Add the following to your pom.xml to use this artifact, replacing `x.y.z` with the real version:

```xml

at.austriapro
ebinterface-ubl-mapping
x.y.z

```

Note: prior to v4.5.0 the Maven group ID was `com.helger`.

# News and noteworthy

v6.1.0 - 2025-11-17
* Updated to ph-commons 12.1.0
* Using JSpecify annotations

v6.0.0 - 2025-08-29
* Requires Java 17 as the minimum version
* Updated to ph-commons 12.0.0
* Removed all deprecated methods marked for removal

v5.3.5 - 2025-08-29
* Fixed the UBL to ebInterface maaping of `InvoiceRecipientsBillerID` (regression from v5.3.2)

v5.3.4 - 2025-07-20
* Applying the `isPrepaidAmountSupported` when converting UBL Credit Notes as well
* Converting the rounding amount and the prepaid amount to ebInterface (5.0+) as well

v5.3.3 - 2025-07-20
* When converting to UBL, the `LegalMonetaryTotal/TaxExclusiveAmount` now includes the sums of allowances and charges
* Extended `IToEbinterfaceSettings` with `isPrepaidAmountSupported`
* When converting to UBL, the `LegalMonetaryTotal` elements `PayableRoundingAmount` and `PrepaidAmount` (for ebInterface 5.0 onwards only)

v5.3.2 - 2025-06-27
* Removed Peppol BIS v2 mapping of `InvoiceRecipientsBillerID`
* Added the exception fixes of 5.3.1 also to CreditNote mapping

v5.3.1 - 2025-06-26
* Fixed potential exception, if an ebInterface has no line extension amount

v5.3.0 - 2025-05-04
* Requires ph-ebinterface 7.1.1
* Fixed the mapping of ebInterface `FurtherIdentification` from `DocumentReference` to `Party/PartyIdentification`
* Updated Invoice Type Codes according to EN 16931 validation rules 1.3.13
* Renamed class `AbstractConverter` to `AbstractEbInterfaceUBLConverter`

v5.2.7 - 2024-10-17
* Made sure the UBL invoice line `Item/Name` element has higher precedence than `Item/Description`

v5.2.6 - 2024-10-11
* Added mapping the ebInterface `Delivery/Description` element to UBL `Delivery/DeliveryTerms[0]/SpecialTerms[0]`

v5.2.5 - 2024-10-10
* The UBL `OrderLineReference` element is only created if the mandatory `LineID` element is present

v5.2.4 - 2024-09-05
* Payment Conditions are also created in ebInterface 4.2 onwards, if any other field then just the DueDate is set

v5.2.3 - 2024-07-30
* Fixed BIC mapping for output format ebInterface 4.0
* Improved empty BIC handling when creating ebInterface

v5.2.2 - 2024-05-02
* Avoid overwriting `PaymentConditions/DueDate` with `null` when it is already set
* Re-added using top-level `Invoice/DueDate` when creating ebInterface document

v5.2.1 - 2024-04-15
* Fixed the SEPA Direct Debit mapping from UBL to ebInterface
* Fixed the SEPA Direct Debit mapping from ebInterface to UBL
* Removed the `schemeID` and `schemeAgency` attributes from `TaxScheme` and `TaxCategory`
* Fixed payment reference mapping (`PaymentID` preferred over `InstructionID`). See [#3](https://github.com/austriapro/ebinterface-ubl-mapping/issues/3)

v5.2.0 - 2024-04-02
* Ensured Java 21 compatibility
* Updated to ph-ubl 9.x

v5.1.4 - 2024-02-26
* Avoid empty `RelatedDocument/Comment` elements in ebInterface 4.1+
* Added support for invoice type code `218` as a `FinalSettlement`

v5.1.3 - 2023-11-14
* ebInterface 5.0+ `Discount/Comment` is converted to a UBL `PaymentTerms/Note` element

v5.1.2 - 2023-11-09
* Fixed the mapping of ebInterface DocumentType `CreditNote` to UBL Invoice Type Code `381`

v5.1.1 - 2023-09-26
* Fixed the `DocumentCurrencyCode/@listID` attribute for all ebInterface versions != 4.2
* Avoid creating empty UBL elements

v5.1.0 - 2023-04-30
* Updated to ph-ubl 8.x

v5.0.0 - 2023-03-02
* Using Java 11 as the baseline
* Updated to ph-commons 11
* Using JAXB 4.0 as the baseline

v4.8.3 - 2022-10-12
* Added mapping of `BelowTheLineItem` in ebInterface 6.1 as done in 4.3 and previously
* Extracted shared customization base interfaces

v4.8.2 - 2022-08-11
* Updated to peppol-commons 8.7.6
* Added support for ebInterface 6.1 from and to UBL

v4.8.1 - 2022-04-12
* Added specific support for `InvoiceTypeCode` mapping of `326`, `386` and `389` from UBL to ebInterface

v4.8.0 - 2021-05-03
* Updated to ph-commons 10.1

v4.7.0 - 2021-03-22
* Updated to ph-commons 10

v4.6.3 - 2020-10-28
* Fixed the application of the "EnforcedSupplierEmailAddress" when converting to ebInterface 5.0 and 6.0

v4.6.2 - 2020-10-13
* Heavily extended the allowed UBL Invoice type codes. Allowed values are now: `80`, `82`, `84`, `130`, `202`, `203`, `204`, `211`, `295`, `325`, `326`, `380`, `383`, `384`, `385`, `386`, `387`, `388`, `389`, `390`, `393`, `394`, `395`, `456`, `457`, `527`, `575`, `623`, `633`, `751`, `780`, `935`
* Added support for UBLVersionID `2.3`

v4.6.1 - 2020-09-17
* Updated to Jakarta JAXB 2.3.3

v4.6.0 - 2020-08-30
* Updated to ph-ubl 6.4.0
* Updated to ph-ebinterface 6.2.0

v4.5.8 - 2020-08-13
* Mapping UBL `AdditionalItemProperty` to ebInterface `AdditionalInformation` (ebInterface 5.0 or higher) on line level

v4.5.7 - 2020-07-08
* Using `Invoice/DueDate` as an alternative to `Invoice/PaymentMeans/PaymentDueDate`

v4.5.6 - 2020-05-26
* Updated to ph-ebinterface 6.1.5 with ph-xsds 2.3.0 (new Maven groupId)

v4.5.5 - 2020-05-14
* Updated to support ebInterface 6.0 from and to UBL
* Fixed a divide by zero error if payableAmount is 0

v4.5.4 - 2020-04-01
* Now ebInterface 5.0 `Contact` email addresses and telephone numbers are also mapped to UBL (see [issue #2](https://github.com/austriapro/ebinterface-ubl-mapping/issues/2))

v4.5.3 - 2020-02-07
* Preferring `PaymentMeans/InstructionID` over `PaymentMeans/PaymentID`
* Changed the mapping of ebInterface from `PaymentReference` to `PaymentMeans/InstructionID`
* Updated to peppol-commons 8.x

v4.5.2 - 2019-12-17
* Made the "profile ID to process Identifier" mapping customizable
* Unified error levels between Invoice and CreditNote on the ProfileID

v4.5.1 - 2019-10-14
* Fixed a regression that payment type "41" was checked instead of "42"

v4.5.0 - 2019-10-01
* Changed all package names to `at.austriapro`
* Changed the Maven group `at.austriapro`

v4.0.1 - 2019-09-18
* Fixed potential NPE in county code mapping from ebInterface to UBL

v4.0.0 - 2019-09-13
* Added code to convert UBL Invoice/CreditNote to ebInterface 4.0, 4.1 and 5.0
* Added code to convert ebInterface 4.0, 4.1 and 5.0 to UBL Invoice
* Added check that order reference is mandatory if an order position number is used
* Improved customizability of conversion
* Improved consistency of existing conversions

v3.0.8 - 2019-03-28
* Fixed parsing of process identifiers in "Profile" element for CreditNotes to match the Invoice rules
* Added support for the UBL version "2.2"
* CreditNotes now also transform the `PaymentMethod` if present but fallback to `NoPayment` if none is provided

v3.0.7 - 2019-02-27
* Avoid creating negative `Percent` element values

v3.0.6 - 2019-02-25
* Improved handling of empty `TaxCategory/ID` and `TaxScheme/ID`

v3.0.5 - 2019-02-22
* Handling empty `PaymentChannelCode` like if it was `null`.

v3.0.4 - 2018-11-22
* Updated to ph-commons 9.2.0

v3.0.3 - 2018-06-21
* Fixed division by zero if BaseQuantity is 0

v3.0.2 - 2018-04-13
* Updated to peppol-commons 6.0.3

v3.0.1 - 2018-04-06
* Ignoring empty Description/Name/Note elements on line level

v3.0.0 - 2018-02-23
* Fixed potential NPE if UBL invoice has no `FinancialAccount`
* Updated to ph-commons 9.0.0
* Conversion of `TaxExemption` was added
* Some error handling details were improved

v2.2.0 - 2017-08-04
* Allow to create ebInterface 4.3 as well
* Added conversion from ebInterface 4.1/4.2/4.3 to UBL

v2.1.1 - 2016-09-27
* Requires at least ph-common 8.5.2

v2.1.0 - 2016-09-12
* Bind to ph-commons 8.5.x

v2.0.1 - 2016-08-01

v2.0.0 - 2016-07-12
* Bind to ph-commons 8.x
* Requires JDK 1.8

v1.1.0 - 2016-01-26
* Last version for JDK 6

---

My personal [Coding Styleguide](https://github.com/phax/meta/blob/master/CodingStyleguide.md) |
On Twitter: @philiphelger