arelle-release 2.37.21__py3-none-any.whl → 2.37.22__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of arelle-release might be problematic. Click here for more details.
- arelle/XbrlConst.py +2 -0
- arelle/_version.py +2 -2
- arelle/api/Session.py +88 -58
- arelle/plugin/validate/NL/DisclosureSystems.py +14 -0
- arelle/plugin/validate/NL/PluginValidationDataExtension.py +41 -1
- arelle/plugin/validate/NL/ValidationPluginExtension.py +10 -1
- arelle/plugin/validate/NL/resources/config.xml +6 -1
- arelle/plugin/validate/NL/rules/nl_kvk.py +233 -143
- {arelle_release-2.37.21.dist-info → arelle_release-2.37.22.dist-info}/METADATA +1 -1
- {arelle_release-2.37.21.dist-info → arelle_release-2.37.22.dist-info}/RECORD +18 -17
- tests/integration_tests/validation/conformance_suite_configs.py +2 -0
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024.py +4 -22
- tests/integration_tests/validation/conformance_suite_configurations/nl_inline_2024_gaap_other.py +244 -0
- tests/integration_tests/validation/discover_tests.py +2 -2
- {arelle_release-2.37.21.dist-info → arelle_release-2.37.22.dist-info}/WHEEL +0 -0
- {arelle_release-2.37.21.dist-info → arelle_release-2.37.22.dist-info}/entry_points.txt +0 -0
- {arelle_release-2.37.21.dist-info → arelle_release-2.37.22.dist-info}/licenses/LICENSE.md +0 -0
- {arelle_release-2.37.21.dist-info → arelle_release-2.37.22.dist-info}/top_level.txt +0 -0
|
@@ -6,13 +6,16 @@ from __future__ import annotations
|
|
|
6
6
|
from datetime import date
|
|
7
7
|
import zipfile
|
|
8
8
|
|
|
9
|
+
from arelle.ModelDtsObject import ModelLink
|
|
9
10
|
from arelle.ModelInstanceObject import ModelInlineFact
|
|
11
|
+
from arelle.ModelObject import ModelObject
|
|
12
|
+
from arelle.PrototypeDtsObject import PrototypeObject
|
|
10
13
|
from arelle.ValidateDuplicateFacts import getDuplicateFactSets
|
|
11
14
|
from arelle.XmlValidateConst import VALID
|
|
12
15
|
from collections.abc import Iterable
|
|
13
16
|
from typing import Any, cast, TYPE_CHECKING
|
|
14
17
|
|
|
15
|
-
from arelle import XmlUtil, XbrlConst
|
|
18
|
+
from arelle import XmlUtil, XbrlConst, ModelDocument
|
|
16
19
|
from arelle.ValidateXbrl import ValidateXbrl
|
|
17
20
|
from arelle.typing import TypeGetText
|
|
18
21
|
from arelle.utils.PluginHooks import ValidationHook
|
|
@@ -20,12 +23,16 @@ from arelle.utils.validate.Decorator import validation
|
|
|
20
23
|
from arelle.utils.validate.Validation import Validation
|
|
21
24
|
from arelle.ValidateDuplicateFacts import getHashEquivalentFactGroups, getAspectEqualFacts
|
|
22
25
|
from arelle.utils.validate.ValidationUtil import etreeIterWithDepth
|
|
23
|
-
from ..DisclosureSystems import
|
|
26
|
+
from ..DisclosureSystems import (ALL_NL_INLINE_DISCLOSURE_SYSTEMS, NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
27
|
+
NL_INLINE_GAAP_OTHER_DISCLOSURE_SYSTEMS)
|
|
24
28
|
from ..LinkbaseType import LinkbaseType
|
|
25
29
|
from ..PluginValidationDataExtension import (PluginValidationDataExtension, ALLOWABLE_LANGUAGES,
|
|
26
|
-
|
|
30
|
+
DEFAULT_MEMBER_ROLE_URI, DISALLOWED_IXT_NAMESPACES,
|
|
31
|
+
EFFECTIVE_KVK_GAAP_IFRS_ENTRYPOINT_FILES,
|
|
32
|
+
EFFECTIVE_KVK_GAAP_OTHER_ENTRYPOINT_FILES,
|
|
27
33
|
MAX_REPORT_PACKAGE_SIZE_MBS, TAXONOMY_URLS_BY_YEAR,
|
|
28
|
-
XBRLI_IDENTIFIER_PATTERN, XBRLI_IDENTIFIER_SCHEMA
|
|
34
|
+
XBRLI_IDENTIFIER_PATTERN, XBRLI_IDENTIFIER_SCHEMA,
|
|
35
|
+
QN_DOMAIN_ITEM_TYPES)
|
|
29
36
|
|
|
30
37
|
if TYPE_CHECKING:
|
|
31
38
|
from arelle.ModelXbrl import ModelXbrl
|
|
@@ -45,9 +52,7 @@ def _getReportingPeriodDateValue(modelXbrl: ModelXbrl, qname: QName) -> date | N
|
|
|
45
52
|
|
|
46
53
|
@validation(
|
|
47
54
|
hook=ValidationHook.XBRL_FINALLY,
|
|
48
|
-
disclosureSystems=
|
|
49
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
50
|
-
],
|
|
55
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
51
56
|
)
|
|
52
57
|
def rule_nl_kvk_3_1_1_1(
|
|
53
58
|
pluginData: PluginValidationDataExtension,
|
|
@@ -73,9 +78,7 @@ def rule_nl_kvk_3_1_1_1(
|
|
|
73
78
|
|
|
74
79
|
@validation(
|
|
75
80
|
hook=ValidationHook.XBRL_FINALLY,
|
|
76
|
-
disclosureSystems=
|
|
77
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
78
|
-
],
|
|
81
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
79
82
|
)
|
|
80
83
|
def rule_nl_kvk_3_1_1_2(
|
|
81
84
|
pluginData: PluginValidationDataExtension,
|
|
@@ -100,9 +103,7 @@ def rule_nl_kvk_3_1_1_2(
|
|
|
100
103
|
|
|
101
104
|
@validation(
|
|
102
105
|
hook=ValidationHook.XBRL_FINALLY,
|
|
103
|
-
disclosureSystems=
|
|
104
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
105
|
-
],
|
|
106
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
106
107
|
)
|
|
107
108
|
def rule_nl_kvk_3_1_2_1(
|
|
108
109
|
pluginData: PluginValidationDataExtension,
|
|
@@ -124,9 +125,7 @@ def rule_nl_kvk_3_1_2_1(
|
|
|
124
125
|
|
|
125
126
|
@validation(
|
|
126
127
|
hook=ValidationHook.XBRL_FINALLY,
|
|
127
|
-
disclosureSystems=
|
|
128
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
129
|
-
],
|
|
128
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
130
129
|
)
|
|
131
130
|
def rule_nl_kvk_3_1_2_2(
|
|
132
131
|
pluginData: PluginValidationDataExtension,
|
|
@@ -148,9 +147,7 @@ def rule_nl_kvk_3_1_2_2(
|
|
|
148
147
|
|
|
149
148
|
@validation(
|
|
150
149
|
hook=ValidationHook.XBRL_FINALLY,
|
|
151
|
-
disclosureSystems=
|
|
152
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
153
|
-
],
|
|
150
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
154
151
|
)
|
|
155
152
|
def rule_nl_kvk_3_1_3_1 (
|
|
156
153
|
pluginData: PluginValidationDataExtension,
|
|
@@ -172,9 +169,7 @@ def rule_nl_kvk_3_1_3_1 (
|
|
|
172
169
|
|
|
173
170
|
@validation(
|
|
174
171
|
hook=ValidationHook.XBRL_FINALLY,
|
|
175
|
-
disclosureSystems=
|
|
176
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
177
|
-
],
|
|
172
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
178
173
|
)
|
|
179
174
|
def rule_nl_kvk_3_1_3_2 (
|
|
180
175
|
pluginData: PluginValidationDataExtension,
|
|
@@ -196,9 +191,7 @@ def rule_nl_kvk_3_1_3_2 (
|
|
|
196
191
|
|
|
197
192
|
@validation(
|
|
198
193
|
hook=ValidationHook.XBRL_FINALLY,
|
|
199
|
-
disclosureSystems=
|
|
200
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
201
|
-
],
|
|
194
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
202
195
|
)
|
|
203
196
|
def rule_nl_kvk_3_1_4_1 (
|
|
204
197
|
pluginData: PluginValidationDataExtension,
|
|
@@ -221,9 +214,7 @@ def rule_nl_kvk_3_1_4_1 (
|
|
|
221
214
|
|
|
222
215
|
@validation(
|
|
223
216
|
hook=ValidationHook.XBRL_FINALLY,
|
|
224
|
-
disclosureSystems=
|
|
225
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
226
|
-
],
|
|
217
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
227
218
|
)
|
|
228
219
|
def rule_nl_kvk_3_1_4_2 (
|
|
229
220
|
pluginData: PluginValidationDataExtension,
|
|
@@ -250,9 +241,7 @@ def rule_nl_kvk_3_1_4_2 (
|
|
|
250
241
|
|
|
251
242
|
@validation(
|
|
252
243
|
hook=ValidationHook.XBRL_FINALLY,
|
|
253
|
-
disclosureSystems=
|
|
254
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
255
|
-
],
|
|
244
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
256
245
|
)
|
|
257
246
|
def rule_nl_kvk_3_2_1_1 (
|
|
258
247
|
pluginData: PluginValidationDataExtension,
|
|
@@ -277,9 +266,7 @@ def rule_nl_kvk_3_2_1_1 (
|
|
|
277
266
|
|
|
278
267
|
@validation(
|
|
279
268
|
hook=ValidationHook.XBRL_FINALLY,
|
|
280
|
-
disclosureSystems=
|
|
281
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
282
|
-
],
|
|
269
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
283
270
|
)
|
|
284
271
|
def rule_nl_kvk_3_2_3_1 (
|
|
285
272
|
pluginData: PluginValidationDataExtension,
|
|
@@ -305,9 +292,7 @@ def rule_nl_kvk_3_2_3_1 (
|
|
|
305
292
|
|
|
306
293
|
@validation(
|
|
307
294
|
hook=ValidationHook.XBRL_FINALLY,
|
|
308
|
-
disclosureSystems=
|
|
309
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
310
|
-
],
|
|
295
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
311
296
|
)
|
|
312
297
|
def rule_nl_kvk_3_2_4_1 (
|
|
313
298
|
pluginData: PluginValidationDataExtension,
|
|
@@ -335,9 +320,7 @@ def rule_nl_kvk_3_2_4_1 (
|
|
|
335
320
|
|
|
336
321
|
@validation(
|
|
337
322
|
hook=ValidationHook.XBRL_FINALLY,
|
|
338
|
-
disclosureSystems=
|
|
339
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
340
|
-
],
|
|
323
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
341
324
|
)
|
|
342
325
|
def rule_nl_kvk_3_2_4_2 (
|
|
343
326
|
pluginData: PluginValidationDataExtension,
|
|
@@ -365,9 +348,7 @@ def rule_nl_kvk_3_2_4_2 (
|
|
|
365
348
|
|
|
366
349
|
@validation(
|
|
367
350
|
hook=ValidationHook.XBRL_FINALLY,
|
|
368
|
-
disclosureSystems=
|
|
369
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
370
|
-
],
|
|
351
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
371
352
|
)
|
|
372
353
|
def rule_nl_kvk_3_2_7_1 (
|
|
373
354
|
pluginData: PluginValidationDataExtension,
|
|
@@ -394,9 +375,7 @@ def rule_nl_kvk_3_2_7_1 (
|
|
|
394
375
|
|
|
395
376
|
@validation(
|
|
396
377
|
hook=ValidationHook.XBRL_FINALLY,
|
|
397
|
-
disclosureSystems=
|
|
398
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
399
|
-
],
|
|
378
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
400
379
|
)
|
|
401
380
|
def rule_nl_kvk_3_3_1_1 (
|
|
402
381
|
pluginData: PluginValidationDataExtension,
|
|
@@ -417,9 +396,7 @@ def rule_nl_kvk_3_3_1_1 (
|
|
|
417
396
|
|
|
418
397
|
@validation(
|
|
419
398
|
hook=ValidationHook.XBRL_FINALLY,
|
|
420
|
-
disclosureSystems=
|
|
421
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
422
|
-
],
|
|
399
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
423
400
|
)
|
|
424
401
|
def rule_nl_kvk_3_3_1_2 (
|
|
425
402
|
pluginData: PluginValidationDataExtension,
|
|
@@ -441,9 +418,7 @@ def rule_nl_kvk_3_3_1_2 (
|
|
|
441
418
|
|
|
442
419
|
@validation(
|
|
443
420
|
hook=ValidationHook.XBRL_FINALLY,
|
|
444
|
-
disclosureSystems=
|
|
445
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
446
|
-
],
|
|
421
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
447
422
|
)
|
|
448
423
|
def rule_nl_kvk_3_3_1_3 (
|
|
449
424
|
pluginData: PluginValidationDataExtension,
|
|
@@ -467,9 +442,7 @@ def rule_nl_kvk_3_3_1_3 (
|
|
|
467
442
|
|
|
468
443
|
@validation(
|
|
469
444
|
hook=ValidationHook.XBRL_FINALLY,
|
|
470
|
-
disclosureSystems=
|
|
471
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
472
|
-
],
|
|
445
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
473
446
|
)
|
|
474
447
|
def rule_nl_kvk_3_4_1_1 (
|
|
475
448
|
pluginData: PluginValidationDataExtension,
|
|
@@ -491,9 +464,7 @@ def rule_nl_kvk_3_4_1_1 (
|
|
|
491
464
|
|
|
492
465
|
@validation(
|
|
493
466
|
hook=ValidationHook.XBRL_FINALLY,
|
|
494
|
-
disclosureSystems=
|
|
495
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
496
|
-
],
|
|
467
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
497
468
|
)
|
|
498
469
|
def rule_nl_kvk_3_4_1_2 (
|
|
499
470
|
pluginData: PluginValidationDataExtension,
|
|
@@ -515,9 +486,7 @@ def rule_nl_kvk_3_4_1_2 (
|
|
|
515
486
|
|
|
516
487
|
@validation(
|
|
517
488
|
hook=ValidationHook.XBRL_FINALLY,
|
|
518
|
-
disclosureSystems=
|
|
519
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
520
|
-
],
|
|
489
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
521
490
|
)
|
|
522
491
|
def rule_nl_kvk_3_4_1_3 (
|
|
523
492
|
pluginData: PluginValidationDataExtension,
|
|
@@ -541,9 +510,7 @@ def rule_nl_kvk_3_4_1_3 (
|
|
|
541
510
|
|
|
542
511
|
@validation(
|
|
543
512
|
hook=ValidationHook.XBRL_FINALLY,
|
|
544
|
-
disclosureSystems=
|
|
545
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
546
|
-
],
|
|
513
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
547
514
|
)
|
|
548
515
|
def rule_nl_kvk_3_4_1_4 (
|
|
549
516
|
pluginData: PluginValidationDataExtension,
|
|
@@ -565,9 +532,7 @@ def rule_nl_kvk_3_4_1_4 (
|
|
|
565
532
|
|
|
566
533
|
@validation(
|
|
567
534
|
hook=ValidationHook.XBRL_FINALLY,
|
|
568
|
-
disclosureSystems=
|
|
569
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
570
|
-
],
|
|
535
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
571
536
|
)
|
|
572
537
|
def rule_nl_kvk_3_4_1_5 (
|
|
573
538
|
pluginData: PluginValidationDataExtension,
|
|
@@ -589,9 +554,7 @@ def rule_nl_kvk_3_4_1_5 (
|
|
|
589
554
|
|
|
590
555
|
@validation(
|
|
591
556
|
hook=ValidationHook.XBRL_FINALLY,
|
|
592
|
-
disclosureSystems=
|
|
593
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
594
|
-
],
|
|
557
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
595
558
|
)
|
|
596
559
|
def rule_nl_kvk_3_4_2_1 (
|
|
597
560
|
pluginData: PluginValidationDataExtension,
|
|
@@ -613,9 +576,7 @@ def rule_nl_kvk_3_4_2_1 (
|
|
|
613
576
|
|
|
614
577
|
@validation(
|
|
615
578
|
hook=ValidationHook.XBRL_FINALLY,
|
|
616
|
-
disclosureSystems=
|
|
617
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
618
|
-
],
|
|
579
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
619
580
|
)
|
|
620
581
|
def rule_nl_kvk_3_5_2_1(
|
|
621
582
|
pluginData: PluginValidationDataExtension,
|
|
@@ -644,9 +605,7 @@ def rule_nl_kvk_3_5_2_1(
|
|
|
644
605
|
|
|
645
606
|
@validation(
|
|
646
607
|
hook=ValidationHook.XBRL_FINALLY,
|
|
647
|
-
disclosureSystems=
|
|
648
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
649
|
-
],
|
|
608
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
650
609
|
)
|
|
651
610
|
def rule_nl_kvk_3_5_2_2(
|
|
652
611
|
pluginData: PluginValidationDataExtension,
|
|
@@ -675,9 +634,7 @@ def rule_nl_kvk_3_5_2_2(
|
|
|
675
634
|
|
|
676
635
|
@validation(
|
|
677
636
|
hook=ValidationHook.XBRL_FINALLY,
|
|
678
|
-
disclosureSystems=
|
|
679
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
680
|
-
],
|
|
637
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
681
638
|
)
|
|
682
639
|
def rule_nl_kvk_3_5_2_3(
|
|
683
640
|
pluginData: PluginValidationDataExtension,
|
|
@@ -706,9 +663,7 @@ def rule_nl_kvk_3_5_2_3(
|
|
|
706
663
|
|
|
707
664
|
@validation(
|
|
708
665
|
hook=ValidationHook.XBRL_FINALLY,
|
|
709
|
-
disclosureSystems=
|
|
710
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
711
|
-
],
|
|
666
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
712
667
|
)
|
|
713
668
|
def rule_nl_kvk_3_5_3_1(
|
|
714
669
|
pluginData: PluginValidationDataExtension,
|
|
@@ -730,9 +685,7 @@ def rule_nl_kvk_3_5_3_1(
|
|
|
730
685
|
|
|
731
686
|
@validation(
|
|
732
687
|
hook=ValidationHook.XBRL_FINALLY,
|
|
733
|
-
disclosureSystems=
|
|
734
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
735
|
-
],
|
|
688
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
736
689
|
)
|
|
737
690
|
def rule_nl_kvk_3_5_4_1 (
|
|
738
691
|
pluginData: PluginValidationDataExtension,
|
|
@@ -755,9 +708,7 @@ def rule_nl_kvk_3_5_4_1 (
|
|
|
755
708
|
|
|
756
709
|
@validation(
|
|
757
710
|
hook=ValidationHook.XBRL_FINALLY,
|
|
758
|
-
disclosureSystems=
|
|
759
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
760
|
-
],
|
|
711
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
761
712
|
)
|
|
762
713
|
def rule_nl_kvk_3_6_3_1(
|
|
763
714
|
pluginData: PluginValidationDataExtension,
|
|
@@ -788,9 +739,7 @@ def rule_nl_kvk_3_6_3_1(
|
|
|
788
739
|
|
|
789
740
|
@validation(
|
|
790
741
|
hook=ValidationHook.XBRL_FINALLY,
|
|
791
|
-
disclosureSystems=
|
|
792
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
793
|
-
],
|
|
742
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
794
743
|
)
|
|
795
744
|
def rule_nl_kvk_3_6_3_2(
|
|
796
745
|
pluginData: PluginValidationDataExtension,
|
|
@@ -820,9 +769,7 @@ def rule_nl_kvk_3_6_3_2(
|
|
|
820
769
|
|
|
821
770
|
@validation(
|
|
822
771
|
hook=ValidationHook.XBRL_FINALLY,
|
|
823
|
-
disclosureSystems=
|
|
824
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
825
|
-
],
|
|
772
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
826
773
|
)
|
|
827
774
|
def rule_nl_kvk_3_6_3_3(
|
|
828
775
|
pluginData: PluginValidationDataExtension,
|
|
@@ -850,9 +797,7 @@ def rule_nl_kvk_3_6_3_3(
|
|
|
850
797
|
|
|
851
798
|
@validation(
|
|
852
799
|
hook=ValidationHook.FINALLY,
|
|
853
|
-
disclosureSystems=
|
|
854
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
855
|
-
],
|
|
800
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
856
801
|
)
|
|
857
802
|
def rule_nl_kvk_3_7_1_1(
|
|
858
803
|
pluginData: PluginValidationDataExtension,
|
|
@@ -880,9 +825,7 @@ def rule_nl_kvk_3_7_1_1(
|
|
|
880
825
|
|
|
881
826
|
@validation(
|
|
882
827
|
hook=ValidationHook.FINALLY,
|
|
883
|
-
disclosureSystems=
|
|
884
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
885
|
-
],
|
|
828
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
886
829
|
)
|
|
887
830
|
def rule_nl_kvk_3_7_1_2(
|
|
888
831
|
pluginData: PluginValidationDataExtension,
|
|
@@ -910,9 +853,7 @@ def rule_nl_kvk_3_7_1_2(
|
|
|
910
853
|
|
|
911
854
|
@validation(
|
|
912
855
|
hook=ValidationHook.XBRL_FINALLY,
|
|
913
|
-
disclosureSystems=
|
|
914
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
915
|
-
],
|
|
856
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
916
857
|
)
|
|
917
858
|
def rule_nl_kvk_4_1_1_1(
|
|
918
859
|
pluginData: PluginValidationDataExtension,
|
|
@@ -963,9 +904,7 @@ def rule_nl_kvk_4_1_1_1(
|
|
|
963
904
|
|
|
964
905
|
@validation(
|
|
965
906
|
hook=ValidationHook.XBRL_FINALLY,
|
|
966
|
-
disclosureSystems=
|
|
967
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
968
|
-
],
|
|
907
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
969
908
|
)
|
|
970
909
|
def rule_nl_kvk_4_1_1_2(
|
|
971
910
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1000,9 +939,7 @@ def rule_nl_kvk_4_1_1_2(
|
|
|
1000
939
|
|
|
1001
940
|
@validation(
|
|
1002
941
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1003
|
-
disclosureSystems=
|
|
1004
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1005
|
-
],
|
|
942
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1006
943
|
)
|
|
1007
944
|
def rule_nl_kvk_4_1_2_1(
|
|
1008
945
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1027,9 +964,7 @@ def rule_nl_kvk_4_1_2_1(
|
|
|
1027
964
|
|
|
1028
965
|
@validation(
|
|
1029
966
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1030
|
-
disclosureSystems=
|
|
1031
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1032
|
-
],
|
|
967
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1033
968
|
)
|
|
1034
969
|
def rule_nl_kvk_4_1_2_2(
|
|
1035
970
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1048,16 +983,15 @@ def rule_nl_kvk_4_1_2_2(
|
|
|
1048
983
|
yield Validation.error(
|
|
1049
984
|
codes='NL.NL-KVK.4.1.2.2.incorrectKvkTaxonomyVersionUsed',
|
|
1050
985
|
msg=_('The extension taxonomy MUST import the applicable version of the taxonomy files prepared by KVK '
|
|
1051
|
-
'for the reported financial reporting period
|
|
986
|
+
'for the reported financial reporting period. Verify the taxonomy version and make sure '
|
|
987
|
+
'that FinancialReportingPeriod are tagged correctly.'),
|
|
1052
988
|
modelObject=val.modelXbrl.modelDocument
|
|
1053
989
|
)
|
|
1054
990
|
|
|
1055
991
|
|
|
1056
992
|
@validation(
|
|
1057
993
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1058
|
-
disclosureSystems=
|
|
1059
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1060
|
-
],
|
|
994
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1061
995
|
)
|
|
1062
996
|
def rule_nl_kvk_4_1_5_1(
|
|
1063
997
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1089,9 +1023,7 @@ def rule_nl_kvk_4_1_5_1(
|
|
|
1089
1023
|
|
|
1090
1024
|
@validation(
|
|
1091
1025
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1092
|
-
disclosureSystems=
|
|
1093
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1094
|
-
],
|
|
1026
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1095
1027
|
)
|
|
1096
1028
|
def rule_nl_kvk_4_1_5_2(
|
|
1097
1029
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1122,9 +1054,7 @@ def rule_nl_kvk_4_1_5_2(
|
|
|
1122
1054
|
|
|
1123
1055
|
@validation(
|
|
1124
1056
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1125
|
-
disclosureSystems=
|
|
1126
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1127
|
-
],
|
|
1057
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1128
1058
|
)
|
|
1129
1059
|
def rule_nl_kvk_4_2_0_1(
|
|
1130
1060
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1148,9 +1078,7 @@ def rule_nl_kvk_4_2_0_1(
|
|
|
1148
1078
|
|
|
1149
1079
|
@validation(
|
|
1150
1080
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1151
|
-
disclosureSystems=
|
|
1152
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1153
|
-
],
|
|
1081
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1154
1082
|
)
|
|
1155
1083
|
def rule_nl_kvk_4_2_0_2(
|
|
1156
1084
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1174,9 +1102,7 @@ def rule_nl_kvk_4_2_0_2(
|
|
|
1174
1102
|
|
|
1175
1103
|
@validation(
|
|
1176
1104
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1177
|
-
disclosureSystems=
|
|
1178
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1179
|
-
],
|
|
1105
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1180
1106
|
)
|
|
1181
1107
|
def rule_nl_kvk_4_2_1_1(
|
|
1182
1108
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1205,9 +1131,59 @@ def rule_nl_kvk_4_2_1_1(
|
|
|
1205
1131
|
|
|
1206
1132
|
@validation(
|
|
1207
1133
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1208
|
-
disclosureSystems=
|
|
1209
|
-
|
|
1210
|
-
|
|
1134
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1135
|
+
)
|
|
1136
|
+
def rule_nl_kvk_4_2_2_2(
|
|
1137
|
+
pluginData: PluginValidationDataExtension,
|
|
1138
|
+
val: ValidateXbrl,
|
|
1139
|
+
*args: Any,
|
|
1140
|
+
**kwargs: Any,
|
|
1141
|
+
) -> Iterable[Validation]:
|
|
1142
|
+
"""
|
|
1143
|
+
NL-KVK.4.2.2.2: Domain members MUST have domainItemType data type as defined in https://www.xbrl.org/dtr/type/2022-03-31/types.xsd.
|
|
1144
|
+
"""
|
|
1145
|
+
domainMembersWrongType = []
|
|
1146
|
+
domainMembers = pluginData.getDomainMembers(val.modelXbrl)
|
|
1147
|
+
extensionData = pluginData.getExtensionData(val.modelXbrl)
|
|
1148
|
+
for concept in extensionData.extensionConcepts:
|
|
1149
|
+
if concept.isDomainMember and concept in domainMembers and concept.typeQname not in QN_DOMAIN_ITEM_TYPES:
|
|
1150
|
+
domainMembersWrongType.append(concept)
|
|
1151
|
+
if len(domainMembersWrongType) > 0:
|
|
1152
|
+
yield Validation.error(
|
|
1153
|
+
codes='NL.NL-KVK.4.2.2.2.domainMemberWrongDataType',
|
|
1154
|
+
modelObject=domainMembersWrongType,
|
|
1155
|
+
msg=_('Domain members must have domainItemType data type as defined in "https://www.xbrl.org/dtr/type/2022-03-31/types.xsd".'
|
|
1156
|
+
'Update to follow appropriate Data Type Registry. '))
|
|
1157
|
+
|
|
1158
|
+
|
|
1159
|
+
@validation(
|
|
1160
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1161
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1162
|
+
)
|
|
1163
|
+
def rule_nl_kvk_4_2_3_1(
|
|
1164
|
+
pluginData: PluginValidationDataExtension,
|
|
1165
|
+
val: ValidateXbrl,
|
|
1166
|
+
*args: Any,
|
|
1167
|
+
**kwargs: Any,
|
|
1168
|
+
) -> Iterable[Validation]:
|
|
1169
|
+
"""
|
|
1170
|
+
NL-KVK.4.2.3.1: Extension taxonomy MUST NOT define typed dimensions.
|
|
1171
|
+
"""
|
|
1172
|
+
typedDims = []
|
|
1173
|
+
extensionData = pluginData.getExtensionData(val.modelXbrl)
|
|
1174
|
+
for concept in extensionData.extensionConcepts:
|
|
1175
|
+
if concept.isTypedDimension:
|
|
1176
|
+
typedDims.append(concept)
|
|
1177
|
+
if len(typedDims) > 0:
|
|
1178
|
+
yield Validation.error(
|
|
1179
|
+
codes='NL.NL-KVK.4.3.2.1.typedDimensionDefinitionInExtensionTaxonomy',
|
|
1180
|
+
modelObject=typedDims,
|
|
1181
|
+
msg=_('Typed dimensions are not allowed in the extension taxonomy. Update to remove the typed dimension.'))
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
@validation(
|
|
1185
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1186
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1211
1187
|
)
|
|
1212
1188
|
def rule_nl_kvk_4_4_1_1(
|
|
1213
1189
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1235,9 +1211,7 @@ def rule_nl_kvk_4_4_1_1(
|
|
|
1235
1211
|
|
|
1236
1212
|
@validation(
|
|
1237
1213
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1238
|
-
disclosureSystems=
|
|
1239
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1240
|
-
],
|
|
1214
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1241
1215
|
)
|
|
1242
1216
|
def rule_nl_kvk_4_4_2_1(
|
|
1243
1217
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1264,9 +1238,7 @@ def rule_nl_kvk_4_4_2_1(
|
|
|
1264
1238
|
|
|
1265
1239
|
@validation(
|
|
1266
1240
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1267
|
-
disclosureSystems=
|
|
1268
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1269
|
-
],
|
|
1241
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1270
1242
|
)
|
|
1271
1243
|
def rule_nl_kvk_4_4_2_2(
|
|
1272
1244
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1294,9 +1266,7 @@ def rule_nl_kvk_4_4_2_2(
|
|
|
1294
1266
|
|
|
1295
1267
|
@validation(
|
|
1296
1268
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1297
|
-
disclosureSystems=
|
|
1298
|
-
DISCLOSURE_SYSTEM_NL_INLINE_2024
|
|
1299
|
-
],
|
|
1269
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1300
1270
|
)
|
|
1301
1271
|
def rule_nl_kvk_4_4_2_3(
|
|
1302
1272
|
pluginData: PluginValidationDataExtension,
|
|
@@ -1324,9 +1294,129 @@ def rule_nl_kvk_4_4_2_3(
|
|
|
1324
1294
|
|
|
1325
1295
|
@validation(
|
|
1326
1296
|
hook=ValidationHook.XBRL_FINALLY,
|
|
1327
|
-
disclosureSystems=
|
|
1328
|
-
|
|
1329
|
-
|
|
1297
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1298
|
+
)
|
|
1299
|
+
def rule_nl_kvk_4_4_3_1(
|
|
1300
|
+
pluginData: PluginValidationDataExtension,
|
|
1301
|
+
val: ValidateXbrl,
|
|
1302
|
+
*args: Any,
|
|
1303
|
+
**kwargs: Any,
|
|
1304
|
+
) -> Iterable[Validation]:
|
|
1305
|
+
"""
|
|
1306
|
+
NL-KVK.4.4.3.1: The extension taxonomy MUST not modify (prohibit and/or override) default members assigned to dimensions by the KVK taxonomy
|
|
1307
|
+
"""
|
|
1308
|
+
for modelLink in cast(list[ModelLink], val.modelXbrl.baseSets[XbrlConst.dimensionDefault, None, None, None]):
|
|
1309
|
+
if not pluginData.isExtensionUri(modelLink.modelDocument.uri, val.modelXbrl):
|
|
1310
|
+
continue
|
|
1311
|
+
for linkChild in modelLink:
|
|
1312
|
+
if (
|
|
1313
|
+
isinstance(linkChild,(ModelObject,PrototypeObject))
|
|
1314
|
+
and linkChild.get(XbrlConst.qnXlinkType.clarkNotation) == "arc"
|
|
1315
|
+
and linkChild.get(XbrlConst.qnXlinkArcRole.clarkNotation) == XbrlConst.dimensionDefault
|
|
1316
|
+
):
|
|
1317
|
+
fromLabel = linkChild.get(XbrlConst.qnXlinkFrom.clarkNotation)
|
|
1318
|
+
for fromResource in modelLink.labeledResources[fromLabel]:
|
|
1319
|
+
if not pluginData.isExtensionUri(fromResource.modelDocument.uri, val.modelXbrl):
|
|
1320
|
+
yield Validation.error(
|
|
1321
|
+
codes='NL.NL-KVK.4.4.3.1.extensionTaxonomyOverridesDefaultMembers',
|
|
1322
|
+
msg=_('A default member does not match the default member settings of the taxonomy. '
|
|
1323
|
+
'Update the default member to taxonomy defaults.'
|
|
1324
|
+
),
|
|
1325
|
+
modelObject=linkChild
|
|
1326
|
+
)
|
|
1327
|
+
extensionData = pluginData.getExtensionData(val.modelXbrl)
|
|
1328
|
+
for modelDocument, extensionDocumentData in extensionData.extensionDocuments.items():
|
|
1329
|
+
for arc in extensionDocumentData.iterArcsByType(LinkbaseType.DEFINITION, includeArcroles={XbrlConst.dimensionDefault}):
|
|
1330
|
+
if arc.get("use") == "prohibited":
|
|
1331
|
+
yield Validation.error(
|
|
1332
|
+
codes='NL.NL-KVK.4.4.3.1.extensionTaxonomyOverridesDefaultMembers',
|
|
1333
|
+
msg=_('A default member is forbidden in the extension taxonomy. '
|
|
1334
|
+
'Update the default member to taxonomy defaults.'
|
|
1335
|
+
),
|
|
1336
|
+
modelObject=arc
|
|
1337
|
+
)
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
@validation(
|
|
1341
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1342
|
+
disclosureSystems=NL_INLINE_GAAP_IFRS_DISCLOSURE_SYSTEMS,
|
|
1343
|
+
)
|
|
1344
|
+
def rule_nl_kvk_4_4_3_2(
|
|
1345
|
+
pluginData: PluginValidationDataExtension,
|
|
1346
|
+
val: ValidateXbrl,
|
|
1347
|
+
*args: Any,
|
|
1348
|
+
**kwargs: Any,
|
|
1349
|
+
) -> Iterable[Validation]:
|
|
1350
|
+
"""
|
|
1351
|
+
NL-KVK.4.4.3.2: Each dimension in an extension taxonomy MUST be assigned to a default member in the ELR with role URI https://www.nltaxonomie.nl/kvk/role/axis-defaults.
|
|
1352
|
+
"""
|
|
1353
|
+
dimensionDefaults =val.modelXbrl.relationshipSet(XbrlConst.dimensionDefault, DEFAULT_MEMBER_ROLE_URI)
|
|
1354
|
+
extensionData = pluginData.getExtensionData(val.modelXbrl)
|
|
1355
|
+
for modelConcept in extensionData.extensionConcepts:
|
|
1356
|
+
if modelConcept.isExplicitDimension and not dimensionDefaults.fromModelObject(modelConcept):
|
|
1357
|
+
yield Validation.error(
|
|
1358
|
+
codes='NL.NL-KVK.4.4.2.3.extensionTaxonomyDimensionNotAssignedDefaultMemberInDedicatedPlaceholder',
|
|
1359
|
+
modelObject=modelConcept,
|
|
1360
|
+
msg=_('Axis is missing a default member or the default member does not match the taxonomy defaults. '
|
|
1361
|
+
'Update to set default member based on taxonomy defaults.'
|
|
1362
|
+
),
|
|
1363
|
+
)
|
|
1364
|
+
|
|
1365
|
+
|
|
1366
|
+
@validation(
|
|
1367
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1368
|
+
disclosureSystems=NL_INLINE_GAAP_OTHER_DISCLOSURE_SYSTEMS,
|
|
1369
|
+
)
|
|
1370
|
+
def rule_nl_kvk_5_1_3_1(
|
|
1371
|
+
pluginData: PluginValidationDataExtension,
|
|
1372
|
+
val: ValidateXbrl,
|
|
1373
|
+
*args: Any,
|
|
1374
|
+
**kwargs: Any,
|
|
1375
|
+
) -> Iterable[Validation]:
|
|
1376
|
+
"""
|
|
1377
|
+
NL-KVK.5.1.3.1: Validate that the imported taxonomy matches the KVK-specified entry point.
|
|
1378
|
+
- https://www.nltaxonomie.nl/kvk/2024-12-31/kvk-annual-report-other-gaap.xsd
|
|
1379
|
+
"""
|
|
1380
|
+
uris = {doc[0].uri for doc in val.modelXbrl.namespaceDocs.values()}
|
|
1381
|
+
matches = uris & EFFECTIVE_KVK_GAAP_OTHER_ENTRYPOINT_FILES
|
|
1382
|
+
if not matches:
|
|
1383
|
+
yield Validation.error(
|
|
1384
|
+
codes='NL.NL-KVK.5.1.3.1.requiredEntryPointOtherGaapNotReferenced',
|
|
1385
|
+
msg=_('The extension taxonomy must import the entry point of the taxonomy files prepared by KVK.'),
|
|
1386
|
+
modelObject=val.modelXbrl.modelDocument
|
|
1387
|
+
)
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
@validation(
|
|
1391
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1392
|
+
disclosureSystems=NL_INLINE_GAAP_OTHER_DISCLOSURE_SYSTEMS,
|
|
1393
|
+
)
|
|
1394
|
+
def rule_nl_kvk_5_1_3_2(
|
|
1395
|
+
pluginData: PluginValidationDataExtension,
|
|
1396
|
+
val: ValidateXbrl,
|
|
1397
|
+
*args: Any,
|
|
1398
|
+
**kwargs: Any,
|
|
1399
|
+
) -> Iterable[Validation]:
|
|
1400
|
+
"""
|
|
1401
|
+
NL-KVK.5.1.3.2: The legal entity’s report MUST import the applicable version of
|
|
1402
|
+
the taxonomy files prepared by KVK.
|
|
1403
|
+
"""
|
|
1404
|
+
reportingPeriod = pluginData.getReportingPeriod(val.modelXbrl)
|
|
1405
|
+
uris = {doc[0].uri for doc in val.modelXbrl.namespaceDocs.values()}
|
|
1406
|
+
matches = uris & TAXONOMY_URLS_BY_YEAR.get(reportingPeriod or '', set())
|
|
1407
|
+
if not reportingPeriod or not matches:
|
|
1408
|
+
yield Validation.error(
|
|
1409
|
+
codes='NL.NL-KVK.5.1.3.2.incorrectVersionEntryPointOtherGaapReferenced',
|
|
1410
|
+
msg=_('The report MUST import the applicable version of the taxonomy files prepared by KVK '
|
|
1411
|
+
'for the reported financial reporting period. Verify the taxonomy version and make sure '
|
|
1412
|
+
'that FinancialReportingPeriod are tagged correctly.'),
|
|
1413
|
+
modelObject=val.modelXbrl.modelDocument
|
|
1414
|
+
)
|
|
1415
|
+
|
|
1416
|
+
|
|
1417
|
+
@validation(
|
|
1418
|
+
hook=ValidationHook.XBRL_FINALLY,
|
|
1419
|
+
disclosureSystems=ALL_NL_INLINE_DISCLOSURE_SYSTEMS,
|
|
1330
1420
|
)
|
|
1331
1421
|
def rule_nl_kvk_6_1_1_1(
|
|
1332
1422
|
pluginData: PluginValidationDataExtension,
|