tax_conformance_kit 0.1.0 → 0.2.0
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.
- checksums.yaml +4 -4
- data/LICENSE +21 -0
- data/README.md +23 -11
- data/bin/taxctl +0 -0
- data/data/kind-registry.v1.json +350 -0
- data/data/regulation/es/impuesto_estancias_turisticas/catalonia/barcelona_city/2026-04-01.json +168 -0
- data/data/regulation/es/impuesto_estancias_turisticas/catalonia/barcelona_city/conformance/dutch_operator_barcelona_hotel_5_star.json +33 -0
- data/data/regulation/es/impuesto_estancias_turisticas/catalonia/barcelona_city/conformance/tourist_home_age_17_taxed.json +28 -0
- data/data/regulation/es/impuesto_estancias_turisticas/catalonia/rest_of_catalonia/2026-04-01.json +183 -0
- data/data/regulation/es/impuesto_estancias_turisticas/catalonia/rest_of_catalonia/conformance/barcelona_city_excluded.json +24 -0
- data/data/regulation/es/impuesto_estancias_turisticas/catalonia/rest_of_catalonia/conformance/girona_hotel_4_star.json +28 -0
- data/data/regulation/es/impuesto_turismo_sostenible/balearic_islands/2025-05-17.json +166 -0
- data/data/regulation/es/impuesto_turismo_sostenible/balearic_islands/conformance/palma_hotel_4_star_high_season_long_stay.json +32 -0
- data/data/regulation/es/impuesto_turismo_sostenible/balearic_islands/conformance/tourist_home_low_season.json +27 -0
- data/data/regulation/nl/gemeentelijke_verordening/aa_en_hunze/2024-11-29.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/aa_en_hunze/2025-11-28.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/aalten/2024-12-23.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/aalten/2025-12-20.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/achtkarspelen/2025-12-31.json +60 -0
- data/data/regulation/nl/gemeentelijke_verordening/alblasserdam/2025-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/alblasserdam/2025-12-23.json +103 -0
- data/data/regulation/nl/gemeentelijke_verordening/alkmaar/2024-12-18.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/alkmaar/2025-12-17.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/almelo/2024-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/almelo/2025-01-01.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/almelo/2026-01-01.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/almere/2024-12-25.json +71 -0
- data/data/regulation/nl/gemeentelijke_verordening/almere/2025-12-24.json +71 -0
- data/data/regulation/nl/gemeentelijke_verordening/alphen_aan_den_rijn/2024-12-18.json +63 -0
- data/data/regulation/nl/gemeentelijke_verordening/alphen_aan_den_rijn/2025-12-19.json +63 -0
- data/data/regulation/nl/gemeentelijke_verordening/alphen_chaam/2025-01-01.json +71 -0
- data/data/regulation/nl/gemeentelijke_verordening/alphen_chaam/2026-01-01.json +120 -0
- data/data/regulation/nl/gemeentelijke_verordening/ameland/2024-01-01.json +65 -0
- data/data/regulation/nl/gemeentelijke_verordening/ameland/2025-01-01.json +65 -0
- data/data/regulation/nl/gemeentelijke_verordening/ameland/2026-01-01.json +65 -0
- data/data/regulation/nl/gemeentelijke_verordening/amersfoort/2024-12-24.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/amersfoort/2025-12-20.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/amstelveen/2025-01-01.json +111 -0
- data/data/regulation/nl/gemeentelijke_verordening/amstelveen/2026-01-01.json +111 -0
- data/data/regulation/nl/gemeentelijke_verordening/amsterdam/2026-01-01.json +45 -0
- data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/percentage_of_base_normal.json +18 -0
- data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/percentage_of_base_rounding_up.json +18 -0
- data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/quarterly_threshold_below_minimum.assessment.json +43 -0
- data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/quarterly_threshold_exact_minimum.assessment.json +43 -0
- data/data/regulation/nl/gemeentelijke_verordening/amsterdam/conformance/quarterly_threshold_met.assessment.json +43 -0
- data/data/regulation/nl/gemeentelijke_verordening/apeldoorn/2024-04-04.json +140 -0
- data/data/regulation/nl/gemeentelijke_verordening/apeldoorn/2024-12-24.json +140 -0
- data/data/regulation/nl/gemeentelijke_verordening/apeldoorn/2025-12-30.json +140 -0
- data/data/regulation/nl/gemeentelijke_verordening/baarle_nassau/2025-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/baarle_nassau/2026-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/baarn/2024-12-31.json +78 -0
- data/data/regulation/nl/gemeentelijke_verordening/baarn/2025-12-30.json +78 -0
- data/data/regulation/nl/gemeentelijke_verordening/barneveld/2024-12-12.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/barneveld/2025-11-28.json +120 -0
- data/data/regulation/nl/gemeentelijke_verordening/beekdaelen/2024-11-22.json +112 -0
- data/data/regulation/nl/gemeentelijke_verordening/beekdaelen/2025-11-28.json +112 -0
- data/data/regulation/nl/gemeentelijke_verordening/bergen_nh/2024-12-24.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/bergen_nh/2025-12-18.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/bergen_op_zoom/2025-12-12.json +72 -0
- data/data/regulation/nl/gemeentelijke_verordening/bernheze/2024-01-01.json +63 -0
- data/data/regulation/nl/gemeentelijke_verordening/bernheze/2025-03-20.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/bernheze/2025-12-25.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/best/2024-11-23.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/best/2025-11-21.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/beuningen/2024-12-21.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/beuningen/2025-12-20.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/beverwijk/2024-12-19.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/beverwijk/2025-12-16.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/blaricum/2024-01-01.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/blaricum/2025-01-01.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/blaricum/2026-01-01.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/bloemendaal/2024-01-04.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/bloemendaal/2024-12-31.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/bloemendaal/2026-01-01.json +97 -0
- data/data/regulation/nl/gemeentelijke_verordening/boekel/2024-12-18.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/borger_odoorn/2025-01-01.json +170 -0
- data/data/regulation/nl/gemeentelijke_verordening/borger_odoorn/2026-01-01.json +170 -0
- data/data/regulation/nl/gemeentelijke_verordening/borne/2025-01-01.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/borne/2026-01-01.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/2024-12-25.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/2026-01-01.json +225 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/2026-03-19.json +170 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest.json +20 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_119_nights.json +20 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_120_nights.json +20 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_29_nights.json +20 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/camping_arrangement_guest_30_nights.json +20 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/coa_exempt.json +19 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/supervised_minor_group_exempt.json +36 -0
- data/data/regulation/nl/gemeentelijke_verordening/breda/conformance/wtza_exempt.json +19 -0
- data/data/regulation/nl/gemeentelijke_verordening/bronckhorst/2024-01-01.json +120 -0
- data/data/regulation/nl/gemeentelijke_verordening/brummen/2024-01-01.json +152 -0
- data/data/regulation/nl/gemeentelijke_verordening/brummen/2025-01-01.json +147 -0
- data/data/regulation/nl/gemeentelijke_verordening/brummen/2026-01-01.json +147 -0
- data/data/regulation/nl/gemeentelijke_verordening/brunssum/2024-12-19.json +60 -0
- data/data/regulation/nl/gemeentelijke_verordening/brunssum/2025-12-25.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/castricum/2024-11-27.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/castricum/2025-11-26.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/coevorden/2025-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/culemborg/2024-12-19.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/culemborg/2025-12-30.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/de_fryske_marren/2024-12-24.json +77 -0
- data/data/regulation/nl/gemeentelijke_verordening/de_fryske_marren/2026-01-01.json +77 -0
- data/data/regulation/nl/gemeentelijke_verordening/de_wolden/2025-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/de_wolden/2026-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/deurne/2024-11-29.json +62 -0
- data/data/regulation/nl/gemeentelijke_verordening/deurne/2026-01-01.json +62 -0
- data/data/regulation/nl/gemeentelijke_verordening/deventer/2024-11-19.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/deventer/2025-12-05.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/diemen/2024-01-01.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/diemen/2024-12-28.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/diemen/2026-01-01.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/dinkelland/2024-12-28.json +167 -0
- data/data/regulation/nl/gemeentelijke_verordening/dinkelland/2025-12-30.json +118 -0
- data/data/regulation/nl/gemeentelijke_verordening/doesburg/2024-12-25.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/doesburg/2025-12-24.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/doetinchem/2024-12-25.json +122 -0
- data/data/regulation/nl/gemeentelijke_verordening/doetinchem/2025-12-24.json +122 -0
- data/data/regulation/nl/gemeentelijke_verordening/drechterland/2024-12-31.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/drechterland/2025-12-30.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/dronten/2024-12-07.json +76 -0
- data/data/regulation/nl/gemeentelijke_verordening/dronten/2025-12-05.json +76 -0
- data/data/regulation/nl/gemeentelijke_verordening/edam_volendam/2024-12-19.json +122 -0
- data/data/regulation/nl/gemeentelijke_verordening/edam_volendam/2025-12-23.json +122 -0
- data/data/regulation/nl/gemeentelijke_verordening/ede/2024-12-04.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/ede/2025-11-29.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/eemnes/2025-01-01.json +131 -0
- data/data/regulation/nl/gemeentelijke_verordening/eemnes/2026-01-01.json +131 -0
- data/data/regulation/nl/gemeentelijke_verordening/eindhoven/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/eindhoven/2025-12-03.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/elburg/2024-01-01.json +132 -0
- data/data/regulation/nl/gemeentelijke_verordening/emmen/2025-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/emmen/2026-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/enkhuizen/2024-12-31.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/enkhuizen/2026-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/enschede/2024-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/enschede/2025-01-01.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/enschede/2026-01-01.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/etten_leur/2024-12-10.json +72 -0
- data/data/regulation/nl/gemeentelijke_verordening/geertruidenberg/2024-11-27.json +115 -0
- data/data/regulation/nl/gemeentelijke_verordening/geertruidenberg/2025-12-11.json +115 -0
- data/data/regulation/nl/gemeentelijke_verordening/geldrop_mierlo/2024-12-17.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/geldrop_mierlo/2025-11-21.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2024-01-25.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2024-01-27.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2024-12-18.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/gemert_bakel/2025-12-18.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/gilze_en_rijen/2025-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/gilze_en_rijen/2025-12-25.json +120 -0
- data/data/regulation/nl/gemeentelijke_verordening/goes/2024-12-29.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/goes/2025-12-26.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/gooise_meren/2024-12-14.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/gooise_meren/2026-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/gorinchem/2025-12-25.json +100 -0
- data/data/regulation/nl/gemeentelijke_verordening/gouda/2024-12-17.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/gouda/2025-12-16.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/haaksbergen/2024-01-01.json +120 -0
- data/data/regulation/nl/gemeentelijke_verordening/haaksbergen/2025-01-01.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/haaksbergen/2026-01-01.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/haarlem/2024-12-28.json +193 -0
- data/data/regulation/nl/gemeentelijke_verordening/haarlem/2025-12-24.json +191 -0
- data/data/regulation/nl/gemeentelijke_verordening/haarlemmermeer/2024-12-07.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/haarlemmermeer/2025-12-11.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/halderberge/2024-12-20.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/halderberge/2025-12-24.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/hardenberg/2025-12-25.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/harderwijk/2024-12-21.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/harderwijk/2025-12-20.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/harlingen/2024-12-17.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/harlingen/2025-12-10.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/heemskerk/2024-12-18.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/heemskerk/2025-12-19.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/heemstede/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/heemstede/2025-12-23.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/heeze_leende/2024-12-20.json +193 -0
- data/data/regulation/nl/gemeentelijke_verordening/heeze_leende/2025-12-04.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/heiloo/2024-11-27.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/heiloo/2025-11-14.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/helmond/2024-01-01.json +109 -0
- data/data/regulation/nl/gemeentelijke_verordening/helmond/2025-01-01.json +109 -0
- data/data/regulation/nl/gemeentelijke_verordening/helmond/2026-01-01.json +109 -0
- data/data/regulation/nl/gemeentelijke_verordening/het_hogeland/2026-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/heumen/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/heusden/2024-01-01.json +172 -0
- data/data/regulation/nl/gemeentelijke_verordening/heusden/2025-01-01.json +172 -0
- data/data/regulation/nl/gemeentelijke_verordening/heusden/2026-01-01.json +152 -0
- data/data/regulation/nl/gemeentelijke_verordening/hoeksche_waard/2024-12-31.json +62 -0
- data/data/regulation/nl/gemeentelijke_verordening/hoeksche_waard/2025-12-24.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/hof_van_twente/2024-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/hoogeveen/2025-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/hoogeveen/2026-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/houten/2024-12-19.json +65 -0
- data/data/regulation/nl/gemeentelijke_verordening/houten/2025-12-23.json +65 -0
- data/data/regulation/nl/gemeentelijke_verordening/huizen/2024-11-24.json +119 -0
- data/data/regulation/nl/gemeentelijke_verordening/huizen/2025-11-16.json +119 -0
- data/data/regulation/nl/gemeentelijke_verordening/hulst/2024-11-27.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/hulst/2025-11-26.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/kampen/2024-11-20.json +60 -0
- data/data/regulation/nl/gemeentelijke_verordening/kampen/2025-11-12.json +60 -0
- data/data/regulation/nl/gemeentelijke_verordening/katwijk/2024-12-25.json +122 -0
- data/data/regulation/nl/gemeentelijke_verordening/katwijk/2025-12-12.json +122 -0
- data/data/regulation/nl/gemeentelijke_verordening/koggenland/2024-11-16.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/krimpenerwaard/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/krimpenerwaard/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/krimpenerwaard/2026-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/landgraaf/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/landgraaf/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/landgraaf/2026-01-01.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/landsmeer/2025-01-03.json +72 -0
- data/data/regulation/nl/gemeentelijke_verordening/landsmeer/2025-12-30.json +72 -0
- data/data/regulation/nl/gemeentelijke_verordening/leeuwarden/2024-12-17.json +68 -0
- data/data/regulation/nl/gemeentelijke_verordening/leeuwarden/2025-12-02.json +74 -0
- data/data/regulation/nl/gemeentelijke_verordening/leiden/2025-12-20.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/leiderdorp/2024-12-24.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/leiderdorp/2025-12-24.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/leidschendam_voorburg/2024-01-01.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/leidschendam_voorburg/2025-01-01.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/leidschendam_voorburg/2026-01-01.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/leusden/2024-01-01.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/leusden/2025-01-01.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/leusden/2026-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/lingewaard/2024-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/lingewaard/2025-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/lochem/2024-01-01.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/lochem/2025-01-01.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/lochem/2026-01-01.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/loon_op_zand/2024-12-25.json +256 -0
- data/data/regulation/nl/gemeentelijke_verordening/loon_op_zand/2025-12-24.json +196 -0
- data/data/regulation/nl/gemeentelijke_verordening/lopik/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/lopik/2024-12-24.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/lopik/2025-12-24.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/maashorst/2024-12-19.json +118 -0
- data/data/regulation/nl/gemeentelijke_verordening/maashorst/2025-12-30.json +118 -0
- data/data/regulation/nl/gemeentelijke_verordening/maassluis/2024-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/maassluis/2025-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/maassluis/2026-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/meerssen/2024-12-27.json +68 -0
- data/data/regulation/nl/gemeentelijke_verordening/midden_drenthe/2025-12-23.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/midden_groningen/2024-12-31.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/midden_groningen/2025-12-29.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/molenlanden/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/molenlanden/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/nederweert/2024-12-21.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/nederweert/2025-12-18.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/nieuwegein/2024-12-24.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/nieuwegein/2025-12-30.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/noardeast_frysl/303/242n/2025-01-01.json +77 -0
- data/data/regulation/nl/gemeentelijke_verordening/noardeast_frysl/303/242n/2025-12-24.json +77 -0
- data/data/regulation/nl/gemeentelijke_verordening/noord_beveland/2024-07-17.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/noord_beveland/2025-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/noord_beveland/2025-12-24.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/nuenen_gerwen_en_nederwetten/2024-11-28.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/nuenen_gerwen_en_nederwetten/2025-11-20.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/oegstgeest/2024-12-18.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/oegstgeest/2025-12-23.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/oirschot/2024-12-19.json +188 -0
- data/data/regulation/nl/gemeentelijke_verordening/oldambt/2024-01-01.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/oldambt/2025-01-01.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/oldebroek/2025-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/oldebroek/2025-12-27.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/oldenzaal/2025-01-01.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/olst_wijhe/2024-12-25.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/olst_wijhe/2025-12-23.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/ommen/2024-12-28.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/ommen/2025-12-25.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/oost_gelre/2024-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/oost_gelre/2025-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/oost_gelre/2026-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/oosterhout/2024-12-28.json +112 -0
- data/data/regulation/nl/gemeentelijke_verordening/oosterhout/2025-12-18.json +68 -0
- data/data/regulation/nl/gemeentelijke_verordening/oostzaan/2025-01-01.json +60 -0
- data/data/regulation/nl/gemeentelijke_verordening/oostzaan/2025-12-30.json +60 -0
- data/data/regulation/nl/gemeentelijke_verordening/opmeer/2024-12-25.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/opmeer/2025-12-19.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/oss/2025-12-17.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/oude_ijsselstreek/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/oude_ijsselstreek/2025-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/oude_ijsselstreek/2025-12-30.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/ouder_amstel/2024-01-01.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/oudewater/2024-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/oudewater/2025-01-01.json +106 -0
- data/data/regulation/nl/gemeentelijke_verordening/overbetuwe/2025-01-01.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/overbetuwe/2026-01-01.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/papendrecht/2025-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/papendrecht/2025-12-17.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/purmerend/2024-11-21.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/purmerend/2025-11-25.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/raalte/2024-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/raalte/2025-12-02.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/reimerswaal/2024-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/reimerswaal/2025-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/reimerswaal/2026-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/renswoude/2025-01-01.json +53 -0
- data/data/regulation/nl/gemeentelijke_verordening/reusel_de_mierden/2024-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/reusel_de_mierden/2025-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/reusel_de_mierden/2026-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/rhenen/2025-12-20.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/rijssen_holten/2024-12-25.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/rijssen_holten/2025-12-30.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/rijswijk/2024-11-21.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/rijswijk/2025-11-28.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/roosendaal/2024-12-25.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/roosendaal/2025-12-24.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/scherpenzeel/2024-12-20.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/scherpenzeel/2026-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/schiermonnikoog/2024-11-15.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/schiermonnikoog/2025-12-02.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/schouwen_duiveland/2024-01-01.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/schouwen_duiveland/2025-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/schouwen_duiveland/2026-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/simpelveld/2024-11-21.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/simpelveld/2025-12-20.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/sint_michielsgestel/2024-01-01.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/sint_michielsgestel/2024-12-24.json +105 -0
- data/data/regulation/nl/gemeentelijke_verordening/sittard_geleen/2024-11-30.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/sittard_geleen/2025-12-04.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/sluis/2024-01-01.json +131 -0
- data/data/regulation/nl/gemeentelijke_verordening/sluis/2025-01-01.json +131 -0
- data/data/regulation/nl/gemeentelijke_verordening/sluis/2026-01-01.json +131 -0
- data/data/regulation/nl/gemeentelijke_verordening/smallingerland/2024-12-28.json +83 -0
- data/data/regulation/nl/gemeentelijke_verordening/smallingerland/2025-12-31.json +83 -0
- data/data/regulation/nl/gemeentelijke_verordening/someren/2024-12-20.json +118 -0
- data/data/regulation/nl/gemeentelijke_verordening/someren/2025-12-19.json +118 -0
- data/data/regulation/nl/gemeentelijke_verordening/staphorst/2024-11-30.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/staphorst/2025-12-03.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/stede_broec/2024-12-31.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/stede_broec/2026-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/steenbergen/2024-12-19.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/steenbergen/2025-12-19.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/stein/2024-12-24.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/stein/2026-01-01.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/stichtse_vecht/2024-01-01.json +112 -0
- data/data/regulation/nl/gemeentelijke_verordening/stichtse_vecht/2024-12-28.json +112 -0
- data/data/regulation/nl/gemeentelijke_verordening/stichtse_vecht/2025-12-25.json +112 -0
- data/data/regulation/nl/gemeentelijke_verordening/s/303/272dwest_frysl/303/242n/2025-01-01.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/s/303/272dwest_frysl/303/242n/2026-01-01.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/terneuzen/2024-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/terneuzen/2025-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/terneuzen/2026-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/terschelling/2024-12-11.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/terschelling/2025-12-27.json +69 -0
- data/data/regulation/nl/gemeentelijke_verordening/texel/2024-12-27.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/texel/2026-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/tholen/2024-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/tilburg/2024-11-27.json +62 -0
- data/data/regulation/nl/gemeentelijke_verordening/tilburg/2025-12-10.json +62 -0
- data/data/regulation/nl/gemeentelijke_verordening/tubbergen/2025-01-01.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/tubbergen/2025-12-25.json +118 -0
- data/data/regulation/nl/gemeentelijke_verordening/twenterand/2024-01-01.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/twenterand/2025-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/twenterand/2026-01-01.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/uitgeest/2024-12-20.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/uitgeest/2025-12-18.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/uithoorn/2024-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/uithoorn/2025-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/uithoorn/2026-01-01.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/uithoorn/conformance/previous_ordinance_last_day.json +18 -0
- data/data/regulation/nl/gemeentelijke_verordening/uithoorn/conformance/successor_ordinance_first_day.json +18 -0
- data/data/regulation/nl/gemeentelijke_verordening/urk/2024-12-05.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/urk/2026-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/veenendaal/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/veenendaal/2024-12-17.json +60 -0
- data/data/regulation/nl/gemeentelijke_verordening/veenendaal/2025-12-23.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/veldhoven/2024-01-01.json +139 -0
- data/data/regulation/nl/gemeentelijke_verordening/veldhoven/2025-01-01.json +139 -0
- data/data/regulation/nl/gemeentelijke_verordening/velsen/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/velsen/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/velsen/2026-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/vijfheerenlanden/2025-01-01.json +150 -0
- data/data/regulation/nl/gemeentelijke_verordening/vijfheerenlanden/2026-01-01.json +150 -0
- data/data/regulation/nl/gemeentelijke_verordening/vlaardingen/2024-12-27.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/vlaardingen/2025-12-20.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/vlieland/2024-12-20.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/vlieland/2025-12-19.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/voerendaal/2025-12-24.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/voorne_aan_zee/2024-12-25.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/voorne_aan_zee/2025-11-18.json +117 -0
- data/data/regulation/nl/gemeentelijke_verordening/voorschoten/2024-11-28.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/voorschoten/2025-11-25.json +57 -0
- data/data/regulation/nl/gemeentelijke_verordening/voorst/2025-01-01.json +147 -0
- data/data/regulation/nl/gemeentelijke_verordening/voorst/2026-01-01.json +147 -0
- data/data/regulation/nl/gemeentelijke_verordening/waadhoeke/2024-12-25.json +77 -0
- data/data/regulation/nl/gemeentelijke_verordening/waalre/2024-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/waalre/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/waalre/2026-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/waddinxveen/2024-12-20.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/waddinxveen/2025-12-19.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/wageningen/2024-12-14.json +59 -0
- data/data/regulation/nl/gemeentelijke_verordening/wageningen/2025-12-23.json +67 -0
- data/data/regulation/nl/gemeentelijke_verordening/wassenaar/2024-12-21.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/wassenaar/2025-12-06.json +107 -0
- data/data/regulation/nl/gemeentelijke_verordening/waterland/2024-12-28.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/waterland/2025-12-30.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/weert/2024-12-24.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/weert/2025-12-20.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/west_maas_en_waal/2024-12-20.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/west_maas_en_waal/2025-12-20.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/westerveld/2024-12-28.json +158 -0
- data/data/regulation/nl/gemeentelijke_verordening/westerwolde/2025-01-01.json +61 -0
- data/data/regulation/nl/gemeentelijke_verordening/wierden/2025-12-18.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/wijk_bij_duurstede/2024-12-21.json +100 -0
- data/data/regulation/nl/gemeentelijke_verordening/wijk_bij_duurstede/2025-12-20.json +100 -0
- data/data/regulation/nl/gemeentelijke_verordening/winterswijk/2024-12-04.json +131 -0
- data/data/regulation/nl/gemeentelijke_verordening/winterswijk/2025-11-08.json +131 -0
- data/data/regulation/nl/gemeentelijke_verordening/woensdrecht/2025-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/wormerland/2024-12-20.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/wormerland/2025-12-30.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/woudenberg/2024-12-25.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/woudenberg/2025-12-24.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/zaanstad/2025-12-04.json +179 -0
- data/data/regulation/nl/gemeentelijke_verordening/zaltbommel/2024-01-01.json +170 -0
- data/data/regulation/nl/gemeentelijke_verordening/zaltbommel/2025-01-01.json +170 -0
- data/data/regulation/nl/gemeentelijke_verordening/zaltbommel/2026-01-01.json +170 -0
- data/data/regulation/nl/gemeentelijke_verordening/zandvoort/2024-12-24.json +66 -0
- data/data/regulation/nl/gemeentelijke_verordening/zandvoort/2025-12-23.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/zeewolde/2024-12-25.json +111 -0
- data/data/regulation/nl/gemeentelijke_verordening/zeewolde/2025-12-24.json +111 -0
- data/data/regulation/nl/gemeentelijke_verordening/zeist/2025-12-25.json +108 -0
- data/data/regulation/nl/gemeentelijke_verordening/zoetermeer/2024-12-20.json +65 -0
- data/data/regulation/nl/gemeentelijke_verordening/zoetermeer/2025-12-19.json +65 -0
- data/data/regulation/nl/gemeentelijke_verordening/zuidplas/2026-01-01.json +64 -0
- data/data/regulation/nl/gemeentelijke_verordening/zundert/2024-12-19.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/zundert/2025-12-16.json +70 -0
- data/data/regulation/nl/gemeentelijke_verordening/zwartewaterland/2024-11-20.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/zwartewaterland/2025-11-25.json +73 -0
- data/data/regulation/nl/gemeentelijke_verordening/zwolle/2024-12-24.json +110 -0
- data/data/regulation/nl/gemeentelijke_verordening/zwolle/2025-12-19.json +110 -0
- data/lib/tax_conformance_kit/taxctl_client.rb +19 -1
- data/lib/tax_conformance_kit/version.rb +1 -1
- data/lib/tax_conformance_kit.rb +16 -0
- metadata +431 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a235723261c9de5283189e206244af4fc50b7d163b3f7298116520b54828d3c8
|
|
4
|
+
data.tar.gz: 731f67e297702bf3cfa2819caa842f1f99b00484da1f95ca0d5bbc33805edb05
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f35d5ab45ae4e8b008bb11755af5b3a356628d6f04f677427bd7e86617e6fc17dd30cd1e0b09233fe32a521f6029c969410550ba0395653e219f6522a9f91752
|
|
7
|
+
data.tar.gz: 5c8e06176a28a065201ac3eb110d45814af4cc986aec92033439fbda1c927912d44fe041ac99cb66ebb2fbd57ea8b5d0a31ea2944de0b8a7380116924d3cf570
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Odeva
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
|
@@ -4,7 +4,13 @@ Thin Ruby client for the `tax-conformance-kit` Go runtime.
|
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Bundler (RubyGems):
|
|
8
|
+
|
|
9
|
+
```ruby
|
|
10
|
+
gem "tax_conformance_kit", "~> 0.2.0"
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Path dependency (for local development):
|
|
8
14
|
|
|
9
15
|
```ruby
|
|
10
16
|
gem "tax_conformance_kit", path: "../tax-conformance-kit/clients/ruby"
|
|
@@ -13,28 +19,34 @@ gem "tax_conformance_kit", path: "../tax-conformance-kit/clients/ruby"
|
|
|
13
19
|
Git dependency:
|
|
14
20
|
|
|
15
21
|
```ruby
|
|
16
|
-
gem "tax_conformance_kit", git: "https://github.com/
|
|
22
|
+
gem "tax_conformance_kit", git: "https://github.com/odeva-labs/tax-conformance-kit.git", glob: "clients/ruby/*.gemspec"
|
|
17
23
|
```
|
|
18
24
|
|
|
19
25
|
## Usage
|
|
20
26
|
|
|
27
|
+
Zero-config — the gem ships with the bundled `taxctl` binary and the kind registry:
|
|
28
|
+
|
|
21
29
|
```ruby
|
|
22
30
|
require "tax_conformance_kit"
|
|
23
31
|
|
|
24
|
-
client = TaxConformanceKit::TaxctlClient.new
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
response = client.evaluate(
|
|
30
|
-
ruleset: ruleset_hash,
|
|
31
|
-
booking_input: booking_input_hash
|
|
32
|
-
)
|
|
32
|
+
client = TaxConformanceKit::TaxctlClient.new
|
|
33
|
+
response = client.evaluate(ruleset: ruleset_hash, booking_input: booking_input_hash)
|
|
34
|
+
resolved = client.evaluate_resolved(booking_input: booking_input_hash)
|
|
35
|
+
grouped = client.evaluate_resolved_assessment(assessment_input: assessment_input_hash)
|
|
33
36
|
```
|
|
34
37
|
|
|
38
|
+
### Advanced: override `command:`
|
|
39
|
+
|
|
35
40
|
`command:` may be either:
|
|
36
41
|
|
|
37
42
|
- a binary path string, for example `"/usr/local/bin/taxctl"`
|
|
38
43
|
- a full argv array, for example `["go", "run", "./cmd/taxctl"]`
|
|
39
44
|
|
|
45
|
+
```ruby
|
|
46
|
+
client = TaxConformanceKit::TaxctlClient.new(
|
|
47
|
+
command: ["/path/to/taxctl"],
|
|
48
|
+
registry_path: "/path/to/kind-registry.v1.json"
|
|
49
|
+
)
|
|
50
|
+
```
|
|
51
|
+
|
|
40
52
|
The client does not implement the evaluator. It shells out to the canonical Go runtime and exchanges JSON over stdin/stdout.
|
data/bin/taxctl
ADDED
|
Binary file
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://tax-conformance.dev/schemas/kind-registry.v1.json",
|
|
4
|
+
"title": "KindRegistry",
|
|
5
|
+
"description": "Canonical list of calculation.kind and predicate.kind values with their params schemas. Every engine port MUST reject rulesets referencing kinds not present here. Ports MAY implement a subset, but MUST fail loudly on unimplemented-but-registered kinds encountered during evaluation.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["registry_version", "calculations", "predicates"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"registry_version": { "const": "v1" },
|
|
10
|
+
"calculations": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"additionalProperties": { "$ref": "#/$defs/KindEntry" }
|
|
13
|
+
},
|
|
14
|
+
"predicates": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"additionalProperties": { "$ref": "#/$defs/KindEntry" }
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"$defs": {
|
|
20
|
+
"KindEntry": {
|
|
21
|
+
"type": "object",
|
|
22
|
+
"required": ["description", "params_schema"],
|
|
23
|
+
"properties": {
|
|
24
|
+
"description": { "type": "string" },
|
|
25
|
+
"since": { "type": "string", "description": "Schema version when introduced" },
|
|
26
|
+
"params_schema": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"description": "JSON Schema (draft 2020-12) for the kind's params object"
|
|
29
|
+
},
|
|
30
|
+
"examples": {
|
|
31
|
+
"type": "array",
|
|
32
|
+
"items": { "type": "object" }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
"registry_version": "v1",
|
|
39
|
+
"calculations": {
|
|
40
|
+
"generic.per_night": {
|
|
41
|
+
"description": "Flat amount per night.",
|
|
42
|
+
"since": "v1",
|
|
43
|
+
"params_schema": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"required": ["amount"],
|
|
46
|
+
"properties": {
|
|
47
|
+
"amount": { "type": "number", "minimum": 0 }
|
|
48
|
+
},
|
|
49
|
+
"additionalProperties": false
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"generic.per_person_per_night": {
|
|
53
|
+
"description": "Flat amount per taxable guest per night. Guests = adults + children unless taxable_guest_age_gte narrows the count. max_nights caps the taxable stay units.",
|
|
54
|
+
"since": "v1",
|
|
55
|
+
"params_schema": {
|
|
56
|
+
"type": "object",
|
|
57
|
+
"required": ["amount"],
|
|
58
|
+
"properties": {
|
|
59
|
+
"amount": { "type": "number", "minimum": 0 },
|
|
60
|
+
"max_nights": { "type": "integer", "minimum": 0 },
|
|
61
|
+
"taxable_guest_age_gte": { "type": "integer", "minimum": 0 }
|
|
62
|
+
},
|
|
63
|
+
"additionalProperties": false
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"generic.per_person_per_night_discount_after_nights": {
|
|
67
|
+
"description": "Flat amount per taxable guest per night, with a discounted tail from a configurable night onward. Useful for regimes such as the Balearic Islands where nights 9+ are charged at 50%.",
|
|
68
|
+
"since": "v1",
|
|
69
|
+
"params_schema": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"required": ["amount", "discount_start_night", "discount_multiplier"],
|
|
72
|
+
"properties": {
|
|
73
|
+
"amount": { "type": "number", "minimum": 0 },
|
|
74
|
+
"discount_start_night": { "type": "integer", "minimum": 1 },
|
|
75
|
+
"discount_multiplier": { "type": "number", "minimum": 0 },
|
|
76
|
+
"max_nights": { "type": "integer", "minimum": 0 },
|
|
77
|
+
"taxable_guest_age_gte": { "type": "integer", "minimum": 0 }
|
|
78
|
+
},
|
|
79
|
+
"additionalProperties": false
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"generic.fixed_amount": {
|
|
83
|
+
"description": "Flat amount per booking.",
|
|
84
|
+
"since": "v1",
|
|
85
|
+
"params_schema": {
|
|
86
|
+
"type": "object",
|
|
87
|
+
"required": ["amount"],
|
|
88
|
+
"properties": {
|
|
89
|
+
"amount": { "type": "number", "minimum": 0 }
|
|
90
|
+
},
|
|
91
|
+
"additionalProperties": false
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"generic.percentage_of_base": {
|
|
95
|
+
"description": "Percentage of a configurable base. IMPORTANT: 'accommodation_fee_exclusive_of_tax' means the taxable base excludes the tourist tax itself (NL ordinances commonly define it this way).",
|
|
96
|
+
"since": "v1",
|
|
97
|
+
"params_schema": {
|
|
98
|
+
"type": "object",
|
|
99
|
+
"required": ["rate_pct", "base"],
|
|
100
|
+
"properties": {
|
|
101
|
+
"rate_pct": { "type": "number", "minimum": 0 },
|
|
102
|
+
"base": {
|
|
103
|
+
"type": "string",
|
|
104
|
+
"enum": [
|
|
105
|
+
"accommodation_fee_exclusive_of_tax",
|
|
106
|
+
"gross_booking_total",
|
|
107
|
+
"subtotal"
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"additionalProperties": false
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"nl.tiered_by_stay_duration": {
|
|
115
|
+
"description": "Step function over stay length in nights. Tiers are closed-open on max_nights; final tier may omit max_nights. Each tier's amount is the total for the booking (not per-night).",
|
|
116
|
+
"since": "v1",
|
|
117
|
+
"params_schema": {
|
|
118
|
+
"type": "object",
|
|
119
|
+
"required": ["tiers"],
|
|
120
|
+
"properties": {
|
|
121
|
+
"tiers": {
|
|
122
|
+
"type": "array",
|
|
123
|
+
"minItems": 1,
|
|
124
|
+
"items": {
|
|
125
|
+
"type": "object",
|
|
126
|
+
"required": ["amount"],
|
|
127
|
+
"properties": {
|
|
128
|
+
"min_nights": { "type": "integer", "minimum": 0 },
|
|
129
|
+
"max_nights": { "type": "integer", "minimum": 1 },
|
|
130
|
+
"amount": { "type": "number", "minimum": 0 }
|
|
131
|
+
},
|
|
132
|
+
"additionalProperties": false
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"additionalProperties": false
|
|
137
|
+
},
|
|
138
|
+
"examples": [
|
|
139
|
+
{
|
|
140
|
+
"tiers": [
|
|
141
|
+
{ "max_nights": 30, "amount": 0 },
|
|
142
|
+
{ "min_nights": 30, "max_nights": 120, "amount": 50 },
|
|
143
|
+
{ "min_nights": 120, "max_nights": 240, "amount": 100 },
|
|
144
|
+
{ "min_nights": 240, "amount": 150 }
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
"nl.fixed_per_pitch_per_year": {
|
|
150
|
+
"description": "Per-pitch annual levy. Requires pitch_count on input. Primarily used with the annual_operator_assessment mode; included here so that per-booking engines can at least validate and reject explicitly.",
|
|
151
|
+
"since": "v1",
|
|
152
|
+
"params_schema": {
|
|
153
|
+
"type": "object",
|
|
154
|
+
"required": ["amount_per_pitch"],
|
|
155
|
+
"properties": {
|
|
156
|
+
"amount_per_pitch": { "type": "number", "minimum": 0 },
|
|
157
|
+
"season": {
|
|
158
|
+
"type": "string",
|
|
159
|
+
"enum": ["full_year", "pre_season", "post_season", "per_month"]
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"additionalProperties": false
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
"nl.forfait_per_person_per_night": {
|
|
166
|
+
"description": "Per-person-per-night rate applied to DEEMED inputs (nights and persons derived from ordinance-defined forfaits, e.g. Roerdalen: yearly pitch = 80 nights x 2.4 persons). Concrete forfait table lives in params; engine multiplies rate * deemed_nights * deemed_persons * pitch_count.",
|
|
167
|
+
"since": "v1",
|
|
168
|
+
"params_schema": {
|
|
169
|
+
"type": "object",
|
|
170
|
+
"required": ["amount", "forfait"],
|
|
171
|
+
"properties": {
|
|
172
|
+
"amount": { "type": "number", "minimum": 0 },
|
|
173
|
+
"forfait": {
|
|
174
|
+
"type": "object",
|
|
175
|
+
"required": ["nights", "persons_per_pitch"],
|
|
176
|
+
"properties": {
|
|
177
|
+
"nights": { "type": "number", "minimum": 0 },
|
|
178
|
+
"persons_per_pitch": { "type": "number", "minimum": 0 },
|
|
179
|
+
"regime": {
|
|
180
|
+
"type": "string",
|
|
181
|
+
"enum": ["yearly_pitch", "seasonal_pitch", "bed_rental"]
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
"additionalProperties": false
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"additionalProperties": false
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"predicates": {
|
|
192
|
+
"guest.resident_of_same_municipality": {
|
|
193
|
+
"description": "True when main_guest_municipality_code equals property_municipality_code (case-insensitive).",
|
|
194
|
+
"since": "v1",
|
|
195
|
+
"params_schema": { "type": "object", "additionalProperties": false }
|
|
196
|
+
},
|
|
197
|
+
"guest.age_below": {
|
|
198
|
+
"description": "True when at least one (or N, if params.count set) guest is younger than max_age on the reference night.",
|
|
199
|
+
"since": "v1",
|
|
200
|
+
"params_schema": {
|
|
201
|
+
"type": "object",
|
|
202
|
+
"required": ["max_age"],
|
|
203
|
+
"properties": {
|
|
204
|
+
"max_age": { "type": "integer", "minimum": 0 },
|
|
205
|
+
"night_index": {
|
|
206
|
+
"type": "string",
|
|
207
|
+
"enum": ["first", "any", "each"],
|
|
208
|
+
"default": "any",
|
|
209
|
+
"description": "Which night the age is evaluated against. Roerdalen 'under 2 first night' uses 'first'."
|
|
210
|
+
},
|
|
211
|
+
"count": { "type": "integer", "minimum": 1, "default": 1 }
|
|
212
|
+
},
|
|
213
|
+
"additionalProperties": false
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"stay.purpose_in": {
|
|
217
|
+
"description": "True when booking_input.stay_purpose is in the allowed list.",
|
|
218
|
+
"since": "v1",
|
|
219
|
+
"params_schema": {
|
|
220
|
+
"type": "object",
|
|
221
|
+
"required": ["values"],
|
|
222
|
+
"properties": {
|
|
223
|
+
"values": {
|
|
224
|
+
"type": "array",
|
|
225
|
+
"items": {
|
|
226
|
+
"type": "string",
|
|
227
|
+
"enum": ["school_group", "youth_group", "leisure", "business", "medical", "asylum", "government_ordered"]
|
|
228
|
+
},
|
|
229
|
+
"minItems": 1
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
"additionalProperties": false
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"stay.wtza_care_institution": {
|
|
236
|
+
"description": "Stay is at a Wtza-registered care institution. Short-circuit exemption in all four sampled NL ordinances.",
|
|
237
|
+
"since": "v1",
|
|
238
|
+
"params_schema": { "type": "object", "additionalProperties": false }
|
|
239
|
+
},
|
|
240
|
+
"stay.coa_asylum_housing": {
|
|
241
|
+
"description": "Stay is COA asylum-seeker housing.",
|
|
242
|
+
"since": "v1",
|
|
243
|
+
"params_schema": { "type": "object", "additionalProperties": false }
|
|
244
|
+
},
|
|
245
|
+
"stay.accommodation_brought_by": {
|
|
246
|
+
"description": "Guest brings their own accommodation vs operator provides (Breda camping vs bungalow distinction).",
|
|
247
|
+
"since": "v1",
|
|
248
|
+
"params_schema": {
|
|
249
|
+
"type": "object",
|
|
250
|
+
"required": ["value"],
|
|
251
|
+
"properties": {
|
|
252
|
+
"value": { "type": "string", "enum": ["guest", "operator"] }
|
|
253
|
+
},
|
|
254
|
+
"additionalProperties": false
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
"stay.pricing_arrangement": {
|
|
258
|
+
"description": "Operator-elected pricing regime. 'per_night' = charged per person per night; 'arrangement' = tiered flat amount by stay-duration bucket. Breda allows camping operators to elect either. Input must assert the chosen regime.",
|
|
259
|
+
"since": "v1",
|
|
260
|
+
"params_schema": {
|
|
261
|
+
"type": "object",
|
|
262
|
+
"required": ["value"],
|
|
263
|
+
"properties": {
|
|
264
|
+
"value": { "type": "string", "enum": ["per_night", "arrangement"] }
|
|
265
|
+
},
|
|
266
|
+
"additionalProperties": false
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"stay.supervised_minor_group": {
|
|
270
|
+
"description": "True when the booking is an organized minor group with enough minors and adult supervisors. Breda exempts groups of more than 10 minors accompanied by 18+ supervisors.",
|
|
271
|
+
"since": "v1",
|
|
272
|
+
"params_schema": {
|
|
273
|
+
"type": "object",
|
|
274
|
+
"required": ["min_minors", "min_supervisors", "supervisor_min_age"],
|
|
275
|
+
"properties": {
|
|
276
|
+
"min_minors": { "type": "integer", "minimum": 1 },
|
|
277
|
+
"min_supervisors": { "type": "integer", "minimum": 1 },
|
|
278
|
+
"supervisor_min_age": { "type": "integer", "minimum": 0 },
|
|
279
|
+
"allowed_purposes": {
|
|
280
|
+
"type": "array",
|
|
281
|
+
"items": {
|
|
282
|
+
"type": "string",
|
|
283
|
+
"enum": ["school_group", "youth_group", "leisure", "business", "medical", "asylum", "government_ordered"]
|
|
284
|
+
},
|
|
285
|
+
"minItems": 1
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"additionalProperties": false
|
|
289
|
+
}
|
|
290
|
+
},
|
|
291
|
+
"stay.seasonal_window": {
|
|
292
|
+
"description": "Stay date falls within a recurring month-day window (wraps year). Schouwen-Duiveland seasonal surcharges.",
|
|
293
|
+
"since": "v1",
|
|
294
|
+
"params_schema": {
|
|
295
|
+
"type": "object",
|
|
296
|
+
"required": ["start_mmdd", "end_mmdd"],
|
|
297
|
+
"properties": {
|
|
298
|
+
"start_mmdd": { "type": "string", "pattern": "^\\d{2}-\\d{2}$" },
|
|
299
|
+
"end_mmdd": { "type": "string", "pattern": "^\\d{2}-\\d{2}$" }
|
|
300
|
+
},
|
|
301
|
+
"additionalProperties": false
|
|
302
|
+
}
|
|
303
|
+
},
|
|
304
|
+
"pitch.ownership_restriction": {
|
|
305
|
+
"description": "Schouwen-Duiveland: pitch reserved for owner + household; non-owner guests excluded.",
|
|
306
|
+
"since": "v1",
|
|
307
|
+
"params_schema": {
|
|
308
|
+
"type": "object",
|
|
309
|
+
"properties": {
|
|
310
|
+
"allowed": {
|
|
311
|
+
"type": "array",
|
|
312
|
+
"items": { "type": "string", "enum": ["owner", "owner_household"] }
|
|
313
|
+
}
|
|
314
|
+
},
|
|
315
|
+
"additionalProperties": false
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"cross_tax.already_subject_to": {
|
|
319
|
+
"description": "Booking is already subject to another named tax (Roerdalen: forensenbelasting). Engine does not verify; input must assert it.",
|
|
320
|
+
"since": "v1",
|
|
321
|
+
"params_schema": {
|
|
322
|
+
"type": "object",
|
|
323
|
+
"required": ["tax"],
|
|
324
|
+
"properties": {
|
|
325
|
+
"tax": {
|
|
326
|
+
"type": "string",
|
|
327
|
+
"enum": ["forensenbelasting", "watertoeristenbelasting", "vat", "corporate"]
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
"additionalProperties": false
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
"location.property_locality_code_not_in": {
|
|
334
|
+
"description": "True when the property's locality code is not in the configured list. Useful for region-wide rules that exclude one municipality, such as Catalonia tariffs outside Barcelona city.",
|
|
335
|
+
"since": "v1",
|
|
336
|
+
"params_schema": {
|
|
337
|
+
"type": "object",
|
|
338
|
+
"required": ["values"],
|
|
339
|
+
"properties": {
|
|
340
|
+
"values": {
|
|
341
|
+
"type": "array",
|
|
342
|
+
"items": { "type": "string" },
|
|
343
|
+
"minItems": 1
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"additionalProperties": false
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
data/data/regulation/es/impuesto_estancias_turisticas/catalonia/barcelona_city/2026-04-01.json
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "es-catalonia-barcelona-city-2026-04-01",
|
|
3
|
+
"domain": "tourist_tax",
|
|
4
|
+
"lifecycle": "reviewed",
|
|
5
|
+
"jurisdiction": {
|
|
6
|
+
"country_code": "ES",
|
|
7
|
+
"country_name": "Spain",
|
|
8
|
+
"region_code": "ES-CT",
|
|
9
|
+
"region_name": "Catalonia"
|
|
10
|
+
},
|
|
11
|
+
"assessment_policy": {
|
|
12
|
+
"period": "calendar_half_year",
|
|
13
|
+
"notes": "Catalonia files the IEET twice per year: 1-20 April for stays accrued from October through March, and 1-20 October for stays accrued from April through September."
|
|
14
|
+
},
|
|
15
|
+
"notes": "Reviewed fixture based on the Catalonia Tax Agency's official IEET quota table effective April 1, 2026. Rates below include Barcelona city's municipal surcharge where applicable. Minors under 17 are exempt and the tax is capped at seven stay units per person.",
|
|
16
|
+
"rules": [
|
|
17
|
+
{
|
|
18
|
+
"id": "es-ct-bcn-city-2026-hotel-5-star",
|
|
19
|
+
"location_scope": {
|
|
20
|
+
"country_code": "ES",
|
|
21
|
+
"region_code": "ES-CT",
|
|
22
|
+
"locality_kind": "municipality",
|
|
23
|
+
"locality_code": "08019",
|
|
24
|
+
"locality_name": "Barcelona"
|
|
25
|
+
},
|
|
26
|
+
"valid_from": "2026-04-01",
|
|
27
|
+
"valid_to": null,
|
|
28
|
+
"applies_to": {
|
|
29
|
+
"accommodation_types": ["hotel_5_star", "luxury_hotel", "cruise"]
|
|
30
|
+
},
|
|
31
|
+
"calculation": {
|
|
32
|
+
"kind": "generic.per_person_per_night",
|
|
33
|
+
"params": {
|
|
34
|
+
"amount": 12.0,
|
|
35
|
+
"max_nights": 7,
|
|
36
|
+
"taxable_guest_age_gte": 17
|
|
37
|
+
},
|
|
38
|
+
"currency": "EUR"
|
|
39
|
+
},
|
|
40
|
+
"source": {
|
|
41
|
+
"source_url": "https://atc.gencat.cat/es/tributs/ieet/quota-tributaria",
|
|
42
|
+
"reviewed_at": null
|
|
43
|
+
},
|
|
44
|
+
"confidence": "reviewed",
|
|
45
|
+
"notes": "Barcelona city rate from April 1, 2026: EUR 12.00 for 5-star and luxury hotels, campings de lujo, and cruises."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "es-ct-bcn-city-2026-hotel-4-star",
|
|
49
|
+
"location_scope": {
|
|
50
|
+
"country_code": "ES",
|
|
51
|
+
"region_code": "ES-CT",
|
|
52
|
+
"locality_kind": "municipality",
|
|
53
|
+
"locality_code": "08019",
|
|
54
|
+
"locality_name": "Barcelona"
|
|
55
|
+
},
|
|
56
|
+
"valid_from": "2026-04-01",
|
|
57
|
+
"valid_to": null,
|
|
58
|
+
"applies_to": {
|
|
59
|
+
"accommodation_types": ["hotel_4_star", "superior_hotel"]
|
|
60
|
+
},
|
|
61
|
+
"calculation": {
|
|
62
|
+
"kind": "generic.per_person_per_night",
|
|
63
|
+
"params": {
|
|
64
|
+
"amount": 8.0,
|
|
65
|
+
"max_nights": 7,
|
|
66
|
+
"taxable_guest_age_gte": 17
|
|
67
|
+
},
|
|
68
|
+
"currency": "EUR"
|
|
69
|
+
},
|
|
70
|
+
"source": {
|
|
71
|
+
"source_url": "https://atc.gencat.cat/es/tributs/ieet/quota-tributaria",
|
|
72
|
+
"reviewed_at": null
|
|
73
|
+
},
|
|
74
|
+
"confidence": "reviewed",
|
|
75
|
+
"notes": "Barcelona city rate from April 1, 2026: EUR 8.00 for 4-star and 4-star superior hotels."
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "es-ct-bcn-city-2026-tourist-home",
|
|
79
|
+
"location_scope": {
|
|
80
|
+
"country_code": "ES",
|
|
81
|
+
"region_code": "ES-CT",
|
|
82
|
+
"locality_kind": "municipality",
|
|
83
|
+
"locality_code": "08019",
|
|
84
|
+
"locality_name": "Barcelona"
|
|
85
|
+
},
|
|
86
|
+
"valid_from": "2026-04-01",
|
|
87
|
+
"valid_to": null,
|
|
88
|
+
"applies_to": {
|
|
89
|
+
"accommodation_types": ["tourist_apartment", "tourist_home", "private_room"]
|
|
90
|
+
},
|
|
91
|
+
"calculation": {
|
|
92
|
+
"kind": "generic.per_person_per_night",
|
|
93
|
+
"params": {
|
|
94
|
+
"amount": 9.5,
|
|
95
|
+
"max_nights": 7,
|
|
96
|
+
"taxable_guest_age_gte": 17
|
|
97
|
+
},
|
|
98
|
+
"currency": "EUR"
|
|
99
|
+
},
|
|
100
|
+
"source": {
|
|
101
|
+
"source_url": "https://atc.gencat.cat/es/tributs/ieet/quota-tributaria",
|
|
102
|
+
"reviewed_at": null
|
|
103
|
+
},
|
|
104
|
+
"confidence": "reviewed",
|
|
105
|
+
"notes": "Barcelona city rate from April 1, 2026: EUR 9.50 for tourist-use homes, tourist apartments, and private-room establishments."
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "es-ct-bcn-city-2026-hostel",
|
|
109
|
+
"location_scope": {
|
|
110
|
+
"country_code": "ES",
|
|
111
|
+
"region_code": "ES-CT",
|
|
112
|
+
"locality_kind": "municipality",
|
|
113
|
+
"locality_code": "08019",
|
|
114
|
+
"locality_name": "Barcelona"
|
|
115
|
+
},
|
|
116
|
+
"valid_from": "2026-04-01",
|
|
117
|
+
"valid_to": null,
|
|
118
|
+
"applies_to": {
|
|
119
|
+
"accommodation_types": ["hostel", "guesthouse", "boarding_house", "rural_lodging"]
|
|
120
|
+
},
|
|
121
|
+
"calculation": {
|
|
122
|
+
"kind": "generic.per_person_per_night",
|
|
123
|
+
"params": {
|
|
124
|
+
"amount": 6.0,
|
|
125
|
+
"max_nights": 7,
|
|
126
|
+
"taxable_guest_age_gte": 17
|
|
127
|
+
},
|
|
128
|
+
"currency": "EUR"
|
|
129
|
+
},
|
|
130
|
+
"source": {
|
|
131
|
+
"source_url": "https://atc.gencat.cat/es/tributs/ieet/quota-tributaria",
|
|
132
|
+
"reviewed_at": null
|
|
133
|
+
},
|
|
134
|
+
"confidence": "reviewed",
|
|
135
|
+
"notes": "Barcelona city rate from April 1, 2026: EUR 6.00 for hostels, pensions, guesthouses, rural tourism, and similar categories."
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"id": "es-ct-bcn-city-2026-camping",
|
|
139
|
+
"location_scope": {
|
|
140
|
+
"country_code": "ES",
|
|
141
|
+
"region_code": "ES-CT",
|
|
142
|
+
"locality_kind": "municipality",
|
|
143
|
+
"locality_code": "08019",
|
|
144
|
+
"locality_name": "Barcelona"
|
|
145
|
+
},
|
|
146
|
+
"valid_from": "2026-04-01",
|
|
147
|
+
"valid_to": null,
|
|
148
|
+
"applies_to": {
|
|
149
|
+
"accommodation_types": ["camping", "camping_luxury"]
|
|
150
|
+
},
|
|
151
|
+
"calculation": {
|
|
152
|
+
"kind": "generic.per_person_per_night",
|
|
153
|
+
"params": {
|
|
154
|
+
"amount": 7.0,
|
|
155
|
+
"max_nights": 7,
|
|
156
|
+
"taxable_guest_age_gte": 17
|
|
157
|
+
},
|
|
158
|
+
"currency": "EUR"
|
|
159
|
+
},
|
|
160
|
+
"source": {
|
|
161
|
+
"source_url": "https://atc.gencat.cat/es/tributs/ieet/quota-tributaria",
|
|
162
|
+
"reviewed_at": null
|
|
163
|
+
},
|
|
164
|
+
"confidence": "reviewed",
|
|
165
|
+
"notes": "Barcelona city rate from April 1, 2026: EUR 7.00 for campsites and campings de lujo."
|
|
166
|
+
}
|
|
167
|
+
]
|
|
168
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "es-catalonia-barcelona-city-dutch-operator-hotel-5-star",
|
|
3
|
+
"description": "A Dutch operator with a Barcelona 5-star hotel is charged the Barcelona city IEET rate, capped at 7 nights and excluding the 15-year-old guest.",
|
|
4
|
+
"rule_set_path": "../2026-04-01.json",
|
|
5
|
+
"booking_input": {
|
|
6
|
+
"stay_date": "2026-06-15",
|
|
7
|
+
"nights": 10,
|
|
8
|
+
"adults": 2,
|
|
9
|
+
"children": 1,
|
|
10
|
+
"guests": [
|
|
11
|
+
{ "age": 34, "role": "guest" },
|
|
12
|
+
{ "age": 38, "role": "guest" },
|
|
13
|
+
{ "age": 15, "role": "guest" }
|
|
14
|
+
],
|
|
15
|
+
"property_location": {
|
|
16
|
+
"country_code": "ES",
|
|
17
|
+
"region_code": "ES-CT",
|
|
18
|
+
"locality_kind": "municipality",
|
|
19
|
+
"locality_code": "08019",
|
|
20
|
+
"locality_name": "Barcelona"
|
|
21
|
+
},
|
|
22
|
+
"operator": {
|
|
23
|
+
"legal_country_code": "NL",
|
|
24
|
+
"legal_name": "Canal Stays BV"
|
|
25
|
+
},
|
|
26
|
+
"accommodation_type": "hotel_5_star",
|
|
27
|
+
"subtotal": 4000
|
|
28
|
+
},
|
|
29
|
+
"expected": {
|
|
30
|
+
"total_tax": 168.0,
|
|
31
|
+
"matched_rule_ids": ["es-ct-bcn-city-2026-hotel-5-star"]
|
|
32
|
+
}
|
|
33
|
+
}
|