Skip to content

Commit

Permalink
CIV-16485 - Part remission - caseworker HwF display not updated follo…
Browse files Browse the repository at this point in the history
…wing Fee payment outcome event (#1654)

* added code changes and unit tests.

* added a fix.

* added a fix.

* fixed the filed name and bug.

* fixed test.

* fixed test.

* refactored setData method.

* removed unused import.
  • Loading branch information
neeta-hmcts authored Jan 27, 2025
1 parent a72baba commit 9e2cf8f
Show file tree
Hide file tree
Showing 9 changed files with 61 additions and 72 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,12 @@
import uk.gov.hmcts.reform.civil.callback.Callback;
import uk.gov.hmcts.reform.civil.callback.CallbackParams;
import uk.gov.hmcts.reform.civil.callback.CaseEvent;
import uk.gov.hmcts.reform.civil.enums.CaseState;
import uk.gov.hmcts.reform.civil.enums.FeeType;
import uk.gov.hmcts.reform.civil.enums.YesOrNo;
import uk.gov.hmcts.reform.civil.enums.dq.GeneralApplicationTypes;
import uk.gov.hmcts.reform.civil.launchdarkly.FeatureToggleService;
import uk.gov.hmcts.reform.civil.model.BusinessProcess;
import uk.gov.hmcts.reform.civil.model.CaseData;
import uk.gov.hmcts.reform.civil.model.genapplication.FeePaymentOutcomeDetails;
import uk.gov.hmcts.reform.civil.model.genapplication.HelpWithFeesDetails;
import uk.gov.hmcts.reform.civil.service.HwfNotificationService;
import uk.gov.hmcts.reform.civil.service.PaymentRequestUpdateCallbackService;
import uk.gov.hmcts.reform.civil.utils.HwFFeeTypeService;
Expand Down Expand Up @@ -68,31 +65,10 @@ private CallbackResponse setData(CallbackParams callbackParams) {
CaseData.CaseDataBuilder caseDataBuilder = caseData.toBuilder();
FeePaymentOutcomeDetails.FeePaymentOutcomeDetailsBuilder feeDetailBuilder = FeePaymentOutcomeDetails.builder();
feeDetailBuilder.hwfNumberAvailable(YesOrNo.NO);
if (caseData.getCcdState().equals(CaseState.APPLICATION_ADD_PAYMENT)) {
caseDataBuilder.hwfFeeType(FeeType.ADDITIONAL);
if (Objects.isNull(caseData.getAdditionalHwfDetails())) {
caseDataBuilder.additionalHwfDetails(HelpWithFeesDetails.builder()
.hwfFeeType(FeeType.ADDITIONAL).build());
}
if (Objects.nonNull(caseData.getGaAdditionalHelpWithFees())
&& Objects.nonNull(caseData.getGaAdditionalHelpWithFees().getHelpWithFeesReferenceNumber())) {
feeDetailBuilder.hwfNumberAvailable(YesOrNo.YES)
.hwfNumberForFeePaymentOutcome(caseData.getGaAdditionalHelpWithFees()
.getHelpWithFeesReferenceNumber());
}
} else {
caseDataBuilder.hwfFeeType(FeeType.APPLICATION);
if (Objects.isNull(caseData.getGaHwfDetails())) {
caseDataBuilder.gaHwfDetails(HelpWithFeesDetails.builder()
.hwfFeeType(FeeType.APPLICATION).build());

}
if (Objects.nonNull(caseData.getGeneralAppHelpWithFees())
&& Objects.nonNull(caseData.getGeneralAppHelpWithFees().getHelpWithFeesReferenceNumber())) {
feeDetailBuilder.hwfNumberAvailable(YesOrNo.YES)
.hwfNumberForFeePaymentOutcome(caseData.getGeneralAppHelpWithFees()
.getHelpWithFeesReferenceNumber());
}
if (Objects.nonNull(caseData.getGeneralAppHelpWithFees())
&& Objects.nonNull(caseData.getGeneralAppHelpWithFees().getHelpWithFeesReferenceNumber())) {
feeDetailBuilder.hwfNumberAvailable(YesOrNo.YES)
.hwfNumberForFeePaymentOutcome(caseData.getGeneralAppHelpWithFees().getHelpWithFeesReferenceNumber());
}
caseDataBuilder.feePaymentOutcomeDetails(feeDetailBuilder.build());
return AboutToStartOrSubmitCallbackResponse.builder()
Expand All @@ -107,13 +83,13 @@ private CallbackResponse validateSelectedRemissionType(CallbackParams callbackPa
if ((caseData.isHWFTypeApplication()
&& caseData.getFeePaymentOutcomeDetails().getHwfFullRemissionGrantedForGa() == YesOrNo.YES
&& Objects.nonNull(caseData.getGaHwfDetails())
&& Objects.nonNull(caseData.getGaHwfDetails().getOutstandingFeeInPounds())
&& !Objects.equals(caseData.getGaHwfDetails().getOutstandingFeeInPounds(), BigDecimal.ZERO))
&& Objects.nonNull(caseData.getGaHwfDetails().getOutstandingFee())
&& !Objects.equals(caseData.getGaHwfDetails().getOutstandingFee(), BigDecimal.ZERO))
|| (caseData.isHWFTypeAdditional()
&& caseData.getFeePaymentOutcomeDetails().getHwfFullRemissionGrantedForAdditionalFee() == YesOrNo.YES
&& Objects.nonNull(caseData.getAdditionalHwfDetails())
&& Objects.nonNull(caseData.getAdditionalHwfDetails().getOutstandingFeeInPounds())
&& !Objects.equals(caseData.getAdditionalHwfDetails().getOutstandingFeeInPounds(), BigDecimal.ZERO))) {
&& Objects.nonNull(caseData.getAdditionalHwfDetails().getOutstandingFee())
&& !Objects.equals(caseData.getAdditionalHwfDetails().getOutstandingFee(), BigDecimal.ZERO))) {
errors.add(WRONG_REMISSION_TYPE_SELECTED);
}
return AboutToStartOrSubmitCallbackResponse.builder()
Expand Down Expand Up @@ -154,15 +130,17 @@ private CallbackResponse submitFeePaymentOutcome(CallbackParams callbackParams)
.fee(caseData.getGeneralAppPBADetails().getFee())
.hwfReferenceNumber(caseData
.getGeneralAppHelpWithFees()
.getHelpWithFeesReferenceNumber()).build())
.getHelpWithFeesReferenceNumber())
.outstandingFee(BigDecimal.ZERO).build())
.businessProcess(BusinessProcess.ready(caseEvent)).build();
} else if (processedCaseData.isHWFTypeAdditional()) {
caseData = processedCaseData.toBuilder()
.additionalHwfDetails(caseData.getAdditionalHwfDetails().toBuilder()
.fee(caseData.getGeneralAppPBADetails().getFee())
.hwfReferenceNumber(caseData
.getGeneralAppHelpWithFees()
.getHelpWithFeesReferenceNumber()).build())
.getHelpWithFeesReferenceNumber())
.outstandingFee(BigDecimal.ZERO).build())
.businessProcess(BusinessProcess.ready(UPDATE_GA_ADD_HWF))
.build();
log.info("Start business process UPDATE_GA_ADD_HWF for caseId: {}", callbackParams.getCaseData().getCcdCaseReference());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,14 @@ private CallbackResponse fullRemissionHWF(CallbackParams callbackParams) {
.ifPresentOrElse(
gaHwfDetails -> updatedData.gaHwfDetails(
gaHwfDetails.toBuilder().remissionAmount(feeAmount)
.outstandingFeeInPounds(BigDecimal.ZERO)
.outstandingFee(BigDecimal.ZERO)
.hwfFeeType(FeeType.APPLICATION)
.hwfCaseEvent(FULL_REMISSION_HWF_GA)
.build()
),
() -> updatedData.gaHwfDetails(
HelpWithFeesDetails.builder().remissionAmount(feeAmount)
.outstandingFeeInPounds(BigDecimal.ZERO)
.outstandingFee(BigDecimal.ZERO)
.hwfFeeType(FeeType.APPLICATION)
.hwfCaseEvent(FULL_REMISSION_HWF_GA)
.build()
Expand All @@ -79,15 +79,16 @@ private CallbackResponse fullRemissionHWF(CallbackParams callbackParams) {
log.info("HWF fee type is additional for caseId: {}", callbackParams.getCaseData().getCcdCaseReference());
Optional.ofNullable(caseData.getAdditionalHwfDetails())
.ifPresentOrElse(
hearingHwfDetails -> updatedData.additionalHwfDetails(
HelpWithFeesDetails.builder().remissionAmount(feeAmount)
.outstandingFeeInPounds(BigDecimal.ZERO)
additionalHwfDetails -> updatedData.additionalHwfDetails(
additionalHwfDetails.toBuilder().remissionAmount(feeAmount)
.outstandingFee(BigDecimal.ZERO)
.hwfCaseEvent(FULL_REMISSION_HWF_GA)
.hwfFeeType(FeeType.ADDITIONAL)
.build()
),
() -> updatedData.additionalHwfDetails(
HelpWithFeesDetails.builder().remissionAmount(feeAmount)
.outstandingFee(BigDecimal.ZERO)
.hwfCaseEvent(FULL_REMISSION_HWF_GA)
.hwfFeeType(FeeType.ADDITIONAL)
.build()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class HelpWithFeesDetails {
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal remissionAmount;
@JsonFormat(shape = JsonFormat.Shape.STRING)
private BigDecimal outstandingFeeInPounds;
private BigDecimal outstandingFee;
private String noRemissionDetails;
private NoRemissionDetailsSummary noRemissionDetailsSummary;
private String hwfReferenceNumber;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,15 +60,17 @@ public HashMap<String, Object> mapCaseDataToParams(CaseData caseData) {
if (caseData.getGaHwfDetails().getHwfCaseEvent() != null
&& caseData.getGaHwfDetails().getHwfCaseEvent().equals(CaseEvent.PARTIAL_REMISSION_HWF_GA)) {
params.put("remissionAmount", "£" + MonetaryConversions.penniesToPounds(caseData.getGaHwfDetails().getRemissionAmount()));
params.put("outstandingFeeInPounds", "£" + caseData.getGaHwfDetails().getOutstandingFeeInPounds());
params.put("outstandingFeeInPounds", "£" + MonetaryConversions
.penniesToPounds(caseData.getGaHwfDetails().getOutstandingFee()));
}
} else if (caseData.getAdditionalHwfDetails() != null && (caseData.getHwfFeeType() != null
&& FeeType.ADDITIONAL == caseData.getHwfFeeType())) {
if (caseData.getAdditionalHwfDetails().getHwfCaseEvent() != null
&& caseData.getAdditionalHwfDetails().getHwfCaseEvent().equals(CaseEvent.PARTIAL_REMISSION_HWF_GA)) {
params.put("remissionAmount", "£" + MonetaryConversions.penniesToPounds(caseData.getAdditionalHwfDetails()
.getRemissionAmount()));
params.put("outstandingFeeInPounds", "£" + caseData.getAdditionalHwfDetails().getOutstandingFeeInPounds());
params.put("outstandingFeeInPounds", "£" + MonetaryConversions
.penniesToPounds(caseData.getAdditionalHwfDetails().getOutstandingFee()));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,13 @@ private Map<String, String> getPartialRemissionProperties(CaseData caseData) {
if (caseData.isHWFTypeApplication()) {
remission = MonetaryConversions
.penniesToPounds(HwFFeeTypeService.getGaRemissionAmount(caseData));
outstanding = caseData.getGaHwfDetails().getOutstandingFeeInPounds();
outstanding = MonetaryConversions
.penniesToPounds(caseData.getGaHwfDetails().getOutstandingFee());
} else {
remission = MonetaryConversions
.penniesToPounds(HwFFeeTypeService.getAdditionalRemissionAmount(caseData));
outstanding = caseData.getAdditionalHwfDetails().getOutstandingFeeInPounds();
outstanding = MonetaryConversions
.penniesToPounds(caseData.getAdditionalHwfDetails().getOutstandingFee());
}
return Map.of(
PART_AMOUNT, remission.toString(),
Expand All @@ -125,10 +127,12 @@ private Map<String, String> getNoRemissionProperties(CaseData caseData) {
BigDecimal outstanding;
if (caseData.isHWFTypeApplication()) {
remission = caseData.getGaHwfDetails().getNoRemissionDetailsSummary().getLabel();
outstanding = caseData.getGaHwfDetails().getOutstandingFeeInPounds();
outstanding = MonetaryConversions
.penniesToPounds(caseData.getGaHwfDetails().getOutstandingFee());
} else {
remission = caseData.getAdditionalHwfDetails().getNoRemissionDetailsSummary().getLabel();
outstanding = caseData.getAdditionalHwfDetails().getOutstandingFeeInPounds();
outstanding = MonetaryConversions
.penniesToPounds(caseData.getAdditionalHwfDetails().getOutstandingFee());
}
return Map.of(
FEE_AMOUNT, outstanding.toString(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,15 +87,15 @@ public static CaseData updateOutstandingFee(CaseData caseData, String caseEventI
updatedData.gaHwfDetails(
caseData.getGaHwfDetails().toBuilder()
.remissionAmount(gaRemissionAmount)
.outstandingFeeInPounds(MonetaryConversions.penniesToPounds(outstandingFeeAmount))
.outstandingFee(outstandingFeeAmount)
.build()
);
} else if (caseData.isHWFTypeAdditional() && BigDecimal.ZERO.compareTo(feeAmount) != 0) {
outstandingFeeAmount = feeAmount.subtract(hearingRemissionAmount);
updatedData.additionalHwfDetails(
caseData.getAdditionalHwfDetails().toBuilder()
.remissionAmount(hearingRemissionAmount)
.outstandingFeeInPounds(MonetaryConversions.penniesToPounds(outstandingFeeAmount))
.outstandingFee(outstandingFeeAmount)
.build()
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ void updateFeeType_shouldSetAdditionalFeeTypeWithEmptyRef_whenCaseStateIsApplica
CaseData caseData = CaseData.builder()
.ccdState(CaseState.APPLICATION_ADD_PAYMENT)
.generalAppHelpWithFees(HelpWithFees.builder().build())
.hwfFeeType(FeeType.ADDITIONAL)
.generalAppPBADetails(GAPbaDetails.builder().fee(
Fee.builder()
.calculatedAmountInPence(BigDecimal.valueOf(180))
Expand All @@ -103,7 +104,8 @@ void updateFeeType_shouldSetAdditionalFeeTypeWithRef_whenCaseStateIsApplicationA
// Arrange
CaseData caseData = CaseData.builder()
.ccdState(CaseState.APPLICATION_ADD_PAYMENT)
.gaAdditionalHelpWithFees(HelpWithFees.builder().helpWithFeesReferenceNumber("123").build())
.hwfFeeType(FeeType.ADDITIONAL)
.generalAppHelpWithFees(HelpWithFees.builder().helpWithFeesReferenceNumber("123").build())
.build();

// Act
Expand All @@ -121,6 +123,7 @@ void updateFeeType_shouldSetApplicationFeeTypeWithEmptyRef_whenCaseStateIsNotApp
// Arrange
CaseData caseData = CaseData.builder()
.ccdState(CaseState.AWAITING_RESPONDENT_RESPONSE)
.hwfFeeType(FeeType.APPLICATION)
.generalAppHelpWithFees(HelpWithFees.builder().build())
.generalAppPBADetails(GAPbaDetails.builder().fee(
Fee.builder()
Expand All @@ -143,6 +146,7 @@ void updateFeeType_shouldSetApplicationFeeTypeWithRef_whenCaseStateIsNotApplicat
// Arrange
CaseData caseData = CaseData.builder()
.ccdState(CaseState.AWAITING_RESPONDENT_RESPONSE)
.hwfFeeType(FeeType.APPLICATION)
.generalAppHelpWithFees(HelpWithFees.builder().helpWithFeesReferenceNumber("123").build())
.build();

Expand Down Expand Up @@ -170,7 +174,7 @@ void shouldValidationFeePaymentOutcomeGa_withInvalidOutstandingFee() {
.hwfFullRemissionGrantedForGa(YesOrNo.YES).build())
.hwfFeeType(FeeType.APPLICATION)
.gaHwfDetails(HelpWithFeesDetails.builder()
.outstandingFeeInPounds(BigDecimal.valueOf(100.00))
.outstandingFee(BigDecimal.valueOf(100.00))
.build())
.build();
//When
Expand All @@ -189,7 +193,7 @@ void shouldValidationFeePaymentOutcomeAdditional_withInvalidOutstandingFee() {
.hwfFullRemissionGrantedForAdditionalFee(YesOrNo.YES).build())
.hwfFeeType(FeeType.ADDITIONAL)
.additionalHwfDetails(HelpWithFeesDetails.builder()
.outstandingFeeInPounds(BigDecimal.valueOf(100.00))
.outstandingFee(BigDecimal.valueOf(100.00))
.build())
.build();
//When
Expand Down
Loading

0 comments on commit 9e2cf8f

Please sign in to comment.