From 19d001189b1e8bfcd9c3ab70d8eb0d0c12e20ebd Mon Sep 17 00:00:00 2001 From: Joonas Reynders Date: Wed, 25 Sep 2024 15:00:54 +0300 Subject: [PATCH] Make validity period end date nullable --- frontend/src/e2e-test/dev-api/fixtures.ts | 2 ++ frontend/src/e2e-test/generated/api-types.ts | 1 + .../assistance-need-decision-edit-page.ts | 36 ++++++++++++++++++- .../assistance-need-decision.spec.ts | 16 +++++++++ .../AssistanceNeedDecisionSection.tsx | 1 + .../AssistanceNeedDecisionEditPage.tsx | 5 +-- .../decision/AssistanceNeededDecisionForm.tsx | 24 ++++++++++--- .../generated/api-types/assistanceneed.ts | 2 ++ .../defaults/employee/i18n/fi.tsx | 1 + .../AssistanceNeedDecisionIntegrationTest.kt | 2 ++ .../fi/espoo/evaka/espoo/bi/EspooBiTest.kt | 1 + .../InactivePeopleCleanupIntegrationTest.kt | 1 + .../AssistanceNeedDecisionsReportTest.kt | 1 + ...AssistanceNeedDecisionAccessControlTest.kt | 2 ++ .../decision/AssistanceNeedDecision.kt | 3 ++ .../decision/AssistanceNeedDecisionQueries.kt | 3 +- .../evaka/shared/dev/DataInitializers.kt | 4 +-- .../fi/espoo/evaka/shared/dev/DevApi.kt | 1 + ...__assistance_need_decision_no_end_date.sql | 5 +++ service/src/main/resources/migrations.txt | 1 + 20 files changed, 101 insertions(+), 11 deletions(-) create mode 100644 service/src/main/resources/db/migration/V442__assistance_need_decision_no_end_date.sql diff --git a/frontend/src/e2e-test/dev-api/fixtures.ts b/frontend/src/e2e-test/dev-api/fixtures.ts index d7320ad34cf..372372a8623 100644 --- a/frontend/src/e2e-test/dev-api/fixtures.ts +++ b/frontend/src/e2e-test/dev-api/fixtures.ts @@ -596,6 +596,7 @@ export class Fixture { }, servicesMotivation: null, validityPeriod: new DateRange(LocalDate.of(2019, 1, 2), null), + endDateNotKnown: false, status: 'DRAFT', structuralMotivationDescription: null, structuralMotivationOptions: { @@ -659,6 +660,7 @@ export class Fixture { }, servicesMotivation: 'Services motivation text', validityPeriod: new DateRange(LocalDate.of(2019, 1, 2), null), + endDateNotKnown: false, status: 'DRAFT', structuralMotivationDescription: 'Structural motivation description text', structuralMotivationOptions: { diff --git a/frontend/src/e2e-test/generated/api-types.ts b/frontend/src/e2e-test/generated/api-types.ts index 849e0e46fcf..40ca4928d37 100644 --- a/frontend/src/e2e-test/generated/api-types.ts +++ b/frontend/src/e2e-test/generated/api-types.ts @@ -204,6 +204,7 @@ export interface DevAssistanceNeedDecision { decisionMade: LocalDate | null decisionMaker: AssistanceNeedDecisionEmployee | null decisionNumber: number | null + endDateNotKnown: boolean expertResponsibilities: string | null guardianInfo: AssistanceNeedDecisionGuardian[] guardiansHeardOn: LocalDate | null diff --git a/frontend/src/e2e-test/pages/employee/assistance-need-decision/assistance-need-decision-edit-page.ts b/frontend/src/e2e-test/pages/employee/assistance-need-decision/assistance-need-decision-edit-page.ts index 62f4283c09a..c96ea8011ea 100644 --- a/frontend/src/e2e-test/pages/employee/assistance-need-decision/assistance-need-decision-edit-page.ts +++ b/frontend/src/e2e-test/pages/employee/assistance-need-decision/assistance-need-decision-edit-page.ts @@ -3,12 +3,20 @@ // SPDX-License-Identifier: LGPL-2.1-or-later import { waitUntilEqual } from '../../../utils' -import { Page, TextInput, Combobox, Element } from '../../../utils/page' +import { + Page, + TextInput, + Combobox, + Element, + Checkbox +} from '../../../utils/page' export default class AssistanceNeedDecisionEditPage { #decisionMakerSelect: Element pedagogicalMotivationInput: TextInput guardiansHeardOnInput: TextInput + validityEndDateInput: TextInput + validityEndDateNotKnownCheckbox: Checkbox constructor(private readonly page: Page) { this.#decisionMakerSelect = page.findByDataQa('decision-maker-select') this.pedagogicalMotivationInput = new TextInput( @@ -17,6 +25,12 @@ export default class AssistanceNeedDecisionEditPage { this.guardiansHeardOnInput = new TextInput( page.findByDataQa('guardians-heard-on') ) + this.validityEndDateInput = new TextInput( + page.findByDataQa('validity-end-date') + ) + this.validityEndDateNotKnownCheckbox = new Checkbox( + page.findByDataQa('end-date-not-known-checkbox') + ) } async assertDeciderSelectVisible() { @@ -75,6 +89,26 @@ export default class AssistanceNeedDecisionEditPage { await this.fillEmployee('prepared-by-1', name, title) } + async toggleAssistanceServicesForTime(): Promise { + await new Checkbox( + this.page.findByDataQa('assistance-services-for-time') + ).toggle() + } + + async assertValidationMessageShown( + messageId: string, + visible: boolean + ): Promise { + if (visible) + await this.page + .findByDataQa(`validation-message-${messageId}`) + .waitUntilVisible() + else + await this.page + .findByDataQa(`validation-message-${messageId}`) + .waitUntilHidden() + } + private async fillEmployee( selector: string, name: string, diff --git a/frontend/src/e2e-test/specs/5_employee/assistance-need-decision.spec.ts b/frontend/src/e2e-test/specs/5_employee/assistance-need-decision.spec.ts index 15b0a3826e0..e4c5b4c8668 100644 --- a/frontend/src/e2e-test/specs/5_employee/assistance-need-decision.spec.ts +++ b/frontend/src/e2e-test/specs/5_employee/assistance-need-decision.spec.ts @@ -120,6 +120,22 @@ describe('Assistance Need Decisions - Edit page', () => { await assistanceNeedDecisionEditPage.assertDeciderSelectVisible() }) + test('Shows info that validity period end date is not mandatory for assistance services for time being', async () => { + await assistanceNeedDecisionEditPage.validityEndDateInput.waitUntilHidden() + await assistanceNeedDecisionEditPage.toggleAssistanceServicesForTime() + await assistanceNeedDecisionEditPage.validityEndDateInput.waitUntilVisible() + await assistanceNeedDecisionEditPage.clickPreviewButton() + await assistanceNeedDecisionEditPage.assertValidationMessageShown( + 'endDate', + true + ) + await assistanceNeedDecisionEditPage.validityEndDateNotKnownCheckbox.click() + await assistanceNeedDecisionEditPage.assertValidationMessageShown( + 'endDate', + false + ) + }) + test('Info header shows correct information', async () => { await assistanceNeedDecisionEditPage.assertDecisionStatus('Luonnos') await assistanceNeedDecisionEditPage.assertDecisionNumber( diff --git a/frontend/src/employee-frontend/components/child-information/AssistanceNeedDecisionSection.tsx b/frontend/src/employee-frontend/components/child-information/AssistanceNeedDecisionSection.tsx index cc1857bdd8f..bc604591d4a 100644 --- a/frontend/src/employee-frontend/components/child-information/AssistanceNeedDecisionSection.tsx +++ b/frontend/src/employee-frontend/components/child-information/AssistanceNeedDecisionSection.tsx @@ -150,6 +150,7 @@ export default React.memo(function AssistanceNeedDecisionSection({ LocalDate.todayInHelsinkiTz(), null ), + endDateNotKnown: false, viewOfGuardians: null } } diff --git a/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeedDecisionEditPage.tsx b/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeedDecisionEditPage.tsx index 41b6397e4b7..215a5454373 100644 --- a/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeedDecisionEditPage.tsx +++ b/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeedDecisionEditPage.tsx @@ -164,9 +164,10 @@ export default React.memo(function AssistanceNeedDecisionEditPage() { formState?.preparedBy2 && !formState.preparedBy2.title && 'preparator2Title', - // there must be an end date if ASSISTANCE_SERVICES_FOR_TIME is selected + // there must be an end date or end_date_not_known = TRUE if ASSISTANCE_SERVICES_FOR_TIME is selected formState?.assistanceLevels.includes('ASSISTANCE_SERVICES_FOR_TIME') && formState?.validityPeriod.end === null && + !formState.endDateNotKnown && 'endDate', // at least one assistance level must be selected formState?.assistanceLevels.length === 0 && 'futureLevelOfAssistance' @@ -310,7 +311,7 @@ export default React.memo(function AssistanceNeedDecisionEditPage() { InputInfo ][] ).map(([field, value]) => ( -
  • +
  • {getFieldTranslation( i18n.childInformation.assistanceNeedDecision, field diff --git a/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeededDecisionForm.tsx b/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeededDecisionForm.tsx index 8b2dd94c65a..9f3fad64e89 100644 --- a/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeededDecisionForm.tsx +++ b/frontend/src/employee-frontend/components/child-information/assistance-need/decision/AssistanceNeededDecisionForm.tsx @@ -232,7 +232,7 @@ export default React.memo(function AssistanceNeedDecisionForm({ ) const renderAssistanceLevelMultiCheckbox = useCallback( - (level: AssistanceLevel, label: string) => ( + (level: AssistanceLevel, label: string, dataQa: string) => ( level !== level2) }) } + data-qa={dataQa} /> ), [formState, setFieldVal] @@ -511,19 +512,23 @@ export default React.memo(function AssistanceNeedDecisionForm({ {renderAssistanceLevelMultiCheckbox( 'SPECIAL_ASSISTANCE', - t.assistanceLevel.specialAssistance + t.assistanceLevel.specialAssistance, + 'special-assistance' )} {renderAssistanceLevelMultiCheckbox( 'ENHANCED_ASSISTANCE', - t.assistanceLevel.enhancedAssistance + t.assistanceLevel.enhancedAssistance, + 'enchanced-assistance' )} {renderAssistanceLevelMultiCheckbox( 'ASSISTANCE_SERVICES_FOR_TIME', - t.assistanceLevel.assistanceServicesForTime + t.assistanceLevel.assistanceServicesForTime, + 'assistance-services-for-time' )} {renderAssistanceLevelMultiCheckbox( 'ASSISTANCE_ENDS', - t.assistanceLevel.assistanceEnds + t.assistanceLevel.assistanceEnds, + 'assistance-ends' )} {fieldInfos.assistanceLevels && fieldInfos.assistanceLevels.status === 'warning' && ( @@ -556,6 +561,7 @@ export default React.memo(function AssistanceNeedDecisionForm({ info={fieldInfos.startDate} maxDate={formState.validityPeriod.end ?? undefined} required + data-qa="validity-start-date" /> @@ -573,6 +579,14 @@ export default React.memo(function AssistanceNeedDecisionForm({ hideErrorsBeforeTouched={!fieldInfos.endDate} info={fieldInfos.endDate} minDate={formState.validityPeriod.start} + data-qa="validity-end-date" + /> + + setFieldVal({ endDateNotKnown: checked })} + data-qa="end-date-not-known-checkbox" /> )} diff --git a/frontend/src/lib-common/generated/api-types/assistanceneed.ts b/frontend/src/lib-common/generated/api-types/assistanceneed.ts index 8aa5d9f9e7d..38fbc96a332 100644 --- a/frontend/src/lib-common/generated/api-types/assistanceneed.ts +++ b/frontend/src/lib-common/generated/api-types/assistanceneed.ts @@ -47,6 +47,7 @@ export interface AssistanceNeedDecision { decisionMade: LocalDate | null decisionMaker: AssistanceNeedDecisionMaker | null decisionNumber: number | null + endDateNotKnown: boolean expertResponsibilities: string | null guardianInfo: AssistanceNeedDecisionGuardian[] guardiansHeardOn: LocalDate | null @@ -143,6 +144,7 @@ export interface AssistanceNeedDecisionForm { decisionMade: LocalDate | null decisionMaker: AssistanceNeedDecisionMakerForm | null decisionNumber: number | null + endDateNotKnown: boolean expertResponsibilities: string | null guardianInfo: AssistanceNeedDecisionGuardian[] guardiansHeardOn: LocalDate | null diff --git a/frontend/src/lib-customizations/defaults/employee/i18n/fi.tsx b/frontend/src/lib-customizations/defaults/employee/i18n/fi.tsx index 9bee70cdb09..2b350cdcc19 100755 --- a/frontend/src/lib-customizations/defaults/employee/i18n/fi.tsx +++ b/frontend/src/lib-customizations/defaults/employee/i18n/fi.tsx @@ -1194,6 +1194,7 @@ export const fi = { disclaimer: 'Varhaiskasvatuslain 15 e §:n mukaan tämä päätös voidaan panna täytäntöön muutoksenhausta huolimatta.', decisionNumber: 'Päätösnumero', + endDateNotKnown: 'Tukipalvelun päättymisajankohta ei tiedossa', statuses: { DRAFT: 'Luonnos', NEEDS_WORK: 'Korjattava', diff --git a/service/src/integrationTest/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionIntegrationTest.kt b/service/src/integrationTest/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionIntegrationTest.kt index 8588678a631..0e25712c91b 100644 --- a/service/src/integrationTest/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionIntegrationTest.kt +++ b/service/src/integrationTest/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionIntegrationTest.kt @@ -146,6 +146,7 @@ class AssistanceNeedDecisionIntegrationTest : FullApplicationTest(resetDbBeforeE otherRepresentativeDetails = null, assistanceLevels = setOf(AssistanceLevel.ENHANCED_ASSISTANCE), motivationForDecision = "Motivation for decision", + endDateNotKnown = false, ) @BeforeEach @@ -843,6 +844,7 @@ class AssistanceNeedDecisionIntegrationTest : FullApplicationTest(resetDbBeforeE dateOfBirth = LocalDate.of(2012, 1, 4), ), annulmentReason = "", + endDateNotKnown = false, ), ) diff --git a/service/src/integrationTest/kotlin/fi/espoo/evaka/espoo/bi/EspooBiTest.kt b/service/src/integrationTest/kotlin/fi/espoo/evaka/espoo/bi/EspooBiTest.kt index 27794396760..349b8ab02f3 100644 --- a/service/src/integrationTest/kotlin/fi/espoo/evaka/espoo/bi/EspooBiTest.kt +++ b/service/src/integrationTest/kotlin/fi/espoo/evaka/espoo/bi/EspooBiTest.kt @@ -328,6 +328,7 @@ class EspooBiTest : PureJdbiTest(resetDbBeforeEach = true) { motivationForDecision = null, unreadGuardianIds = null, annulmentReason = "", + endDateNotKnown = false, ), ) } diff --git a/service/src/integrationTest/kotlin/fi/espoo/evaka/pis/InactivePeopleCleanupIntegrationTest.kt b/service/src/integrationTest/kotlin/fi/espoo/evaka/pis/InactivePeopleCleanupIntegrationTest.kt index cc2c0d1b718..f0f23d180d5 100644 --- a/service/src/integrationTest/kotlin/fi/espoo/evaka/pis/InactivePeopleCleanupIntegrationTest.kt +++ b/service/src/integrationTest/kotlin/fi/espoo/evaka/pis/InactivePeopleCleanupIntegrationTest.kt @@ -452,6 +452,7 @@ class InactivePeopleCleanupIntegrationTest : PureJdbiTest(resetDbBeforeEach = tr motivationForDecision = null, unreadGuardianIds = null, annulmentReason = "", + endDateNotKnown = false, ), ) } diff --git a/service/src/integrationTest/kotlin/fi/espoo/evaka/reports/AssistanceNeedDecisionsReportTest.kt b/service/src/integrationTest/kotlin/fi/espoo/evaka/reports/AssistanceNeedDecisionsReportTest.kt index 0ba642e1a6b..047b74fe388 100644 --- a/service/src/integrationTest/kotlin/fi/espoo/evaka/reports/AssistanceNeedDecisionsReportTest.kt +++ b/service/src/integrationTest/kotlin/fi/espoo/evaka/reports/AssistanceNeedDecisionsReportTest.kt @@ -100,6 +100,7 @@ class AssistanceNeedDecisionsReportTest : FullApplicationTest(resetDbBeforeEach otherRepresentativeDetails = null, assistanceLevels = setOf(AssistanceLevel.ENHANCED_ASSISTANCE), motivationForDecision = "Motivation for decision", + endDateNotKnown = false, ) @BeforeEach diff --git a/service/src/integrationTest/kotlin/fi/espoo/evaka/shared/security/AssistanceNeedDecisionAccessControlTest.kt b/service/src/integrationTest/kotlin/fi/espoo/evaka/shared/security/AssistanceNeedDecisionAccessControlTest.kt index 23d205c18aa..2795d3f4a6d 100644 --- a/service/src/integrationTest/kotlin/fi/espoo/evaka/shared/security/AssistanceNeedDecisionAccessControlTest.kt +++ b/service/src/integrationTest/kotlin/fi/espoo/evaka/shared/security/AssistanceNeedDecisionAccessControlTest.kt @@ -88,6 +88,7 @@ class AssistanceNeedDecisionAccessControlTest : AccessControlTest() { motivationForDecision = null, unreadGuardianIds = null, annulmentReason = "", + endDateNotKnown = false, ), ) } @@ -144,6 +145,7 @@ class AssistanceNeedDecisionAccessControlTest : AccessControlTest() { motivationForDecision = null, unreadGuardianIds = null, annulmentReason = "", + endDateNotKnown = false, ), ) } diff --git a/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecision.kt b/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecision.kt index ddecf7737d9..1e52c48f8b6 100644 --- a/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecision.kt +++ b/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecision.kt @@ -24,6 +24,7 @@ data class AssistanceNeedDecision( val decisionNumber: Long? = null, @Nested("child") val child: AssistanceNeedDecisionChild?, val validityPeriod: DateRange, + val endDateNotKnown: Boolean, val status: AssistanceNeedDecisionStatus, val language: OfficialLanguage, val decisionMade: LocalDate?, @@ -54,6 +55,7 @@ data class AssistanceNeedDecision( AssistanceNeedDecisionForm( decisionNumber, validityPeriod, + endDateNotKnown, status, language, decisionMade, @@ -84,6 +86,7 @@ data class AssistanceNeedDecision( data class AssistanceNeedDecisionForm( val decisionNumber: Long? = null, val validityPeriod: DateRange, + val endDateNotKnown: Boolean, val status: AssistanceNeedDecisionStatus, val language: OfficialLanguage, val decisionMade: LocalDate?, diff --git a/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionQueries.kt b/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionQueries.kt index 6ac2ff8e7ed..46df15d9742 100644 --- a/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionQueries.kt +++ b/service/src/main/kotlin/fi/espoo/evaka/assistanceneed/decision/AssistanceNeedDecisionQueries.kt @@ -112,7 +112,7 @@ fun Database.Read.getAssistanceNeedDecisionById( createQuery { sql( """ -SELECT ad.id, decision_number, child_id, concat(child.first_name, ' ', child.last_name) child_name, validity_period, status, +SELECT ad.id, decision_number, child_id, concat(child.first_name, ' ', child.last_name) child_name, validity_period, end_date_not_known, status, ad.language, decision_made, sent_for_decision, pedagogical_motivation, structural_motivation_opt_smaller_group, structural_motivation_opt_special_group, structural_motivation_opt_small_group, structural_motivation_opt_group_assistant, structural_motivation_opt_child_assistant, @@ -161,6 +161,7 @@ fun Database.Transaction.updateAssistanceNeedDecision( UPDATE assistance_need_decision SET validity_period = ${bind(data.validityPeriod)}, + end_date_not_known = ${bind(data.endDateNotKnown)}, status = ${bind(data.status)}, language = ${bind(data.language)}, decision_made = ${bind(data.decisionMade)}, diff --git a/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DataInitializers.kt b/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DataInitializers.kt index 2b694ff9545..55207712697 100755 --- a/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DataInitializers.kt +++ b/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DataInitializers.kt @@ -758,7 +758,7 @@ fun Database.Transaction.insertTestAssistanceNeedDecision( sql( """ INSERT INTO assistance_need_decision ( - id, decision_number, child_id, validity_period, status, language, decision_made, sent_for_decision, + id, decision_number, child_id, validity_period, end_date_not_known, status, language, decision_made, sent_for_decision, selected_unit, pedagogical_motivation, structural_motivation_opt_smaller_group, structural_motivation_opt_special_group, structural_motivation_opt_small_group, structural_motivation_opt_group_assistant, structural_motivation_opt_child_assistant, @@ -771,7 +771,7 @@ INSERT INTO assistance_need_decision ( preparer_1_phone_number, preparer_2_phone_number, unread_guardian_ids, annulment_reason ) VALUES ( - ${bind(data.id)}, ${bind(data.decisionNumber)}, ${bind(childId)}, ${bind(data.validityPeriod)}, ${bind(data.status)}, + ${bind(data.id)}, ${bind(data.decisionNumber)}, ${bind(childId)}, ${bind(data.validityPeriod)}, ${bind(data.endDateNotKnown)}, ${bind(data.status)}, ${bind(data.language)}, ${bind(data.decisionMade)}, ${bind(data.sentForDecision)}, ${bind(data.selectedUnit)}, ${bind(data.pedagogicalMotivation)}, ${bind(data.structuralMotivationOptions.smallerGroup)}, ${bind(data.structuralMotivationOptions.specialGroup)}, ${bind(data.structuralMotivationOptions.smallGroup)}, ${bind(data.structuralMotivationOptions.groupAssistant)}, ${bind(data.structuralMotivationOptions.childAssistant)}, ${bind(data.structuralMotivationOptions.additionalStaff)}, diff --git a/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DevApi.kt b/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DevApi.kt index 7af8b974b20..9293b0b87cd 100755 --- a/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DevApi.kt +++ b/service/src/main/kotlin/fi/espoo/evaka/shared/dev/DevApi.kt @@ -1933,6 +1933,7 @@ data class DevAssistanceNeedDecision( val decisionNumber: Long?, val childId: ChildId, val validityPeriod: DateRange, + val endDateNotKnown: Boolean, val status: AssistanceNeedDecisionStatus, val language: OfficialLanguage, val decisionMade: LocalDate?, diff --git a/service/src/main/resources/db/migration/V442__assistance_need_decision_no_end_date.sql b/service/src/main/resources/db/migration/V442__assistance_need_decision_no_end_date.sql new file mode 100644 index 00000000000..ca18fdaa897 --- /dev/null +++ b/service/src/main/resources/db/migration/V442__assistance_need_decision_no_end_date.sql @@ -0,0 +1,5 @@ +ALTER TABLE assistance_need_decision + ADD COLUMN end_date_not_known BOOLEAN DEFAULT FALSE NOT NULL; + +ALTER TABLE assistance_need_decision + ALTER COLUMN end_date_not_known DROP DEFAULT; diff --git a/service/src/main/resources/migrations.txt b/service/src/main/resources/migrations.txt index 485ccab04bf..1a198e2fde6 100644 --- a/service/src/main/resources/migrations.txt +++ b/service/src/main/resources/migrations.txt @@ -437,3 +437,4 @@ V438__service_applications_unit_feature.sql V439__income_statement_and_income_indexes.sql V440__rename_curriculum_tables_to_backup.sql V441__placement_modification_user_and_timestamp.sql +V442__assistance_need_decision_no_end_date.sql