diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 96af798..c17c397 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -18,7 +18,7 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@v1 + uses: lycheeverse/lychee-action@v2 - name: Find already existing issue id: find-issue diff --git a/.github/workflows/sonar.yml b/.github/workflows/sonar.yml index 7824917..b38f0d8 100644 --- a/.github/workflows/sonar.yml +++ b/.github/workflows/sonar.yml @@ -11,7 +11,7 @@ on: - '.idea/**' - 'assets/**' pull_request: - types: [opened, synchronize, reopened] + branches: [ develop ] paths-ignore: - '**.md' - '.config/**' diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index e56bc18..4d624fa 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -14,4 +14,4 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.8/apache-maven-3.9.8-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip diff --git a/CHANGELOG.md b/CHANGELOG.md index b56b5e6..d5a93bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 1.0.3 + +* ReportableSellerCreator can now create "Rechtsträger" like a company. + # 1.0.2 * The alias for the private key in the keystore is now configurable ( diff --git a/README.md b/README.md index 5805c73..7ea65eb 100644 --- a/README.md +++ b/README.md @@ -8,37 +8,24 @@ # bzst-dip-java-client -Client for using -the [Mass data transmission DIP (mass data -interface)](https://www.bzst.de/EN/Businesses/CESOP/electronic_data_transmission/electronic_data_transmission_node.html#js-toc-entry1). +Client for using the [Mass data transmission DIP (mass data interface)](https://www.bzst.de/EN/Businesses/CESOP/electronic_data_transmission/electronic_data_transmission_node.html#js-toc-entry1). -The BZSt (Bundeszentralamt für Steuern / Federal Central Tax Office) provides the Digital Inbox (DIP) as a service -for payment service providers to transmit financial data. +The BZSt (Bundeszentralamt für Steuern / Federal Central Tax Office) provides the Digital Inbox (DIP) as a service for payment service providers to transmit financial data. -Clients need to register / login -at [BZSt online.portal](https://www.bzst.de/DE/Service/Portalinformation/Massendaten/DIP/dip.html?nn=68828) -through [Elster](https://www.elster.de/elsterweb/start), [BundID](https://id.bund.de/de) -or [BZSt Online-Portal (BOP)](https://www.elster.de/bportal/start). +Clients need to register / login at [BZSt online.portal](https://www.bzst.de/DE/Service/Portalinformation/Massendaten/DIP/dip.html?nn=68828) through [Elster](https://www.elster.de/elsterweb/start), [BundID](https://id.bund.de/de) or [BZSt Online-Portal (BOP)](https://www.elster.de/bportal/start). -See -the [BZSt Information](https://www.bzst.de/EN/Service/Portalinformation/Login/login_node.html) -for more information. +See the [BZSt Information](https://www.bzst.de/EN/Service/Portalinformation/Login/login_node.html) for more information. -*Warning*: **BZSt Online-Portal** (deprecated) is different from **BZSt online.portal**. +> [!NOTE] +> **BZSt Online-Portal** (deprecated) is different from **BZSt online.portal**. ## Rationale We created this client to make it as easy as possible for the developer to use the BZSt DIP. -Through usage of the builder pattern (see [Configuration](#configuration) below), DTOs -and a typesafe data model we ensure high usability and readability. +Through usage of the builder pattern (see [Configuration](#configuration) below), DTOs and a typesafe data model we ensure high usability and readability. -The BZSt -provides [XSD](https://www.bzst.de/SharedDocs/Downloads/DE/Digitale_Plattformbetreiber/amtlicher_datensatz_entwurf) that -define the expected XML structure and -make it possible to generate java -classes ([BZSt Docs](https://www.bzst.de/DE/Unternehmen/Intern_Informationsaustausch/DAC7/Handbuecher/handbuecher.html?nn=127558#js-toc-entry2)). -Our library validates each -request through these XSD find errors before they are sent to the DIP. +The BZSt provides [XSD](https://www.bzst.de/SharedDocs/Downloads/DE/Digitale_Plattformbetreiber/amtlicher_datensatz_entwurf) that define the expected XML structure and make it possible to generate java classes ([BZSt Docs](https://www.bzst.de/DE/Unternehmen/Intern_Informationsaustausch/DAC7/Handbuecher/handbuecher.html?nn=127558#js-toc-entry2)).
+Our library validates each request through these XSD find errors before they are sent to the DIP. ## Installation [Installation guide for the latest release](https://github.com/xdev-software/bzst-dip-java-client/releases/latest#Installation) @@ -51,9 +38,7 @@ See the [examples in the demo package](./bzst-dip-java-client-demo/src/main/java For authentification at the BZST you have to create a public- and private-key. -First you have to create a **PEM** file as described on -the [BZST Website](https://www.bzst.de/SharedDocs/Downloads/DE/EOP_BOP/khb_dip.pdf?__blob=publicationFile&v=9) (see -1.7). +First you have to create a **PEM** file as described on the [BZST Website](https://www.bzst.de/DE/Service/Portalinformation/Massendaten/DIP/dip_node.html) (see 1.7). OpenSSL can be downloaded from their [website](https://www.openssl.org/). @@ -67,15 +52,13 @@ Next you have to convert that file to a **PKCS12** file. openssl pkcs12 -export -in cert.pem -inkey key.pem -out certificate.p12 -name "certificate" ``` -The [keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html) is contained in your JDK -installation. +The [keytool](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/keytool.html) is contained in your JDK installation. ``` keytool -importkeystore -srckeystore certificate.p12 -srcstoretype pkcs12 -destkeystore cert.jks ``` -The password you insert here, along with the file itself must be set in the client configuration. See example -at [app.properties](./bzst-dip-java-client-demo/src/main/resources/app.properties): +The password you insert here, along with the file itself must be set in the client configuration. See example at [app.properties](./bzst-dip-java-client-demo/src/main/resources/app.properties): ``` certificate.keystore.password=SECRET_PASSWORD @@ -101,11 +84,7 @@ client.id=abcd1234-ab12-ab12-ab12-abcdef123456 ### Configuration -The client can be configured through a properties file ( -see [app.properties](./bzst-dip-java-client-demo/src/main/resources/app.properties) -and [ApplicationWithConfigurationFromProperties.java](./bzst-dip-java-client-demo/src/main/java/software/xdev/ApplicationWithConfigurationFromProperties.java)) -or by creating a configuration object ( -see [Application.java](./bzst-dip-java-client-demo/src/main/java/software/xdev/Application.java)). +The client can be configured through a properties file (see [app.properties](./bzst-dip-java-client-demo/src/main/resources/app.properties) and [ApplicationWithConfigurationFromProperties.java](./bzst-dip-java-client-demo/src/main/java/software/xdev/ApplicationWithConfigurationFromProperties.java)) or by creating a configuration object (see [Application.java](./bzst-dip-java-client-demo/src/main/java/software/xdev/Application.java)). ```java public static BzstDipConfiguration createConfiguration() @@ -130,8 +109,7 @@ public static BzstDipConfiguration createConfiguration() ## Support -If you need support as soon as possible, and you can't wait for any pull request, feel free to -use [our support](https://xdev.software/en/services/support). +If you need support as soon as possible, and you can't wait for any pull request, feel free to use [our support](https://xdev.software/en/services/support). ## Contributing See the [contributing guide](./CONTRIBUTING.md) for detailed instructions on how to get started with our project. diff --git a/bzst-dip-java-client-demo/pom.xml b/bzst-dip-java-client-demo/pom.xml index 073d671..89ef458 100644 --- a/bzst-dip-java-client-demo/pom.xml +++ b/bzst-dip-java-client-demo/pom.xml @@ -26,7 +26,7 @@ UTF-8 UTF-8 - software.xdev.bzst.dip.client.Application + software.xdev.Application @@ -38,7 +38,7 @@ org.apache.logging.log4j log4j-slf4j2-impl - 2.23.1 + 2.24.1 diff --git a/bzst-dip-java-client/pom.xml b/bzst-dip-java-client/pom.xml index 496544b..1493fa2 100644 --- a/bzst-dip-java-client/pom.xml +++ b/bzst-dip-java-client/pom.xml @@ -115,7 +115,7 @@ org.slf4j slf4j-api - 2.0.13 + 2.0.16 com.opencsv @@ -138,7 +138,7 @@ org.apache.logging.log4j log4j-slf4j2-impl - 2.23.1 + 2.24.1 test @@ -177,7 +177,7 @@ org.apache.maven.plugins maven-project-info-reports-plugin - 3.6.2 + 3.8.0 @@ -185,7 +185,7 @@ com.mycila license-maven-plugin - 4.5 + 4.6 ${project.organization.url} @@ -225,7 +225,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.8.0 + 3.10.1 attach-javadocs @@ -281,7 +281,7 @@ org.apache.maven.plugins maven-gpg-plugin - 3.2.4 + 3.2.7 sign-artifacts @@ -324,12 +324,12 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.4.0 + 3.5.0 com.puppycrawl.tools checkstyle - 10.17.0 + 10.18.2 @@ -355,7 +355,7 @@ org.apache.maven.plugins maven-pmd-plugin - 3.24.0 + 3.25.0 true true @@ -367,12 +367,12 @@ net.sourceforge.pmd pmd-core - 7.3.0 + 7.6.0 net.sourceforge.pmd pmd-java - 7.3.0 + 7.6.0 @@ -384,7 +384,7 @@ org.apache.maven.plugins maven-jxr-plugin - 3.4.0 + 3.5.0 diff --git a/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/model/message/BzstDipCorrectableReportableSellerType.java b/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/model/message/BzstDipCorrectableReportableSellerType.java index 9f2151e..ccc6f27 100644 --- a/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/model/message/BzstDipCorrectableReportableSellerType.java +++ b/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/model/message/BzstDipCorrectableReportableSellerType.java @@ -49,9 +49,11 @@ public CorrectableReportableSellerType toXmlType(final BzstDipConfiguration conf this.tin.toXmlType(), this.handelsregisternummer, this.vat, - this.firstName, + this.firstName == null ? ReportableSellerCreator.NULL_STRING : this.firstName, this.lastName, - this.birthDate.format(DateTimeFormatter.ISO_LOCAL_DATE), + this.birthDate == null + ? ReportableSellerCreator.NULL_STRING + : this.birthDate.format(DateTimeFormatter.ISO_LOCAL_DATE), this.legalAddress.toXmlType(), this.addressFix.toXmlType(), this.numberOfActivities.toXmlType(), diff --git a/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/xmldocument/ReportableSellerCreator.java b/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/xmldocument/ReportableSellerCreator.java index 9c2e1f8..2c89103 100644 --- a/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/xmldocument/ReportableSellerCreator.java +++ b/bzst-dip-java-client/src/main/java/software/xdev/bzst/dip/client/xmldocument/ReportableSellerCreator.java @@ -50,6 +50,7 @@ public class ReportableSellerCreator { private static final Logger LOGGER = LoggerFactory.getLogger(ReportableSellerCreator.class); + public static final String NULL_STRING = "NULL"; private final BzstDipConfiguration configuration; public ReportableSellerCreator(final BzstDipConfiguration configuration) @@ -337,7 +338,7 @@ private static OrganisationPartyType createOrganisationPartyType( */ public static boolean isNULLAsString(final String checkNULLString) { - return checkNULLString.equals("NULL"); + return checkNULLString.equals(NULL_STRING); } private static OrganisationINType createIN(final String in) diff --git a/pom.xml b/pom.xml index 7670b3a..50d5a11 100644 --- a/pom.xml +++ b/pom.xml @@ -40,12 +40,12 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.4.0 + 3.5.0 com.puppycrawl.tools checkstyle - 10.17.0 + 10.18.2 @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-pmd-plugin - 3.24.0 + 3.25.0 true true @@ -82,12 +82,12 @@ net.sourceforge.pmd pmd-core - 7.3.0 + 7.6.0 net.sourceforge.pmd pmd-java - 7.3.0 + 7.6.0 @@ -99,7 +99,7 @@ org.apache.maven.plugins maven-jxr-plugin - 3.4.0 + 3.5.0