Skip to content

Commit

Permalink
Implement appeal (#18)
Browse files Browse the repository at this point in the history
* implement appeal
  • Loading branch information
anneschuth authored Feb 13, 2025
1 parent fed2235 commit b0447b2
Show file tree
Hide file tree
Showing 10 changed files with 737 additions and 171 deletions.
9 changes: 8 additions & 1 deletion features/aanvragen_beoordelen.feature
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ Feature: Aanvraag Zorgtoeslag
And is het toeslagbedrag "1811.28" euro


Scenario: Burger gaat in bezwaar en krijgt geen gelijk
Scenario: Burger gaat in bezwaar, krijgt geen gelijk, en kan in beroep gaan
Given de volgende RvIG personen gegevens:
| bsn | geboortedatum | verblijfsadres | land_verblijf |
| 999993653 | 1998-01-01 | Amsterdam | NEDERLAND |
Expand All @@ -68,6 +68,12 @@ Feature: Aanvraag Zorgtoeslag
And de volgende BELASTINGDIENST box1 gegevens:
| bsn | loon_uit_dienstbetrekking | uitkeringen_en_pensioenen | winst_uit_onderneming | resultaat_overige_werkzaamheden | eigen_woning |
| 999993653 | 20000 | 0 | 0 | 0 | 0 |
And de volgende RvIG verblijfplaats gegevens:
| bsn | straat | huisnummer | postcode | woonplaats | type |
| 999993653 | Kalverstraat | 1 | 1012NX | Amsterdam | WOONADRES |
And de volgende JenV jurisdicties gegevens:
| gemeente | arrondissement | rechtbank |
| Amsterdam | AMSTERDAM | RECHTBANK_AMSTERDAM |
When de zorgtoeslagwet wordt uitgevoerd door TOESLAGEN
And de persoon dit aanvraagt
Then wordt de aanvraag toegevoegd aan handmatige beoordeling
Expand All @@ -77,3 +83,4 @@ Feature: Aanvraag Zorgtoeslag
And de beoordelaar het bezwaar afwijst met reden "Inkomen nog steeds niet correct na controle jaaropgave"
Then is de aanvraag afgewezen
And kan de burger niet in bezwaar gaan met reden "er is al eerder bezwaar gemaakt tegen dit besluit"
And kan de burger in beroep gaan bij RECHTBANK_AMSTERDAM
11 changes: 11 additions & 0 deletions features/steps/steps.py
Original file line number Diff line number Diff line change
Expand Up @@ -329,3 +329,14 @@ def step_impl(context, reason):
case.objection_status.get("not_possible_reason"),
"Expected reasons to match",
)


@then("kan de burger in beroep gaan bij {competent_court}")
def step_impl(context, competent_court):
case = context.services.manager.get_case_by_id(context.case_id)
assertions.assertTrue(case.can_appeal(), "Expected to be able to appeal")
assertions.assertEqual(
competent_court,
case.appeal_status.get("competent_court"),
"Expected another competent court",
)
339 changes: 339 additions & 0 deletions law/awb/beroep/JenV-2024-01-01.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,339 @@
uuid: awb-beroep-basis-2024
name: Algemene wet bestuursrecht - Beroepmogelijkheid en Termijnen
law: awb/beroep
valid_from: 2024-01-01
service: "JenV"
description: >
Bepaalt of beroep mogelijk is tegen een besluit en wat de geldende termijnen zijn
volgens de Algemene wet bestuursrecht, met inachtneming van specifieke wetgeving.
references:
- law: "Algemene wet bestuursrecht"
article: "7:1"
url: "https://wetten.overheid.nl/BWBR0005537/2024-01-01#Hoofdstuk7_Afdeling7.1_Artikel7:1"
- law: "Algemene wet bestuursrecht"
article: "8:1"
url: "https://wetten.overheid.nl/BWBR0005537/2024-01-01#Hoofdstuk8_Titeldeel8.1_Artikel8:1"
- law: "Algemene wet bestuursrecht"
article: "6:7"
url: "https://wetten.overheid.nl/BWBR0005537/2024-01-01#Hoofdstuk6_Afdeling6.2_Artikel6:7"

properties:
applies:
- name: "CASE"
aggregate: "ServiceCase"
events:
- type: "Decided"
filter:
approved: false
update:
- method: "determine_appeal_status"
mapping:
possible: "$beroep_mogelijk"
not_possible_reason: "$reden_niet_mogelijk"
appeal_period: "$beroepstermijn"
direct_appeal: "$direct_beroep"
direct_appeal_reason: "$reden_direct_beroep"
competent_court: "$bevoegde_rechtbank"
court_type: "$type_rechter"

sources:
- name: "LAW"
description: "De wet waar dit besluit op gebaseerd is"
type: "object"
temporal:
type: "point_in_time"
reference: "$calculation_date"
source_reference:
source_type: "laws"
table: "laws"
fields: [
"decision_type",
"name",
"valid_from",
"legal_character",
"voorbereidingsprocedure",
"beroepstermijn_weken",
"competent_court"
]
select_on:
- name: "uuid"
description: "UUID van de wet"
type: "string"
value: "$CASE.rulespec_uuid"

- name: "ADDRESS"
description: "Woonadres van de persoon"
type: "object"
temporal:
type: "point_in_time"
reference: "$calculation_date"
service_reference:
service: "RvIG"
field: "woonplaats"
law: "wet_brp"
parameters:
- name: "BSN"
reference: "$CASE.bsn"

- name: "JURISDICTION"
description: "Mapping van gemeentes naar rechtbank arrondissementen"
type: "object"
temporal:
type: "point_in_time"
reference: "$calculation_date"
source_reference:
source_type: "reference_data"
table: "jurisdicties"
fields: [
"gemeente",
"arrondissement",
"rechtbank"
]
select_on:
- name: "gemeente"
description: "Gemeente waar persoon woont"
type: "string"
value: "$ADDRESS"

- name: "EVENTS"
description: "De gebeurtenissen rondom deze zaak"
type: "object"
temporal:
type: "point_in_time"
reference: "$calculation_date"
source_reference:
source_type: "events"
table: "events"
fields: [
"case_id",
"event_type",
"approved"
]
select_on:
- name: "case_id"
description: "Zaak identifier"
type: "string"
value: "$CASE.id"

output:
- name: "beroep_mogelijk"
description: "Is beroep mogelijk tegen dit besluit"
type: "boolean"

- name: "reden_niet_mogelijk"
description: "Reden waarom geen beroep mogelijk is"
type: "string"
required: false

- name: "beroepstermijn"
description: "Termijn voor het indienen van beroep (standaard artikel 6:7 Awb)"
type: "number"
type_spec:
unit: "weeks"
precision: 0
min: 0

- name: "direct_beroep"
description: "Is direct beroep mogelijk zonder bezwaar"
type: "boolean"

- name: "reden_direct_beroep"
description: "Reden waarom direct beroep mogelijk is"
type: "string"
required: false

- name: "bevoegde_rechtbank"
description: "De rechtbank die bevoegd is voor het beroep"
type: "string"
required: false

- name: "type_rechter"
description: "Het type rechter (rechtbank/hof/etc)"
type: "string"
required: false

definitions:
EXCLUDED_DECISION_TYPES:
- "ALGEMEEN_VERBINDEND_VOORSCHRIFT"
- "BELEIDSREGEL"
- "VOORBEREIDINGSBESLUIT"
- "ANDERE_HANDELING"
REQUIRED_LEGAL_CHARACTER:
- "BESCHIKKING"
- "BESLUIT_VAN_ALGEMENE_STREKKING"
DEFAULT_TERMIJN_BEROEP_WEKEN: 6
DEFAULT_COURT_TYPE: "RECHTBANK"
DEFAULT_COURT: "RECHTBANK_DEN_HAAG"

actions:
# Bepaal eerst type rechter op basis van wet
- output: "type_rechter"
operation: IF
conditions:
- test:
operation: EQUALS
subject: "$LAW.name"
value: "wet_studiefinanciering"
then: "CENTRALE_RAAD_VAN_BEROEP"
- test:
operation: EQUALS
subject: "$LAW.name"
value: "wet_inkomstenbelasting"
then: "GERECHTSHOF"
- test:
operation: EQUALS
subject: "$LAW.name"
value: "vreemdelingenwet"
then: "$DEFAULT_COURT"
- test:
operation: EQUALS
subject: "$LAW.name"
value: "wet_marktordening_gezondheidszorg"
then: "COLLEGE_VAN_BEROEP_BEDRIJFSLEVEN"
- else: "$DEFAULT_COURT_TYPE"

# Bepaal specifieke rechtbank als het type RECHTBANK is
- output: "bevoegde_rechtbank"
operation: IF
conditions:
- test:
operation: EQUALS
subject: "$type_rechter"
value: "RECHTBANK"
then:
operation: IF
conditions:
- test:
operation: NOT_NULL
subject: "$ADDRESS"
then: "$JURISDICTION.rechtbank"
- else: "$DEFAULT_COURT"
- test:
operation: EQUALS
subject: "$type_rechter"
value: "$DEFAULT_COURT"
then: "$DEFAULT_COURT"
- test:
operation: EQUALS
subject: "$type_rechter"
value: "GERECHTSHOF"
then: "$LAW.competent_court"
- else: "$type_rechter"
- output: "beroep_mogelijk"
operation: AND
values:
- operation: NOT_IN
subject: "$LAW.decision_type"
values: "$EXCLUDED_DECISION_TYPES"
- operation: IN
subject: "$LAW.legal_character"
values: "$REQUIRED_LEGAL_CHARACTER"
# Of direct beroep, of bezwaar is afgewezen
- operation: OR
values:
- operation: EQUALS
subject: "$LAW.voorbereidingsprocedure"
value: "UITGEBREID"
- operation: AND
values:
# Check dat er bezwaar is gemaakt
- operation: GREATER_THAN
values:
- operation: FOREACH
subject: "$EVENTS"
combine: ADD
value:
- operation: EQUALS
subject: "$event_type"
value: "Objected"
- 0
# Check huidige status en approved
- operation: AND
values:
- operation: EQUALS
subject: "$CASE.status"
value: "DECIDED"
- operation: EQUALS
subject: "$CASE.approved"
value: false

- output: "reden_niet_mogelijk"
operation: IF
conditions:
- test:
operation: IN
subject: "$LAW.decision_type"
values: "$EXCLUDED_DECISION_TYPES"
then: "tegen dit type besluit is geen beroep mogelijk"
- test:
operation: NOT_IN
subject: "$LAW.legal_character"
values: "$REQUIRED_LEGAL_CHARACTER"
then: "dit is geen besluit in de zin van de AWB"
# Check of er bezwaar is als er geen direct beroep mogelijk is
- test:
operation: AND
values:
- operation: NOT_EQUALS
subject: "$LAW.voorbereidingsprocedure"
value: "UITGEBREID"
- operation: EQUALS
values:
- operation: FOREACH
subject: "$EVENTS"
combine: ADD
value:
- operation: EQUALS
subject: "$event_type"
value: "Objected"
- 0
then: "er moet eerst bezwaar worden gemaakt"
# Check of er een afwijzende beslissing is op het bezwaar
- test:
operation: AND
values:
- operation: GREATER_THAN
values:
- operation: FOREACH
subject: "$EVENTS"
combine: ADD
value:
- operation: EQUALS
subject: "$event_type"
value: "Objected"
- 0
- operation: OR
values:
- operation: NOT_EQUALS
subject: "$CASE.status"
value: "DECIDED"
- operation: NOT_EQUALS
subject: "$CASE.approved"
value: false
then: "er is nog geen afwijzende beslissing op bezwaar"
- else: null

- output: "beroepstermijn"
operation: IF
conditions:
- test:
subject: "$LAW.beroepstermijn_weken"
operation: NOT_NULL
then: "$LAW.beroepstermijn_weken"
- else: "$DEFAULT_TERMIJN_BEROEP_WEKEN"

- output: "direct_beroep"
operation: EQUALS
subject: "$LAW.voorbereidingsprocedure"
value: "UITGEBREID"

- output: "reden_direct_beroep"
operation: IF
conditions:
- test:
operation: EQUALS
subject: "$LAW.voorbereidingsprocedure"
value: "UITGEBREID"
then: "besluit is voorbereid met uitgebreide procedure"
- else: null
Loading

0 comments on commit b0447b2

Please sign in to comment.