Skip to content

Commit 1228970

Browse files
committed
Merge remote-tracking branch 'upstream/2024-q4-dev' into development-nrs
2 parents 96a05af + 90665c5 commit 1228970

File tree

12 files changed

+49
-63
lines changed

12 files changed

+49
-63
lines changed

.github/workflows/build-and-deploy-master.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,11 @@ jobs:
1212
uses: actions/checkout@v2
1313

1414
- name: Build Spec
15-
run: bash ./build2.sh
15+
run: bash ./build.sh
16+
17+
- name: Deploy on S3
18+
env:
19+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
20+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
21+
run: |
22+
aws s3 sync --acl public-read --region eu-west-1 target/site ${{ secrets.AWS_S3_PATH }}/poacc/billing/3.0

README.adoc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@
33
This repository contains the resources making up PEPPOL BIS Billing 3.0.
44

55
Please use our link:https://openpeppol.atlassian.net/servicedesk/customer/portal/1[Service desk] to report any issues related to the specification.
6-

build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ docker run --rm -i \
1414

1515

1616
# Validator
17-
docker run --rm -i -v $PROJECT:/src phelger/vefa-validator:2.3.0 build -x -t -n eu.peppol.postaward.v3.billing -a rules,guide -target target/validator /src
17+
docker run --rm -i -v $PROJECT:/src phelger/vefa-validator:latest build -x -t -n eu.peppol.postaward.v3.billing -a rules,guide -target target/validator /src
1818

1919

2020
# Generate adoc-files from rules

build2.sh

Lines changed: 0 additions & 37 deletions
This file was deleted.

guide/profile/codes/invoice-specific.adoc

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ include::../../syntax/codelists/inv-type.adoc[]
6363
| 380
6464
| Invoice
6565

66-
// |326
67-
// |Partial invoice
68-
// |Document/message specifying details of an incomplete invoice.
69-
// | 380
70-
// | Invoice
66+
|326
67+
|Partial invoice
68+
|Document/message specifying details of an incomplete invoice.
69+
| 380
70+
| Invoice
7171

7272
|331
7373
|Commercial invoice which includes a packing list
@@ -87,11 +87,11 @@ include::../../syntax/codelists/inv-type.adoc[]
8787
| 380
8888
| Invoice
8989

90-
// |384
91-
// |Corrected invoice
92-
// |Commercial invoice that includes revised information differing from an earlier submission of the same invoice.
93-
// | 380
94-
// | Invoice
90+
|384
91+
|Corrected invoice
92+
|Commercial invoice that includes revised information differing from an earlier submission of the same invoice.
93+
| 380
94+
| Invoice
9595

9696
|386
9797
|Prepayment invoice

guide/release-notes/main.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ IMPORTANT: Changes in code lists are also reflected by changes in the validation
1515

1616
:leveloffset: +1
1717

18+
include::v3.0.18.adoc[]
19+
1820
include::v3.0.17.adoc[]
1921

2022
include::v3.0.16.adoc[]

guide/release-notes/v3.0.18.adoc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
= Version 3.0.18
2+
[horizontal]
3+
Release date:: November 2024
4+
5+
== Changes to BIS document
6+
7+
8+
== Changes to code lists and validation artefacts
9+
10+
* Invoice Type codes 326 (Partial invoice) and 384 (Corrected invoice) added to the codelist and listed as synonyms with type code 380 (Commercial Invoice)
11+
* German country specific validation rules added.
12+
* The rule (PEPPOL-EN16931-R002), which ensures that the Invoice Note (BT-22) appears no more than once, will not apply if both the buyer and seller are German organizations.
13+
14+
== EN 16931 schematrons updated

rules/sch/PEPPOL-EN16931-CII.sch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ Last update: 2024 May release 3.0.17.
566566
</rule>
567567
<rule context="ram:ExchangedDocument/ram:TypeCode">
568568
<assert id="PEPPOL-EN16931-P0100" test="
569-
$profile != '01' or (some $code in tokenize('71 102 218 219 331 382 553 817 870 875 876 877 380 383 386 388 393 82 80 84 395 575 623 780 381 396 81 83 532', '\s')
569+
$profile != '01' or (some $code in tokenize('71 102 218 219 326 331 382 553 817 870 875 876 877 380 383 384 386 388 393 82 80 84 395 575 623 780 381 396 81 83 532', '\s')
570570
satisfies normalize-space(text()) = $code)" flag="fatal">Invoice type code MUST be set according to the profile.</assert>
571571
</rule>
572572
<!-- PEPPOL-EN16931-P0101 is part of PEPPOL-EN16931-P0100. -->

rules/sch/PEPPOL-EN16931-UBL.sch

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ Last update: 2024 May release 3.0.17.
3838
else
3939
'XX'"/>
4040
<!-- -->
41+
<let name="supplierCountryIsDE"
42+
value="(upper-case(normalize-space(/*/cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode)) = 'DE')"/>
43+
<let name="customerCountryIsDE"
44+
value="(upper-case(normalize-space(/*/cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode)) = 'DE')"/>
45+
4146
<let name="documentCurrencyCode" value="/*/cbc:DocumentCurrencyCode"/>
4247
<!-- Functions -->
4348
<function xmlns="http://www.w3.org/1999/XSL/Transform" name="u:gln" as="xs:boolean">
@@ -252,7 +257,7 @@ Last update: 2024 May release 3.0.17.
252257
<rule context="ubl-creditnote:CreditNote | ubl-invoice:Invoice">
253258
<assert id="PEPPOL-EN16931-R001" test="cbc:ProfileID" flag="fatal">Business process MUST be provided.</assert>
254259
<assert id="PEPPOL-EN16931-R007" test="$profile != 'Unknown'" flag="fatal">Business process MUST be in the format 'urn:fdc:peppol.eu:2017:poacc:billing:NN:1.0' where NN indicates the process number.</assert>
255-
<assert id="PEPPOL-EN16931-R002" test="count(cbc:Note) &lt;= 1" flag="fatal">No more than one note is allowed on document level.</assert>
260+
<assert id="PEPPOL-EN16931-R002" test="count(cbc:Note) &lt;= 1 or ($supplierCountryIsDE and $customerCountryIsDE)" flag="fatal">No more than one note is allowed on document level, unless both the buyer and seller are German organizations.</assert>
256261
<assert id="PEPPOL-EN16931-R003" test="cbc:BuyerReference or cac:OrderReference/cbc:ID" flag="fatal">A buyer reference or purchase order reference MUST be provided.</assert>
257262
<assert id="PEPPOL-EN16931-R004" test="starts-with(normalize-space(cbc:CustomizationID/text()), 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0')" flag="fatal">Specification identifier MUST have the value 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0'.</assert>
258263
<assert id="PEPPOL-EN16931-R053" test="count(cac:TaxTotal[cac:TaxSubtotal]) = 1" flag="fatal">Only one tax total with tax subtotals MUST be provided.</assert>
@@ -684,10 +689,6 @@ Last update: 2024 May release 3.0.17.
684689
</pattern>
685690
<!-- German rules -->
686691
<pattern id="german-rules">
687-
<let name="supplierCountryIsDE"
688-
value="(upper-case(normalize-space(/*/cac:AccountingSupplierParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode)) = 'DE')"/>
689-
<let name="customerCountryIsDE"
690-
value="(upper-case(normalize-space(/*/cac:AccountingCustomerParty/cac:Party/cac:PostalAddress/cac:Country/cbc:IdentificationCode)) = 'DE')"/>
691692
<let name="XR-SKONTO-REGEX"
692693
value="'#(SKONTO)#TAGE=([0-9]+#PROZENT=[0-9]+\.[0-9]{2})(#BASISBETRAG=-?[0-9]+\.[0-9]{2})?#$'"/>
693694
<let name="XR-EMAIL-REGEX"
@@ -847,7 +848,7 @@ Last update: 2024 May release 3.0.17.
847848
</rule>
848849
<rule context="cbc:InvoiceTypeCode">
849850
<assert id="PEPPOL-EN16931-P0100" test="
850-
$profile != '01' or (some $code in tokenize('71 80 82 84 102 218 219 331 380 382 383 386 388 393 395 553 575 623 780 817 870 875 876 877', '\s')
851+
$profile != '01' or (some $code in tokenize('71 80 82 84 102 218 219 326 331 380 382 383 384 386 388 393 395 553 575 623 780 817 870 875 876 877', '\s')
851852
satisfies normalize-space(text()) = $code)" flag="fatal">Invoice type code MUST be set according to the profile.</assert>
852853
</rule>
853854
<rule context="cbc:CreditNoteTypeCode">

structure/codelist/UNCL1001-inv.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@
5757
<Description> A request for payment for completed units.</Description>
5858
</Code>
5959

60-
<!-- <Code>
60+
<Code>
6161
<Id>326</Id>
6262
<Name>Partial invoice</Name>
6363
<Description>Document/message specifying details of an incomplete invoice.</Description>
64-
</Code> -->
64+
</Code>
6565

6666
<Code>
6767
<Id>331</Id>
@@ -92,11 +92,11 @@
9292
</Description>
9393
</Code>
9494

95-
<!-- <Code>
95+
<Code>
9696
<Id>384</Id>
9797
<Name>Corrected invoice</Name>
9898
<Description>Commercial invoice that includes revised information differing from an earlier submission of the same invoice.</Description>
99-
</Code> -->
99+
</Code>
100100

101101
<Code>
102102
<Id>386</Id>

structure/syntax/ubl-creditnote.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@
9191
<Value type="EXAMPLE">381</Value>
9292
</Element>
9393

94-
<Element cardinality="0..1">
94+
<Element cardinality="0..n">
9595
<Term>cbc:Note</Term>
9696
<Name>Invoice note</Name>
9797
<Description>A textual note that gives unstructured information that is relevant to the Invoice as a whole.Such as the reason for any correction or

structure/syntax/ubl-invoice.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
<Value type="EXAMPLE">380</Value>
8383
</Element>
8484

85-
<Element cardinality="0..1">
85+
<Element cardinality="0..n">
8686
<Term>cbc:Note</Term>
8787
<Name>Invoice note</Name>
8888
<Description>A textual note that gives unstructured information that is relevant to the Invoice as a whole.Such as the reason for any correction or assignment note in case the invoice has been factored. </Description>

0 commit comments

Comments
 (0)