adamsaghy commented on code in PR #4750:
URL: https://github.com/apache/fineract/pull/4750#discussion_r2137233029


##########
integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanCapitalizedIncomeTest.java:
##########
@@ -683,4 +683,135 @@ public void testLoanCapitalizedIncomeOnLoanClosed() {
         });
     }
 
+    @Test
+    public void testSummarizedAmortization() {
+        final AtomicReference<Long> loanIdRef = new AtomicReference<>();
+        final AtomicReference<Long> capitalizedIncomeIdRef = new 
AtomicReference<>();
+
+        final PostClientsResponse client = 
clientHelper.createClient(ClientHelper.defaultClientCreationRequest());
+
+        final PostLoanProductsResponse loanProductsResponse = loanProductHelper
+                
.createLoanProduct(create4IProgressive().enableIncomeCapitalization(true)
+                        
.capitalizedIncomeCalculationType(PostLoanProductsRequest.CapitalizedIncomeCalculationTypeEnum.FLAT)
+                        
.capitalizedIncomeStrategy(PostLoanProductsRequest.CapitalizedIncomeStrategyEnum.EQUAL_AMORTIZATION)
+                        
.deferredIncomeLiabilityAccountId(deferredIncomeLiabilityAccount.getAccountID().longValue())
+                        
.incomeFromCapitalizationAccountId(feeIncomeAccount.getAccountID().longValue())
+                        
.capitalizedIncomeType(PostLoanProductsRequest.CapitalizedIncomeTypeEnum.FEE));
+
+        runAt("2 January 2024", () -> {
+            Long loanId = applyAndApproveProgressiveLoan(client.getClientId(), 
loanProductsResponse.getResourceId(), "1 January 2024",
+                    500.0, 7.0, 3, null);
+            loanIdRef.set(loanId);
+
+            disburseLoan(loanId, BigDecimal.valueOf(100), "1 January 2024");
+            PostLoansLoanIdTransactionsResponse capitalizedIncomeResponse = 
loanTransactionHelper.addCapitalizedIncome(loanId,
+                    "1 January 2024", 100.0);
+            
capitalizedIncomeIdRef.set(capitalizedIncomeResponse.getResourceId());
+
+            executeInlineCOB(loanId);
+        });
+        runAt("10 January 2024", () -> {
+            Long loanId = loanIdRef.get();
+            executeInlineCOB(loanId);
+            loanTransactionHelper.capitalizedIncomeAdjustment(loanId, 
capitalizedIncomeIdRef.get(), "4 January 2024", 60.0);
+        });
+        runAt("11 January 2024", () -> {
+            Long loanId = loanIdRef.get();
+            executeInlineCOB(loanId);
+            // loanTransactionHelper.capitalizedIncomeAdjustment(loanId, 
capitalizedIncomeIdRef.get(), "4 January 2024",
+            // 60.0);
+        });
+        runAt("12 January 2024", () -> {
+            Long loanId = loanIdRef.get();
+            executeInlineCOB(loanId);
+        });
+    }
+
+    @Test
+    public void testCapitalizedIncomeEvents() {
+        final AtomicReference<Long> loanIdRef = new AtomicReference<>();
+        final AtomicReference<Long> capitalizedIncomeTransactionIdRef = new 
AtomicReference<>();
+        final AtomicReference<Long> 
capitalizedIncomeAdjustmentTransactionIdRef = new AtomicReference<>();
+
+        final PostClientsResponse client = 
clientHelper.createClient(ClientHelper.defaultClientCreationRequest());
+
+        final PostLoanProductsResponse loanProductsResponse = loanProductHelper
+                
.createLoanProduct(create4IProgressive().enableIncomeCapitalization(true)
+                        
.capitalizedIncomeCalculationType(PostLoanProductsRequest.CapitalizedIncomeCalculationTypeEnum.FLAT)
+                        
.capitalizedIncomeStrategy(PostLoanProductsRequest.CapitalizedIncomeStrategyEnum.EQUAL_AMORTIZATION)
+                        
.deferredIncomeLiabilityAccountId(deferredIncomeLiabilityAccount.getAccountID().longValue())
+                        
.incomeFromCapitalizationAccountId(feeIncomeAccount.getAccountID().longValue())
+                        
.capitalizedIncomeType(PostLoanProductsRequest.CapitalizedIncomeTypeEnum.FEE));
+
+        runAt("1 January 2024", () -> {
+            Long loanId = applyAndApproveProgressiveLoan(client.getClientId(), 
loanProductsResponse.getResourceId(), "1 January 2024",
+                    500.0, 7.0, 3, null);
+            loanIdRef.set(loanId);
+
+            disburseLoan(loanId, BigDecimal.valueOf(100), "1 January 2024");
+
+            Long capitalizedIncomeTransactionId = 
loanTransactionHelper.addCapitalizedIncome(loanId, "1 January 2024", 100.0)
+                    .getResourceId();
+            
capitalizedIncomeTransactionIdRef.set(capitalizedIncomeTransactionId);
+        });
+        runAt("2 January 2024", () -> {
+            Long loanId = loanIdRef.get();
+            executeInlineCOB(loanId);
+
+            // verifyTransactions(loanId, //
+            // transaction(100.0, "Disbursement", "01 January 2024"), //
+            // transaction(100.0, "Capitalized Income", "01 January 2024"), //
+            // transaction(1.10, "Capitalized Income Amortization", "01 
January 2024") //
+            // );
+        });
+        runAt("3 January 2024", () -> {
+            Long loanId = loanIdRef.get();
+            executeInlineCOB(loanId);
+
+            Long capitalizedIncomeAdjustmentTransactionId = 
loanTransactionHelper
+                    .capitalizedIncomeAdjustment(loanId, 
capitalizedIncomeTransactionIdRef.get(), "3 January 2024", 
100.0).getResourceId();
+            
capitalizedIncomeAdjustmentTransactionIdRef.set(capitalizedIncomeAdjustmentTransactionId);
+            // verifyTransactions(loanId, //

Review Comment:
   REmove if not needed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to