From ec07dd4d97a8a375130ff4371afcdc4783eccf73 Mon Sep 17 00:00:00 2001 From: rikuke <33894149+rikuke@users.noreply.github.com> Date: Wed, 21 Aug 2024 09:07:52 +0300 Subject: [PATCH] feat: hide decisionSummary if details unreceived from ahjo (#3216) * feat: show decision details if details from ahjo * feat: benefit amount in json if decision details * fix: ahjoStatus to frontend application definition * fix: ahjo details_received to frontend constants --- .../api/v1/serializers/application.py | 13 ++++++ .../applications/pageContent/PageContent.tsx | 43 ++++++++++--------- frontend/benefit/shared/src/constants.ts | 4 ++ .../benefit/shared/src/types/application.d.ts | 1 + 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/backend/benefit/applications/api/v1/serializers/application.py b/backend/benefit/applications/api/v1/serializers/application.py index 522ffe97e9..2ae6890306 100755 --- a/backend/benefit/applications/api/v1/serializers/application.py +++ b/backend/benefit/applications/api/v1/serializers/application.py @@ -395,6 +395,19 @@ class Meta: ahjo_decision_date = serializers.SerializerMethodField("get_ahjo_decision_date") + calculated_benefit_amount = serializers.SerializerMethodField() + + def get_calculated_benefit_amount(self, obj): + # Check if ahjo_status is None or does not have any related objects + if obj.ahjo_status is None or not obj.ahjo_status.exists(): + return None + + latest_status = obj.ahjo_status.latest().status + + if latest_status != AhjoStatusEnum.DETAILS_RECEIVED_FROM_AHJO: + return None + return obj.calculated_benefit_amount + submitted_at = serializers.SerializerMethodField("get_submitted_at") modified_at = serializers.SerializerMethodField( diff --git a/frontend/benefit/applicant/src/components/applications/pageContent/PageContent.tsx b/frontend/benefit/applicant/src/components/applications/pageContent/PageContent.tsx index c68729a3db..b2536bd734 100644 --- a/frontend/benefit/applicant/src/components/applications/pageContent/PageContent.tsx +++ b/frontend/benefit/applicant/src/components/applications/pageContent/PageContent.tsx @@ -22,6 +22,7 @@ import { useAskem } from 'benefit/applicant/hooks/useAnalytics'; import DecisionSummary from 'benefit-shared/components/decisionSummary/DecisionSummary'; import StatusIcon from 'benefit-shared/components/statusIcon/StatusIcon'; import { + AHJO_STATUSES, ALTERATION_STATE, ALTERATION_TYPE, APPLICATION_STATUSES, @@ -225,26 +226,28 @@ const PageContent: React.FC = () => { )} - - router.push( - `${ROUTES.APPLICATION_ALTERATION}?id=${application.id}` - ) - } - disabled={hasHandledTermination} - > - {t('common:applications.decision.actions.reportAlteration')} - - ) : null - } - itemComponent={AlterationAccordionItem} - detailList={decisionDetailList} - /> + {application.ahjoStatus === AHJO_STATUSES.DETAILS_RECEIVED && ( + + router.push( + `${ROUTES.APPLICATION_ALTERATION}?id=${application.id}` + ) + } + disabled={hasHandledTermination} + > + {t('common:applications.decision.actions.reportAlteration')} + + ) : null + } + itemComponent={AlterationAccordionItem} + detailList={decisionDetailList} + /> + )} ); diff --git a/frontend/benefit/shared/src/constants.ts b/frontend/benefit/shared/src/constants.ts index a068c17b8d..30336be8c3 100644 --- a/frontend/benefit/shared/src/constants.ts +++ b/frontend/benefit/shared/src/constants.ts @@ -232,3 +232,7 @@ export enum DECISION_TYPES { export enum PAY_SUBSIDY_PERCENT { DEFAULT = 65, } + +export enum AHJO_STATUSES { + DETAILS_RECEIVED = 'details_received', +} \ No newline at end of file diff --git a/frontend/benefit/shared/src/types/application.d.ts b/frontend/benefit/shared/src/types/application.d.ts index 969a3379e1..f7b312ae6c 100644 --- a/frontend/benefit/shared/src/types/application.d.ts +++ b/frontend/benefit/shared/src/types/application.d.ts @@ -300,6 +300,7 @@ export type Application = { decisionProposalDraft?: DecisionProposalDraft; applicationOrigin?: APPLICATION_ORIGINS; handler?: User; + ahjoStatus?: string; } & Step1 & Step2;