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), }),