Skip to content

Commit

Permalink
Merge pull request #39 from hmrc/ADR-1362
Browse files Browse the repository at this point in the history
ADR-1362: duty suspended deliveries added to view specific return
  • Loading branch information
msatta authored Oct 25, 2024
2 parents e9455c0 + 2dae368 commit 8a40183
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ case class AdrReturnDetails(
identification: AdrReturnDetailsIdentification,
alcoholDeclared: AdrReturnAlcoholDeclared,
adjustments: AdrReturnAdjustments,
totalDutyDue: AdrReturnTotalDutyDue
totalDutyDue: AdrReturnTotalDutyDue,
netDutySuspension: Option[AdrNetDutySuspension]
)

object AdrReturnDetails {
Expand All @@ -36,7 +37,8 @@ object AdrReturnDetails {
identification = AdrReturnDetailsIdentification.fromReturnDetailsSuccess(returnDetailsSuccess),
alcoholDeclared = AdrReturnAlcoholDeclared.fromReturnDetailsSuccess(returnDetailsSuccess),
adjustments = AdrReturnAdjustments.fromReturnDetailsSuccess(returnDetailsSuccess),
totalDutyDue = AdrReturnTotalDutyDue.fromReturnDetailsSuccess(returnDetailsSuccess)
totalDutyDue = AdrReturnTotalDutyDue.fromReturnDetailsSuccess(returnDetailsSuccess),
netDutySuspension = AdrNetDutySuspension.fromReturnDetailsSuccess(returnDetailsSuccess)
)

implicit val adrReturnDetailsFormat: OFormat[AdrReturnDetails] = Json.format[AdrReturnDetails]
Expand Down Expand Up @@ -203,3 +205,40 @@ object AdrReturnTotalDutyDue {

implicit val adrReturnTotalDutyDueFormat: OFormat[AdrReturnTotalDutyDue] = Json.format[AdrReturnTotalDutyDue]
}

case class AdrNetDutySuspension(
totalLtsBeer: Option[BigDecimal],
totalLtsWine: Option[BigDecimal],
totalLtsCider: Option[BigDecimal],
totalLtsSpirit: Option[BigDecimal],
totalLtsOtherFermented: Option[BigDecimal],
totalLtsPureAlcoholBeer: Option[BigDecimal],
totalLtsPureAlcoholWine: Option[BigDecimal],
totalLtsPureAlcoholCider: Option[BigDecimal],
totalLtsPureAlcoholSpirit: Option[BigDecimal],
totalLtsPureAlcoholOtherFermented: Option[BigDecimal]
)

object AdrNetDutySuspension {
def fromReturnDetailsSuccess(returnDetailsSuccess: GetReturnDetails): Option[AdrNetDutySuspension] =
if (returnDetailsSuccess.netDutySuspension.netDutySuspensionFilled) {
returnDetailsSuccess.netDutySuspension.netDutySuspensionProducts.map(dutySuspension =>
AdrNetDutySuspension(
totalLtsBeer = dutySuspension.totalLtsBeer,
totalLtsWine = dutySuspension.totalLtsWine,
totalLtsCider = dutySuspension.totalLtsCider,
totalLtsSpirit = dutySuspension.totalLtsSpirit,
totalLtsOtherFermented = dutySuspension.totalLtsOtherFermented,
totalLtsPureAlcoholBeer = dutySuspension.totalLtsPureAlcoholBeer,
totalLtsPureAlcoholWine = dutySuspension.totalLtsPureAlcoholWine,
totalLtsPureAlcoholCider = dutySuspension.totalLtsPureAlcoholCider,
totalLtsPureAlcoholSpirit = dutySuspension.totalLtsPureAlcoholSpirit,
totalLtsPureAlcoholOtherFermented = dutySuspension.totalLtsPureAlcoholOtherFermented
)
)
} else {
None
}

implicit val adrNetDutySuspensionFormat: OFormat[AdrNetDutySuspension] = Json.format[AdrNetDutySuspension]
}
35 changes: 32 additions & 3 deletions test-utils/helpers/TestData.scala
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import uk.gov.hmrc.alcoholdutyreturns.models.ApprovalStatus.Approved
import uk.gov.hmrc.alcoholdutyreturns.models.{AlcoholRegimes, ObligationData, ReturnAndUserDetails, ReturnId, SubscriptionSummary, UserAnswers}
import uk.gov.hmrc.alcoholdutyreturns.models.ObligationStatus.{Fulfilled, Open}
import uk.gov.hmrc.alcoholdutyreturns.models.calculation.{CalculateDutyDueByTaxTypeRequest, CalculateDutyDueByTaxTypeRequestItem, CalculatedDutyDueByTaxType, CalculatedDutyDueByTaxTypeItem}
import uk.gov.hmrc.alcoholdutyreturns.models.returns.{AdrAdjustmentItem, AdrAdjustments, AdrAlcoholQuantity, AdrDuty, AdrDutyDeclared, AdrDutyDeclaredItem, AdrDutySuspended, AdrDutySuspendedAlcoholRegime, AdrDutySuspendedProduct, AdrOtherIngredient, AdrRepackagedDraughtAdjustmentItem, AdrReturnAdjustments, AdrReturnAdjustmentsRow, AdrReturnAlcoholDeclared, AdrReturnAlcoholDeclaredRow, AdrReturnCreatedDetails, AdrReturnDetails, AdrReturnDetailsIdentification, AdrReturnSubmission, AdrReturnTotalDutyDue, AdrSpirits, AdrSpiritsGrainsQuantities, AdrSpiritsIngredientsVolumes, AdrSpiritsProduced, AdrSpiritsVolumes, AdrTotals, AdrTypeOfSpirit, AdrUnitOfMeasure, AlcoholProducts, ChargeDetails, Drawback, GetReturnDetails, GetReturnDetailsSuccess, IdDetails, NetDutySuspension, NetDutySuspensionProducts, OtherMaterialsUomType, OverDeclaration, RegularReturnDetails, RepackagedDraught, RepackagedDraughtProduct, ReturnCreate, ReturnCreatedDetails, ReturnCreatedSuccess, ReturnDetails, SpiritsProduced, SpiritsProducedDetails, SpoiltProduct, TotalDutyDue, TotalDutyDuebyTaxType, TypeOfSpiritType, UnderDeclaration}
import uk.gov.hmrc.alcoholdutyreturns.models.returns.{AdrAdjustmentItem, AdrAdjustments, AdrAlcoholQuantity, AdrDuty, AdrDutyDeclared, AdrDutyDeclaredItem, AdrDutySuspended, AdrDutySuspendedAlcoholRegime, AdrDutySuspendedProduct, AdrNetDutySuspension, AdrOtherIngredient, AdrRepackagedDraughtAdjustmentItem, AdrReturnAdjustments, AdrReturnAdjustmentsRow, AdrReturnAlcoholDeclared, AdrReturnAlcoholDeclaredRow, AdrReturnCreatedDetails, AdrReturnDetails, AdrReturnDetailsIdentification, AdrReturnSubmission, AdrReturnTotalDutyDue, AdrSpirits, AdrSpiritsGrainsQuantities, AdrSpiritsIngredientsVolumes, AdrSpiritsProduced, AdrSpiritsVolumes, AdrTotals, AdrTypeOfSpirit, AdrUnitOfMeasure, AlcoholProducts, ChargeDetails, Drawback, GetReturnDetails, GetReturnDetailsSuccess, IdDetails, NetDutySuspension, NetDutySuspensionProducts, OtherMaterialsUomType, OverDeclaration, RegularReturnDetails, RepackagedDraught, RepackagedDraughtProduct, ReturnCreate, ReturnCreatedDetails, ReturnCreatedSuccess, ReturnDetails, SpiritsProduced, SpiritsProducedDetails, SpoiltProduct, TotalDutyDue, TotalDutyDuebyTaxType, TypeOfSpiritType, UnderDeclaration}

import java.time.{Clock, Instant, LocalDate, YearMonth, ZoneId}

Expand Down Expand Up @@ -472,6 +472,20 @@ trait TestData extends ModelGenerators {
),
AdrReturnTotalDutyDue(
totalDue = BigDecimal("61118.51")
),
Some(
AdrNetDutySuspension(
totalLtsBeer = Some(BigDecimal("0.15")),
totalLtsWine = Some(BigDecimal("0.44")),
totalLtsCider = Some(BigDecimal("0.38")),
totalLtsSpirit = Some(BigDecimal("0.02")),
totalLtsOtherFermented = Some(BigDecimal("0.02")),
totalLtsPureAlcoholBeer = Some(BigDecimal("0.4248")),
totalLtsPureAlcoholWine = Some(BigDecimal("0.5965")),
totalLtsPureAlcoholCider = Some(BigDecimal("0.0379")),
totalLtsPureAlcoholSpirit = Some(BigDecimal("0.2492")),
totalLtsPureAlcoholOtherFermented = Some(BigDecimal("0.1894"))
)
)
)

Expand Down Expand Up @@ -580,7 +594,21 @@ trait TestData extends ModelGenerators {
),
total = BigDecimal("-19434")
),
totalDutyDue = AdrReturnTotalDutyDue(totalDue = BigDecimal("55815"))
totalDutyDue = AdrReturnTotalDutyDue(totalDue = BigDecimal("55815")),
netDutySuspension = Some(
AdrNetDutySuspension(
totalLtsBeer = Some(BigDecimal("0.15")),
totalLtsWine = Some(BigDecimal("0.44")),
totalLtsCider = Some(BigDecimal("0.38")),
totalLtsSpirit = Some(BigDecimal("0.02")),
totalLtsOtherFermented = Some(BigDecimal("0.02")),
totalLtsPureAlcoholBeer = Some(BigDecimal("0.4248")),
totalLtsPureAlcoholWine = Some(BigDecimal("0.5965")),
totalLtsPureAlcoholCider = Some(BigDecimal("0.0379")),
totalLtsPureAlcoholSpirit = Some(BigDecimal("0.2492")),
totalLtsPureAlcoholOtherFermented = Some(BigDecimal("0.1894"))
)
)
)

def nilReturnDetails(periodKey: String, now: Instant): AdrReturnDetails =
Expand All @@ -594,7 +622,8 @@ trait TestData extends ModelGenerators {
adjustmentDetails = None,
total = BigDecimal(0)
),
totalDutyDue = AdrReturnTotalDutyDue(totalDue = BigDecimal(0))
totalDutyDue = AdrReturnTotalDutyDue(totalDue = BigDecimal(0)),
netDutySuspension = None
)

val exampleReturnSubmissionRequest: AdrReturnSubmission = AdrReturnSubmission(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,6 @@ class AdrReturnDetailsSpec extends SpecBase {
val adrNilReturnDetails = nilReturnDetails(periodKey, now)

val json =
s"""{"identification":{"periodKey":"$periodKey","submittedTime":"2024-06-11T15:07:47.838Z"},"alcoholDeclared":{"alcoholDeclaredDetails":[{"taxType":"311","litresOfPureAlcohol":450,"dutyRate":9.27,"dutyValue":4171.5},{"taxType":"321","litresOfPureAlcohol":450,"dutyRate":21.01,"dutyValue":9454.5},{"taxType":"331","litresOfPureAlcohol":450,"dutyRate":28.5,"dutyValue":12825},{"taxType":"341","litresOfPureAlcohol":450,"dutyRate":31.64,"dutyValue":14238},{"taxType":"351","litresOfPureAlcohol":450,"dutyRate":8.42,"dutyValue":3789},{"taxType":"356","litresOfPureAlcohol":450,"dutyRate":19.08,"dutyValue":8586},{"taxType":"361","litresOfPureAlcohol":450,"dutyRate":8.4,"dutyValue":3780},{"taxType":"366","litresOfPureAlcohol":450,"dutyRate":16.47,"dutyValue":7411.5},{"taxType":"371","litresOfPureAlcohol":450,"dutyRate":8.2,"dutyValue":3960},{"taxType":"376","litresOfPureAlcohol":450,"dutyRate":15.63,"dutyValue":7033.5}],"total":75249},"adjustments":{"adjustmentDetails":[{"adjustmentTypeKey":"underdeclaration","taxType":"321","litresOfPureAlcohol":150,"dutyRate":21.01,"dutyValue":3151.5},{"adjustmentTypeKey":"spoilt","taxType":"321","litresOfPureAlcohol":1150,"dutyRate":21.01,"dutyValue":-24161.5},{"adjustmentTypeKey":"spoilt","taxType":"321","litresOfPureAlcohol":75,"dutyRate":21.01,"dutyValue":-1575.5},{"adjustmentTypeKey":"repackagedDraught","taxType":"321","litresOfPureAlcohol":150,"dutyRate":21.01,"dutyValue":3151.5}],"total":-19434},"totalDutyDue":{"totalDue":55815}}"""
s"""{"identification":{"periodKey":"$periodKey","submittedTime":"2024-06-11T15:07:47.838Z"},"alcoholDeclared":{"alcoholDeclaredDetails":[{"taxType":"311","litresOfPureAlcohol":450,"dutyRate":9.27,"dutyValue":4171.5},{"taxType":"321","litresOfPureAlcohol":450,"dutyRate":21.01,"dutyValue":9454.5},{"taxType":"331","litresOfPureAlcohol":450,"dutyRate":28.5,"dutyValue":12825},{"taxType":"341","litresOfPureAlcohol":450,"dutyRate":31.64,"dutyValue":14238},{"taxType":"351","litresOfPureAlcohol":450,"dutyRate":8.42,"dutyValue":3789},{"taxType":"356","litresOfPureAlcohol":450,"dutyRate":19.08,"dutyValue":8586},{"taxType":"361","litresOfPureAlcohol":450,"dutyRate":8.4,"dutyValue":3780},{"taxType":"366","litresOfPureAlcohol":450,"dutyRate":16.47,"dutyValue":7411.5},{"taxType":"371","litresOfPureAlcohol":450,"dutyRate":8.2,"dutyValue":3960},{"taxType":"376","litresOfPureAlcohol":450,"dutyRate":15.63,"dutyValue":7033.5}],"total":75249},"adjustments":{"adjustmentDetails":[{"adjustmentTypeKey":"underdeclaration","taxType":"321","litresOfPureAlcohol":150,"dutyRate":21.01,"dutyValue":3151.5},{"adjustmentTypeKey":"spoilt","taxType":"321","litresOfPureAlcohol":1150,"dutyRate":21.01,"dutyValue":-24161.5},{"adjustmentTypeKey":"spoilt","taxType":"321","litresOfPureAlcohol":75,"dutyRate":21.01,"dutyValue":-1575.5},{"adjustmentTypeKey":"repackagedDraught","taxType":"321","litresOfPureAlcohol":150,"dutyRate":21.01,"dutyValue":3151.5}],"total":-19434},"totalDutyDue":{"totalDue":55815},"netDutySuspension":{"totalLtsBeer":0.15,"totalLtsWine":0.44,"totalLtsCider":0.38,"totalLtsSpirit":0.02,"totalLtsOtherFermented":0.02,"totalLtsPureAlcoholBeer":0.4248,"totalLtsPureAlcoholWine":0.5965,"totalLtsPureAlcoholCider":0.0379,"totalLtsPureAlcoholSpirit":0.2492,"totalLtsPureAlcoholOtherFermented":0.1894}}"""
}
}

0 comments on commit 8a40183

Please sign in to comment.