diff --git a/app/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJson.scala b/app/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJson.scala index 202c8a1..998b569 100644 --- a/app/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJson.scala +++ b/app/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJson.scala @@ -118,6 +118,7 @@ case class SelfLink( case class AnnualStatementLinksJson( empRefs: Link, + summary: Link, statements: Link, self: Link, next: Link, @@ -125,6 +126,8 @@ case class AnnualStatementLinksJson( ) case class AnnualStatementJson( + taxOfficeNumber: String, + taxOfficeReference: String, taxYear: TaxYear, nonRtiCharges: Seq[NonRtiChargesJson], _embedded: EmbeddedRtiChargesJson, @@ -134,6 +137,8 @@ case class AnnualStatementJson( object AnnualStatementJson { def apply(apiBaseUrl: String, empRef: EmpRef, taxYear: TaxYear, epayeAnnualStatement: EpayeAnnualStatement): AnnualStatementJson = AnnualStatementJson( + taxOfficeNumber = empRef.taxOfficeNumber, + taxOfficeReference = empRef.taxOfficeReference, taxYear = taxYear, _embedded = EmbeddedRtiChargesJson( EarlierYearUpdateJson.extractFrom(epayeAnnualStatement.rti.lineItems), @@ -142,6 +147,7 @@ object AnnualStatementJson { nonRtiCharges = epayeAnnualStatement.nonRti.lineItems.flatMap(NonRtiChargesJson.from(_, taxYear)), _links = AnnualStatementLinksJson( empRefs = Link.empRefsLink, + summary = Link.summaryLink(empRef), statements = Link.statementsLink(empRef), self = Link.annualStatementLink(empRef, taxYear), next = Link.annualStatementLink(empRef, taxYear.next), @@ -150,10 +156,3 @@ object AnnualStatementJson { ) } - -case class AllAnnualStatementLinksJson( - empRefs: Link, - self: Link, - next: Link, - previous: Link -) \ No newline at end of file diff --git a/app/uk/gov/hmrc/epayeapi/models/out/MonthlyStatementJson.scala b/app/uk/gov/hmrc/epayeapi/models/out/MonthlyStatementJson.scala index a3ced3c..dda39cb 100644 --- a/app/uk/gov/hmrc/epayeapi/models/out/MonthlyStatementJson.scala +++ b/app/uk/gov/hmrc/epayeapi/models/out/MonthlyStatementJson.scala @@ -52,6 +52,7 @@ case class MonthlySummaryJson( case class MonthlyStatementLinksJson( empRefs: Link, + summary: Link, statements: Link, annualStatement: Link, self: Link, @@ -117,8 +118,10 @@ object MonthlyStatementLinksJson { MonthlyStatementLinksJson( empRefs = Link.empRefsLink, - statements = + summary = Link.summaryLink(empRef), + statements = + Link.statementsLink(empRef), annualStatement = Link.annualStatementLink(empRef, taxYear), self = diff --git a/app/uk/gov/hmrc/epayeapi/models/out/StatementsJson.scala b/app/uk/gov/hmrc/epayeapi/models/out/StatementsJson.scala index e181fee..5a6ae95 100644 --- a/app/uk/gov/hmrc/epayeapi/models/out/StatementsJson.scala +++ b/app/uk/gov/hmrc/epayeapi/models/out/StatementsJson.scala @@ -21,6 +21,8 @@ import uk.gov.hmrc.domain.EmpRef import uk.gov.hmrc.epayeapi.models.TaxYear case class StatementsJson( + taxOfficeNumber: String, + taxOfficeReference: String, _embedded: Embedded, _links: Links ) @@ -66,6 +68,8 @@ object StatementsJson { ) StatementsJson( + taxOfficeNumber = empRef.taxOfficeNumber, + taxOfficeReference = empRef.taxOfficeReference, _embedded = Embedded(statements), _links = links ) diff --git a/app/uk/gov/hmrc/epayeapi/models/out/SummaryJson.scala b/app/uk/gov/hmrc/epayeapi/models/out/SummaryJson.scala index 9933a4f..89b0c36 100644 --- a/app/uk/gov/hmrc/epayeapi/models/out/SummaryJson.scala +++ b/app/uk/gov/hmrc/epayeapi/models/out/SummaryJson.scala @@ -50,13 +50,15 @@ object SummaryJson { case class SummaryLinks( empRefs: Link, - self: Link + self: Link, + statements: Link ) object SummaryLinks { def apply(empRef: EmpRef): SummaryLinks = SummaryLinks( Link.empRefsLink, - Link.summaryLink(empRef) + Link.summaryLink(empRef), + Link.statementsLink(empRef) ) } diff --git a/resources/public/api/conf/1.0/examples/AnnualStatement.get.json b/resources/public/api/conf/1.0/examples/AnnualStatement.get.json index 2523ad5..ffb5723 100644 --- a/resources/public/api/conf/1.0/examples/AnnualStatement.get.json +++ b/resources/public/api/conf/1.0/examples/AnnualStatement.get.json @@ -1,4 +1,6 @@ { + "taxOfficeNumber": "001", + "taxOfficeReference": "AB00001", "taxYear": { "year": "2016-17", "firstDay": "2016-04-06", @@ -50,6 +52,9 @@ "empRefs": { "href": "/organisations/paye/" }, + "summary": { + "href": "/organisations/paye/001/AB00001" + }, "statements": { "href": "/organisations/paye/001/AB00001/statements" }, diff --git a/resources/public/api/conf/1.0/examples/MonthlyStatement.get.json b/resources/public/api/conf/1.0/examples/MonthlyStatement.get.json index b7581c8..bb7f6d7 100644 --- a/resources/public/api/conf/1.0/examples/MonthlyStatement.get.json +++ b/resources/public/api/conf/1.0/examples/MonthlyStatement.get.json @@ -54,6 +54,9 @@ "empRefs": { "href": "/organisations/paye/" }, + "summary": { + "href": "/organisations/paye/001/AB00001" + }, "statements": { "href": "/organisations/paye/001/AB00001/statements" }, diff --git a/resources/public/api/conf/1.0/examples/Statements.get.json b/resources/public/api/conf/1.0/examples/Statements.get.json index 04105ad..b92d8da 100644 --- a/resources/public/api/conf/1.0/examples/Statements.get.json +++ b/resources/public/api/conf/1.0/examples/Statements.get.json @@ -1,4 +1,6 @@ { + "taxOfficeNumber": "001", + "taxOfficeReference": "AB00001", "_embedded": { "statements": [{ "taxYear": { diff --git a/resources/public/api/conf/1.0/examples/Summary.get.json b/resources/public/api/conf/1.0/examples/Summary.get.json index bc9d3b1..2be16e2 100644 --- a/resources/public/api/conf/1.0/examples/Summary.get.json +++ b/resources/public/api/conf/1.0/examples/Summary.get.json @@ -14,6 +14,9 @@ }, "self": { "href": "/organisations/paye/001/AB00001" + }, + "statements": { + "href": "/organisations/paye/001/AB00001/statements" } } } diff --git a/resources/public/api/conf/1.0/schemas/AnnualStatement.get.schema.json b/resources/public/api/conf/1.0/schemas/AnnualStatement.get.schema.json index 3fc9dc2..eb4acca 100644 --- a/resources/public/api/conf/1.0/schemas/AnnualStatement.get.schema.json +++ b/resources/public/api/conf/1.0/schemas/AnnualStatement.get.schema.json @@ -3,6 +3,12 @@ "type": "object", "description": "Annual Statement for the requested year", "properties": { + "taxOfficeNumber": { + "$ref": "Definitions.schema.json#/definitions/taxOfficeNumber" + }, + "taxOfficeReference": { + "$ref": "Definitions.schema.json#/definitions/taxOfficeReference" + }, "taxYear": { "$ref": "Definitions.schema.json#/definitions/taxYear" }, @@ -17,6 +23,8 @@ } }, "required": [ + "taxOfficeNumber", + "taxOfficeReference", "taxYear", "nonRtiCharges", "_embedded", @@ -132,10 +140,14 @@ "description": "Link to the list of available empRefs", "$ref": "Definitions.schema.json#/definitions/link" }, - "statements": { + "summary": { "description": "Link to the account summary for the given empRef", "$ref": "Definitions.schema.json#/definitions/link" }, + "statements": { + "description": "Link to the account statements for the given empRef", + "$ref": "Definitions.schema.json#/definitions/link" + }, "self": { "$ref": "Definitions.schema.json#/definitions/link" }, @@ -150,6 +162,7 @@ }, "required": [ "empRefs", + "summary", "statements", "self", "next", diff --git a/resources/public/api/conf/1.0/schemas/MonthlyStatement.get.schema.json b/resources/public/api/conf/1.0/schemas/MonthlyStatement.get.schema.json index 1fd5410..585c227 100644 --- a/resources/public/api/conf/1.0/schemas/MonthlyStatement.get.schema.json +++ b/resources/public/api/conf/1.0/schemas/MonthlyStatement.get.schema.json @@ -42,6 +42,7 @@ } }, "writeOffs": { + "description": "Adjustments for charges that have been written-off (cancelled) by HMRC. i.e. the charges have been cleared without payment.", "$ref": "#/definitions/monthlyItems" }, "dueDate": { @@ -95,15 +96,19 @@ "statements": { "$ref": "Definitions.schema.json#/definitions/link" }, + "summary": { + "$ref": "Definitions.schema.json#/definitions/link" + }, "empRefs": { "$ref": "Definitions.schema.json#/definitions/link" } }, "required": [ - "self", - "annualStatement", + "empRefs", + "summary", "statements", - "empRefs" + "annualStatement", + "self" ] } }, diff --git a/resources/public/api/conf/1.0/schemas/Statements.schema.json b/resources/public/api/conf/1.0/schemas/Statements.schema.json index 3aec162..fd61c39 100644 --- a/resources/public/api/conf/1.0/schemas/Statements.schema.json +++ b/resources/public/api/conf/1.0/schemas/Statements.schema.json @@ -3,6 +3,12 @@ "type": "object", "description": "Statements links for the given empRef", "properties": { + "taxOfficeNumber": { + "$ref": "Definitions.schema.json#/definitions/taxOfficeNumber" + }, + "taxOfficeReference": { + "$ref": "Definitions.schema.json#/definitions/taxOfficeReference" + }, "_embedded": { "$ref": "#/definitions/embedded" }, @@ -11,6 +17,8 @@ } }, "required": [ + "taxOfficeNumber", + "taxOfficeReference", "_embedded", "_links" ], diff --git a/resources/public/api/conf/1.0/schemas/Summary.get.schema.json b/resources/public/api/conf/1.0/schemas/Summary.get.schema.json index 0e7d295..fa47964 100644 --- a/resources/public/api/conf/1.0/schemas/Summary.get.schema.json +++ b/resources/public/api/conf/1.0/schemas/Summary.get.schema.json @@ -56,11 +56,16 @@ "empRefs": { "description": "Link to the list of available empRefs", "$ref": "Definitions.schema.json#/definitions/link" + }, + "statements": { + "description": "Link to the account statements for the given empRef", + "$ref": "Definitions.schema.json#/definitions/link" } }, "required": [ + "empRefs", "self", - "empRefs" + "statements" ] } } diff --git a/test/common/Fixtures.scala b/test/common/Fixtures.scala index 50ce65e..5a81104 100644 --- a/test/common/Fixtures.scala +++ b/test/common/Fixtures.scala @@ -142,6 +142,8 @@ object Fixtures { def expectedAnnualStatementJson(empRef: EmpRef): JsValue = Json.parse( s""" |{ + | "taxOfficeNumber": "${empRef.taxOfficeNumber}", + | "taxOfficeReference": "${empRef.taxOfficeReference}", | "taxYear": { | "year": "2017-18", | "firstDay": "2017-04-06", @@ -212,6 +214,9 @@ object Fixtures { | "empRefs": { | "href": "/organisations/paye/" | }, + | "summary": { + | "href": "/organisations/paye/${empRef.taxOfficeNumber}/${empRef.taxOfficeReference}" + | }, | "statements": { | "href": "/organisations/paye/${empRef.taxOfficeNumber}/${empRef.taxOfficeReference}/statements" | }, @@ -232,6 +237,8 @@ object Fixtures { def expectedStatementLinksJson(empRef: EmpRef): JsValue = Json.parse( s""" |{ + | "taxOfficeNumber": "${empRef.taxOfficeNumber}", + | "taxOfficeReference": "${empRef.taxOfficeReference}", | "_embedded": { | "statements": [{ | "taxYear": { diff --git a/test/integration/GetStatementsSpec.scala b/test/integration/GetStatementsSpec.scala index 32d13a0..cf979df 100644 --- a/test/integration/GetStatementsSpec.scala +++ b/test/integration/GetStatementsSpec.scala @@ -49,6 +49,8 @@ class GetStatementsSpec extends IntegrationTestBase { .bodyIsOfJson(Json.parse( s""" |{ + | "taxOfficeNumber": "${empRef.taxOfficeNumber}", + | "taxOfficeReference": "${empRef.taxOfficeReference}", | "_embedded": { | "statements": [{ | "taxYear": { diff --git a/test/integration/GetSummarySpec.scala b/test/integration/GetSummarySpec.scala index 6847bd6..37f442c 100644 --- a/test/integration/GetSummarySpec.scala +++ b/test/integration/GetSummarySpec.scala @@ -64,6 +64,9 @@ class GetSummarySpec | }, | "self": { | "href": "/organisations/paye/${empRef.taxOfficeNumber}/${empRef.taxOfficeReference}" + | }, + | "statements": { + | "href": "/organisations/paye/${empRef.taxOfficeNumber}/${empRef.taxOfficeReference}/statements" | } | } |} diff --git a/test/resources/epaye/monthly-statement/out/2017-3.json b/test/resources/epaye/monthly-statement/out/2017-3.json index 2918f72..1cedb68 100644 --- a/test/resources/epaye/monthly-statement/out/2017-3.json +++ b/test/resources/epaye/monthly-statement/out/2017-3.json @@ -61,9 +61,12 @@ "empRefs": { "href": "/organisations/paye/" }, - "statements": { + "summary": { "href": "/organisations/paye/%{ton}/%{tor}" }, + "statements": { + "href": "/organisations/paye/%{ton}/%{tor}/statements" + }, "annualStatement": { "href": "/organisations/paye/%{ton}/%{tor}/statements/2017-18" }, diff --git a/test/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJsonSpec.scala b/test/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJsonSpec.scala index fa0b20b..b3f6e03 100644 --- a/test/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJsonSpec.scala +++ b/test/uk/gov/hmrc/epayeapi/models/out/AnnualStatementJsonSpec.scala @@ -35,6 +35,7 @@ class AnnualStatementJsonSpec extends WordSpec with Matchers { AnnualStatementJson(apiBaseUrl, empRef, taxYear, emptyEpayeAnnualStatement)._links shouldBe AnnualStatementLinksJson( empRefs = Link.empRefsLink, + summary = Link.summaryLink(empRef), statements = Link.statementsLink(empRef), self = Link.annualStatementLink(empRef, taxYear), next = Link.annualStatementLink(empRef, taxYear.next), diff --git a/test/uk/gov/hmrc/epayeapi/models/out/StatementsJsonSpec.scala b/test/uk/gov/hmrc/epayeapi/models/out/StatementsJsonSpec.scala index 4c375da..5396263 100644 --- a/test/uk/gov/hmrc/epayeapi/models/out/StatementsJsonSpec.scala +++ b/test/uk/gov/hmrc/epayeapi/models/out/StatementsJsonSpec.scala @@ -34,7 +34,8 @@ class StatementsJsonSpec extends WordSpec with Matchers { "StatementsJson.apply" should { "return a result with empty statements when the year of registration is missing" in { - StatementsJson.apply(empRef, None) shouldBe StatementsJson(Embedded(Seq.empty), _links) + StatementsJson.apply(empRef, None) shouldBe + StatementsJson(empRef.taxOfficeNumber, empRef.taxOfficeReference, Embedded(Seq.empty), _links) } "return a result with a statement link for the current tax year" in { val currentTaxYear = TaxYear(LocalDate.now()) @@ -45,7 +46,8 @@ class StatementsJsonSpec extends WordSpec with Matchers { ) val _embedded = Embedded(Seq(currentTaxYearStatement)) - StatementsJson.apply(empRef, Some(currentTaxYear)) shouldBe StatementsJson(_embedded, _links) + StatementsJson.apply(empRef, Some(currentTaxYear)) shouldBe + StatementsJson(empRef.taxOfficeNumber, empRef.taxOfficeReference, _embedded, _links) } "return a result with statement links for 2015, 2016 and 2017" in { val yearOfRegistration = 2015 @@ -61,7 +63,8 @@ class StatementsJsonSpec extends WordSpec with Matchers { val _embedded = Embedded(statements) - StatementsJson.apply(empRef, Some(TaxYear(yearOfRegistration))) shouldBe StatementsJson(_embedded, _links) + StatementsJson.apply(empRef, Some(TaxYear(yearOfRegistration))) shouldBe + StatementsJson(empRef.taxOfficeNumber, empRef.taxOfficeReference, _embedded, _links) } } }