From 60bc3acaf1422ca6240212d261306e5d6f22e2ad Mon Sep 17 00:00:00 2001 From: "oleksandr.masliuk" Date: Mon, 7 Apr 2025 19:26:22 +0300 Subject: [PATCH] FINERACT-2169: Apply dto into GuarantorsApiResource --- .../data/LoanChargePaidByData.java | 7 +- .../LoanRepaymentScheduleInstallmentData.java | 7 +- .../loanaccount/data/LoanTransactionData.java | 7 +- .../data/LoanTransactionEnumData.java | 7 +- .../guarantor/api/GuarantorsApiResource.java | 70 ++++++------------- .../guarantor/data/GuarantorData.java | 7 +- .../guarantor/data/GuarantorFundingData.java | 9 ++- .../data/GuarantorTransactionData.java | 9 ++- .../guarantor/data/GuarantorsRequest.java | 62 ++++++++++++++++ .../loanaccount/api/SelfLoansApiResource.java | 6 +- .../DepositAccountOnHoldTransactionData.java | 9 ++- 11 files changed, 140 insertions(+), 60 deletions(-) create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorsRequest.java diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java index 7e13697b2..20b06f28b 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanChargePaidByData.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.portfolio.loanaccount.data; +import java.io.Serial; +import java.io.Serializable; import java.math.BigDecimal; import lombok.Data; import lombok.Getter; @@ -25,7 +27,10 @@ import org.springframework.integration.annotation.Default; @Data @Getter -public class LoanChargePaidByData { +public class LoanChargePaidByData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; private Long id; private BigDecimal amount; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java index fe29cd70c..ad06d82e8 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanRepaymentScheduleInstallmentData.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.portfolio.loanaccount.data; +import java.io.Serial; +import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import lombok.AllArgsConstructor; @@ -25,7 +27,10 @@ import lombok.Getter; @AllArgsConstructor @Getter -public final class LoanRepaymentScheduleInstallmentData { +public final class LoanRepaymentScheduleInstallmentData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; private Long id; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java index 8c61f9e83..8ca3d7808 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionData.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.portfolio.loanaccount.data; +import java.io.Serial; +import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Collection; @@ -35,7 +37,10 @@ import org.springframework.integration.annotation.Default; * Immutable data object representing a loan transaction. */ @Getter -public class LoanTransactionData { +public class LoanTransactionData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; private final Long id; private final Long loanId; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java index 82b95d667..ddfa5538a 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanTransactionEnumData.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.portfolio.loanaccount.data; +import java.io.Serial; +import java.io.Serializable; import lombok.Getter; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; @@ -25,7 +27,10 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; * Immutable data object represent loan status enumerations. */ @Getter -public class LoanTransactionEnumData { +public class LoanTransactionEnumData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; private final Long id; private final String code; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/api/GuarantorsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/api/GuarantorsApiResource.java index 6843d6791..0145cc6c1 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/api/GuarantorsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/api/GuarantorsApiResource.java @@ -36,11 +36,8 @@ import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.UriInfo; import java.io.InputStream; -import java.util.Arrays; import java.util.Collection; -import java.util.HashSet; import java.util.List; -import java.util.Set; import lombok.RequiredArgsConstructor; import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; @@ -57,14 +54,13 @@ import org.apache.fineract.infrastructure.core.data.UploadRequest; import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; -import org.apache.fineract.portfolio.account.AccountDetailConstants; import org.apache.fineract.portfolio.account.PortfolioAccountType; -import org.apache.fineract.portfolio.account.api.AccountTransfersApiConstants; import org.apache.fineract.portfolio.account.data.PortfolioAccountDTO; import org.apache.fineract.portfolio.account.data.PortfolioAccountData; import org.apache.fineract.portfolio.account.service.PortfolioAccountReadPlatformService; import org.apache.fineract.portfolio.loanaccount.guarantor.GuarantorConstants; import org.apache.fineract.portfolio.loanaccount.guarantor.data.GuarantorData; +import org.apache.fineract.portfolio.loanaccount.guarantor.data.GuarantorsRequest; import org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorType; import org.apache.fineract.portfolio.loanaccount.guarantor.service.GuarantorEnumerations; import org.apache.fineract.portfolio.loanaccount.guarantor.service.GuarantorReadPlatformService; @@ -79,15 +75,6 @@ import org.springframework.stereotype.Component; @RequiredArgsConstructor public class GuarantorsApiResource { - private static final Set RESPONSE_DATA_PARAMETERS = new HashSet<>( - Arrays.asList("id", "loanId", "clientRelationshipType", "guarantorType", "firstname", "lastname", "entityId", "externalId", - "officeName", "joinedDate", "addressLine1", "addressLine2", "city", "state", "zip", "country", "mobileNumber", - "housePhoneNumber", "comment", "dob", "guarantorTypeOptions", "allowedClientRelationshipTypes")); - - private static final Set ACCOUNT_TRANSFER_API_RESPONSE_DATA_PARAMETERS = new HashSet<>( - Arrays.asList(AccountDetailConstants.idParamName, AccountTransfersApiConstants.transferDescriptionParamName, - AccountTransfersApiConstants.currencyParamName)); - private static final String RESOURCE_NAME_FOR_PERMISSION = "GUARANTOR"; private final GuarantorReadPlatformService guarantorReadPlatformService; @@ -105,38 +92,30 @@ public class GuarantorsApiResource { @Path("template") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String newGuarantorTemplate(@Context final UriInfo uriInfo, @PathParam("loanId") final Long loanId) { + public GuarantorData newGuarantorTemplate(@PathParam("loanId") final Long loanId) { this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSION); final List guarantorTypeOptions = GuarantorEnumerations.guarantorType(GuarantorType.values()); final Collection allowedClientRelationshipTypes = this.codeValueReadPlatformService .retrieveCodeValuesByCode(GuarantorConstants.GUARANTOR_RELATIONSHIP_CODE_NAME); final Collection accountLinkingOptions = null; - final GuarantorData guarantorData = GuarantorData.template(guarantorTypeOptions, allowedClientRelationshipTypes, - accountLinkingOptions); - - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.apiJsonSerializerService.serialize(settings, guarantorData, RESPONSE_DATA_PARAMETERS); + return GuarantorData.template(guarantorTypeOptions, allowedClientRelationshipTypes, accountLinkingOptions); } @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String retrieveGuarantorDetails(@Context final UriInfo uriInfo, @PathParam("loanId") final Long loanId) { + public List retrieveGuarantorDetails(@PathParam("loanId") final Long loanId) { this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSION); - final List guarantorDatas = this.guarantorReadPlatformService.retrieveGuarantorsForValidLoan(loanId); - - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - - return this.apiJsonSerializerService.serialize(settings, guarantorDatas, RESPONSE_DATA_PARAMETERS); + return this.guarantorReadPlatformService.retrieveGuarantorsForValidLoan(loanId); } @GET @Path("{guarantorId}") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String retrieveGuarantorDetails(@Context final UriInfo uriInfo, @PathParam("loanId") final Long loanId, + public GuarantorData retrieveGuarantorDetails(@Context final UriInfo uriInfo, @PathParam("loanId") final Long loanId, @PathParam("guarantorId") final Long guarantorId) { this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSION); @@ -151,55 +130,48 @@ public class GuarantorsApiResource { guarantorData = GuarantorData.templateOnTop(guarantorData, guarantorTypeOptions, allowedClientRelationshipTypes, accountLinkingOptions); } - - return this.apiJsonSerializerService.serialize(settings, guarantorData, RESPONSE_DATA_PARAMETERS); + return guarantorData; } @POST @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String createGuarantor(@PathParam("loanId") final Long loanId, final String apiRequestBodyAsJson) { + public CommandProcessingResult createGuarantor(@PathParam("loanId") final Long loanId, final GuarantorsRequest guarantorsRequest) { - final CommandWrapper commandRequest = new CommandWrapperBuilder().createGuarantor(loanId).withJson(apiRequestBodyAsJson).build(); + final CommandWrapper commandRequest = new CommandWrapperBuilder().createGuarantor(loanId) + .withJson(apiJsonSerializerService.serialize(guarantorsRequest)).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - - return this.apiJsonSerializerService.serialize(result); + return this.commandsSourceWritePlatformService.logCommandSource(commandRequest); } @PUT @Path("{guarantorId}") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String updateGuarantor(@PathParam("loanId") final Long loanId, @PathParam("guarantorId") final Long guarantorId, - final String jsonRequestBody) { - final CommandWrapper commandRequest = new CommandWrapperBuilder().updateGuarantor(loanId, guarantorId).withJson(jsonRequestBody) - .build(); + public CommandProcessingResult updateGuarantor(@PathParam("loanId") final Long loanId, @PathParam("guarantorId") final Long guarantorId, + final GuarantorsRequest guarantorsRequest) { + final CommandWrapper commandRequest = new CommandWrapperBuilder().updateGuarantor(loanId, guarantorId) + .withJson(apiJsonSerializerService.serialize(guarantorsRequest)).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - - return this.apiJsonSerializerService.serialize(result); + return this.commandsSourceWritePlatformService.logCommandSource(commandRequest); } @DELETE @Path("{guarantorId}") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String deleteGuarantor(@PathParam("loanId") final Long loanId, @PathParam("guarantorId") final Long guarantorId, + public CommandProcessingResult deleteGuarantor(@PathParam("loanId") final Long loanId, @PathParam("guarantorId") final Long guarantorId, @QueryParam("guarantorFundingId") final Long guarantorFundingId) { final CommandWrapper commandRequest = new CommandWrapperBuilder().deleteGuarantor(loanId, guarantorId, guarantorFundingId).build(); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); - - return this.apiJsonSerializerService.serialize(result); + return this.commandsSourceWritePlatformService.logCommandSource(commandRequest); } @GET @Path("accounts/template") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String accountsTemplate(@QueryParam("clientId") final Long clientId, @PathParam("loanId") final Long loanId, - @Context final UriInfo uriInfo) { + public GuarantorData accountsTemplate(@QueryParam("clientId") final Long clientId, @PathParam("loanId") final Long loanId) { this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSION); @@ -208,9 +180,7 @@ public class GuarantorsApiResource { if (this.loanReadPlatformService.isGuaranteeRequired(loanId)) { accountLinkingOptions = this.portfolioAccountReadPlatformService.retrieveAllForLookup(portfolioAccountDTO); } - final GuarantorData guarantorData = GuarantorData.template(null, null, accountLinkingOptions); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.apiJsonSerializerService.serialize(settings, guarantorData, ACCOUNT_TRANSFER_API_RESPONSE_DATA_PARAMETERS); + return GuarantorData.template(null, null, accountLinkingOptions); } @GET diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorData.java index f4cf7a987..ea293c89f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorData.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.portfolio.loanaccount.guarantor.data; +import java.io.Serial; +import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; import java.util.Collection; @@ -32,7 +34,10 @@ import org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorType; import org.apache.fineract.portfolio.loanaccount.guarantor.service.GuarantorEnumerations; @Getter -public class GuarantorData { +public class GuarantorData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; private final Long id; private final Long loanId; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java index 6784007e5..9d5b5cc8f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorFundingData.java @@ -18,12 +18,19 @@ */ package org.apache.fineract.portfolio.loanaccount.guarantor.data; +import java.io.Serial; +import java.io.Serializable; import java.math.BigDecimal; import java.util.Collection; +import lombok.Getter; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.portfolio.account.data.PortfolioAccountData; -public final class GuarantorFundingData { +@Getter +public final class GuarantorFundingData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; @SuppressWarnings("unused") private final Long id; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java index f8cd5768a..5e4ede0bf 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorTransactionData.java @@ -18,10 +18,17 @@ */ package org.apache.fineract.portfolio.loanaccount.guarantor.data; +import java.io.Serial; +import java.io.Serializable; +import lombok.Getter; import org.apache.fineract.portfolio.loanaccount.data.LoanTransactionData; import org.apache.fineract.portfolio.savings.data.DepositAccountOnHoldTransactionData; -public final class GuarantorTransactionData { +@Getter +public final class GuarantorTransactionData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; @SuppressWarnings("unused") private final Long id; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorsRequest.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorsRequest.java new file mode 100644 index 000000000..e0498f220 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/guarantor/data/GuarantorsRequest.java @@ -0,0 +1,62 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.loanaccount.guarantor.data; + +import java.io.Serial; +import java.io.Serializable; +import java.math.BigDecimal; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +public class GuarantorsRequest implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private String locale; + private String dateFormat; // "dd MMMM yyyy" + + /*** Fields for capturing relationship of Guarantor with customer **/ + private Long clientRelationshipTypeId; + + /*** Fields for current customers serving as guarantors **/ + private Integer guarantorTypeId; + private Long entityId; + + /*** Fields for external persons serving as guarantors ***/ + private String firstname; + private String lastname; + private String addressLine1; + private String addressLine2; + private String city; + private String state; + private String zip; + private String country; + private String mobileNumber; + private String housePhoneNumber; + private String comment; + private String dob; + private Long savingsId; + private BigDecimal amount; + +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java index cd0a0b12e..79b0e5b87 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/self/loanaccount/api/SelfLoansApiResource.java @@ -40,6 +40,7 @@ import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.UriInfo; import java.util.HashMap; +import java.util.List; import lombok.RequiredArgsConstructor; import org.apache.commons.lang3.StringUtils; import org.apache.fineract.infrastructure.core.exception.UnrecognizedQueryParamException; @@ -53,6 +54,7 @@ import org.apache.fineract.portfolio.loanaccount.exception.LoanNotFoundException import org.apache.fineract.portfolio.loanaccount.exception.LoanTemplateTypeRequiredException; import org.apache.fineract.portfolio.loanaccount.exception.NotSupportedLoanTemplateTypeException; import org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource; +import org.apache.fineract.portfolio.loanaccount.guarantor.data.GuarantorData; import org.apache.fineract.portfolio.self.client.service.AppuserClientMapperReadService; import org.apache.fineract.portfolio.self.loanaccount.data.SelfLoansDataValidator; import org.apache.fineract.portfolio.self.loanaccount.service.AppuserLoansMapperReadService; @@ -273,10 +275,10 @@ public class SelfLoansApiResource { @Path("{loanId}/guarantors") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String retrieveGuarantorDetails(@PathParam("loanId") final Long loanId, @Context final UriInfo uriInfo) { + public List retrieveGuarantorDetails(@PathParam("loanId") final Long loanId) { validateAppuserLoanMapping(loanId); - return this.guarantorsApiResource.retrieveGuarantorDetails(uriInfo, loanId); + return this.guarantorsApiResource.retrieveGuarantorDetails(loanId); } } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java index c9fc72972..4a2a90213 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/DepositAccountOnHoldTransactionData.java @@ -18,11 +18,18 @@ */ package org.apache.fineract.portfolio.savings.data; +import java.io.Serial; +import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDate; +import lombok.Getter; import org.apache.fineract.infrastructure.core.data.EnumOptionData; -public final class DepositAccountOnHoldTransactionData { +@Getter +public final class DepositAccountOnHoldTransactionData implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; @SuppressWarnings("unused") private final Long id;