Skip to content

Commit 6692b04

Browse files
committed
Splitting rules.
1 parent faf6d05 commit 6692b04

12 files changed

+107
-15
lines changed

build.sh

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,29 @@ docker run --rm -it \
1919
difi/vefa-structure:0.4.1 \
2020
-p /src/structure/ubl-creditnote -t /target
2121

22+
2223
# Validator
2324
docker run --rm -it -v $PROJECT:/src difi/vefa-validator build -x -t -a rules,guide -target target/validator /src
2425

26+
2527
# Generate adoc-files from rules
2628

27-
docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/CEN-EN16931-CII.sch -q:tools/xquery/rules_asciidoc_light.xquery -o:/target/CEN-EN16931-CII.sch.adoc
28-
docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/CEN-EN16931-UBL.sch -q:tools/xquery/rules_asciidoc_light.xquery -o:/target/CEN-EN16931-UBL.sch.adoc
29+
# CEN-EN16931-CII
30+
#docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/CEN-EN16931-CII.sch -q:tools/xquery/rules_asciidoc_cen.xquery -o:/target/CEN-EN16931-CII-GENERAL.sch.adoc
31+
#docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/CEN-EN16931-CII.sch -q:tools/xquery/rules_asciidoc_cen_syntax.xquery -o:/target/CEN-EN16931-CII-SYNTAX.sch.adoc
32+
33+
# CEN-EN16931-UBL
34+
docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/CEN-EN16931-UBL.sch -q:tools/xquery/rules_asciidoc_cen.xquery -o:/target/CEN-EN16931-UBL-GENERAL.sch.adoc
35+
docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/CEN-EN16931-UBL.sch -q:tools/xquery/rules_asciidoc_cen_syntax.xquery -o:/target/CEN-EN16931-UBL-SYNTAX.sch.adoc
36+
37+
# PEPPOL-EN16931-UBL
38+
docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/PEPPOL-EN16931-UBL.sch -q:tools/xquery/rules_asciidoc_peppol.xquery -o:/target/PEPPOL-EN16931-UBL-GENERAL.sch.adoc
39+
docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/PEPPOL-EN16931-UBL.sch -q:tools/xquery/rules_asciidoc_peppol_national.xquery -o:/target/PEPPOL-EN16931-UBL-NATIONAL.sch.adoc
2940

30-
docker run --rm -it -v $(pwd):/src -v $(pwd)/target/generated:/target --entrypoint java klakegg/saxon:9.8.0-7 -cp /saxon.jar net.sf.saxon.Query -s:/src/rules/sch/PEPPOL-EN16931-UBL.sch -q:tools/xquery/rules_asciidoc.xquery -o:/target/PEPPOL-EN16931-UBL.sch.adoc
3141

3242
# Guides
3343
docker run --rm -it -v $PROJECT:/documents -v $(pwd)/target:/target difi/asciidoctor
3444

45+
3546
# Fix ownership
3647
docker run --rm -i -v $PROJECT:/src alpine:3.6 chown -R $(id -g $USER).$(id -g $USER) /src/target

guide/bis/cii.adoc renamed to guide/bis/appendix/cii.adoc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
[appendix]
32
= Cross Industry Invoice
43

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
[appendix]
2+
[[national_rules]]
3+
= National rules
4+
5+
The following rules have been defined by PEPPOL Authorities in addition to the rules for {peppol} BIS in general.
6+
These rules apply in *all* profiles that use this transaction specification.
7+
8+
9+
.National transaction business rules
10+
[cols="1,4", options="header"]
11+
|====
12+
|Rule
13+
|Message/Context/Test
14+
15+
include::{rules-dir}/PEPPOL-EN16931-UBL-NATIONAL.sch.adoc[]
16+
|====

guide/bis/appendix/syntax_rules.adoc

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
[appendix]
2+
[[syntax_rules]]
3+
= Syntax rules
4+
5+
The following {EN16931} syntax rules apply to invoice and credit note transaction as it is used in this {peppol} BIS.
6+
7+
.EN 16931 syntax rules
8+
[cols="1,4", options="header"]
9+
|====
10+
|Rule
11+
|Message
12+
13+
include::{rules-dir}/CEN-EN16931-UBL-SYNTAX.sch.adoc[]
14+
|====

guide/bis/main.adoc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ include::../syntax/guideline.adoc[]
3535
include::../transaction-spec/validation/index.adoc[]
3636
include::../transaction-spec/rules/index.adoc[]
3737
include::restrictions/index.adoc[]
38-
include::cii.adoc[]
38+
include::appendix/cii.adoc[]
39+
include::appendix/national_rules.adoc[]
40+
include::appendix/syntax_rules.adoc[]
3941

4042

4143
//include::rules/index.adoc[]

guide/transaction-spec/rules/peppol_rules.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ These rules apply in *all* profiles that use this transaction specification.
1111
|Rule
1212
|Message/Context/Test
1313

14-
include::{rules-dir}/PEPPOL-EN16931-UBL.sch.adoc[]
14+
include::{rules-dir}/PEPPOL-EN16931-UBL-GENERAL.sch.adoc[]
1515
|====

guide/transaction-spec/rules/tc434_rules.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The following {EN16931} rules apply to invoice and credit note transaction as it
77
[cols="1,4", options="header"]
88
|====
99
|Rule
10-
|Message/Context/Test
10+
|Message
1111

12-
include::{rules-dir}/CEN-EN16931-UBL.sch.adoc[]
12+
include::{rules-dir}/CEN-EN16931-UBL-SYNTAX.sch.adoc[]
1313
|====

rules/sch/PEPPOL-EN16931-UBL.sch

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,13 +84,6 @@
8484
<assert id="PEPPOL-EN16931-R020"
8585
test="cbc:EndpointID"
8686
flag="fatal">Seller electronic address MUST be provided</assert>
87-
88-
<assert id="NO-R-001"
89-
test="not($supplierCountry = 'NO') or cac:PartyLegalEntity"
90-
flag="fatal">Norwegian suppliers MUST provide legal entity.</assert>
91-
<assert id="NO-R-002"
92-
test="not($supplierCountry = 'NO') or normalize-space(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID) = 'Foretaksregisteret'"
93-
flag="warning">Most invoice issuers are required to append "Foretaksregisteret" to their invoice. "Dersom selger er aksjeselskap, allmennaksjeselskap eller filial av utenlandsk selskap skal også ordet «Foretaksregisteret» fremgå av salgsdokumentet, jf. foretaksregisterloven § 10-2."</assert>
9487
</rule>
9588

9689
<!-- Allowance/Charge (document level/line level) -->
@@ -186,6 +179,19 @@
186179

187180
</pattern>
188181

182+
<!-- National rules -->
183+
<pattern>
184+
185+
<rule context="cac:AccountingSupplierParty/cac:Party[$supplierCountry = 'NO']">
186+
<assert id="NO-R-001"
187+
test="cac:PartyLegalEntity"
188+
flag="fatal">Norwegian suppliers MUST provide legal entity.</assert>
189+
<assert id="NO-R-002"
190+
test="normalize-space(cac:PartyTaxScheme[normalize-space(cac:TaxScheme/cbc:ID) = 'VAT']/cbc:CompanyID) = 'Foretaksregisteret'"
191+
flag="warning">Most invoice issuers are required to append "Foretaksregisteret" to their invoice. "Dersom selger er aksjeselskap, allmennaksjeselskap eller filial av utenlandsk selskap skal også ordet «Foretaksregisteret» fremgå av salgsdokumentet, jf. foretaksregisterloven § 10-2."</assert>
192+
</rule>
193+
</pattern>
194+
189195
<!-- Restricted code lists and formatting -->
190196
<pattern>
191197
<let name="ISO3166" value="tokenize('AD AE AF AG AI AL AM AO AQ AR AS AT AU AW AX AZ BA BB BD BE BF BG BH BI BJ BL BM BN BO BQ BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL CM CN CO CR CU CV CW CX CY CZ DE DJ DK DM DO DZ EC EE EG EH ER ES ET FI FJ FK FM FO FR GA GB GD GE GF GG GH GI GL GM GN GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID IE IL IM IN IO IQ IR IS IT JE JM JO JP KE KG KH KI KM KN KP KR KW KY KZ LA LB LC LI LK LR LS LT LU LV LY MA MC MD ME MF MG MH MK ML MM MN MO MP MQ MR MS MT MU MV MW MX MY MZ NA NC NE NF NG NI NL NO NP NR NU NZ OM PA PE PF PG PH PK PL PM PN PR PS PT PW PY QA RE RO RS RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR SS ST SV SX SY SZ TC TD TF TG TH TJ TK TL TM TN TO TR TT TV TW TZ UA UG UM US UY UZ VA VC VE VG VI VN VU WF WS YE YT ZA ZM ZW', '\s')"/>
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
declare namespace saxon = "http://saxon.sf.net/";
2+
declare namespace iso = "http://purl.oclc.org/dsdl/schematron";
3+
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
4+
declare option output:method "text";
5+
6+
7+
for
8+
$x in //iso:pattern/iso:rule/iso:assert
9+
10+
let $RuleId := string($x/@id)
11+
let $rule := replace(normalize-space(string($x/../@context)), '\|', '\\|')
12+
let $flag := string($x/@flag)
13+
let $assert := string($x/@test)
14+
let $tekst := tokenize(normalize-space($x/text()), '\]\-')[2]
15+
16+
where not(starts-with($x/@id, 'UBL-') or starts-with($x/@id, 'CII-'))
17+
order by $x/@id
18+
19+
return
20+
21+
concat("| ", $RuleId, " *(", $flag , ")* | ", $tekst, " &#10;")

tools/xquery/rules_asciidoc_light.xquery renamed to tools/xquery/rules_asciidoc_cen_syntax.xquery

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ let $flag := string($x/@flag)
1313
let $assert := string($x/@test)
1414
let $tekst := tokenize(normalize-space($x/text()), '\]\-')[2]
1515

16+
where starts-with($x/@id, 'UBL-') or starts-with($x/@id, 'CII-')
1617
order by $x/@id
1718

1819
return

tools/xquery/rules_asciidoc.xquery renamed to tools/xquery/rules_asciidoc_peppol.xquery

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ let $flag := string($x/@flag)
1313
let $assert := string($x/@test)
1414
let $tekst := normalize-space($x/text())
1515

16+
where starts-with($x/@id, 'PEPPOL')
1617
order by $x/@id
1718

1819
return
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
declare namespace saxon = "http://saxon.sf.net/";
2+
declare namespace iso = "http://purl.oclc.org/dsdl/schematron";
3+
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
4+
declare option output:method "text";
5+
6+
7+
for
8+
$x in //iso:pattern/iso:rule/iso:assert
9+
10+
let $RuleId := string($x/@id)
11+
let $rule := replace(normalize-space(string($x/../@context)), '\|', '\\|')
12+
let $flag := string($x/@flag)
13+
let $assert := string($x/@test)
14+
let $tekst := normalize-space($x/text())
15+
16+
where not(starts-with($x/@id, 'PEPPOL'))
17+
order by $x/@id
18+
19+
return
20+
21+
concat(".3+| ", $RuleId, " *(", $flag , ")* | *", $tekst, "* | [small]#", $rule, "# | [small]#", $assert, "# &#10;")

0 commit comments

Comments
 (0)