+
+
{{ feedback }}
{{ feedbackLine1 }}
{{ feedbackLine2.part1 }}
diff --git a/src/main/steps/applicant1/hub-page/content.ts b/src/main/steps/applicant1/hub-page/content.ts
index 586fe46c99..10eb27f178 100644
--- a/src/main/steps/applicant1/hub-page/content.ts
+++ b/src/main/steps/applicant1/hub-page/content.ts
@@ -180,12 +180,6 @@ const cy: typeof en = ({
}: CommonContent) => ({
title: `${getName(userCase, 'applicant1')} & ${getName(userCase, 'applicant2')}`,
referenceNumber: `Cyfeirnod: ${referenceNumber}`,
- applicationSubmitted: 'Application submitted',
- response: 'Response',
- conditionalOrderApplication: 'Conditional order application',
- conditionalOrderGranted: 'Conditional order granted',
- finalOrderApplication: 'Final order application',
- applicationEnded: isDivorce ? 'Divorced' : 'Civil partnership ended',
subHeading1:
userCase.state === 'AwaitingClarification' ? 'Beth sydd angen i chi ei wneud nawr' : 'Diweddariad diweddaraf',
subHeading2: 'Gwybodaeth ddefnyddiol',
diff --git a/src/main/steps/applicant1/hub-page/joint/content.ts b/src/main/steps/applicant1/hub-page/joint/content.ts
index d1ba022405..efe4105d7d 100644
--- a/src/main/steps/applicant1/hub-page/joint/content.ts
+++ b/src/main/steps/applicant1/hub-page/joint/content.ts
@@ -3,7 +3,7 @@ import dayjs from 'dayjs';
import { getFormattedDate } from '../../../../app/case/answers/formatDate';
import { CaseWithId, Checkbox } from '../../../../app/case/case';
-import { State, YesOrNo } from '../../../../app/case/definition';
+import { DocumentType, State, YesOrNo } from '../../../../app/case/definition';
import { TranslationFn } from '../../../../app/controller/GetController';
import { SupportedLanguages } from '../../../../modules/i18n';
import type { CommonContent } from '../../../common/common.content';
@@ -31,16 +31,25 @@ const hubPageSubheading = (
}
};
-const en = ({ isDivorce, userCase, partner, isApplicant2 }: CommonContent) => ({
+const en = ({
+ isDivorce,
+ userCase,
+ partner,
+ isApplicant2,
+ isJointApplication,
+ referenceNumber,
+ telephoneNumber,
+}: CommonContent) => ({
subHeading1: hubPageSubheading(userCase),
applicationSubmittedLatestUpdate: {
- line1: `Your application ${isDivorce ? 'for divorce' : 'to end your civil partnership'} has been submitted
- and checked by court staff. It has been sent to you and your ${partner} by ${
- userCase.applicant1AgreeToReceiveEmails ? 'email' : 'post'
- }.`,
- line2: `You should confirm that you have received your application ${
- isDivorce ? 'for divorce' : 'to end your civil partnership'
- }.`,
+ line1: `Your joint application ${
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES &&
+ userCase.applicant2AlreadyAppliedForHelpPaying === YesOrNo.YES
+ ? 'and help with fees reference number '
+ : ''
+ } will be checked by court staff. You will receive an email notification by ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day')
+ )} confirming whether it has been accepted. Check your junk or spam email folder.`,
},
applicantConfirmedReceiptLatestUpdate: {
line1: `You have confirmed receipt of the ${
@@ -142,6 +151,7 @@ const en = ({ isDivorce, userCase, partner, isApplicant2 }: CommonContent) => ({
? 'You will receive an email confirming whether it has been granted once a Judge has made a decision.'
: 'You should receive an email within 2 working days, confirming whether the final order has been granted.',
},
+ finalOrderComplete: {},
intendToSwitchToSoleFinalOrder: {
line1: `The court has notified your ${partner} by email that you are intending to apply for a final order as a sole applicant.`,
line2: `You will be able to apply for a final order from ${getFormattedDate(
@@ -161,19 +171,85 @@ const en = ({ isDivorce, userCase, partner, isApplicant2 }: CommonContent) => ({
line1:
"Your application is with the court and will be referred to a judge to consider your request. You should hear back from the court about the judge's decision.",
},
+ sendDocumentLine1: 'Your application will not be processed until you have done the following:',
+ sendDocumentHeading: 'Send your documents to the court',
+ line2: 'You need to send the following documents to the court because you did not upload them earlier:',
+ documents: {
+ [DocumentType.MARRIAGE_CERTIFICATE]:
+ userCase.inTheUk === YesOrNo.NO
+ ? `Your original foreign ${isDivorce ? 'marriage' : 'civil partnership'} certificate`
+ : `Your original ${isDivorce ? 'marriage' : 'civil partnership'} certificate or a certified copy`,
+ [DocumentType.MARRIAGE_CERTIFICATE_TRANSLATION]: `A certified translation of your foreign ${
+ isDivorce ? 'marriage' : 'civil partnership'
+ } certificate`,
+ [DocumentType.NAME_CHANGE_EVIDENCE]:
+ 'Proof that you changed your name. For example, deed poll or statutory declaration.',
+ },
+ documentsByOnlineForm: 'Sending documents using our online form',
+ documentsByOnlineFormSteps: {
+ line1: 'You can send photographs or scans of your documents to us by',
+ line2: 'uploading them using our online form.',
+ line3:
+ 'Make sure you follow the instructions on how to upload your documents carefully or they could be rejected, resulting in further delays.',
+ },
+ documentsByPost: 'Sending your documents by post',
+ documentsByPostSteps: {
+ step1: `Write your reference number on each document: ${referenceNumber}`,
+ step2: 'Post the original documents to:',
+ },
+ documentsByPostMoreDetails:
+ 'Make sure you also include in your response a return address. Any cherished documents you send, such as marriage certificates, birth certificates, passports or deed polls will be returned to you. Other documents will not be returned.',
+
+ subHeading3: `Apply to serve the ${isDivorce ? 'divorce' : 'civil partnership'} papers another way`,
+ line3: {
+ p1: `You need to apply to serve the ${
+ isDivorce ? 'divorce' : 'ending your civil partnership'
+ } papers to your ${partner} another way. This is because you did not provide their email and postal address. You could apply to serve them by email only, text message or social media.`,
+ p2: 'You will need to fill out a separate paper D11 form and send it to the court. The form can be used to make different applications so only fill out the relevant sections.',
+ },
+ line4: {
+ part1: `Apply to serve the ${isDivorce ? 'divorce' : 'civil partnership'} papers another way`,
+ link: config.get('govukUrls.d11Form'),
+ },
+ subHeading4: 'What happens next',
+ line5: `Your${isJointApplication ? ' joint' : ''} application${
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES &&
+ (!isJointApplication || userCase.applicant2AlreadyAppliedForHelpPaying === YesOrNo.YES)
+ ? ' and help with fees reference number'
+ : ''
+ } will be checked by court staff. You will receive an email notification by ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day')
+ )} confirming whether it has been accepted. Check your junk or spam email folder.`,
+ line6: `Your ${partner} will then be sent a copy of the application. They will be asked to check the information and respond. If they do not respond then you will be told what you can do next to progress the application.`,
+ line7: `Your ${partner}’s solicitor will be contacted by the court, and asked to confirm they are representing them. They will be sent a copy of the application and asked to respond.`,
+ line8: `If you want to ‘serve’ (send) the documents to your ${partner} yourself then phone ${telephoneNumber} to request it. Otherwise the court will do it.`,
+ line9: `If you want the court to serve (send) the application by post instead of by email, then phone ${telephoneNumber}.`,
+ line10: `The address you have provided for your ${partner} is outside of England and Wales. That means you are responsible for ‘serving’ (sending) the court documents, which notify your ${partner} about ${
+ isDivorce ? 'the divorce' : 'ending the civil partnership'
+ }.`,
+ line11: `You will receive the documents that you need to send to your ${partner} by email and letter, after the application has been checked.`,
});
-const cy: typeof en = ({ isDivorce, userCase, partner, isApplicant2 }: CommonContent) => ({
+const cy: typeof en = ({
+ isDivorce,
+ userCase,
+ partner,
+ isApplicant2,
+ isJointApplication,
+ referenceNumber,
+ telephoneNumber,
+}: CommonContent) => ({
subHeading1: hubPageSubheading(userCase, SupportedLanguages.Cy),
applicationSubmittedLatestUpdate: {
- line1: `Mae eich cais ${
- isDivorce ? 'am ysgariad' : "i ddod â'ch partneriaeth sifil i ben"
- } wedi'i gyflwyno a'i wirio gan staff y llys. Fe'i anfonwyd atoch chi a'ch ${partner} ${
- userCase.applicant1AgreeToReceiveEmails ? 'drwy e-bost' : 'drwy’r post'
- }.`,
- line2: `Dylech gadarnhau eich bod wedi cael eich cais ${
- isDivorce ? 'am ysgariad' : "i ddod â'ch partneriaeth sifil i ben"
- }.`,
+ line1: `Bydd staff y llys yn gwirio eich cais ${
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES &&
+ userCase.applicant2AlreadyAppliedForHelpPaying === YesOrNo.YES
+ ? 'a’ch cyfeirnod Help i Dalu Ffioedd '
+ : ''
+ }. Fe gewch neges e-bost erbyn ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day'),
+ SupportedLanguages.Cy
+ )} yn cadarnhau p’un a yw wedi’i dderbyn. Gwiriwch eich ffolder ‘junk’ neu ‘spam’.`,
},
applicantConfirmedReceiptLatestUpdate: {
line1: `Rydych wedi cadarnhau eich bod wedi cael y ${
@@ -309,6 +385,63 @@ const cy: typeof en = ({ isDivorce, userCase, partner, isApplicant2 }: CommonCon
line1:
'Mae eich cais wedi cyrraedd y llys a bydd yn cael ei gyfeirio at farnwr i ystyried eich cais. Dylech glywed gan\n y llys am benderfyniad y barnwr.',
},
+ sendDocumentLine1: 'Ni fydd eich cais yn cael ei brosesu hyd nes y byddwch wedi gwneud y canlynol:',
+ sendDocumentHeading: 'Anfon eich dogfennau i’r llys',
+ line2: 'Mae angen i chi anfon y dogfennau canlynol i’r llys gan na wnaethoch eu llwytho yn gynharach:',
+ documents: {
+ [DocumentType.MARRIAGE_CERTIFICATE]:
+ userCase.inTheUk === YesOrNo.NO
+ ? `Eich tystysgrif ${isDivorce ? 'priodas' : 'partneriaeth sifil'} dramor wreiddiol`
+ : `Eich tystysgrif ${isDivorce ? 'priodas' : 'partneriaeth sifil'} wreiddiol neu gopi ardystiedig ohoni`,
+ [DocumentType.MARRIAGE_CERTIFICATE_TRANSLATION]: `Cyfieithiad ardystiedig o’ch tystysgrif ${
+ isDivorce ? 'priodas' : 'partneriaeth sifil'
+ } dramor`,
+ [DocumentType.NAME_CHANGE_EVIDENCE]:
+ 'Prawf eich bod wedi newid eich enw. Er enghraifft, gweithred newid enw neu ddatganiad statudol.',
+ },
+ documentsByOnlineForm: 'Anfon dogfennau drwy ddefnyddio ein ffurflen ar-lein',
+ documentsByOnlineFormSteps: {
+ line1: 'Gallwch anfon lluniau neu sganiau o’ch dogfennau atom trwy ',
+ line2: 'llwytho gan ddefnyddio ein ffurflen ar-lein.',
+ line3:
+ "Gwnewch yn siŵr eich bod yn dilyn y cyfarwyddiadau ar sut i lwytho eich dogfennau'n ofalus neu gellid eu gwrthod, gan arwain at oedi pellach.",
+ },
+ documentsByPost: 'Anfon eich dogfennau drwy’r post',
+ documentsByPostSteps: {
+ step1: `Ysgrifennwch eich cyfeirnod ar bob dogfen: ${referenceNumber}`,
+ step2: 'Postiwch y dogfennau gwreiddiol i:',
+ },
+ documentsByPostMoreDetails:
+ 'Gwnewch yn siŵr eich bod hefyd yn cynnwys cyfeiriad dychwelyd yn eich ymateb. Bydd unrhyw ddogfennau y byddwch yn eu hanfon, fel tystysgrifau priodas, tystysgrifau geni, pasbortau neu weithred newid enw yn cael eu dychwelyd atoch. Ni fydd y dogfennau eraill yn cael eu dychwelyd.',
+ subHeading3: `Gwneud cais i gyflwyno papurau’r ${isDivorce ? 'ysgariad' : 'bartneriaeth sifil'} mewn ffordd arall`,
+ line3: {
+ p1: `Mae angen i chi wneud cais i gyflwyno papurau’r ${
+ isDivorce ? 'ysgariad' : 'bartneriaeth sifil'
+ } ar eich ${partner} mewn ffordd arall. Y rheswm dros hyn yw oherwydd ni wnaethoch ddarparu eu cyfeiriad e-bost neu gyfeiriad post. Gallwch wneud cais i’w cyflwyno arnynt drwy e-bost yn unig, drwy neges testun neu gyfryngau cymdeithasol.`,
+ p2: 'Bydd angen i chi lenwi ffurflen bapur D11 a’i hanfon i’r llys. Gallwch ddefnyddio’r ffurflen i wneud ceisiadau gwahanol, felly dim ond yr adrannau perthnasol sydd angen i chi eu llenwi.',
+ },
+ line4: {
+ part1: `Gwneud cais i gyflwyno papurau’r ${isDivorce ? 'ysgariad' : 'bartneriaeth sifil'} mewn ffordd arall`,
+ link: config.get('govukUrls.d11Form'),
+ },
+ subHeading4: 'Beth fydd yn digwydd nesaf',
+ line5: `Bydd staff y llys yn gwirio eich cais ${isJointApplication ? ' ar y cyd' : ''}${
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES &&
+ (!isJointApplication || userCase.applicant2AlreadyAppliedForHelpPaying === YesOrNo.YES)
+ ? ' a’ch cyfeirnod Help i Dalu Ffioedd'
+ : ''
+ }. Fe gewch neges e-bost erbyn ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day'),
+ SupportedLanguages.Cy
+ )} yn cadarnhau p’un a yw wedi’i dderbyn. Gwiriwch eich ffolder ‘junk’ neu ‘spam’.`,
+ line6: `Yna fe anfonir copi o’r cais at eich ${partner}. Os na fyddant yn ymateb, fe ddywedir wrthych beth allwch ei wneud nesaf i symud y cais yn ei flaen.`,
+ line7: `Bydd y llys yn cysylltu â chyfreithiwr eich ${partner} ac yn gofyn iddo gadarnhau ei fod yn cynrychioli eich ${partner}. Fe anfonir copi o’r cais ato ac fe ofynnir iddo ymateb.`,
+ line8: `Os ydych eisiau ‘cyflwyno’ (anfon) y dogfennau ar eich ${partner} eich hun, yna ffoniwch ${telephoneNumber}. Fel arall, bydd y llys yn gwneud hyn ar eich rhan.`,
+ line9: `Os ydych eisiau i’r llys gyflwyno (anfon) y cais drwy’r post yn hytrach na drwy e-bost, ffoniwch ${telephoneNumber}.`,
+ line10: `Mae’r cyfeiriad rydych wedi’i ddarparu ar gyfer eich ${partner} y tu allan i Gymru a Lloegr. Mae hynny’n golygu eich bod chi’n gyfrifol am ‘gyflwyno’ (anfon) dogfennau’r llys, sydd yn hysbysu eich ${partner} am ${
+ isDivorce ? 'yr ysgariad' : 'ddiweddu’r bartneriaeth sifil'
+ }.`,
+ line11: `Fe gewch y dogfennau y bydd angen i chi eu hanfon at eich ${partner} drwy e-bost a drwy’r post, ar ôl i’r cais gael ei wirio.`,
});
const languages = {
@@ -360,6 +493,11 @@ export const generateContent: TranslationFn = content => {
switchToSoleFinalOrderStatus.hasSwitchToSoleFoIntentionNotificationPeriodExpired,
});
+ const cannotUploadDocuments = new Set([
+ ...(userCase.applicant1CannotUploadDocuments || []),
+ ...(userCase.applicant2CannotUploadDocuments || []),
+ ]);
+
return {
...languages[content.language](content),
displayState,
@@ -376,5 +514,6 @@ export const generateContent: TranslationFn = content => {
isFinalOrderCompleteState,
finalOrderEligibleAndSecondInTimeFinalOrderNotSubmittedWithin14Days,
isIntendingAndAbleToSwitchToSoleFinalOrder: switchToSoleFinalOrderStatus.isIntendingAndAbleToSwitchToSoleFo,
+ cannotUploadDocuments,
};
};
diff --git a/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.test.ts b/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.test.ts
index a113560b0e..5f5d2e45c2 100644
--- a/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.test.ts
+++ b/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.test.ts
@@ -1,6 +1,8 @@
+import { Checkbox } from '../../../../app/case/case';
import { DivorceOrDissolution, State, YesOrNo } from '../../../../app/case/definition';
import { HubTemplate } from '../../../common/hubTemplates';
import { currentStateFn } from '../../../state-sequence';
+import { getSoleHubTemplate } from '../sole/soleTemplateSelector';
import { getJointHubTemplate } from './jointTemplateSelector';
@@ -25,6 +27,12 @@ describe('JointTemplateSelector test', () => {
expect(jointTemplate).toBe(HubTemplate.Holding);
});
+ test('should show /holding.njk for state Submitted', () => {
+ const theState = displayState.at(State.Submitted);
+ const jointTemplate = getJointHubTemplate(theState, userCase);
+ expect(jointTemplate).toBe(HubTemplate.Holding);
+ });
+
test('should show /conditional-order-pronounced.njk for state ConditionalOrderPronounced', () => {
const theState = displayState.at(State.ConditionalOrderPronounced);
const jointTemplate = getJointHubTemplate(theState, userCase);
@@ -156,4 +164,26 @@ describe('JointTemplateSelector test', () => {
const jointTemplate = getJointHubTemplate(theState, userCase);
expect(jointTemplate).toBe(HubTemplate.PendingHearingOutcome);
});
+
+ test('should show /awaiting-documents.njk for state AwaitingDocuments', () => {
+ const theState = displayState.at(State.AwaitingDocuments);
+ const jointTemplate = getJointHubTemplate(theState, userCase);
+ expect(jointTemplate).toBe(HubTemplate.AwaitingDocuments);
+ });
+
+ test('should show /awaiting-documents.njk for state AwaitingHWFDecision and reason is "cannot upload documents"', () => {
+ const userCaseWithApplicant1CannotUploadDocuments = {
+ ...userCase,
+ applicant1CannotUpload: Checkbox.Checked,
+ };
+ const theState = displayState.at(State.AwaitingHWFDecision);
+ const soleTemplate = getSoleHubTemplate(theState, userCaseWithApplicant1CannotUploadDocuments, false, false);
+ expect(soleTemplate).toBe(HubTemplate.AwaitingDocuments);
+ });
+
+ test('should show /holding.njk for state AwaitingHWFDecision', () => {
+ const theState = displayState.at(State.AwaitingHWFDecision);
+ const jointTemplate = getJointHubTemplate(theState, userCase);
+ expect(jointTemplate).toBe(HubTemplate.Holding);
+ });
});
diff --git a/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.ts b/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.ts
index 2e6c868435..10ab99149d 100644
--- a/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.ts
+++ b/src/main/steps/applicant1/hub-page/joint/jointTemplateSelector.ts
@@ -1,4 +1,4 @@
-import { CaseWithId } from '../../../../app/case/case';
+import { CaseWithId, Checkbox } from '../../../../app/case/case';
import { State, YesOrNo } from '../../../../app/case/definition';
import { HubTemplate } from '../../../common/hubTemplates';
import { StateSequence } from '../../../state-sequence';
@@ -21,7 +21,8 @@ export const getJointHubTemplate = (
case State.AwaitingPronouncement: {
return HubTemplate.AwaitingPronouncement;
}
- case State.Holding: {
+ case State.Holding:
+ case State.Submitted: {
return HubTemplate.Holding;
}
case State.ConditionalOrderPronounced: {
@@ -61,6 +62,10 @@ export const getJointHubTemplate = (
case State.PendingHearingDate: {
return HubTemplate.PendingHearingOutcome;
}
+ case State.AwaitingDocuments:
+ return HubTemplate.AwaitingDocuments;
+ case State.AwaitingHWFDecision:
+ return userCase.applicant1CannotUpload === Checkbox.Checked ? HubTemplate.AwaitingDocuments : HubTemplate.Holding;
default: {
if (
displayState.isAfter('Holding') &&
diff --git a/src/main/steps/applicant1/hub-page/joint/latest-update-content/awaiting-documents.njk b/src/main/steps/applicant1/hub-page/joint/latest-update-content/awaiting-documents.njk
new file mode 100644
index 0000000000..3f75cfd4e4
--- /dev/null
+++ b/src/main/steps/applicant1/hub-page/joint/latest-update-content/awaiting-documents.njk
@@ -0,0 +1 @@
+{% include "../../sole/latest-update-content/awaiting-documents.njk" %}
diff --git a/src/main/steps/applicant1/hub-page/progressBarLabels.test.ts b/src/main/steps/applicant1/hub-page/progressBarLabels.test.ts
index 9afc4594ff..efc092763d 100644
--- a/src/main/steps/applicant1/hub-page/progressBarLabels.test.ts
+++ b/src/main/steps/applicant1/hub-page/progressBarLabels.test.ts
@@ -9,14 +9,12 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, true);
expect(labels).toEqual({
submitted: 'Submitted',
- weeksToResponse: '4 weeks',
+ courtChecks: 'Court checks',
response: 'Response',
- weeksToConditionalOrder: '20 weeks',
conditionalOrder: 'Conditional order',
- weeksToFinalOrder: '6 weeks',
finalOrder: 'Final order (Divorced)',
progressBarAriaLabel:
- 'A progress bar showing the application has been submitted. The next steps are receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ 'A progress bar showing the application has been submitted. The next steps are court checks, receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
});
});
@@ -25,14 +23,12 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(false, displayState, true);
expect(labels).toEqual({
submitted: 'Submitted',
- weeksToResponse: '4 weeks',
+ courtChecks: 'Court checks',
response: 'Response',
- weeksToConditionalOrder: '20 weeks',
conditionalOrder: 'Conditional order',
- weeksToFinalOrder: '6 weeks',
finalOrder: 'Final order (Civil partnership ended)',
progressBarAriaLabel:
- 'A progress bar showing the application has been submitted. The next steps are receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ 'A progress bar showing the application has been submitted. The next steps are court checks, receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
});
});
@@ -41,14 +37,12 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, false);
expect(labels).toEqual({
submitted: "Wedi'i gyflwyno",
- weeksToResponse: '2 wythnos',
+ courtChecks: 'Gwiriadau llys',
response: 'Ymateb',
- weeksToConditionalOrder: '20 wythnos',
conditionalOrder: 'Gorchymyn amodol',
- weeksToFinalOrder: '6 wythnos',
finalOrder: 'Gorchymyn terfynol (Wedi ysgaru)',
progressBarAriaLabel:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw gwiriadau’r llys, cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
});
});
@@ -57,14 +51,12 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(false, displayState, false);
expect(labels).toEqual({
submitted: "Wedi'i gyflwyno",
- weeksToResponse: '2 wythnos',
+ courtChecks: 'Gwiriadau llys',
response: 'Ymateb',
- weeksToConditionalOrder: '20 wythnos',
conditionalOrder: 'Gorchymyn amodol',
- weeksToFinalOrder: '6 wythnos',
finalOrder: 'Gorchymyn terfynol (Partneriaeth sifil wedi dod i ben)',
progressBarAriaLabel:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw gwiriadau’r llys, cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
});
});
@@ -73,7 +65,7 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, true);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'A progress bar showing the application has been submitted. The next steps are receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ 'A progress bar showing the application has been submitted. The next steps are court checks, receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
});
});
@@ -82,7 +74,16 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, true);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'A progress bar showing the application has been submitted and the response has been received. The next steps show a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ 'A progress bar showing the application has been submitted, court checks completed and the response has been received. The next steps show a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ });
+ });
+
+ test('should return response arial label when state is at or after awaiting aos', () => {
+ const displayState = currentStateFn(State.AwaitingAos);
+ const labels = getProgressBarContent(true, displayState, true);
+ expect(labels).toMatchObject({
+ progressBarAriaLabel:
+ 'A progress bar showing the application has been submitted and court checks completed. The next steps are receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
});
});
@@ -91,7 +92,7 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, true);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'A progress bar showing the application has been submitted, the response has been received and a conditional order has been granted. The next step shows a final order being granted, which is the final stage in the process. This step is not complete yet.',
+ 'A progress bar showing the application has been submitted, court checks completed, the response has been received and a conditional order has been granted. The next step shows a final order being granted, which is the final stage in the process. This step is not complete yet.',
});
});
@@ -100,7 +101,7 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, true);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'A progress bar showing the application has been submitted, the response has been received, a conditional order has been granted and a final order has been granted. All steps are now complete.',
+ 'A progress bar showing the application has been submitted, court checks completed, the response has been received, a conditional order has been granted and a final order has been granted. All steps are now complete.',
});
});
@@ -109,7 +110,7 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, false);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw gwiriadau’r llys, cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
});
});
@@ -118,7 +119,7 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, false);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno a bod yr ymateb wedi dod i law. Mae’r camau nesaf yn dangos gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf yn y broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, gwiriadau’r llys wedi’u cwblhau a bod yr ymateb wedi dod i law. Mae’r camau nesaf yn dangos gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf yn y broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
});
});
@@ -127,7 +128,7 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, false);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, mae’r ymateb wedi dod i law, ac mae gorchymyn amodol wedi’i gymeradwyo. Mae’r cam nesaf yn dangos y gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw cam hwn wedi’i gwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, gwiriadau’r llys wedi’u cwblhau, mae’r ymateb wedi dod i law, ac mae gorchymyn amodol wedi’i gymeradwyo. Mae’r cam nesaf yn dangos y gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw cam hwn wedi’i gwblhau eto.',
});
});
@@ -136,7 +137,7 @@ describe('getProgressBarContent', () => {
const labels = getProgressBarContent(true, displayState, false);
expect(labels).toMatchObject({
progressBarAriaLabel:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, mae’r ymateb wedi dod i law, mae gorchymyn amodol wedi’i gymeradwyo ac mae gorchymyn terfynol wedi’i gymeradwyo. Mae’r holl gamau wedi’u cwblhau bellach.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, gwiriadau’r llys wedi’u cwblhau, mae’r ymateb wedi dod i law, mae gorchymyn amodol wedi’i gymeradwyo ac mae gorchymyn terfynol wedi’i gymeradwyo. Mae’r holl gamau wedi’u cwblhau bellach.',
});
});
});
diff --git a/src/main/steps/applicant1/hub-page/progressBarLabels.ts b/src/main/steps/applicant1/hub-page/progressBarLabels.ts
index 8ef54017ec..7c17aba755 100644
--- a/src/main/steps/applicant1/hub-page/progressBarLabels.ts
+++ b/src/main/steps/applicant1/hub-page/progressBarLabels.ts
@@ -2,44 +2,44 @@ import { StateSequence } from '../../state-sequence';
const en = (isDivorce: boolean) => ({
submitted: 'Submitted',
- weeksToResponse: '4 weeks',
+ courtChecks: 'Court checks',
response: 'Response',
- weeksToConditionalOrder: '20 weeks',
conditionalOrder: 'Conditional order',
- weeksToFinalOrder: '6 weeks',
finalOrder: `Final order (${isDivorce ? 'Divorced' : 'Civil partnership ended'})`,
});
const enArialLabels = {
submitted:
- 'A progress bar showing the application has been submitted. The next steps are receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ 'A progress bar showing the application has been submitted. The next steps are court checks, receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ courtChecks:
+ 'A progress bar showing the application has been submitted and court checks completed. The next steps are receiving a response, a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
response:
- 'A progress bar showing the application has been submitted and the response has been received. The next steps show a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
+ 'A progress bar showing the application has been submitted, court checks completed and the response has been received. The next steps show a conditional order being granted and a final order being granted, which is the last stage in the process. The next steps are not complete yet.',
conditionalOrder:
- 'A progress bar showing the application has been submitted, the response has been received and a conditional order has been granted. The next step shows a final order being granted, which is the final stage in the process. This step is not complete yet.',
+ 'A progress bar showing the application has been submitted, court checks completed, the response has been received and a conditional order has been granted. The next step shows a final order being granted, which is the final stage in the process. This step is not complete yet.',
finalOrder:
- 'A progress bar showing the application has been submitted, the response has been received, a conditional order has been granted and a final order has been granted. All steps are now complete.',
+ 'A progress bar showing the application has been submitted, court checks completed, the response has been received, a conditional order has been granted and a final order has been granted. All steps are now complete.',
};
const cy: typeof en = (isDivorce: boolean) => ({
submitted: "Wedi'i gyflwyno",
- weeksToResponse: '2 wythnos',
+ courtChecks: 'Gwiriadau llys',
response: 'Ymateb',
- weeksToConditionalOrder: '20 wythnos',
conditionalOrder: 'Gorchymyn amodol',
- weeksToFinalOrder: '6 wythnos',
finalOrder: `Gorchymyn terfynol (${isDivorce ? 'Wedi ysgaru' : 'Partneriaeth sifil wedi dod i ben'})`,
});
const cyArialLabels: typeof enArialLabels = {
submitted:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno. Y camau nesaf yw gwiriadau’r llys, cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
+ courtChecks:
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno a bod gwiriadau’r llys wedi’u cwblhau. Y camau nesaf yw cael ymateb, gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
response:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno a bod yr ymateb wedi dod i law. Mae’r camau nesaf yn dangos gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf yn y broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, gwiriadau’r llys wedi’u cwblhau a bod yr ymateb wedi dod i law. Mae’r camau nesaf yn dangos gorchymyn amodol yn cael ei gymeradwyo a gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf yn y broses. Nid yw’r camau nesaf wedi’u cwblhau eto.',
conditionalOrder:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, mae’r ymateb wedi dod i law, ac mae gorchymyn amodol wedi’i gymeradwyo. Mae’r cam nesaf yn dangos y gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw cam hwn wedi’i gwblhau eto.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, gwiriadau’r llys wedi’u cwblhau, mae’r ymateb wedi dod i law, ac mae gorchymyn amodol wedi’i gymeradwyo. Mae’r cam nesaf yn dangos y gorchymyn terfynol yn cael ei gymeradwyo, sef y cam olaf o’r broses. Nid yw cam hwn wedi’i gwblhau eto.',
finalOrder:
- 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, mae’r ymateb wedi dod i law, mae gorchymyn amodol wedi’i gymeradwyo ac mae gorchymyn terfynol wedi’i gymeradwyo. Mae’r holl gamau wedi’u cwblhau bellach.',
+ 'Bar cynnydd yn dangos bod y cais wedi’i gyflwyno, gwiriadau’r llys wedi’u cwblhau, mae’r ymateb wedi dod i law, mae gorchymyn amodol wedi’i gymeradwyo ac mae gorchymyn terfynol wedi’i gymeradwyo. Mae’r holl gamau wedi’u cwblhau bellach.',
};
export const getProgressBarContent = (
@@ -61,11 +61,14 @@ const getAriaLabel = (displayState: StateSequence, isEnglish: boolean): string =
return ariaLabels.conditionalOrder;
} else if (displayState.isAfter('IssuedToBailiff')) {
return ariaLabels.response;
+ } else if (displayState.isAtOrAfter('AwaitingAos')) {
+ return ariaLabels.courtChecks;
}
return ariaLabels.submitted;
};
interface ProgressBar {
+ courtChecks;
submitted: string;
response: string;
conditionalOrder: string;
diff --git a/src/main/steps/applicant1/hub-page/right-column/content.ts b/src/main/steps/applicant1/hub-page/right-column/content.ts
index 7ca9f25302..3e56664349 100644
--- a/src/main/steps/applicant1/hub-page/right-column/content.ts
+++ b/src/main/steps/applicant1/hub-page/right-column/content.ts
@@ -3,7 +3,15 @@ import { TranslationFn } from '../../../../app/controller/GetController';
import { CommonContent } from '../../../common/common.content';
import { APPLICANT_2, CHECK_CONTACT_DETAILS, RESPONDENT } from '../../../urls';
-const en = ({ isDivorce, isApplicant2, userCase, telephoneNumber, openingTimes }: CommonContent) => ({
+const en = ({
+ isDivorce,
+ isApplicant2,
+ userCase,
+ telephoneNumber,
+ openingTimes,
+ closingTimes,
+ contactWebForm,
+}: CommonContent) => ({
applicationDownload: {
reference: 'Divorce-Application',
link: `/downloads/${isDivorce ? 'divorce-application' : 'application-to-end-civil-partnership'}`,
@@ -82,6 +90,11 @@ const en = ({ isDivorce, isApplicant2, userCase, telephoneNumber, openingTimes }
link: '/downloads/conditional-order-refusal',
text: 'View the conditional order refusal (PDF)',
},
+ finalOrderApplicationDownload: {
+ reference: 'Final-Order-Application',
+ link: '/downloads/final-order-application',
+ text: 'View the final order application (PDF)',
+ },
finalOrderGrantedDocumentDownload: {
reference: 'Final-Order-Granted',
link: '/downloads/final-order-granted',
@@ -95,15 +108,29 @@ const en = ({ isDivorce, isApplicant2, userCase, telephoneNumber, openingTimes }
gettingHelp: 'Getting help',
telephone: {
heading: 'Phone',
- openingTimes: `(${openingTimes})`,
+ openingTimes: `${openingTimes}`,
+ closingTimes: `${closingTimes}`,
number: telephoneNumber,
},
email: 'Email',
post: 'Post',
+ onlineForm: {
+ heading: 'Online form',
+ text: 'Send us a message using our online form',
+ link: `${contactWebForm}`,
+ },
});
// @TODO translations
-const cy: typeof en = ({ isDivorce, isApplicant2, userCase, telephoneNumber, openingTimes }: CommonContent) => ({
+const cy: typeof en = ({
+ isDivorce,
+ isApplicant2,
+ userCase,
+ telephoneNumber,
+ openingTimes,
+ closingTimes,
+ contactWebForm,
+}: CommonContent) => ({
applicationDownload: {
reference: 'Divorce-Application',
link: `/downloads/${isDivorce ? 'divorce-application' : 'application-to-end-civil-partnership'}`,
@@ -199,10 +226,16 @@ const cy: typeof en = ({ isDivorce, isApplicant2, userCase, telephoneNumber, ope
telephone: {
heading: 'Rhif ffôn',
openingTimes: `(${openingTimes})`,
+ closingTimes: `${closingTimes}`,
number: telephoneNumber,
},
email: 'E-bost',
post: "Drwy'r post",
+ onlineForm: {
+ heading: 'Online form',
+ text: 'Anfonwch neges atom drwy ddefnyddio ein ffurflen ar-lein',
+ link: `${contactWebForm}`,
+ },
});
const languages = {
diff --git a/src/main/steps/applicant1/hub-page/right-column/template.njk b/src/main/steps/applicant1/hub-page/right-column/template.njk
index d523b1e6cd..b7bbbb29ac 100644
--- a/src/main/steps/applicant1/hub-page/right-column/template.njk
+++ b/src/main/steps/applicant1/hub-page/right-column/template.njk
@@ -64,8 +64,8 @@ download={{applicationDownload.reference}}>{{applicationDownload.text}}
{{ gettingHelp }}
{{ telephone.heading }}
-
{{ telephone.number }}
{{ telephone.openingTimes }}
-
{{ email }}
-
{{ contactEmail }}
+
{{ telephone.number }}
{{ telephone.openingTimes }}
{{ telephone.closingTimes }}
+
{{ onlineForm.heading }}
+
{{ onlineForm.text }}
{{ post }}
{{ serviceAddressMacro(serviceAddress) }}
diff --git a/src/main/steps/applicant1/hub-page/sole/content.ts b/src/main/steps/applicant1/hub-page/sole/content.ts
index 95a8d1c428..6b7e90e7c0 100644
--- a/src/main/steps/applicant1/hub-page/sole/content.ts
+++ b/src/main/steps/applicant1/hub-page/sole/content.ts
@@ -3,31 +3,40 @@ import dayjs from 'dayjs';
import { getFormattedDate } from '../../../../app/case/answers/formatDate';
import { Checkbox } from '../../../../app/case/case';
-import { AlternativeServiceType, State, YesOrNo } from '../../../../app/case/definition';
+import {
+ AlternativeServiceType,
+ Applicant2Represented,
+ DocumentType,
+ State,
+ YesOrNo,
+} from '../../../../app/case/definition';
import { TranslationFn } from '../../../../app/controller/GetController';
import { SupportedLanguages } from '../../../../modules/i18n';
+import { isCountryUk } from '../../../applicant1Sequence';
import type { CommonContent } from '../../../common/common.content';
import { currentStateFn } from '../../../state-sequence';
import { FINALISING_YOUR_APPLICATION, HOW_YOU_CAN_PROCEED } from '../../../urls';
import { getSoleHubTemplate } from './soleTemplateSelector';
-const en = ({ isDivorce, partner, userCase }: CommonContent, alternativeServiceType: AlternativeServiceType) => ({
+const en = (
+ { isDivorce, partner, userCase, telephoneNumber, referenceNumber, isJointApplication }: CommonContent,
+ alternativeServiceType: AlternativeServiceType
+) => ({
aosAwaitingOrDrafted: {
line1: `Your application ${
- isDivorce ? 'for divorce' : 'to end your civil partnership'
- } has been submitted and checked by court staff. It's been ‘served’ (sent) to you and your ${partner}${
- userCase.applicant2EmailAddress
- ? ' by email'
- : userCase.applicant1KnowsApplicant2Address === YesOrNo.YES
- ? ' by post'
- : ''
- }.`,
- line2: `Your ${partner} should respond to the ${
- isDivorce ? 'divorce application' : 'application to end your civil partnership'
- } by ${getFormattedDate(userCase.dueDate)}.`,
- line3:
- 'You will be notified by email when they have responded. Or told what you can do next if they do not respond.',
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES ? 'and help with fees reference number ' : ''
+ } will be checked by court staff. You will receive an email notification by ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day')
+ )} confirming whether it has been accepted. Check your junk or spam email folder.`,
+ line2: `Your ${partner} will then be sent a copy of the application. They will be asked to check the information and respond. If they do not respond then you will be told what you can do next to progress the application.`,
+ line3: `If you want to ‘serve’ (send) the documents to your ${partner} yourself then phone ${telephoneNumber} to request it. Otherwise the court will do it.`,
+ line4: `If you want the court to serve (send) the application to be served by post instead of by email, then phone ${telephoneNumber}.`,
+ line5: `The address you have provided for your ${partner} is outside of England and Wales. That means you are responsible for ‘serving’ (sending) the court documents, which notify your ${partner} about ${
+ isDivorce ? 'the divorce' : 'ending the civil partnership'
+ }`,
+ line6: `You will receive the documents that you need to send to your ${partner} by email and letter, after the application has been checked.`,
+ line7: `Your ${partner}’s solicitor will be contacted by the court, and asked to confirm they are representing them. They will be sent a copy of the application and asked to respond.`,
},
aosDue: {
line1: `Your ${partner} should have responded to your ${
@@ -172,6 +181,7 @@ const en = ({ isDivorce, partner, userCase }: CommonContent, alternativeServiceT
? 'You will receive an email confirming whether it has been granted once a Judge has made a decision.'
: 'You should receive an email within 2 working days, confirming whether the final order has been granted.',
},
+ finalOrderComplete: {},
awaitingServiceConsiderationOrBailiffReferral: {
line1:
'Your application has been received and will be reviewed by a judge. You will receive an email telling you whether your application has been successful.',
@@ -228,32 +238,87 @@ const en = ({ isDivorce, partner, userCase }: CommonContent, alternativeServiceT
line1:
"Your application is with the court and will be referred to a judge to consider your request. You should hear back from the court about the judge's decision.",
},
+ sendDocumentLine1: 'Your application will not be processed until you have done the following:',
+ sendDocumentHeading: 'Send your documents to the court',
+ line2: 'You need to send the following documents to the court because you did not upload them earlier:',
+ documents: {
+ [DocumentType.MARRIAGE_CERTIFICATE]:
+ userCase.inTheUk === YesOrNo.NO
+ ? `Your original foreign ${isDivorce ? 'marriage' : 'civil partnership'} certificate`
+ : `Your original ${isDivorce ? 'marriage' : 'civil partnership'} certificate or a certified copy`,
+ [DocumentType.MARRIAGE_CERTIFICATE_TRANSLATION]: `A certified translation of your foreign ${
+ isDivorce ? 'marriage' : 'civil partnership'
+ } certificate`,
+ [DocumentType.NAME_CHANGE_EVIDENCE]:
+ 'Proof that you changed your name. For example, deed poll or statutory declaration.',
+ },
+ documentsByOnlineForm: 'Sending documents using our online form',
+ documentsByOnlineFormSteps: {
+ line1: 'You can send photographs or scans of your documents to us by',
+ line2: 'uploading them using our online form.',
+ line3:
+ 'Make sure you follow the instructions on how to upload your documents carefully or they could be rejected, resulting in further delays.',
+ },
+ documentsByPost: 'Sending your documents by post',
+ documentsByPostSteps: {
+ step1: `Write your reference number on each document: ${referenceNumber}`,
+ step2: 'Post the original documents to:',
+ },
+ documentsByPostMoreDetails:
+ 'Make sure you also include in your response a return address. Any cherished documents you send, such as marriage certificates, birth certificates, passports or deed polls will be returned to you. Other documents will not be returned.',
+
+ subHeading3: `Apply to serve the ${isDivorce ? 'divorce' : 'civil partnership'} papers another way`,
+ line3: {
+ p1: `You need to apply to serve the ${
+ isDivorce ? 'divorce' : 'ending your civil partnership'
+ } papers to your ${partner} another way. This is because you did not provide their email and postal address. You could apply to serve them by email only, text message or social media.`,
+ p2: 'You will need to fill out a separate paper D11 form and send it to the court. The form can be used to make different applications so only fill out the relevant sections.',
+ },
+ line4: {
+ part1: `Apply to serve the ${isDivorce ? 'divorce' : 'civil partnership'} papers another way`,
+ link: config.get('govukUrls.d11Form'),
+ },
+ subHeading4: 'What happens next',
+ line5: `Your${isJointApplication ? ' joint' : ''} application${
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES &&
+ (!isJointApplication || userCase.applicant2AlreadyAppliedForHelpPaying === YesOrNo.YES)
+ ? ' and Help With Fees reference number'
+ : ''
+ } will be checked by court staff. You will receive an email notification by ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day')
+ )} confirming whether it has been accepted. Check your junk or spam email folder.`,
+ line6: `Your ${partner} will then be sent a copy of the application. They will be asked to check the information and respond. If they do not respond then you will be told what you can do next to progress the application.`,
+ line7: `Your ${partner}’s solicitor will be contacted by the court, and asked to confirm they are representing them. They will be sent a copy of the application and asked to respond.`,
+ line8: `If you want to ‘serve’ (send) the documents to your ${partner} yourself then phone ${telephoneNumber} to request it. Otherwise the court will do it.`,
+ line9: `If you want the court to serve (send) the application by post instead of by email, then phone ${telephoneNumber}.`,
+ line10: `The address you have provided for your ${partner} is outside of England and Wales. That means you are responsible for ‘serving’ (sending) the court documents, which notify your ${partner} about ${
+ isDivorce ? 'the divorce' : 'ending the civil partnership'
+ }.`,
+ line11: `You will receive the documents that you need to send to your ${partner} by email and letter, after the application has been checked.`,
subHeading1:
- userCase.state === State.AwaitingAmendedApplication
+ userCase.state === State.AwaitingAmendedApplication || userCase.state === State.AwaitingDocuments
? 'Latest information'
: `${userCase.state === State.AwaitingClarification ? 'What you need to do now' : 'Latest update'}`,
});
// @TODO translations
const cy: typeof en = (
- { isDivorce, partner, userCase }: CommonContent,
+ { isDivorce, partner, userCase, telephoneNumber, referenceNumber, isJointApplication }: CommonContent,
alternativeServiceType: AlternativeServiceType
) => ({
aosAwaitingOrDrafted: {
- line1: `Mae eich cais ${
- isDivorce ? 'am ysgariad' : "i ddod â'ch partneriaeth sifil i ben"
- } wedi'i gyflwyno a'i wirio gan staff y llys. Mae wedi cael ei ‘gyflwyno’ (ei anfon) at eich ${partner}${
- userCase.applicant2EmailAddress
- ? ' drwy e-bost'
- : userCase.applicant1KnowsApplicant2Address === YesOrNo.YES
- ? " drwy'r post"
- : ''
- }.`,
- line2: `Dylai eich ${partner} ymateb i'r ${
- isDivorce ? 'cais am ysgariad' : "cais i ddod â'ch partner sifil i ben"
- } erbyn ${getFormattedDate(userCase.dueDate, SupportedLanguages.Cy)}.`,
- line3:
- "Byddwch yn cael eich hysbysu drwy e-bost pan fyddant wedi ymateb. Neu cewch wybod beth i’w wneud nesaf os nad ydyn nhw'n ymateb.",
+ line1: `Bydd staff y llys yn gwirio eich cais ${
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES ? 'a’ch cyfeirnod Help i Dalu Ffioedd' : ''
+ }. Fe gewch neges e-bost erbyn ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day'),
+ SupportedLanguages.Cy
+ )} yn cadarnhau p’un a yw wedi’i dderbyn. Gwiriwch eich ffolder ‘junk’ neu ‘spam’.`,
+ line2: `Yna fe anfonir copi o’r cais at eich ${partner}. Fe ofynnir iddynt wirio’r wybodaeth ac ymateb. Os na fyddant yn ymateb, fe ddywedir wrthych beth allwch ei wneud nesaf i symud y cais yn ei flaen.`,
+ line3: `Os ydych eisiau ‘cyflwyno’ (anfon) y dogfennau at eich ${partner} eich hun, yna ffoniwch ${telephoneNumber} i ofyn am gael gwneud hynny. Fel arall, bydd y llys yn gwneud hyn ar eich rhan.`,
+ line4: `Os ydych eisiau i’r llys gyflwyno (anfon) y cais i’w gyflwyno drwy’r post yn hytrach na drwy e-bost, ffoniwch ${telephoneNumber}.`,
+ line5: `Mae’r cyfeiriad rydych wedi’i ddarparu ar gyfer eich ${partner} y tu allan i Gymru a Lloegr. Mae hynny’n golygu mai chi sy’n gyfrifol am ‘gyflwyno’ (anfon) dogfennau’r llys, sy’n hysbysu’ch ${partner} am yr ysgariad.`,
+ line6: `Fe gewch y dogfennau y bydd angen i chi eu hanfon at eich ${partner} drwy e-bost a llythyr, ar ôl i’r cais gael ei wirio.`,
+ line7: `Bydd y llys yn cysylltu â chyfreithiwr eich ${partner} ac yn gofyn iddynt gadarnhau eu bod yn eu cynrychioli. Fe anfonir copi o’r cais atynt ac fe ofynnir iddynt ymateb.`,
},
aosDue: {
line1: `Dylai eich ${partner} fod wedi ymateb i'ch ${
@@ -484,6 +549,63 @@ const cy: typeof en = (
line1:
'Mae eich cais wedi cyrraedd y llys a bydd yn cael ei gyfeirio at farnwr i ystyried eich cais. Dylech glywed gan\n y llys am benderfyniad y barnwr.',
},
+ sendDocumentLine1: 'Ni fydd eich cais yn cael ei brosesu hyd nes y byddwch wedi gwneud y canlynol:',
+ sendDocumentHeading: 'Anfon eich dogfennau i’r llys',
+ line2: 'Mae angen i chi anfon y dogfennau canlynol i’r llys gan na wnaethoch eu llwytho yn gynharach:',
+ documents: {
+ [DocumentType.MARRIAGE_CERTIFICATE]:
+ userCase.inTheUk === YesOrNo.NO
+ ? `Eich tystysgrif ${isDivorce ? 'priodas' : 'partneriaeth sifil'} dramor wreiddiol`
+ : `Eich tystysgrif ${isDivorce ? 'priodas' : 'partneriaeth sifil'} wreiddiol neu gopi ardystiedig ohoni`,
+ [DocumentType.MARRIAGE_CERTIFICATE_TRANSLATION]: `Cyfieithiad ardystiedig o’ch tystysgrif ${
+ isDivorce ? 'priodas' : 'partneriaeth sifil'
+ } dramor`,
+ [DocumentType.NAME_CHANGE_EVIDENCE]:
+ 'Prawf eich bod wedi newid eich enw. Er enghraifft, gweithred newid enw neu ddatganiad statudol.',
+ },
+ documentsByOnlineForm: 'Anfon dogfennau drwy ddefnyddio ein ffurflen ar-lein',
+ documentsByOnlineFormSteps: {
+ line1: 'Gallwch anfon lluniau neu sganiau o’ch dogfennau atom trwy ',
+ line2: 'llwytho gan ddefnyddio ein ffurflen ar-lein.',
+ line3:
+ "Gwnewch yn siŵr eich bod yn dilyn y cyfarwyddiadau ar sut i lwytho eich dogfennau'n ofalus neu gellid eu gwrthod, gan arwain at oedi pellach.",
+ },
+ documentsByPost: 'Anfon eich dogfennau drwy’r post',
+ documentsByPostSteps: {
+ step1: `Ysgrifennwch eich cyfeirnod ar bob dogfen: ${referenceNumber}`,
+ step2: 'Postiwch y dogfennau gwreiddiol i:',
+ },
+ documentsByPostMoreDetails:
+ 'Gwnewch yn siŵr eich bod hefyd yn cynnwys cyfeiriad dychwelyd yn eich ymateb. Bydd unrhyw ddogfennau y byddwch yn eu hanfon, fel tystysgrifau priodas, tystysgrifau geni, pasbortau neu weithred newid enw yn cael eu dychwelyd atoch. Ni fydd y dogfennau eraill yn cael eu dychwelyd.',
+ subHeading3: `Gwneud cais i gyflwyno papurau’r ${isDivorce ? 'ysgariad' : 'bartneriaeth sifil'} mewn ffordd arall`,
+ line3: {
+ p1: `Mae angen i chi wneud cais i gyflwyno papurau’r ${
+ isDivorce ? 'ysgariad' : 'bartneriaeth sifil'
+ } ar eich ${partner} mewn ffordd arall. Y rheswm dros hyn yw oherwydd ni wnaethoch ddarparu eu cyfeiriad e-bost neu gyfeiriad post. Gallwch wneud cais i’w cyflwyno arnynt drwy e-bost yn unig, drwy neges testun neu gyfryngau cymdeithasol.`,
+ p2: 'Bydd angen i chi lenwi ffurflen bapur D11 a’i hanfon i’r llys. Gallwch ddefnyddio’r ffurflen i wneud ceisiadau gwahanol, felly dim ond yr adrannau perthnasol sydd angen i chi eu llenwi.',
+ },
+ line4: {
+ part1: `Gwneud cais i gyflwyno papurau’r ${isDivorce ? 'ysgariad' : 'bartneriaeth sifil'} mewn ffordd arall`,
+ link: config.get('govukUrls.d11Form'),
+ },
+ subHeading4: 'Beth fydd yn digwydd nesaf',
+ line5: `Bydd staff y llys yn gwirio eich cais ${isJointApplication ? ' ar y cyd' : ''}${
+ userCase.applicant1AlreadyAppliedForHelpPaying === YesOrNo.YES &&
+ (!isJointApplication || userCase.applicant2AlreadyAppliedForHelpPaying === YesOrNo.YES)
+ ? ' a’ch cyfeirnod Help i Dalu Ffioedd'
+ : ''
+ }. Fe gewch neges e-bost erbyn ${getFormattedDate(
+ dayjs(userCase.dateSubmitted).add(config.get('dates.applicationSubmittedOffsetDays'), 'day'),
+ SupportedLanguages.Cy
+ )} yn cadarnhau p’un a yw wedi’i dderbyn. Gwiriwch eich ffolder ‘junk’ neu ‘spam’.`,
+ line6: `Yna fe anfonir copi o’r cais at eich ${partner}. Os na fyddant yn ymateb, fe ddywedir wrthych beth allwch ei wneud nesaf i symud y cais yn ei flaen.`,
+ line7: `Bydd y llys yn cysylltu â chyfreithiwr eich ${partner} ac yn gofyn iddo gadarnhau ei fod yn cynrychioli eich ${partner}. Fe anfonir copi o’r cais ato ac fe ofynnir iddo ymateb.`,
+ line8: `Os ydych eisiau ‘cyflwyno’ (anfon) y dogfennau ar eich ${partner} eich hun, yna ffoniwch ${telephoneNumber}. Fel arall, bydd y llys yn gwneud hyn ar eich rhan.`,
+ line9: `Os ydych eisiau i’r llys gyflwyno (anfon) y cais drwy’r post yn hytrach na drwy e-bost, ffoniwch ${telephoneNumber}.`,
+ line10: `Mae’r cyfeiriad rydych wedi’i ddarparu ar gyfer eich ${partner} y tu allan i Gymru a Lloegr. Mae hynny’n golygu eich bod chi’n gyfrifol am ‘gyflwyno’ (anfon) dogfennau’r llys, sydd yn hysbysu eich ${partner} am ${
+ isDivorce ? 'yr ysgariad' : 'ddiweddu’r bartneriaeth sifil'
+ }.`,
+ line11: `Fe gewch y dogfennau y bydd angen i chi eu hanfon at eich ${partner} drwy e-bost a drwy’r post, ar ôl i’r cais gael ei wirio.`,
});
const languages = {
@@ -517,7 +639,12 @@ export const generateContent: TranslationFn = content => {
const isSwitchToSoleCoApp = userCase.switchedToSoleCo === YesOrNo.YES;
const hasApplicant1AppliedForFinalOrderFirst = userCase.applicant1AppliedForFinalOrderFirst === YesOrNo.YES;
const isFinalOrderCompleteState = userCase.state === State.FinalOrderComplete;
-
+ const cannotUploadDocuments = new Set([
+ ...(userCase.applicant1CannotUploadDocuments || []),
+ ...(userCase.applicant2CannotUploadDocuments || []),
+ ]);
+ const isRespondentOverseas = !isCountryUk(userCase.applicant2AddressCountry);
+ const isRespondentRepresented = userCase.applicant1IsApplicant2Represented === Applicant2Represented.YES;
return {
...languages[language](content, alternativeServiceType),
displayState,
@@ -530,5 +657,8 @@ export const generateContent: TranslationFn = content => {
isSwitchToSoleCoApp,
hasApplicant1AppliedForFinalOrderFirst,
isFinalOrderCompleteState,
+ cannotUploadDocuments,
+ isRespondentOverseas,
+ isRespondentRepresented,
};
};
diff --git a/src/main/steps/applicant1/hub-page/sole/latest-update-content/aos-awaiting-or-drafted.njk b/src/main/steps/applicant1/hub-page/sole/latest-update-content/aos-awaiting-or-drafted.njk
index a9753bfc32..294dd29e85 100644
--- a/src/main/steps/applicant1/hub-page/sole/latest-update-content/aos-awaiting-or-drafted.njk
+++ b/src/main/steps/applicant1/hub-page/sole/latest-update-content/aos-awaiting-or-drafted.njk
@@ -1,3 +1,16 @@
-{% for property, line in aosAwaitingOrDrafted %}
-
{{ line }}
-{% endfor %}
+
{{ aosAwaitingOrDrafted.line1 }}
+{% if isRespondentOverseas %}
+ {% if isRespondentRepresented %}
+
{{ aosAwaitingOrDrafted.line7 }}
+ {% else %}
+
{{ aosAwaitingOrDrafted.line2 }}
+ {% endif %}
+
{{ aosAwaitingOrDrafted.line5 }}
+
{{ aosAwaitingOrDrafted.line6 }}
+{% elif isRespondentRepresented %}
+
{{ aosAwaitingOrDrafted.line7 }}
+{% else %}
+
{{ aosAwaitingOrDrafted.line2 }}
+
{{ aosAwaitingOrDrafted.line3 }}
+
{{ aosAwaitingOrDrafted.line4 }}
+{% endif %}
diff --git a/src/main/steps/applicant1/hub-page/sole/latest-update-content/awaiting-documents.njk b/src/main/steps/applicant1/hub-page/sole/latest-update-content/awaiting-documents.njk
new file mode 100644
index 0000000000..451d28454b
--- /dev/null
+++ b/src/main/steps/applicant1/hub-page/sole/latest-update-content/awaiting-documents.njk
@@ -0,0 +1,62 @@
+{% from "common/macros/service-address.njk" import serviceAddressMacro %}
+ {% if userCase.applicant1CannotUpload or userCase.applicant2CannotUpload or userCase.iWantToHavePapersServedAnotherWay %}
+
{{ sendDocumentLine1 }}
+ {% if userCase.applicant1CannotUpload or userCase.applicant2CannotUpload %}
+
{{ sendDocumentHeading }}
+
{{ line2 }}
+
+ {% for document in cannotUploadDocuments %}
+ - {{ documents[document] }}
+ {% endfor %}
+
+
+ {% set sendingDocumentsByOnlineForm %}
+
{{ documentsByOnlineFormSteps.line1 }} {{ documentsByOnlineFormSteps.line2}}
+
{{ documentsByOnlineFormSteps.line3 }}
+ {% endset %}
+ {{ govukDetails({
+ summaryText: documentsByOnlineForm,
+ html: sendingDocumentsByOnlineForm
+ }) }}
+
+ {% set sendingDocumentsByPost %}
+
+ {% for property, step in documentsByPostSteps %}
+ - {{ step }}
+ {% endfor %}
+
+ {{ serviceAddressMacro(serviceAddress) }}
+
{{ documentsByPostMoreDetails }}
+ {% endset %}
+ {{ govukDetails({
+ summaryText: documentsByPost,
+ html: sendingDocumentsByPost
+ }) }}
+ {% endif %}
+ {% if userCase.iWantToHavePapersServedAnotherWay %}
+
{{ subHeading3 }}
+
{{ line3.p1 }}
+
{{ line3.p2 }}
+
{{ line4.part1 }}
+ {% endif %}
+ {% else %}
+
{{ subHeading4 }}
+ {% if not userCase.iWantToHavePapersServedAnotherWay %}
+
{{ line5 }}
+ {% endif %}
+ {% if not isJointApplication %}
+ {% if hasASolicitorContactForPartner %}
+
{{ line7 }}
+ {% elif not isRespondentRepresented %}
+
{{ line6 }}
+ {% endif %}
+ {% if applicationServedAnotherWay %}
+
{{ line8 }}
+
{{ line9 }}
+ {% endif %}
+ {% if isRespondentOverseas %}
+
{{ line10 }}
+
{{ line11 }}
+ {% endif %}
+ {% endif %}
+ {% endif %}
diff --git a/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.test.ts b/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.test.ts
index d795ade877..226fa9ee6b 100644
--- a/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.test.ts
+++ b/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.test.ts
@@ -344,4 +344,26 @@ describe('SoleTemplateSelector test', () => {
const soleTemplate = getSoleHubTemplate(theState, userCase, false, false);
expect(soleTemplate).toBe(HubTemplate.PendingHearingOutcome);
});
+
+ test('should show /awaiting-documents.njk for state AwaitingDocuments', () => {
+ const theState = displayState.at(State.AwaitingDocuments);
+ const soleTemplate = getSoleHubTemplate(theState, userCase, false, false);
+ expect(soleTemplate).toBe(HubTemplate.AwaitingDocuments);
+ });
+
+ test('should show /awaiting-documents.njk for state AwaitingHWFDecision and reason is "cannot upload documents"', () => {
+ const userCaseWithApplicant1CannotUploadDocuments = {
+ ...userCase,
+ applicant1CannotUpload: Checkbox.Checked,
+ };
+ const theState = displayState.at(State.AwaitingHWFDecision);
+ const soleTemplate = getSoleHubTemplate(theState, userCaseWithApplicant1CannotUploadDocuments, false, false);
+ expect(soleTemplate).toBe(HubTemplate.AwaitingDocuments);
+ });
+
+ test('should show /aos-awaiting-or-drafted.njk for state AwaitingHWFDecision', () => {
+ const theState = displayState.at(State.AwaitingHWFDecision);
+ const soleTemplate = getSoleHubTemplate(theState, userCase, false, false);
+ expect(soleTemplate).toBe(HubTemplate.AosAwaitingOrDrafted);
+ });
});
diff --git a/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.ts b/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.ts
index 6f337af03b..316b18fc5d 100644
--- a/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.ts
+++ b/src/main/steps/applicant1/hub-page/sole/soleTemplateSelector.ts
@@ -1,6 +1,6 @@
import dayjs from 'dayjs';
-import { CaseWithId } from '../../../../app/case/case';
+import { CaseWithId, Checkbox } from '../../../../app/case/case';
import { ServiceApplicationRefusalReason, State, YesOrNo } from '../../../../app/case/definition';
import { HubTemplate } from '../../../common/hubTemplates';
import { StateSequence } from '../../../state-sequence';
@@ -100,6 +100,12 @@ export const getSoleHubTemplate = (
case State.PendingHearingOutcome:
case State.PendingHearingDate:
return HubTemplate.PendingHearingOutcome;
+ case State.AwaitingHWFDecision:
+ return userCase.applicant1CannotUpload === Checkbox.Checked
+ ? HubTemplate.AwaitingDocuments
+ : HubTemplate.AosAwaitingOrDrafted;
+ case State.AwaitingDocuments:
+ return HubTemplate.AwaitingDocuments;
default: {
if (displayState.isAfter('AosDrafted') && displayState.isBefore('Holding')) {
return HubTemplate.AoSDue;
diff --git a/src/main/steps/applicant1/hub-page/template.njk b/src/main/steps/applicant1/hub-page/template.njk
index e3ad29c269..46ffb3e2df 100644
--- a/src/main/steps/applicant1/hub-page/template.njk
+++ b/src/main/steps/applicant1/hub-page/template.njk
@@ -13,10 +13,9 @@
{{ referenceNumber }}
- {% include "./progress-bar.njk" %}
+ {% include "../../common/progress-bar.njk" %}