Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Gemeenschappelijke parkeerruimten #104

Merged
merged 41 commits into from
Sep 24, 2024
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
b4ba8cd
genereer-ref-data feature: vraag user input wanneer codes in refdata …
tiddoloos Sep 10, 2024
f232c96
vera refdata update + uitbreiding parkeergelegenheden
tiddoloos Sep 10, 2024
4d7b424
opzet gemeenschappelijke parkeer gelegenheden
tiddoloos Sep 10, 2024
3bc4aed
niet gedeelde garage aan classificeer ruimte toegevoegd
tiddoloos Sep 10, 2024
c647766
gedeelde parkeerruimte aanzet
tiddoloos Sep 13, 2024
c5222ce
opzet met los inschieten parkeervakken
tiddoloos Sep 17, 2024
0fe7afc
Merge remote-tracking branch 'origin/main' into feature/TMS-205-gemee…
tiddoloos Sep 17, 2024
df00fac
garage specifiek aangepast op garagebox
tiddoloos Sep 18, 2024
dc53658
update oppervlakte overige ruimte 2x garagebox test
tiddoloos Sep 18, 2024
5bbaf29
update Eenhedenruimt met 'aantal'
tiddoloos Sep 18, 2024
7871970
specifieke tests
tiddoloos Sep 18, 2024
8652112
punten voor type III goedgezet
tiddoloos Sep 18, 2024
115582a
Merge remote-tracking branch 'origin' into feature/TMS-205-gemeenscha…
tiddoloos Sep 18, 2024
f18674b
alias goed gezet
tiddoloos Sep 18, 2024
28cf7eb
make sure ints are not negative
tiddoloos Sep 18, 2024
e06578e
Merge remote-tracking branch 'origin' into feature/TMS-205-gemeenscha…
tiddoloos Sep 23, 2024
db15539
generieke test data update
tiddoloos Sep 23, 2024
9827393
parkeerruimte object aan zelfstandige_woonruimte.py toegevoegd
tiddoloos Sep 23, 2024
c312148
warning toegevoegd en classificeer ruimte verwijderd
tiddoloos Sep 23, 2024
bd956ab
comment hoe de warning dict gedefinieerd dient te worden
tiddoloos Sep 23, 2024
b0e8943
todo verwijderd want is geimplementeerd
tiddoloos Sep 23, 2024
1c379c1
volgorde goed gezet
tiddoloos Sep 23, 2024
09f9444
specifieke tests aangevuld
tiddoloos Sep 23, 2024
5118402
update implementatie beleidsboek
tiddoloos Sep 23, 2024
e218f90
todo's verwijderd
tiddoloos Sep 23, 2024
b5466be
Update woningwaardering/stelsels/zelfstandige_woonruimten/gemeenschap…
tiddoloos Sep 23, 2024
4aca87c
ruff
tiddoloos Sep 23, 2024
a7d881f
ref data met '-teken + dubbele trappenhuis verwijderd
tiddoloos Sep 23, 2024
dac5a93
ref data met '-teken + dubbele trappenhuis verwijderd
tiddoloos Sep 23, 2024
d880091
'prive' ipv 'niet gedeeld'
tiddoloos Sep 23, 2024
30287c9
overbodige info statement
tiddoloos Sep 24, 2024
58ffba3
warning naar info
tiddoloos Sep 24, 2024
6afdeff
readme + uitbreinding aantal duidelijkder
tiddoloos Sep 24, 2024
42134aa
data
tiddoloos Sep 24, 2024
424b5ec
engelse ziekte in readme
sTomerG Sep 24, 2024
c47037a
comment aangepast
tiddoloos Sep 24, 2024
2ef8ef6
adressen ipv eenheden
tiddoloos Sep 24, 2024
99d9a6b
update 'aantal' beschrijving
tiddoloos Sep 24, 2024
4f5fc38
''
tiddoloos Sep 24, 2024
e527a17
P
tiddoloos Sep 24, 2024
379b7e3
kom op
tiddoloos Sep 24, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -760,6 +760,9 @@ Voorbeeld

### 10.1 Puntentoekenning

> Bij het rekenvoorbeeld aan het einde van deze rubriek wordt uitgelegd hoe de woningwaardering package te gebruiken is om een eenheid te waarderen op de rubriek gemeenschappelijke parkeerruimten.


Voor verschillende typen gemeenschappelijke parkeerplekken, afhankelijk van afdekking van de buitenlucht, worden punten toegekend:

* Type I: parkeerplek in afgesloten parkeergarage behorende tot het complex krijgt 9 punten, gedeeld door het aantal adressen dat toegang en gebruiksrecht heeft.
Expand All @@ -768,6 +771,11 @@ Voor verschillende typen gemeenschappelijke parkeerplekken, afhankelijk van afde

2 extra punten worden toegekend, gedeeld door het aantal adressen dat toegang en gebruiksrecht heeft, als de parkeerplek beschikt over een laadpaal voor elektrisch rijden, en exclusief is voor gebruik door bewoners.

> Onderstaande `Ruimtedetailsoorten` corresponderen met bovenstaande parkeerplek types:
> - Type I: `Ruimtedetailsoort.parkeervak_auto_binnen` met code `VAI`
> - Type II: `Ruimtedetailsoort.carport` met code `CAR`
> - Type III: `Ruimtedetailsoort.parkeervak_auto_buiten_niet_overdekt` met code `VAU`

### 10.2 Definitie gemeenschappelijke parkeerruimte en laadpaal

Een gemeenschappelijke parkeerruimte is een ruimte die toegankelijk is voor bewoners van tenminste twee adressen die daar exclusief gebruiksrecht op hebben, waarin zich tenminste één parkeerplek bevindt (zoals een gemeenschappelijke parkeergarage onder een wooncomplex of een gemeenschappelijke parkeerplaats buiten met één of meerdere parkeerplekken). De parkeerplek mag niet openbaar te gebruiken zijn, maar moet bij een complex of adres horen en in de huurovereenkomst moet exclusief gebruiksrecht zijn toegekend.
Expand Down Expand Up @@ -799,6 +807,67 @@ Tien adressen delen vijf type II-parkeerplekken met laadpaal en twee type III-pa
2. 48 / 10 adressen = 4,8 per adres.
3. Afronden geschiedt op een kwart punt per adres, in dit voorbeeld dus op 4,75.

> Omdat de woningwaardering package op eenheidniveau de punten voor het woningwaarderingstelsel berekent, is het niet mogelijk om `Ruimtedetailsoort.parkeergarage` en `Ruimtedetailsoort.parkeerterrein` te waarderen. Deze twee ruimtedetailsoorten maken bovenstaande berekening, waarbij de verschillende types geteld worden, met het huidige VERA-model te complex. Om punten te krijgen voor deze rubriek moeten de type parkeervakken los worden ingeschoten. Daartoe is het attribuut `Eenhedenruimte.aantal` als uitbreiding op het VERA-model toegevoegd. Hierdoor is het mogelijk om aan te geven hoeveel van bovenstaande parkertypes de eenheid toegang heeft zonder dat elk parkeervak van een parkeergarage of parkeerterrein meegegeven dient te worden. Daarnaast is ook `Eenhedenruimte.gedeeld_met_aantal_eenheden` als uitbreiding toegevoegd. Dit attribuut dient ook op elk type parkeerplek meegegeven te worden. Om bovenstaand rekenvoorbeeld door de woningwaardering package te laten berekenen, kunnen de gemeenschappelijke parkeerplekken als volgt (in JSON-formaat) meegegeven worden.


```json
{
"id": "12006000004",
"ruimten": [
{
"id": "1",
"gedeeld_met_aantal_eenheden": 10,
"aantal": 5,
"soort": {
"code": "PAR",
"naam": "Parkeergelegenheid"
},
"detailSoort": {
"code": "CAR",
"naam": "Carport"
},
"naam": "Carport",
"oppervlakte": 12,
"breedte": 3,
"lengte": 4,
"bouwkundigeElementen": [
{
"id": "laadpaal_1",
"naam": "Laadpaal",
"soort": {
"code": "Voo",
"naam": "Voorziening"
},
"detailSoort": {
"code": "LAA",
"naam": "Laadpaal"
}
}
]
},
{
"id": "2",
"gedeeld_met_aantal_eenheden": 10,
"aantal": 2,
"soort": {
"code": "PAR",
"naam": "Parkeergelegenheid"
},
"detailSoort": {
"code": "VAU",
"naam": "Parkeervak auto (buiten, niet overdekt)"
},
"naam": "Parkeervak buiten",
"oppervlakte": 12,
"breedte": 3,
"lengte": 4
}
]
}
```
> Let op: in bovenstaand voorbeeld, wanneer een laadpaal als bouwkundig element wordt meegegeven, wordt deze bij de ruimte ook keer het `Eenhedenruimte.aantal` meegeteld voor het berekenen van de punten. In bovenstaand voorbeeld wordt de laadpaal dus vijf (5) keer meegeteld.


## Rubriek 11 Punten voor de WOZ-waarde

Een groot deel van het totale puntenaantal wordt bepaald door de punten die een woonruimte krijgt voor de WOZ-waarde van het gehuurde. WOZ staat voor Wet waardering onroerende zaken. De WOZ-waarde geeft de geschatte marktwaarde van de woning weer zoals volgt uit de Wet waardering onroerende zaken. Deze waarde wordt in principe ieder kalenderjaar door de gemeente vastgesteld, die in de WOZ-beschikking van de desbetreffende woning wordt weergegeven. De waardepeildatum van de WOZ-waarde ligt op 1 januari van het voorafgaande kalenderjaar. Ter illustratie: de WOZ-waarde in de WOZ-beschikking van 2024 heeft een waardepeildatum van 1 januari 2023.
Expand Down
56 changes: 53 additions & 3 deletions scripts/genereer_vera_referentiedata.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,39 +56,89 @@
key=itemgetter("soort"),
)

# Count the occurrences of each combination of "soort" and "naam"
counts = Counter((item["soort"], item["naam"]) for item in active_data)

def resolve_duplicate(
duplicate_items: list[dict[str | Any, str | Any]],
) -> dict[str | Any, str | Any]:
print(f"Er zijn {len(duplicate_items)} dezelfde items gevonden:")
for idx, item in enumerate(duplicate_items):
print("")
print(f"{idx + 1}: {item}")
print("")

while True:
try:
choice = int(
input("Geef het nummer van het item dat behouden moet blijven: ")
)
if 1 <= choice <= len(duplicate_items):
return duplicate_items[choice - 1]
else:
print("Geen geldige keuze. Kies een geldig nummer.")
except ValueError:
print("Voer een nummer in.")


# Count the occurrences of each combination of "soort"/"naam" and "soort"/"code"
counts_code = Counter((item["soort"], item["code"]) for item in active_data)
counts_soort_naam = Counter((item["soort"], item["naam"]) for item in active_data)

resolved_parents: dict[str, dict[str | Any, str | Any]] = dict()

# Update the original list by suffixing duplicate names with the corresponding item code
for item in active_data:
item["variabele"] = item["naam"]
if counts[(item["soort"], item["naam"])] > 1:

if counts_code[(item["soort"], item["code"])] > 1:
duplicates = [
active_data_item
for active_data_item in active_data
if active_data_item["soort"] == item["soort"]
and active_data_item["code"] == item["code"]
]
if len(duplicates) > 1:
# Prompt the user to choose one item to keep
logger.warning(
f"Dubbele soort/code combinatie: {item['soort']}.{item['code']}"
)
chosen_item = resolve_duplicate(duplicates)

# Remove the unchosen duplicates from the list
active_data = [
d for d in active_data if d == chosen_item or d not in duplicates
]

elif counts_soort_naam[(item["soort"], item["naam"])] > 1:
logger.warning(
f"Dubbele soort/naam combinatie: {item['soort']}.{item['code']} {item['naam']}"
)
logger.info(
f"Variabele naam \"{item['variabele']}\" wordt vervangen door \"{item['variabele']} {item['code']}\""
)
item["variabele"] += " " + item["code"]

# Resolve parent information if the parent is not None or an empty string
if item["parent"] is not None and item["parent"] != "":
resolved_parent = resolved_parents.get(item["parent"])

if resolved_parent is None:
parent_soort = item["parent"].split(".")[0]
parent_code = item["parent"].split(".")[1]

parents = [
active_data_item
for active_data_item in active_data
if active_data_item["soort"] == parent_soort
and active_data_item["code"] == parent_code
]

if parents is not None and len(parents) == 1:
resolved_parent = resolved_parents[item["parent"]] = parents[0]
else:
logger.debug(
f"{len(parents)} parents gevonden voor {item['parent']}, verwachtte er 1"
)

if resolved_parent is not None:
item["parentcode"] = resolved_parent["code"]
item["parentnaam"] = resolved_parent["naam"]
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/12006000004.json
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/20002000126.json
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/20004000156.json
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/23003000050.json
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/23109000031.json
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/25048000007.json
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/28018000044.json
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/37101000032.json
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/41027000003.json
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
14 changes: 14 additions & 0 deletions tests/data/zelfstandige_woonruimten/output/41123000005.json
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,20 @@
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
"code": "ZEL",
"naam": "Zelfstandige woonruimten"
},
"stelselgroep": {
"code": "GPA",
"naam": "Gemeenschappelijke parkeerruimten"
}
},
"punten": 0.0,
"woningwaarderingen": []
},
{
"criteriumGroep": {
"stelsel": {
Expand Down
Loading