diff --git a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature index 4ebcffa87..8bfb941e4 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/EMICalculation.feature @@ -348,15 +348,15 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 08 January 2024 | | 200.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 250.69 | 49.31 | 2.02 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | - | 2 | 29 | 01 March 2024 | | 201.34 | 49.35 | 1.98 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | - | 3 | 31 | 01 April 2024 | | 151.6 | 49.74 | 1.59 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | - | 4 | 30 | 01 May 2024 | | 101.47 | 50.13 | 1.2 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | - | 5 | 31 | 01 June 2024 | | 50.94 | 50.53 | 0.8 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | - | 6 | 30 | 01 July 2024 | | 0.0 | 50.94 | 0.4 | 0.0 | 0.0 | 51.34 | 0.0 | 0.0 | 0.0 | 51.34 | + | 1 | 31 | 01 February 2024 | | 250.68 | 49.32 | 2.01 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | + | 2 | 29 | 01 March 2024 | | 201.33 | 49.35 | 1.98 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | + | 3 | 31 | 01 April 2024 | | 151.59 | 49.74 | 1.59 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | + | 4 | 30 | 01 May 2024 | | 101.46 | 50.13 | 1.2 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | + | 5 | 31 | 01 June 2024 | | 50.93 | 50.53 | 0.8 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | + | 6 | 30 | 01 July 2024 | | 0.0 | 50.93 | 0.4 | 0.0 | 0.0 | 51.33 | 0.0 | 0.0 | 0.0 | 51.33 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 300.0 | 7.99 | 0.0 | 0.0 | 307.99 | 0.0 | 0.0 | 0.0 | 307.99 | + | 300.0 | 7.98 | 0.0 | 0.0 | 307.98 | 0.0 | 0.0 | 0.0 | 307.98 | # TODO unskip and check when early repayment for EMI is implemented (PS-2076, PS-1958) @Skip @TestRailId:C3195 @@ -611,14 +611,14 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 01 February 2024 | 83.66 | 16.34 | 0.79 | 0.0 | 0.0 | 17.13 | 17.13 | 0.0 | 0.0 | 0.0 | | | | 25 February 2024 | | 200.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 2 | 29 | 01 March 2024 | | 226.78 | 56.88 | 0.94 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | - | 3 | 31 | 01 April 2024 | | 170.75 | 56.03 | 1.79 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | - | 4 | 30 | 01 May 2024 | | 114.28 | 56.47 | 1.35 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | - | 5 | 31 | 01 June 2024 | | 57.36 | 56.92 | 0.9 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | - | 6 | 30 | 01 July 2024 | | 0.0 | 57.36 | 0.45 | 0.0 | 0.0 | 57.81 | 0.0 | 0.0 | 0.0 | 57.81 | + | 2 | 29 | 01 March 2024 | | 226.77 | 56.89 | 0.93 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | + | 3 | 31 | 01 April 2024 | | 170.74 | 56.03 | 1.79 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | + | 4 | 30 | 01 May 2024 | | 114.27 | 56.47 | 1.35 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | + | 5 | 31 | 01 June 2024 | | 57.35 | 56.92 | 0.9 | 0.0 | 0.0 | 57.82 | 0.0 | 0.0 | 0.0 | 57.82 | + | 6 | 30 | 01 July 2024 | | 0.0 | 57.35 | 0.45 | 0.0 | 0.0 | 57.8 | 0.0 | 0.0 | 0.0 | 57.8 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 300.0 | 6.22 | 0.0 | 0.0 | 306.22 | 17.13 | 0.0 | 0.0 | 289.09 | + | 300.0 | 6.21 | 0.0 | 0.0 | 306.21 | 17.13 | 0.0 | 0.0 | 289.08 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | @@ -3528,15 +3528,15 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan Then Loan Repayment schedule has 6 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 83.52 | 16.48 | 0.53 | 0.0 | 0.0 | 17.01 | 15.0 | 15.0 | 0.0 | 2.01 | - | 2 | 29 | 01 March 2024 | | 67.0 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 3 | 31 | 01 April 2024 | | 50.38 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 4 | 30 | 01 May 2024 | | 33.66 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.85 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.85 | 0.1 | 0.0 | 0.0 | 16.95 | 0.0 | 0.0 | 0.0 | 16.95 | + | 1 | 31 | 01 February 2024 | | 83.53 | 16.47 | 0.54 | 0.0 | 0.0 | 17.01 | 15.0 | 15.0 | 0.0 | 2.01 | + | 2 | 29 | 01 March 2024 | | 67.01 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 3 | 31 | 01 April 2024 | | 50.39 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 4 | 30 | 01 May 2024 | | 33.67 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.86 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.86 | 0.1 | 0.0 | 0.0 | 16.96 | 0.0 | 0.0 | 0.0 | 16.96 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100.0 | 2.0 | 0.0 | 0.0 | 102.0 | 15.0 | 15.0 | 0.0 | 87.0 | + | 100.0 | 2.01 | 0.0 | 0.0 | 102.01| 15.0 | 15.0 | 0.0 | 87.01 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | @@ -3680,9 +3680,9 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 15 January 2024 | Repayment | 15.0 | 14.74 | 0.26 | 0.0 | 0.0 | 85.26 | false | false | | 15 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 16 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 17 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 18 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 17 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 18 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Repayment | 2.01 | 1.93 | 0.08 | 0.0 | 0.0 | 83.33 | false | false | @TestRailId:C3256 @@ -3780,13 +3780,13 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 15 January 2024 | 83.25 | 16.75 | 0.26 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0 | 0.0 | | 2 | 29 | 01 March 2024 | 15 January 2024 | 66.24 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | | 50.22 | 16.02 | 0.99 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 4 | 30 | 01 May 2024 | | 33.5 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.69 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.69 | 0.1 | 0.0 | 0.0 | 16.79 | 0.0 | 0.0 | 0.0 | 16.79 | + | 3 | 31 | 01 April 2024 | | 50.23 | 16.01 | 1.0 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 4 | 30 | 01 May 2024 | | 33.51 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.7 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.7 | 0.1 | 0.0 | 0.0 | 16.8 | 0.0 | 0.0 | 0.0 | 16.8 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100.0 | 1.84 | 0.0 | 0.0 | 101.84 | 34.02 | 34.02 | 0.0 | 67.82 | + | 100.0 | 1.85 | 0.0 | 0.0 | 101.85 | 34.02 | 34.02 | 0.0 | 67.83 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | @@ -3940,7 +3940,7 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 16 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 17 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "25 January 2024" When Admin runs inline COB job for Loan Then Loan Transactions tab has the following data: @@ -3964,8 +3964,8 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 16 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 17 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 22 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | @@ -4082,10 +4082,10 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 22 January 2024 | 750.53 | 249.47 | 5.68 | 0.0 | 0.0 | 255.15 | 255.15 | 255.15 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 22 January 2024 | 495.38 | 255.15 | 0.0 | 0.0 | 0.0 | 255.15 | 255.15 | 255.15 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 22 January 2024 | 240.23 | 255.15 | 0.0 | 0.0 | 0.0 | 255.15 | 255.15 | 255.15 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 22 January 2024 | 0.0 | 240.23 | 0.0 | 0.0 | 0.0 | 240.23 | 240.23 | 240.23 | 0.0 | 0.0 | + | 1 | 31 | 01 February 2024 | 22 January 2024 | 750.54 | 249.46 | 5.68 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 22 January 2024 | 495.4 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 22 January 2024 | 240.26 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 22 January 2024 | 0.0 | 240.26 | 0.0 | 0.0 | 0.0 | 240.26 | 240.26 | 240.26 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1000.0 | 5.68 | 0.0 | 0.0 | 1005.68 | 1005.68 | 1005.68 | 0.0 | 0.0 | @@ -4354,10 +4354,10 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 753.24 | 246.76 | 8.39 | 0.0 | 0.0 | 255.15 | 0.0 | 0.0 | 0.0 | 255.15 | - | 2 | 29 | 01 March 2024 | | 504.0 | 249.24 | 5.91 | 0.0 | 0.0 | 255.15 | 0.0 | 0.0 | 0.0 | 255.15 | - | 3 | 31 | 01 April 2024 | | 253.08 | 250.92 | 4.23 | 0.0 | 0.0 | 255.15 | 0.0 | 0.0 | 0.0 | 255.15 | - | 4 | 30 | 01 May 2024 | | 0.0 | 253.08 | 2.05 | 0.0 | 0.0 | 255.13 | 0.0 | 0.0 | 0.0 | 255.13 | + | 1 | 31 | 01 February 2024 | | 753.25 | 246.75 | 8.39 | 0.0 | 0.0 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | + | 2 | 29 | 01 March 2024 | | 504.02 | 249.23 | 5.91 | 0.0 | 0.0 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | + | 3 | 31 | 01 April 2024 | | 253.11 | 250.91 | 4.23 | 0.0 | 0.0 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | + | 4 | 30 | 01 May 2024 | | 0.0 | 253.11 | 2.05 | 0.0 | 0.0 | 255.16 | 0.0 | 0.0 | 0.0 | 255.16 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1000.0 | 20.58 | 0.0 | 0.0 | 1020.58 | 0.0 | 0.0 | 0.0 | 1020.58 | @@ -4371,10 +4371,10 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 22 January 2024 | 750.53 | 249.47 | 5.68 | 0.0 | 0.0 | 255.15 | 255.15 | 255.15 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 500.68 | 249.85 | 5.3 | 0.0 | 0.0 | 255.15 | 247.69 | 247.69 | 0.0 | 7.46 | - | 3 | 31 | 01 April 2024 | | 249.73 | 250.95 | 4.2 | 0.0 | 0.0 | 255.15 | 0.0 | 0.0 | 0.0 | 255.15 | - | 4 | 30 | 01 May 2024 | | 0.0 | 249.73 | 2.03 | 0.0 | 0.0 | 251.76 | 0.0 | 0.0 | 0.0 | 251.76 | + | 1 | 31 | 01 February 2024 | 22 January 2024 | 750.54 | 249.46 | 5.68 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | | 500.7 | 249.84 | 5.3 | 0.0 | 0.0 | 255.14 | 247.7 | 247.7 | 0.0 | 7.44 | + | 3 | 31 | 01 April 2024 | | 249.76 | 250.94 | 4.2 | 0.0 | 0.0 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | + | 4 | 30 | 01 May 2024 | | 0.0 | 249.76 | 2.03 | 0.0 | 0.0 | 251.79 | 0.0 | 0.0 | 0.0 | 251.79 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1000.0 | 17.21 | 0.0 | 0.0 | 1017.21 | 502.84 | 502.84 | 0.0 | 514.37 | @@ -4394,13 +4394,13 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 22 January 2024 | 750.53 | 249.47 | 5.68 | 0.0 | 0.0 | 255.15 | 255.15 | 255.15 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 01 March 2024 | 500.68 | 249.85 | 5.3 | 0.0 | 0.0 | 255.15 | 255.15 | 247.69 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 01 April 2024 | 249.73 | 250.95 | 4.2 | 0.0 | 0.0 | 255.15 | 255.15 | 0.0 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 249.73 | 2.03 | 0.0 | 0.0 | 251.76 | 251.76 | 0.0 | 0.0 | 0.0 | + | 1 | 31 | 01 February 2024 | 22 January 2024 | 750.54 | 249.46 | 5.68 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 01 March 2024 | 500.7 | 249.84 | 5.3 | 0.0 | 0.0 | 255.14 | 255.14 | 247.7 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 01 April 2024 | 249.76 | 250.94 | 4.2 | 0.0 | 0.0 | 255.14 | 255.14 | 0.02 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 249.76 | 2.03 | 0.0 | 0.0 | 251.79 | 251.79 | 0.03 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 17.21 | 0.0 | 0.0 | 1017.21 | 1017.21 | 502.84 | 0.0 | 0.0 | + | 1000.0 | 17.21 | 0.0 | 0.0 | 1017.21 | 1017.21 | 502.89 | 0.0 | 0.0 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | @@ -4430,19 +4430,19 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 07 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 22 January 2024 | 749.63 | 250.37 | 4.47 | 0.0 | 0.0 | 254.84 | 254.84 | 254.84 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 500.09 | 249.54 | 5.3 | 0.0 | 0.0 | 254.84 | 247.6 | 247.6 | 0.0 | 7.24 | - | 3 | 31 | 01 April 2024 | | 249.44 | 250.65 | 4.19 | 0.0 | 0.0 | 254.84 | 0.0 | 0.0 | 0.0 | 254.84 | - | 4 | 30 | 01 May 2024 | | 0.0 | 249.44 | 2.02 | 0.0 | 0.0 | 251.46 | 0.0 | 0.0 | 0.0 | 251.46 | + | 1 | 31 | 01 February 2024 | 22 January 2024 | 749.63 | 250.37 | 4.46 | 0.0 | 0.0 | 254.83 | 254.83 | 254.83 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | | 500.1 | 249.53 | 5.3 | 0.0 | 0.0 | 254.83 | 247.6 | 247.6 | 0.0 | 7.23 | + | 3 | 31 | 01 April 2024 | | 249.46 | 250.64 | 4.19 | 0.0 | 0.0 | 254.83 | 0.0 | 0.0 | 0.0 | 254.83 | + | 4 | 30 | 01 May 2024 | | 0.0 | 249.46 | 2.02 | 0.0 | 0.0 | 251.48 | 0.0 | 0.0 | 0.0 | 251.48 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 15.98 | 0.0 | 0.0 | 1015.98 | 502.44 | 502.44 | 0.0 | 513.54 | + | 1000.0 | 15.97 | 0.0 | 0.0 | 1015.97 | 502.43 | 502.43 | 0.0 | 513.54 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | | 07 January 2024 | Disbursement | 750.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | - | 22 January 2024 | Merchant Issued Refund | 500.0 | 495.53 | 4.47 | 0.0 | 0.0 | 504.47 | false | false | - | 22 January 2024 | Interest Refund | 2.44 | 2.44 | 0.0 | 0.0 | 0.0 | 502.03 | false | false | + | 22 January 2024 | Merchant Issued Refund | 500.0 | 495.54 | 4.46 | 0.0 | 0.0 | 504.46 | false | false | + | 22 January 2024 | Interest Refund | 2.43 | 2.43 | 0.0 | 0.0 | 0.0 | 502.03 | false | false | When Admin sets the business date to "01 March 2024" And Customer makes "AUTOPAY" repayment on "01 March 2024" with 7.24 EUR transaction amount When Admin sets the business date to "01 April 2024" @@ -4453,23 +4453,23 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 07 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 22 January 2024 | 749.63 | 250.37 | 4.47 | 0.0 | 0.0 | 254.84 | 254.84 | 254.84 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 01 March 2024 | 500.09 | 249.54 | 5.3 | 0.0 | 0.0 | 254.84 | 254.84 | 247.6 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 01 April 2024 | 249.44 | 250.65 | 4.19 | 0.0 | 0.0 | 254.84 | 254.84 | 0.0 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 249.44 | 2.02 | 0.0 | 0.0 | 251.46 | 251.46 | 0.0 | 0.0 | 0.0 | + | 1 | 31 | 01 February 2024 | 22 January 2024 | 749.63 | 250.37 | 4.46 | 0.0 | 0.0 | 254.83 | 254.83 | 254.83 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 01 March 2024 | 500.1 | 249.53 | 5.3 | 0.0 | 0.0 | 254.83 | 254.83 | 247.6 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 01 April 2024 | 249.46 | 250.64 | 4.19 | 0.0 | 0.0 | 254.83 | 254.83 | 0.01 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 249.46 | 2.02 | 0.0 | 0.0 | 251.48 | 251.48 | 0.02 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 15.98 | 0.0 | 0.0 | 1015.98 | 1015.98 | 502.44 | 0.0 | 0.0 | + | 1000.0 | 15.97 | 0.0 | 0.0 | 1015.97 | 1015.97 | 502.46 | 0.0 | 0.0 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | | 07 January 2024 | Disbursement | 750.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | - | 22 January 2024 | Merchant Issued Refund | 500.0 | 495.53 | 4.47 | 0.0 | 0.0 | 504.47 | false | false | - | 22 January 2024 | Interest Refund | 2.44 | 2.44 | 0.0 | 0.0 | 0.0 | 502.03 | false | false | + | 22 January 2024 | Merchant Issued Refund | 500.0 | 495.54 | 4.46 | 0.0 | 0.0 | 504.46 | false | false | + | 22 January 2024 | Interest Refund | 2.43 | 2.43 | 0.0 | 0.0 | 0.0 | 502.03 | false | false | | 01 March 2024 | Repayment | 7.24 | 1.94 | 5.3 | 0.0 | 0.0 | 500.09 | false | false | | 01 April 2024 | Repayment | 254.84 | 250.65 | 4.19 | 0.0 | 0.0 | 249.44 | false | false | | 01 May 2024 | Repayment | 251.46 | 249.44 | 2.02 | 0.0 | 0.0 | 0.0 | false | false | - | 01 May 2024 | Accrual | 15.98 | 0.0 | 15.98 | 0.0 | 0.0 | 0.0 | false | false | + | 01 May 2024 | Accrual | 15.97 | 0.0 | 15.97 | 0.0 | 0.0 | 0.0 | false | false | Then Loan status will be "CLOSED_OBLIGATIONS_MET" @TestRailId:C3281 @@ -4487,10 +4487,10 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 07 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 752.33 | 247.67 | 7.17 | 0.0 | 0.0 | 254.84 | 0.0 | 0.0 | 0.0 | 254.84 | - | 2 | 29 | 01 March 2024 | | 503.39 | 248.94 | 5.9 | 0.0 | 0.0 | 254.84 | 0.0 | 0.0 | 0.0 | 254.84 | - | 3 | 31 | 01 April 2024 | | 252.77 | 250.62 | 4.22 | 0.0 | 0.0 | 254.84 | 0.0 | 0.0 | 0.0 | 254.84 | - | 4 | 30 | 01 May 2024 | | 0.0 | 252.77 | 2.05 | 0.0 | 0.0 | 254.82 | 0.0 | 0.0 | 0.0 | 254.82 | + | 1 | 31 | 01 February 2024 | | 752.34 | 247.66 | 7.17 | 0.0 | 0.0 | 254.83 | 0.0 | 0.0 | 0.0 | 254.83 | + | 2 | 29 | 01 March 2024 | | 503.41 | 248.93 | 5.9 | 0.0 | 0.0 | 254.83 | 0.0 | 0.0 | 0.0 | 254.83 | + | 3 | 31 | 01 April 2024 | | 252.8 | 250.61 | 4.22 | 0.0 | 0.0 | 254.83 | 0.0 | 0.0 | 0.0 | 254.83 | + | 4 | 30 | 01 May 2024 | | 0.0 | 252.8 | 2.05 | 0.0 | 0.0 | 254.85 | 0.0 | 0.0 | 0.0 | 254.85 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1000.0 | 19.34 | 0.0 | 0.0 | 1019.34 | 0.0 | 0.0 | 0.0 | 1019.34 | @@ -4499,23 +4499,23 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | | 07 January 2024 | Disbursement | 750.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | When Admin sets the business date to "01 February 2024" - And Customer makes "AUTOPAY" repayment on "01 February 2024" with 254.84 EUR transaction amount + And Customer makes "AUTOPAY" repayment on "01 February 2024" with 254.83 EUR transaction amount When Admin sets the business date to "01 March 2024" - And Customer makes "AUTOPAY" repayment on "01 March 2024" with 254.84 EUR transaction amount + And Customer makes "AUTOPAY" repayment on "01 March 2024" with 254.83 EUR transaction amount When Admin sets the business date to "01 April 2024" - And Customer makes "AUTOPAY" repayment on "01 April 2024" with 254.84 EUR transaction amount + And Customer makes "AUTOPAY" repayment on "01 April 2024" with 254.83 EUR transaction amount When Admin sets the business date to "01 May 2024" - And Customer makes "AUTOPAY" repayment on "01 May 2024" with 254.82 EUR transaction amount + And Customer makes "AUTOPAY" repayment on "01 May 2024" with 254.85 EUR transaction amount When Admin sets the business date to "10 May 2024" When Customer makes "PAYOUT_REFUND" transaction with "AUTOPAY" payment type on "10 May 2024" with 500 EUR transaction amount and system-generated Idempotency key Then Loan Repayment schedule has 4 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 07 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 01 February 2024 | 752.33 | 247.67 | 7.17 | 0.0 | 0.0 | 254.84 | 254.84 | 0.0 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 01 March 2024 | 503.39 | 248.94 | 5.9 | 0.0 | 0.0 | 254.84 | 254.84 | 0.0 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 01 April 2024 | 252.77 | 250.62 | 4.22 | 0.0 | 0.0 | 254.84 | 254.84 | 0.0 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 252.77 | 2.05 | 0.0 | 0.0 | 254.82 | 254.82 | 0.0 | 0.0 | 0.0 | + | 1 | 31 | 01 February 2024 | 01 February 2024 | 752.34 | 247.66 | 7.17 | 0.0 | 0.0 | 254.83 | 254.83 | 0.0 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 01 March 2024 | 503.41 | 248.93 | 5.9 | 0.0 | 0.0 | 254.83 | 254.83 | 0.0 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 01 April 2024 | 252.8 | 250.61 | 4.22 | 0.0 | 0.0 | 254.83 | 254.83 | 0.0 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 252.8 | 2.05 | 0.0 | 0.0 | 254.85 | 254.85 | 0.0 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1000.0 | 19.34 | 0.0 | 0.0 | 1019.34 | 1019.34 | 0.0 | 0.0 | 0.0 | @@ -4523,10 +4523,10 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | | 07 January 2024 | Disbursement | 750.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | - | 01 February 2024 | Repayment | 254.84 | 247.67 | 7.17 | 0.0 | 0.0 | 752.33 | false | false | - | 01 March 2024 | Repayment | 254.84 | 248.94 | 5.9 | 0.0 | 0.0 | 503.39 | false | false | - | 01 April 2024 | Repayment | 254.84 | 250.62 | 4.22 | 0.0 | 0.0 | 252.77 | false | false | - | 01 May 2024 | Repayment | 254.82 | 252.77 | 2.05 | 0.0 | 0.0 | 0.0 | false | false | + | 01 February 2024 | Repayment | 254.83 | 247.66 | 7.17 | 0.0 | 0.0 | 752.34 | false | false | + | 01 March 2024 | Repayment | 254.83 | 248.93 | 5.9 | 0.0 | 0.0 | 503.41 | false | false | + | 01 April 2024 | Repayment | 254.83 | 250.61 | 4.22 | 0.0 | 0.0 | 252.8 | false | false | + | 01 May 2024 | Repayment | 254.85 | 252.8 | 2.05 | 0.0 | 0.0 | 0.0 | false | false | | 01 May 2024 | Accrual | 19.34 | 0.0 | 19.34 | 0.0 | 0.0 | 0.0 | false | false | | 10 May 2024 | Payout Refund | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | | 10 May 2024 | Interest Refund | 14.01 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | @@ -4536,10 +4536,10 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 07 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 01 February 2024 | 752.33 | 247.67 | 7.17 | 0.0 | 0.0 | 254.84 | 254.84 | 0.0 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 01 March 2024 | 503.39 | 248.94 | 5.9 | 0.0 | 0.0 | 254.84 | 254.84 | 0.0 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 01 April 2024 | 252.77 | 250.62 | 4.22 | 0.0 | 0.0 | 254.84 | 254.84 | 0.0 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 252.77 | 2.05 | 0.0 | 0.0 | 254.82 | 254.82 | 0.0 | 0.0 | 0.0 | + | 1 | 31 | 01 February 2024 | 01 February 2024 | 752.34 | 247.66 | 7.17 | 0.0 | 0.0 | 254.83 | 254.83 | 0.0 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 01 March 2024 | 503.41 | 248.93 | 5.9 | 0.0 | 0.0 | 254.83 | 254.83 | 0.0 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 01 April 2024 | 252.8 | 250.61 | 4.22 | 0.0 | 0.0 | 254.83 | 254.83 | 0.0 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 01 May 2024 | 0.0 | 252.8 | 2.05 | 0.0 | 0.0 | 254.85 | 254.85 | 0.0 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1000.0 | 19.34 | 0.0 | 0.0 | 1019.34 | 1019.34 | 0.0 | 0.0 | 0.0 | @@ -4547,10 +4547,10 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | | 07 January 2024 | Disbursement | 750.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | - | 01 February 2024 | Repayment | 254.84 | 247.67 | 7.17 | 0.0 | 0.0 | 752.33 | false | false | - | 01 March 2024 | Repayment | 254.84 | 248.94 | 5.9 | 0.0 | 0.0 | 503.39 | false | false | - | 01 April 2024 | Repayment | 254.84 | 250.62 | 4.22 | 0.0 | 0.0 | 252.77 | false | false | - | 01 May 2024 | Repayment | 254.82 | 252.77 | 2.05 | 0.0 | 0.0 | 0.0 | false | false | + | 01 February 2024 | Repayment | 254.83 | 247.66 | 7.17 | 0.0 | 0.0 | 752.34 | false | false | + | 01 March 2024 | Repayment | 254.83 | 248.93 | 5.9 | 0.0 | 0.0 | 503.41 | false | false | + | 01 April 2024 | Repayment | 254.83 | 250.61 | 4.22 | 0.0 | 0.0 | 252.8 | false | false | + | 01 May 2024 | Repayment | 254.85 | 252.8 | 2.05 | 0.0 | 0.0 | 0.0 | false | false | | 01 May 2024 | Accrual | 19.34 | 0.0 | 19.34 | 0.0 | 0.0 | 0.0 | false | false | | 10 May 2024 | Payout Refund | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | | 10 May 2024 | Interest Refund | 14.01 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | @@ -4602,20 +4602,20 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 14 January 2024 | 748.38 | 251.62 | 3.52 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 22 January 2024 | 494.33 | 254.05 | 1.09 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 22 January 2024 | 239.19 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 22 January 2024 | 0.0 | 239.19 | 0.0 | 0.0 | 0.0 | 239.19 | 239.19 | 239.19 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 22 January 2024 | 494.32 | 254.06 | 1.08 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 22 January 2024 | 239.18 | 255.14 | 0.0 | 0.0 | 0.0 | 255.14 | 255.14 | 255.14 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 22 January 2024 | 0.0 | 239.18 | 0.0 | 0.0 | 0.0 | 239.18 | 239.18 | 239.18 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 4.61 | 0.0 | 0.0 | 1004.61 | 1004.61 | 1004.61 | 0.0 | 0.0 | + | 1000.0 | 4.6 | 0.0 | 0.0 | 1004.6 | 1004.6 | 1004.6 | 0.0 | 0.0 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | | 14 January 2024 | Merchant Issued Refund | 500.0 | 496.48 | 3.52 | 0.0 | 0.0 | 503.52 | false | false | | 14 January 2024 | Interest Refund | 1.76 | 1.76 | 0.0 | 0.0 | 0.0 | 501.76 | false | false | - | 22 January 2024 | Payout Refund | 500.0 | 498.91 | 1.09 | 0.0 | 0.0 | 2.85 | false | false | - | 22 January 2024 | Interest Refund | 2.85 | 2.85 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 4.61 | 0.0 | 4.61 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Payout Refund | 500.0 | 498.92 | 1.08 | 0.0 | 0.0 | 2.84 | false | false | + | 22 January 2024 | Interest Refund | 2.84 | 2.84 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 4.6 | 0.0 | 4.6 | 0.0 | 0.0 | 0.0 | false | false | Then Loan status will be "CLOSED_OBLIGATIONS_MET" @TestRailId:C3305 @@ -4706,12 +4706,12 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 836.91 | 163.09 | 8.39 | 0.0 | 0.0 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | - | 2 | 29 | 01 March 2024 | | 671.99 | 164.92 | 6.56 | 0.0 | 0.0 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | - | 3 | 31 | 01 April 2024 | | 506.14 | 165.85 | 5.63 | 0.0 | 0.0 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | - | 4 | 30 | 01 May 2024 | | 338.77 | 167.37 | 4.11 | 0.0 | 0.0 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | - | 5 | 31 | 01 June 2024 | | 170.13 | 168.64 | 2.84 | 0.0 | 0.0 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | - | 6 | 30 | 01 July 2024 | | 0.0 | 170.13 | 1.38 | 0.0 | 0.0 | 171.51 | 0.0 | 0.0 | 0.0 | 171.51 | + | 1 | 31 | 01 February 2024 | | 836.9 | 163.1 | 8.39 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 2 | 29 | 01 March 2024 | | 671.97 | 164.93 | 6.56 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 3 | 31 | 01 April 2024 | | 506.11 | 165.86 | 5.63 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 4 | 30 | 01 May 2024 | | 338.73 | 167.38 | 4.11 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 5 | 31 | 01 June 2024 | | 170.08 | 168.65 | 2.84 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 6 | 30 | 01 July 2024 | | 0.0 | 170.08 | 1.38 | 0.0 | 0.0 | 171.46 | 0.0 | 0.0 | 0.0 | 171.46 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1000.0 | 28.91 | 0.0 | 0.0 | 1028.91 | 0.0 | 0.0 | 0.0 | 1028.91 | @@ -4725,15 +4725,15 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 22 January 2024 | 834.2 | 165.8 | 5.68 | 0.0 | 0.0 | 171.48 | 171.48 | 171.48 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 22 January 2024 | 662.72 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | 171.48 | 171.48 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | | 500.76 | 161.96 | 9.52 | 0.0 | 0.0 | 171.48 | 159.88 | 159.88 | 0.0 | 11.6 | - | 4 | 30 | 01 May 2024 | | 333.34 | 167.42 | 4.06 | 0.0 | 0.0 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | - | 5 | 31 | 01 June 2024 | | 164.66 | 168.68 | 2.8 | 0.0 | 0.0 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | - | 6 | 30 | 01 July 2024 | | 0.0 | 164.66 | 1.34 | 0.0 | 0.0 | 166.0 | 0.0 | 0.0 | 0.0 | 166.0 | + | 1 | 31 | 01 February 2024 | 22 January 2024 | 834.19 | 165.81 | 5.68 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 22 January 2024 | 662.7 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | | 500.73 | 161.97 | 9.52 | 0.0 | 0.0 | 171.49 | 159.86 | 159.86 | 0.0 | 11.63 | + | 4 | 30 | 01 May 2024 | | 333.3 | 167.43 | 4.06 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 5 | 31 | 01 June 2024 | | 164.6 | 168.7 | 2.79 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 6 | 30 | 01 July 2024 | | 0.0 | 164.6 | 1.34 | 0.0 | 0.0 | 165.94 | 0.0 | 0.0 | 0.0 | 165.94 | Then Loan Repayment schedule has the following data in Total row: - | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 23.4 | 0.0 | 0.0 | 1023.4 | 502.84 | 502.84 | 0.0 | 520.56 | + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 1000.0 | 23.39 | 0.0 | 0.0 | 1023.39 | 502.84 | 502.84 | 0.0 | 520.55 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | @@ -4743,20 +4743,20 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan When Admin sets the business date to "26 January 2024" And Customer makes "PAYOUT_REFUND" transaction with "AUTOPAY" payment type on "26 January 2024" with 400 EUR transaction amount and system-generated Idempotency key When Admin sets the business date to "01 February 2024" - And Customer makes "AUTOPAY" repayment on "01 February 2024" with 100.84 EUR transaction amount + And Customer makes "AUTOPAY" repayment on "01 February 2024" with 100.85 EUR transaction amount Then Loan Repayment schedule has 6 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 750.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | 22 January 2024 | 834.2 | 165.8 | 5.68 | 0.0 | 0.0 | 171.48 | 171.48 | 171.48 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 22 January 2024 | 662.72 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | 171.48 | 171.48 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 26 January 2024 | 491.78 | 170.94 | 0.54 | 0.0 | 0.0 | 171.48 | 171.48 | 171.48 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 26 January 2024 | 320.3 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | 171.48 | 171.48 | 0.0 | 0.0 | - | 5 | 31 | 01 June 2024 | 26 January 2024 | 148.82 | 171.48 | 0.0 | 0.0 | 0.0 | 171.48 | 171.48 | 171.48 | 0.0 | 0.0 | - | 6 | 30 | 01 July 2024 | 01 February 2024 | 0.0 | 148.82 | 0.16 | 0.0 | 0.0 | 148.98 | 148.98 | 148.98 | 0.0 | 0.0 | + | 1 | 31 | 01 February 2024 | 22 January 2024 | 834.19 | 165.81 | 5.68 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 22 January 2024 | 662.7 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 26 January 2024 | 491.75 | 170.95 | 0.54 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 26 January 2024 | 320.26 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | + | 5 | 31 | 01 June 2024 | 26 January 2024 | 148.77 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | + | 6 | 30 | 01 July 2024 | 01 February 2024 | 0.0 | 148.77 | 0.17 | 0.0 | 0.0 | 148.94 | 148.94 | 148.94 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 6.38 | 0.0 | 0.0 | 1006.38 | 1006.38 | 1006.38 | 0.0 | 0.0 | + | 1000.0 | 6.39 | 0.0 | 0.0 | 1006.39 | 1006.39 | 1006.39 | 0.0 | 0.0 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | @@ -4765,8 +4765,8 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 22 January 2024 | Interest Refund | 2.84 | 2.84 | 0.0 | 0.0 | 0.0 | 502.84 | false | false | | 26 January 2024 | Payout Refund | 400.0 | 399.46 | 0.54 | 0.0 | 0.0 | 103.38 | false | false | | 26 January 2024 | Interest Refund | 2.7 | 2.7 | 0.0 | 0.0 | 0.0 | 100.68 | false | false | - | 01 February 2024 | Repayment | 100.84 | 100.68 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 01 February 2024 | Accrual | 6.38 | 0.0 | 6.38 | 0.0 | 0.0 | 0.0 | false | false | + | 01 February 2024 | Repayment | 100.85 | 100.68 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 01 February 2024 | Accrual | 6.39 | 0.0 | 6.39 | 0.0 | 0.0 | 0.0 | false | false | Then Loan status will be "CLOSED_OBLIGATIONS_MET" @TestRailId:C3307 @@ -4832,14 +4832,14 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 05 January 2024 | | 500.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 22 January 2024 | 833.75 | 166.25 | 5.14 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 26 January 2024 | 663.18 | 170.57 | 0.82 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 26 January 2024 | 491.79 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | | 329.54 | 162.25 | 9.14 | 0.0 | 0.0 | 171.39 | 139.8 | 139.8 | 0.0 | 31.59 | + | 2 | 29 | 01 March 2024 | 26 January 2024 | 663.17 | 170.58 | 0.81 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 26 January 2024 | 491.78 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | | 329.54 | 162.24 | 9.15 | 0.0 | 0.0 | 171.39 | 139.79 | 139.79 | 0.0 | 31.6 | | 5 | 31 | 01 June 2024 | | 160.91 | 168.63 | 2.76 | 0.0 | 0.0 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | | 6 | 30 | 01 July 2024 | | 0.0 | 160.91 | 1.31 | 0.0 | 0.0 | 162.22 | 0.0 | 0.0 | 0.0 | 162.22 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 19.17 | 0.0 | 0.0 | 1019.17 | 653.97 | 653.97 | 0.0 | 365.2 | + | 1000.0 | 19.17 | 0.0 | 0.0 | 1019.17 | 653.96 | 653.96 | 0.0 | 365.21 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 250.0 | 0.0 | 0.0 | 0.0 | 0.0 | 250.0 | false | false | @@ -4847,9 +4847,9 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 05 January 2024 | Disbursement | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | | 22 January 2024 | Payout Refund | 250.0 | 244.86 | 5.14 | 0.0 | 0.0 | 755.14 | false | false | | 22 January 2024 | Interest Refund | 1.42 | 1.42 | 0.0 | 0.0 | 0.0 | 753.72 | false | false | - | 26 January 2024 | Merchant Issued Refund | 400.0 | 399.18 | 0.82 | 0.0 | 0.0 | 354.54 | false | false | - | 26 January 2024 | Interest Refund | 2.55 | 2.55 | 0.0 | 0.0 | 0.0 | 351.99 | false | false | - And Customer makes "AUTOPAY" repayment on "01 February 2024" with 31.59 EUR transaction amount + | 26 January 2024 | Merchant Issued Refund | 400.0 | 399.19 | 0.81 | 0.0 | 0.0 | 354.53 | false | false | + | 26 January 2024 | Interest Refund | 2.54 | 2.54 | 0.0 | 0.0 | 0.0 | 351.99 | false | false | + And Customer makes "AUTOPAY" repayment on "01 February 2024" with 31.60 EUR transaction amount When Admin sets the business date to "01 March 2024" And Customer makes "AUTOPAY" repayment on "01 March 2024" with 171.39 EUR transaction amount When Admin sets the business date to "01 April 2024" @@ -4860,9 +4860,9 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | | | 01 January 2024 | | 250.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 05 January 2024 | | 500.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 22 January 2024 | 833.75 | 166.25 | 5.14 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | 26 January 2024 | 663.18 | 170.57 | 0.82 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | 26 January 2024 | 491.79 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 01 February 2024 | 320.97 | 170.82 | 0.57 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 2 | 29 | 01 March 2024 | 26 January 2024 | 663.17 | 170.58 | 0.81 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 3 | 31 | 01 April 2024 | 26 January 2024 | 491.78 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 01 February 2024 | 320.97 | 170.81 | 0.58 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | | 5 | 31 | 01 June 2024 | 01 March 2024 | 152.1 | 168.87 | 2.52 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | | 6 | 30 | 01 July 2024 | 01 April 2024 | 0.0 | 152.1 | 1.28 | 0.0 | 0.0 | 153.38 | 153.38 | 153.38 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: @@ -4875,9 +4875,9 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 05 January 2024 | Disbursement | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | | 22 January 2024 | Payout Refund | 250.0 | 244.86 | 5.14 | 0.0 | 0.0 | 755.14 | false | false | | 22 January 2024 | Interest Refund | 1.42 | 1.42 | 0.0 | 0.0 | 0.0 | 753.72 | false | false | - | 26 January 2024 | Merchant Issued Refund | 400.0 | 399.18 | 0.82 | 0.0 | 0.0 | 354.54 | false | false | - | 26 January 2024 | Interest Refund | 2.55 | 2.55 | 0.0 | 0.0 | 0.0 | 351.99 | false | false | - | 01 February 2024 | Repayment | 31.59 | 31.02 | 0.57 | 0.0 | 0.0 | 320.97 | false | false | + | 26 January 2024 | Merchant Issued Refund | 400.0 | 399.19 | 0.81 | 0.0 | 0.0 | 354.53 | false | false | + | 26 January 2024 | Interest Refund | 2.54 | 2.54 | 0.0 | 0.0 | 0.0 | 351.99 | false | false | + | 01 February 2024 | Repayment | 31.6 | 31.02 | 0.58 | 0.0 | 0.0 | 320.97 | false | false | | 01 March 2024 | Repayment | 171.39 | 168.87 | 2.52 | 0.0 | 0.0 | 152.1 | false | false | | 01 April 2024 | Repayment | 153.38 | 152.1 | 1.28 | 0.0 | 0.0 | 0.0 | false | false | | 01 April 2024 | Accrual | 10.33 | 0.0 | 10.33 | 0.0 | 0.0 | 0.0 | false | false | @@ -4939,13 +4939,13 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | | | 01 January 2024 | | 500.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 01 February 2024 | 836.45 | 163.55 | 7.84 | 0.0 | 0.0 | 171.39 | 171.39 | 0.0 | 0.0 | 0.0 | | 2 | 29 | 01 March 2024 | 13 February 2024 | 667.78 | 168.67 | 2.72 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | | 504.01 | 163.77 | 7.62 | 0.0 | 0.0 | 171.39 | 81.52 | 81.52 | 0.0 | 89.87 | - | 4 | 30 | 01 May 2024 | | 336.71 | 167.3 | 4.09 | 0.0 | 0.0 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | - | 5 | 31 | 01 June 2024 | | 168.14 | 168.57 | 2.82 | 0.0 | 0.0 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | - | 6 | 30 | 01 July 2024 | | 0.0 | 168.14 | 1.36 | 0.0 | 0.0 | 169.5 | 0.0 | 0.0 | 0.0 | 169.5 | + | 3 | 31 | 01 April 2024 | | 504.0 | 163.78 | 7.61 | 0.0 | 0.0 | 171.39 | 81.52 | 81.52 | 0.0 | 89.87 | + | 4 | 30 | 01 May 2024 | | 336.7 | 167.3 | 4.09 | 0.0 | 0.0 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | + | 5 | 31 | 01 June 2024 | | 168.13 | 168.57 | 2.82 | 0.0 | 0.0 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | + | 6 | 30 | 01 July 2024 | | 0.0 | 168.13 | 1.36 | 0.0 | 0.0 | 169.49 | 0.0 | 0.0 | 0.0 | 169.49 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 26.45 | 0.0 | 0.0 | 1026.45 | 424.3 | 252.91 | 0.0 | 602.15 | + | 1000.0 | 26.44 | 0.0 | 0.0 | 1026.44 | 424.3 | 252.91 | 0.0 | 602.14 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 500.0 | false | false | @@ -5065,12 +5065,12 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 1 | 31 | 01 February 2024 | 01 February 2024 | 836.45 | 163.55 | 7.84 | 0.0 | 0.0 | 171.39 | 171.39 | 0.0 | 0.0 | 0.0 | | 2 | 29 | 01 March 2024 | 13 February 2024 | 667.78 | 168.67 | 2.72 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | | 3 | 31 | 01 April 2024 | 13 February 2024 | 496.39 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | | 334.17 | 162.22 | 9.17 | 0.0 | 0.0 | 171.39 | 61.88 | 61.88 | 0.0 | 109.51 | - | 5 | 31 | 01 June 2024 | | 165.58 | 168.59 | 2.8 | 0.0 | 0.0 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | - | 6 | 30 | 01 July 2024 | | 0.0 | 165.58 | 1.34 | 0.0 | 0.0 | 166.92 | 0.0 | 0.0 | 0.0 | 166.92 | + | 4 | 30 | 01 May 2024 | | 334.16 | 162.23 | 9.16 | 0.0 | 0.0 | 171.39 | 61.88 | 61.88 | 0.0 | 109.51 | + | 5 | 31 | 01 June 2024 | | 165.57 | 168.59 | 2.8 | 0.0 | 0.0 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | + | 6 | 30 | 01 July 2024 | | 0.0 | 165.57 | 1.34 | 0.0 | 0.0 | 166.91 | 0.0 | 0.0 | 0.0 | 166.91 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 23.87 | 0.0 | 0.0 | 1023.87 | 576.05 | 404.66 | 0.0 | 447.82 | + | 1000.0 | 23.86 | 0.0 | 0.0 | 1023.86 | 576.05 | 404.66 | 0.0 | 447.81 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 500.0 | false | false | @@ -5091,12 +5091,12 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 1 | 31 | 01 February 2024 | 01 February 2024 | 836.45 | 163.55 | 7.84 | 0.0 | 0.0 | 171.39 | 171.39 | 0.0 | 0.0 | 0.0 | | 2 | 29 | 01 March 2024 | 13 February 2024 | 667.78 | 168.67 | 2.72 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | | 3 | 31 | 01 April 2024 | 13 February 2024 | 496.39 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 01 March 2024 | 327.0 | 169.39 | 2.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 5 | 31 | 01 June 2024 | 01 April 2024 | 158.35 | 168.65 | 2.74 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 6 | 30 | 01 July 2024 | 06 April 2024 | 0.0 | 158.35 | 0.21 | 0.0 | 0.0 | 158.56 | 158.56 | 158.56 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 01 March 2024 | 326.99 | 169.4 | 1.99 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 5 | 31 | 01 June 2024 | 01 April 2024 | 158.34 | 168.65 | 2.74 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 6 | 30 | 01 July 2024 | 06 April 2024 | 0.0 | 158.34 | 0.21 | 0.0 | 0.0 | 158.55 | 158.55 | 158.55 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 15.51 | 0.0 | 0.0 | 1015.51 | 1015.51 | 844.12 | 0.0 | 0.0 | + | 1000.0 | 15.5 | 0.0 | 0.0 | 1015.5 | 1015.5 | 844.11 | 0.0 | 0.0 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 500.0 | false | false | @@ -5104,11 +5104,11 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 01 February 2024 | Repayment | 171.39 | 163.55 | 7.84 | 0.0 | 0.0 | 836.45 | false | false | | 13 February 2024 | Merchant Issued Refund | 400.0 | 397.28 | 2.72 | 0.0 | 0.0 | 439.17 | false | false | | 13 February 2024 | Interest Refund | 4.66 | 4.66 | 0.0 | 0.0 | 0.0 | 434.51 | false | false | - | 01 March 2024 | Repayment | 109.62 | 107.62 | 2.0 | 0.0 | 0.0 | 326.89 | false | false | - | 01 April 2024 | Repayment | 171.39 | 168.65 | 2.74 | 0.0 | 0.0 | 158.24 | false | false | - | 06 April 2024 | Payout Refund | 400.0 | 158.24 | 0.21 | 0.0 | 0.0 | 0.0 | false | false | - | 06 April 2024 | Interest Refund | 9.15 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | - | 06 April 2024 | Accrual | 15.51 | 0.0 | 15.51 | 0.0 | 0.0 | 0.0 | false | false | + | 01 March 2024 | Repayment | 109.62 | 107.63 | 1.99 | 0.0 | 0.0 | 326.88 | false | false | + | 01 April 2024 | Repayment | 171.39 | 168.65 | 2.74 | 0.0 | 0.0 | 158.23 | false | false | + | 06 April 2024 | Payout Refund | 400.0 | 158.23 | 0.21 | 0.0 | 0.0 | 0.0 | false | false | + | 06 April 2024 | Interest Refund | 9.14 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | + | 06 April 2024 | Accrual | 15.5 | 0.0 | 15.5 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "07 April 2024" When Admin makes Credit Balance Refund transaction on "07 April 2024" with 250.7 EUR transaction amount Then Loan Repayment schedule has 6 periods, with the following data for periods: @@ -5118,12 +5118,12 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 1 | 31 | 01 February 2024 | 01 February 2024 | 836.45 | 163.55 | 7.84 | 0.0 | 0.0 | 171.39 | 171.39 | 0.0 | 0.0 | 0.0 | | 2 | 29 | 01 March 2024 | 13 February 2024 | 667.78 | 168.67 | 2.72 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | | 3 | 31 | 01 April 2024 | 13 February 2024 | 496.39 | 171.39 | 0.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 4 | 30 | 01 May 2024 | 01 March 2024 | 327.0 | 169.39 | 2.0 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 5 | 31 | 01 June 2024 | 01 April 2024 | 158.35 | 168.65 | 2.74 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | - | 6 | 30 | 01 July 2024 | 06 April 2024 | 0.0 | 158.35 | 0.21 | 0.0 | 0.0 | 158.56 | 158.56 | 158.56 | 0.0 | 0.0 | + | 4 | 30 | 01 May 2024 | 01 March 2024 | 326.99 | 169.4 | 1.99 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 5 | 31 | 01 June 2024 | 01 April 2024 | 158.34 | 168.65 | 2.74 | 0.0 | 0.0 | 171.39 | 171.39 | 171.39 | 0.0 | 0.0 | + | 6 | 30 | 01 July 2024 | 06 April 2024 | 0.0 | 158.34 | 0.21 | 0.0 | 0.0 | 158.55 | 158.55 | 158.55 | 0.0 | 0.0 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 15.51 | 0.0 | 0.0 | 1015.51 | 1015.51 | 844.12 | 0.0 | 0.0 | + | 1000.0 | 15.5 | 0.0 | 0.0 | 1015.5 | 1015.5 | 844.11 | 0.0 | 0.0 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 500.0 | 0.0 | 0.0 | 0.0 | 0.0 | 500.0 | false | false | @@ -5131,11 +5131,11 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 01 February 2024 | Repayment | 171.39 | 163.55 | 7.84 | 0.0 | 0.0 | 836.45 | false | false | | 13 February 2024 | Merchant Issued Refund | 400.0 | 397.28 | 2.72 | 0.0 | 0.0 | 439.17 | false | false | | 13 February 2024 | Interest Refund | 4.66 | 4.66 | 0.0 | 0.0 | 0.0 | 434.51 | false | false | - | 01 March 2024 | Repayment | 109.62 | 107.62 | 2.0 | 0.0 | 0.0 | 326.89 | false | false | - | 01 April 2024 | Repayment | 171.39 | 168.65 | 2.74 | 0.0 | 0.0 | 158.24 | false | false | - | 06 April 2024 | Payout Refund | 400.0 | 158.24 | 0.21 | 0.0 | 0.0 | 0.0 | false | false | - | 06 April 2024 | Interest Refund | 9.15 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | - | 06 April 2024 | Accrual | 15.51 | 0.0 | 15.51 | 0.0 | 0.0 | 0.0 | false | false | + | 01 March 2024 | Repayment | 109.62 | 107.63 | 1.99 | 0.0 | 0.0 | 326.88 | false | false | + | 01 April 2024 | Repayment | 171.39 | 168.65 | 2.74 | 0.0 | 0.0 | 158.23 | false | false | + | 06 April 2024 | Payout Refund | 400.0 | 158.23 | 0.21 | 0.0 | 0.0 | 0.0 | false | false | + | 06 April 2024 | Interest Refund | 9.14 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | + | 06 April 2024 | Accrual | 15.5 | 0.0 | 15.5 | 0.0 | 0.0 | 0.0 | false | false | | 07 April 2024 | Credit Balance Refund | 250.7 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | false | Then Loan status will be "CLOSED_OBLIGATIONS_MET" @@ -5155,13 +5155,13 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 12 January 2024 | 831.49 | 168.51 | 2.98 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | | 2 | 29 | 01 March 2024 | 12 January 2024 | 660.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | 171.49 | 171.49 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | | 501.54 | 158.46 | 13.03 | 0.0 | 0.0 | 171.49 | 58.21 | 58.21 | 0.0 | 113.28 | - | 4 | 30 | 01 May 2024 | | 334.12 | 167.42 | 4.07 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | - | 5 | 31 | 01 June 2024 | | 165.43 | 168.69 | 2.8 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | - | 6 | 30 | 01 July 2024 | | 0.0 | 165.43 | 1.34 | 0.0 | 0.0 | 166.77 | 0.0 | 0.0 | 0.0 | 166.77 | + | 3 | 31 | 01 April 2024 | | 501.53 | 158.47 | 13.02 | 0.0 | 0.0 | 171.49 | 58.21 | 58.21 | 0.0 | 113.28 | + | 4 | 30 | 01 May 2024 | | 334.11 | 167.42 | 4.07 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 5 | 31 | 01 June 2024 | | 165.42 | 168.69 | 2.8 | 0.0 | 0.0 | 171.49 | 0.0 | 0.0 | 0.0 | 171.49 | + | 6 | 30 | 01 July 2024 | | 0.0 | 165.42 | 1.34 | 0.0 | 0.0 | 166.76 | 0.0 | 0.0 | 0.0 | 166.76 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 24.22 | 0.0 | 0.0 | 1024.22 | 401.19 | 401.19 | 0.0 | 623.03 | + | 1000.0 | 24.21 | 0.0 | 0.0 | 1024.21 | 401.19 | 401.19 | 0.0 | 623.02 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -5321,15 +5321,15 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan Then Loan Repayment schedule has 6 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 83.52 | 16.48 | 0.53 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 2 | 29 | 01 March 2024 | | 66.91 | 16.61 | 0.4 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 3 | 31 | 01 April 2024 | | 50.2 | 16.71 | 0.3 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 4 | 30 | 01 May 2024 | | 33.4 | 16.8 | 0.21 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.5 | 16.9 | 0.11 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.5 | 0.01 | 0.0 | 0.0 | 16.51 | 15.0 | 15.0 | 0.0 | 1.51 | + | 1 | 31 | 01 February 2024 | | 83.53 | 16.47 | 0.54 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 2 | 29 | 01 March 2024 | | 66.92 | 16.61 | 0.4 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 3 | 31 | 01 April 2024 | | 50.21 | 16.71 | 0.3 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 4 | 30 | 01 May 2024 | | 33.41 | 16.8 | 0.21 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.51 | 16.9 | 0.11 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.51 | 0.01 | 0.0 | 0.0 | 16.52 | 15.0 | 15.0 | 0.0 | 1.52 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100.0 | 1.56 | 0.0 | 0.0 | 101.56 | 15 | 15 | 0.0 | 86.56 | + | 100.0 | 1.57 | 0.0 | 0.0 | 101.57 | 15 | 15 | 0.0 | 86.57 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | @@ -5667,7 +5667,7 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 16 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 17 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | When Admin set "LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE" loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation rule @TestRailId:C3297 @@ -5738,7 +5738,7 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | | 15 January 2024 | Repayment | 17.01 | 16.75 | 0.26 | 0.0 | 0.0 | 83.25 | false | false | | 18 January 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | @TestRailId:C3298 Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest modification after early partial payment with Adjustment to NEXT installment @@ -5808,7 +5808,7 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | | 15 January 2024 | Repayment | 17.0 | 16.75 | 0.25 | 0.0 | 0.0 | 83.25 | false | false | | 18 January 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | @TestRailId:C3311 Scenario: Verify the Loan reschedule - Interest modification - UC2: Interest modification after early partial payment with Adjustment to LAST installment @@ -5879,7 +5879,7 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | | 15 January 2024 | Repayment | 17.01 | 17.01 | 0.0 | 0.0 | 0.0 | 82.99 | false | false | | 18 January 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | When Admin set "LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE" loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation rule @TestRailId:C3299 @@ -5938,14 +5938,14 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 15 January 2024 | 83.25 | 16.75 | 0.26 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 67.0 | 16.25 | 0.64 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | - | 3 | 31 | 01 April 2024 | | 50.33 | 16.67 | 0.22 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | - | 4 | 30 | 01 May 2024 | | 33.61 | 16.72 | 0.17 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | - | 5 | 31 | 01 June 2024 | | 16.83 | 16.78 | 0.11 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.83 | 0.06 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | + | 2 | 29 | 01 March 2024 | | 67.01 | 16.24 | 0.65 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | + | 3 | 31 | 01 April 2024 | | 50.34 | 16.67 | 0.22 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | + | 4 | 30 | 01 May 2024 | | 33.62 | 16.72 | 0.17 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | + | 5 | 31 | 01 June 2024 | | 16.84 | 16.78 | 0.11 | 0.0 | 0.0 | 16.89 | 0.0 | 0.0 | 0.0 | 16.89 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.84 | 0.06 | 0.0 | 0.0 | 16.9 | 0.0 | 0.0 | 0.0 | 16.9 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100.0 | 1.46 | 0.0 | 0.0 | 101.46 | 17.01 | 17.01 | 0.0 | 84.45 | + | 100.0 | 1.47 | 0.0 | 0.0 | 101.47 | 17.01 | 17.01 | 0.0 | 84.46 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | @@ -6430,22 +6430,22 @@ Feature: EMI calculation and repayment schedule checks for interest bearing loan | 15 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2000.0 | | 15 January 2024 | Accrual | 0.18 | 0.0 | 0.18 | 0.0 | 0.0 | 0.0 | | 16 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | - | 17 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | - | 18 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 17 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 18 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | | 19 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | - | 20 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | - | 21 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | - | 22 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | + | 20 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 21 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | + | 22 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | | 23 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | - | 24 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | - | 25 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | - | 26 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 24 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | + | 25 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 26 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | | 27 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | - | 28 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | - | 29 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 28 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 29 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | | 30 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | - | 31 January 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | - | 01 February 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 31 January 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | + | 01 February 2024 | Accrual | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | @TestRailId:C3327 Scenario: Verify accruals isn't reversed and replayed in COB for loan with disabled auto repayment for down payment diff --git a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature index 21b0f8c01..da01a6bf4 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/Loan.feature @@ -6263,15 +6263,15 @@ Feature: Loan Then Loan Repayment schedule has 6 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 83.52 | 16.48 | 0.53 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 2 | 29 | 01 March 2024 | | 66.91 | 16.61 | 0.4 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 3 | 31 | 01 April 2024 | | 50.2 | 16.71 | 0.3 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 4 | 30 | 01 May 2024 | | 33.4 | 16.8 | 0.21 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.5 | 16.9 | 0.11 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.5 | 0.01 | 0.0 | 0.0 | 16.51 | 15.0 | 15.0 | 0.0 | 1.51 | + | 1 | 31 | 01 February 2024 | | 83.53 | 16.47 | 0.54 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 2 | 29 | 01 March 2024 | | 66.92 | 16.61 | 0.4 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 3 | 31 | 01 April 2024 | | 50.21 | 16.71 | 0.3 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 4 | 30 | 01 May 2024 | | 33.41 | 16.8 | 0.21 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.51 | 16.9 | 0.11 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.51 | 0.01 | 0.0 | 0.0 | 16.52 | 15.0 | 15.0 | 0.0 | 1.52 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100.0 | 1.56 | 0.0 | 0.0 | 101.56 | 15.0 | 15.0 | 0.0 | 86.56 | + | 100.0 | 1.57 | 0.0 | 0.0 | 101.57 | 15.0 | 15.0 | 0.0 | 86.57 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | diff --git a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature index a42f7b79e..42519347d 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/LoanAccrualActivity.feature @@ -2106,12 +2106,12 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 15 January 2024 | 746.09 | 253.91 | 9.78 | 0.0 | 0.0 | 263.69 | 263.69 | 263.69 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 507.43 | 238.66 | 25.03 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 3 | 31 | 01 April 2024 | | 254.73 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 4 | 30 | 01 May 2024 | | 0.0 | 254.73 | 5.52 | 0.0 | 0.0 | 260.25 | 0.0 | 0.0 | 0.0 | 260.25 | + | 2 | 29 | 01 March 2024 | | 507.44 | 238.65 | 25.04 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 3 | 31 | 01 April 2024 | | 254.74 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 4 | 30 | 01 May 2024 | | 0.0 | 254.74 | 5.52 | 0.0 | 0.0 | 260.26 | 0.0 | 0.0 | 0.0 | 260.26 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 51.32 | 0.0 | 0.0 | 1051.32 | 263.69 | 263.69 | 0.0 | 787.63 | + | 1000.0 | 51.33 | 0.0 | 0.0 | 1051.33 | 263.69 | 263.69 | 0.0 | 787.64 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -2127,10 +2127,10 @@ Feature: LoanAccrualActivity | 14 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 15 January 2024 | Repayment | 263.69 | 253.91 | 9.78 | 0.0 | 0.0 | 746.09 | false | false | | 15 January 2024 | Accrual | 0.69 | 0.0 | 0.69 | 0.0 | 0.0 | 0.0 | false | false | - | 16 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | + | 16 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | | 17 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | When Customer undo "1"th repayment on "15 January 2024" Then Loan Repayment schedule has 4 periods, with the following data for periods: @@ -2150,10 +2150,10 @@ Feature: LoanAccrualActivity | 14 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 15 January 2024 | Repayment | 263.69 | 253.91 | 9.78 | 0.0 | 0.0 | 746.09 | true | false | | 15 January 2024 | Accrual | 0.69 | 0.0 | 0.69 | 0.0 | 0.0 | 0.0 | false | false | - | 16 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | + | 16 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | | 17 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "23 January 2024" And Admin runs inline COB job for Loan @@ -2174,10 +2174,10 @@ Feature: LoanAccrualActivity | 14 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 15 January 2024 | Repayment | 263.69 | 253.91 | 9.78 | 0.0 | 0.0 | 746.09 | true | false | | 15 January 2024 | Accrual | 0.69 | 0.0 | 0.69 | 0.0 | 0.0 | 0.0 | false | false | - | 16 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | + | 16 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | | 17 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 1.59 | 0.0 | 1.59 | 0.0 | 0.0 | 0.0 | false | false | | 22 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | @@ -2200,10 +2200,10 @@ Feature: LoanAccrualActivity | 14 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 15 January 2024 | Repayment | 263.69 | 253.91 | 9.78 | 0.0 | 0.0 | 746.09 | true | false | | 15 January 2024 | Accrual | 0.69 | 0.0 | 0.69 | 0.0 | 0.0 | 0.0 | false | false | - | 16 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | + | 16 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | | 17 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 1.59 | 0.0 | 1.59 | 0.0 | 0.0 | 0.0 | false | false | | 22 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | @@ -2603,12 +2603,12 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 15 January 2024 | 746.09 | 253.91 | 9.78 | 0.0 | 0.0 | 263.69 | 263.69 | 263.69 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 507.43 | 238.66 | 25.03 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 3 | 31 | 01 April 2024 | | 254.73 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 4 | 30 | 01 May 2024 | | 0.0 | 254.73 | 5.52 | 0.0 | 0.0 | 260.25 | 0.0 | 0.0 | 0.0 | 260.25 | + | 2 | 29 | 01 March 2024 | | 507.44 | 238.65 | 25.04 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 3 | 31 | 01 April 2024 | | 254.74 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 4 | 30 | 01 May 2024 | | 0.0 | 254.74 | 5.52 | 0.0 | 0.0 | 260.26 | 0.0 | 0.0 | 0.0 | 260.26 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 51.32 | 0.0 | 0.0 | 1051.32 | 263.69 | 263.69 | 0.0 | 787.63 | + | 1000.0 | 51.33 | 0.0 | 0.0 | 1051.33 | 263.69 | 263.69 | 0.0 | 787.64 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -2617,19 +2617,19 @@ Feature: LoanAccrualActivity | 19 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual Adjustment | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "26 January 2024" And Admin runs inline COB job for Loan Then Loan Repayment schedule has 4 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 15 January 2024 | 746.09 | 253.91 | 9.78 | 0.0 | 0.0 | 263.69 | 263.69 | 263.69 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 507.43 | 238.66 | 25.03 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 3 | 31 | 01 April 2024 | | 254.73 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 4 | 30 | 01 May 2024 | | 0.0 | 254.73 | 5.52 | 0.0 | 0.0 | 260.25 | 0.0 | 0.0 | 0.0 | 260.25 | + | 2 | 29 | 01 March 2024 | | 507.44 | 238.65 | 25.04 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 3 | 31 | 01 April 2024 | | 254.74 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 4 | 30 | 01 May 2024 | | 0.0 | 254.74 | 5.52 | 0.0 | 0.0 | 260.26 | 0.0 | 0.0 | 0.0 | 260.26 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 51.32 | 0.0 | 0.0 | 1051.32 | 263.69 | 263.69 | 0.0 | 787.63 | + | 1000.0 | 51.33 | 0.0 | 0.0 | 1051.33 | 263.69 | 263.69 | 0.0 | 787.64 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -2638,7 +2638,7 @@ Feature: LoanAccrualActivity | 19 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual Adjustment | 0.37 | 0.0 | 0.37 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 24 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 25 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | @@ -2704,12 +2704,12 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 15 January 2024 | 746.09 | 253.91 | 9.78 | 0.0 | 0.0 | 263.69 | 263.69 | 263.69 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 507.43 | 238.66 | 25.03 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 3 | 31 | 01 April 2024 | | 254.73 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 4 | 30 | 01 May 2024 | | 0.0 | 254.73 | 5.52 | 0.0 | 0.0 | 260.25 | 0.0 | 0.0 | 0.0 | 260.25 | + | 2 | 29 | 01 March 2024 | | 507.44 | 238.65 | 25.04 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 3 | 31 | 01 April 2024 | | 254.74 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 4 | 30 | 01 May 2024 | | 0.0 | 254.74 | 5.52 | 0.0 | 0.0 | 260.26 | 0.0 | 0.0 | 0.0 | 260.26 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 51.32 | 0.0 | 0.0 | 1051.32 | 263.69 | 263.69 | 0.0 | 787.63 | + | 1000.0 | 51.33 | 0.0 | 0.0 | 1051.33 | 263.69 | 263.69 | 0.0 | 787.64 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -2729,19 +2729,19 @@ Feature: LoanAccrualActivity | 15 January 2024 | Accrual | 0.69 | 0.0 | 0.69 | 0.0 | 0.0 | 0.0 | false | false | | 15 January 2024 | Repayment | 263.69 | 253.91 | 9.78 | 0.0 | 0.0 | 746.09 | false | false | | 16 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | - | 17 January 2024 | Accrual | 0.34 | 0.0 | 0.34 | 0.0 | 0.0 | 0.0 | false | false | + | 17 January 2024 | Accrual | 0.35 | 0.0 | 0.35 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "26 January 2024" And Admin runs inline COB job for Loan Then Loan Repayment schedule has 4 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 15 January 2024 | 746.09 | 253.91 | 9.78 | 0.0 | 0.0 | 263.69 | 263.69 | 263.69 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 507.43 | 238.66 | 25.03 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 3 | 31 | 01 April 2024 | | 254.73 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 4 | 30 | 01 May 2024 | | 0.0 | 254.73 | 5.52 | 0.0 | 0.0 | 260.25 | 0.0 | 0.0 | 0.0 | 260.25 | + | 2 | 29 | 01 March 2024 | | 507.44 | 238.65 | 25.04 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 3 | 31 | 01 April 2024 | | 254.74 | 252.7 | 10.99 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 4 | 30 | 01 May 2024 | | 0.0 | 254.74 | 5.52 | 0.0 | 0.0 | 260.26 | 0.0 | 0.0 | 0.0 | 260.26 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 51.32 | 0.0 | 0.0 | 1051.32 | 263.69 | 263.69 | 0.0 | 787.63 | + | 1000.0 | 51.33 | 0.0 | 0.0 | 1051.33 | 263.69 | 263.69 | 0.0 | 787.64 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -2761,12 +2761,12 @@ Feature: LoanAccrualActivity | 15 January 2024 | Accrual | 0.69 | 0.0 | 0.69 | 0.0 | 0.0 | 0.0 | false | false | | 15 January 2024 | Repayment | 263.69 | 253.91 | 9.78 | 0.0 | 0.0 | 746.09 | false | false | | 16 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | - | 17 January 2024 | Accrual | 0.34 | 0.0 | 0.34 | 0.0 | 0.0 | 0.0 | false | false | + | 17 January 2024 | Accrual | 0.35 | 0.0 | 0.35 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 0.53 | 0.0 | 0.53 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 24 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | | 25 January 2024 | Accrual | 0.52 | 0.0 | 0.52 | 0.0 | 0.0 | 0.0 | false | false | @@ -2835,13 +2835,13 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 15 January 2024 | | 500.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 1133.33 | 366.67 | 27.6 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 2 | 29 | 01 March 2024 | | 763.62 | 369.71 | 24.56 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 3 | 31 | 01 April 2024 | | 385.9 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 4 | 30 | 01 May 2024 | | 0.0 | 385.9 | 8.36 | 0.0 | 0.0 | 394.26 | 0.0 | 0.0 | 0.0 | 394.26 | + | 1 | 31 | 01 February 2024 | | 1133.34 | 366.66 | 27.61 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 2 | 29 | 01 March 2024 | | 763.63 | 369.71 | 24.56 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 3 | 31 | 01 April 2024 | | 385.91 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 4 | 30 | 01 May 2024 | | 0.0 | 385.91 | 8.36 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1500.0 | 77.07 | 0.0 | 0.0 | 1577.07 | 0.0 | 0.0 | 0.0 | 1577.07 | + | 1500.0 | 77.08 | 0.0 | 0.0 | 1577.08 | 0.0 | 0.0 | 0.0 | 1577.08 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -2864,20 +2864,20 @@ Feature: LoanAccrualActivity | 17 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 19 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2024 | Accrual | 2.44 | 0.0 | 2.44 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2024 | Accrual | 2.45 | 0.0 | 2.45 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "2 February 2024" And Admin runs inline COB job for Loan Then Loan Repayment schedule has 4 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 15 January 2024 | | 500.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 1133.33 | 366.67 | 27.6 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 2 | 29 | 01 March 2024 | | 763.89 | 369.44 | 24.83 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 3 | 31 | 01 April 2024 | | 386.17 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 4 | 30 | 01 May 2024 | | 0.0 | 386.17 | 8.37 | 0.0 | 0.0 | 394.54 | 0.0 | 0.0 | 0.0 | 394.54 | + | 1 | 31 | 01 February 2024 | | 1133.34 | 366.66 | 27.61 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 2 | 29 | 01 March 2024 | | 763.9 | 369.44 | 24.83 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 3 | 31 | 01 April 2024 | | 386.18 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 4 | 30 | 01 May 2024 | | 0.0 | 386.18 | 8.37 | 0.0 | 0.0 | 394.55 | 0.0 | 0.0 | 0.0 | 394.55 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1500.0 | 77.35 | 0.0 | 0.0 | 1577.35 | 0.0 | 0.0 | 0.0 | 1577.35 | + | 1500.0 | 77.36 | 0.0 | 0.0 | 1577.36 | 0.0 | 0.0 | 0.0 | 1577.36 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -2900,18 +2900,18 @@ Feature: LoanAccrualActivity | 17 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 19 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2024 | Accrual | 2.44 | 0.0 | 2.44 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2024 | Accrual | 2.45 | 0.0 | 2.45 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 24 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 25 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 26 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 27 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 28 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | | 29 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 30 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 31 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | + | 31 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 01 February 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | @TestRailId:C3285 @@ -2979,13 +2979,13 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 15 January 2024 | | 500.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 1133.33 | 366.67 | 27.6 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 2 | 29 | 01 March 2024 | | 763.62 | 369.71 | 24.56 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 3 | 31 | 01 April 2024 | | 385.9 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 4 | 30 | 01 May 2024 | | 0.0 | 385.9 | 8.36 | 0.0 | 0.0 | 394.26 | 0.0 | 0.0 | 0.0 | 394.26 | + | 1 | 31 | 01 February 2024 | | 1133.34 | 366.66 | 27.61 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 2 | 29 | 01 March 2024 | | 763.63 | 369.71 | 24.56 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 3 | 31 | 01 April 2024 | | 385.91 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 4 | 30 | 01 May 2024 | | 0.0 | 385.91 | 8.36 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1500.0 | 77.07 | 0.0 | 0.0 | 1577.07 | 0.0 | 0.0 | 0.0 | 1577.07 | + | 1500.0 | 77.08 | 0.0 | 0.0 | 1577.08 | 0.0 | 0.0 | 0.0 | 1577.08 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -3008,7 +3008,7 @@ Feature: LoanAccrualActivity | 17 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 19 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2024 | Accrual | 2.44 | 0.0 | 2.44 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2024 | Accrual | 2.45 | 0.0 | 2.45 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "31 January 2024" And Admin runs inline COB job for Loan @@ -3016,13 +3016,13 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 15 January 2024 | | 500.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 1133.33 | 366.67 | 27.6 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 2 | 29 | 01 March 2024 | | 763.62 | 369.71 | 24.56 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 3 | 31 | 01 April 2024 | | 385.9 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | - | 4 | 30 | 01 May 2024 | | 0.0 | 385.9 | 8.36 | 0.0 | 0.0 | 394.26 | 0.0 | 0.0 | 0.0 | 394.26 | + | 1 | 31 | 01 February 2024 | | 1133.34 | 366.66 | 27.61 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 2 | 29 | 01 March 2024 | | 763.63 | 369.71 | 24.56 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 3 | 31 | 01 April 2024 | | 385.91 | 377.72 | 16.55 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | + | 4 | 30 | 01 May 2024 | | 0.0 | 385.91 | 8.36 | 0.0 | 0.0 | 394.27 | 0.0 | 0.0 | 0.0 | 394.27 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1500.0 | 77.07 | 0.0 | 0.0 | 1577.07 | 0.0 | 0.0 | 0.0 | 1577.07 | + | 1500.0 | 77.08 | 0.0 | 0.0 | 1577.08 | 0.0 | 0.0 | 0.0 | 1577.08 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -3045,15 +3045,15 @@ Feature: LoanAccrualActivity | 17 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 19 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2024 | Accrual | 2.44 | 0.0 | 2.44 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2024 | Accrual | 2.45 | 0.0 | 2.45 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 24 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 25 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 26 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 27 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 28 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | | 29 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 30 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | And Admin successfully undo last disbursal @@ -3063,12 +3063,12 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | | 757.98 | 242.02 | 21.67 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 2 | 29 | 01 March 2024 | | 510.9 | 247.08 | 16.61 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 3 | 31 | 01 April 2024 | | 258.28 | 252.62 | 11.07 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 4 | 30 | 01 May 2024 | | 0.0 | 258.28 | 5.6 | 0.0 | 0.0 | 263.88 | 0.0 | 0.0 | 0.0 | 263.88 | + | 2 | 29 | 01 March 2024 | | 510.89 | 247.09 | 16.6 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 3 | 31 | 01 April 2024 | | 258.27 | 252.62 | 11.07 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 4 | 30 | 01 May 2024 | | 0.0 | 258.27 | 5.6 | 0.0 | 0.0 | 263.87 | 0.0 | 0.0 | 0.0 | 263.87 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 54.95 | 0.0 | 0.0 | 1054.95 | 0.0 | 0.0 | 0.0 | 1054.95 | + | 1000.0 | 54.94 | 0.0 | 0.0 | 1054.94 | 0.0 | 0.0 | 0.0 | 1054.94 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -3090,15 +3090,15 @@ Feature: LoanAccrualActivity | 17 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | | 19 January 2024 | Accrual | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2024 | Accrual | 2.44 | 0.0 | 2.44 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2024 | Accrual | 2.45 | 0.0 | 2.45 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 24 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 25 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | + | 25 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 26 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 27 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | - | 28 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | + | 28 January 2024 | Accrual | 1.04 | 0.0 | 1.04 | 0.0 | 0.0 | 0.0 | false | false | | 29 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 30 January 2024 | Accrual | 1.05 | 0.0 | 1.05 | 0.0 | 0.0 | 0.0 | false | false | | 31 January 2024 | Accrual Adjustment | 4.54 | 0.0 | 4.54 | 0.0 | 0.0 | 0.0 | false | false | @@ -3136,10 +3136,10 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 20 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 832.79 | 267.21 | 22.51 | 0.0 | 0.0 | 289.72 | 0.0 | 0.0 | 0.0 | 289.72 | - | 2 | 29 | 01 March 2024 | | 561.11 | 271.68 | 18.04 | 0.0 | 0.0 | 289.72 | 0.0 | 0.0 | 0.0 | 289.72 | - | 3 | 31 | 01 April 2024 | | 283.55 | 277.56 | 12.16 | 0.0 | 0.0 | 289.72 | 0.0 | 0.0 | 0.0 | 289.72 | - | 4 | 30 | 01 May 2024 | | 0.0 | 283.55 | 6.14 | 0.0 | 0.0 | 289.69 | 0.0 | 0.0 | 0.0 | 289.69 | + | 1 | 31 | 01 February 2024 | | 832.8 | 267.2 | 22.51 | 0.0 | 0.0 | 289.71 | 0.0 | 0.0 | 0.0 | 289.71 | + | 2 | 29 | 01 March 2024 | | 561.13 | 271.67 | 18.04 | 0.0 | 0.0 | 289.71 | 0.0 | 0.0 | 0.0 | 289.71 | + | 3 | 31 | 01 April 2024 | | 283.58 | 277.55 | 12.16 | 0.0 | 0.0 | 289.71 | 0.0 | 0.0 | 0.0 | 289.71 | + | 4 | 30 | 01 May 2024 | | 0.0 | 283.58 | 6.14 | 0.0 | 0.0 | 289.72 | 0.0 | 0.0 | 0.0 | 289.72 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 1100.0 | 58.85 | 0.0 | 0.0 | 1158.85 | 0.0 | 0.0 | 0.0 | 1158.85 | @@ -3175,12 +3175,12 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 1000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | | 757.98 | 242.02 | 21.67 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 2 | 29 | 01 March 2024 | | 510.9 | 247.08 | 16.61 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 3 | 31 | 01 April 2024 | | 258.28 | 252.62 | 11.07 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | - | 4 | 30 | 01 May 2024 | | 0.0 | 258.28 | 5.6 | 0.0 | 0.0 | 263.88 | 0.0 | 0.0 | 0.0 | 263.88 | + | 2 | 29 | 01 March 2024 | | 510.89 | 247.09 | 16.6 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 3 | 31 | 01 April 2024 | | 258.27 | 252.62 | 11.07 | 0.0 | 0.0 | 263.69 | 0.0 | 0.0 | 0.0 | 263.69 | + | 4 | 30 | 01 May 2024 | | 0.0 | 258.27 | 5.6 | 0.0 | 0.0 | 263.87 | 0.0 | 0.0 | 0.0 | 263.87 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 1000.0 | 54.95 | 0.0 | 0.0 | 1054.95 | 0.0 | 0.0 | 0.0 | 1054.95 | + | 1000.0 | 54.94 | 0.0 | 0.0 | 1054.94 | 0.0 | 0.0 | 0.0 | 1054.94 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 1000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1000.0 | false | false | @@ -3517,8 +3517,8 @@ Feature: LoanAccrualActivity | 18 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 19 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 20 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 21 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 22 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 21 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 22 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 23 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 24 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 25 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | @@ -3664,8 +3664,8 @@ Feature: LoanAccrualActivity | 18 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 19 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 20 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 21 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 22 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 21 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 22 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 23 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 24 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 25 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | @@ -3866,15 +3866,15 @@ Feature: LoanAccrualActivity Then Loan Repayment schedule has 6 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 83.52 | 16.48 | 0.53 | 0.0 | 0.0 | 17.01 | 15.0 | 15.0 | 0.0 | 2.01 | - | 2 | 29 | 01 March 2024 | | 67.0 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 3 | 31 | 01 April 2024 | | 50.38 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 4 | 30 | 01 May 2024 | | 33.66 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.85 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.85 | 0.1 | 0.0 | 0.0 | 16.95 | 0.0 | 0.0 | 0.0 | 16.95 | + | 1 | 31 | 01 February 2024 | | 83.53 | 16.47 | 0.54 | 0.0 | 0.0 | 17.01 | 15.0 | 15.0 | 0.0 | 2.01 | + | 2 | 29 | 01 March 2024 | | 67.01 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 3 | 31 | 01 April 2024 | | 50.39 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 4 | 30 | 01 May 2024 | | 33.67 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.86 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.86 | 0.1 | 0.0 | 0.0 | 16.96 | 0.0 | 0.0 | 0.0 | 16.96 | Then Loan Repayment schedule has the following data in Total row: - | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100.0 | 2.0 | 0.0 | 0.0 | 102.0 | 15.0 | 15.0 | 0.0 | 87.0 | + | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | + | 100.0 | 2.01 | 0.0 | 0.0 | 102.01 | 15.0 | 15.0 | 0.0 | 87.01 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | @@ -3928,23 +3928,23 @@ Feature: LoanAccrualActivity | 14 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 15 January 2024 | Repayment | 15.0 | 15.0 | 0.0 | 0.0 | 0.0 | 85.0 | false | false | | 15 January 2024 | Accrual Adjustment | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 16 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 17 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 18 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 16 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 17 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 18 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 20 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 21 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 22 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 23 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 24 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 21 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 22 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 23 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 24 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 25 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 26 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 27 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | - | 28 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 29 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 26 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 27 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | + | 28 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 29 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 30 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 31 January 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | - | 01 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 31 January 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | + | 01 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 21 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | | 22 February 2024 | Accrual | 0.01 | 0.0 | 0.01 | 0.0 | 0.0 | 0.0 | false | false | | 23 February 2024 | Accrual | 0.02 | 0.0 | 0.02 | 0.0 | 0.0 | 0.0 | false | false | @@ -3986,14 +3986,14 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 14 January 2024 | 83.23 | 16.77 | 0.24 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 66.99 | 16.24 | 0.77 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 3 | 31 | 01 April 2024 | | 50.37 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 4 | 30 | 01 May 2024 | | 33.65 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.84 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.84 | 0.1 | 0.0 | 0.0 | 16.94 | 0.0 | 0.0 | 0.0 | 16.94 | + | 2 | 29 | 01 March 2024 | | 67.0 | 16.23 | 0.78 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 3 | 31 | 01 April 2024 | | 50.38 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 4 | 30 | 01 May 2024 | | 33.66 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.85 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.85 | 0.1 | 0.0 | 0.0 | 16.95 | 0.0 | 0.0 | 0.0 | 16.95 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100 | 1.99 | 0 | 0 | 101.99 | 17.01 | 17.01 | 0 | 84.98 | + | 100 | 2.0 | 0 | 0 | 102.0 | 17.01 | 17.01 | 0 | 84.99 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | @@ -4140,17 +4140,17 @@ Feature: LoanAccrualActivity When Customer undo "2"th repayment on "16 January 2025" When Admin runs inline COB job for Loan Then Loan status will be "ACTIVE" - Then Loan has 0.32 outstanding amount + Then Loan has 0.33 outstanding amount Then Loan Repayment schedule has 4 periods, with the following data for periods: | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 12 January 2025 | | 430.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 12 February 2025 | 16 January 2025 | 321.25 | 108.75 | 0.32 | 0.0 | 0.0 | 109.07 | 109.07 | 109.07 | 0.0 | 0.0 | | 2 | 28 | 12 March 2025 | 16 January 2025 | 212.18 | 109.07 | 0.0 | 0.0 | 0.0 | 109.07 | 109.07 | 109.07 | 0.0 | 0.0 | | 3 | 31 | 12 April 2025 | 16 January 2025 | 103.11 | 109.07 | 0.0 | 0.0 | 0.0 | 109.07 | 109.07 | 109.07 | 0.0 | 0.0 | - | 4 | 30 | 12 May 2025 | | 0.0 | 103.11 | 0.0 | 0.0 | 0.0 | 103.11 | 102.79 | 102.79 | 0.0 | 0.32 | + | 4 | 30 | 12 May 2025 | | 0.0 | 103.11 | 0.01 | 0.0 | 0.0 | 103.12 | 102.79 | 102.79 | 0.0 | 0.33 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 430 | 0.32 | 0 | 0 | 430.32 | 430.0 | 430.0 | 0 | 0.32 | + | 430 | 0.33 | 0 | 0 | 430.33 | 430.0 | 430.0 | 0 | 0.33 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 12 January 2025 | Disbursement | 430.0 | 0.0 | 0.0 | 0.0 | 0.0 | 430.0 | false | false | @@ -4227,26 +4227,26 @@ Feature: LoanAccrualActivity | 30 December 2024 | Repayment | 200.0 | 196.99 | 3.01 | 0.0 | 0.0 | 233.01 | false | false | | 30 December 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | | 31 December 2024 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 01 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 01 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 02 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 03 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 03 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 04 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 05 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 06 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 05 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 06 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 07 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 08 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 08 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 09 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 10 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 10 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 11 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 12 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 13 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 12 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 13 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 14 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 15 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 15 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 16 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 17 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 17 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | When Admin sets the business date to "20 February 2025" And Admin runs inline COB job for Loan Then Loan Transactions tab has the following data: @@ -4256,26 +4256,26 @@ Feature: LoanAccrualActivity | 30 December 2024 | Repayment | 200.0 | 196.99 | 3.01 | 0.0 | 0.0 | 233.01 | false | false | | 30 December 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | | 31 December 2024 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 01 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 01 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 02 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 03 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 03 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 04 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 05 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 06 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 05 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 06 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 07 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 08 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 08 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 09 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 10 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 10 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 11 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 12 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 13 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 12 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 13 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 14 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 15 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 15 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 16 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 17 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 17 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 22 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | @@ -4315,26 +4315,26 @@ Feature: LoanAccrualActivity | 30 December 2024 | Repayment | 200.0 | 196.99 | 3.01 | 0.0 | 0.0 | 233.01 | false | false | | 30 December 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | | 31 December 2024 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 01 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 01 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 02 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 03 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 03 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 04 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 05 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 06 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 05 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 06 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 07 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 08 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 08 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 09 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 10 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 10 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 11 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 12 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 13 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 12 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 13 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 14 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 15 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | + | 15 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 16 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 17 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 17 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 18 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | - | 19 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | - | 20 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 19 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | + | 20 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 21 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | | 22 January 2025 | Accrual | 0.17 | 0.0 | 0.17 | 0.0 | 0.0 | 0.0 | false | false | | 23 January 2025 | Accrual | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false | @@ -4583,14 +4583,14 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 31 January 2024 | | 2000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 29 | 29 February 2024 | | 1671.5 | 328.5 | 11.67 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 2 | 31 | 31 March 2024 | | 1341.15 | 330.35 | 9.82 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 3 | 30 | 30 April 2024 | | 1008.8 | 332.35 | 7.82 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 4 | 31 | 31 May 2024 | | 674.51 | 334.29 | 5.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 5 | 30 | 30 June 2024 | | 338.27 | 336.24 | 3.93 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 6 | 31 | 31 July 2024 | | 0.0 | 338.27 | 1.97 | 0.0 | 0.0 | 340.24 | 0.0 | 0.0 | 0.0 | 340.24 | + | 2 | 31 | 31 March 2024 | | 1341.14 | 330.36 | 9.81 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 3 | 30 | 30 April 2024 | | 1008.79 | 332.35 | 7.82 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 4 | 31 | 31 May 2024 | | 674.5 | 334.29 | 5.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 5 | 30 | 30 June 2024 | | 338.26 | 336.24 | 3.93 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 6 | 31 | 31 July 2024 | | 0.0 | 338.26 | 1.97 | 0.0 | 0.0 | 340.23 | 0.0 | 0.0 | 0.0 | 340.23 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 2000.0 | 41.09 | 0.0 | 0.0 | 2041.09 | 0.0 | 0.0 | 0.0 | 2041.09 | + | 2000.0 | 41.08 | 0.0 | 0.0 | 2041.08 | 0.0 | 0.0 | 0.0 | 2041.08 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 31 January 2024 | Disbursement | 2000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2000.0 | false | false | @@ -4630,14 +4630,14 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 31 January 2024 | | 2000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 29 | 29 February 2024 | 15 February 2024 | 1665.86 | 334.14 | 6.03 | 0.0 | 0.0 | 340.17 | 340.17 | 340.17 | 0.0 | 0.0 | - | 2 | 31 | 31 March 2024 | | 1340.09 | 325.77 | 14.4 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 3 | 30 | 30 April 2024 | | 1007.74 | 332.35 | 7.82 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 4 | 31 | 31 May 2024 | | 673.45 | 334.29 | 5.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 5 | 30 | 30 June 2024 | | 337.21 | 336.24 | 3.93 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 6 | 31 | 31 July 2024 | | 0.0 | 337.21 | 1.97 | 0.0 | 0.0 | 339.18 | 0.0 | 0.0 | 0.0 | 339.18 | + | 2 | 31 | 31 March 2024 | | 1340.11 | 325.75 | 14.42 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 3 | 30 | 30 April 2024 | | 1007.76 | 332.35 | 7.82 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 4 | 31 | 31 May 2024 | | 673.47 | 334.29 | 5.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 5 | 30 | 30 June 2024 | | 337.23 | 336.24 | 3.93 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 6 | 31 | 31 July 2024 | | 0.0 | 337.23 | 1.97 | 0.0 | 0.0 | 339.2 | 0.0 | 0.0 | 0.0 | 339.2 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 2000.0 | 40.03 | 0.0 | 0.0 | 2040.03 | 340.17 | 340.17 | 0.0 | 1699.86 | + | 2000.0 | 40.05 | 0.0 | 0.0 | 2040.05 | 340.17 | 340.17 | 0.0 | 1699.88 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 31 January 2024 | Disbursement | 2000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2000.0 | false | false | @@ -4679,14 +4679,14 @@ Feature: LoanAccrualActivity | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 31 January 2024 | | 2000.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 29 | 29 February 2024 | 15 February 2024 | 1665.86 | 334.14 | 6.03 | 0.0 | 0.0 | 340.17 | 340.17 | 340.17 | 0.0 | 0.0 | - | 2 | 31 | 31 March 2024 | | 1340.1 | 325.76 | 14.41 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 3 | 30 | 30 April 2024 | | 1007.81 | 332.29 | 7.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 4 | 31 | 31 May 2024 | | 673.52 | 334.29 | 5.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 5 | 30 | 30 June 2024 | | 337.28 | 336.24 | 3.93 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | - | 6 | 31 | 31 July 2024 | | 0.0 | 337.28 | 1.97 | 0.0 | 0.0 | 339.25 | 0.0 | 0.0 | 0.0 | 339.25 | + | 2 | 31 | 31 March 2024 | | 1340.11 | 325.75 | 14.42 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 3 | 30 | 30 April 2024 | | 1007.82 | 332.29 | 7.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 4 | 31 | 31 May 2024 | | 673.53 | 334.29 | 5.88 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 5 | 30 | 30 June 2024 | | 337.29 | 336.24 | 3.93 | 0.0 | 0.0 | 340.17 | 0.0 | 0.0 | 0.0 | 340.17 | + | 6 | 31 | 31 July 2024 | | 0.0 | 337.29 | 1.97 | 0.0 | 0.0 | 339.26 | 0.0 | 0.0 | 0.0 | 339.26 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 2000.0 | 40.1 | 0.0 | 0.0 | 2040.1 | 340.17 | 340.17 | 0.0 | 1699.93 | + | 2000.0 | 40.11 | 0.0 | 0.0 | 2040.11 | 340.17 | 340.17 | 0.0 | 1699.94 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 31 January 2024 | Disbursement | 2000.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2000.0 | false | false | @@ -4722,7 +4722,7 @@ Feature: LoanAccrualActivity | 28 February 2024 | Accrual | 0.41 | 0.0 | 0.41 | 0.0 | 0.0 | 0.0 | false | false | | 29 February 2024 | Accrual | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | false | false | | 29 February 2024 | Accrual Activity | 6.03 | 0.0 | 6.03 | 0.0 | 0.0 | 0.0 | false | true | - | 01 March 2024 | Accrual Adjustment | 0.7 | 0.0 | 0.7 | 0.0 | 0.0 | 0.0 | false | false | + | 01 March 2024 | Accrual Adjustment | 0.69 | 0.0 | 0.69 | 0.0 | 0.0 | 0.0 | false | false | | 02 March 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | | 03 March 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | | 04 March 2024 | Accrual | 0.32 | 0.0 | 0.32 | 0.0 | 0.0 | 0.0 | false | false | @@ -4753,7 +4753,7 @@ Feature: LoanAccrualActivity | 29 March 2024 | Accrual | 0.31 | 0.0 | 0.31 | 0.0 | 0.0 | 0.0 | false | false | | 30 March 2024 | Accrual | 0.32 | 0.0 | 0.32 | 0.0 | 0.0 | 0.0 | false | false | | 31 March 2024 | Accrual | 0.32 | 0.0 | 0.32 | 0.0 | 0.0 | 0.0 | false | false | - | 31 March 2024 | Accrual Activity | 14.41 | 0.0 | 14.41 | 0.0 | 0.0 | 0.0 | false | false | + | 31 March 2024 | Accrual Activity | 14.42 | 0.0 | 14.42 | 0.0 | 0.0 | 0.0 | false | false | @TestRailId:C3503 Scenario: Verify accruals on closed or overpaid backdated loan with current date before installment date with due-date charge config option - UC1 diff --git a/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeOff.feature b/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeOff.feature index 9e0a9296c..ae216afe6 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeOff.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeOff.feature @@ -3647,7 +3647,7 @@ Feature: Charge-off | 29 February 2024 | Charge-off | 83.89 | 82.99 | 0.9 | 0.0 | 0.0 | 0.0 | false | false | @Skip @TestRailId:C3361 @AdvancedPaymentAllocation - Scenario: Verify accelerate maturity to charge-off date when interest recalculation is enabled - case when charge-off occurs with allocation to last installment with interest allocation change + Scenario: SKIPPED - Verify accelerate maturity to charge-off date when interest recalculation is enabled - case when charge-off occurs with allocation to last installment with interest allocation change When Admin sets the business date to "01 January 2024" When Admin creates a client with random data When Admin creates a fully customized loan with the following data: @@ -5638,16 +5638,16 @@ Feature: Charge-off | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 01 February 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 0.0 | 0.0 | - | 2 | 28 | 29 February 2024 | | 0.0 | 83.57 | 0.43 | 0.0 | 0.0 | 84.0 | 17.01 | 17.01 | 0.0 | 66.99 | + | 2 | 28 | 29 February 2024 | | 0.0 | 83.57 | 0.42 | 0.0 | 0.0 | 83.99 | 17.01 | 17.01 | 0.0 | 66.98 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100.0 | 1.01 | 0.0 | 0.0 | 101.01 | 34.02 | 17.01 | 0.0 | 66.99 | + | 100.0 | 1.0 | 0.0 | 0.0 | 101.0 | 34.02 | 17.01 | 0.0 | 66.98 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | | 01 February 2024 | Repayment | 17.01 | 16.43 | 0.58 | 0.0 | 0.0 | 83.57 | false | false | | 15 February 2024 | Repayment | 17.01 | 16.77 | 0.24 | 0.0 | 0.0 | 66.8 | false | true | - | 29 February 2024 | Charge-off | 66.99 | 66.8 | 0.19 | 0.0 | 0.0 | 0.0 | false | false | + | 29 February 2024 | Charge-off | 66.98 | 66.8 | 0.18 | 0.0 | 0.0 | 0.0 | false | false | @TestRailId:C3360 @AdvancedPaymentAllocation Scenario: Verify accelerate maturity to charge-off date when interest recalculation is disabled - case when charge-off occurs with adjustment to last installment diff --git a/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeback.feature b/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeback.feature index 4200fa758..3d1e81aad 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeback.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/LoanChargeback.feature @@ -5230,13 +5230,13 @@ Feature: LoanChargeback | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 01 February 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 0.0 | 0.0 | | 2 | 29 | 01 March 2024 | 01 March 2024 | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 0.0 | 0.0 | - | 3 | 31 | 01 April 2024 | | 50.49 | 33.08 | 0.94 | 0.0 | 0.0 | 34.02 | 0.0 | 0.0 | 0.0 | 34.02 | - | 4 | 30 | 01 May 2024 | | 33.77 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.96 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.96 | 0.1 | 0.0 | 0.0 | 17.06 | 0.0 | 0.0 | 0.0 | 17.06 | + | 3 | 31 | 01 April 2024 | | 50.48 | 33.09 | 0.93 | 0.0 | 0.0 | 34.02 | 0.0 | 0.0 | 0.0 | 34.02 | + | 4 | 30 | 01 May 2024 | | 33.76 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.95 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.95 | 0.1 | 0.0 | 0.0 | 17.05 | 0.0 | 0.0 | 0.0 | 17.05 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 116.52 | 2.6 | 0 | 0 | 119.12 | 34.02 | 0 | 0 | 85.1 | + | 116.52 | 2.59 | 0 | 0 | 119.11 | 34.02 | 0 | 0 | 85.09 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | diff --git a/fineract-e2e-tests-runner/src/test/resources/features/LoanInterestPause.feature b/fineract-e2e-tests-runner/src/test/resources/features/LoanInterestPause.feature index 40f0516fb..be40ec7d8 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/LoanInterestPause.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/LoanInterestPause.feature @@ -344,14 +344,14 @@ Feature: Loan interest pause on repayment schedule | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | 14 January 2024 | 83.23 | 16.77 | 0.24 | 0.0 | 0.0 | 17.01 | 17.01 | 17.01 | 0.0 | 0.0 | - | 2 | 29 | 01 March 2024 | | 66.99 | 16.24 | 0.77 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 3 | 31 | 01 April 2024 | | 50.37 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 4 | 30 | 01 May 2024 | | 33.65 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 5 | 31 | 01 June 2024 | | 16.84 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | - | 6 | 30 | 01 July 2024 | | 0.0 | 16.84 | 0.1 | 0.0 | 0.0 | 16.94 | 0.0 | 0.0 | 0.0 | 16.94 | + | 2 | 29 | 01 March 2024 | | 67.0 | 16.23 | 0.78 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 3 | 31 | 01 April 2024 | | 50.38 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 4 | 30 | 01 May 2024 | | 33.66 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 5 | 31 | 01 June 2024 | | 16.85 | 16.81 | 0.2 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | + | 6 | 30 | 01 July 2024 | | 0.0 | 16.85 | 0.1 | 0.0 | 0.0 | 16.95 | 0.0 | 0.0 | 0.0 | 16.95 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 100 | 1.99 | 0 | 0 | 101.99 | 17.01 | 17.01 | 0 | 84.98 | + | 100 | 2.0 | 0 | 0 | 102.0 | 17.01 | 17.01 | 0 | 84.99 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false | diff --git a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature index 7b6d73017..6193f9eb9 100644 --- a/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature +++ b/fineract-e2e-tests-runner/src/test/resources/features/LoanRepayment.feature @@ -3969,7 +3969,7 @@ Feature: LoanRepayment | 15 January 2024 | Merchant Issued Refund | 50.0 | 48.9 | 1.1 | 0.0 | 0.0 | 126.1 | false | | 15 January 2024 | Interest Refund | 0.29 | 0.29 | 0.0 | 0.0 | 0.0 | 125.81 | false | | 16 January 2024 | Payout Refund | 50.0 | 49.95 | 0.05 | 0.0 | 0.0 | 75.86 | false | - | 16 January 2024 | Interest Refund | 0.3 | 0.3 | 0.0 | 0.0 | 0.0 | 75.56 | false | + | 16 January 2024 | Interest Refund | 0.31 | 0.31 | 0.0 | 0.0 | 0.0 | 75.55 | false | Then In Loan Transactions the "4"th Transaction has relationship type=RELATED with the "3"th Transaction Then In Loan Transactions the "6"th Transaction has relationship type=RELATED with the "5"th Transaction When Customer undo "1"th "Merchant Issued Refund" transaction made on "15 January 2024" @@ -4220,12 +4220,12 @@ Feature: LoanRepayment | Nr | Days | Date | Paid date | Balance of loan | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | | | 01 January 2024 | | 300.0 | | | 0.0 | | 0.0 | 0.0 | | | | | | | 01 January 2024 | | 200.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 1 | 31 | 01 February 2024 | | 417.87 | 82.13 | 2.92 | 0.0 | 0.0 | 85.05 | 49.5 | 49.5 | 0.0 | 35.55 | - | 2 | 29 | 01 March 2024 | | 335.26 | 82.61 | 2.44 | 0.0 | 0.0 | 85.05 | 49.79 | 49.79 | 0.0 | 35.26 | - | 3 | 31 | 01 April 2024 | | 252.17 | 83.09 | 1.96 | 0.0 | 0.0 | 85.05 | 50.08 | 50.08 | 0.0 | 34.97 | - | 4 | 30 | 01 May 2024 | | 168.59 | 83.58 | 1.47 | 0.0 | 0.0 | 85.05 | 50.22 | 50.22 | 0.0 | 34.83 | - | 5 | 31 | 01 June 2024 | | 84.52 | 84.07 | 0.98 | 0.0 | 0.0 | 85.05 | 50.22 | 50.22 | 0.0 | 34.83 | - | 6 | 30 | 01 July 2024 | | 0.0 | 84.52 | 0.49 | 0.0 | 0.0 | 85.01 | 50.19 | 50.19 | 0.0 | 34.82 | + | 1 | 31 | 01 February 2024 | | 417.88 | 82.12 | 2.92 | 0.0 | 0.0 | 85.04 | 49.5 | 49.5 | 0.0 | 35.54 | + | 2 | 29 | 01 March 2024 | | 335.28 | 82.6 | 2.44 | 0.0 | 0.0 | 85.04 | 49.79 | 49.79 | 0.0 | 35.25 | + | 3 | 31 | 01 April 2024 | | 252.2 | 83.08 | 1.96 | 0.0 | 0.0 | 85.04 | 50.08 | 50.08 | 0.0 | 34.96 | + | 4 | 30 | 01 May 2024 | | 168.63 | 83.57 | 1.47 | 0.0 | 0.0 | 85.04 | 50.22 | 50.22 | 0.0 | 34.82 | + | 5 | 31 | 01 June 2024 | | 84.57 | 84.06 | 0.98 | 0.0 | 0.0 | 85.04 | 50.22 | 50.22 | 0.0 | 34.82 | + | 6 | 30 | 01 July 2024 | | 0.0 | 84.57 | 0.49 | 0.0 | 0.0 | 85.06 | 50.19 | 50.19 | 0.0 | 34.87 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | | 500.0 | 10.26 | 0.0 | 0.0 | 510.26 | 300.0 | 300.0 | 0.0 | 210.26 | @@ -4283,14 +4283,14 @@ Feature: LoanRepayment | | | 01 January 2024 | | 300.0 | | | 0.0 | | 0.0 | 0.0 | | | | | 1 | 31 | 01 February 2024 | | 250.72 | 49.28 | 1.75 | 0.0 | 0.0 | 51.03 | 49.5 | 49.5 | 0.0 | 1.53 | | | | 10 February 2024 | | 200.0 | | | 0.0 | | 0.0 | 0.0 | | | | - | 2 | 29 | 01 March 2024 | | 361.32 | 89.4 | 2.26 | 0.0 | 0.0 | 91.66 | 49.79 | 49.79 | 0.0 | 41.87 | - | 3 | 31 | 01 April 2024 | | 271.77 | 89.55 | 2.11 | 0.0 | 0.0 | 91.66 | 50.08 | 50.08 | 0.0 | 41.58 | - | 4 | 30 | 01 May 2024 | | 181.7 | 90.07 | 1.59 | 0.0 | 0.0 | 91.66 | 50.22 | 50.22 | 0.0 | 41.44 | - | 5 | 31 | 01 June 2024 | | 91.1 | 90.6 | 1.06 | 0.0 | 0.0 | 91.66 | 50.22 | 50.22 | 0.0 | 41.44 | - | 6 | 30 | 01 July 2024 | | 0.0 | 91.1 | 0.53 | 0.0 | 0.0 | 91.63 | 50.19 | 50.19 | 0.0 | 41.44 | + | 2 | 29 | 01 March 2024 | | 361.33 | 89.39 | 2.27 | 0.0 | 0.0 | 91.66 | 49.79 | 49.79 | 0.0 | 41.87 | + | 3 | 31 | 01 April 2024 | | 271.78 | 89.55 | 2.11 | 0.0 | 0.0 | 91.66 | 50.08 | 50.08 | 0.0 | 41.58 | + | 4 | 30 | 01 May 2024 | | 181.71 | 90.07 | 1.59 | 0.0 | 0.0 | 91.66 | 50.22 | 50.22 | 0.0 | 41.44 | + | 5 | 31 | 01 June 2024 | | 91.11 | 90.6 | 1.06 | 0.0 | 0.0 | 91.66 | 50.22 | 50.22 | 0.0 | 41.44 | + | 6 | 30 | 01 July 2024 | | 0.0 | 91.11 | 0.53 | 0.0 | 0.0 | 91.64 | 50.19 | 50.19 | 0.0 | 41.45 | Then Loan Repayment schedule has the following data in Total row: | Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding | - | 500.0 | 9.3 | 0.0 | 0.0 | 509.3 | 300.0 | 300.0 | 0.0 | 209.3 | + | 500.0 | 9.31 | 0.0 | 0.0 | 509.31 | 300.0 | 300.0 | 0.0 | 209.31 | Then Loan Transactions tab has the following data: | Transaction date | Transaction Type | Amount | Principal | Interest | Fees | Penalties | Loan Balance | Reverted | Replayed | | 01 January 2024 | Disbursement | 300.0 | 0.0 | 0.0 | 0.0 | 0.0 | 300.0 | false | false | diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculator.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculator.java index 6cf8d0680..a48cd7de3 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculator.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculator.java @@ -499,7 +499,7 @@ public final class ProgressiveEMICalculator implements EMICalculator { final DaysInMonthType daysInMonthType = DaysInMonthType.fromInt(loanProductRelatedDetail.getDaysInMonthType()); final PeriodFrequencyType repaymentFrequency = loanProductRelatedDetail.getRepaymentPeriodFrequencyType(); - final BigDecimal daysInYear = BigDecimal.valueOf(daysInYearType.getNumberOfDays(interestPeriodFromDate)); + BigDecimal daysInYear = BigDecimal.valueOf(daysInYearType.getNumberOfDays(interestPeriodFromDate)); final BigDecimal actualDaysInPeriod = BigDecimal .valueOf(DateUtils.getDifferenceInDays(interestPeriodFromDate, interestPeriodDueDate)); final BigDecimal calculatedDaysInPeriod = BigDecimal @@ -611,7 +611,7 @@ public final class ProgressiveEMICalculator implements EMICalculator { final PeriodFrequencyType repaymentFrequency = loanProductRelatedDetail.getRepaymentPeriodFrequencyType(); final BigDecimal repaymentEvery = BigDecimal.valueOf(loanProductRelatedDetail.getRepayEvery()); - final BigDecimal daysInYear = BigDecimal.valueOf(daysInYearType.getNumberOfDays(interestPeriodFromDate)); + BigDecimal daysInYear = BigDecimal.valueOf(daysInYearType.getNumberOfDays(interestPeriodFromDate)); final BigDecimal actualDaysInPeriod = BigDecimal .valueOf(DateUtils.getDifferenceInDays(interestPeriodFromDate, interestPeriodDueDate)); final BigDecimal calculatedDaysInPeriod = BigDecimal diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestPeriod.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestPeriod.java index 9af92ffb8..0f461fe20 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestPeriod.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/InterestPeriod.java @@ -103,20 +103,19 @@ public class InterestPeriod implements Comparable { this.chargebackInterest = MathUtil.plus(this.chargebackInterest, chargebackInterest, mc); } - public Money getCalculatedDueInterest() { + public BigDecimal getCalculatedDueInterest() { if (isPaused) { - return chargebackInterest; + return chargebackInterest.getAmount(); } long lengthTillPeriodDueDate = getLengthTillPeriodDueDate(); - final Money interestDueTillRepaymentDueDate = Money.of(outstandingLoanBalance.getCurrencyData(), lengthTillPeriodDueDate == 0 // + final BigDecimal interestDueTillRepaymentDueDate = lengthTillPeriodDueDate == 0 // ? BigDecimal.ZERO // : getOutstandingLoanBalance().getAmount() // .multiply(getRateFactorTillPeriodDueDate(), mc) // .divide(BigDecimal.valueOf(lengthTillPeriodDueDate), mc) // - .multiply(BigDecimal.valueOf(getLength()), mc), - mc); // - return MathUtil.plus(chargebackInterest, interestDueTillRepaymentDueDate, mc); + .multiply(BigDecimal.valueOf(getLength()), mc); // + return MathUtil.add(chargebackInterest.getAmount(), interestDueTillRepaymentDueDate, mc); } public long getLength() { diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/ProgressiveLoanInterestScheduleModel.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/ProgressiveLoanInterestScheduleModel.java index 3c79fd41a..279d624ed 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/ProgressiveLoanInterestScheduleModel.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/ProgressiveLoanInterestScheduleModel.java @@ -296,8 +296,7 @@ public class ProgressiveLoanInterestScheduleModel { * @return */ public Money getTotalDueInterest() { - return repaymentPeriods().stream().flatMap(rp -> rp.getInterestPeriods().stream().map(InterestPeriod::getCalculatedDueInterest)) - .reduce(zero(), Money::plus); + return repaymentPeriods().stream().map(RepaymentPeriod::getCalculatedDueInterest).reduce(zero(), Money::plus); } /** diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/RepaymentPeriod.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/RepaymentPeriod.java index 210ac0a7b..8aa2e595d 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/RepaymentPeriod.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanproduct/calc/data/RepaymentPeriod.java @@ -149,8 +149,8 @@ public final class RepaymentPeriod { } private Money calculateCalculatedDueInterest() { - Money calculatedDueInterest = getInterestPeriods().stream().map(InterestPeriod::getCalculatedDueInterest).reduce(getZero(mc), - (m1, m2) -> m1.plus(m2, mc)); + Money calculatedDueInterest = Money.of(emi.getCurrencyData(), + getInterestPeriods().stream().map(InterestPeriod::getCalculatedDueInterest).reduce(BigDecimal.ZERO, BigDecimal::add), mc); if (getPrevious().isPresent()) { calculatedDueInterest = calculatedDueInterest.add(getPrevious().get().getUnrecognizedInterest(), mc); } diff --git a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculatorTest.java b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculatorTest.java index e7068108e..a0971cd2f 100644 --- a/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculatorTest.java +++ b/fineract-progressive-loan/src/test/java/org/apache/fineract/portfolio/loanproduct/calc/ProgressiveEMICalculatorTest.java @@ -262,12 +262,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.43, 0.0, 0.0, 1.33, 16.1, 83.9); - checkPeriod(interestSchedule, 0, 1, 17.43, 0.013315561644, 1.33, 16.1, 83.9); - checkPeriod(interestSchedule, 1, 0, 17.43, 0.012456493151, 1.05, 16.38, 67.52); - checkPeriod(interestSchedule, 2, 0, 17.43, 0.013315561644, 0.90, 16.53, 50.99); - checkPeriod(interestSchedule, 3, 0, 17.43, 0.012886027397, 0.66, 16.77, 34.22); - checkPeriod(interestSchedule, 4, 0, 17.43, 0.013315561644, 0.46, 16.97, 17.25); - checkPeriod(interestSchedule, 5, 0, 17.47, 0.012886027397, 0.22, 17.25, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.43, 0.013315561644, 1.3315561644, 1.33, 16.1, 83.9); + checkPeriod(interestSchedule, 1, 0, 17.43, 0.012456493151, 1.04509977537, 1.05, 16.38, 67.52); + checkPeriod(interestSchedule, 2, 0, 17.43, 0.013315561644, 0.899066722202, 0.90, 16.53, 50.99); + checkPeriod(interestSchedule, 3, 0, 17.43, 0.012886027397, 0.657058536972, 0.66, 16.77, 34.22); + checkPeriod(interestSchedule, 4, 0, 17.43, 0.013315561644, 0.455658519458, 0.46, 16.97, 17.25); + checkPeriod(interestSchedule, 5, 0, 17.47, 0.012886027397, 0.222283972598, 0.22, 17.25, 0.0); } @Test @@ -299,12 +299,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.13, 0.0, 0.0, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66, 16.47, 67.19); - checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.53, 16.60, 50.59); - checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.40, 16.73, 33.86); - checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.27, 16.86, 17.0); - checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.13, 17.00, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.790183333301, 0.79, 16.34, 83.66); + checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66106737664, 0.66, 16.47, 67.19); + checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.530924181643, 0.53, 16.60, 50.59); + checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.399753748317, 0.40, 16.73, 33.86); + checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.267556076655, 0.27, 16.86, 17.0); + checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.134331166661, 0.13, 17.00, 0.0); } @Test @@ -336,22 +336,22 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.13, 0.0, 0.0, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66, 16.47, 67.19); - checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.53, 16.60, 50.59); - checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.40, 16.73, 33.86); - checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.27, 16.86, 17.0); - checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.13, 17.00, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.790183333301, 0.79, 16.34, 83.66); + checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66106737664, 0.66, 16.47, 67.19); + checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.530924181643, 0.53, 16.60, 50.59); + checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.399753748317, 0.40, 16.73, 33.86); + checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.267556076655, 0.27, 16.86, 17.0); + checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.134331166661, 0.13, 17.00, 0.0); emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 3, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.13, 0.0, 0.0, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66, 16.47, 167.19); - checkPeriod(interestSchedule, 2, 0, 42.63, 0.007901833333, 1.32, 1.32, 41.31, 125.88); - checkPeriod(interestSchedule, 3, 0, 42.63, 0.007901833333, 0.99, 41.64, 84.24); - checkPeriod(interestSchedule, 4, 0, 42.63, 0.007901833333, 0.67, 41.96, 42.28); - checkPeriod(interestSchedule, 5, 0, 42.61, 0.007901833333, 0.33, 42.28, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.790183333301, 0.79, 16.34, 83.66); + checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66106737664, 0.66, 16.47, 167.19); + checkPeriod(interestSchedule, 2, 0, 42.63, 0.007901833333, 1.32110751494, 1.32, 41.31, 125.88); + checkPeriod(interestSchedule, 3, 0, 42.63, 0.007901833333, 0.994682779959, 0.99, 41.64, 84.24); + checkPeriod(interestSchedule, 4, 0, 42.63, 0.007901833333, 0.665650439972, 0.67, 41.96, 42.28); + checkPeriod(interestSchedule, 5, 0, 42.61, 0.007901833333, 0.334089513318, 0.33, 42.28, 0.0); } @Test @@ -389,12 +389,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.changeInterestRate(interestSchedule, interestChangeDate, interestRateNewValue); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 16.88, 0.003333333333, 0.28, 16.60, 66.97); - checkPeriod(interestSchedule, 2, 0, 16.88, 0.003333333333, 0.22, 16.66, 50.31); - checkPeriod(interestSchedule, 3, 0, 16.88, 0.003333333333, 0.17, 16.71, 33.60); - checkPeriod(interestSchedule, 4, 0, 16.88, 0.003333333333, 0.11, 16.77, 16.83); - checkPeriod(interestSchedule, 5, 0, 16.89, 0.003333333333, 0.06, 16.83, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 16.88, 0.003333333333, 0.278566666639, 0.28, 16.60, 66.97); + checkPeriod(interestSchedule, 2, 0, 16.88, 0.003333333333, 0.223233333311, 0.22, 16.66, 50.31); + checkPeriod(interestSchedule, 3, 0, 16.88, 0.003333333333, 0.167699999983, 0.17, 16.71, 33.60); + checkPeriod(interestSchedule, 4, 0, 16.88, 0.003333333333, 0.111999999989, 0.11, 16.77, 16.83); + checkPeriod(interestSchedule, 5, 0, 16.89, 0.003333333333, 0.0560999999943, 0.06, 16.83, 0.0); } @Test @@ -436,12 +436,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.changeInterestRate(interestModel, interestChangeDate, interestRateNewValue); checkPeriod(interestModel, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 66.67); - checkPeriod(interestModel, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 66.67); - checkPeriod(interestModel, 1, 0, 17.01, 0.003333333333, 0.22, 0.0, 17.01, 66.56); - checkPeriod(interestModel, 2, 0, 16.83, 0.003333333333, 0.22, 0.44, 16.39, 50.17); - checkPeriod(interestModel, 3, 0, 16.83, 0.003333333333, 0.17, 16.66, 33.51); - checkPeriod(interestModel, 4, 0, 16.83, 0.003333333333, 0.11, 16.72, 16.79); - checkPeriod(interestModel, 5, 0, 16.85, 0.003333333333, 0.06, 16.79, 0.0); + checkPeriod(interestModel, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 66.67); + checkPeriod(interestModel, 1, 0, 17.01, 0.003333333333, 0.222233333311, 0.0, 17.01, 66.56); + checkPeriod(interestModel, 2, 0, 16.83, 0.003333333333, 0.221866666644, 0.44, 16.39, 50.17); + checkPeriod(interestModel, 3, 0, 16.83, 0.003333333333, 0.167233333317, 0.17, 16.66, 33.51); + checkPeriod(interestModel, 4, 0, 16.83, 0.003333333333, 0.111699999989, 0.11, 16.72, 16.79); + checkPeriod(interestModel, 5, 0, 16.85, 0.003333333333, 0.0559666666611, 0.06, 16.79, 0.0); } @Test @@ -482,13 +482,13 @@ class ProgressiveEMICalculatorTest { emiCalculator.changeInterestRate(interestModel, interestChangeDate, interestRateNewValue); checkPeriod(interestModel, 0, 0, 16.80, 0.0, 0.0, 0.44, 16.36, 66.63); - checkPeriod(interestModel, 0, 1, 16.80, 0.002634408602, 0.26, 0.44, 16.36, 66.63); - checkPeriod(interestModel, 0, 2, 16.80, 0.000752688172, 0.06, 0.44, 16.36, 66.63); - checkPeriod(interestModel, 0, 3, 16.80, 0.001397849462, 0.12, 0.44, 16.36, 66.63); - checkPeriod(interestModel, 1, 0, 16.80, 0.003333333333, 0.22, 16.58, 50.05); - checkPeriod(interestModel, 2, 0, 16.80, 0.003333333333, 0.17, 16.63, 33.42); - checkPeriod(interestModel, 3, 0, 16.80, 0.003333333333, 0.11, 16.69, 16.73); - checkPeriod(interestModel, 4, 0, 16.79, 0.003333333333, 0.06, 16.73, 0.0); + checkPeriod(interestModel, 0, 1, 16.80, 0.002634408602, 0.2634408602, 0.44, 16.36, 66.63); + checkPeriod(interestModel, 0, 2, 16.80, 0.000752688172, 0.0624655913944, 0.44, 16.36, 66.63); + checkPeriod(interestModel, 0, 3, 16.80, 0.001397849462, 0.116007526851, 0.44, 16.36, 66.63); + checkPeriod(interestModel, 1, 0, 16.80, 0.003333333333, 0.222099999978, 0.22, 16.58, 50.05); + checkPeriod(interestModel, 2, 0, 16.80, 0.003333333333, 0.166833333317, 0.17, 16.63, 33.42); + checkPeriod(interestModel, 3, 0, 16.80, 0.003333333333, 0.111399999989, 0.11, 16.69, 16.73); + checkPeriod(interestModel, 4, 0, 16.79, 0.003333333333, 0.055766666661, 0.06, 16.73, 0.0); checkPeriod(interestModel, 5, 0, 17.01, 0.003333333333, 0.0, 17.01, 0.0); } @@ -527,13 +527,13 @@ class ProgressiveEMICalculatorTest { emiCalculator.changeInterestRate(interestSchedule, interestChangeDate, interestRateNewValue); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 16.90, 0.002614942529, 0.22, 0.37, 16.53, 67.04); - checkPeriod(interestSchedule, 1, 1, 16.90, 0.001839080460, 0.15, 0.37, 16.53, 67.04); - checkPeriod(interestSchedule, 2, 0, 16.90, 0.003333333333, 0.22, 16.68, 50.36); - checkPeriod(interestSchedule, 3, 0, 16.90, 0.003333333333, 0.17, 16.73, 33.63); - checkPeriod(interestSchedule, 4, 0, 16.90, 0.003333333333, 0.11, 16.79, 16.84); - checkPeriod(interestSchedule, 5, 0, 16.90, 0.003333333333, 0.06, 16.84, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 16.90, 0.002614942529, 0.218530747114, 0.37, 16.53, 67.04); + checkPeriod(interestSchedule, 1, 1, 16.90, 0.001839080460, 0.153691954042, 0.37, 16.53, 67.04); + checkPeriod(interestSchedule, 2, 0, 16.90, 0.003333333333, 0.223466666644, 0.22, 16.68, 50.36); + checkPeriod(interestSchedule, 3, 0, 16.90, 0.003333333333, 0.16786666665, 0.17, 16.73, 33.63); + checkPeriod(interestSchedule, 4, 0, 16.90, 0.003333333333, 0.112099999989, 0.11, 16.79, 16.84); + checkPeriod(interestSchedule, 5, 0, 16.90, 0.003333333333, 0.0561333333276, 0.06, 16.84, 0.0); } /** @@ -593,13 +593,13 @@ class ProgressiveEMICalculatorTest { emiCalculator.payPrincipal(interestSchedule, op1stCorrectionPeriodDueDate, op1stCorrectionDate, op1stCorrectionAmount); emiCalculator.payInterest(interestSchedule, op1stCorrectionPeriodDueDate, op1stCorrectionDate, toMoney(0.24)); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.002816091954, 0.24, 16.77, 66.80); - checkPeriod(interestSchedule, 1, 1, 17.01, 0.003017241379, 0.20, 0.24, 16.77, 66.80); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.59, 16.42, 50.38); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.66); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.20, 16.81, 16.85); - checkPeriod(interestSchedule, 5, 0, 16.95, 0.005833333333, 0.10, 16.85, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.002816091954, 0.235340804584, 0.24, 16.77, 66.80); + checkPeriod(interestSchedule, 1, 1, 17.01, 0.003017241379, 0.201551724117, 0.24, 16.77, 66.80); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.389666666644, 0.59, 16.42, 50.38); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.293883333317, 0.29, 16.72, 33.66); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196349999989, 0.20, 16.81, 16.85); + checkPeriod(interestSchedule, 5, 0, 16.95, 0.005833333333, 0.098291666661, 0.10, 16.85, 0.0); // totally pay off another period with balance correction final LocalDate op2ndCorrectionPeriodDueDate = LocalDate.of(2024, 4, 1); @@ -615,13 +615,13 @@ class ProgressiveEMICalculatorTest { emiCalculator.payPrincipal(interestSchedule, op2ndCorrectionPeriodDueDate, op2ndCorrectionDate, op2ndCorrectionAmount); emiCalculator.payInterest(interestSchedule, op2ndCorrectionPeriodDueDate, op2ndCorrectionDate, toMoney(0.49)); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.002816091954, 0.24, 16.77, 50.38); - checkPeriod(interestSchedule, 1, 1, 17.01, 0.003017241379, 0.20, 0.24, 16.77, 50.38); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.29, 0.49, 16.52, 50.28); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.56); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.20, 16.81, 16.75); - checkPeriod(interestSchedule, 5, 0, 16.85, 0.005833333333, 0.10, 16.75, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.002816091954, 0.235340804584, 0.24, 16.77, 50.38); + checkPeriod(interestSchedule, 1, 1, 17.01, 0.003017241379, 0.201551724117, 0.24, 16.77, 50.38); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.293883333317, 0.49, 16.52, 50.28); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.293299999983, 0.29, 16.72, 33.56); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.195766666655, 0.20, 16.81, 16.75); + checkPeriod(interestSchedule, 5, 0, 16.85, 0.005833333333, 0.0977083333278, 0.10, 16.75, 0.0); // check numbers on last period due date LocalDate periodDueDate = LocalDate.of(2024, 7, 1); @@ -710,8 +710,8 @@ class ProgressiveEMICalculatorTest { // check periods in model - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.002816091954, 0.24, 0.24, 16.77, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.002816091954, 0.235340804584, 0.24, 16.77, 0.0); checkPeriod(interestSchedule, 1, 1, 17.01, 0.003017241379, 0.0, 0.24, 16.77, 0.0); checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.0, 0.0, 17.01, 0.0); checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.0, 0.0, 17.01, 0.0); @@ -777,19 +777,19 @@ class ProgressiveEMICalculatorTest { // check periods in model checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.26, 16.75, 15.21); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.002634408602, 0.26, 16.75, 15.21); - checkPeriod(interestSchedule, 0, 2, 17.01, 0.003198924731, 0.05, 0.26, 16.75, 15.21); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.09, 0.0, 17.01, 15.21); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.09, 0.0, 17.01, 15.21); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.09, 0.0, 17.01, 15.21); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.09, 0.0, 17.01, 15.21); - checkPeriod(interestSchedule, 5, 0, 15.71, 0.005833333333, 0.09, 0.5, 15.21, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.002634408602, 0.2634408602, 0.26, 16.75, 15.21); + checkPeriod(interestSchedule, 0, 2, 17.01, 0.003198924731, 0.0486556451585, 0.26, 16.75, 15.21); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.0887249999948, 0.0, 17.01, 15.21); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.0887249999949, 0.0, 17.01, 15.21); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.0887249999949, 0.0, 17.01, 15.21); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.0887249999949, 0.0, 17.01, 15.21); + checkPeriod(interestSchedule, 5, 0, 15.71, 0.005833333333, 0.0887249999949, 0.5, 15.21, 0.0); emiCalculator.payPrincipal(interestSchedule, LocalDate.of(2024, 7, 1), LocalDate.of(2024, 1, 15), toMoney(15.21)); // check periods in model checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.26, 16.75, 0.0); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.002634408602, 0.26, 16.75, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.002634408602, 0.2634408602, 0.26, 16.75, 0.0); checkPeriod(interestSchedule, 0, 2, 17.01, 0.003198924731, 0.0, 0.26, 16.75, 0.0); checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.0, 0.0, 17.01, 0.0); checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.0, 0.0, 17.01, 0.0); @@ -828,24 +828,24 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.13, 0.0, 0.0, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66, 16.47, 67.19); - checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.53, 16.60, 50.59); - checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.40, 16.73, 33.86); - checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.27, 16.86, 17.0); - checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.13, 17.00, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.790183333301, 0.79, 16.34, 83.66); + checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66106737664, 0.66, 16.47, 67.19); + checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.530924181643, 0.53, 16.60, 50.59); + checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.399753748317, 0.40, 16.73, 33.86); + checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.267556076655, 0.27, 16.86, 17.0); + checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.134331166661, 0.13, 17.00, 0.0); disbursedAmount = toMoney(200.0); emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 8), disbursedAmount); - checkPeriod(interestSchedule, 0, 0, 51.33, 0.0, 0.0, 2.02, 49.31, 250.69); - checkPeriod(interestSchedule, 0, 1, 51.33, 0.001784284946, 0.18, 2.02, 49.31, 250.69); - checkPeriod(interestSchedule, 0, 2, 51.33, 0.006117548387, 1.84, 2.02, 49.31, 250.69); - checkPeriod(interestSchedule, 1, 0, 51.33, 0.007901833333, 1.98, 49.35, 201.34); - checkPeriod(interestSchedule, 2, 0, 51.33, 0.007901833333, 1.59, 49.74, 151.60); - checkPeriod(interestSchedule, 3, 0, 51.33, 0.007901833333, 1.20, 50.13, 101.47); - checkPeriod(interestSchedule, 4, 0, 51.33, 0.007901833333, 0.80, 50.53, 50.94); - checkPeriod(interestSchedule, 5, 0, 51.34, 0.007901833333, 0.40, 50.94, 0.0); + checkPeriod(interestSchedule, 0, 0, 51.33, 0.0, 0.0, 2.01, 49.32, 250.68); + checkPeriod(interestSchedule, 0, 1, 51.33, 0.001784284946, 0.178428494616, 2.01, 49.32, 250.68); + checkPeriod(interestSchedule, 0, 2, 51.33, 0.006117548387, 1.8352645161, 2.01, 49.32, 250.68); + checkPeriod(interestSchedule, 1, 0, 51.33, 0.007901833333, 1.98083157992, 1.98, 49.35, 201.33); + checkPeriod(interestSchedule, 2, 0, 51.33, 0.007901833333, 1.59087610493, 1.59, 49.74, 151.59); + checkPeriod(interestSchedule, 3, 0, 51.33, 0.007901833333, 1.19783891495, 1.2, 50.13, 101.46); + checkPeriod(interestSchedule, 4, 0, 51.33, 0.007901833333, 0.801720009967, 0.80, 50.53, 50.93); + checkPeriod(interestSchedule, 5, 0, 51.33, 0.007901833333, 0.40244037165, 0.40, 50.93, 0.0); } @Test @@ -878,24 +878,24 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.13, 0.0, 0.0, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66, 16.47, 67.19); - checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.53, 16.60, 50.59); - checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.40, 16.73, 33.86); - checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.27, 16.86, 17.0); - checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.13, 17.00, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.790183333301, 0.79, 16.34, 83.66); + checkPeriod(interestSchedule, 1, 0, 17.13, 0.007901833333, 0.66106737664, 0.66, 16.47, 67.19); + checkPeriod(interestSchedule, 2, 0, 17.13, 0.007901833333, 0.530924181643, 0.53, 16.60, 50.59); + checkPeriod(interestSchedule, 3, 0, 17.13, 0.007901833333, 0.399753748317, 0.40, 16.73, 33.86); + checkPeriod(interestSchedule, 4, 0, 17.13, 0.007901833333, 0.267556076655, 0.27, 16.86, 17.0); + checkPeriod(interestSchedule, 5, 0, 17.13, 0.007901833333, 0.134331166661, 0.13, 17.00, 0.0); disbursedAmount = toMoney(100.0); emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 2, 15), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.13, 0.0, 0.0, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.79, 16.34, 83.66); - checkPeriod(interestSchedule, 1, 0, 37.53, 0.003814678161, 0.32, 1.07, 36.46, 147.20); - checkPeriod(interestSchedule, 1, 1, 37.53, 0.004087155172, 0.75, 1.07, 36.46, 147.20); - checkPeriod(interestSchedule, 2, 0, 37.53, 0.007901833333, 1.16, 36.37, 110.83); - checkPeriod(interestSchedule, 3, 0, 37.53, 0.007901833333, 0.88, 36.65, 74.18); - checkPeriod(interestSchedule, 4, 0, 37.53, 0.007901833333, 0.59, 36.94, 37.24); - checkPeriod(interestSchedule, 5, 0, 37.53, 0.007901833333, 0.29, 37.24, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.13, 0.007901833333, 0.790183333301, 0.79, 16.34, 83.66); + checkPeriod(interestSchedule, 1, 0, 37.53, 0.003814678161, 0.31913597493, 1.07, 36.46, 147.20); + checkPeriod(interestSchedule, 1, 1, 37.53, 0.004087155172, 0.75064691889, 1.07, 36.46, 147.20); + checkPeriod(interestSchedule, 2, 0, 37.53, 0.007901833333, 1.16314986662, 1.16, 36.37, 110.83); + checkPeriod(interestSchedule, 3, 0, 37.53, 0.007901833333, 0.875760188295, 0.88, 36.65, 74.18); + checkPeriod(interestSchedule, 4, 0, 37.53, 0.007901833333, 0.586157996641, 0.59, 36.94, 37.24); + checkPeriod(interestSchedule, 5, 0, 37.53, 0.007901833333, 0.294264273321, 0.29, 37.24, 0.0); } @Test @@ -937,13 +937,13 @@ class ProgressiveEMICalculatorTest { checkTotalInterestDue(interestSchedule, 4.64); checkPeriod(interestSchedule, 0, 0, 29.94, 0.001019591398, 0.00, 1.15, 28.79, 146.21); - checkPeriod(interestSchedule, 0, 1, 29.94, 0.000764693548, 0.08, 1.15, 28.79, 146.21); - checkPeriod(interestSchedule, 0, 2, 29.94, 0.006117548387, 1.07, 1.15, 28.79, 146.21); - checkPeriod(interestSchedule, 1, 0, 29.94, 0.007901833333, 1.16, 28.78, 117.43); - checkPeriod(interestSchedule, 2, 0, 29.94, 0.007901833333, 0.93, 29.01, 88.42); - checkPeriod(interestSchedule, 3, 0, 29.94, 0.007901833333, 0.70, 29.24, 59.18); - checkPeriod(interestSchedule, 4, 0, 29.94, 0.007901833333, 0.47, 29.47, 29.71); - checkPeriod(interestSchedule, 5, 0, 29.94, 0.007901833333, 0.23, 29.71, 0.0); + checkPeriod(interestSchedule, 0, 1, 29.94, 0.000764693548, 0.0764693548332, 1.15, 28.79, 146.21); + checkPeriod(interestSchedule, 0, 2, 29.94, 0.006117548387, 1.07057096772, 1.15, 28.79, 146.21); + checkPeriod(interestSchedule, 1, 0, 29.94, 0.007901833333, 1.15532705162, 1.16, 28.78, 117.43); + checkPeriod(interestSchedule, 2, 0, 29.94, 0.007901833333, 0.927912288294, 0.93, 29.01, 88.42); + checkPeriod(interestSchedule, 3, 0, 29.94, 0.007901833333, 0.698680103304, 0.70, 29.24, 59.18); + checkPeriod(interestSchedule, 4, 0, 29.94, 0.007901833333, 0.467630496646, 0.47, 29.47, 29.71); + checkPeriod(interestSchedule, 5, 0, 29.94, 0.007901833333, 0.234763468323, 0.23, 29.71, 0.0); } @Test @@ -975,12 +975,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2023, 12, 12), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.13, 0.0, 0.0, 0.80, 16.33, 83.67); - checkPeriod(interestSchedule, 0, 1, 17.13, 0.008044857759, 0.80, 16.33, 83.67); - checkPeriod(interestSchedule, 1, 0, 17.13, 0.008031371585, 0.67, 16.46, 67.21); - checkPeriod(interestSchedule, 2, 0, 17.13, 0.007513218579, 0.50, 16.63, 50.58); - checkPeriod(interestSchedule, 3, 0, 17.13, 0.008031371585, 0.41, 16.72, 33.86); - checkPeriod(interestSchedule, 4, 0, 17.13, 0.007772295082, 0.26, 16.87, 16.99); - checkPeriod(interestSchedule, 5, 0, 17.13, 0.008031371585, 0.14, 16.99, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.13, 0.008044857759, 0.8044857759, 0.80, 16.33, 83.67); + checkPeriod(interestSchedule, 1, 0, 17.13, 0.008031371585, 0.671984860516, 0.67, 16.46, 67.21); + checkPeriod(interestSchedule, 2, 0, 17.13, 0.007513218579, 0.504963420695, 0.50, 16.63, 50.58); + checkPeriod(interestSchedule, 3, 0, 17.13, 0.008031371585, 0.40622677477, 0.41, 16.72, 33.86); + checkPeriod(interestSchedule, 4, 0, 17.13, 0.007772295082, 0.263169911477, 0.26, 16.87, 16.99); + checkPeriod(interestSchedule, 5, 0, 17.13, 0.008031371585, 0.136453003229, 0.14, 16.99, 0.0); } @Test @@ -1089,12 +1089,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 16.77, 0.0, 0.0, 0.18, 16.59, 83.41); - checkPeriod(interestSchedule, 0, 1, 16.77, 0.001823500000, 0.18, 16.59, 83.41); - checkPeriod(interestSchedule, 1, 0, 16.77, 0.001823500000, 0.15, 16.62, 66.79); - checkPeriod(interestSchedule, 2, 0, 16.77, 0.001823500000, 0.12, 16.65, 50.14); - checkPeriod(interestSchedule, 3, 0, 16.77, 0.001823500000, 0.09, 16.68, 33.46); - checkPeriod(interestSchedule, 4, 0, 16.77, 0.001823500000, 0.06, 16.71, 16.75); - checkPeriod(interestSchedule, 5, 0, 16.78, 0.001823500000, 0.03, 16.75, 0.0); + checkPeriod(interestSchedule, 0, 1, 16.77, 0.001823500000, 0.18235, 0.18, 16.59, 83.41); + checkPeriod(interestSchedule, 1, 0, 16.77, 0.001823500000, 0.152098135, 0.15, 16.62, 66.79); + checkPeriod(interestSchedule, 2, 0, 16.77, 0.001823500000, 0.121791565, 0.12, 16.65, 50.14); + checkPeriod(interestSchedule, 3, 0, 16.77, 0.001823500000, 0.09143029, 0.09, 16.68, 33.46); + checkPeriod(interestSchedule, 4, 0, 16.77, 0.001823500000, 0.06101431, 0.06, 16.71, 16.75); + checkPeriod(interestSchedule, 5, 0, 16.78, 0.001823500000, 0.030543625, 0.03, 16.75, 0.0); } @Test @@ -1123,9 +1123,9 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 33.57, 0.0, 0.0, 0.36, 33.21, 66.79); - checkPeriod(interestSchedule, 0, 1, 33.57, 0.003647000000, 0.36, 33.21, 66.79); - checkPeriod(interestSchedule, 1, 0, 33.57, 0.003647000000, 0.24, 33.33, 33.46); - checkPeriod(interestSchedule, 2, 0, 33.58, 0.003647000000, 0.12, 33.46, 0.0); + checkPeriod(interestSchedule, 0, 1, 33.57, 0.003647000000, 0.3647, 0.36, 33.21, 66.79); + checkPeriod(interestSchedule, 1, 0, 33.57, 0.003647000000, 0.24358313, 0.24, 33.33, 33.46); + checkPeriod(interestSchedule, 2, 0, 33.58, 0.003647000000, 0.12202862, 0.12, 33.46, 0.0); } @Test @@ -1157,12 +1157,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 16.90, 0.0, 0.0, 0.40, 16.50, 83.50); - checkPeriod(interestSchedule, 0, 1, 16.90, 0.003950916667, 0.40, 16.50, 83.50); - checkPeriod(interestSchedule, 1, 0, 16.90, 0.003950916667, 0.33, 16.57, 66.93); - checkPeriod(interestSchedule, 2, 0, 16.90, 0.003950916667, 0.26, 16.64, 50.29); - checkPeriod(interestSchedule, 3, 0, 16.90, 0.003950916667, 0.20, 16.70, 33.59); - checkPeriod(interestSchedule, 4, 0, 16.90, 0.003950916667, 0.13, 16.77, 16.82); - checkPeriod(interestSchedule, 5, 0, 16.89, 0.003950916667, 0.07, 16.82, 0.0); + checkPeriod(interestSchedule, 0, 1, 16.90, 0.003950916667, 0.3950916667, 0.40, 16.50, 83.50); + checkPeriod(interestSchedule, 1, 0, 16.90, 0.003950916667, 0.329901541694, 0.33, 16.57, 66.93); + checkPeriod(interestSchedule, 2, 0, 16.90, 0.003950916667, 0.264434852522, 0.26, 16.64, 50.29); + checkPeriod(interestSchedule, 3, 0, 16.90, 0.003950916667, 0.198691599183, 0.20, 16.70, 33.59); + checkPeriod(interestSchedule, 4, 0, 16.90, 0.003950916667, 0.132711290845, 0.13, 16.77, 16.82); + checkPeriod(interestSchedule, 5, 0, 16.89, 0.003950916667, 0.066454418339, 0.07, 16.82, 0.0); } @Test @@ -1249,7 +1249,7 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestModel, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestModel, 0, 0, 1005.83, 0.0, 0.0, 5.83, 1000.0, 0.0); - checkPeriod(interestModel, 0, 1, 1005.83, 0.005833333333, 5.83, 1000.0, 0.0); + checkPeriod(interestModel, 0, 1, 1005.83, 0.005833333333, 5.833333333, 5.83, 1000.0, 0.0); final LocalDate dueDate = LocalDate.of(2024, 2, 1); final LocalDate startDay = LocalDate.of(2024, 1, 1); @@ -1311,7 +1311,7 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestModel, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestModel, 0, 0, 1005.83, 0.0, 0.0, 5.83, 1000.0, 0.0); - checkPeriod(interestModel, 0, 1, 1005.83, 0.005833333333, 5.83, 1000.0, 0.0); + checkPeriod(interestModel, 0, 1, 1005.83, 0.005833333333, 5.833333333, 5.83, 1000.0, 0.0); final LocalDate dueDate = LocalDate.of(2024, 2, 1); final LocalDate startDay = LocalDate.of(2024, 1, 1); @@ -1381,8 +1381,8 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestModel, LocalDate.of(2024, 1, 15), disbursedAmount2nd); checkPeriod(interestModel, 0, 0, 2009.03, 0.0, 0.0, 9.03, 2000.0, 0.0); - checkPeriod(interestModel, 0, 1, 2009.03, 0.002634408602, 2.63, 9.03, 2000.0, 0.0); - checkPeriod(interestModel, 0, 2, 2009.03, 0.003198924731, 6.40, 9.03, 2000.0, 0.0); + checkPeriod(interestModel, 0, 1, 2009.03, 0.002634408602, 2.634408602, 9.03, 2000.0, 0.0); + checkPeriod(interestModel, 0, 2, 2009.03, 0.003198924731, 6.397849462, 9.03, 2000.0, 0.0); final LocalDate dueDate = LocalDate.of(2024, 2, 1); final LocalDate startDay = LocalDate.of(2024, 1, 1); @@ -1407,22 +1407,22 @@ class ProgressiveEMICalculatorTest { // 2nd 1000 disbursement accruals // Total Interest: 6.40 (17 days) checkDailyInterest(interestModel, dueDate, startDay, 15, 0.38, 3.01); - checkDailyInterest(interestModel, dueDate, startDay, 16, 0.37, 3.38); - checkDailyInterest(interestModel, dueDate, startDay, 17, 0.38, 3.76); + checkDailyInterest(interestModel, dueDate, startDay, 16, 0.38, 3.39); + checkDailyInterest(interestModel, dueDate, startDay, 17, 0.37, 3.76); checkDailyInterest(interestModel, dueDate, startDay, 18, 0.38, 4.14); - checkDailyInterest(interestModel, dueDate, startDay, 19, 0.37, 4.51); - checkDailyInterest(interestModel, dueDate, startDay, 20, 0.38, 4.89); - checkDailyInterest(interestModel, dueDate, startDay, 21, 0.37, 5.26); - checkDailyInterest(interestModel, dueDate, startDay, 22, 0.38, 5.64); - checkDailyInterest(interestModel, dueDate, startDay, 23, 0.38, 6.02); - checkDailyInterest(interestModel, dueDate, startDay, 24, 0.37, 6.39); - checkDailyInterest(interestModel, dueDate, startDay, 25, 0.38, 6.77); + checkDailyInterest(interestModel, dueDate, startDay, 19, 0.38, 4.52); + checkDailyInterest(interestModel, dueDate, startDay, 20, 0.37, 4.89); + checkDailyInterest(interestModel, dueDate, startDay, 21, 0.38, 5.27); + checkDailyInterest(interestModel, dueDate, startDay, 22, 0.38, 5.65); + checkDailyInterest(interestModel, dueDate, startDay, 23, 0.37, 6.02); + checkDailyInterest(interestModel, dueDate, startDay, 24, 0.38, 6.4); + checkDailyInterest(interestModel, dueDate, startDay, 25, 0.37, 6.77); checkDailyInterest(interestModel, dueDate, startDay, 26, 0.38, 7.15); - checkDailyInterest(interestModel, dueDate, startDay, 27, 0.37, 7.52); - checkDailyInterest(interestModel, dueDate, startDay, 28, 0.38, 7.90); + checkDailyInterest(interestModel, dueDate, startDay, 27, 0.38, 7.53); + checkDailyInterest(interestModel, dueDate, startDay, 28, 0.37, 7.90); checkDailyInterest(interestModel, dueDate, startDay, 29, 0.38, 8.28); - checkDailyInterest(interestModel, dueDate, startDay, 30, 0.37, 8.65); - checkDailyInterest(interestModel, dueDate, startDay, 31, 0.38, 9.03); + checkDailyInterest(interestModel, dueDate, startDay, 30, 0.38, 8.66); + checkDailyInterest(interestModel, dueDate, startDay, 31, 0.37, 9.03); } @Test @@ -1454,14 +1454,14 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 5), LocalDate.of(2024, 2, 10)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.000603448276, 0.05, 0.39, 16.62, 66.95); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.000603448276, 0.0504301724109, 0.39, 16.62, 66.95); checkPeriod(interestSchedule, 1, 1, 17.01, 0.001206896552, 0.0, 0.39, 16.62, 66.95); - checkPeriod(interestSchedule, 1, 2, 17.01, 0.004022988506, 0.34, 0.39, 16.62, 66.95); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.39, 16.62, 50.33); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.61); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 0.2, 16.81, 16.8); - checkPeriod(interestSchedule, 5, 0, 16.9, 0.005833333333, 0.1, 0.1, 16.8, 0.0); + checkPeriod(interestSchedule, 1, 2, 17.01, 0.004022988506, 0.336201149446, 0.39, 16.62, 66.95); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.390541666643, 0.39, 16.62, 50.33); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29359166665, 0.29, 16.72, 33.61); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196058333322, 0.2, 16.81, 16.8); + checkPeriod(interestSchedule, 5, 0, 16.9, 0.005833333333, 0.0979999999944, 0.1, 16.8, 0.0); } @Test @@ -1493,14 +1493,14 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 10), LocalDate.of(2024, 3, 10)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.001609195402, 0.13, 0.13, 16.88, 66.69); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.001609195402, 0.134480459762, 0.13, 16.88, 66.69); checkPeriod(interestSchedule, 1, 1, 17.01, 0.004224137931, 0.0, 0.13, 16.88, 66.69); checkPeriod(interestSchedule, 2, 0, 17.01, 0.001693548387, 0.0, 0.28, 16.73, 49.96); - checkPeriod(interestSchedule, 2, 1, 17.01, 0.004139784946, 0.28, 0.28, 16.73, 49.96); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.24); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.19, 0.19, 16.82, 16.42); - checkPeriod(interestSchedule, 5, 0, 16.52, 0.005833333333, 0.1, 0.1, 16.42, 0.0); + checkPeriod(interestSchedule, 2, 1, 17.01, 0.004139784946, 0.276082258049, 0.28, 16.73, 49.96); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.291433333317, 0.29, 16.72, 33.24); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.193899999989, 0.19, 16.82, 16.42); + checkPeriod(interestSchedule, 5, 0, 16.52, 0.005833333333, 0.095783333328, 0.1, 16.42, 0.0); } @Test @@ -1533,14 +1533,14 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 2, 5)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.56, 16.45, 83.55); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.56, 0.56, 16.45, 83.55); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.564516129, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 0, 2, 17.01, 0.000188172043, 0.0, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 1, 0, 17.01, 0.000804597701, 0.0, 0.42, 16.59, 66.96); - checkPeriod(interestSchedule, 1, 1, 17.01, 0.005028735632, 0.42, 0.42, 16.59, 66.96); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.39, 16.62, 50.34); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.62); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 0.2, 16.81, 16.81); - checkPeriod(interestSchedule, 5, 0, 16.91, 0.005833333333, 0.1, 0.1, 16.81, 0.0); + checkPeriod(interestSchedule, 1, 1, 17.01, 0.005028735632, 0.420150862055, 0.42, 16.59, 66.96); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.390599999978, 0.39, 16.62, 50.34); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.293649999983, 0.29, 16.72, 33.62); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196116666655, 0.2, 16.81, 16.81); + checkPeriod(interestSchedule, 5, 0, 16.91, 0.005833333333, 0.0980583333276, 0.1, 16.81, 0.0); } @Test @@ -1573,14 +1573,14 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 1, 10), LocalDate.of(2024, 1, 31)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.17, 16.84, 83.16); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.001505376344, 0.15, 0.17, 16.84, 83.16); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.001505376344, 0.1505376344, 0.17, 16.84, 83.16); checkPeriod(interestSchedule, 0, 2, 17.01, 0.004139784946, 0.0, 0.17, 16.84, 83.16); - checkPeriod(interestSchedule, 0, 3, 17.01, 0.000188172043, 0.02, 0.17, 16.84, 83.16); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 0.49, 16.52, 66.64); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.39, 16.62, 50.02); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.3); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.19, 0.19, 16.82, 16.48); - checkPeriod(interestSchedule, 5, 0, 16.58, 0.005833333333, 0.1, 0.1, 16.48, 0.0); + checkPeriod(interestSchedule, 0, 3, 17.01, 0.000188172043, 0.0188172043, 0.17, 16.84, 83.16); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.485099999971, 0.49, 16.52, 66.64); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.38873333331, 0.39, 16.62, 50.02); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.291783333317, 0.29, 16.72, 33.3); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.194249999989, 0.19, 16.82, 16.48); + checkPeriod(interestSchedule, 5, 0, 16.58, 0.005833333333, 0.0961333333278, 0.1, 16.48, 0.0); } @Test @@ -1613,14 +1613,14 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 2, 29)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.56, 16.45, 83.55); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.56, 0.56, 16.45, 83.55); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.564516129, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 0, 2, 17.01, 0.000188172043, 0.0, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 1, 0, 17.01, 0.005632183908, 0.0, 0.02, 16.99, 66.56); - checkPeriod(interestSchedule, 1, 1, 17.01, 0.000201149425, 0.02, 0.02, 16.99, 66.56); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.39, 16.62, 49.94); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.22); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.19, 0.19, 16.82, 16.4); - checkPeriod(interestSchedule, 5, 0, 16.5, 0.005833333333, 0.1, 0.1, 16.4, 0.0); + checkPeriod(interestSchedule, 1, 1, 17.01, 0.000201149425, 0.0168060344588, 0.02, 16.99, 66.56); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.388266666645, 0.39, 16.62, 49.94); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29131666665, 0.29, 16.72, 33.22); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.193783333322, 0.19, 16.82, 16.4); + checkPeriod(interestSchedule, 5, 0, 16.5, 0.005833333333, 0.0956666666613, 0.1, 16.4, 0.0); } @Test @@ -1653,14 +1653,14 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 3, 31)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.56, 16.45, 83.55); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.56, 0.56, 16.45, 83.55); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.564516129, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 0, 2, 17.01, 0.000188172043, 0.0, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.0, 0.0, 17.01, 66.54); checkPeriod(interestSchedule, 2, 0, 17.01, 0.00564516129, 0.0, 0.01, 17.0, 49.54); - checkPeriod(interestSchedule, 2, 1, 17.01, 0.000188172043, 0.01, 0.01, 17.0, 49.54); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 32.82); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.19, 0.19, 16.82, 16.0); - checkPeriod(interestSchedule, 5, 0, 16.09, 0.005833333333, 0.09, 0.09, 16.0, 0.0); + checkPeriod(interestSchedule, 2, 1, 17.01, 0.000188172043, 0.0125209677412, 0.01, 17.0, 49.54); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.288983333317, 0.29, 16.72, 32.82); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.191449999989, 0.19, 16.82, 16.0); + checkPeriod(interestSchedule, 5, 0, 16.09, 0.005833333333, 0.0933333333279, 0.09, 16.0, 0.0); } @Test @@ -1695,15 +1695,15 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 5), LocalDate.of(2024, 2, 15)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.000603448276, 0.05, 0.3, 16.71, 66.86); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.000603448276, 0.0504301724109, 0.3, 16.71, 66.86); checkPeriod(interestSchedule, 1, 1, 17.01, 0.002212643678, 0.0, 0.3, 16.71, 66.86); - checkPeriod(interestSchedule, 1, 2, 17.01, 0.001005747126, 0.08, 0.3, 16.71, 66.86); - checkPeriod(interestSchedule, 1, 3, 17.01, 0.002011494253, 0.17, 0.3, 16.71, 66.86); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.39, 16.62, 50.24); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.52); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 0.2, 16.81, 16.71); - checkPeriod(interestSchedule, 5, 0, 16.81, 0.005833333333, 0.1, 0.1, 16.71, 0.0); + checkPeriod(interestSchedule, 1, 2, 17.01, 0.001005747126, 0.0840502873475, 0.3, 16.71, 66.86); + checkPeriod(interestSchedule, 1, 3, 17.01, 0.002011494253, 0.168100574723, 0.3, 16.71, 66.86); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.390016666645, 0.39, 16.62, 50.24); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29306666665, 0.29, 16.72, 33.52); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.195533333322, 0.2, 16.81, 16.71); + checkPeriod(interestSchedule, 5, 0, 16.81, 0.005833333333, 0.0974749999944, 0.1, 16.71, 0.0); } @Test @@ -1740,16 +1740,16 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 10), LocalDate.of(2024, 3, 10)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.000804597701, 0.07, 0.14, 16.87, 66.7); - checkPeriod(interestSchedule, 1, 1, 17.01, 0.000804597701, 0.07, 0.14, 16.87, 66.7); - checkPeriod(interestSchedule, 1, 2, 17.01, 0.004224137931, 0.0, 0.14, 16.87, 66.7); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.001693548387, 0.0, 0.28, 16.73, 49.97); - checkPeriod(interestSchedule, 2, 1, 17.01, 0.001881720430, 0.13, 0.28, 16.73, 49.97); - checkPeriod(interestSchedule, 2, 1, 17.01, 0.00188172043, 0.13, 0.28, 16.73, 49.97); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.25); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.19, 0.19, 16.82, 16.43); - checkPeriod(interestSchedule, 5, 0, 16.53, 0.005833333333, 0.1, 0.1, 16.43, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.000804597701, 0.0672402298812, 0.13, 16.88, 66.69); + checkPeriod(interestSchedule, 1, 1, 17.01, 0.000804597701, 0.0672402298824, 0.13, 16.88, 66.69); + checkPeriod(interestSchedule, 1, 2, 17.01, 0.004224137931, 0.0, 0.13, 16.88, 66.69); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.001693548387, 0.0, 0.28, 16.73, 49.96); + checkPeriod(interestSchedule, 2, 1, 17.01, 0.001881720430, 0.125491935477, 0.28, 16.73, 49.96); + checkPeriod(interestSchedule, 2, 1, 17.01, 0.00188172043, 0.125491935477, 0.28, 16.73, 49.96); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.291433333317, 0.29, 16.72, 33.24); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.193899999989, 0.19, 16.82, 16.42); + checkPeriod(interestSchedule, 5, 0, 16.52, 0.005833333333, 0.095783333328, 0.1, 16.42, 0.0); } @Test @@ -1784,14 +1784,14 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 2, 5)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.56, 16.45, 83.55); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.56, 0.56, 16.45, 83.55); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.564516129, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 0, 2, 17.01, 0.000188172043, 0.0, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 1, 0, 17.01, 0.000804597701, 0.0, 0.42, 16.59, 66.96); - checkPeriod(interestSchedule, 1, 1, 17.01, 0.005028735632, 0.42, 0.42, 16.59, 66.96); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.39, 16.62, 50.34); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.62); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 0.2, 16.81, 16.81); - checkPeriod(interestSchedule, 5, 0, 16.91, 0.005833333333, 0.1, 0.1, 16.81, 0.0); + checkPeriod(interestSchedule, 1, 1, 17.01, 0.005028735632, 0.420150862055, 0.42, 16.59, 66.96); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.390599999978, 0.39, 16.62, 50.34); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.293649999983, 0.29, 16.72, 33.62); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196116666655, 0.2, 16.81, 16.81); + checkPeriod(interestSchedule, 5, 0, 16.91, 0.005833333333, 0.0980583333276, 0.1, 16.81, 0.0); } @Test @@ -1824,13 +1824,13 @@ class ProgressiveEMICalculatorTest { emiCalculator.applyInterestPause(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 3, 1)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.56, 16.45, 83.55); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.56, 0.56, 16.45, 83.55); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.00564516129, 0.564516129, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 0, 2, 17.01, 0.000188172043, 0.0, 0.56, 16.45, 83.55); checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.0, 0.0, 17.01, 66.54); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 0.39, 16.62, 49.92); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 0.29, 16.72, 33.2); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.19, 0.19, 16.82, 16.38); - checkPeriod(interestSchedule, 5, 0, 16.48, 0.005833333333, 0.1, 0.1, 16.38, 0.0); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.388149999977, 0.39, 16.62, 49.92); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.291199999983, 0.29, 16.72, 33.2); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.193666666656, 0.19, 16.82, 16.38); + checkPeriod(interestSchedule, 5, 0, 16.48, 0.005833333333, 0.0955499999946, 0.1, 16.38, 0.0); } @Test @@ -1865,12 +1865,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 1.17, 15.84, 84.16); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 1.17, 15.84, 84.16); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.64); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 51.02); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.30, 16.71, 34.31); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.20, 16.81, 17.50); - checkPeriod(interestSchedule, 5, 0, 17.60, 0.005833333333, 0.10, 17.50, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 1.1666666667, 1.17, 15.84, 84.16); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.490933333306, 0.49, 16.52, 67.64); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.394566666645, 0.39, 16.62, 51.02); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29761666665, 0.30, 16.71, 34.31); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.200141666655, 0.20, 16.81, 17.50); + checkPeriod(interestSchedule, 5, 0, 17.60, 0.005833333333, 0.102083333328, 0.10, 17.50, 0.0); } @Test @@ -1908,12 +1908,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 1.17, 15.84, 84.16); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 1.17, 15.84, 84.16); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.64); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.79, 16.22, 51.42); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.30, 16.71, 34.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.20, 16.81, 17.90); - checkPeriod(interestSchedule, 5, 0, 18.00, 0.005833333333, 0.10, 17.90, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 1.1666666667, 1.17, 15.84, 84.16); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.490933333306, 0.49, 16.52, 67.64); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.789133333354, 0.79, 16.22, 51.42); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.299949999983, 0.30, 16.71, 34.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.202474999988, 0.20, 16.81, 17.90); + checkPeriod(interestSchedule, 5, 0, 18.00, 0.005833333333, 0.104416666661, 0.10, 17.90, 0.0); } @Test @@ -1948,12 +1948,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 1.20, 15.81, 67.76); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.40, 16.61, 51.15); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.30, 16.71, 34.44); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.20, 16.81, 17.63); - checkPeriod(interestSchedule, 5, 0, 17.73, 0.005833333333, 0.10, 17.63, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 1.20247944445, 1.20, 15.81, 67.76); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.395266666644, 0.40, 16.61, 51.15); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.298374999983, 0.3, 16.71, 34.44); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.200899999989, 0.20, 16.81, 17.63); + checkPeriod(interestSchedule, 5, 0, 17.73, 0.005833333333, 0.102841666661, 0.10, 17.63, 0.0); } @Test @@ -2425,12 +2425,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period emiCalculator.payPrincipal(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 2, 1), toMoney(16.43)); @@ -2443,12 +2443,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackPrincipal(interestSchedule, LocalDate.of(2024, 3, 1), toMoney(17.01)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 84.06); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.49, 33.53, 50.53); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.81); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 17.00); - checkPeriod(interestSchedule, 5, 0, 17.10, 0.005833333333, 0.1, 17.00, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 84.06); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.490349999973, 0.49, 33.53, 50.53); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294758333316, 0.29, 16.72, 33.81); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.197224999989, 0.2, 16.81, 17.00); + checkPeriod(interestSchedule, 5, 0, 17.10, 0.005833333333, 0.0991666666611, 0.1, 17.00, 0.0); } @Test @@ -2478,12 +2478,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period emiCalculator.payPrincipal(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 2, 1), toMoney(16.43)); @@ -2496,23 +2496,23 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackPrincipal(interestSchedule, LocalDate.of(2024, 3, 1), toMoney(15.0)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 82.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.48, 31.53, 50.52); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.80); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.99); - checkPeriod(interestSchedule, 5, 0, 17.09, 0.005833333333, 0.1, 16.99, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 82.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.478624999974, 0.48, 31.53, 50.52); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294699999983, 0.29, 16.72, 33.80); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.197166666655, 0.2, 16.81, 16.99); + checkPeriod(interestSchedule, 5, 0, 17.09, 0.005833333333, 0.0991083333276, 0.1, 16.99, 0.0); // full chargeback emiCalculator.chargebackPrincipal(interestSchedule, LocalDate.of(2024, 3, 1), toMoney(17.01)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 99.06); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.58, 48.44, 50.62); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.3, 16.71, 33.91); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 17.1); - checkPeriod(interestSchedule, 5, 0, 17.20, 0.005833333333, 0.1, 17.1, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 99.06); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.577849999968, 0.58, 48.44, 50.62); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.295283333316, 0.3, 16.71, 33.91); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.197808333322, 0.2, 16.81, 17.1); + checkPeriod(interestSchedule, 5, 0, 17.20, 0.005833333333, 0.0997499999943, 0.1, 17.1, 0.0); } @Test @@ -2542,12 +2542,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period emiCalculator.payPrincipal(interestSchedule, LocalDate.of(2024, 2, 1), LocalDate.of(2024, 2, 1), toMoney(16.43)); @@ -2560,13 +2560,13 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackPrincipal(interestSchedule, LocalDate.of(2024, 3, 15), toMoney(17.01)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.002634408602, 0.18, 0.45, 33.57, 50.49); - checkPeriod(interestSchedule, 2, 1, 17.01, 0.003198924731, 0.27, 0.45, 33.57, 50.49); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.77); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.96); - checkPeriod(interestSchedule, 5, 0, 17.06, 0.005833333333, 0.1, 16.96, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.002634408602, 0.176637096765, 0.45, 33.57, 50.49); + checkPeriod(interestSchedule, 2, 1, 17.01, 0.003198924731, 0.268901612888, 0.45, 33.57, 50.49); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294524999983, 0.29, 16.72, 33.77); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196991666655, 0.2, 16.81, 16.96); + checkPeriod(interestSchedule, 5, 0, 17.06, 0.005833333333, 0.0989333333277, 0.1, 16.96, 0.0); } } @@ -2597,12 +2597,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period LocalDate txnDate = LocalDate.of(2024, 2, 1); @@ -2620,12 +2620,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackInterest(interestSchedule, txnDate, toMoney(0.49)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 83.57); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.98, 33.04, 50.53); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.81); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 17.0); - checkPeriod(interestSchedule, 5, 0, 17.10, 0.005833333333, 0.1, 17.0, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 83.57); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.977491666638, 0.98, 33.04, 50.53); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294758333316, 0.29, 16.72, 33.81); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.197224999989, 0.2, 16.81, 17.0); + checkPeriod(interestSchedule, 5, 0, 17.10, 0.005833333333, 0.0991666666611, 0.1, 17.0, 0.0); } @Test @@ -2655,12 +2655,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period LocalDate txnDate = LocalDate.of(2024, 2, 1); @@ -2677,7 +2677,7 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackPrincipal(interestSchedule, txnDate, toMoney(16.52)); emiCalculator.chargebackInterest(interestSchedule, txnDate, toMoney(0.49)); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 0.59, 33.42, 0.0); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.59, 33.42, 0.0); } @Test @@ -2707,12 +2707,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period LocalDate txnDate = LocalDate.of(2024, 2, 1); @@ -2730,12 +2730,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackInterest(interestSchedule, txnDate, toMoney(0.49)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 81.56); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.97, 31.04, 50.52); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.80); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.99); - checkPeriod(interestSchedule, 5, 0, 17.09, 0.005833333333, 0.1, 16.99, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 81.56); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.96576666664, 0.97, 31.04, 50.52); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294699999983, 0.29, 16.72, 33.80); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.197166666655, 0.2, 16.81, 16.99); + checkPeriod(interestSchedule, 5, 0, 17.09, 0.005833333333, 0.0991083333276, 0.1, 16.99, 0.0); } @Test @@ -2765,12 +2765,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period LocalDate txnDate = LocalDate.of(2024, 2, 1); @@ -2787,12 +2787,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackPrincipal(interestSchedule, txnDate, toMoney(15.0)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 82.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.48, 31.53, 50.52); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.80); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.99); - checkPeriod(interestSchedule, 5, 0, 17.09, 0.005833333333, 0.1, 16.99, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 82.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.478624999974, 0.48, 31.53, 50.52); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294699999983, 0.29, 16.72, 33.80); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.197166666655, 0.2, 16.81, 16.99); + checkPeriod(interestSchedule, 5, 0, 17.09, 0.005833333333, 0.0991083333276, 0.1, 16.99, 0.0); } @Test @@ -2822,12 +2822,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period LocalDate txnDate = LocalDate.of(2024, 2, 1); @@ -2847,12 +2847,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackInterest(interestSchedule, txnDate, toMoney(0.49)); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 98.57); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 1.06, 47.96, 50.61); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.30, 16.71, 33.90); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.20, 16.81, 17.09); - checkPeriod(interestSchedule, 5, 0, 17.19, 0.005833333333, 0.10, 17.09, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 98.57); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 1.06499166663, 1.06, 47.96, 50.61); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.295224999983, 0.30, 16.71, 33.90); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.197749999989, 0.20, 16.81, 17.09); + checkPeriod(interestSchedule, 5, 0, 17.19, 0.005833333333, 0.0996916666611, 0.10, 17.09, 0.0); } @Test @@ -2882,12 +2882,12 @@ class ProgressiveEMICalculatorTest { emiCalculator.addDisbursement(interestSchedule, LocalDate.of(2024, 1, 1), disbursedAmount); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.39, 16.62, 50.43); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.71); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.2, 16.81, 16.90); - checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.1, 16.9, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.005833333333, 0.391124999979, 0.39, 16.62, 50.43); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.294174999983, 0.29, 16.72, 33.71); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196641666655, 0.2, 16.81, 16.90); + checkPeriod(interestSchedule, 5, 0, 17.00, 0.005833333333, 0.0985833333276, 0.1, 16.9, 0.0); // repay 1st period LocalDate txnDate = LocalDate.of(2024, 2, 1); @@ -2905,18 +2905,18 @@ class ProgressiveEMICalculatorTest { emiCalculator.chargebackInterest(interestSchedule, txnDate, toMoney(0.49)); PeriodDueDetails dueAmounts = emiCalculator.getDueAmounts(interestSchedule, LocalDate.of(2024, 4, 1), txnDate); - Assertions.assertEquals(33.08, toDouble(interestSchedule.repaymentPeriods().get(2).getDuePrincipal())); + Assertions.assertEquals(33.09, toDouble(interestSchedule.repaymentPeriods().get(2).getDuePrincipal())); Assertions.assertEquals(33.35, toDouble(dueAmounts.getDuePrincipal())); Assertions.assertEquals(0.67, toDouble(dueAmounts.getDueInterest())); checkPeriod(interestSchedule, 0, 0, 17.01, 0.0, 0.0, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.58, 16.43, 83.57); - checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.49, 16.52, 67.05); - checkPeriod(interestSchedule, 2, 0, 17.01, 0.002634408602, 0.18, 0.94, 33.08, 50.49); - checkPeriod(interestSchedule, 2, 1, 17.01, 0.003198924731, 0.76, 0.94, 33.08, 50.49); - checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29, 16.72, 33.77); - checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.20, 16.81, 16.96); - checkPeriod(interestSchedule, 5, 0, 17.06, 0.005833333333, 0.10, 16.96, 0.0); + checkPeriod(interestSchedule, 0, 1, 17.01, 0.005833333333, 0.5833333333, 0.58, 16.43, 83.57); + checkPeriod(interestSchedule, 1, 0, 17.01, 0.005833333333, 0.487491666639, 0.49, 16.52, 67.05); + checkPeriod(interestSchedule, 2, 0, 17.01, 0.002634408602, 0.176637096765, 0.93, 33.09, 50.48); + checkPeriod(interestSchedule, 2, 1, 17.01, 0.003198924731, 0.75733413977, 0.93, 33.09, 50.48); + checkPeriod(interestSchedule, 3, 0, 17.01, 0.005833333333, 0.29446666665, 0.29, 16.72, 33.76); + checkPeriod(interestSchedule, 4, 0, 17.01, 0.005833333333, 0.196933333322, 0.20, 16.81, 16.95); + checkPeriod(interestSchedule, 5, 0, 17.05, 0.005833333333, 0.0988749999945, 0.10, 16.95, 0.0); } private static LoanScheduleModelRepaymentPeriod repayment(int periodNumber, LocalDate fromDate, LocalDate dueDate) { diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java index 33f5a4e7b..8723263d3 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java @@ -5013,10 +5013,10 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan .transactionAmount(BigDecimal.valueOf(200.0)).locale("en")); loanDetails = loanTransactionHelper.getLoanDetails(loanResponse.getLoanId()); - validateLoanSummaryBalances(loanDetails, 307.99, 0.0, 300.0, 0.0, null); + validateLoanSummaryBalances(loanDetails, 307.98, 0.0, 300.0, 0.0, null); - validateRepaymentPeriod(loanDetails, 1, LocalDate.of(2024, 2, 1), 49.31, 0.0, 49.31, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.02, 0.0, - 2.02, 0.0, 0.0); + validateRepaymentPeriod(loanDetails, 1, LocalDate.of(2024, 2, 1), 49.32, 0.0, 49.32, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.01, 0.0, + 2.01, 0.0, 0.0); validateRepaymentPeriod(loanDetails, 2, LocalDate.of(2024, 3, 1), 49.35, 0.0, 49.35, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.98, 0.0, 1.98, 0.0, 0.0); validateRepaymentPeriod(loanDetails, 3, LocalDate.of(2024, 4, 1), 49.74, 0.0, 49.74, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.59, 0.0, @@ -5025,7 +5025,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan 1.20, 0.0, 0.0); validateRepaymentPeriod(loanDetails, 5, LocalDate.of(2024, 6, 1), 50.53, 0.0, 50.53, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.80, 0.0, 0.80, 0.0, 0.0); - validateRepaymentPeriod(loanDetails, 6, LocalDate.of(2024, 7, 1), 50.94, 0.0, 50.94, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40, 0.0, + validateRepaymentPeriod(loanDetails, 6, LocalDate.of(2024, 7, 1), 50.93, 0.0, 50.93, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.40, 0.0, 0.40, 0.0, 0.0); assertTrue(loanDetails.getStatus().getActive()); assertEquals(loanDetails.getNumberOfRepayments(), 6); @@ -5724,8 +5724,8 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan // On the due date of 2nd period prepayAmounts = loanTransactionHelper.getPrepayAmount(requestSpec, responseSpec, createdLoanId.intValue(), LocalDate.of(2024, 3, 1)); - assertEquals(79.05f, prepayAmounts.get("amount")); - assertEquals(0.48f, prepayAmounts.get("interestPortion")); + assertEquals(79.04f, prepayAmounts.get("amount")); + assertEquals(0.47f, prepayAmounts.get("interestPortion")); assertEquals(78.57f, prepayAmounts.get("principalPortion")); loanTransactionHelper.makeLoanRepayment(createdLoanId.get(), new PostLoansLoanIdTransactionsRequest() diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BaseLoanIntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BaseLoanIntegrationTest.java index 2cd667a9a..8b5448f10 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/BaseLoanIntegrationTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/BaseLoanIntegrationTest.java @@ -1119,8 +1119,8 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest { return new Journal(amount, account, "CREDIT"); } - protected Transaction transaction(double principalAmount, String type, String date) { - return new Transaction(principalAmount, type, date, null); + protected Transaction transaction(double amount, String type, String date) { + return new Transaction(amount, type, date, null); } protected Transaction reversedTransaction(double principalAmount, String type, String date) { diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRecalculationCOBTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRecalculationCOBTest.java index c87f5bac6..c78c51027 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRecalculationCOBTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRecalculationCOBTest.java @@ -388,8 +388,8 @@ public class LoanInterestRecalculationCOBTest extends BaseLoanIntegrationTest { validateFullyPaidRepaymentPeriod(loanDetails, 1, "01 February 2023", 1975.17, 0.0, 0.0, 66.67); validateRepaymentPeriod(loanDetails, 2, LocalDate.of(2023, 3, 1), 1991.63, 1041.84, 949.79, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 50.21, 0, 50.21, 0, 1041.84); - validateFullyUnpaidRepaymentPeriod(loanDetails, 3, "01 April 2023", 2000.85, 0.0, 0.0, 40.99); - validateFullyUnpaidRepaymentPeriod(loanDetails, 4, "01 May 2023", 2032.35, 0.0, 0.0, 16.94); + validateFullyUnpaidRepaymentPeriod(loanDetails, 3, "01 April 2023", 2000.86, 0.0, 0.0, 40.98); + validateFullyUnpaidRepaymentPeriod(loanDetails, 4, "01 May 2023", 2032.34, 0.0, 0.0, 16.94); loanTransactionHelper.makeLoanRepayment("20 March 2023", 1000f, loanId.intValue()); @@ -398,8 +398,8 @@ public class LoanInterestRecalculationCOBTest extends BaseLoanIntegrationTest { validateFullyPaidRepaymentPeriod(loanDetails, 1, "01 February 2023", 1975.17, 0.0, 0.0, 66.67); validateFullyPaidRepaymentPeriod(loanDetails, 2, "01 March 2023", 1991.63, 0.0, 0.0, 50.21, 2041.84); - validateFullyUnpaidRepaymentPeriod(loanDetails, 3, "01 April 2023", 2000.85, 0.0, 0.0, 40.99); - validateFullyUnpaidRepaymentPeriod(loanDetails, 4, "01 May 2023", 2032.35, 0.0, 0.0, 16.94); + validateFullyUnpaidRepaymentPeriod(loanDetails, 3, "01 April 2023", 2000.86, 0.0, 0.0, 40.98); + validateFullyUnpaidRepaymentPeriod(loanDetails, 4, "01 May 2023", 2032.34, 0.0, 0.0, 16.94); }); payoffOnDateAndVerifyStatus("1 April 2023", loanIdRef.get()); } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRefundTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRefundTest.java index 7edca2771..4f1f91e28 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRefundTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanInterestRefundTest.java @@ -636,8 +636,8 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { verifyTransactions(loanId, transaction(750.0, "Disbursement", "04 January 2021"), // transaction(250.0, "Disbursement", "01 January 2021"), // transaction(1000.0, "Payout Refund", "22 January 2021"), // - transaction(5.14, "Accrual", "22 January 2021"), // - transaction(5.14, "Interest Refund", "22 January 2021") // + transaction(5.13, "Accrual", "22 January 2021"), // + transaction(5.13, "Interest Refund", "22 January 2021") // ); }); } @@ -889,7 +889,7 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { transaction(171.29, "Repayment", "01 May 2021"), // transaction(171.29, "Repayment", "01 June 2021"), // transaction(171.32, "Repayment", "01 July 2021"), // - transaction(27.76, "Accrual", "01 July 2021") // + transaction(27.77, "Accrual", "01 July 2021") // ); // }); runAt("11 July 2021", () -> { @@ -909,8 +909,8 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { transaction(171.29, "Repayment", "01 June 2021"), // transaction(171.32, "Repayment", "01 July 2021"), // transaction(500.0, "Payout Refund", "11 July 2021"), // - transaction(20.40, "Interest Refund", "11 July 2021"), // - transaction(27.76, "Accrual", "01 July 2021") // + transaction(20.41, "Interest Refund", "11 July 2021"), // + transaction(27.77, "Accrual", "01 July 2021") // ); // }); } @@ -1048,7 +1048,17 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { }); runAt("1 February 2021", () -> { Long loanId = loanIdRef.get(); - loanTransactionHelper.makeLoanRepayment("Repayment", "1 February 2021", 100.85F, loanId.intValue()); + loanTransactionHelper.makeLoanRepayment("Repayment", "1 February 2021", 100.84F, loanId.intValue()); + + verifyTransactions(loanId, transaction(250.0, "Disbursement", "01 January 2021"), // + transaction(750.0, "Disbursement", "01 January 2021"), // + transaction(500.0, "Merchant Issued Refund", "22 January 2021"), // + transaction(2.88, "Interest Refund", "22 January 2021"), // + transaction(400.0, "Payout Refund", "26 January 2021"), // + transaction(2.74, "Interest Refund", "26 January 2021"), // + transaction(100.84, "Repayment", "01 February 2021"), // + transaction(6.46, "Accrual", "01 February 2021")); // + GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails(loanId); Assertions.assertNotNull(loanDetails); Assertions.assertNotNull(loanDetails.getStatus()); @@ -1110,9 +1120,22 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { Long loanId = loanIdRef.get(); loanTransactionHelper.makeLoanRepayment("Repayment", "1 February 2021", 171.41F, loanId.intValue()); loanTransactionHelper.makeLoanRepayment("Repayment", "1 March 2021", 171.41F, loanId.intValue()); - loanTransactionHelper.makeLoanRepayment("Repayment", "1 April 2021", 11.25F, loanId.intValue()); - GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails(loanId); + loanTransactionHelper.makeLoanRepayment("Repayment", "1 April 2021", 11.24F, loanId.intValue()); + verifyTransactions(loanId, transaction(200.0, "Disbursement", "01 January 2021"), // + transaction(300.0, "Disbursement", "01 January 2021"), // + transaction(500.0, "Disbursement", "05 January 2021"), // + transaction(250.0, "Merchant Issued Refund", "22 January 2021"), // + transaction(1.44, "Interest Refund", "22 January 2021"), // + transaction(400.0, "Payout Refund", "26 January 2021"), // + transaction(2.58, "Interest Refund", "26 January 2021"), // + transaction(171.41, "Repayment", "01 February 2021"), // + transaction(171.41, "Repayment", "01 March 2021"), // + transaction(11.24, "Repayment", "01 April 2021"), // + transaction(8.08, "Accrual", "01 April 2021") // + ); + + GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails(loanId); Assertions.assertNotNull(loanDetails); Assertions.assertNotNull(loanDetails.getStatus()); Assertions.assertEquals(600, loanDetails.getStatus().getId()); @@ -1159,7 +1182,7 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { transaction(500.0, "Disbursement", "05 January 2021"), // transaction(171.41, "Repayment", "01 February 2021"), // transaction(250.0, "Payout Refund", "13 February 2021"), // - transaction(2.96, "Interest Refund", "13 February 2021") // + transaction(2.95, "Interest Refund", "13 February 2021") // ); }); runAt("24 February 2021", () -> { @@ -1171,7 +1194,7 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { transaction(500.0, "Disbursement", "05 January 2021"), // transaction(171.41, "Repayment", "01 February 2021"), // transaction(250.0, "Payout Refund", "13 February 2021"), // - transaction(2.96, "Interest Refund", "13 February 2021"), // + transaction(2.95, "Interest Refund", "13 February 2021"), // transaction(400.0, "Merchant Issued Refund", "24 February 2021"), // transaction(5.77, "Interest Refund", "24 February 2021") // ); @@ -1228,7 +1251,7 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { transaction(500.0, "Disbursement", "05 January 2021"), // transaction(171.41, "Repayment", "01 February 2021"), // transaction(250.0, "Payout Refund", "13 February 2021"), // - transaction(2.96, "Interest Refund", "13 February 2021") // + transaction(2.95, "Interest Refund", "13 February 2021") // ); }); @@ -1248,9 +1271,9 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest { transaction(171.41, "Repayment", "01 March 2021"), // transaction(171.41, "Repayment", "01 April 2021"), // transaction(250.0, "Payout Refund", "13 February 2021"), // - transaction(2.96, "Interest Refund", "13 February 2021"), // + transaction(2.95, "Interest Refund", "13 February 2021"), // transaction(400.0, "Merchant Issued Refund", "06 April 2021"), // - transaction(10.11, "Interest Refund", "06 April 2021"), // + transaction(10.12, "Interest Refund", "06 April 2021"), // transaction(17.14, "Accrual", "06 April 2021") // ); GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails(loanId); diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java index 5582c8974..3727b75fc 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanTransactionChargebackTest.java @@ -1019,10 +1019,10 @@ public class LoanTransactionChargebackTest extends BaseLoanIntegrationTest { installment(100.0, null, "01 January 2024"), // fullyRepaidInstallment(16.43, 0.58, "01 February 2024"), // fullyRepaidInstallment(16.52, 0.49, "01 March 2024"), // - unpaidInstallment(33.08, 0.94, "01 April 2024"), // + unpaidInstallment(33.09, 0.93, "01 April 2024"), // unpaidInstallment(16.72, 0.29, "01 May 2024"), // unpaidInstallment(16.81, 0.20, "01 June 2024"), // - unpaidInstallment(16.96, 0.10, "01 July 2024") // + unpaidInstallment(16.95, 0.10, "01 July 2024") // ); // verifyTransactions(loanId, new TransactionExt(100.0, "Disbursement", "01 January 2024", 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, false), @@ -1249,10 +1249,10 @@ public class LoanTransactionChargebackTest extends BaseLoanIntegrationTest { installment(100.0, null, "01 January 2024"), // fullyRepaidInstallment(16.43, 0.58, "01 February 2024"), // fullyRepaidInstallment(16.52, 0.49, "01 March 2024"), // - unpaidInstallment(33.08, 0.94, "01 April 2024"), // + unpaidInstallment(33.09, 0.93, "01 April 2024"), // unpaidInstallment(16.72, 0.29, "01 May 2024"), // unpaidInstallment(16.81, 0.20, "01 June 2024"), // - unpaidInstallment(16.96, 0.10, "01 July 2024") // + unpaidInstallment(16.95, 0.10, "01 July 2024") // ); // verifyTransactions(loanId, new TransactionExt(100.0, "Disbursement", "01 January 2024", 100.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, false),