From b19cc337d368c8084383cc9f6d47a1cc113810b3 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Wed, 8 Jan 2025 19:25:56 +0100 Subject: [PATCH] Added specific support for XRechnung Extension --- README.md | 4 +- .../phive/xrechnung/XRechnungValidation.java | 226 ++- .../phive/xrechnung/mock/CTestFiles.java | 78 +- .../3.0.2/cii-ext/04.05a-INVOICE_uncefact.xml | 173 +++ .../3.0.2/ubl-inv-ext/04.01a-INVOICE_ubl.xml | 391 ++++++ .../3.0.2/ubl-inv-ext/04.02a-INVOICE_ubl.xml | 161 +++ .../3.0.2/ubl-inv-ext/04.03a-INVOICE_ubl.xml | 1234 +++++++++++++++++ .../3.0.2/ubl-inv-ext/04.04a-INVOICE_ubl.xml | 266 ++++ .../3.0.2/ubl-inv-ext/05.01a-INVOICE_ubl.xml | 167 +++ 9 files changed, 2657 insertions(+), 43 deletions(-) create mode 100644 phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/cii-ext/04.05a-INVOICE_uncefact.xml create mode 100644 phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.01a-INVOICE_ubl.xml create mode 100644 phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.02a-INVOICE_ubl.xml create mode 100644 phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.03a-INVOICE_ubl.xml create mode 100644 phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.04a-INVOICE_ubl.xml create mode 100644 phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/05.01a-INVOICE_ubl.xml diff --git a/README.md b/README.md index 2110c78f..f03dd5ad 100644 --- a/README.md +++ b/README.md @@ -199,7 +199,9 @@ As OpenPeppol is only changing the "micro" version part (3.0.x), whereas I start I hope that with the introduction of PINT, the versioning problem will be solved. # News and noteworthy - + +* v3.2.4 - 2025-01-08 + * Added specific support for XRechnung Extension (for versions 3.0.0, 3.0.1 and 3.0.2) * v3.2.3 - 2025-01-03 * Fixed Factur-X VES display name to include the profile name as well * Added Peppol A-NZ-PEPPOL 1.0.12 rules diff --git a/phive-rules-xrechnung/src/main/java/com/helger/phive/xrechnung/XRechnungValidation.java b/phive-rules-xrechnung/src/main/java/com/helger/phive/xrechnung/XRechnungValidation.java index e55c26f9..e033a38d 100644 --- a/phive-rules-xrechnung/src/main/java/com/helger/phive/xrechnung/XRechnungValidation.java +++ b/phive-rules-xrechnung/src/main/java/com/helger/phive/xrechnung/XRechnungValidation.java @@ -50,6 +50,7 @@ public final class XRechnungValidation { public static final String GROUP_ID = "de.xrechnung"; + public static final String GROUP_ID_EXT = GROUP_ID + ".extension"; // Valid from 1.7.20219- 31.12.2019 @Deprecated @@ -167,34 +168,52 @@ public final class XRechnungValidation public static final DVRCoordinate VID_XRECHNUNG_CII_300 = PhiveRulesHelper.createCoordinate (GROUP_ID, "cii", "3.0.0"); + public static final DVRCoordinate VID_XRECHNUNG_EXTENSION_CII_300 = PhiveRulesHelper.createCoordinate (GROUP_ID_EXT, + "cii", + "3.0.0"); public static final DVRCoordinate VID_XRECHNUNG_UBL_CREDITNOTE_300 = PhiveRulesHelper.createCoordinate (GROUP_ID, "ubl-creditnote", "3.0.0"); public static final DVRCoordinate VID_XRECHNUNG_UBL_INVOICE_300 = PhiveRulesHelper.createCoordinate (GROUP_ID, "ubl-invoice", "3.0.0"); + public static final DVRCoordinate VID_XRECHNUNG_EXTENSION_UBL_INVOICE_300 = PhiveRulesHelper.createCoordinate (GROUP_ID_EXT, + "ubl-invoice", + "3.0.0"); // Valid from 01.02.2024 public static final DVRCoordinate VID_XRECHNUNG_CII_301 = PhiveRulesHelper.createCoordinate (GROUP_ID, "cii", "3.0.1"); + public static final DVRCoordinate VID_XRECHNUNG_EXTENSION_CII_301 = PhiveRulesHelper.createCoordinate (GROUP_ID_EXT, + "cii", + "3.0.1"); public static final DVRCoordinate VID_XRECHNUNG_UBL_CREDITNOTE_301 = PhiveRulesHelper.createCoordinate (GROUP_ID, "ubl-creditnote", "3.0.1"); public static final DVRCoordinate VID_XRECHNUNG_UBL_INVOICE_301 = PhiveRulesHelper.createCoordinate (GROUP_ID, "ubl-invoice", "3.0.1"); + public static final DVRCoordinate VID_XRECHNUNG_EXTENSION_UBL_INVOICE_301 = PhiveRulesHelper.createCoordinate (GROUP_ID_EXT, + "ubl-invoice", + "3.0.1"); // Valid from 01.02.2024 public static final DVRCoordinate VID_XRECHNUNG_CII_302 = PhiveRulesHelper.createCoordinate (GROUP_ID, "cii", "3.0.2"); + public static final DVRCoordinate VID_XRECHNUNG_EXTENSION_CII_302 = PhiveRulesHelper.createCoordinate (GROUP_ID_EXT, + "cii", + "3.0.2"); public static final DVRCoordinate VID_XRECHNUNG_UBL_CREDITNOTE_302 = PhiveRulesHelper.createCoordinate (GROUP_ID, "ubl-creditnote", "3.0.2"); public static final DVRCoordinate VID_XRECHNUNG_UBL_INVOICE_302 = PhiveRulesHelper.createCoordinate (GROUP_ID, "ubl-invoice", "3.0.2"); + public static final DVRCoordinate VID_XRECHNUNG_EXTENSION_UBL_INVOICE_302 = PhiveRulesHelper.createCoordinate (GROUP_ID_EXT, + "ubl-invoice", + "3.0.2"); private XRechnungValidation () {} @@ -212,7 +231,8 @@ private static ICommonsList > _getLis { // Same Schematrons as base VES, but modified customization final ICommonsList > ret = new CommonsArrayList <> (aSrc.executors () - .size () + 1); + .size () + + 1); for (final var aItem : aSrc) if (aItem instanceof ValidationExecutorSchematron) ret.add (((ValidationExecutorSchematron) aItem).getClone ().addCustomErrorDetails (aCustomErrors)); @@ -603,11 +623,12 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry final IValidationExecutorSet aVESUBLCreditNote1310 = aRegistry.getOfID (EN16931Validation.VID_UBL_CREDIT_NOTE_1310); final IValidationExecutorSet aVESUBLInvoice1310 = aRegistry.getOfID (EN16931Validation.VID_UBL_INVOICE_1310); - final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); - aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); - aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); - { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("CII-SR-453", CustomErrorDetails.of (EErrorLevel.ERROR)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESCII1310, aCustomErrorLevels); aNewList.add (PhiveRulesCIIHelper.createXSLT_CII_D16B (new ClassPathResource (sPrefix + @@ -621,6 +642,32 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry aNewList)); } { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-11", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-10", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-25", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-26", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("CII-SR-453", CustomErrorDetails.of (EErrorLevel.ERROR)); + + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESCII1310, + aCustomErrorLevels); + aNewList.add (PhiveRulesCIIHelper.createXSLT_CII_D16B (new ClassPathResource (sPrefix + + "3.0.0/XRechnung-CII-validation.xslt", + _getCL ()))); + + aRegistry.registerValidationExecutorSet (ValidationExecutorSet.create (VID_XRECHNUNG_EXTENSION_CII_300, + "XRechnung Extension CII " + + VID_XRECHNUNG_EXTENSION_CII_300.getVersionString (), + PhiveRulesHelper.createSimpleStatus (bNotDeprecated), + aNewList)); + } + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLCreditNote1310, aCustomErrorLevels); aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + @@ -633,7 +680,12 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry PhiveRulesHelper.createSimpleStatus (bNotDeprecated), aNewList)); } + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLInvoice1310, aCustomErrorLevels); aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + @@ -646,6 +698,30 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry PhiveRulesHelper.createSimpleStatus (bNotDeprecated), aNewList)); } + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-24", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-10", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-11", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-25", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-26", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CO-16", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("UBL-CR-470", CustomErrorDetails.of (EErrorLevel.INFO)); + + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLInvoice1310, + aCustomErrorLevels); + aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + + "3.0.0/XRechnung-UBL-validation.xslt", + _getCL ()))); + + aRegistry.registerValidationExecutorSet (ValidationExecutorSet.create (VID_XRECHNUNG_EXTENSION_UBL_INVOICE_300, + "XRechnung Extension_UBL Invoice " + + VID_XRECHNUNG_EXTENSION_UBL_INVOICE_300.getVersionString (), + PhiveRulesHelper.createSimpleStatus (bNotDeprecated), + aNewList)); + } } // v3.0.1 (based on rule release 2.0.2) @@ -655,11 +731,14 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry final IValidationExecutorSet aVESUBLCreditNote1311 = aRegistry.getOfID (EN16931Validation.VID_UBL_CREDIT_NOTE_1311); final IValidationExecutorSet aVESUBLInvoice1311 = aRegistry.getOfID (EN16931Validation.VID_UBL_INVOICE_1311); - final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); - aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); - aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); - { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("CII-SR-452", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-453", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-454", CustomErrorDetails.of (EErrorLevel.ERROR)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESCII1311, aCustomErrorLevels); aNewList.add (PhiveRulesCIIHelper.createXSLT_CII_D16B (new ClassPathResource (sPrefix + @@ -673,6 +752,36 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry aNewList)); } { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-11", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-10", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-24", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-25", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-26", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("CII-SR-452", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-453", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-454", CustomErrorDetails.of (EErrorLevel.ERROR)); + + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESCII1311, + aCustomErrorLevels); + aNewList.add (PhiveRulesCIIHelper.createXSLT_CII_D16B (new ClassPathResource (sPrefix + + "3.0.1/XRechnung-CII-validation.xslt", + _getCL ()))); + + aRegistry.registerValidationExecutorSet (ValidationExecutorSet.create (VID_XRECHNUNG_EXTENSION_CII_301, + "XRechnung ExtensionCII " + + VID_XRECHNUNG_EXTENSION_CII_301.getVersionString (), + PhiveRulesHelper.createSimpleStatus (bNotDeprecated), + aNewList)); + } + + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLCreditNote1311, aCustomErrorLevels); aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + @@ -685,7 +794,12 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry PhiveRulesHelper.createSimpleStatus (bNotDeprecated), aNewList)); } + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLInvoice1311, aCustomErrorLevels); aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + @@ -698,6 +812,30 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry PhiveRulesHelper.createSimpleStatus (bNotDeprecated), aNewList)); } + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-24", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-10", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-11", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-25", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-26", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CO-16", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("UBL-CR-470", CustomErrorDetails.of (EErrorLevel.INFO)); + + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLInvoice1311, + aCustomErrorLevels); + aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + + "3.0.1/XRechnung-UBL-validation.xslt", + _getCL ()))); + + aRegistry.registerValidationExecutorSet (ValidationExecutorSet.create (VID_XRECHNUNG_EXTENSION_UBL_INVOICE_301, + "XRechnung Extension UBL Invoice " + + VID_XRECHNUNG_EXTENSION_UBL_INVOICE_301.getVersionString (), + PhiveRulesHelper.createSimpleStatus (bNotDeprecated), + aNewList)); + } } // v3.0.2 (based on rule release 2.1.0) @@ -707,11 +845,14 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry final IValidationExecutorSet aVESUBLCreditNote1312 = aRegistry.getOfID (EN16931Validation.VID_UBL_CREDIT_NOTE_1312); final IValidationExecutorSet aVESUBLInvoice1312 = aRegistry.getOfID (EN16931Validation.VID_UBL_INVOICE_1312); - final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); - aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); - aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); - { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("CII-SR-452", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-453", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-454", CustomErrorDetails.of (EErrorLevel.ERROR)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESCII1312, aCustomErrorLevels); aNewList.add (PhiveRulesCIIHelper.createXSLT_CII_D16B (new ClassPathResource (sPrefix + @@ -725,6 +866,36 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry aNewList)); } { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-11", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-10", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-24", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-25", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-26", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("CII-SR-452", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-453", CustomErrorDetails.of (EErrorLevel.ERROR)); + aCustomErrorLevels.put ("CII-SR-454", CustomErrorDetails.of (EErrorLevel.ERROR)); + + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESCII1312, + aCustomErrorLevels); + aNewList.add (PhiveRulesCIIHelper.createXSLT_CII_D16B (new ClassPathResource (sPrefix + + "3.0.2/XRechnung-CII-validation.xslt", + _getCL ()))); + + aRegistry.registerValidationExecutorSet (ValidationExecutorSet.create (VID_XRECHNUNG_EXTENSION_CII_302, + "XRechnung Extension CII " + + VID_XRECHNUNG_EXTENSION_CII_302.getVersionString (), + PhiveRulesHelper.createSimpleStatus (bNotDeprecated), + aNewList)); + } + + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLCreditNote1312, aCustomErrorLevels); aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + @@ -737,7 +908,12 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry PhiveRulesHelper.createSimpleStatus (bNotDeprecated), aNewList)); } + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.WARN)); + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLInvoice1312, aCustomErrorLevels); aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + @@ -750,6 +926,30 @@ public static void initXRechnung (@Nonnull final IValidationExecutorSetRegistry PhiveRulesHelper.createSimpleStatus (bNotDeprecated), aNewList)); } + { + final ICommonsMap aCustomErrorLevels = new CommonsHashMap <> (); + aCustomErrorLevels.put ("BR-CL-21", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-23", CustomErrorDetails.of (EErrorLevel.WARN)); + aCustomErrorLevels.put ("BR-CL-24", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-10", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-11", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-25", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CL-26", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("BR-CO-16", CustomErrorDetails.of (EErrorLevel.INFO)); + aCustomErrorLevels.put ("UBL-CR-470", CustomErrorDetails.of (EErrorLevel.INFO)); + + final ICommonsList > aNewList = _getListWithCustomErrorDetails (aVESUBLInvoice1312, + aCustomErrorLevels); + aNewList.add (PhiveRulesUBLHelper.createXSLT_UBL21 (new ClassPathResource (sPrefix + + "3.0.2/XRechnung-UBL-validation.xslt", + _getCL ()))); + + aRegistry.registerValidationExecutorSet (ValidationExecutorSet.create (VID_XRECHNUNG_EXTENSION_UBL_INVOICE_302, + "XRechnung Extension UBL Invoice " + + VID_XRECHNUNG_EXTENSION_UBL_INVOICE_302.getVersionString (), + PhiveRulesHelper.createSimpleStatus (bNotDeprecated), + aNewList)); + } } } } diff --git a/phive-rules-xrechnung/src/test/java/com/helger/phive/xrechnung/mock/CTestFiles.java b/phive-rules-xrechnung/src/test/java/com/helger/phive/xrechnung/mock/CTestFiles.java index 25ac9425..9e80bb88 100644 --- a/phive-rules-xrechnung/src/test/java/com/helger/phive/xrechnung/mock/CTestFiles.java +++ b/phive-rules-xrechnung/src/test/java/com/helger/phive/xrechnung/mock/CTestFiles.java @@ -54,8 +54,10 @@ public static ICommonsList getAllTestFiles () { final ICommonsList ret = new CommonsArrayList <> (); for (final DVRCoordinate aESID : new DVRCoordinate [] { XRechnungValidation.VID_XRECHNUNG_CII_302, + XRechnungValidation.VID_XRECHNUNG_EXTENSION_CII_302, XRechnungValidation.VID_XRECHNUNG_UBL_CREDITNOTE_302, XRechnungValidation.VID_XRECHNUNG_UBL_INVOICE_302, + XRechnungValidation.VID_XRECHNUNG_EXTENSION_UBL_INVOICE_302, XRechnungValidation.VID_XRECHNUNG_CII_301, XRechnungValidation.VID_XRECHNUNG_UBL_CREDITNOTE_301, @@ -882,40 +884,58 @@ public static ICommonsList getAllMatchingTestFiles ret.add (new ClassPathResource (sPrefix + s)); } else - if (aVESID.equals (XRechnungValidation.VID_XRECHNUNG_UBL_CREDITNOTE_302)) + if (aVESID.equals (XRechnungValidation.VID_XRECHNUNG_EXTENSION_CII_302)) { - // None atm + final String sPrefix = sPrefix0 + "3.0.2/cii-ext/"; + for (final String s : new String [] { "04.05a-INVOICE_uncefact.xml" }) + ret.add (new ClassPathResource (sPrefix + s)); } else - if (aVESID.equals (XRechnungValidation.VID_XRECHNUNG_UBL_INVOICE_302)) + if (aVESID.equals (XRechnungValidation.VID_XRECHNUNG_UBL_CREDITNOTE_302)) { - final String sPrefix = sPrefix0 + "3.0.2/ubl-inv/"; - for (final String s : new String [] { "01.01a-INVOICE_ubl.xml", - "01.02a-INVOICE_ubl.xml", - "01.03a-INVOICE_ubl.xml", - "01.04a-INVOICE_ubl.xml", - "01.05a-INVOICE_ubl.xml", - "01.06a-INVOICE_ubl.xml", - "01.07a-INVOICE_ubl.xml", - "01.08a-INVOICE_ubl.xml", - "01.09a-INVOICE_ubl.xml", - "01.10a-INVOICE_ubl.xml", - "01.11a-INVOICE_ubl.xml", - "01.12a-INVOICE_ubl.xml", - "01.13a-INVOICE_ubl.xml", - "01.14a-INVOICE_ubl.xml", - "01.17a-INVOICE_ubl.xml", - "01.18a-INVOICE_ubl.xml", - "01.19a-INVOICE_ubl.xml", - "01.20a-INVOICE_ubl.xml", - "01.21a-INVOICE_ubl.xml", - "02.01a-INVOICE_ubl.xml", - "02.02a-INVOICE_ubl.xml", - "03.01a-INVOICE_ubl.xml", - "03.02a-INVOICE_ubl.xml", - "03.06a-INVOICE_ubl.xml" }) - ret.add (new ClassPathResource (sPrefix + s)); + // None atm } + else + if (aVESID.equals (XRechnungValidation.VID_XRECHNUNG_UBL_INVOICE_302)) + { + final String sPrefix = sPrefix0 + "3.0.2/ubl-inv/"; + for (final String s : new String [] { "01.01a-INVOICE_ubl.xml", + "01.02a-INVOICE_ubl.xml", + "01.03a-INVOICE_ubl.xml", + "01.04a-INVOICE_ubl.xml", + "01.05a-INVOICE_ubl.xml", + "01.06a-INVOICE_ubl.xml", + "01.07a-INVOICE_ubl.xml", + "01.08a-INVOICE_ubl.xml", + "01.09a-INVOICE_ubl.xml", + "01.10a-INVOICE_ubl.xml", + "01.11a-INVOICE_ubl.xml", + "01.12a-INVOICE_ubl.xml", + "01.13a-INVOICE_ubl.xml", + "01.14a-INVOICE_ubl.xml", + "01.17a-INVOICE_ubl.xml", + "01.18a-INVOICE_ubl.xml", + "01.19a-INVOICE_ubl.xml", + "01.20a-INVOICE_ubl.xml", + "01.21a-INVOICE_ubl.xml", + "02.01a-INVOICE_ubl.xml", + "02.02a-INVOICE_ubl.xml", + "03.01a-INVOICE_ubl.xml", + "03.02a-INVOICE_ubl.xml", + "03.06a-INVOICE_ubl.xml" }) + ret.add (new ClassPathResource (sPrefix + s)); + } + else + if (aVESID.equals (XRechnungValidation.VID_XRECHNUNG_EXTENSION_UBL_INVOICE_302)) + { + final String sPrefix = sPrefix0 + "3.0.2/ubl-inv-ext/"; + for (final String s : new String [] { "04.01a-INVOICE_ubl.xml", + "04.02a-INVOICE_ubl.xml", + "04.03a-INVOICE_ubl.xml", + "04.04a-INVOICE_ubl.xml", + "05.01a-INVOICE_ubl.xml" }) + ret.add (new ClassPathResource (sPrefix + s)); + } return ret; } } diff --git a/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/cii-ext/04.05a-INVOICE_uncefact.xml b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/cii-ext/04.05a-INVOICE_uncefact.xml new file mode 100644 index 00000000..66c6ed0c --- /dev/null +++ b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/cii-ext/04.05a-INVOICE_uncefact.xml @@ -0,0 +1,173 @@ + + + + + + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + + + urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0 + + + + 2020-1 + 380 + + 20200103 + + + Eine Testrechnung für das Projekt DiGA-Rechnung. + + + + + + TEST_POSITION_01 + + + + 12345678 + + ABCDEFGHIJKLMNOP + + Tinnitus Rex + Ein Artikel für Testrechnungen. + + + + + 100.00 + + + + + 1 + + + + VAT + S + 19.00 + + + 100.00 + + + + + Leitweg-ID + + TEST_RECHNUNGSSTELLER + + 987654321 + Rechnungssteller + + Max Mustermann + + +49 000 001 0001 + + + max.mustermann@rechnungssteller.de + + + + 01234 + Musterstraße 1 + Berlin + DE + + + seller@email.de + + + DE 123 456 789 + + + + + 123456789 + Rechnungsempfänger + + 01234 + Musterstraße 2 + Berlin + DE + + + buyer@info.de + + + + + + + + 20200102 + + + + + + + + EUR + + + 987654322 + Payee + + + + 30 + + + DE75512108001245126199 + + + + 19.00 + VAT + 100.00 + S + 19.00 + + + + 20200117 + + + + 100.00 + 100.00 + 19.00 + 119.00 + 119.00 + + + + diff --git a/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.01a-INVOICE_ubl.xml b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.01a-INVOICE_ubl.xml new file mode 100644 index 00000000..d496c42b --- /dev/null +++ b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.01a-INVOICE_ubl.xml @@ -0,0 +1,391 @@ + + urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 12345 + 2019-05-15 + 380 + EUR + 12345678-12345-83 + + 2019-02-01 + 2019-05-07 + + + 123 + + + + seller@email.de + + M. Meier + + + Hauptstraße 2 + Musterstadt + 12345 + + DE + + + + DE/12/345/67890 + + VAT + + + + M. Meier Handwerk GbR + 1122334455 + + + M. Meier Handwerk GbR + 010/12345 + info@m-meier.de + + + + + + buyer@info.de + + 345LA5324 + + + Dorfplatz 3 + Musterort + 54321 + + DE + + + + Beispielkunde + + + + + 31 + + DE091111222233334444 + + + + Zahlbar innerhalb 14 Tagen nach Erhalt der Rechnung. + + + 2382 + + 12536.84 + 2382 + + S + 19 + + VAT + + + + + + 12536.84 + 12536.84 + 14918.84 + 10000.0 + 4918.84 + + + 1 + 1 + 818.04 + + Sanitär und Zubehör + + S + 19 + + VAT + + + + + 818.04 + 1 + + + 1 1 + 1 + 335.79 + + Demontage Sanitär + + S + 19 + + VAT + + + + + 335.79 + 1 + + + 1 1 1 + 149 + 193.70 + + Demontage TW-Rohrleitung DN 12-25 + + S + 19 + + VAT + + + + + 1.30 + 1 + + + + 1 1 2 + 32.50 + 48.75 + + Demontage SML DN 100 + + S + 19 + + VAT + + + + + 1.50 + 1 + + + + 1 1 3 + 71.80 + 93.34 + + Demontage AW-Rohrleitungen Kunststoff PP bis DN100 + + S + 19 + + VAT + + + + + 1.30 + 1 + + + + + 1 2 + 1 + 482.25 + + Abwasserleitungen und Zubehör + + S + 19 + + VAT + + + + + 482.25 + 1 + + + 1 2 1 + 9.5 + 99.75 + + Abwasserleitung HT-PP DN 100 + + S + 19 + + VAT + + + + + 10.50 + 1 + + + + 1 2 2 + 45.0 + 382.50 + + Abwasserleitung HT-PP DN 50 + + S + 19 + + VAT + + + + + 8.50 + 1 + + + + + + 2 + 1 + 11718.8 + + Heizung und Zubehör + + S + 19 + + VAT + + + + + 11718.8 + 1 + + + 2 1 + 1 + 1324 + + Demontage Heizung + + S + 19 + + VAT + + + + + 1324 + 1 + + + 2 1 1 + 20 + 700 + + Entleeren der Heizungsanlage, teilnetz + + S + 19 + + VAT + + + + + 35 + 1 + + + + 2 1 2 + 52 + 624 + + Demontage Flachheizkörpers + + S + 19 + + VAT + + + + + 12 + 1 + + + + + 2 2 + 1 + 10394.8 + + Heizflächen und Zubehör + + S + 19 + + VAT + + + + + 10394.8 + 1 + + + 2 2 1 + 52 + 10202.4 + + Flachheizkörper Stahl profiliert Seitent. H 300mm L -500mm Typ22 + + S + 19 + + VAT + + + + + 196.20 + 1 + + + + 2 2 2 + 104 + 192.4 + + Einzelrosette aus Kunststoff, weiß + + S + 19 + + VAT + + + + + 1.85 + 1 + + + + + \ No newline at end of file diff --git a/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.02a-INVOICE_ubl.xml b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.02a-INVOICE_ubl.xml new file mode 100644 index 00000000..a81d07f6 --- /dev/null +++ b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.02a-INVOICE_ubl.xml @@ -0,0 +1,161 @@ + + urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 12345 + 2019-05-15 + 380 + EUR + 12345678-12345-83 + + 2019-02-01 + 2019-05-07 + + + 123 + + + + seller@email.de + + ID123456 + + + [Seller trading name] + + + [Seller address line 1] + [Seller city] + 12345 + + DE + + + + ATU123456789 + + VAT + + + + [Seller name] + 1122334455 + + + Kundencenter + 0800-12345678 + kundencenter@sellder.de + + + + + + buyer@info.de + + 345LA5324 + + + [Buyer name] + + + [Buyer address line 1] + [Buyer city] + 12345 + + DE + + + + [Buyer name] + + + + + 59 + + + [Mandate reference identifier] + + DE75512108001245126199 + + + + + Zahlbar innerhalb 14 Tagen nach Erhalt der Rechnung. + + + 5.27 + + 27.72 + 5.27 + + S + 19 + + VAT + + + + + + 27.72 + 27.72 + 32.99 + 32.99 + + + 1 + 1 + 27.72 + + PDD + + S + 19 + + VAT + + + + + 27.72 + + + 1 1 + 28 + 12.32 + + Hose Bernhard ws UKD + + S + 19 + + VAT + + + + + 0.44 + + + + 1 2 + 35 + 15.40 + + Kasack Bodo blau UKD + + S + 19 + + VAT + + + + + 0.44 + + + + diff --git a/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.03a-INVOICE_ubl.xml b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.03a-INVOICE_ubl.xml new file mode 100644 index 00000000..4ce57a29 --- /dev/null +++ b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.03a-INVOICE_ubl.xml @@ -0,0 +1,1234 @@ + + urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 12345 + 2019-05-15 + 877 + Bereits gezahlte Rechnungen zur Schlussrechnung (insgesamt bereits gezahlter + Brutto-Betrag: 1.064.317,34): Zahlung vom 23.01.2020 zur Rg. Nr. 1/10416097; 19,00 % MwSt; + Netto-Betrag 5.444,00; MwSt.-Betrag 1.034,36; Brutto-Betrag 6.478,36 Zahlung vom 23.06.2020 zur + Rg. Nr. 24/9999999; 19,00 % MwSt; Netto-Betrag 788.940,32; MwSt.-Betrag 149.898,66; + Brutto-Betrag 938.838,98 Zahlung vom 23.06.2020 zur Rg. Nr. 25/9999999; 19,00 % MwSt; + Netto-Betrag 100.000,00; MwSt.-Betrag 19.000,00; Brutto-Betrag 119.000,00 + Abrufnummer: XXXX + Kettennummer: YYYYY + Kostenträger: 01 Leistungen Bund + EUR + 12345678-12345-83 + + 2019-02-01 + 2019-05-07 + + + 123 + Bestell-/Auftrags.-Nr. XXX + + + + 1/10416097 + + + + + 24/9999999 + + + + + 25/9999999 + + + + + seller@email.de + + M. Meier + + + Hauptstraße 2 + Musterstadt + 12345 + + DE + + + + DE/12/345/67890 + + VAT + + + + M. Meier Handwerk GbR + 1122334455 + + + M. Meier Handwerk GbR + 010/12345 + info@m-meier.de + + + + + + buyer@info.de + + 345LA5324 + + + Dorfplatz 3 + Musterort + 54321 + + DE + + + + Beispielkunde + + + + + 31 + + DE091111222233334444 + + + + Zahlbar innerhalb 14 Tagen nach Erhalt der Rechnung. + + + false + 104 + Standard - Gewährleistungseinbehalt auf Rechnungsbetrag + (Leistungssumme abzgl. Bauumlage abzgl. Bauleistungsversicherung) + 1.25 + 255384.19 + 20430735.11 + + E + 0 + + VAT + + + + + false + 104 + Standard - Bauumlage auf die + Leistungssumme + 0.20 + 41483.73 + 20741863.06 + + S + 19 + + VAT + + + + + false + 104 + Standard - Bauleistungsversicherung auf die + Leistungssumme + 1.30 + 269644.22 + 20741863.06 + + E + 0 + + VAT + + + + + false + 104 + Nachlass + 2 + 423303.33 + 21165166.39 + + S + 19 + + VAT + + + + + 3933072.07 + + 20700379.33 + 3933072.07 + + S + 19 + + VAT + + + + + -525028.41 + 0 + + E + 0 + Ausnahmegrund + + VAT + + + + + + 21165166.39 + 20175350.92 + 24108422.99 + 989815.47 + 1064317.34 + 23044105.65 + + + 1 + 1 + 21165166.39 + + Leistungssumme + + S + 19 + + VAT + + + + + 21165166.39 + + + 3. + 21165166.39 + + Ortbetonstützwand Los 15/16 bahnrechts, km 5,910.. + + S + 19 + + VAT + + + + + 20741863.06 + + + 3.1. + 19715327.10 + + Baustelleneinrichtung + + S + 19 + + VAT + + + + + 3.1.10. + 210 + 19715327.10 + + Baustelle einrichten + + S + 19 + + VAT + + + + + 93882.51 + 1 + + + + + 3.3. + 42227.17 + + Abbruch / Rückbau + + S + 19 + + VAT + + + + + 3.3.70. + 1025.5 + 11813.76 + + Asphalt sägen + + S + 19 + + VAT + + + + + 11.52 + 1 + + + + 3.3.80. + 1643.968 + 30413.41 + + Asphaltfläche aufnehmen + + S + 19 + + VAT + + + + + 18.5 + 1 + + + + + 3.4. + 542076.10 + + Erdarbeiten + + S + 19 + + VAT + + + + + 3.4.10. + 86.561 + 13488.80 + + Boden Suchgraben lösen, lagern BK 3/5 + + S + 19 + + VAT + + + + + 155.83 + 1 + + + + 3.4.20. + 1 + 3000 + + Aufmaß und Dokumentation + + S + 19 + + VAT + + + + + 3000 + 1 + + + + 3.4.40. + 1035.278 + 44030.37 + + Boden aus Dammböschung abtragen (TE) + + S + 19 + + VAT + + + + + 42.53 + 1 + + + + 3.4.60. + 4589.754 + 252436.47 + + Boden liefern für Dammböschung, in den Auftragsb.. einbauen + + S + 19 + + VAT + + + + + 55 + 1 + + + + 3.4.90. + 80.748 + 5650.75 + + Geeigneten Boden für Randweg liefern und profilg.. + + S + 19 + + VAT + + + + + 69.98 + 1 + + + + 3.4.100. + 416.828 + 24105.16 + + Kabel-/ Leitungsgraben herstellen + + S + 19 + + VAT + + + + + 57.83 + 1 + + + + 3.4.110. + 1366.486 + 52090.45 + + Erdarbeiten für Fundament herstellen + + S + 19 + + VAT + + + + + 38.12 + 1 + + + + 3.4.120. + 1 + 2032.60 + + *** Bedarfsposition mit GB Bereitstellungsfläche herstellen + + S + 19 + + VAT + + + + + 2032.60 + 1 + + + + 3.4.130. + 5081.928 + 82632.15 + + Bereitstellen des Aushubmaterials + + S + 19 + + VAT + + + + + 16.26 + 1 + + + + 3.4.140. + 5081.928 + 62609.35 + + Entsorgung von Aushubmaterial mit Z0-Qualität .. + + S + 19 + + VAT + + + + + 12.32 + 1 + + + + + 3.5. + 217257.09 + + Steinkorbverkleidung / Betonwand + + S + 19 + + VAT + + + + + 3.5.110. + 179.949 + 119815.44 + + Beton einschl. Schalung Stützwände C 30/37 + + S + 19 + + VAT + + + + + 665.83 + 1 + + + + 3.5.130. + 54.914 + 83552.75 + + Betonstahl einbauen + + S + 19 + + VAT + + + + + 1521.52 + 1 + + + + 3.5.150. + 379.827 + 7250.90 + + Sauberkeitsschicht d= 10 cm + + S + 19 + + VAT + + + + + 19.09 + 1 + + + + 3.5.160. + 45.500 + 6638.00 + + Abschalelement incl. Abschluß-Fugenband + + S + 19 + + VAT + + + + + 145.89 + 1 + + + + + 3.6. + 396839.57 + + Bohrpfahlgründung, Stahlbau + + S + 19 + + VAT + + + + + 3.6.5. + 1 + 38362.40 + + Geräteeinsatz für Herst. Ortbetonbohrpfähle + + S + 19 + + VAT + + + + + 38362.40 + 1 + + + + 3.6.6. + 83.150 + 10491.04 + + Leerbohrung + + S + 19 + + VAT + + + + + 126.17 + 1 + + + + 3.6.8. + 954.000 + 138120.12 + + Ortbetonbohrpfahl herstellen + + S + 19 + + VAT + + + + + 144.78 + 1 + + + + 3.6.9. + 159 + 30162.30 + + Ortbeton-Pfahlkopf herrichten + + S + 19 + + VAT + + + + + 189.70 + 1 + + + + 3.6.90. + 58.250 + 74984.06 + + Betonstahl einbauen Ortbetonbohrpfahl + + S + 19 + + VAT + + + + + 1287.28 + 1 + + + + 3.6.110. + 2.500 + 11477.25 + + *** Bedarfsposition mit GB Stillstandskosten Bohrgerät + + S + 19 + + VAT + + + + + 4590.90 + 1 + + + + 3.6.140. + 286.050 + 69770.46 + + Geschweißtes Stahlgeländer + + S + 19 + + VAT + + + + + 243.91 + 1 + + + + 3.6.160. + 148 + 5014.24 + + Geländer-Verankerung an Kopfbalken herstellen + + S + 19 + + VAT + + + + + 33.88 + 1 + + + + 3.6.170. + 112 + 6829.76 + + Erdungslasche für Geländer + + S + 19 + + VAT + + + + + 60.98 + 1 + + + + 3.6.190. + 286.05 + 3875.98 + + Oberfläche mit metallischem Überzug versehen. + + S + 19 + + VAT + + + + + 13.55 + 1 + + + + 3.6.200. + 286.05 + 3875.98 + + Oberfläche zwischenbeschichten. + + S + 19 + + VAT + + + + + 13.55 + 1 + + + + 3.6.210. + 286.05 + 3875.98 + + Oberfläche deckbeschichten, Farbton nach Angaben.. + + S + 19 + + VAT + + + + + 13.55 + 1 + + + + + 3.7. + 150109.20 + + Entwässerung + + S + 19 + + VAT + + + + + 3.7.10. + 709.90 + 128648.08 + + Tiefenentwässerung + + S + 19 + + VAT + + + + + 181.22 + 1 + + + + 3.7.50. + 18 + 16447.50 + + Reinigungs- und Inspektionsschacht (Durchgangssc.. Tiefenentwässerung hinter + Spundwand + + S + 19 + + VAT + + + + + 913.75 + 1 + + + + 3.7.60. + 2 + 4065.10 + + Übergangsschacht Beton-/Stahlbetonfertigteil DN1.. + + S + 19 + + VAT + + + + + 2032.55 + 1 + + + + 3.7.90. + 2 + 948.52 + + Anschluß an bestehenden Schacht + + S + 19 + + VAT + + + + + 474.26 + 1 + + + + + 3.8. + 3612.84 + + Wege + + S + 19 + + VAT + + + + + 3.8.20. + 380.70 + 3612.84 + + Fugenanschluss an Beton + + S + 19 + + VAT + + + + + 9.49 + 1 + + + + + 3.9. + 36415.06 + + Sonstiges + + S + 19 + + VAT + + + + + 3.9.5. + 1 + 725.45 + + Baustelleneinrichtung Mattenverlegung + + S + 19 + + VAT + + + + + 725.45 + 1 + + + + 3.9.7. + 1765.105 + 8649.01 + + Auslegen der Erosionsschutzmatten + + S + 19 + + VAT + + + + + 4.90 + 1 + + + + 3.9.8. + 1 + 554.39 + + Baustelleneinrichtung Spritzfass + + S + 19 + + VAT + + + + + 554.39 + 1 + + + + 3.9.9. + 1765.105 + 1270.88 + + Rasenansaat herstellen + + S + 19 + + VAT + + + + + 0.72 + 1 + + + + 3.9.9.1 + 1765.105 + 123.56 + + Zulage für Mehrpreis Wunschlieferant Fa. Rieger .. + + S + 19 + + VAT + + + + + 0.07 + 1 + + + + 3.9.10. + 430 + 6991.80 + + Kabel während der Bauzeit sichern + + S + 19 + + VAT + + + + + 16.26 + 1 + + + + 3.9.20. + 14 + 2737.84 + + Fundament für Beleuchtungsmast + + S + 19 + + VAT + + + + + 195.56 + 1 + + + + 3.9.40. + 14 + 2371.32 + + Lampenmasten (neu) einbauen. + + S + 19 + + VAT + + + + + 169.38 + 1 + + + + 3.9.40. + 14 + 4173.54 + + Leuchtkörper einbauen. + + S + 19 + + VAT + + + + + 298.11 + 1 + + + + 3.9.60. + 1018.160 + 8817.27 + + Leerrohr DN 110 PVC + + S + 19 + + VAT + + + + + 8.66 + 1 + + + + + 3.10. + 61302.26 + + Ausführungsplanung + + S + 19 + + VAT + + + + + 3.10.10. + 1 + 46518.26 + + *** Nachtragsposition zum Nachtrag 1 Ausführungsstatik und Zeichnungen für das + Bauwerk + + S + 19 + + VAT + + + + + 46518.26 + 1 + + + + 3.10.160. + 1 + 14784.00 + + *** Nachtragsposition zum Nachtrag 1 Bauausführungsvermessung + + S + 19 + + VAT + + + + + 14784.00 + 1 + + + + + + diff --git a/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.04a-INVOICE_ubl.xml b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.04a-INVOICE_ubl.xml new file mode 100644 index 00000000..34e78449 --- /dev/null +++ b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/04.04a-INVOICE_ubl.xml @@ -0,0 +1,266 @@ + + + urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 17794 + 2021-07-14 + 877 + EUR + 992-90009-96 + + + seller@email.de + + Bahnhofstraße 46 + Gerüstbau Ort + 12345 + + DE + + + + DE814060619 + + VAT + + + + Test Gerüstbau GmbH + 176/77/1508 + + + Frau Test + 0123/456 78-0 + test@test.test + + + + + + buyer@info.de + + 14217 + + + Am Mühlberg 4 + Gerüstbau Ort + 12345 + + DE + + + + Bau Auftraggeber + + + + + 58 + + DE63622515500220028855 + + + + Zahlung ohne Abzug bis zum 13.08.2021 bei uns + eingehend. + + + 666.67 + + 3508.77 + 666.67 + + S + 19 + + VAT + + + + + + 3508.77 + 3508.77 + 4175.44 + 4175.44 + + + 1 + 1 + 3508.77 + + Arbeitsgerüst + + S + 19.00 + + VAT + + + + + 3508.77 + + + 1.02 + 1 + 3508.77 + + Zwischensumme + + S + 19.00 + + VAT + + + + + 1.02.005 + 277.290 + 2024.22 + + Fassadengerüst, Gr.3 + + S + 19.00 + + VAT + + + + + 7.30 + + + + 1.02.006 + 3882.083 + 465.85 + + Fassadengerüst, Gebrauchsüberlassung + + S + 19.00 + + VAT + + + + + 0.12 + + + + 1.02.007 + 5.210 + 119.57 + + Gerüstträger für Durchfahrt einbauen + + S + 19.00 + + VAT + + + + + 22.95 + + + + 1.02.008 + 72.932 + 32.09 + + Gerüstträger für Durchf., Gebrauchsüberl. + + S + 19.00 + + VAT + + + + + 0.44 + + + + 1.02.009 + 1.000 + 216.00 + + Treppenturm/Geschoss, Außengerüst + + S + 19.00 + + VAT + + + + + 216.00 + + + + 1.02.010 + 18.000 + 72.00 + + Treppenturm Gebrauchsüberl. + + S + 19.00 + + VAT + + + + + 4.00 + + + + 1.02.011 + 112.000 + 453.60 + + Systemkonsolbelag 0,30 m + + S + 19.00 + + VAT + + + + + 4.05 + + + + 1.02.012 + 1568.000 + 125.44 + + Vorhaltung Konsolbelag 0,30 + + S + 19.00 + + VAT + + + + + 0.08 + + + + + diff --git a/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/05.01a-INVOICE_ubl.xml b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/05.01a-INVOICE_ubl.xml new file mode 100644 index 00000000..e757f1c5 --- /dev/null +++ b/phive-rules-xrechnung/src/test/resources/external/test-files/3.0.2/ubl-inv-ext/05.01a-INVOICE_ubl.xml @@ -0,0 +1,167 @@ + + + urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0#conformant#urn:xeinkauf.de:kosit:extension:xrechnung_3.0 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 123456XX + 2016-04-04 + 380 + #ADU#Es gelten unsere Allgem. Geschäftsbedingungen, die Sie unter […] finden. + EUR + 04011000-12345-34 + + + seller@email.de + + [Seller trading name] + + + [Seller address line 1] + [Seller city] + 12345 + + DE + + + + DE 123456789 + + VAT + + + + [Seller name] + [HRA-Eintrag] + 123/456/7890, HRA-Eintrag in […] + + + nicht vorhanden + +49 1234-5678 + seller@email.de + + + + + + buyer@info.de + + [Buyer identifier] + + + [Buyer address line 1] + [Buyer city] + 12345 + + DE + + + + [Buyer name] + + + + + 58 + + + DE75512108001245126199 + + + + Zahlbar sofort ohne Abzug. + + + + + MobilesBezahlen + + 19.96 + + Mobiles Bezahlen (Brutto-Forderung für Fremdleistungen) + + + + + MobilesBezahlen + + 10.00 + + Mobiles Bezahlen (Brutto-Forderung für Fremdleistungen) + + + + 22.04 + + 314.86 + 22.04 + + S + 7 + + VAT + + + + + + 314.86 + + 314.86 + + 336.9 + + 366.86 + + + Zeitschrift [...] + Die letzte Lieferung im Rahmen des abgerechneten Abonnements erfolgt in 12/2016 Lieferung erfolgt / erfolgte direkt vom Verlag + 1 + 288.79 + + 2016-01-01 + 2016-12-31 + + + 6171175.1 + + + Zeitschrift Inland + Zeitschrift [...] + + 246 + + + 0721-880X + + + S + 7 + + VAT + + + + + 288.79 + + + + Porto + Versandkosten + 1 + 26.07 + + Porto + Versandkosten + + S + 7 + + VAT + + + + + 26.07 + + + \ No newline at end of file