Skip to content

Commit

Permalink
fix(inheritance-report): EFS fixes 4.06 (#15097)
Browse files Browse the repository at this point in the history
* fix(inheritance-report): EFS fixes 4.06

* splitting up the overviews

* chore: nx format:write update dirty files

* required selection of application type

* tweaks

* format

* prepaid - overview

* application name

* revert

* more fixes

* taxfree overview

* text tweaks

---------

Co-authored-by: andes-it <builders@andes.is>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored and lodmfjord committed Jun 14, 2024
1 parent 99fe166 commit 683d896
Show file tree
Hide file tree
Showing 17 changed files with 321 additions and 288 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ export const expandAnswers = (
caseNumber: string
} => {
return {
applicationFor: answers.applicationFor ?? '',
applicant: answers.applicant,
executors: {
executor: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -461,7 +461,7 @@ export const CalculateShare: FC<React.PropsWithChildren<FieldBaseProps>> = ({
title={m.netProperty}
value={roundedValueToNumber(netTotal)}
/>
<Box marginY={4}>
<Box>
{deceasedWasInCohabitation && (
<TitleRow
title={m.assetsToShareSpouseShare}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,10 @@ import { hasYes } from '@island.is/application/core'
import { Fragment, useEffect, useMemo } from 'react'
import { EstateMember } from '../../types'
import {
ESTATE_INHERITANCE,
ErrorValue,
PREPAID_INHERITANCE,
PrePaidHeirsRelationTypes,
RelationSpouse,
} from '../../lib/constants'
import { LookupPerson } from '../LookupPerson'
import { HeirsAndPartitionRepeaterProps } from './types'
Expand Down Expand Up @@ -131,7 +132,7 @@ export const AdditionalHeir = ({
}, [foreignCitizenship, requiresAdvocate])

return (
<Box position="relative" key={field.id} marginTop={7}>
<Box position="relative" key={field.id} marginTop={3}>
<Controller
name={initialField}
control={control}
Expand Down Expand Up @@ -284,8 +285,9 @@ export const AdditionalHeir = ({
/>
</GridColumn>
) : customField.id === 'taxFreeInheritance' &&
currentHeir?.relation !==
PrePaidHeirsRelationTypes.SPOUSE ? null : (
((values.applicationFor === PREPAID_INHERITANCE &&
currentHeir?.relation !== RelationSpouse) ||
values.applicationFor === ESTATE_INHERITANCE) ? null : (
<GridColumn span={['1/2']} paddingBottom={2}>
<InputController
id={`${fieldIndex}.${customField.id}`}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@ import {
Text,
} from '@island.is/island-ui/core'
import { m } from '../../lib/messages'
import * as kennitala from 'kennitala'
import { formatCurrency } from '@island.is/application/ui-components'
import { Answers, EstateMember, heirAgeValidation } from '../../types'
import { AdditionalHeir } from './AdditionalHeir'
import { getValueViaPath } from '@island.is/application/core'
import { InputController } from '@island.is/shared/form-fields'
import { format as formatNationalId } from 'kennitala'
import { format as formatNationalId, info } from 'kennitala'
import intervalToDuration from 'date-fns/intervalToDuration'
import {
formatPhoneNumber,
Expand All @@ -32,6 +31,7 @@ import {
DEFAULT_TAX_FREE_LIMIT,
PREPAID_INHERITANCE,
PrePaidHeirsRelations,
RelationSpouse,
} from '../../lib/constants'
import DoubleColumnRow from '../../components/DoubleColumnRow'
import ShareInput from '../../components/ShareInput'
Expand All @@ -47,12 +47,13 @@ export const HeirsAndPartitionRepeater: FC<
const { customFields } = props

const { formatMessage } = useLocale()
const { getValues, setError, setValue } = useFormContext()
const { getValues, setError, setValue, clearErrors } = useFormContext()
const values = getValues()
const { fields, append, update, remove, replace } = useFieldArray({
name: id,
})

const values = getValues()
const isPrePaidApplication = answers.applicationFor === PREPAID_INHERITANCE

const heirsRelations = (values?.heirs?.data ?? []).map((x: EstateMember) => {
return x.relation
Expand All @@ -66,7 +67,7 @@ export const HeirsAndPartitionRepeater: FC<
hasForeignCitizenship && birthDate
? intervalToDuration({ start: new Date(birthDate), end: new Date() })
?.years
: kennitala.info(member.nationalId)?.age
: info(member.nationalId)?.age
return (
(memberAge ?? 0) < 18 &&
(member?.nationalId || birthDate) &&
Expand All @@ -78,7 +79,7 @@ export const HeirsAndPartitionRepeater: FC<
const hasEstateMemberUnder18withoutRep = values.estate?.estateMembers?.some(
(member: EstateMember) => {
const advocateAge =
member.advocate && kennitala.info(member.advocate.nationalId)?.age
member.advocate && info(member.advocate.nationalId)?.age
return (
hasEstateMemberUnder18 &&
member?.advocate?.nationalId &&
Expand Down Expand Up @@ -106,34 +107,29 @@ export const HeirsAndPartitionRepeater: FC<
return [true, null]
})

const { clearErrors } = useFormContext()

const externalData = application.externalData.syslumennOnEntry?.data as {
relationOptions: string[]
inheritanceReportInfos: Array<InheritanceReportInfo>
}

const estateData =
answers.applicationFor === PREPAID_INHERITANCE
? undefined
: getEstateDataFromApplication(application)

const inheritanceTaxFreeLimit =
answers.applicationFor === PREPAID_INHERITANCE
? 0
: externalData?.inheritanceReportInfos?.[0]?.inheritanceTax
?.taxExemptionLimit ?? DEFAULT_TAX_FREE_LIMIT

const relations =
answers.applicationFor === PREPAID_INHERITANCE
? PrePaidHeirsRelations.map((relation) => ({
value: relation.value,
label: formatMessage(relation.label),
}))
: externalData?.relationOptions?.map((relation) => ({
value: relation,
label: relation,
})) || []
const estateData = isPrePaidApplication
? undefined
: getEstateDataFromApplication(application)

const inheritanceTaxFreeLimit = isPrePaidApplication
? 0
: externalData?.inheritanceReportInfos?.[0]?.inheritanceTax
?.taxExemptionLimit ?? DEFAULT_TAX_FREE_LIMIT

const relations = isPrePaidApplication
? PrePaidHeirsRelations.map((relation) => ({
value: formatMessage(relation.label),
label: formatMessage(relation.label),
}))
: externalData?.relationOptions?.map((relation) => ({
value: relation,
label: relation,
})) || []

const error =
((errors as any)?.heirs?.data || (errors as any)?.heirs?.total) ?? []
Expand Down Expand Up @@ -177,11 +173,10 @@ export const HeirsAndPartitionRepeater: FC<

const updateValues = useCallback(
(updateIndex: string, value: number, index?: number) => {
const isPrePaid = answers.applicationFor === PREPAID_INHERITANCE
const numValue = isNaN(value) ? 0 : value
const percentage = numValue > 0 ? numValue / 100 : 0
const heirs = getValues()?.heirs?.data as EstateMember[]
let currentHeir = isPrePaid
let currentHeir = isPrePaidApplication
? heirs[index ?? 0]
: (getValueViaPath(answers, updateIndex) as EstateMember)

Expand All @@ -195,20 +190,15 @@ export const HeirsAndPartitionRepeater: FC<

// currently we can only check if heir is spouse by relation string value...
const spouse = (heirs ?? []).filter(
(heir) =>
heir.enabled &&
(heir.relation === 'Maki' ||
heir.relation.toLowerCase() === 'spouse'),
(heir) => heir.enabled && heir.relation === RelationSpouse,
)

let isSpouse = false

// it is not possible to select more than one spouse but for now we will check for it anyway
if (spouse.length > 0) {
if (isPrePaid) {
isSpouse =
currentHeir?.relation === 'Maki' ||
currentHeir?.relation.toLowerCase() === 'spouse'
if (isPrePaidApplication) {
isSpouse = currentHeir?.relation === RelationSpouse
} else {
spouse.forEach((currentSpouse) => {
isSpouse =
Expand All @@ -217,7 +207,7 @@ export const HeirsAndPartitionRepeater: FC<
}
}

const netPropertyForExchange = isPrePaid
const netPropertyForExchange = isPrePaidApplication
? getPrePaidTotalValueFromApplication(application)
: valueToNumber(getValueViaPath(answers, 'netPropertyForExchange'))

Expand Down Expand Up @@ -268,11 +258,6 @@ export const HeirsAndPartitionRepeater: FC<
initialLoad()
}, [heirsRelations, initialLoad])

useEffect(() => {
initialLoad()
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])

useEffect(() => {
if (!hasEstateMemberUnder18) {
clearErrors(heirAgeValidation)
Expand All @@ -297,24 +282,21 @@ export const HeirsAndPartitionRepeater: FC<
(estateData as any)?.inheritanceReportInfo?.heirs &&
!(application.answers as any)?.heirs?.hasModified
) {
// Keeping this in for now, it may not be needed, will find out later
const heirsData = (estateData as any)?.inheritanceReportInfo?.heirs?.map(
(heir: any) => {
return {
...heir,
phone: heir.phone ? formatPhoneNumber(heir.phone) : '', //Remove all non-digit characters and keep the last 7 digits
phone: heir.phone ? formatPhoneNumber(heir.phone) : '',
initial: true,
enabled: true,
}
},
)
// ran into a problem with "append", as it appeared to be getting called multiple times
// despite checking on the length of the fields
// so now using "replace" instead, for the initial setup
// ran into a problem with "append" as it appeared to be called multiple times
// using "replace" instead, for the initial setup
replace(heirsData)
setValue('heirs.hasModified', true)
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])

return (
Expand Down Expand Up @@ -595,7 +577,6 @@ export const HeirsAndPartitionRepeater: FC<
[] as JSX.Element[],
)}
{fields.map((member: GenericFormField<EstateMember>, index) => {
console.log(error, 'errrrrr')
if (member.initial) return null
return (
<Box key={member.id}>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,27 @@ import { FieldBaseProps } from '@island.is/application/types'
import { InheritanceReport } from '../../lib/dataSchema'
import { m } from '../../lib/messages'
import { formatCurrency } from '@island.is/application/ui-components'
import { format as formatNationalId } from 'kennitala'
import {
ESTATE_INHERITANCE,
PREPAID_INHERITANCE,
RelationSpouse,
} from '../../lib/constants'

export const HeirsOverview: FC<React.PropsWithChildren<FieldBaseProps>> = ({
application,
}) => {
const heirs = (application.answers as InheritanceReport).heirs?.data
const { answers } = application
const heirs = (answers as InheritanceReport).heirs?.data
const { formatMessage } = useLocale()

return (
<Box>
{heirs?.map((heir, index) => {
const showTaxFree =
answers.applicationFor === ESTATE_INHERITANCE ||
(answers.applicationFor === PREPAID_INHERITANCE &&
heir.relation === RelationSpouse)
if (!heir.enabled) return null

return (
Expand All @@ -25,7 +36,7 @@ export const HeirsOverview: FC<React.PropsWithChildren<FieldBaseProps>> = ({
<Box display="flex" marginBottom={2}>
<Box width="half">
<Text variant="h4">{formatMessage(m.nationalId)}</Text>
<Text>{heir.nationalId}</Text>
<Text>{formatNationalId(heir.nationalId ?? '')}</Text>
</Box>
<Box width="half">
<Text variant="h4">{formatMessage(m.name)}</Text>
Expand Down Expand Up @@ -55,24 +66,45 @@ export const HeirsOverview: FC<React.PropsWithChildren<FieldBaseProps>> = ({
</Box>
</Box>
<Box display={'flex'} marginBottom={2}>
<Box width="half">
<Text variant="h4">{formatMessage(m.taxFreeInheritance)}</Text>
<Text>
{formatCurrency(String(heir.taxFreeInheritance || '0'))}
</Text>
</Box>
<Box width="half">
<Text variant="h4">{formatMessage(m.inheritanceAmount)}</Text>
<Text>{formatCurrency(String(heir.inheritance || '0'))}</Text>
</Box>
{showTaxFree ? (
<Box width="half">
<Text variant="h4">
{formatMessage(m.taxFreeInheritance)}
</Text>
<Text>
{formatCurrency(String(heir.taxFreeInheritance || '0'))}
</Text>
</Box>
) : (
<Box width="half">
<Text variant="h4">
{formatMessage(m.taxableInheritance)}
</Text>
<Text>
{formatCurrency(String(heir.taxableInheritance || '0'))}
</Text>
</Box>
)}
</Box>
<Box display={'flex'} marginBottom={2}>
<Box width="half">
<Text variant="h4">{formatMessage(m.taxableInheritance)}</Text>
<Text>
{formatCurrency(String(heir.taxableInheritance || '0'))}
</Text>
</Box>
<Box
display={'flex'}
marginBottom={2}
flexDirection={showTaxFree ? 'rowReverse' : 'row'}
>
{showTaxFree && (
<Box width="half">
<Text variant="h4">
{formatMessage(m.taxableInheritance)}
</Text>
<Text>
{formatCurrency(String(heir.taxableInheritance || '0'))}
</Text>
</Box>
)}
<Box width="half">
<Text variant="h4">{formatMessage(m.inheritanceTax)}</Text>
<Text>
Expand All @@ -90,7 +122,7 @@ export const HeirsOverview: FC<React.PropsWithChildren<FieldBaseProps>> = ({
<Text variant="h4">
{formatMessage(m.advocateNationalId)}
</Text>
<Text>{heir.advocate.nationalId}</Text>
<Text>{formatNationalId(heir.advocate.nationalId)}</Text>
</Box>
<Box width="half">
<Text variant="h4">{formatMessage(m.advocateName)}</Text>
Expand Down
14 changes: 2 additions & 12 deletions libs/application/templates/inheritance-report/src/forms/form.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,5 @@
import {
YES,
buildCheckboxField,
buildForm,
buildMultiField,
buildSection,
buildSubmitField,
} from '@island.is/application/core'
import { m } from '../lib/messages'
import { DefaultEvents, Form, FormModes } from '@island.is/application/types'
import { buildForm } from '@island.is/application/core'
import { Form, FormModes } from '@island.is/application/types'
import { assets } from './sections/assets'
import { debtsAndFuneralCost } from './sections/debtsAndFuneralCost'
import { heirs } from './sections/heirs'
Expand All @@ -19,7 +11,6 @@ import { preSelection } from './sections/applicationTypeSelection'
import { prePaidHeirs } from './sections/prepaidInheritance/heirs'
import { inheritanceExecutor } from './sections/prepaidInheritance/inheritanceExecutor'
import { inheritance } from './sections/prepaidInheritance/inheritance'
import { prepaidOverview } from './sections/prepaidInheritance/overview'
import { finalStep } from './sections/finalStep'
import { prePaidApplicant } from './sections/prepaidInheritance/applicant'

Expand All @@ -35,7 +26,6 @@ export const prepaidInheritanceForm: Form = buildForm({
inheritance,
assets,
prePaidHeirs,
prepaidOverview,
finalStep,
],
})
Expand Down
Loading

0 comments on commit 683d896

Please sign in to comment.