diff --git a/.github/workflows/pdk-dev.yaml b/.github/workflows/pdk-dev.yaml index 8838e38..a4784ba 100644 --- a/.github/workflows/pdk-dev.yaml +++ b/.github/workflows/pdk-dev.yaml @@ -2,8 +2,8 @@ name: PDK-Dev on: push: - branches: - - Develop + branches-ignore: + - main jobs: build: @@ -23,17 +23,17 @@ jobs: - name: Login with docker to ECR id: login-ecr - run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws + run: aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin 070318080841.dkr.ecr.eu-west-1.amazonaws.com - name: Pull docker image - run: docker pull public.ecr.aws/openpeppol/pdk:latest + run: docker pull 070318080841.dkr.ecr.eu-west-1.amazonaws.com/pdk:latest - name: Prepare PDK - run: docker run --rm -i -v $(pwd):/src public.ecr.aws/openpeppol/pdk:latest pdk -T + run: docker run --rm -i -v $(pwd):/src 070318080841.dkr.ecr.eu-west-1.amazonaws.com/pdk:latest pdk -T - name: Run PDK - run: docker run --rm -i -v $(pwd):/src public.ecr.aws/openpeppol/pdk:latest pdk + run: docker run --rm -i -v $(pwd):/src 070318080841.dkr.ecr.eu-west-1.amazonaws.com/pdk:latest pdk - name: Publish to Test-Docs env: @@ -41,3 +41,4 @@ jobs: AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: | aws s3 sync --acl public-read --region eu-west-1 target/site ${{ secrets.AWS_S3_PATH }}/reporting/${GITHUB_REF#refs/heads/} + \ No newline at end of file diff --git a/.github/workflows/pdk.yaml b/.github/workflows/pdk.yaml index 4068cef..e18933b 100644 --- a/.github/workflows/pdk.yaml +++ b/.github/workflows/pdk.yaml @@ -14,7 +14,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v2 - + - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@13d241b293754004c80624b5567555c4a39ffbe3 with: @@ -24,16 +24,17 @@ jobs: - name: Login with docker to ECR id: login-ecr - run: aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws + run: aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin 070318080841.dkr.ecr.eu-west-1.amazonaws.com + - name: Pull docker image - run: docker pull public.ecr.aws/openpeppol/pdk:latest + run: docker pull 070318080841.dkr.ecr.eu-west-1.amazonaws.com/pdk:latest - name: Prepare PDK - run: docker run --rm -i -v $(pwd):/src public.ecr.aws/openpeppol/pdk:latest pdk -T + run: docker run --rm -i -v $(pwd):/src 070318080841.dkr.ecr.eu-west-1.amazonaws.com/pdk:latest pdk -T - name: Run PDK - run: docker run --rm -i -v $(pwd):/src public.ecr.aws/openpeppol/pdk:latest pdk + run: docker run --rm -i -v $(pwd):/src 070318080841.dkr.ecr.eu-west-1.amazonaws.com/pdk:latest pdk - name: Publish to Test-Docs env: diff --git a/.vscode/json-schema/codelist-subset.json b/.vscode/json-schema/codelist-subset.json deleted file mode 100644 index b659d55..0000000 --- a/.vscode/json-schema/codelist-subset.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "required": [ - "abstract", - "codes" - ], - "properties": { - "name": { - "$ref": "#/definitions/string_translatable" - }, - "description": { - "$ref": "#/definitions/string_translatable" - }, - "abstract": { - "type": "string" - }, - "codes": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - } - } - } - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/codelist.json b/.vscode/json-schema/codelist.json deleted file mode 100644 index a9a6fcb..0000000 --- a/.vscode/json-schema/codelist.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "required": [ - "metadata", - "content" - ], - "properties": { - "metadata": { - "$ref": "#/definitions/metadata" - }, - "content": { - "$ref": "#/definitions/content" - } - } - }, - "metadata": { - "type": "object", - "additionalProperties": false, - "required": [ - "title", - "identifier", - "version", - "language" - ], - "properties": { - "title": { - "$ref": "#/definitions/string_translatable" - }, - "description": { - "$ref": "#/definitions/string_translatable" - }, - "identifier": { - "$ref": "#/definitions/identifier" - }, - "version": { - "$ref": "#/definitions/version" - }, - "language": { - "type": "string" - }, - "agency": { - "type": "string" - }, - "subset": { - "$ref": "#/definitions/subset" - }, - "translations": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "subset": { - "type": "object" - }, - "content": { - "type": "array", - "items": { - "$ref": "#/definitions/code" - } - }, - "code": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "$ref": "#/definitions/identifier" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "description": { - "$ref": "#/definitions/string_translatable" - } - } - }, - "version": { - "type": "object", - "properties": { - "identifier": { - "$ref": "#/definitions/identifier" - }, - "status": { - "type": "string", - "enum": [ - "draft", - "review", - "published" - ] - } - } - }, - "identifier": { - "oneOf": [ - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/imports.json b/.vscode/json-schema/imports.json deleted file mode 100644 index e0d2672..0000000 --- a/.vscode/json-schema/imports.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "additionalProperties": false, - "type": "array", - "items": { - "type": "object", - "required": [ - "path" - ], - "additionalProperties": false, - "properties": { - "path": { - "type": "string" - }, - "as": { - "type": "string" - }, - "from": { - "type": "string" - } - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/library.json b/.vscode/json-schema/library.json deleted file mode 100644 index 7362402..0000000 --- a/.vscode/json-schema/library.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "title": "Library configuration", - "patternProperties": { - "^.+$": { - "$ref": "#/definitions/definition" - } - } - }, - "definition": { - "title": "Library definition", - "type": "object", - "additionalProperties": false, - "required": [ - "url" - ], - "properties": { - "url": { - "title": "URL used to download library", - "type": "string" - }, - "path": { - "title": "Path inside library to be extracted", - "type": "string" - }, - "properties": { - "$ref": "#/definitions/properties" - } - } - }, - "properties": { - "title": "Properties used in url or path", - "type": "object", - "patternProperties": { - "^.+$": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - } - } - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/process.json b/.vscode/json-schema/process.json deleted file mode 100644 index a12a42d..0000000 --- a/.vscode/json-schema/process.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "additionalProperties": false, - "properties": { - "hugo": { - "type": "object", - "title": "Hugo configuration" - }, - "title": { - "title": "Process title", - "$ref": "#/definitions/string_translatable" - }, - "description": { - "title": "Process description", - "$ref": "#/definitions/string_translatable" - }, - "version": { - "type": "string", - "title": "Process version" - }, - "docs": { - "patternProperties": { - "^.*$": { - "type": "string" - } - } - }, - "features": { - "type": "object", - "additionalProperties": false, - "properties": { - "asciidoctor-pdf": { - "type": "boolean", - "default": false - } - } - }, - "status": { - "type": "string", - "enum": [ - "draft", - "active", - "legacy", - "disabled" - ] - } - } - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/project.json b/.vscode/json-schema/project.json deleted file mode 100644 index 7fac7e7..0000000 --- a/.vscode/json-schema/project.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "additionalProperties": false, - "properties": { - "hugo": { - "title": "Hugo configuration", - "type": "object" - }, - "languages": { - "type": "array", - "items": { - "$ref": "#/definitions/language" - } - } - } - }, - "language": { - "type": "object", - "properties": { - "code": { - "type": "string" - }, - "title": { - "type": "string" - } - } - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/schematron-meta.json b/.vscode/json-schema/schematron-meta.json deleted file mode 100644 index 133a91d..0000000 --- a/.vscode/json-schema/schematron-meta.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "properties": { - "metadata": { - "$ref": "#/definitions/metadata" - }, - "changes": { - "$ref": "#/definitions/changes" - } - } - }, - "metadata": { - "type": "object", - "additionalProperties": false, - "properties": { - "title": { - "$ref": "#/definitions/string_translatable" - }, - "description": { - "$ref": "#/definitions/string_translatable" - } - } - }, - "changes": { - "type": "object", - "patternProperties": { - "^[^ ]+$": { - "$ref": "#/definitions/change" - } - } - }, - "change": { - "type": "object", - "additionalProperties": false, - "properties": { - "reference": { - "$ref": "#/definitions/references" - } - } - }, - "references": { - "type": "object", - "additionalProperties": false, - "properties": { - "codelist": { - "$ref": "#/definitions/reference" - }, - "rule": { - "$ref": "#/definitions/reference" - }, - "syntax": { - "$ref": "#/definitions/reference" - } - } - }, - "reference": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.{2,5}$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/semantic-model-content.json b/.vscode/json-schema/semantic-model-content.json deleted file mode 100644 index 28c639a..0000000 --- a/.vscode/json-schema/semantic-model-content.json +++ /dev/null @@ -1,282 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "oneOf": [ - { - "$ref": "#/definitions/item" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/item" - } - } - ] - }, - "item": { - "oneOf": [ - { - "$ref": "#/definitions/item_element" - }, - { - "$ref": "#/definitions/item_group" - }, - { - "$ref": "#/definitions/include" - } - ] - }, - "item_element": { - "type": "object", - "additionalProperties": false, - "required": [ - "id", - "name", - "cardinality", - "value" - ], - "properties": { - "id": { - "$ref": "#/definitions/id" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "value": { - "$ref": "#/definitions/value" - }, - "note": { - "$ref": "#/definitions/string_translatable" - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "requirement": { - "$ref": "#/definitions/requirements" - }, - "attribute": { - "type": "array", - "items": { - "$ref": "#/definitions/item_attribute" - } - } - } - }, - "item_attribute": { - "type": "object", - "additionalProperties": false, - "required": [ - "id", - "name", - "cardinality", - "value" - ], - "properties": { - "id": { - "$ref": "#/definitions/id" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "value": { - "$ref": "#/definitions/value" - }, - "note": { - "$ref": "#/definitions/string_translatable" - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "requirement": { - "$ref": "#/definitions/requirements" - } - } - }, - "item_group": { - "type": "object", - "additionalProperties": false, - "required": [ - "id", - "name", - "cardinality", - "children" - ], - "properties": { - "id": { - "$ref": "#/definitions/id" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "value": { - "$ref": "#/definitions/value" - }, - "note": { - "$ref": "#/definitions/string_translatable" - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "requirement": { - "$ref": "#/definitions/requirements" - }, - "children": { - "type": "array", - "items": { - "$ref": "#/definitions/item" - } - } - } - }, - "include": { - "type": "object", - "additionalProperties": false, - "properties": { - "include": { - "type": "string" - } - } - }, - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "cardinality": { - "anyOf": [ - { - "type": "string", - "pattern": "^[A-Z]+$" - }, - { - "type": "string", - "enum": [ - "0..1", - "1..1", - "0..n", - "1..n" - ] - }, - { - "type": "string", - "pattern": "^[\\d]+\\.\\.[\\dn]+$" - } - ] - }, - "requirements": { - "oneOf": [ - { - "$ref": "#/definitions/requirement" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/requirement" - } - } - ] - }, - "requirement": { - "type": "string" - }, - "value": { - "type": "object", - "additionalProperties": false, - "required": [ - "datatype" - ], - "properties": { - "datatype": { - "type": "string" - }, - "default": { - "$ref": "#/definitions/some_value" - }, - "example": { - "$ref": "#/definitions/some_value" - }, - "fixed": { - "$ref": "#/definitions/some_value" - }, - "codelist": { - "$ref": "#/definitions/some_value_array" - }, - "max_length": { - "type": "integer" - }, - "min_length": { - "type": "integer" - }, - "pattern": { - "type": "string" - } - } - }, - "some_value_array": { - "oneOf": [ - { - "$ref": "#/definitions/some_value" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/some_value" - } - } - ] - }, - "some_value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/semantic-model-meta.json b/.vscode/json-schema/semantic-model-meta.json deleted file mode 100644 index 5447284..0000000 --- a/.vscode/json-schema/semantic-model-meta.json +++ /dev/null @@ -1,237 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "content": { - "oneOf": [ - { - "$ref": "#/definitions/item" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/item" - } - } - ] - }, - "item": { - "oneOf": [ - { - "$ref": "#/definitions/item_element" - }, - { - "$ref": "#/definitions/include" - } - ] - }, - "item_element": { - "type": "object", - "additionalProperties": false, - "required": [ - "id" - ], - "properties": { - "id": { - "$ref": "#/definitions/id" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "value": { - "$ref": "#/definitions/value" - }, - "note": { - "$ref": "#/definitions/string_translatable" - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "requirement": { - "$ref": "#/definitions/requirements" - }, - "attribute": { - "type": "array", - "items": { - "$ref": "#/definitions/item_attribute" - } - } - } - }, - "item_attribute": { - "type": "object", - "additionalProperties": false, - "required": [ - "id" - ], - "properties": { - "id": { - "$ref": "#/definitions/id" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "value": { - "$ref": "#/definitions/value" - }, - "note": { - "$ref": "#/definitions/string_translatable" - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "requirement": { - "$ref": "#/definitions/requirements" - } - } - }, - "include": { - "type": "object", - "additionalProperties": false, - "properties": { - "include": { - "type": "string" - } - } - }, - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "cardinality": { - "anyOf": [ - { - "type": "string", - "pattern": "^[A-Z]+$" - }, - { - "type": "string", - "enum": [ - "0..1", - "1..1", - "0..n", - "1..n" - ] - }, - { - "type": "string", - "pattern": "^[\\d]+\\.\\.[\\dn]+$" - } - ] - }, - "requirements": { - "oneOf": [ - { - "$ref": "#/definitions/requirement" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/requirement" - } - } - ] - }, - "requirement": { - "type": "string" - }, - "value": { - "type": "object", - "additionalProperties": false, - "properties": { - "datatype": { - "type": "string" - }, - "default": { - "$ref": "#/definitions/some_value" - }, - "example": { - "$ref": "#/definitions/some_value" - }, - "fixed": { - "$ref": "#/definitions/some_value" - }, - "codelist": { - "$ref": "#/definitions/some_value_array" - }, - "max_length": { - "type": "integer" - }, - "min_length": { - "type": "integer" - }, - "pattern": { - "type": "string" - } - } - }, - "some_value_array": { - "oneOf": [ - { - "$ref": "#/definitions/some_value" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/some_value" - } - } - ] - }, - "some_value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - }, - "document": { - "type": "object", - "additionalProperties": false, - "properties": { - "overrides": { - "$ref": "#/definitions/content" - } - } - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/semantic-model.json b/.vscode/json-schema/semantic-model.json deleted file mode 100644 index 075ed19..0000000 --- a/.vscode/json-schema/semantic-model.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "properties": { - "metadata": { - "$ref": "#/definitions/metadata" - }, - "content": { - "$ref": "semantic-model-content.json" - } - } - }, - "metadata": { - "type": "object", - "additionalProperties": false, - "properties": {} - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/semantic-rules.json b/.vscode/json-schema/semantic-rules.json deleted file mode 100644 index 5f76573..0000000 --- a/.vscode/json-schema/semantic-rules.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "required": [ - "title" - ], - "properties": { - "prefix": { - "type": "string" - }, - "title": { - "$ref": "#/definitions/string_translatable" - }, - "description": { - "$ref": "#/definitions/string_translatable" - }, - "scope": { - "$ref": "#/definitions/rules" - }, - "outside": { - "type": "array", - "items": { - "$ref": "#/definitions/string_translatable" - } - } - } - }, - "rules": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/string_translatable" - }, - { - "$ref": "#/definitions/rule" - } - ] - } - }, - "rule": { - "type": "object", - "additionalProperties": false, - "required": [ - "description" - ], - "properties": { - "id": { - "oneOf": [ - { - "type": "number" - }, - { - "type": "string" - } - ] - }, - "description": { - "$ref": "#/definitions/string_translatable" - }, - "context": { - "$ref": "#/definitions/string_translatable" - }, - "term": { - "$ref": "#/definitions/references" - }, - "requirement": { - "$ref": "#/definitions/references" - } - } - }, - "references": { - "oneOf": [ - { - "$ref": "#/definitions/reference" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/reference" - } - } - ] - }, - "reference": { - "type": "string" - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.{2,5}$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/syntax-binding-content.json b/.vscode/json-schema/syntax-binding-content.json deleted file mode 100644 index 6a337ed..0000000 --- a/.vscode/json-schema/syntax-binding-content.json +++ /dev/null @@ -1,268 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/element", - "definitions": { - "attribute": { - "type": "object", - "additionalProperties": false, - "properties": { - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "element": { - "type": "string", - "pattern": "^\\w+$" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "reference": { - "$ref": "#/definitions/some_value_array" - }, - "rule": { - "$ref": "#/definitions/some_value_array" - }, - "value": { - "$ref": "#/definitions/value" - }, - "usage": { - "type": "string" - } - } - }, - "element": { - "oneOf": [ - { - "$ref": "#/definitions/element_children" - }, - { - "$ref": "#/definitions/element_value" - }, - { - "$ref": "#/definitions/include" - } - ] - }, - "element_children": { - "type": "object", - "additionalProperties": false, - "required": [ - "element", - "children" - ], - "properties": { - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "element": { - "type": "string", - "pattern": "^\\w+:\\w+$" - }, - "selector": { - "type": "string" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "reference": { - "$ref": "#/definitions/some_value_array" - }, - "rule": { - "$ref": "#/definitions/some_value_array" - }, - "attribute": { - "type": "array", - "items": { - "$ref": "#/definitions/attribute" - } - }, - "children": { - "type": "array", - "items": { - "$ref": "#/definitions/element" - } - } - } - }, - "element_value": { - "type": "object", - "additionalProperties": false, - "required": [ - "element" - ], - "properties": { - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "element": { - "type": "string", - "pattern": "^\\w+:\\w+$" - }, - "selector": { - "type": "string" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "value": { - "$ref": "#/definitions/value" - }, - "reference": { - "$ref": "#/definitions/some_value_array" - }, - "rule": { - "$ref": "#/definitions/some_value_array" - }, - "attribute": { - "type": "array", - "items": { - "$ref": "#/definitions/attribute" - } - } - } - }, - "include": { - "type": "object", - "additionalProperties": false, - "properties": { - "include": { - "type": "string" - },"attribute": { - "type": "array", - "items": { - "$ref": "#/definitions/attribute" - } - } - } - }, - "cardinality": { - "anyOf": [ - { - "enum": [ - "0..1", - "1..1", - "0..n", - "1..n" - ] - }, - { - "type": "string", - "pattern": "^[\\d]+\\.\\.[\\dn]+$" - } - ] - }, - "value": { - "type": "object", - "additionalProperties": false, - "properties": { - "datatype": { - "type": "string" - }, - "default": { - "$ref": "#/definitions/some_value" - }, - "example": { - "$ref": "#/definitions/some_value" - }, - "fixed": { - "$ref": "#/definitions/some_value" - }, - "codelist": { - "$ref": "#/definitions/some_value_array" - }, - "max_length": { - "type": "integer" - }, - "min_length": { - "type": "integer" - }, - "pattern": { - "type": "string" - } - } - }, - "some_value_array": { - "oneOf": [ - { - "$ref": "#/definitions/some_value" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/some_value" - } - } - ] - }, - "some_value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/syntax-binding-meta.json b/.vscode/json-schema/syntax-binding-meta.json deleted file mode 100644 index b4befbf..0000000 --- a/.vscode/json-schema/syntax-binding-meta.json +++ /dev/null @@ -1,214 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "properties": { - "overrides": { - "$ref": "#/definitions/content" - } - } - }, "attribute": { - "type": "object", - "additionalProperties": false, - "properties": { - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "element": { - "type": "string", - "pattern": "^\\w+$" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "reference": { - "$ref": "#/definitions/some_value_array" - }, - "rule": { - "$ref": "#/definitions/some_value_array" - }, - "value": { - "$ref": "#/definitions/value" - }, - "usage": { - "type": "string" - } - } - }, - "content": { - "oneOf": [ - { - "$ref": "#/definitions/item" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/item" - } - } - ] - }, - "item": { - "$ref": "#/definitions/element_value" - }, - "element_value": { - "type": "object", - "additionalProperties": false, - "properties": { - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "section": { - "type": "string" - }, - "cardinality": { - "$ref": "#/definitions/cardinality" - }, - "element": { - "type": "string", - "pattern": "^\\w+:\\w+$" - }, - "selector": { - "type": "string" - }, - "name": { - "$ref": "#/definitions/string_translatable" - }, - "definition": { - "$ref": "#/definitions/string_translatable" - }, - "value": { - "$ref": "#/definitions/value" - }, - "reference": { - "$ref": "#/definitions/some_value_array" - }, - "rule": { - "$ref": "#/definitions/some_value_array" - }, - "attribute": { - "type": "array", - "items": { - "$ref": "#/definitions/attribute" - } - } - } - }, - "include": { - "type": "object", - "additionalProperties": false, - "properties": { - "include": { - "type": "string" - } - } - }, - "cardinality": { - "anyOf": [ - { - "enum": [ - "0..1", - "1..1", - "0..n", - "1..n" - ] - }, - { - "type": "string", - "pattern": "^[\\d]+\\.\\.[\\dn]+$" - } - ] - }, - "value": { - "type": "object", - "additionalProperties": false, - "properties": { - "datatype": { - "type": "string" - }, - "default": { - "$ref": "#/definitions/some_value" - }, - "example": { - "$ref": "#/definitions/some_value" - }, - "fixed": { - "$ref": "#/definitions/some_value" - }, - "codelist": { - "$ref": "#/definitions/some_value_array" - }, - "max_length": { - "type": "integer" - }, - "min_length": { - "type": "integer" - }, - "pattern": { - "type": "string" - } - } - }, - "some_value_array": { - "oneOf": [ - { - "$ref": "#/definitions/some_value" - }, - { - "type": "array", - "items": { - "$ref": "#/definitions/some_value" - } - } - ] - }, - "some_value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - } - ] - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/syntax-binding.json b/.vscode/json-schema/syntax-binding.json deleted file mode 100644 index 152a743..0000000 --- a/.vscode/json-schema/syntax-binding.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "properties": { - "metadata": { - "$ref": "#/definitions/metadata" - }, - "content": { - "$ref": "syntax-binding-content.json" - } - } - }, - "metadata": { - "type": "object", - "additionalProperties": false, - "properties": { - "namespaces": { - "$ref": "#/definitions/namespace" - } - } - }, - "namespace": { - "type": "object", - "patternProperties": { - "^[a-z0-9]+$": { - "type": "string" - } - } - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/syntax-validation.json b/.vscode/json-schema/syntax-validation.json deleted file mode 100644 index 073c249..0000000 --- a/.vscode/json-schema/syntax-validation.json +++ /dev/null @@ -1,207 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$ref": "#/definitions/document", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "properties": { - "title": { - "$ref": "#/definitions/string_translatable" - }, - "description": { - "$ref": "#/definitions/string_translatable" - }, - "language": { - "type": "string" - }, - "namespace": { - "$ref": "#/definitions/namespaces" - }, - "let": { - "$ref": "#/definitions/let" - }, - "pattern": { - "type": "array", - "items": { - "$ref": "#/definitions/pattern" - } - } - } - }, - "pattern": { - "oneOf": [ - { - "type": "array", - "items": { - "$ref": "#/definitions/rule" - } - }, - { - "type": "object", - "additionalProperties": false, - "properties": { - "id": { - "$ref": "#/definitions/id" - }, - "let": { - "$ref": "#/definitions/let" - }, - "rule": { - "type": "array", - "additionalItems": { - "$ref": "#/definitions/rule" - } - } - } - } - ] - }, - "rule": { - "oneOf": [ - { - "$ref": "#/definitions/rule_classic" - }, - { - "$ref": "#/definitions/rule_referenced" - } - ] - }, - "rule_classic": { - "type": "object", - "additionalProperties": false, - "required": [ - "context" - ], - "properties": { - "context": { - "type": "string" - }, - "let": { - "$ref": "#/definitions/let" - }, - "assert": { - "type": "array", - "items": { - "$ref": "#/definitions/assert" - } - } - } - }, - "rule_referenced": { - "type": "object", - "additionalProperties": false, - "required": [ - "context_ref" - ], - "properties": { - "context_ref": { - "type": "string" - }, - "let": { - "$ref": "#/definitions/let" - }, - "assert": { - "type": "array", - "items": { - "$ref": "#/definitions/assert" - } - } - } - }, - "assert": { - "type": "object", - "additionalProperties": false, - "required": [ - "test", - "message" - ], - "properties": { - "id": { - "$ref": "#/definitions/id" - }, - "flag": { - "type": "string" - }, - "test": { - "type": "string" - }, - "message": { - "$ref": "#/definitions/string_translatable" - }, - "reference": { - "$ref": "#/definitions/references" - } - } - }, - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - } - ] - }, - "let": { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - }, - "namespaces": { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - }, - "references": { - "type": "object", - "additionalProperties": false, - "properties": { - "codelist": { - "$ref": "#/definitions/reference" - }, - "rule": { - "$ref": "#/definitions/reference" - }, - "syntax": { - "$ref": "#/definitions/reference" - } - } - }, - "reference": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "array", - "items": { - "type": "string" - } - } - ] - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.{2,5}$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/json-schema/transaction.json b/.vscode/json-schema/transaction.json deleted file mode 100644 index f868ed6..0000000 --- a/.vscode/json-schema/transaction.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "definitions": { - "document": { - "type": "object", - "additionalProperties": false, - "properties": { - "hugo": { - "type": "object", - "title": "Hugo configuration" - }, - "title": { - "title": "Transaction title", - "$ref": "#/definitions/string_translatable" - }, - "description": { - "title": "Transaction description", - "$ref": "#/definitions/string_translatable" - }, - "docs": { - "patternProperties": { - "^.*$": { - "type": "string" - } - } - }, - "validation": { - "$ref": "#/definitions/validation" - }, - "features": { - "type": "object", - "additionalProperties": false, - "properties": { - "basic-rules": { - "type": "boolean", - "default": "true" - } - } - } - } - }, - "validation": { - "type": "object", - "additionalProperties": false, - "properties": { - "schematron": { - "type": "array", - "items": { - "type": "string" - } - }, - "xsd": { - "type": "string" - } - } - }, - "string_translatable": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "object", - "patternProperties": { - "^.+$": { - "type": "string" - } - } - } - ] - } - } -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index e145a7e..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "yaml.schemas": { - "file:///c%3A/Users/jerou/.vscode/extensions/atlassian.atlascode-2.10.7/resources/schemas/pipelines-schema.json": "bitbucket-pipelines.yml", - ".vscode/json-schema/imports.json": ".imports.yaml", - ".vscode/json-schema/process.json": "process.yaml", - ".vscode/json-schema/project.json": "project.yaml", - ".vscode/json-schema/library.json": "library.yaml", - ".vscode/json-schema/transaction.json": "transaction.yaml", - ".vscode/json-schema/codelist.json": [ - "codelist/*.yaml", - "codelist/abstract/*.yaml", - "!.imports.yaml" - ], - ".vscode/json-schema/codelist-subset.json": [ - "codelist/subset/*.yaml", - "!.imports.yaml" - ], - ".vscode/json-schema/semantic-model.json": [ - "semantic-model/main.yaml", - "semantic-model.yaml" - ], - ".vscode/json-schema/semantic-model-content.json": [ - "semantic-model/*.yaml", - "semantic-model/**/*.yaml", - "!semantic-model/main.yaml", - "!.imports.yaml", - "!*.meta.yaml" - ], - ".vscode/json-schema/semantic-model-meta.json": [ - "semantic-model/*.meta.yaml" - ], - ".vscode/json-schema/semantic-rules.json": [ - "semantic-rules/*.yaml", - "!.imports.yaml" - ], - ".vscode/json-schema/syntax-binding.json": [ - "syntax-binding/main.yaml", - "syntax-binding.yaml" - ], - ".vscode/json-schema/syntax-binding-content.json": [ - "syntax-binding/*.yaml", - "syntax-binding/**/*.yaml", - "!syntax-binding/main.yaml", - "!.imports.yaml", - "!*.meta.yaml" - ], - ".vscode/json-schema/syntax-binding-meta.json": [ - "syntax-binding/*.meta.yaml" - ], - ".vscode/json-schema/syntax-validation.json": [ - "schematron/*.yaml", - "!*.meta.yaml", - "!.imports.yaml", - "!*.meta.yaml" - ], - ".vscode/json-schema/schematron-meta.json": [ - "schematron/*.meta.yaml" - ], - "file:///c%3A/Users/jerou/develop/OpenPEPPOL/reporting/.vscode/json-schema/syntax-binding-content.json": "file:///c%3A/Users/jerou/develop/OpenPEPPOL/reporting/src/reporting/trn-transaction_statistics/syntax-binding/main-old.yaml" - }, - // Until https://github.com/redhat-developer/vscode-yaml/issues/397 is fixed. - "yaml.schemaStore.enable": false, -} \ No newline at end of file diff --git a/README.md b/README.md index ca99f41..41f9ba5 100644 Binary files a/README.md and b/README.md differ diff --git a/src/eusr/docs/bis/doc-section/1intro/audience.adoc b/src/eusr/docs/bis/doc-section/1intro/audience.adoc index 9e692d6..c92a58e 100644 --- a/src/eusr/docs/bis/doc-section/1intro/audience.adoc +++ b/src/eusr/docs/bis/doc-section/1intro/audience.adoc @@ -1,7 +1,7 @@ = Audience -* Peppol Coordinating Authority (PCA) -** How the PCA will receive the reports. +* OpenPeppol +** How OpenPeppol will receive the reports. * Service Provider (SP) -** How SPs are to submit their End User Statistics Reports to the PCA. +** How SPs are to submit their End User Statistics Reports to OpenPeppol. diff --git a/src/eusr/docs/bis/doc-section/1intro/changelog.adoc b/src/eusr/docs/bis/doc-section/1intro/changelog.adoc new file mode 100644 index 0000000..199d76c --- /dev/null +++ b/src/eusr/docs/bis/doc-section/1intro/changelog.adoc @@ -0,0 +1,22 @@ += Changelog + +:sectnums!: + +== Version 1.1.1 (2023-12-11) + +* Updated the Schematron rules to v1.1.4 +* Fixed some editorial bugs +* Added a statement, that empty subsets are not allowed +* Updated the example in Appendix 1 and Appendix 2 to be fully consistent + +== Version 1.1.0 (2023-06-30) + +* Reworked from "End User Report" to "End User Statistics Report" +* Updated XML Schema +* Updated Schematron rules + +== Version 1.0.0 (2022-11-23) + +* Initial version + +:sectnums: diff --git a/src/eusr/docs/bis/doc-section/1intro/index.adoc b/src/eusr/docs/bis/doc-section/1intro/index.adoc index 4a78637..cbc12fb 100644 --- a/src/eusr/docs/bis/doc-section/1intro/index.adoc +++ b/src/eusr/docs/bis/doc-section/1intro/index.adoc @@ -1,14 +1,12 @@ = Introduction -End User Statistics reporting of production data helps the Peppol Coordinating Authority (PCA) and Peppol Authorities (PAs) - to monitor the operations of the Peppol Network and identify and manage risks and issues within the network. +End User Statistics reporting of production data helps OpenPeppol as the Peppol Coordinating Authority (PCA) and + Peppol Authorities (PAs) to monitor the operations of the Peppol Network and identify and manage risks and issues within the network. The reporting requirements towards Service Providers (SPs) are divided into two areas: - reporting about End User data and reporting about Transaction Statistics. + reporting about End User Statistics and reporting about Transaction Statistics. This document will explain and outline the procedures for the End User Statistics Reporting. The policy on reporting is stated in https://openpeppol.atlassian.net/wiki/spaces/AF/pages/2891251733/Peppol+Interoperability+Framework+1+Juy+2022[Internal Regulations for Use of the Peppol Network]. -// #Note: The current spec is completely diverged from the IR. IR needs to be updated#. - :leveloffset: +1 include::structure.adoc[] @@ -21,4 +19,6 @@ include::ref.adoc[] include::namespaces.adoc[] +include::changelog.adoc[] + :leveloffset: -1 diff --git a/src/eusr/docs/bis/doc-section/1intro/ref.adoc b/src/eusr/docs/bis/doc-section/1intro/ref.adoc index 0879995..5d1cea1 100644 --- a/src/eusr/docs/bis/doc-section/1intro/ref.adoc +++ b/src/eusr/docs/bis/doc-section/1intro/ref.adoc @@ -1,3 +1,3 @@ = References -* https://openpeppol.atlassian.net/wiki/spaces/AF/pages/2889252865/Internal+Regulations[Internal Regulations - Use of Peppol Network v1.0] +* https://openpeppol.atlassian.net/wiki/spaces/AF/pages/2889252865/Internal+Regulations[Internal Regulations - Use of Peppol Network v2.0] diff --git a/src/eusr/docs/bis/doc-section/1intro/scope.adoc b/src/eusr/docs/bis/doc-section/1intro/scope.adoc index b3e2dbc..a121885 100644 --- a/src/eusr/docs/bis/doc-section/1intro/scope.adoc +++ b/src/eusr/docs/bis/doc-section/1intro/scope.adoc @@ -1,8 +1,8 @@ = Scope -This document is concerned with clarifying the requirements for ensuring compliance to the -Internal Regulations (IR) requirements and provides guidelines for the support and implementation of these requirements. -This document will also provide a detailed sample implementation guideline for the End User Statistics Report transaction; +This document is concerned with clarifying the requirements for ensuring compliance to the Internal Regulations (IR) + requirements and provides guidelines for the support and implementation of these requirements. +This document will also provide a detailed implementation guideline for the End User Statistics Report transaction; to do that, the document sets out the processes and procedure for End User Statistics Reporting process including: . Parties and Roles, diff --git a/src/eusr/docs/bis/doc-section/2busproc/parties.adoc b/src/eusr/docs/bis/doc-section/2busproc/parties.adoc index 544f80a..77605bc 100644 --- a/src/eusr/docs/bis/doc-section/2busproc/parties.adoc +++ b/src/eusr/docs/bis/doc-section/2busproc/parties.adoc @@ -10,9 +10,9 @@ Each SP will: * Collect relevant data, taking care of the accuracy and validity of this data. * Report this data in accordance to this document in a standardized and structured dataset. -* Ensure all data for a Reporting Period is reported within the Statistics Report Submitting Period following the end of the Reporting Period. - Note: the Reporting Period is defined by the PCA in a separate document. -* Transmit the Peppol End User Statistics Reporting document to the PCA in accordance with this specification. +* Ensure all data for a Reporting Period is reported within the Statistics Report Submitting Period following the end of the Reporting Period. + + Note: the Reporting Period and the Statistics Report Submitting Period are defined by OpenPeppol in a separate document. +* Transmit the Peppol End User Statistics Reporting document to OpenPeppol in accordance with this specification. == OpenPeppol Operating Office (OO) diff --git a/src/eusr/docs/bis/doc-section/2busproc/process.adoc b/src/eusr/docs/bis/doc-section/2busproc/process.adoc index 6d8c2f3..36d2cc0 100644 --- a/src/eusr/docs/bis/doc-section/2busproc/process.adoc +++ b/src/eusr/docs/bis/doc-section/2busproc/process.adoc @@ -1,7 +1,6 @@ = End User Statistics Reporting Process -The following diagrams provide an overview of the key steps when -Service Providers are reporting End User Statistics: +The following diagrams provide an overview of the key steps when SPs are reporting End User Statistics: image::./images/eusr-process-simple.png[] @@ -17,13 +16,13 @@ image::./images/eusr-process-view.png[] ** A Reporting Period ends at 23:59:59 UTC (inclusive) of the last day. * Data -** Only Service Providers operating a production Peppol Access Point MUST gather this data and transmit an End User Statistics Report. +** Only SPs operating a production Peppol Access Point MUST gather this data and transmit an End User Statistics Report. ** Only Data for the production network MUST be gathered. ** The following data elements MUST be provided for each End User Statistics Report -*** Number of End Users that have sent a Dataset -*** Number of End Users that have received a Dataset -*** Number of End Users that have sent or received a Dataset -*** Peppol Dataset Type (Document Type ID) and Profile ID (Process ID) +*** Number of distinct End Users that have sent a Dataset +*** Number of distinct End Users that have received a Dataset +*** Number of distinct End Users that have sent or received a Dataset +*** Peppol Dataset Type (Document Type ID) and Process ID *** End Users Country Code ** Only Dataset exchanges that resulted in a positive transport level acknowledgment (like AS4 Receipts) MUST be included in the End User Statistics Report. @@ -35,10 +34,10 @@ NOTE: If the same End User is represented with multiple Participant Identifiers, == Data Preparation -Before the End User Statistics Report data is transmitted to OpenPeppol it needs to be prepared for subsets. -The preparation can be performed on any of the above-mentioned data elements defined by the Internal Regulations. +Before the End User Statistics Report data is transmitted to OpenPeppol it needs to be prepared in subsets. +The preparation can be performed on any of the above-mentioned data elements. -IF there are end users who have sent / received transactions within the reporting period, then the following +If there are end users who have sent / received transactions within the reporting period, then the following subsets MUST be prepared to be compliant with this specification. * Dataset Type ID (Document Type ID) and End Users Country @@ -50,16 +49,17 @@ subsets MUST be prepared to be compliant with this specification. * Frequency ** An End User Statistics Report MUST be transmitted once per Reporting Period. -** An End User Statistics Report MUST be transmitted within the Statistics Report Submitting Period, which is defined external to this document, after the end of the previous Reporting Period. +** An End User Statistics Report MUST be transmitted within the Statistics Report Submitting Period after the end of the previous Reporting Period. ** The End User Statistics Report MUST be transmitted, even if no other Peppol transactions happened in the Reporting Period. -** In case the End User Statistics Report of one Service Provider is received multiple times for one Reporting Period, only the latest received document will be processed. -** End User Statistics Reports received after the deadline WILL NOT be processed. +** In case the End User Statistics Report of one SP is received multiple times for one Reporting Period, only the latest received document will be processed. +** End User Statistics Reports received after the deadline (=the end of the Statistics Report Submitting Period) WILL NOT be processed. * Data -** Only End User Statistics Reports on the Production environment MUST be transmitted. Data for non-production environments MUST NOT be transmitted. -** Each subset key combination MUST NOT occur more than once in an End User Statistics Report. +** Only End User Statistics Reports on the Production environment MUST be transmitted. +** Each Subset key combination MUST NOT occur more than once in an End User Statistics Report. +** The data of each End User Statistics MUST be reported in the designated elements. ** The Reporting Period MUST be part of the End User Statistics Report. -** An identifier uniquely identifying the reporting Service Provider MUST be part of the End User Statistics Report. +** An identifier uniquely identifying the reporting SP MUST be part of the End User Statistics Report. * Network ** End User Statistics Reports MUST be transmitted via the Peppol eDelivery Network. diff --git a/src/eusr/docs/bis/doc-section/3syntax/fullset.adoc b/src/eusr/docs/bis/doc-section/3syntax/fullset.adoc index a572d9e..0e49fcb 100644 --- a/src/eusr/docs/bis/doc-section/3syntax/fullset.adoc +++ b/src/eusr/docs/bis/doc-section/3syntax/fullset.adoc @@ -22,7 +22,7 @@ The following non-normative diagram shows an overview of the theoretical concept Each shape represents a group of end users. The Full Set is comprised from the outer green and blue shapes. The overlapping part of green and blue indicate the end users that did send *and* receive. -The orange shape indicates the subset of end users that deals with invoices - this effects both sending and receiving end users. +The orange shape indicates the subset of end users that deals with invoices - this affects both sending and receiving end users. The inner yellow indicates the subset of End Users that deals with invoices from/to Finland (FI) and hence is a subset of the orange shape. image::./images/eusr-venn.png[] diff --git a/src/eusr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml b/src/eusr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml index 55fa4fa..191c886 100644 --- a/src/eusr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml +++ b/src/eusr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml @@ -28,9 +28,9 @@ PT - - 12 + 12 + 23 26 @@ -41,9 +41,9 @@ urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 PT - - 5 + 5 + 2 6 diff --git a/src/eusr/docs/bis/doc-section/3syntax/subset.adoc b/src/eusr/docs/bis/doc-section/3syntax/subset.adoc index 81c69f9..09a65fa 100644 --- a/src/eusr/docs/bis/doc-section/3syntax/subset.adoc +++ b/src/eusr/docs/bis/doc-section/3syntax/subset.adoc @@ -7,9 +7,13 @@ Each subset represents a different view on the End User statistics data, and The technical representation of the subsets was designed in a generic way, to allow for future extension without modifying the underlying schema. - Each `Subset` element therefore requires a `@type` attribute that defines - the type of the subset. The value range is defined by the - <> code list. + Each `Subset` element requires a `@type` attribute that defines the type + of the subset. The value range is defined by the <> code list. + +Subsets without any matching transaction (i.e. if `SendingOrReceivingEndUsers` is `0`) + MUST NOT be part of the Report. + +All values in this subchapter are case-sensitive, except stated otherwise. == Subset Cardinality per End Users Country This subset is identifierd by the `@type` attribute having the value `PerEUC`. @@ -20,19 +24,19 @@ The value of the `Key` element MUST have a value according to the <> code list. The element `eusr:Subset/eusr:SendingEndUsers` contains the number of distinct -end users (cardinality) from the given End User Country, who have sent transactions. +end users (cardinality) from the given End Users Country, who have sent transactions. Only values ≥ 0 are allowed. The element `eusr:Subset/eusr:ReceivingEndUsers` contains the number of distinct -end users (cardinality) from the given End User Country, who have received transactions. +end users (cardinality) from the given End Users Country, who have received transactions. Only values ≥ 0 are allowed. The element `eusr:Subset/eusr:SendingOrReceivingEndUsers` contains the number of distinct -end users (cardinality) from the given End User Country, who have sent/received transactions. +end users (cardinality) from the given End Users Country, who have either sent or received transactions. Only values ≥ 0 are allowed. -.Example of a subset per Dataset Type and Process ID: +.Example of a subset per End Users Country: [source, xml] ---- include::./snippet/snippet-1.xml[tags=SubsetPerEUC] @@ -43,7 +47,7 @@ This subset is identifierd by the `@type` attribute having the value `PerDT-EUC` * This subset requires one `Key` element with a Meta Scheme ID of `DT` (Dataset Type). The `@schemeID` attribute of this `Key` element MUST be the Document Type Identifier Scheme -of the exchanged Dataset (usually `busdox-docid-qns`). The value of the `Key` element MUST be +of the exchanged Dataset (usually `busdox-docid-qns` or `peppol-doctype-wildcard`). The value of the `Key` element MUST be the Dataset Type (Document Type) Identifier value of the exchanged dataset. * This subset requires one `Key` element with a Meta Scheme ID of `CC` @@ -52,18 +56,18 @@ The value of the `Key` element MUST have a value according to the <> code list. The element `eusr:Subset/eusr:SendingEndUsers` contains the number of distinct -end users (cardinality) from the given End User Country, who have sent transactions containing the given Dataset Type. +end users (cardinality) from the given End Users Country, who have sent transactions containing the given Dataset Type. Only values ≥ 0 are allowed. The element `eusr:Subset/eusr:ReceivingEndUsers` contains the number of distinct -end users (cardinality) from the given End User Country, who have received transactions containing the given Dataset Type. +end users (cardinality) from the given End Users Country, who have received transactions containing the given Dataset Type. Only values ≥ 0 are allowed. The element `eusr:Subset/eusr:SendingOrReceivingEndUsers` contains the number of distinct -end users (cardinality) from the given End User Country, who have sent/received transactions containing the given Dataset Type. +end users (cardinality) from the given End Users Country, who have either sent or received transactions containing the given Dataset Type. Only values ≥ 0 are allowed. -.Example of a subset per Dataset Type and Process ID: +.Example of a subset per Dataset Type and End Users Country: [source, xml] ---- include::./snippet/snippet-1.xml[tags=SubsetPerDT-EUC] @@ -75,7 +79,7 @@ This subset is identified by the `@type` attribute having the value `PerDT-PR`. * This subset requires one `Key` element with a Meta Scheme ID of `DT` (Dataset Type). The `@schemeID` attribute of this `Key` element MUST be the Document Type Identifier Scheme -of the exchanged Dataset (usually `busdox-docid-qns`). The value of the `Key` element MUST be +of the exchanged Dataset (usually `busdox-docid-qns` or `peppol-doctype-wildcard`). The value of the `Key` element MUST be the Dataset Type (Document Type) Identifier value of the exchanged dataset. * This subset requires one `Key` element with Meta Scheme ID of `PR` (Process ID). @@ -107,13 +111,13 @@ The element `eusr:Subset/eusr:SendingOrReceivingEndUsers` contains the number of include::./snippet/snippet-1.xml[tags=SubsetPerDT-PR] ---- -== Subset Cardinality per Dataset Type, Process ID and End User Country +== Subset Cardinality per Dataset Type, Process ID and End Users Country This subset is identified by the `@type` attribute having the value `PerDT-PR-EUC`. * This subset requires one `Key` element with a Meta Scheme ID of `DT` (Dataset Type). The `@schemeID` attribute of this `Key` element MUST be the Document Type Identifier Scheme -of the exchanged Dataset (usually `busdox-docid-qns`). The value of the `Key` element MUST be +of the exchanged Dataset (usually `busdox-docid-qns` or `peppol-doctype-wildcard`). The value of the `Key` element MUST be the Dataset Type (Document Type) Identifier value of the exchanged dataset. * This subset requires one `Key` element with Meta Scheme ID of `PR` (Process ID). @@ -132,19 +136,19 @@ Each distinct combination of the Dataset Type, Process ID and End User Country The element `eusr:Subset/eusr:SendingEndUsers` contains the number of distinct - end users (cardinality) that have sent datasets using this combination of the Dataset Type, Process ID and End User Country. + end users (cardinality) that have sent datasets using this combination of the Dataset Type, Process ID and End Users Country. Only values ≥ 0 are allowed. The element `eusr:Subset/eusr:ReceivingEndUsers` contains the number of distinct - end users (cardinality) that have received datasets using this combination of the Dataset Type, Process ID and End User Country. + end users (cardinality) that have received datasets using this combination of the Dataset Type, Process ID and End Users Country. Only values ≥ 0 are allowed. The element `eusr:Subset/eusr:SendingOrReceivingEndUsers` contains the number of distinct - end users (cardinality) that have either sent or received datasets using this combination of the Dataset Type, Process ID and End User Country. + end users (cardinality) that have either sent or received datasets using this combination of the Dataset Type, Process ID and End Users Country. Only values ≥ 0 are allowed. -.Example of a subset per Dataset Type, Process ID and End User Country: +.Example of a subset per Dataset Type, Process ID and End Users Country: [source, xml] ---- include::./snippet/snippet-1.xml[tags=SubsetPerDT-PR-EUC] diff --git a/src/eusr/docs/bis/doc-section/appendix/a1.adoc b/src/eusr/docs/bis/doc-section/appendix/a1.adoc index 1e0cff2..3e28778 100644 --- a/src/eusr/docs/bis/doc-section/appendix/a1.adoc +++ b/src/eusr/docs/bis/doc-section/appendix/a1.adoc @@ -4,7 +4,8 @@ The following example report represents a valid example message. This example represents the data for a Service Provider that both sent and received documents within a Reporting Period. +// Note: empty lines in the source code kill the XML formatting [source, xml] ---- -include::../../../../trn-end_user_statistics/example/end-user-statistics-reporting-1.xml[] +include::../../../../trn-end_user_statistics/example/end-user-statistics-reporting-appendix1.xml[] ---- diff --git a/src/eusr/docs/bis/doc-section/appendix/a2.adoc b/src/eusr/docs/bis/doc-section/appendix/a2.adoc index 7f1aa39..4bf0243 100644 --- a/src/eusr/docs/bis/doc-section/appendix/a2.adoc +++ b/src/eusr/docs/bis/doc-section/appendix/a2.adoc @@ -3,9 +3,9 @@ The following example report represents a valid example message. This example represents the data for a Service Provider that only sent documents within a Reporting Period. -This implies, that the "Subsets per Dataset Type, Process ID and End User Country" is not contained. +// Note: empty lines in the source code kill the XML formatting [source, xml] ---- -include::../../../../trn-end_user_statistics/example/end-user-statistics-reporting-2.xml[] +include::../../../../trn-end_user_statistics/example/end-user-statistics-reporting-appendix2.xml[] ---- diff --git a/src/eusr/docs/bis/doc-section/appendix/a3.adoc b/src/eusr/docs/bis/doc-section/appendix/a3.adoc index fb3274d..d613ec2 100644 --- a/src/eusr/docs/bis/doc-section/appendix/a3.adoc +++ b/src/eusr/docs/bis/doc-section/appendix/a3.adoc @@ -4,7 +4,8 @@ The following example report represents a valid example message. This example represents a message in case no transmissions were performed within a Reporting Period. +// Note: empty lines in the source code kill the XML formatting [source, xml] ---- -include::../../../../trn-end_user_statistics/example/end-user-statistics-reporting-empty.xml[] +include::../../../../trn-end_user_statistics/example/end-user-statistics-reporting-appendix3.xml[] ---- diff --git a/src/eusr/docs/bis/images/eusr-process-simple.png b/src/eusr/docs/bis/images/eusr-process-simple.png index a27c72f..c991570 100644 Binary files a/src/eusr/docs/bis/images/eusr-process-simple.png and b/src/eusr/docs/bis/images/eusr-process-simple.png differ diff --git a/src/eusr/docs/bis/images/eusr-venn.png b/src/eusr/docs/bis/images/eusr-venn.png index fede50d..def6e2a 100644 Binary files a/src/eusr/docs/bis/images/eusr-venn.png and b/src/eusr/docs/bis/images/eusr-venn.png differ diff --git a/src/eusr/docs/bis/settings.adoc b/src/eusr/docs/bis/settings.adoc index 3e23717..a8cd93e 100644 --- a/src/eusr/docs/bis/settings.adoc +++ b/src/eusr/docs/bis/settings.adoc @@ -1,7 +1,7 @@ :lang: en :doctitle: Peppol End User Statistics Reporting Process -:version: 1.1.0 +:version: 1.1.1 :doctype: book -:name-op-en: OpenPeppol AISBL, Operating Office +:name-op-en: OpenPeppol AISBL, eDEC diff --git a/src/eusr/process.yaml b/src/eusr/process.yaml index 58d30f8..dbbb96f 100644 --- a/src/eusr/process.yaml +++ b/src/eusr/process.yaml @@ -1,4 +1,4 @@ --- -title: Peppol End User Statistics Reporting - v1.1.0 +title: Peppol End User Statistics Reporting - v1.1.1 description: Peppol End User Statistics Reporting Process -version: "1.1.0" +version: "1.1.1" diff --git a/src/eusr/trn-end_user_statistics/bad-examples/eusr-28-1.xml b/src/eusr/trn-end_user_statistics/bad-examples/eusr-28-1.xml deleted file mode 100644 index 5a095bf..0000000 --- a/src/eusr/trn-end_user_statistics/bad-examples/eusr-28-1.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - urn:fdc:peppol.eu:edec:trns:end-user-statistics-report:1.1 - urn:fdc:peppol.eu:edec:bis:reporting:1.0 -
- - 2022-01-01 - 2022-01-31 - - POP000360 -
- - - 5 - 3 - 6 - - - - urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - 4 - 2 - 5 - - - urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - 5 - 2 - 5 - - - - urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - FI - - PT - 1 - 1 - 1 - - - urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - PT - 1 - 0 - 1 - - - PT - 1 - 0 - 1 - -
diff --git a/src/eusr/trn-end_user_statistics/bad-examples/eusr-28-2.xml b/src/eusr/trn-end_user_statistics/bad-examples/eusr-28-2.xml deleted file mode 100644 index 97f6e86..0000000 --- a/src/eusr/trn-end_user_statistics/bad-examples/eusr-28-2.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - urn:fdc:peppol.eu:edec:trns:end-user-statistics-report:1.1 - urn:fdc:peppol.eu:edec:bis:reporting:1.0 -
- - 2022-01-01 - 2022-01-31 - - POP000360 -
- - - 5 - 3 - 6 - - - - urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - 4 - 2 - 5 - - - urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - 5 - 2 - 5 - - - - urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - - FI - PT - 1 - 1 - 1 - - - urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 - PT - 1 - 0 - 1 - - - PT - 1 - 0 - 1 - -
diff --git a/src/eusr/trn-end_user_statistics/bad-examples/eusr-30-2.xml b/src/eusr/trn-end_user_statistics/bad-examples/eusr-30-2.xml index fc17404..a88af9f 100644 --- a/src/eusr/trn-end_user_statistics/bad-examples/eusr-30-2.xml +++ b/src/eusr/trn-end_user_statistics/bad-examples/eusr-30-2.xml @@ -34,7 +34,7 @@ urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - FI + ZZ 1 1 1 diff --git a/src/eusr/trn-end_user_statistics/codelist/ISO3166.yaml b/src/eusr/trn-end_user_statistics/codelist/ISO3166.yaml index 3c70469..961b998 100644 --- a/src/eusr/trn-end_user_statistics/codelist/ISO3166.yaml +++ b/src/eusr/trn-end_user_statistics/codelist/ISO3166.yaml @@ -522,7 +522,7 @@ codes: - id: NL name: en: Netherlands -- id: NO +- id: 'NO' name: en: Norway nb: Norge diff --git a/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-1.xml b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-1.xml index 174934d..a6ecd3a 100644 --- a/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-1.xml +++ b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-1.xml @@ -58,8 +58,8 @@ PT - 12 - 23 - 26 + 1 + 2 + 3 diff --git a/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix1.xml b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix1.xml new file mode 100644 index 0000000..10a9666 --- /dev/null +++ b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix1.xml @@ -0,0 +1,122 @@ + + + urn:fdc:peppol.eu:edec:trns:end-user-statistics-report:1.1 + urn:fdc:peppol.eu:edec:bis:reporting:1.0 +
+ + 2023-12-01 + 2023-12-31 + + PDE000001 +
+ + + 9 + 4 + 9 + + + + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 0 + 2 + 2 + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 9 + 4 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + 9 + 0 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + 0 + 4 + 4 + + + + DE + 9 + 4 + 9 + + + NO + 9 + 4 + 9 + + + + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + DE + 0 + 2 + 2 + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + DE + 9 + 4 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + NO + 9 + 0 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + NO + 0 + 4 + 4 + + + + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + DE + 0 + 2 + 2 + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + DE + 9 + 4 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + NO + 9 + 0 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + NO + 0 + 4 + 4 + +
diff --git a/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix2.xml b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix2.xml new file mode 100644 index 0000000..e918ed3 --- /dev/null +++ b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix2.xml @@ -0,0 +1,93 @@ + + + urn:fdc:peppol.eu:edec:trns:end-user-statistics-report:1.1 + urn:fdc:peppol.eu:edec:bis:reporting:1.0 +
+ + 2023-12-01 + 2023-12-31 + + PDE000001 +
+ + + 9 + 0 + 9 + + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 9 + 0 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + 5 + 0 + 5 + + + + DE + 9 + 0 + 9 + + + NO + 5 + 0 + 5 + + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + DE + 9 + 0 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + NO + 3 + 0 + 3 + + + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + NO + 5 + 0 + 5 + + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + DE + 9 + 0 + 9 + + + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + NO + 3 + 0 + 3 + + + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + NO + 5 + 0 + 5 + +
diff --git a/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix3.xml b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix3.xml new file mode 100644 index 0000000..98186d9 --- /dev/null +++ b/src/eusr/trn-end_user_statistics/example/end-user-statistics-reporting-appendix3.xml @@ -0,0 +1,18 @@ + + + urn:fdc:peppol.eu:edec:trns:end-user-statistics-report:1.1 + urn:fdc:peppol.eu:edec:bis:reporting:1.0 +
+ + 2022-01-01 + 2022-01-31 + + POP000360 +
+ + + 0 + 0 + 0 + +
diff --git a/src/eusr/trn-end_user_statistics/schematron/peppol-end-user-statistics-reporting-1.1.0.sch b/src/eusr/trn-end_user_statistics/schematron/peppol-end-user-statistics-reporting-1.1.4.sch similarity index 77% rename from src/eusr/trn-end_user_statistics/schematron/peppol-end-user-statistics-reporting-1.1.0.sch rename to src/eusr/trn-end_user_statistics/schematron/peppol-end-user-statistics-reporting-1.1.4.sch index ec7df24..27d3b9a 100644 --- a/src/eusr/trn-end_user_statistics/schematron/peppol-end-user-statistics-reporting-1.1.0.sch +++ b/src/eusr/trn-end_user_statistics/schematron/peppol-end-user-statistics-reporting-1.1.4.sch @@ -11,18 +11,27 @@ Author: Philip Helger - - History: + Muhammet Yildiz + + History + EUSR 1.1.4 + 2023-11-10, Philip Helger - reverted the changes from 1.1.3 - the country code `ZZ` is only allowed in TSR + EUSR 1.1.3 + 2023-11-02, Philip Helger - add country code `ZZ` as an allowed one + EUSR 1.1.2 + 2023-10-12, Muhammet Yildiz - replaced $xyz values with `value-of select ="$xyz"` in the messages EUSR 1.1.0 - * 2023-06-29, Muhammet Yildiz - Updates related to changing "PerDTPRCC" to "PerDTPREUC". Rules 28,31,32 removed. Rules 14, 23, 26, 27, 29, 30 modified + 2023-09-18, Philip Helger - using function "max" in rules 03, 04, 22 to fix an issue if the same value appears more then once + explicitly added "xs:integer" casts where necessary + 2023-06-29, Muhammet Yildiz - updates related to changing "PerDTPRCC" to "PerDTPREUC". Rules 28,31,32 removed. Rules 14, 23, 26, 27, 29, 30 modified EUSR 1.0.1 - * 2023-06-23, Philip Helger - hotfix for new subsets "PerEUC" and "PerDT-EUC". Added new rules SCH-EUSR-37 to SCH-EUSR-47 + 2023-06-23, Philip Helger - hotfix for new subsets "PerEUC" and "PerDT-EUC". Added new rules SCH-EUSR-37 to SCH-EUSR-47 EUSR 1.0.0 - * 2023-03-06, Philip Helger - updates after second review + 2023-03-06, Philip Helger - updates after second review EUSR RC2 - * 2022-11-14, Muhammet Yildiz, Philip Helger - updates after the first review + 2022-11-14, Muhammet Yildiz, Philip Helger - updates after the first review EUR RC1 - * 2022-04-15, Philip Helger - initial version + 2022-04-15, Philip Helger - initial version

@@ -32,7 +41,7 @@ - + @@ -42,19 +51,19 @@ >[SCH-EUSR-02] The profile ID MUST use the value 'urn:fdc:peppol.eu:edec:bis:reporting:1.0' - [SCH-EUSR-03] The maximum of all subsets of SendingEndUsers MUST be lower or equal to FullSet/SendingEndUsers - [SCH-EUSR-04] The maximum of all subsets of ReceivingEndUsers MUST be lower or equal to FullSet/ReceivingEndUsers - [SCH-EUSR-22] The maximum of all subsets of SendingOrReceivingEndUsers MUST be lower or equal to FullSet/SendingOrReceivingEndUsers + [SCH-EUSR-03] The maximum of all subsets of SendingEndUsers () MUST be lower or equal to FullSet/SendingEndUsers () + [SCH-EUSR-04] The maximum of all subsets of ReceivingEndUsers () MUST be lower or equal to FullSet/ReceivingEndUsers () + [SCH-EUSR-22] The maximum of all subsets of SendingOrReceivingEndUsers () MUST be lower or equal to FullSet/SendingOrReceivingEndUsers () - [SCH-EUSR-19] The number of SendingOrReceivingEndUsers () MUST be lower or equal to the sum of the SendingEndUsers and ReceivingEndUsers () - [SCH-EUSR-20] The number of SendingOrReceivingEndUsers () MUST be greater or equal to the number of SendingEndUsers () - [SCH-EUSR-21] The number of SendingOrReceivingEndUsers () MUST be greater or equal to the number of ReceivingEndUsers () @@ -133,16 +142,16 @@ [SCH-EUSR-33] The number of each Subset/SendingOrReceivingEndUsers MUST be lower or equal to the sum of the Subset/SendingEndUsers plus Subset/ReceivingEndUsers [SCH-EUSR-34] The number of each Subset/SendingOrReceivingEndUsers MUST be greater or equal to the number of Subset/SendingEndUsers + xs:integer($st/eusr:SendingOrReceivingEndUsers) >= xs:integer($st/eusr:SendingEndUsers)" + >[SCH-EUSR-34] The number of each Subset/SendingOrReceivingEndUsers MUST be greater or equal to the number of Subset/SendingEndUsers () [SCH-EUSR-35] The number of each Subset/SendingOrReceivingEndUsers MUST be greater or equal to the number of Subset/ReceivingEndUsers + xs:integer($st/eusr:SendingOrReceivingEndUsers) >= xs:integer($st/eusr:ReceivingEndUsers)" + >[SCH-EUSR-35] The number of each Subset/SendingOrReceivingEndUsers MUST be greater or equal to the number of Subset/ReceivingEndUsers () [SCH-EUSR-36] The number of each Subset/SendingOrReceivingEndUsers MUST be greater then zero, otherwise it MUST be omitted @@ -180,11 +189,11 @@ [SCH-EUSR-09] $name MUST have two Key elements + >[SCH-EUSR-09] MUST have two Key elements [SCH-EUSR-10] $name MUST have one Key element with the meta scheme ID 'DT' + >[SCH-EUSR-10] MUST have one Key element with the meta scheme ID 'DT' [SCH-EUSR-11] $name MUST have one Key element with the meta scheme ID 'PR' + >[SCH-EUSR-11] MUST have one Key element with the meta scheme ID 'PR' @@ -192,15 +201,15 @@ [SCH-EUSR-23] $name MUST have three Key elements + >[SCH-EUSR-23] MUST have three Key elements [SCH-EUSR-24] $name MUST have one Key element with the meta scheme ID 'DT' + >[SCH-EUSR-24] MUST have one Key element with the meta scheme ID 'DT' [SCH-EUSR-25] $name MUST have one Key element with the meta scheme ID 'PR' + >[SCH-EUSR-25] MUST have one Key element with the meta scheme ID 'PR' [SCH-EUSR-26] $name MUST have one Key element with the meta scheme ID 'CC' + >[SCH-EUSR-26] MUST have one Key element with the meta scheme ID 'CC' [SCH-EUSR-27] $name MUST have one CC Key element with the scheme ID 'EndUserCountry' + >[SCH-EUSR-27] MUST have one CC Key element with the scheme ID 'EndUserCountry' @@ -208,13 +217,13 @@ [SCH-EUSR-41] $name MUST have two Key elements + >[SCH-EUSR-41] MUST have two Key elements [SCH-EUSR-42] $name MUST have one Key element with the meta scheme ID 'DT' + >[SCH-EUSR-42] MUST have one Key element with the meta scheme ID 'DT' [SCH-EUSR-43] $name MUST have one Key element with the meta scheme ID 'CC' + >[SCH-EUSR-43] MUST have one Key element with the meta scheme ID 'CC' [SCH-EUSR-44] $name MUST have one CC Key element with the scheme ID 'EndUserCountry' + >[SCH-EUSR-44] MUST have one CC Key element with the scheme ID 'EndUserCountry' @@ -222,11 +231,11 @@ [SCH-EUSR-45] $name MUST have one Key element + >[SCH-EUSR-45] MUST have one Key element [SCH-EUSR-46] $name MUST have one Key element with the meta scheme ID 'CC' + >[SCH-EUSR-46] MUST have one Key element with the meta scheme ID 'CC' [SCH-EUSR-47] $name MUST have one CC Key element with the scheme ID 'EndUserCountry' + >[SCH-EUSR-47] MUST have one CC Key element with the scheme ID 'EndUserCountry' diff --git a/src/eusr/trn-end_user_statistics/transaction.yaml b/src/eusr/trn-end_user_statistics/transaction.yaml index 4a9a98e..a20226e 100644 --- a/src/eusr/trn-end_user_statistics/transaction.yaml +++ b/src/eusr/trn-end_user_statistics/transaction.yaml @@ -10,4 +10,4 @@ validation: # xsd is for verifying XSD conformance xsd: resources/xsd/peppol-end-user-statistics-reporting-1.1.xsd schematron: - - schematron/peppol-end-user-statistics-reporting-1.1.0.sch + - schematron/peppol-end-user-statistics-reporting-1.1.4.sch diff --git a/src/tsr/docs/bis/doc-section/1intro/audience.adoc b/src/tsr/docs/bis/doc-section/1intro/audience.adoc index 29da94a..55929fa 100644 --- a/src/tsr/docs/bis/doc-section/1intro/audience.adoc +++ b/src/tsr/docs/bis/doc-section/1intro/audience.adoc @@ -1,7 +1,7 @@ = Audience -* Peppol Coordinating Authority (PCA) -** How the PCA will receive the reports. +* OpenPeppol acting as the Peppol Coordinating Authority +** How OpenPeppol will receive the reports. * Service Provider (SP) -** How SPs are to submit their Transaction statistics Reports to the PCA. +** How SPs are to submit their Transaction Statistics Reports to OpenPeppol. diff --git a/src/tsr/docs/bis/doc-section/1intro/changelog.adoc b/src/tsr/docs/bis/doc-section/1intro/changelog.adoc index a00c4b0..2b70961 100644 --- a/src/tsr/docs/bis/doc-section/1intro/changelog.adoc +++ b/src/tsr/docs/bis/doc-section/1intro/changelog.adoc @@ -2,6 +2,15 @@ :sectnums!: +== Version 1.0.2 (2023-12-11) + +* Updated the Schematron rules to v1.0.4 +* Fixed some editorial bugs +* Removed the operational statement on the number of calendar days before a reminder is sent +* Added a statement, that empty subtotals are not allowed +* Extended the country code list based on ISO-3166 to allow the `ZZ` value +* Updated the example in Appendix 1 to be fully consistent + == Version 1.0.1 (2023-03-14) * Due to changes in the Peppol Envelope Specification, sending Service Providers are no longer able to report the diff --git a/src/tsr/docs/bis/doc-section/1intro/index.adoc b/src/tsr/docs/bis/doc-section/1intro/index.adoc index 5ff4f74..f5d1b5a 100644 --- a/src/tsr/docs/bis/doc-section/1intro/index.adoc +++ b/src/tsr/docs/bis/doc-section/1intro/index.adoc @@ -1,13 +1,12 @@ = Introduction -Transaction Statistics reporting of production data helps the Peppol Coordinating Authority (PCA) and Peppol Authorities (PAs) - to monitor the operations of the Peppol Network and identify and manage risks and issues within the network. +Transaction Statistics reporting of production data helps OpenPeppol as the Peppol Coordinating Authority (PCA) and + Peppol Authorities (PAs) to monitor the operations of the Peppol Network and identify and manage risks and issues within the network. The reporting requirements towards Service Providers (SPs) are divided into two areas: - reporting about End User data and reporting about Transaction Statistics. + reporting about End User Statistics and reporting about Transaction Statistics. This document will explain and outline the procedures for the Transaction Statistics Reporting. The policy on reporting is stated in https://openpeppol.atlassian.net/wiki/spaces/AF/pages/2891251733/Peppol+Interoperability+Framework+1+Juy+2022[Internal Regulations for Use of the Peppol Network]. - :leveloffset: +1 include::structure.adoc[] diff --git a/src/tsr/docs/bis/doc-section/1intro/ref.adoc b/src/tsr/docs/bis/doc-section/1intro/ref.adoc index c83447f..5d1cea1 100644 --- a/src/tsr/docs/bis/doc-section/1intro/ref.adoc +++ b/src/tsr/docs/bis/doc-section/1intro/ref.adoc @@ -1,3 +1,3 @@ = References -* https://openpeppol.atlassian.net/wiki/spaces/AF/pages/2889252865/Internal+Regulations[Internal Regulations - Use of Peppol Network_v1.0] +* https://openpeppol.atlassian.net/wiki/spaces/AF/pages/2889252865/Internal+Regulations[Internal Regulations - Use of Peppol Network v2.0] diff --git a/src/tsr/docs/bis/doc-section/1intro/scope.adoc b/src/tsr/docs/bis/doc-section/1intro/scope.adoc index 6e81f13..47494ac 100644 --- a/src/tsr/docs/bis/doc-section/1intro/scope.adoc +++ b/src/tsr/docs/bis/doc-section/1intro/scope.adoc @@ -1,8 +1,9 @@ = Scope -This document is concerned with clarifying the requirements for ensuring compliance to the Internal Regulations (IR) requirements and provides guidelines for the support and implementation of these requirements. -This document will also provide a detailed implementation guideline for the Transaction Statistics Report transactions; -to do that, the document sets out the processes and procedure for Transaction Statistics reporting process including: +This document is concerned with clarifying the requirements for ensuring compliance to the Internal Regulations (IR) + requirements and provides guidelines for the support and implementation of these requirements. +This document will also provide a detailed implementation guideline for the Transaction Statistics Report transaction; +to do that, the document sets out the processes and procedure for Transaction Statistics Reporting process including: . Parties and Roles, . Document Structure, diff --git a/src/tsr/docs/bis/doc-section/2busproc/parties.adoc b/src/tsr/docs/bis/doc-section/2busproc/parties.adoc index fedd159..88f7841 100644 --- a/src/tsr/docs/bis/doc-section/2busproc/parties.adoc +++ b/src/tsr/docs/bis/doc-section/2busproc/parties.adoc @@ -9,10 +9,10 @@ The reporting Service Provider is mandatory information in each Transaction Stat Each SP will: * Collect relevant data, taking care of the accuracy and validity of this data. -* Report this data in accordance to this specification in a standardized and structured dataset. -* Ensure all data for a Reporting Period is reported within 10 calendar days following the end of the Reporting Period. - Note: the Reporting Period is defined by the PCA in a separate document. -* Transmit the Peppol Transaction Statistics Report document to the PCA in accordance with this specification. +* Report this data in accordance to this document in a standardized and structured dataset. +* Ensure all data for a Reporting Period is reported within the Statistics Report Submitting Period following the end of the Reporting Period. + + Note: the Reporting Period and the Statistics Report Submitting Period are defined by OpenPeppol in a separate document. +* Transmit the Peppol Transaction Statistics Report document to OpenPeppol in accordance with this specification. == OpenPeppol Operating Office (OO) diff --git a/src/tsr/docs/bis/doc-section/2busproc/process.adoc b/src/tsr/docs/bis/doc-section/2busproc/process.adoc index cb4271e..c1b97b2 100644 --- a/src/tsr/docs/bis/doc-section/2busproc/process.adoc +++ b/src/tsr/docs/bis/doc-section/2busproc/process.adoc @@ -1,7 +1,6 @@ = Transaction statistics Reporting Process -The following diagrams provide an overview of the key steps when -Service Providers are reporting Transaction Statistics: +The following diagrams provide an overview of the key steps when SPs are reporting Transaction Statistics: image::./images/tsr-process-simple.png[] @@ -17,18 +16,17 @@ image::./images/tsr-process-view.png[] ** A Reporting Period ends at 23:59:59 UTC (inclusive) of the last day. * Data -** Only Service Providers operating a production Peppol Access Point MUST gather this data and transmit a Transaction Statistics Report. +** Only SPs operating a production Peppol Access Point MUST gather this data and transmit a Transaction Statistics Report. ** Only data for the production network MUST be gathered. -** According to the Internal Regulations (IR), chapter 4.4, the following information elements need to be gathered for each exchanged Dataset: +** The following information elements need to be gathered for each exchanged Dataset: 1. Timing of the exchange 2. Direction of the exchange (incoming or outgoing) - 3. Sending Peppol Service Provider - 4. Receiving Peppol Service Provider -// NOTE: Process ID was deliberately left out in order to ensure alignment with the IR - 5. Peppol Dataset Type (Document Type ID) + 3. Sending Peppol Service Provider ID + 4. Receiving Peppol Service Provider ID + 5. Peppol Dataset Type ID (Document Type ID) and Process ID 6. Transport protocol used 7. Country of sender^*^ - 8. Country of receiver^*^ + 8. Country of receiver^**^ ** Only Dataset exchanges that resulted in a positive transport level acknowledgment (like AS4 Receipts) MUST be included in the Transaction @@ -36,16 +34,17 @@ image::./images/tsr-process-view.png[] level MUST NOT to be considered for the report. ** End User Statistics Reports MUST NOT be counted for a Transaction Statistics Report ** Transaction Statistics Reports MUST NOT be counted for a Transaction Statistics Report -** Only the sending SP MUST count the message as 'outgoing' and only the receiving SP MUST count the same message as 'incoming'. +** Only the sending SP (C2) MUST count the message as 'outgoing' and only the receiving SP (C3) MUST count the same message as 'incoming'. -NOTE: ^*^ The Country of sender and receiver will be mandatory, once the backing eDEC specifications become mandatory +NOTE: ^*^ The Country of sender will be mandatory, once the backing eDEC specification becomes mandatory +NOTE: ^**^ The Country of receiver can only be determined by the receiving SP (C3) == Data Aggregation Before the Transaction Statistics Report data is transmitted to OpenPeppol it needs to be aggregated. The aggregation can be performed on any of the - above-mentioned source fields defined by the Internal Regulations. + above-mentioned source fields. The following aggregations MUST be provided to be compliant to this specification: @@ -60,18 +59,17 @@ The following aggregations MAY be provided to be compliant to this specification * Frequency ** A Transaction Statistics Report MUST be transmitted once per Reporting Period. -** A Transaction Statistics Report MUST be transmitted within 10 calendar days (inclusive) after the end of the previous Reporting Period. +** A Transaction Statistics Report MUST be transmitted within the Statistics Report Submitting Period after the end of the previous Reporting Period. ** The Transaction Statistics Report MUST be transmitted, even if no other Peppol exchange happened in the Reporting Period. -** In case the Transaction Statistics Report of one Service Provider is received multiple times for one Reporting Period, only the latest received document will be processed. -** Transaction Statistics Reports received after the deadline WILL NOT be processed. +** In case the Transaction Statistics Report of one SP is received multiple times for one Reporting Period, only the latest received document will be processed. +** Transaction Statistics Reports received after the deadline (=the end of the Statistics Report Submitting Period) WILL NOT be processed. * Data ** Only Transaction Statistics Reports on the Production environment MUST be transmitted. -** Each Transaction Statistics MUST NOT occur more than once in a Transaction Statistics Report. +** Each Subtotal key combination MUST NOT occur more than once in a Transaction Statistics Report. ** The data of each Transaction Statistics MUST be reported in the designated elements. ** The Reporting Period MUST be part of the Transaction Statistics Report. -** An identifier uniquely identifying the reporting Service Provider. - MUST be part of the Transaction Statistics Report. +** An identifier uniquely identifying the reporting SP MUST be part of the Transaction Statistics Report. * Network ** Transaction Statistics Reports MUST be transmitted via the Peppol eDelivery Network. diff --git a/src/tsr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml b/src/tsr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml index 8c0fcf8..62c5c88 100644 --- a/src/tsr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml +++ b/src/tsr/docs/bis/doc-section/3syntax/snippet/snippet-1.xml @@ -45,7 +45,7 @@ POP000001 urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - 5 + 23 0 @@ -57,7 +57,7 @@ urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 AT DE - 4 + 23 0 diff --git a/src/tsr/docs/bis/doc-section/3syntax/subtotal.adoc b/src/tsr/docs/bis/doc-section/3syntax/subtotal.adoc index 2db5b25..4b67cc6 100644 --- a/src/tsr/docs/bis/doc-section/3syntax/subtotal.adoc +++ b/src/tsr/docs/bis/doc-section/3syntax/subtotal.adoc @@ -8,7 +8,10 @@ The technical representation of the subtotals was designed in a generic way, Each `Subtotal` element therefore requires a `@type` attribute that defines the type of the subtotal. The value range is defined by the <> code list. - + +Subtotals without any matching transaction (i.e. if `Incoming` is `0` and if `Outgoing` is `0`) + MUST NOT be part of the Report. + All values in this subchapter are case-sensitive, except stated otherwise. == Subtotal per Transport Protocol @@ -28,7 +31,7 @@ The sum all incoming amounts per Transport Protocol MUST match the total The sum all outgoing amounts per Transport Protocol MUST match the total outgoing amount. - + .Example of a subtotal per Transport Protocol: [source, xml] ---- @@ -47,7 +50,7 @@ The value of the `Key` element MUST follow the rules of the chosen scheme. * This subtotal requires one `Key` element with a Meta Scheme ID of `DT` (Dataset Type). The `schemeID` attribute of this `Key` element MUST be the Document Type - Identifier Scheme of the exchanged Dataset (usually `busdox-docid-qns`). + Identifier Scheme of the exchanged Dataset (usually `busdox-docid-qns` or `peppol-doctype-wildcard`). The value of the `Key` element MUST be the Dataset Type (Document Type) Identifier value of the exchanged Dataset. * This subtotal requires one `Key` element with a Meta Scheme ID of `PR` @@ -66,10 +69,9 @@ The sum all incoming amounts per Service Provider, Dataset Type and Process ID M The sum all outgoing amounts per Service Provider, Dataset Type and Process ID MUST match the total outgoing amount. -NOTE: For outgoing messages, only the receiving Service Provider needs - to be counted. For incoming messages, only the sending Service Provider needs - to be counted. The other side must always be the reporting Service Provider - that is already part of the header data. +NOTE: For outgoing messages, only the receiving SP (C3) needs to be counted. + For incoming messages, only the sending SP (C2) needs to be counted. + The other side must always be the reporting SP that is already part of the Report header data. .Example of a subtotal per Service Provider, Dataset Type and Process ID: [source, xml] @@ -88,7 +90,7 @@ The value of the `Key` element MUST follow the rules of the chosen scheme. * This subtotal requires one `Key` element with a Meta Scheme ID of `DT` (Dataset Type). The `schemeID` attribute of this `Key` element MUST be the Document Type - Identifier Scheme of the exchanged Dataset (usually `busdox-docid-qns`). + Identifier Scheme of the exchanged Dataset (usually `busdox-docid-qns` or `peppol-doctype-wildcard`). The value of the `Key` element MUST be the Dataset Type (Document Type) Identifier value of the exchanged Dataset. * This subtotal requires one `Key` element with a Meta Scheme ID of `PR` @@ -109,24 +111,16 @@ The value of the `Key` element MUST have a value according to the Each combination of Service Provider, Dataset Type, Process ID, Sender Country and Receiver Country MUST be reported in a separate `Subtotal` element. -The sum all incoming amounts `PerSP-DT-PR-CC` Type MUST match the total incoming amount. - -The sum all outgoing amounts `PerSP-DT-PR-CC` MUST match the total outgoing amount. - +The sum all incoming amounts per Service Provider, Dataset Type, Process ID and + Country Code MUST match the total incoming amount. ==== -IMPORTANT: This subtotal can only be counted by receiving Service Providers, because only those have the full data available. -The outgoing count in this subtotal MUST always be `0`. +IMPORTANT: This subtotal can only be counted by receiving SPs (C3), because only those have the full data available. + The outgoing count in this subtotal MUST always be `0`. ==== - -NOTE: For incoming messages, only the sending Service Provider needs - to be counted. The other side must always be the reporting Service Provider - that is already part of the header data. - - -NOTE: This subtotal is optional and will be mandatory when the backing eDEC -specifications become mandatory. +NOTE: For incoming messages, only the sending SP (C2) needs to be counted. + The other side must always be the reporting SP that is already part of the Report header data. .Example of a subtotal per Service Provider, Dataset Type, Process ID and Country Codes: diff --git a/src/tsr/docs/bis/doc-section/appendix/a1.adoc b/src/tsr/docs/bis/doc-section/appendix/a1.adoc index 1ecb00d..00f24bb 100644 --- a/src/tsr/docs/bis/doc-section/appendix/a1.adoc +++ b/src/tsr/docs/bis/doc-section/appendix/a1.adoc @@ -4,7 +4,8 @@ The following example report represents a valid example message. This example represents the data for a Service Provider that both sent and received documents within a Reporting Period. +// Note: empty lines in the source code kill the XML formatting [source, xml] ---- -include::../../../../trn-transaction_statistics/example/transaction-statistics-2.xml[] +include::../../../../trn-transaction_statistics/example/transaction-statistics-appendix1.xml[] ---- diff --git a/src/tsr/docs/bis/doc-section/appendix/a2.adoc b/src/tsr/docs/bis/doc-section/appendix/a2.adoc index 579fee7..1c356ec 100644 --- a/src/tsr/docs/bis/doc-section/appendix/a2.adoc +++ b/src/tsr/docs/bis/doc-section/appendix/a2.adoc @@ -4,7 +4,8 @@ The following example report represents a valid example message. This example represents a message in case no transmissions were performed within a Reporting Period. +// Note: empty lines in the source code kill the XML formatting [source, xml] ---- -include::../../../../trn-transaction_statistics/example/transaction-statistics-empty.xml[] +include::../../../../trn-transaction_statistics/example/transaction-statistics-appendix2.xml[] ---- diff --git a/src/tsr/docs/bis/images/tsr-process-simple.png b/src/tsr/docs/bis/images/tsr-process-simple.png index a6eea21..5de8481 100644 Binary files a/src/tsr/docs/bis/images/tsr-process-simple.png and b/src/tsr/docs/bis/images/tsr-process-simple.png differ diff --git a/src/tsr/docs/bis/settings.adoc b/src/tsr/docs/bis/settings.adoc index f05a853..10539bd 100644 --- a/src/tsr/docs/bis/settings.adoc +++ b/src/tsr/docs/bis/settings.adoc @@ -1,7 +1,7 @@ :lang: en :doctitle: Peppol Transaction Statistics Reporting Process -:version: 1.0.1 +:version: 1.0.2 :doctype: book -:name-op-en: OpenPeppol AISBL, Operating Office +:name-op-en: OpenPeppol AISBL, eDEC diff --git a/src/tsr/process.yaml b/src/tsr/process.yaml index fc591be..6bb64a0 100644 --- a/src/tsr/process.yaml +++ b/src/tsr/process.yaml @@ -1,4 +1,4 @@ --- -title: Peppol Transaction Statistics Reporting - v1.0.1 +title: Peppol Transaction Statistics Reporting - v1.0.2 description: Peppol Transaction Statistics Reporting Process -version: "1.0.1" +version: "1.0.2" diff --git a/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-1.xml b/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-1.xml index 58e7628..053886e 100644 --- a/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-1.xml +++ b/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-1.xml @@ -77,7 +77,7 @@ POP000001 urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 - ZZ + AA DE 2 0 diff --git a/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-2.xml b/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-2.xml index 02694b3..f300f8a 100644 --- a/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-2.xml +++ b/src/tsr/trn-transaction_statistics/bad-examples/tsr-20-2.xml @@ -88,7 +88,7 @@ urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 AT - ZZ + AA 16 0 diff --git a/src/tsr/trn-transaction_statistics/codelist/ISO3166.yaml b/src/tsr/trn-transaction_statistics/codelist/ISO3166.yaml index 3c70469..cc6fd6a 100644 --- a/src/tsr/trn-transaction_statistics/codelist/ISO3166.yaml +++ b/src/tsr/trn-transaction_statistics/codelist/ISO3166.yaml @@ -522,7 +522,7 @@ codes: - id: NL name: en: Netherlands -- id: NO +- id: 'NO' name: en: Norway nb: Norge @@ -784,3 +784,7 @@ codes: - id: XI name: en: United Kingdom (Northern Ireland) +# For TSR only! +- id: ZZ + name: + en: The Peppol sending SP did not include the mandatory `COUNTRY_C1` in its SBDH diff --git a/src/tsr/trn-transaction_statistics/example/transaction-statistics-2.xml b/src/tsr/trn-transaction_statistics/example/transaction-statistics-2.xml index 28c2026..ba74adf 100644 --- a/src/tsr/trn-transaction_statistics/example/transaction-statistics-2.xml +++ b/src/tsr/trn-transaction_statistics/example/transaction-statistics-2.xml @@ -9,17 +9,21 @@ POP000360 + 19 17 + peppol-transport-as4-v2_0 19 17 + + @@ -29,6 +33,7 @@ 5 3 + POP000001 urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 @@ -36,6 +41,8 @@ 2 2 + + POP000002 @@ -44,6 +51,8 @@ 0 12 + + POP000002 @@ -53,6 +62,7 @@ 0 + @@ -64,6 +74,7 @@ 4 0 + POP000001 urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 @@ -73,6 +84,7 @@ 1 0 + POP000001 urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 @@ -82,6 +94,7 @@ 2 0 + POP000002 urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 @@ -91,6 +104,7 @@ 7 0 + POP000002 urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 @@ -101,4 +115,5 @@ 0 + diff --git a/src/tsr/trn-transaction_statistics/example/transaction-statistics-3.xml b/src/tsr/trn-transaction_statistics/example/transaction-statistics-3.xml new file mode 100644 index 0000000..3ebd442 --- /dev/null +++ b/src/tsr/trn-transaction_statistics/example/transaction-statistics-3.xml @@ -0,0 +1,49 @@ + + + urn:fdc:peppol.eu:edec:trns:transaction-statistics-reporting:1.0 + urn:fdc:peppol.eu:edec:bis:reporting:1.0 +
+ + 2022-01-01 + 2022-01-31 + + POP000360 +
+ + + + 0 + 17 + + + + + peppol-transport-as4-v2_0 + 0 + 17 + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 0 + 3 + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 0 + 2 + + + + POP000002 + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + cenbii-procid-ubl::urn:fdc:peppol.eu:poacc:bis:ordering:3 + 0 + 12 + +
diff --git a/src/tsr/trn-transaction_statistics/example/transaction-statistics-4.xml b/src/tsr/trn-transaction_statistics/example/transaction-statistics-4.xml new file mode 100644 index 0000000..77b8203 --- /dev/null +++ b/src/tsr/trn-transaction_statistics/example/transaction-statistics-4.xml @@ -0,0 +1,119 @@ + + + urn:fdc:peppol.eu:edec:trns:transaction-statistics-reporting:1.0 + urn:fdc:peppol.eu:edec:bis:reporting:1.0 +
+ + 2022-01-01 + 2022-01-31 + + POP000360 +
+ + + + 19 + 17 + + + + + peppol-transport-as4-v2_0 + 19 + 17 + + + + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 5 + 3 + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 2 + 2 + + + + + + POP000002 + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + cenbii-procid-ubl::urn:fdc:peppol.eu:poacc:bis:ordering:3 + 0 + 12 + + + + + + POP000002 + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + cenbii-procid-ubl::urn:fdc:peppol.eu:poacc:bis:ordering:3 + 12 + 0 + + + + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + AT + DE + 4 + 0 + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + DE + DE + 1 + 0 + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + BE + DE + 2 + 0 + + + + POP000002 + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + cenbii-procid-ubl::urn:fdc:peppol.eu:poacc:bis:ordering:3 + DE + AT + 7 + 0 + + + + POP000002 + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + cenbii-procid-ubl::urn:fdc:peppol.eu:poacc:bis:ordering:3 + ZZ + ZZ + 5 + 0 + + + +
diff --git a/src/tsr/trn-transaction_statistics/example/transaction-statistics-appendix1.xml b/src/tsr/trn-transaction_statistics/example/transaction-statistics-appendix1.xml new file mode 100644 index 0000000..3443956 --- /dev/null +++ b/src/tsr/trn-transaction_statistics/example/transaction-statistics-appendix1.xml @@ -0,0 +1,101 @@ + + + urn:fdc:peppol.eu:edec:trns:transaction-statistics-reporting:1.0 + urn:fdc:peppol.eu:edec:bis:reporting:1.0 +
+ + 2023-12-01 + 2023-12-31 + + POP000360 +
+ + + 27 + 23 + + + + + peppol-transport-as4-v2_0 + 27 + 23 + + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 2 + 0 + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + 13 + 11 + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + 12 + 0 + + + POP000002 + urn:oasis:names:specification:ubl:schema:xsd:Order-2::Order##urn:fdc:peppol.eu:poacc:trns:order:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + 0 + 12 + + + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + BE + DE + 2 + 0 + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + DE + AT + 4 + 0 + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1 + urn:fdc:peppol.eu:2017:poacc:billing:01:1.0 + DE + DE + 9 + 0 + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + DE + AT + 7 + 0 + + + POP000001 + urn:oasis:names:specification:ubl:schema:xsd:OrderResponse-2::OrderResponse##urn:fdc:peppol.eu:poacc:trns:order_response:3::2.1 + urn:fdc:peppol.eu:poacc:bis:ordering:3 + DE + DE + 5 + 0 + +
diff --git a/src/tsr/trn-transaction_statistics/example/transaction-statistics-appendix2.xml b/src/tsr/trn-transaction_statistics/example/transaction-statistics-appendix2.xml new file mode 100644 index 0000000..a8c1783 --- /dev/null +++ b/src/tsr/trn-transaction_statistics/example/transaction-statistics-appendix2.xml @@ -0,0 +1,18 @@ + + + urn:fdc:peppol.eu:edec:trns:transaction-statistics-reporting:1.0 + urn:fdc:peppol.eu:edec:bis:reporting:1.0 +
+ + 2023-12-01 + 2023-12-31 + + POP000360 +
+ + + 0 + 0 + + +
diff --git a/src/tsr/trn-transaction_statistics/example/transaction-statistics-empty.xml b/src/tsr/trn-transaction_statistics/example/transaction-statistics-minimal.xml similarity index 100% rename from src/tsr/trn-transaction_statistics/example/transaction-statistics-empty.xml rename to src/tsr/trn-transaction_statistics/example/transaction-statistics-minimal.xml diff --git a/src/tsr/trn-transaction_statistics/schematron/peppol-transaction-statistics-reporting-1.0.sch b/src/tsr/trn-transaction_statistics/schematron/peppol-transaction-statistics-reporting-1.0.4.sch similarity index 78% rename from src/tsr/trn-transaction_statistics/schematron/peppol-transaction-statistics-reporting-1.0.sch rename to src/tsr/trn-transaction_statistics/schematron/peppol-transaction-statistics-reporting-1.0.4.sch index 778620b..1c10a40 100644 --- a/src/tsr/trn-transaction_statistics/schematron/peppol-transaction-statistics-reporting-1.0.sch +++ b/src/tsr/trn-transaction_statistics/schematron/peppol-transaction-statistics-reporting-1.0.4.sch @@ -11,8 +11,16 @@ Author: Philip Helger + Muhammet Yildiz History: + v1.0.4 + 2023-11-02, Philip Helger - add country code `ZZ` as an allowed one + v1.0.3 + 2023-10-12, Muhammet Yildiz - replaced $xyz values with `value-of select ="$xyz"` in the messages + v1.0.2 + 2023-09-18, Philip Helger - re-enabled SCH-TSR-11 + fixed test and level of SCH-TSR-12 v1.0.1 2023-03-14, Philip Helger - removed rule SCH-TSR-13; added rule SCH-TSR-43 v1.0.0 @@ -23,7 +31,7 @@ - + @@ -41,28 +49,33 @@ [SCH-TSR-03] The subtotals per $name_tp MUST exist + >[SCH-TSR-03] The subtotals per MUST exist [SCH-TSR-04] The sum of all subtotals per $name_tp incoming MUST match the total incoming count + >[SCH-TSR-04] The sum of all subtotals per incoming MUST match the total incoming count [SCH-TSR-05] The sum of all subtotals per $name_tp outgoing MUST match the total outgoing count + >[SCH-TSR-05] The sum of all subtotals per outgoing MUST match the total outgoing count [SCH-TSR-06] Each $name_tp MUST occur only once. + >[SCH-TSR-06] Each MUST occur only once. + [SCH-TSR-07] The subtotals per $name_spdtpr MUST exist + >[SCH-TSR-07] The subtotals per MUST exist + + [SCH-TSR-08] The sum of all subtotals per $name_spdtpr incoming MUST match the total incoming count + >[SCH-TSR-08] The sum of all subtotals per incoming MUST match the total incoming count [SCH-TSR-09] The sum of all subtotals per $name_spdtpr outgoing MUST match the total outgoing count + >[SCH-TSR-09] The sum of all subtotals per outgoing MUST match the total outgoing count + + [SCH-TSR-10] Each combination of $name_spdtpr MUST occur only once. + >[SCH-TSR-10] Each combination of MUST occur only once. + - - - [SCH-TSR-12] The sum of all subtotals per $name_spdtprcc incoming MUST match the total incoming count + + + [SCH-TSR-11] The subtotals per MUST exist + + + [SCH-TSR-12] The sum of all subtotals per incoming MUST match the total incoming count + [SCH-TSR-13] The sum of all subtotals per outgoing MUST match the total outgoing count + --> + + [SCH-TSR-14] Each combination of $name_spdtprcc MUST occur only once. + >[SCH-TSR-14] Each combination of MUST occur only once. [SCH-TSR-21] $name MUST have one Key element + >[SCH-TSR-21] MUST have one Key element [SCH-TSR-22] $name MUST have one Key element with the meta scheme ID 'TP' + >[SCH-TSR-22] MUST have one Key element with the meta scheme ID 'TP' [SCH-TSR-23] $name MUST have one Key element with the scheme ID 'Peppol' + >[SCH-TSR-23] MUST have one Key element with the scheme ID 'Peppol' [SCH-TSR-24] $name MUST have three Key elements + >[SCH-TSR-24] MUST have three Key elements [SCH-TSR-25] $name MUST have one Key element with the meta scheme ID 'SP' + >[SCH-TSR-25] MUST have one Key element with the meta scheme ID 'SP' [SCH-TSR-26] $name MUST have one Key element with the meta scheme ID 'DT' + >[SCH-TSR-26] MUST have one Key element with the meta scheme ID 'DT' [SCH-TSR-27] $name MUST have one Key element with the meta scheme ID 'PR' + >[SCH-TSR-27] MUST have one Key element with the meta scheme ID 'PR' [SCH-TSR-28] $name MUST have one SP Key element with the scheme ID coded according to the code list + >[SCH-TSR-28] MUST have one SP Key element with the scheme ID coded according to the code list [SCH-TSR-29] $name MUST have five Key elements + >[SCH-TSR-29] MUST have five Key elements [SCH-TSR-30] $name MUST have one Key element with the meta scheme ID 'SP' + >[SCH-TSR-30] MUST have one Key element with the meta scheme ID 'SP' [SCH-TSR-31] $name MUST have one Key element with the meta scheme ID 'DT' + >[SCH-TSR-31] MUST have one Key element with the meta scheme ID 'DT' [SCH-TSR-32] $name MUST have one Key element with the meta scheme ID 'PR' + >[SCH-TSR-32] MUST have one Key element with the meta scheme ID 'PR' [SCH-TSR-33] $name MUST have two Key elements with the meta scheme ID 'CC' + >[SCH-TSR-33] MUST have two Key elements with the meta scheme ID 'CC' [SCH-TSR-34] $name MUST have one SP Key element with the scheme ID coded according to the code list + >[SCH-TSR-34] MUST have one SP Key element with the scheme ID coded according to the code list [SCH-TSR-35] $name MUST have one CC Key element with the scheme ID 'SenderCountry' + >[SCH-TSR-35] MUST have one CC Key element with the scheme ID 'SenderCountry' [SCH-TSR-36] $name MUST have one CC Key element with the scheme ID 'ReceiverCountry' + >[SCH-TSR-36] MUST have one CC Key element with the scheme ID 'ReceiverCountry' [SCH-TSR-43] $name MUST have a 'Outgoing' value of '0' because that data cannot be gathered + >[SCH-TSR-43] MUST have a 'Outgoing' value of '0' because that data cannot be gathered diff --git a/src/tsr/trn-transaction_statistics/transaction.yaml b/src/tsr/trn-transaction_statistics/transaction.yaml index a67ccc7..ad6365b 100644 --- a/src/tsr/trn-transaction_statistics/transaction.yaml +++ b/src/tsr/trn-transaction_statistics/transaction.yaml @@ -10,5 +10,4 @@ validation: # xsd is for verifying XSD conformance xsd: resources/xsd/peppol-transaction-statistics-reporting-1.0.xsd schematron: - - schematron/peppol-transaction-statistics-reporting-1.0.sch - \ No newline at end of file + - schematron/peppol-transaction-statistics-reporting-1.0.4.sch