Skip to content

Commit

Permalink
Merge pull request #1456 from open-zaak/feature/1455-rol-new-properties
Browse files Browse the repository at this point in the history
add new properties to Rol resource
  • Loading branch information
annashamray committed Sep 18, 2023
2 parents e552254 + 3d795a1 commit 06d3b9b
Show file tree
Hide file tree
Showing 11 changed files with 349 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ class Meta:
"handelsnaam",
"verblijfsadres",
"sub_verblijf_buitenland",
"kvk_nummer",
)

def create(self, validated_data):
Expand Down
33 changes: 33 additions & 0 deletions src/openzaak/components/zaken/api/serializers/zaken.py
Original file line number Diff line number Diff line change
Expand Up @@ -828,6 +828,12 @@ class Meta:
}


class ContactPersoonRolSerializer(GegevensGroepSerializer):
class Meta:
model = Rol
gegevensgroep = "contactpersoon_rol"


class RolSerializer(PolymorphicSerializer):
discriminator = Discriminator(
discriminator_field="betrokkene_type",
Expand All @@ -841,6 +847,16 @@ class RolSerializer(PolymorphicSerializer):
group_field="betrokkene_identificatie",
same_model=False,
)
contactpersoon_rol = ContactPersoonRolSerializer(
allow_null=True,
required=False,
help_text=_(
"De gegevens van de persoon die anderen desgevraagd in contact brengt "
"met medewerkers van de BETROKKENE, een NIET-NATUURLIJK PERSOON of "
"VESTIGING zijnde, of met BETROKKENE zelf, een NATUURLIJK PERSOON zijnde "
", vanuit het belang van BETROKKENE in haar ROL bij een ZAAK."
),
)

class Meta:
model = Rol
Expand All @@ -850,12 +866,15 @@ class Meta:
"zaak",
"betrokkene",
"betrokkene_type",
"afwijkende_naam_betrokkene",
"roltype",
"omschrijving",
"omschrijving_generiek",
"roltoelichting",
"registratiedatum",
"indicatie_machtiging",
"contactpersoon_rol",
"statussen",
)
validators = [
RolOccurenceValidator(RolOmschrijving.initiator, max_amount=1),
Expand All @@ -877,6 +896,14 @@ class Meta:
],
"help_text": get_help_text("zaken.Rol", "roltype"),
},
"statussen": {
"lookup_field": "uuid",
"read_only": True,
"help_text": _(
"De BETROKKENE die in zijn/haar ROL in een ZAAK heeft geregistreerd "
"dat STATUSsen in die ZAAK bereikt zijn."
),
},
}

def get_fields(self):
Expand Down Expand Up @@ -909,6 +936,8 @@ def validate(self, attrs):
@transaction.atomic
def create(self, validated_data):
group_data = validated_data.pop("betrokkene_identificatie", None)
contactpersoon_rol = validated_data.pop("contactpersoon_rol", None)

rol = super().create(validated_data)

if group_data:
Expand All @@ -919,6 +948,10 @@ def create(self, validated_data):
group_data["rol"] = rol
serializer.create(group_data)

if contactpersoon_rol:
rol.contactpersoon_rol = contactpersoon_rol
rol.save()

return rol


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# SPDX-License-Identifier: EUPL-1.2
# Copyright (C) 2023 Dimpact
# Generated by Django 3.2.18 on 2023-08-30 13:58

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("zaken", "0026_auto_20230824_1218"),
]

operations = [
migrations.AddField(
model_name="rol",
name="afwijkende_naam_betrokkene",
field=models.TextField(
blank=True,
help_text="De naam van de betrokkene waaronder deze in relatie tot de zaak aangesproken wil worden.",
max_length=625,
verbose_name="afwijkende naam betrokkene",
),
),
migrations.AddField(
model_name="rol",
name="contactpersoon_rol_emailadres",
field=models.EmailField(
blank=True,
help_text="Elektronich postadres waaronder de contactpersoon in de regel bereikbaar is.",
max_length=254,
verbose_name="email",
),
),
migrations.AddField(
model_name="rol",
name="contactpersoon_rol_functie",
field=models.CharField(
blank=True,
help_text="De aanduiding van de taken, rechten en plichten die de contactpersoon heeft binnen de organisatie van BETROKKENE. ",
max_length=50,
verbose_name="functie",
),
),
migrations.AddField(
model_name="rol",
name="contactpersoon_rol_naam",
field=models.CharField(
blank=True,
help_text="De opgemaakte naam van de contactpersoon namens de BETROKKENE.",
max_length=200,
verbose_name="naam",
),
),
migrations.AddField(
model_name="rol",
name="contactpersoon_rol_telefoonnummer",
field=models.CharField(
blank=True,
help_text="Telefoonnummer waaronder de contactpersoon in de regel bereikbaar is.",
max_length=20,
verbose_name="telefoonnummer",
),
),
migrations.AddField(
model_name="vestiging",
name="kvk_nummer",
field=models.CharField(
blank=True,
help_text="Een uniek nummer gekoppeld aan de onderneming.",
max_length=8,
),
),
]
5 changes: 5 additions & 0 deletions src/openzaak/components/zaken/models/betrokkenen.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,11 @@ class Vestiging(AbstractRolZaakobjectRelation):
default=list,
help_text="De naam van de vestiging waaronder gehandeld wordt.",
)
kvk_nummer = models.CharField(
max_length=8,
blank=True,
help_text="Een uniek nummer gekoppeld aan de onderneming.",
)

class Meta:
verbose_name = _("vestiging")
Expand Down
50 changes: 50 additions & 0 deletions src/openzaak/components/zaken/models/zaken.py
Original file line number Diff line number Diff line change
Expand Up @@ -720,6 +720,15 @@ class Rol(ETagMixin, models.Model):
help_text="Type van de `betrokkene`.",
db_index=True,
)
afwijkende_naam_betrokkene = models.TextField(
_("afwijkende naam betrokkene"),
help_text=_(
"De naam van de betrokkene waaronder deze in relatie tot de zaak "
"aangesproken wil worden."
),
max_length=625,
blank=True,
)

_roltype_base_url = ServiceFkField(
help_text="Basis deel van URL-referentie naar extern ROLTYPE (in een andere Catalogi API).",
Expand Down Expand Up @@ -784,6 +793,47 @@ class Rol(ETagMixin, models.Model):
help_text="Indicatie machtiging",
)

contactpersoon_rol_emailadres = models.EmailField(
_("email"),
help_text=_(
"Elektronich postadres waaronder de contactpersoon in de regel "
"bereikbaar is."
),
blank=True,
)
contactpersoon_rol_functie = models.CharField(
_("functie"),
help_text=_(
"De aanduiding van de taken, rechten en plichten die de contactpersoon "
"heeft binnen de organisatie van BETROKKENE. "
),
max_length=50,
blank=True,
)
contactpersoon_rol_telefoonnummer = models.CharField(
_("telefoonnummer"),
help_text=_(
"Telefoonnummer waaronder de contactpersoon in de regel bereikbaar is."
),
max_length=20,
blank=True,
)
contactpersoon_rol_naam = models.CharField(
_("naam"),
help_text=_("De opgemaakte naam van de contactpersoon namens de BETROKKENE."),
max_length=200,
blank=True,
)
contactpersoon_rol = GegevensGroepType(
{
"emailadres": contactpersoon_rol_emailadres,
"functie": contactpersoon_rol_functie,
"telefoonnummer": contactpersoon_rol_telefoonnummer,
"naam": contactpersoon_rol_naam,
},
optional=("emailadres", "functie", "telefoonnummer",),
)

objects = ZaakRelatedQuerySet.as_manager()

class Meta:
Expand Down
48 changes: 48 additions & 0 deletions src/openzaak/components/zaken/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4962,6 +4962,41 @@ components:
description: Een toelichting op wat het resultaat van de zaak inhoudt.
type: string
maxLength: 1000
ContactPersoonRol:
description: De gegevens van de persoon die anderen desgevraagd in contact brengt
met medewerkers van de BETROKKENE, een NIET-NATUURLIJK PERSOON of VESTIGING
zijnde, of met BETROKKENE zelf, een NATUURLIJK PERSOON zijnde , vanuit het
belang van BETROKKENE in haar ROL bij een ZAAK.
required:
- naam
type: object
properties:
emailadres:
title: Email
description: Elektronich postadres waaronder de contactpersoon in de regel
bereikbaar is.
type: string
format: email
maxLength: 254
functie:
title: Functie
description: 'De aanduiding van de taken, rechten en plichten die de contactpersoon
heeft binnen de organisatie van BETROKKENE. '
type: string
maxLength: 50
telefoonnummer:
title: Telefoonnummer
description: Telefoonnummer waaronder de contactpersoon in de regel bereikbaar
is.
type: string
maxLength: 20
naam:
title: Naam
description: De opgemaakte naam van de contactpersoon namens de BETROKKENE.
type: string
maxLength: 200
minLength: 1
nullable: true
Rol:
required:
- zaak
Expand Down Expand Up @@ -5020,6 +5055,12 @@ components:
- vestiging
- organisatorische_eenheid
- medewerker
afwijkendeNaamBetrokkene:
title: Afwijkende naam betrokkene
description: De naam van de betrokkene waaronder deze in relatie tot de
zaak aangesproken wil worden.
type: string
maxLength: 625
roltype:
title: Roltype
description: URL-referentie naar een roltype binnen het ZAAKTYPE van de
Expand Down Expand Up @@ -5081,6 +5122,8 @@ components:
enum:
- gemachtigde
- machtiginggever
contactpersoonRol:
$ref: '#/components/schemas/ContactPersoonRol'
discriminator:
propertyName: betrokkeneType
VerblijfsAdres:
Expand Down Expand Up @@ -5324,6 +5367,11 @@ components:
$ref: '#/components/schemas/VerblijfsAdres'
subVerblijfBuitenland:
$ref: '#/components/schemas/SubVerblijfBuitenland'
kvkNummer:
title: Kvk nummer
description: Een uniek nummer gekoppeld aan de onderneming.
type: string
maxLength: 8
betrokkene_identificatie_RolVestiging:
type: object
properties:
Expand Down
1 change: 1 addition & 0 deletions src/openzaak/components/zaken/resources.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ Uitleg bij mogelijke waarden:
* `vestiging` - Vestiging
* `organisatorische_eenheid` - Organisatorische eenheid
* `medewerker` - Medewerker | string | ja | C​R​U​D |
| afwijkendeNaamBetrokkene | De naam van de betrokkene waaronder deze in relatie tot de zaak aangesproken wil worden. | string | nee | C​R​U​D |
| roltype | URL-referentie naar een roltype binnen het ZAAKTYPE van de ZAAK. | string | ja | C​R​U​D |
| omschrijving | Omschrijving van de aard van de ROL, afgeleid uit het ROLTYPE. | string | nee | ~~C~~​R​~~U~~~~D~~ |
| omschrijvingGeneriek | Algemeen gehanteerde benaming van de aard van de ROL, afgeleid uit het ROLTYPE.
Expand Down

0 comments on commit 06d3b9b

Please sign in to comment.