This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 66621dcc8 FINERACT-1618 Cater for loans with no schedule at disburse 
time
66621dcc8 is described below

commit 66621dcc819ceaf988049085020cd10bd860ecdd
Author: John Woodlock <[email protected]>
AuthorDate: Thu May 12 00:56:01 2022 +0100

    FINERACT-1618 Cater for loans with no schedule at disburse time
---
 .../CreateAccountTransferCommandHandler.java       |  8 ++-----
 .../handler/RefundByTransferCommandHandler.java    |  8 ++-----
 .../portfolio/loanaccount/domain/Loan.java         | 27 ++++++++++++++++++----
 .../GLIMApplicationRejectionCommandHandler.java    |  8 ++-----
 .../handler/GLIMBulkRepaymentCommandHandler.java   |  8 ++-----
 .../GLIMLoanApplicationApprovalCommandHandler.java |  8 ++-----
 .../GlimLoanApplicationDisburseCommandHandler.java |  8 ++-----
 .../LoanApplicationApprovalCommandHandler.java     |  8 ++-----
 .../LoanApplicationApprovalUndoCommandHandler.java |  8 ++-----
 .../LoanApplicationDeletionCommandHandler.java     |  8 ++-----
 .../LoanApplicationModificationCommandHandler.java |  8 ++-----
 .../LoanApplicationRejectedCommandHandler.java     |  8 ++-----
 .../LoanApplicationSubmittalCommandHandler.java    |  8 ++-----
 ...licationWithdrawnByApplicantCommandHandler.java |  8 ++-----
 .../handler/LoanRecoveryPaymentCommandHandler.java |  8 ++-----
 .../handler/LoanRefundByCashCommandHandler.java    |  8 ++-----
 .../LoanRepaymentAdjustmentCommandHandler.java     |  8 ++-----
 .../LoanScheduleCreateVariationCommandHandler.java |  8 ++-----
 .../LoanScheduleDeleteVariationCommandHandler.java |  8 ++-----
 .../handler/PayLoanChargeCommandHandler.java       |  8 ++-----
 .../RecoverFromGuarantorCommandHandler.java        |  8 ++-----
 .../handler/RemoveLoanOfficerCommandHandler.java   |  8 ++-----
 .../handler/UndoDisbursalLoanCommandHandler.java   |  8 ++-----
 .../handler/UndoGLIMLoanApplicationApproval.java   |  8 ++-----
 .../UndoGLIMLoanDisbursalCommandHandler.java       |  8 ++-----
 .../UndoLastDisbursalLoanCommandHandler.java       |  8 ++-----
 .../handler/UndoLoanChargeWaiveCommandHandler.java |  8 ++-----
 .../handler/UndoWriteOffLoanCommandHandler.java    |  8 ++-----
 .../handler/UpdateLoanChargeCommandHandler.java    |  8 ++-----
 .../UpdateLoanDisbuseDateCommandHandler.java       |  8 ++-----
 .../handler/UpdateLoanOfficerCommandHandler.java   |  8 ++-----
 .../WaiveInterestPortionOnLoanCommandHandler.java  |  8 ++-----
 .../handler/WaiveLoanChargeCommandHandler.java     |  8 ++-----
 .../handler/WriteOffLoanCommandHandler.java        |  8 ++-----
 34 files changed, 88 insertions(+), 203 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/CreateAccountTransferCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/CreateAccountTransferCommandHandler.java
index 1f2041385..fef99250f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/CreateAccountTransferCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/CreateAccountTransferCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.account.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "ACCOUNTTRANSFER", action = "CREATE")
 public class CreateAccountTransferCommandHandler implements 
NewCommandSourceHandler {
 
     private final AccountTransfersWritePlatformService writePlatformService;
 
-    @Autowired
-    public CreateAccountTransferCommandHandler(final 
AccountTransfersWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/RefundByTransferCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/RefundByTransferCommandHandler.java
index e8a171d5c..669a10135 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/RefundByTransferCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/RefundByTransferCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.account.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.account.service.AccountTransfersWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "ACCOUNTTRANSFER", action = "REFUNDBYTRANSFER")
 public class RefundByTransferCommandHandler implements NewCommandSourceHandler 
{
 
     private final AccountTransfersWritePlatformService writePlatformService;
 
-    @Autowired
-    public RefundByTransferCommandHandler(final 
AccountTransfersWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index 222e4a0e9..3302a9270 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -2453,11 +2453,8 @@ public class Loan extends AbstractPersistableCustom {
         
validateDisbursementDateIsOnNonWorkingDay(holidayDetailDTO.getWorkingDays(), 
holidayDetailDTO.isAllowTransactionsOnNonWorkingDay());
         
validateDisbursementDateIsOnHoliday(holidayDetailDTO.isAllowTransactionsOnHoliday(),
 holidayDetailDTO.getHolidays());
 
-        if (this.repaymentScheduleDetail().isInterestRecalculationEnabled()
-                && 
(fetchRepaymentScheduleInstallment(1).getDueDate().isBefore(LocalDate.now(DateUtils.getDateTimeZoneOfTenant()))
-                        || isDisbursementMissed())) {
-            
regenerateRepaymentScheduleWithInterestRecalculation(scheduleGeneratorDTO, 
currentUser);
-        }
+        
regenerateRepaymentScheduleWithInterestRecalculationIfNeeded(this.repaymentScheduleDetail().isInterestRecalculationEnabled(),
+                isDisbursementMissed(), scheduleGeneratorDTO, currentUser);
 
         
updateSummaryWithTotalFeeChargesDueAtDisbursement(deriveSumTotalOfChargesDueAtDisbursement());
         updateLoanRepaymentPeriodsDerivedFields(actualDisbursementDate);
@@ -2482,6 +2479,26 @@ public class Loan extends AbstractPersistableCustom {
 
     }
 
+    private void 
regenerateRepaymentScheduleWithInterestRecalculationIfNeeded(boolean 
interestRecalculationEnabledParam,
+            boolean disbursementMissedParam, ScheduleGeneratorDTO 
scheduleGeneratorDTO, AppUser currentUser) {
+        /*
+         * There may be no schedule built pre-disbursal e.g. multi-disbursal 
products that disallow expected
+         * disbursements
+         */
+        LocalDate firstInstallmentDueDate = null;
+        LoanRepaymentScheduleInstallment firstInstallment = 
fetchRepaymentScheduleInstallment(1);
+        if (firstInstallment == null) {
+            firstInstallmentDueDate = 
LocalDate.now(DateUtils.getDateTimeZoneOfTenant());
+        } else {
+            firstInstallmentDueDate = firstInstallment.getDueDate();
+        }
+        if (interestRecalculationEnabledParam
+                && 
(firstInstallmentDueDate.isBefore(LocalDate.now(DateUtils.getDateTimeZoneOfTenant()))
 || disbursementMissedParam)) {
+            
regenerateRepaymentScheduleWithInterestRecalculation(scheduleGeneratorDTO, 
currentUser);
+        }
+
+    }
+
     private List<LoanDisbursementDetails> 
getDisbursedLoanDisbursementDetails() {
         List<LoanDisbursementDetails> ret = new ArrayList<>();
         if (this.disbursementDetails != null && 
this.disbursementDetails.size() > 0) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java
index 017302682..391a81229 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMApplicationRejectionCommandHandler.java
@@ -19,26 +19,22 @@
 
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "GLIMLOAN", action = "REJECT")
 public class GLIMApplicationRejectionCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public GLIMApplicationRejectionCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java
index 13263397c..3df177317 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMBulkRepaymentCommandHandler.java
@@ -19,26 +19,22 @@
 
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "GLIMLOAN", action = "REPAYMENT")
 public class GLIMBulkRepaymentCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public GLIMBulkRepaymentCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java
index 6d90455b0..c757595e6 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GLIMLoanApplicationApprovalCommandHandler.java
@@ -19,26 +19,22 @@
 
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "GLIMLOAN", action = "APPROVE")
 public class GLIMLoanApplicationApprovalCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public GLIMLoanApplicationApprovalCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java
index a7cba15e1..3a3d5faaf 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/GlimLoanApplicationDisburseCommandHandler.java
@@ -19,26 +19,22 @@
 
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "GLIMLOAN", action = "DISBURSE")
 public class GlimLoanApplicationDisburseCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public GlimLoanApplicationDisburseCommandHandler(final 
LoanWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalCommandHandler.java
index aebec3d7c..55ff61894 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "APPROVE")
 public class LoanApplicationApprovalCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanApplicationApprovalCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalUndoCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalUndoCommandHandler.java
index 74300f1d2..6860885a1 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalUndoCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationApprovalUndoCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "APPROVALUNDO")
 public class LoanApplicationApprovalUndoCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanApplicationApprovalUndoCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationDeletionCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationDeletionCommandHandler.java
index 33b4bfe1b..fa0e328d9 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationDeletionCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationDeletionCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "DELETE")
 public class LoanApplicationDeletionCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanApplicationDeletionCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationModificationCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationModificationCommandHandler.java
index dbca146b4..21e338729 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationModificationCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationModificationCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "UPDATE")
 public class LoanApplicationModificationCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanApplicationModificationCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationRejectedCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationRejectedCommandHandler.java
index c8cee0ec7..39d07364a 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationRejectedCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationRejectedCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "REJECT")
 public class LoanApplicationRejectedCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanApplicationRejectedCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationSubmittalCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationSubmittalCommandHandler.java
index 1bad24bda..bdfc0e499 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationSubmittalCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationSubmittalCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "CREATE")
 public class LoanApplicationSubmittalCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanApplicationSubmittalCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationWithdrawnByApplicantCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationWithdrawnByApplicantCommandHandler.java
index 6e5994b18..e1965a4f6 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationWithdrawnByApplicantCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanApplicationWithdrawnByApplicantCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "WITHDRAW")
 public class LoanApplicationWithdrawnByApplicantCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanApplicationWithdrawnByApplicantCommandHandler(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRecoveryPaymentCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRecoveryPaymentCommandHandler.java
index 18ada7cef..8004f99f6 100755
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRecoveryPaymentCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRecoveryPaymentCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "RECOVERYPAYMENT")
 public class LoanRecoveryPaymentCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanRecoveryPaymentCommandHandler(LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Override
     public CommandProcessingResult processCommand(JsonCommand command) {
         final boolean isRecoveryRepayment = true;
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRefundByCashCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRefundByCashCommandHandler.java
index cefbe0b20..d61a626d6 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRefundByCashCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRefundByCashCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "REFUNDBYCASH")
 public class LoanRefundByCashCommandHandler implements NewCommandSourceHandler 
{
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanRefundByCashCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRepaymentAdjustmentCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRepaymentAdjustmentCommandHandler.java
index 9097ae4dd..e04e9bf6f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRepaymentAdjustmentCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanRepaymentAdjustmentCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "ADJUST")
 public class LoanRepaymentAdjustmentCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public LoanRepaymentAdjustmentCommandHandler(final 
LoanWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleCreateVariationCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleCreateVariationCommandHandler.java
index 41e8bb31b..af9c63575 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleCreateVariationCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleCreateVariationCommandHandler.java
@@ -18,25 +18,21 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.loanschedule.service.LoanScheduleWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "CREATESCHEDULEEXCEPTIONS")
 public class LoanScheduleCreateVariationCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanScheduleWritePlatformService 
loanScheduleWritePlatformService;
 
-    @Autowired
-    public LoanScheduleCreateVariationCommandHandler(final 
LoanScheduleWritePlatformService loanScheduleWritePlatformService) {
-        this.loanScheduleWritePlatformService = 
loanScheduleWritePlatformService;
-    }
-
     @Override
     public CommandProcessingResult processCommand(JsonCommand command) {
         return 
this.loanScheduleWritePlatformService.addLoanScheduleVariations(command.getLoanId(),
 command);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleDeleteVariationCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleDeleteVariationCommandHandler.java
index 4349da319..e6e962624 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleDeleteVariationCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/LoanScheduleDeleteVariationCommandHandler.java
@@ -18,25 +18,21 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.loanschedule.service.LoanScheduleWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "DELETESCHEDULEEXCEPTIONS")
 public class LoanScheduleDeleteVariationCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanScheduleWritePlatformService 
loanScheduleWritePlatformService;
 
-    @Autowired
-    public LoanScheduleDeleteVariationCommandHandler(final 
LoanScheduleWritePlatformService loanScheduleWritePlatformService) {
-        this.loanScheduleWritePlatformService = 
loanScheduleWritePlatformService;
-    }
-
     @Override
     public CommandProcessingResult processCommand(JsonCommand command) {
         return 
this.loanScheduleWritePlatformService.deleteLoanScheduleVariations(command.getLoanId());
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/PayLoanChargeCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/PayLoanChargeCommandHandler.java
index 15ce2092e..a893675ad 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/PayLoanChargeCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/PayLoanChargeCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOANCHARGE", action = "PAY")
 public class PayLoanChargeCommandHandler implements NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public PayLoanChargeCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RecoverFromGuarantorCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RecoverFromGuarantorCommandHandler.java
index 7098d18c9..2c25fdfd7 100755
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RecoverFromGuarantorCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RecoverFromGuarantorCommandHandler.java
@@ -18,25 +18,21 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "RECOVERGUARANTEES")
 public class RecoverFromGuarantorCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public RecoverFromGuarantorCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Override
     public CommandProcessingResult processCommand(JsonCommand command) {
         return 
this.writePlatformService.recoverFromGuarantor(command.getLoanId());
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RemoveLoanOfficerCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RemoveLoanOfficerCommandHandler.java
index 601f20bed..15e791cb1 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RemoveLoanOfficerCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/RemoveLoanOfficerCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "REMOVELOANOFFICER")
 public class RemoveLoanOfficerCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public RemoveLoanOfficerCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoDisbursalLoanCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoDisbursalLoanCommandHandler.java
index c4ef400bf..f1214b772 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoDisbursalLoanCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoDisbursalLoanCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "DISBURSALUNDO")
 public class UndoDisbursalLoanCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public UndoDisbursalLoanCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java
index 9370256ae..f16c0ba43 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanApplicationApproval.java
@@ -19,26 +19,22 @@
 
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanApplicationWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "GLIMLOAN", action = "UNDOAPPROVAL")
 public class UndoGLIMLoanApplicationApproval implements 
NewCommandSourceHandler {
 
     private final LoanApplicationWritePlatformService writePlatformService;
 
-    @Autowired
-    public UndoGLIMLoanApplicationApproval(final 
LoanApplicationWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanDisbursalCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanDisbursalCommandHandler.java
index 8b5d9eb93..7ab5b49ac 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanDisbursalCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoGLIMLoanDisbursalCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "GLIMLOAN", action = "UNDODISBURSAL")
 public class UndoGLIMLoanDisbursalCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public UndoGLIMLoanDisbursalCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLastDisbursalLoanCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLastDisbursalLoanCommandHandler.java
index 32fa41732..edf72ab22 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLastDisbursalLoanCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLastDisbursalLoanCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "DISBURSALLASTUNDO")
 public class UndoLastDisbursalLoanCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public UndoLastDisbursalLoanCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLoanChargeWaiveCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLoanChargeWaiveCommandHandler.java
index a737d3407..6654742d8 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLoanChargeWaiveCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoLoanChargeWaiveCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "WAIVECHARGE", action = "UNDO")
 public class UndoLoanChargeWaiveCommandHandler implements 
NewCommandSourceHandler {
 
     final LoanWritePlatformService loanWritePlatformService;
 
-    @Autowired
-    public UndoLoanChargeWaiveCommandHandler(final LoanWritePlatformService 
loanWritePlatformService) {
-        this.loanWritePlatformService = loanWritePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoWriteOffLoanCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoWriteOffLoanCommandHandler.java
index 440418196..f0559fa65 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoWriteOffLoanCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UndoWriteOffLoanCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "UNDOWRITEOFF")
 public class UndoWriteOffLoanCommandHandler implements NewCommandSourceHandler 
{
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public UndoWriteOffLoanCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanChargeCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanChargeCommandHandler.java
index 0b0669030..866ce4af9 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanChargeCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanChargeCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOANCHARGE", action = "UPDATE")
 public class UpdateLoanChargeCommandHandler implements NewCommandSourceHandler 
{
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public UpdateLoanChargeCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java
index 6089a67c3..af5cde066 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanDisbuseDateCommandHandler.java
@@ -18,24 +18,20 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 public class UpdateLoanDisbuseDateCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public UpdateLoanDisbuseDateCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanOfficerCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanOfficerCommandHandler.java
index 6224cef78..5d840bf6e 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanOfficerCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/UpdateLoanOfficerCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "UPDATELOANOFFICER")
 public class UpdateLoanOfficerCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public UpdateLoanOfficerCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveInterestPortionOnLoanCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveInterestPortionOnLoanCommandHandler.java
index def216926..a80f32b47 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveInterestPortionOnLoanCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveInterestPortionOnLoanCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "WAIVEINTERESTPORTION")
 public class WaiveInterestPortionOnLoanCommandHandler implements 
NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public WaiveInterestPortionOnLoanCommandHandler(final 
LoanWritePlatformService writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveLoanChargeCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveLoanChargeCommandHandler.java
index 9e45bdd7e..2917e139e 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveLoanChargeCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WaiveLoanChargeCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOANCHARGE", action = "WAIVE")
 public class WaiveLoanChargeCommandHandler implements NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public WaiveLoanChargeCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WriteOffLoanCommandHandler.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WriteOffLoanCommandHandler.java
index dc1ae5c75..297f85a18 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WriteOffLoanCommandHandler.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/handler/WriteOffLoanCommandHandler.java
@@ -18,26 +18,22 @@
  */
 package org.apache.fineract.portfolio.loanaccount.handler;
 
+import lombok.RequiredArgsConstructor;
 import org.apache.fineract.commands.annotation.CommandType;
 import org.apache.fineract.commands.handler.NewCommandSourceHandler;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
 import 
org.apache.fineract.portfolio.loanaccount.service.LoanWritePlatformService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
+@RequiredArgsConstructor
 @CommandType(entity = "LOAN", action = "WRITEOFF")
 public class WriteOffLoanCommandHandler implements NewCommandSourceHandler {
 
     private final LoanWritePlatformService writePlatformService;
 
-    @Autowired
-    public WriteOffLoanCommandHandler(final LoanWritePlatformService 
writePlatformService) {
-        this.writePlatformService = writePlatformService;
-    }
-
     @Transactional
     @Override
     public CommandProcessingResult processCommand(final JsonCommand command) {

Reply via email to