From 63a1dfccdfb4aae682e2142222ae6ae7e117d61f Mon Sep 17 00:00:00 2001 From: Timo Juonoja Date: Fri, 12 Dec 2025 12:44:14 +0200 Subject: [PATCH] feat: increase max override monthly benefit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Increase max override benefit amount to 1500€ and add validation tests. Refs: HL-1651 --- .../benefit/calculator/api/v1/serializers.py | 2 ++ .../calculator/tests/test_calculator_api.py | 20 +++++++++++++++++++ .../utils/validation.ts | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/backend/benefit/calculator/api/v1/serializers.py b/backend/benefit/calculator/api/v1/serializers.py index 0f6a13c076..d09cc4a544 100644 --- a/backend/benefit/calculator/api/v1/serializers.py +++ b/backend/benefit/calculator/api/v1/serializers.py @@ -1,6 +1,7 @@ from typing import Union from dateutil.relativedelta import relativedelta +from django.conf import settings from django.utils.translation import gettext_lazy as _ from rest_framework import serializers @@ -116,6 +117,7 @@ class CalculationSerializer(serializers.ModelSerializer): max_digits=Calculation.override_monthly_benefit_amount.field.max_digits, decimal_places=Calculation.override_monthly_benefit_amount.field.decimal_places, min_value=0, + max_value=settings.SALARY_BENEFIT_NEW_MAX, help_text="manually override the monthly benefit amount", ) diff --git a/backend/benefit/calculator/tests/test_calculator_api.py b/backend/benefit/calculator/tests/test_calculator_api.py index 07438d3039..d3ec9342b0 100644 --- a/backend/benefit/calculator/tests/test_calculator_api.py +++ b/backend/benefit/calculator/tests/test_calculator_api.py @@ -766,3 +766,23 @@ def test_application_calculation_instalments( due_date = instalment_2.due_date future_date = timezone.now() + timedelta(days=181) assert due_date == future_date.date() + +def test_override_monthly_benefit_amount_max_validation( + handler_api_client, handling_application +): + """Test that override_monthly_benefit_amount cannot exceed 1500€""" + data = HandlerApplicationSerializer(handling_application).data + data["calculation"]["start_date"] = str(handling_application.start_date) + data["calculation"]["end_date"] = str(handling_application.end_date) + data["calculation"]["override_monthly_benefit_amount"] = "1600.00" + data["calculation"]["override_monthly_benefit_amount_comment"] = ( + "Trying to exceed maximum" + ) + + response = handler_api_client.put( + get_handler_detail_url(handling_application), + data, + ) + assert response.status_code == 400 + assert "calculation" in response.data + assert "override_monthly_benefit_amount" in response.data["calculation"] diff --git a/frontend/benefit/handler/src/components/applicationReview/salaryBenefitCalculatorView/utils/validation.ts b/frontend/benefit/handler/src/components/applicationReview/salaryBenefitCalculatorView/utils/validation.ts index 2fab10fbb2..455d2fa476 100644 --- a/frontend/benefit/handler/src/components/applicationReview/salaryBenefitCalculatorView/utils/validation.ts +++ b/frontend/benefit/handler/src/components/applicationReview/salaryBenefitCalculatorView/utils/validation.ts @@ -49,7 +49,7 @@ export const getManualValidationSchema = ( ): Yup.SchemaOf => getValidationSchema(t).shape({ [CALCULATION_SALARY_KEYS.OVERRIDE_MONTHLY_BENEFIT_AMOUNT]: - validateNumberField(0, 800, { + validateNumberField(0, 1500, { required: t(VALIDATION_MESSAGE_KEYS.REQUIRED), typeError: t(VALIDATION_MESSAGE_KEYS.NUMBER_INVALID), }),