Skip to content

Commit 24eb0c1

Browse files
authored
APB-10713 fix task list links for incorporated (#207)
1 parent b48d88c commit 24eb0c1

File tree

3 files changed

+17
-25
lines changed

3 files changed

+17
-25
lines changed

app/uk/gov/hmrc/agentregistration/shared/AgentApplication.scala

Lines changed: 3 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,9 @@ sealed trait AgentApplication:
103103

104104
def getAmlsDetails: AmlsDetails = amlsDetails.getOrElse(expectedDataNotDefinedError("amlsDetails"))
105105

106-
def getNumberOfIndividuals: NumberOfIndividuals
106+
def getNumberOfIndividuals: NumberOfIndividuals = numberOfIndividuals.getOrElse(
107+
expectedDataNotDefinedError("numberOfIndividuals")
108+
)
107109

108110
private def as[T <: AgentApplication](using ct: reflect.ClassTag[T]): Option[T] =
109111
this match
@@ -148,9 +150,6 @@ extends AgentApplication:
148150
override val businessType: BusinessType.SoleTrader.type = BusinessType.SoleTrader
149151
def getBusinessDetails: BusinessDetailsSoleTrader = businessDetails.getOrElse(expectedDataNotDefinedError("businessDetails"))
150152
override def numberOfIndividuals: Option[NumberOfRequiredKeyIndividuals] = Some(AgentApplicationSoleTrader.numberOfRequiredKeyIndividuals)
151-
override def getNumberOfIndividuals: NumberOfRequiredKeyIndividuals = numberOfIndividuals.getOrElse(
152-
expectedDataNotDefinedError("numberOfRequiredKeyIndividuals")
153-
)
154153

155154
object AgentApplicationSoleTrader:
156155
val numberOfRequiredKeyIndividuals: NumberOfRequiredKeyIndividuals = FiveOrLess(1)
@@ -180,9 +179,6 @@ final case class AgentApplicationLlp(
180179
extends AgentApplication:
181180

182181
override val businessType: BusinessType.Partnership.LimitedLiabilityPartnership.type = BusinessType.Partnership.LimitedLiabilityPartnership
183-
override def getNumberOfIndividuals: NumberOfCompaniesHouseOfficers = numberOfIndividuals.getOrElse(
184-
expectedDataNotDefinedError("numberOfRequiredKeyIndividuals")
185-
)
186182

187183
def getBusinessDetails: BusinessDetailsLlp = businessDetails.getOrThrowExpectedDataMissing("businessDetails")
188184
def getCrn: Crn = getBusinessDetails.companyProfile.companyNumber
@@ -212,9 +208,6 @@ final case class AgentApplicationLimitedCompany(
212208
extends AgentApplication:
213209

214210
override val businessType: BusinessType.LimitedCompany.type = BusinessType.LimitedCompany
215-
override def getNumberOfIndividuals: NumberOfCompaniesHouseOfficers = numberOfIndividuals.getOrElse(
216-
expectedDataNotDefinedError("numberOfRequiredKeyIndividuals")
217-
)
218211

219212
def getBusinessDetails: BusinessDetailsLimitedCompany = businessDetails.getOrThrowExpectedDataMissing("businessDetails")
220213
def getCrn: Crn = getBusinessDetails.companyProfile.companyNumber
@@ -244,10 +237,6 @@ extends AgentApplication:
244237

245238
override val businessType: BusinessType.Partnership.GeneralPartnership.type = BusinessType.Partnership.GeneralPartnership
246239

247-
override def getNumberOfIndividuals: NumberOfRequiredKeyIndividuals = numberOfIndividuals.getOrElse(
248-
expectedDataNotDefinedError("numberOfRequiredKeyIndividuals")
249-
)
250-
251240
def getBusinessDetails: BusinessDetailsGeneralPartnership = businessDetails.getOrElse(expectedDataNotDefinedError("businessDetails"))
252241

253242
/** Application for Limited Partnership. This final case class represents the data entered by a user for registering as a Limited Partnership.
@@ -275,9 +264,6 @@ final case class AgentApplicationLimitedPartnership(
275264
extends AgentApplication:
276265

277266
override val businessType: BusinessType.Partnership.LimitedPartnership.type = BusinessType.Partnership.LimitedPartnership
278-
override def getNumberOfIndividuals: NumberOfCompaniesHouseOfficers = numberOfIndividuals.getOrElse(
279-
expectedDataNotDefinedError("numberOfRequiredKeyIndividuals")
280-
)
281267

282268
def getBusinessDetails: BusinessDetailsPartnership = businessDetails.getOrThrowExpectedDataMissing("businessDetails")
283269
def getCrn: Crn = getBusinessDetails.companyProfile.companyNumber
@@ -305,9 +291,6 @@ final case class AgentApplicationScottishLimitedPartnership(
305291
extends AgentApplication:
306292

307293
override val businessType: BusinessType.Partnership.ScottishLimitedPartnership.type = BusinessType.Partnership.ScottishLimitedPartnership
308-
override def getNumberOfIndividuals: NumberOfCompaniesHouseOfficers = numberOfIndividuals.getOrElse(
309-
expectedDataNotDefinedError("numberOfRequiredKeyIndividuals")
310-
)
311294

312295
def getBusinessDetails: BusinessDetailsPartnership = businessDetails.getOrThrowExpectedDataMissing("businessDetails")
313296
def getCrn: Crn = getBusinessDetails.companyProfile.companyNumber
@@ -335,10 +318,6 @@ extends AgentApplication:
335318

336319
override val businessType: BusinessType.Partnership.ScottishPartnership.type = BusinessType.Partnership.ScottishPartnership
337320

338-
override def getNumberOfIndividuals: NumberOfRequiredKeyIndividuals = numberOfIndividuals.getOrElse(
339-
expectedDataNotDefinedError("numberOfRequiredKeyIndividuals")
340-
)
341-
342321
def getBusinessDetails: BusinessDetailsScottishPartnership = businessDetails.getOrThrowExpectedDataMissing("businessDetails")
343322

344323
object AgentApplication:

app/uk/gov/hmrc/agentregistration/shared/lists/NumberOfIndividuals.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ extends NumberOfIndividuals:
3232

3333
def isValid: Boolean
3434
def totalListSize: Int
35+
def numberOfIndividuals: Int
3536

3637
/** When there less or equal 5, the Applicant has to declare the exact number of all key individuals (partners, directors, owners, etc) */
3738
final case class FiveOrLess(
@@ -42,6 +43,8 @@ extends NumberOfRequiredKeyIndividuals:
4243
override def isValid: Boolean = numberOfKeyIndividuals <= 5 && numberOfKeyIndividuals >= 1
4344
override def totalListSize: Int = numberOfKeyIndividuals
4445

46+
override def numberOfIndividuals: Int = totalListSize
47+
4548
/** When there are more than 5, the Applicant has to declare how many of those are responsible for tax matters */
4649
final case class SixOrMore(
4750
numberOfKeyIndividualsResponsibleForTaxMatters: Int
@@ -54,6 +57,8 @@ extends NumberOfRequiredKeyIndividuals:
5457

5558
override def totalListSize: Int = numberOfKeyIndividualsResponsibleForTaxMatters + requiredPadding
5659

60+
override def numberOfIndividuals: Int = numberOfKeyIndividualsResponsibleForTaxMatters
61+
5762
object NumberOfRequiredKeyIndividuals:
5863

5964
def isKeyIndividualListComplete(
@@ -81,6 +86,8 @@ extends NumberOfIndividuals:
8186
def isValid: Boolean
8287
def totalListSize: Int
8388

89+
def numberOfIndividuals: Int
90+
8491
/** When there less or equal 5, the Applicant has to declare the exact number of all key individuals (partners, directors, owners, etc) */
8592
final case class FiveOrLessOfficers(
8693
override val numberOfCompaniesHouseOfficers: Int,
@@ -90,6 +97,7 @@ extends NumberOfCompaniesHouseOfficers:
9097

9198
override def isValid: Boolean = numberOfCompaniesHouseOfficers <= 5 && numberOfCompaniesHouseOfficers >= 1
9299
override def totalListSize: Int = numberOfCompaniesHouseOfficers
100+
override def numberOfIndividuals: Int = totalListSize
93101

94102
/** When there are more than 5, the Applicant has to declare how many of those are responsible for tax matters */
95103
final case class SixOrMoreOfficers(
@@ -104,6 +112,8 @@ extends NumberOfCompaniesHouseOfficers:
104112

105113
def requiredPadding: Int = Math.max(0, 5 - numberOfOfficersResponsibleForTaxMatters)
106114

115+
override def numberOfIndividuals: Int = numberOfOfficersResponsibleForTaxMatters
116+
107117
object NumberOfCompaniesHouseOfficers:
108118

109119
def isOfficersListComplete(

app/uk/gov/hmrc/agentregistrationfrontend/controllers/applicant/TaskListController.scala

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,10 @@ extends FrontendController(mcc, actions):
9292
case a: AgentApplication.IsAgentApplicationForDeclaringNumberOfKeyIndividuals =>
9393
NumberOfIndividuals.isKeyIndividualListComplete(existingList.count(_.isPersonOfControl), a.numberOfIndividuals)
9494
&& otherRelevantIndividualsComplete(existingList)
95-
case _ => true
95+
case a: AgentApplication.IsIncorporated =>
96+
NumberOfIndividuals.isKeyIndividualListComplete(existingList.count(_.isPersonOfControl), a.numberOfIndividuals)
97+
&& otherRelevantIndividualsComplete(existingList)
98+
case _ => false
9699

97100
val listProgressComplete = listDetailsCompleted(existingList) && existingList.forall(_.hasFinished)
98101
// any state other than Precreated indicates the link has been sent; require the list to be non-empty

0 commit comments

Comments
 (0)