Skip to content

Commit de8f561

Browse files
authored
Merge pull request #567 from maykinmedia/issue/525-deprecate-nummer
🐛 [#525] deprecate nummer & add referentienummer
2 parents 1895a76 + 5999d42 commit de8f561

23 files changed

+248
-158
lines changed

src/openklant/components/klantinteracties/api/filterset/internetaken.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,13 @@ class Meta:
3333
model = InterneTaak
3434
fields = (
3535
"nummer",
36+
"referentienummer",
3637
"status",
3738
"toegewezen_op",
3839
"actoren__naam",
3940
"klantcontact__uuid",
4041
"klantcontact__nummer",
42+
"klantcontact__referentienummer",
4143
"toegewezen_aan_actor__uuid",
4244
"toegewezen_aan_actor__url",
4345
"aanleidinggevend_klantcontact__uuid",

src/openklant/components/klantinteracties/api/filterset/klantcontacten.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ class Meta:
106106
"was_onderwerpobject__onderwerpobjectidentificator_object_id",
107107
"was_onderwerpobject__onderwerpobjectidentificator_code_register",
108108
"nummer",
109+
"referentienummer",
109110
"kanaal",
110111
"onderwerp",
111112
"inhoud",
@@ -162,6 +163,12 @@ class BetrokkeneFilterSet(FilterSet):
162163
help_text=_("Zoek betrokkene object op basis van het klantcontact nummer"),
163164
method="filter_had_klantcontact_nummer",
164165
)
166+
had_klantcontact__referentienummer = filters.CharFilter(
167+
help_text=_(
168+
"Zoek betrokkene object op basis van het klantcontact referentienummer"
169+
),
170+
method="filter_had_klantcontact_referentienummer",
171+
)
165172
had_klantcontact__url = URLViewFilter(
166173
help_text=_("Zoek betrokkene object op basis van het klantcontact url"),
167174
field_name="klantcontact__uuid",
@@ -229,6 +236,7 @@ class Meta:
229236
"contactnaam_voorvoegsel_achternaam",
230237
"contactnaam_achternaam",
231238
"had_klantcontact__nummer",
239+
"had_klantcontact__referentienummer",
232240
"had_klantcontact__uuid",
233241
"had_klantcontact__url",
234242
"verstrektedigitaal_adres__adres",
@@ -250,6 +258,12 @@ def filter_had_klantcontact_nummer(self, queryset, name, value):
250258
except ValueError:
251259
return queryset.none()
252260

261+
def filter_had_klantcontact_referentienummer(self, queryset, name, value):
262+
try:
263+
return queryset.filter(klantcontact__referentienummer=value)
264+
except ValueError:
265+
return queryset.none()
266+
253267
def filter_digitaaladres_adres(self, queryset, name, value):
254268
return queryset.filter(digitaaladres__adres=value)
255269

src/openklant/components/klantinteracties/api/serializers/internetaken.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Meta:
3535
}
3636

3737

38-
@extend_schema_serializer(deprecate_fields=["toegewezen_aan_actor"])
38+
@extend_schema_serializer(deprecate_fields=["toegewezen_aan_actor", "nummer"])
3939
class InterneTaakSerializer(serializers.HyperlinkedModelSerializer):
4040
toegewezen_aan_actor = ActorForeignKeySerializer(
4141
required=False,
@@ -64,6 +64,7 @@ class Meta:
6464
"uuid",
6565
"url",
6666
"nummer",
67+
"referentienummer",
6768
"gevraagde_handeling",
6869
"aanleidinggevend_klantcontact",
6970
"toegewezen_aan_actor",

src/openklant/components/klantinteracties/api/serializers/klantcontacten.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from django.utils.translation import gettext_lazy as _
33

44
import structlog
5-
from drf_spectacular.utils import extend_schema_field
5+
from drf_spectacular.utils import extend_schema_field, extend_schema_serializer
66
from rest_framework import serializers
77
from vng_api_common.serializers import GegevensGroepSerializer, NestedGegevensGroepMixin
88

@@ -261,6 +261,7 @@ def create(self, validated_data):
261261
return super().create(validated_data)
262262

263263

264+
@extend_schema_serializer(deprecate_fields=["nummer"])
264265
class KlantcontactSerializer(serializers.HyperlinkedModelSerializer):
265266
from openklant.components.klantinteracties.api.serializers.internetaken import (
266267
InterneTaakForeignKeySerializer,
@@ -325,6 +326,7 @@ class Meta:
325326
"had_betrokkenen",
326327
"leidde_tot_interne_taken",
327328
"nummer",
329+
"referentienummer",
328330
"kanaal",
329331
"onderwerp",
330332
"inhoud",

src/openklant/components/klantinteracties/api/serializers/partijen.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ def create(self, validated_data):
467467
return super().create(validated_data)
468468

469469

470+
@extend_schema_serializer(deprecate_fields=["nummer"])
470471
class PartijSerializer(NestedGegevensGroepMixin, PolymorphicSerializer):
471472
from openklant.components.klantinteracties.api.serializers.rekeningnummers import (
472473
RekeningnummerForeignKeySerializer,

src/openklant/components/klantinteracties/api/tests/partijen/test_partij.py

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -325,16 +325,8 @@ def test_create_partij(self):
325325
},
326326
)
327327

328-
with self.subTest("auto_generate_max_nummer_plus_one"):
329-
data["nummer"] = ""
330-
response = self.client.post(list_url, data)
331-
332-
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
333-
response_data = response.json()
334-
self.assertEqual(response_data["nummer"], "1298329193")
335-
336-
with self.subTest("auto_generate_nummer_unique_validation"):
337-
data["nummer"] = "1298329193"
328+
with self.subTest("nummer_unique_validation"):
329+
data["nummer"] = "1298329192"
338330
response = self.client.post(list_url, data)
339331

340332
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
@@ -344,19 +336,6 @@ def test_create_partij(self):
344336
error["reason"], "Er bestaat al een partij met eenzelfde nummer."
345337
)
346338

347-
with self.subTest("auto_generate_nummer_over_10_characters_error_message"):
348-
PartijFactory.create(nummer="9999999999")
349-
data["nummer"] = ""
350-
response = self.client.post(list_url, data)
351-
352-
self.assertEqual(response.status_code, status.HTTP_409_CONFLICT)
353-
response_data = response.json()
354-
self.assertEqual(
355-
response_data["detail"],
356-
"Er kon niet automatisch een opvolgend nummer worden gegenereerd. "
357-
"Het maximaal aantal tekens is bereikt.",
358-
)
359-
360339
with self.subTest("voorkeurs_adres_must_be_given_digitaal_adres_validation"):
361340
data["nummer"] = "1298329194"
362341
data["voorkeursDigitaalAdres"] = {"uuid": str(digitaal_adres2.uuid)}

src/openklant/components/klantinteracties/api/tests/test_filters.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -581,6 +581,33 @@ def test_filter_had_klantcontact_nummer(self):
581581

582582
self.assertEqual(response.json()["count"], 0)
583583

584+
def test_filter_had_klantcontact_referentienummer(self):
585+
klantcontact = KlantcontactFactory.create(referentienummer="6237172371")
586+
klantcontact2 = KlantcontactFactory.create(referentienummer="9999999999")
587+
betrokkene = BetrokkeneFactory.create(klantcontact=klantcontact)
588+
BetrokkeneFactory.create(klantcontact=klantcontact2)
589+
590+
with self.subTest("happy flow"):
591+
response = self.client.get(
592+
self.url,
593+
{"hadKlantcontact__referentienummer": str(6237172371)},
594+
)
595+
self.assertEqual(response.status_code, status.HTTP_200_OK)
596+
597+
data = response.json()["results"]
598+
599+
self.assertEqual(1, len(data))
600+
self.assertEqual(str(betrokkene.uuid), data[0]["uuid"])
601+
602+
with self.subTest("no_matches_found_return_nothing"):
603+
response = self.client.get(
604+
self.url,
605+
{"hadKlantcontact__referentienummer": "8584395394"},
606+
)
607+
self.assertEqual(response.status_code, status.HTTP_200_OK)
608+
609+
self.assertEqual(response.json()["count"], 0)
610+
584611
def test_filter_verstrektedigitaal_adres_url(self):
585612
betrokkene = BetrokkeneFactory.create()
586613
betrokkene2 = BetrokkeneFactory.create()

src/openklant/components/klantinteracties/api/tests/test_internetaken.py

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,8 @@ def test_create_internetaak(self):
8888
InterneTaak.objects.filter(afgehandeld_op="2024-01-01T12:00:00Z").exists()
8989
)
9090

91-
with self.subTest("auto_generate_max_nummer_plus_one"):
92-
data["nummer"] = ""
93-
response = self.client.post(list_url, data)
94-
95-
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
96-
response_data = response.json()
97-
self.assertEqual(response_data["nummer"], "1312312313")
98-
99-
with self.subTest("auto_generate_nummer_unique_validation"):
100-
data["nummer"] = "1312312313"
91+
with self.subTest("nummer_unique_validation"):
92+
data["nummer"] = "1312312312"
10193
response = self.client.post(list_url, data)
10294

10395
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
@@ -107,19 +99,6 @@ def test_create_internetaak(self):
10799
"Er bestaat al een interne taak met eenzelfde nummer.",
108100
)
109101

110-
with self.subTest("auto_generate_nummer_over_10_characters_error_message"):
111-
InterneTaakFactory.create(nummer="9999999999")
112-
data["nummer"] = ""
113-
response = self.client.post(list_url, data)
114-
115-
self.assertEqual(response.status_code, status.HTTP_409_CONFLICT)
116-
response_data = response.json()
117-
self.assertEqual(
118-
response_data["detail"],
119-
"Er kon niet automatisch een opvolgend nummer worden gegenereerd. "
120-
"Het maximaal aantal tekens is bereikt.",
121-
)
122-
123102
@freeze_time("2024-01-01T12:00:00Z")
124103
def test_create_internetaak_with_status_te_verwerken(self):
125104
actor = ActorFactory.create()

src/openklant/components/klantinteracties/api/tests/test_klantcontacten.py

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -150,16 +150,8 @@ def test_create_klantcontact(self):
150150
self.assertTrue(data["indicatieContactGelukt"])
151151
self.assertTrue(data["vertrouwelijk"])
152152

153-
with self.subTest("auto_generate_max_nummer_plus_one"):
154-
data["nummer"] = ""
155-
response = self.client.post(list_url, data)
156-
157-
self.assertEqual(response.status_code, status.HTTP_201_CREATED)
158-
response_data = response.json()
159-
self.assertEqual(response_data["nummer"], "1234567891")
160-
161-
with self.subTest("auto_generate_nummer_unique_validation"):
162-
data["nummer"] = "1234567891"
153+
with self.subTest("nummer_unique_validation"):
154+
data["nummer"] = "1234567890"
163155
response = self.client.post(list_url, data)
164156

165157
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
@@ -169,19 +161,6 @@ def test_create_klantcontact(self):
169161
"Er bestaat al een klantcontact met eenzelfde nummer.",
170162
)
171163

172-
with self.subTest("auto_generate_nummer_over_10_characters_error_message"):
173-
KlantcontactFactory.create(nummer="9999999999")
174-
data["nummer"] = ""
175-
response = self.client.post(list_url, data)
176-
177-
self.assertEqual(response.status_code, status.HTTP_409_CONFLICT)
178-
response_data = response.json()
179-
self.assertEqual(
180-
response_data["detail"],
181-
"Er kon niet automatisch een opvolgend nummer worden gegenereerd. "
182-
"Het maximaal aantal tekens is bereikt.",
183-
)
184-
185164
def test_create_klantcontact_with_reverse_lookup_fields(self):
186165
list_url = reverse("klantinteracties:klantcontact-list")
187166
data = {
@@ -2189,6 +2168,7 @@ def test_create_success(self):
21892168
"leiddeTotInterneTaken": [],
21902169
"metadata": {},
21912170
"nummer": "7948723947",
2171+
"referentienummer": None,
21922172
"omvatteBijlagen": [],
21932173
"onderwerp": "changed",
21942174
"plaatsgevondenOp": "2020-08-24T14:15:22Z",
@@ -2659,6 +2639,7 @@ def test_create_without_betrokkene_and_onderwerpobject(self):
26592639
"leiddeTotInterneTaken": [],
26602640
"metadata": {},
26612641
"nummer": "7948723947",
2642+
"referentienummer": None,
26622643
"omvatteBijlagen": [],
26632644
"onderwerp": "changed",
26642645
"plaatsgevondenOp": "2020-08-24T14:15:22Z",

src/openklant/components/klantinteracties/api/viewsets/internetaken.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from django.db import transaction
22

33
import structlog
4-
from drf_spectacular.utils import extend_schema, extend_schema_view
4+
from drf_spectacular.utils import OpenApiParameter, extend_schema, extend_schema_view
55
from notifications_api_common.viewsets import NotificationViewSetMixin
66
from rest_framework import viewsets
77
from vng_api_common.pagination import DynamicPageSizePagination
@@ -32,6 +32,10 @@
3232
list=extend_schema(
3333
summary="Alle interne taken opvragen.",
3434
description="Alle interne taken opvragen.",
35+
parameters=[
36+
OpenApiParameter(name="nummer", deprecated=True),
37+
OpenApiParameter(name="klantcontact__nummer", deprecated=True),
38+
],
3539
),
3640
retrieve=extend_schema(
3741
summary="Een specifiek interne taak opvragen.",

0 commit comments

Comments
 (0)