FINERACT-2338: Allow backdated interest change on progressive loans
- charge-off handling - write-off handling - closed loans - external owner changes
This commit is contained in:
@@ -1250,7 +1250,7 @@ Feature:Feature: Buy Down Fees
|
|||||||
When Loan Pay-off is made on "25 January 2024"
|
When Loan Pay-off is made on "25 January 2024"
|
||||||
Then Loan's all installments have obligations met
|
Then Loan's all installments have obligations met
|
||||||
|
|
||||||
@TestRailId:C3887
|
@TestRailId:C3886
|
||||||
Scenario: Verify loan with with a few Buy Down fees with adjustment and charge-off transaction - amortization in case of loan charge-off event - UC3.8
|
Scenario: Verify loan with with a few Buy Down fees with adjustment and charge-off transaction - amortization in case of loan charge-off event - UC3.8
|
||||||
When Admin sets the business date to "01 January 2024"
|
When Admin sets the business date to "01 January 2024"
|
||||||
And Admin creates a client with random data
|
And Admin creates a client with random data
|
||||||
|
|||||||
@@ -273,3 +273,920 @@ Feature: Loan interest rate change on repayment schedule
|
|||||||
When Loan Pay-off is made on "01 April 2024"
|
When Loan Pay-off is made on "01 April 2024"
|
||||||
Then Loan's all installments have obligations met
|
Then Loan's all installments have obligations met
|
||||||
|
|
||||||
|
@TestRailId:C3944
|
||||||
|
Scenario: Verify Interest rate change - backdated, charged-off, regular - UC4.1
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
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
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR transaction amount
|
||||||
|
And Admin does charge-off the loan on "01 April 2024"
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 4 |
|
||||||
|
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 | 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 | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 16.88 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.31 | 16.66 | 0.22 | 0.0 | 0.0 | 16.88 | 0.13 | 0.13 | 0.0 | 16.75 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.6 | 16.71 | 0.17 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.83 | 16.77 | 0.11 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 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 |
|
||||||
|
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.42 | 0.0 | 0.0 | 101.42 | 34.02 | 0.13 | 0.0 | 67.4 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.73 | 0.28 | 0.0 | 0.0 | 66.84 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 67.4 | 66.84 | 0.56 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
When Loan Pay-off is made on "01 April 2024"
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
|
||||||
|
@TestRailId:C3945
|
||||||
|
Scenario: Verify Interest rate change - backdated, charged-off, zero interest - UC4.2
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
When Admin set "LP2_ADV_PYMNT_ZERO_INTEREST_CHARGE_OFF" loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation rule
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_ZERO_INTEREST_CHARGE_OFF | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR transaction amount
|
||||||
|
And Admin does charge-off the loan on "01 April 2024"
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 4 |
|
||||||
|
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 | 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 | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 16.88 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.31 | 16.66 | 0.22 | 0.0 | 0.0 | 16.88 | 0.13 | 0.13 | 0.0 | 16.75 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.43 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.55 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 6 | 30 | 01 July 2024 | | 0.0 | 16.55 | 0.0 | 0.0 | 0.0 | 16.55 | 0.0 | 0.0 | 0.0 | 16.55 |
|
||||||
|
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.08 | 0.0 | 0.0 | 101.08 | 34.02 | 0.13 | 0.0 | 67.06 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.73 | 0.28 | 0.0 | 0.0 | 66.84 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 67.06 | 66.84 | 0.22 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
When Loan Pay-off is made on "01 April 2024"
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
|
||||||
|
@TestRailId:C3946
|
||||||
|
Scenario: Verify Interest rate change - backdated, charged-off, accelerate maturity - UC4.3
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
When Admin set "LP2_ADV_PYMNT_INTEREST_DAILY_INTEREST_RECALCULATION_ACCELERATE_MATURITY_CHARGE_OFF_BEHAVIOUR" loan product "DEFAULT" transaction type to "NEXT_INSTALLMENT" future installment allocation rule
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_INTEREST_RECALCULATION_ACCELERATE_MATURITY_CHARGE_OFF_BEHAVIOUR | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR transaction amount
|
||||||
|
And Admin does charge-off the loan on "01 April 2024"
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 4 |
|
||||||
|
Then Loan Repayment schedule has 3 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 | 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 | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 16.88 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 0.0 | 66.97 | 0.22 | 0.0 | 0.0 | 67.19 | 0.13 | 0.13 | 0.0 | 67.06 |
|
||||||
|
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.08 | 0.0 | 0.0 | 101.08 | 34.02 | 0.13 | 0.0 | 67.06 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.73 | 0.28 | 0.0 | 0.0 | 66.84 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 67.06 | 66.84 | 0.22 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
When Loan Pay-off is made on "01 April 2024"
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
|
||||||
|
@TestRailId:С3941
|
||||||
|
Scenario: Verify Interest rate change - backdated, CBR - UC5
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
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
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 85.0 EUR transaction amount
|
||||||
|
And Admin makes Credit Balance Refund transaction on "01 March 2024" with 0.94 EUR transaction amount
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 4 |
|
||||||
|
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 | 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 | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 16.88 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | 01 March 2024 | 50.09 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 16.88 | 16.88 | 0.0 | 0.0 |
|
||||||
|
| 4 | 30 | 01 May 2024 | 01 March 2024 | 33.21 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 16.88 | 16.88 | 0.0 | 0.0 |
|
||||||
|
| 5 | 31 | 01 June 2024 | 01 March 2024 | 16.33 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 16.88 | 16.88 | 0.0 | 0.0 |
|
||||||
|
| 6 | 30 | 01 July 2024 | 01 March 2024 | 0.0 | 16.33 | 0.0 | 0.0 | 0.0 | 16.33 | 16.33 | 16.33 | 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 |
|
||||||
|
| 100.0 | 0.86 | 0.0 | 0.0 | 100.86 | 100.86 | 66.97 | 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 | 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 |
|
||||||
|
| 01 March 2024 | Repayment | 85.0 | 83.57 | 0.28 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
| 01 March 2024 | Credit Balance Refund | 0.94 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.07 | 0.0 | 1.07 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.21 | 0.0 | 0.21 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan has 0.21 overpaid amount
|
||||||
|
Then Loan status will be "OVERPAID"
|
||||||
|
|
||||||
|
And Admin makes Credit Balance Refund transaction on "01 April 2024" with 0.21 EUR transaction amount
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan status will be "CLOSED_OBLIGATIONS_MET"
|
||||||
|
|
||||||
|
@TestRailId:С3942
|
||||||
|
Scenario: Verify Interest rate change - backdated, closed loan - UC7
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
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
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 84.06 EUR transaction amount
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan status will be "CLOSED_OBLIGATIONS_MET"
|
||||||
|
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 4 |
|
||||||
|
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 | 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 | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 16.88 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | 01 March 2024 | 50.09 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 16.88 | 16.88 | 0.0 | 0.0 |
|
||||||
|
| 4 | 30 | 01 May 2024 | 01 March 2024 | 33.21 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 16.88 | 16.88 | 0.0 | 0.0 |
|
||||||
|
| 5 | 31 | 01 June 2024 | 01 March 2024 | 16.33 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 16.88 | 16.88 | 0.0 | 0.0 |
|
||||||
|
| 6 | 30 | 01 July 2024 | 01 March 2024 | 0.0 | 16.33 | 0.0 | 0.0 | 0.0 | 16.33 | 16.33 | 16.33 | 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 |
|
||||||
|
| 100.0 | 0.86 | 0.0 | 0.0 | 100.86 | 100.86 | 66.97 | 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 | 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 |
|
||||||
|
| 01 March 2024 | Repayment | 84.06 | 83.57 | 0.28 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.07 | 0.0 | 1.07 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.21 | 0.0 | 0.21 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan has 0.21 overpaid amount
|
||||||
|
Then Loan status will be "OVERPAID"
|
||||||
|
|
||||||
|
And Admin makes Credit Balance Refund transaction on "01 April 2024" with 0.21 EUR transaction amount
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan status will be "CLOSED_OBLIGATIONS_MET"
|
||||||
|
|
||||||
|
@TestRailId:С3943
|
||||||
|
Scenario: Verify Interest rate change - backdated, overpaid loan - UC7.2
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
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
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 84.2 EUR transaction amount
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan has 0.14 overpaid amount
|
||||||
|
Then Loan status will be "OVERPAID"
|
||||||
|
Then Loan status will be "OVERPAID"
|
||||||
|
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 9 |
|
||||||
|
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 | 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.11 | 16.46 | 0.63 | 0.0 | 0.0 | 17.09 | 17.09 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | 01 March 2024 | 50.02 | 17.09 | 0.0 | 0.0 | 0.0 | 17.09 | 17.09 | 17.09 | 0.0 | 0.0 |
|
||||||
|
| 4 | 30 | 01 May 2024 | 01 March 2024 | 32.93 | 17.09 | 0.0 | 0.0 | 0.0 | 17.09 | 17.09 | 17.09 | 0.0 | 0.0 |
|
||||||
|
| 5 | 31 | 01 June 2024 | 01 March 2024 | 15.84 | 17.09 | 0.0 | 0.0 | 0.0 | 17.09 | 17.09 | 17.09 | 0.0 | 0.0 |
|
||||||
|
| 6 | 30 | 01 July 2024 | 01 March 2024 | 0.0 | 15.84 | 0.0 | 0.0 | 0.0 | 15.84 | 15.84 | 15.84 | 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 |
|
||||||
|
| 100.0 | 1.21 | 0.0 | 0.0 | 101.21 | 101.21 | 67.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 | 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 |
|
||||||
|
| 01 March 2024 | Repayment | 84.2 | 83.57 | 0.63 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.07 | 0.0 | 1.07 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 0.14 | 0.0 | 0.14 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
Then Loan has 0 outstanding amount
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan status will be "CLOSED_OBLIGATIONS_MET"
|
||||||
|
|
||||||
|
@TestRailId:С3952
|
||||||
|
Scenario: Verify Interest rate change - backdated, closed as written-off loan - UC7.3
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
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
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
# --- make write-off --- #
|
||||||
|
And Admin does write-off the loan on "01 March 2024"
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Close (as written-off) | 85.04 | 83.57 | 1.47 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
Then Loan status will be "CLOSED_WRITTEN_OFF"
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 4 |
|
||||||
|
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 | 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 | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | 01 March 2024 | 50.31 | 16.66 | 0.22 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 4 | 30 | 01 May 2024 | 01 March 2024 | 33.6 | 16.71 | 0.17 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 5 | 31 | 01 June 2024 | 01 March 2024 | 16.83 | 16.77 | 0.11 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 6 | 30 | 01 July 2024 | 01 March 2024 | 0.0 | 16.83 | 0.06 | 0.0 | 0.0 | 16.89 | 0.0 | 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 |
|
||||||
|
| 100.0 | 1.42 | 0.0 | 0.0 | 101.42 | 17.01 | 0.0 | 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 | 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 |
|
||||||
|
| 01 March 2024 | Close (as written-off) | 84.41 | 83.57 | 0.84 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
Then Loan has 0 outstanding amount
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
Then Loan status will be "CLOSED_WRITTEN_OFF"
|
||||||
|
|
||||||
|
@TestRailId:С3947
|
||||||
|
Scenario: Verify Interest rate change - backdated, external asset owner - UC6
|
||||||
|
When Admin sets the business date to "01 January 2024"
|
||||||
|
When Admin creates a client with random data
|
||||||
|
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
|
||||||
|
When Admin creates a fully customized loan with the following data:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" 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 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | |
|
||||||
|
| 1 | 31 | 01 February 2024 | | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 March 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 EUR transaction amount
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 EUR transaction amount
|
||||||
|
When Admin makes asset externalization request by Loan ID with unique ownerExternalId, user-generated transferExternalId and the following data:
|
||||||
|
| Transaction type | settlementDate | purchasePriceRatio |
|
||||||
|
| sale | 2024-04-01 | 1 |
|
||||||
|
Then Asset externalization response has the correct Loan ID, transferExternalId
|
||||||
|
Then Fetching Asset externalization details by loan id gives numberOfElements: 1 with correct ownerExternalId and the following data:
|
||||||
|
| settlementDate | purchasePriceRatio | status | effectiveFrom | effectiveTo | Transaction type |
|
||||||
|
| 2024-04-01 | 1 | PENDING | 2024-03-01 | 9999-12-31 | SALE |
|
||||||
|
|
||||||
|
When Admin sets the business date to "02 April 2024"
|
||||||
|
When Admin runs inline COB job for Loan
|
||||||
|
Then Fetching Asset externalization details by loan id gives numberOfElements: 2 with correct ownerExternalId and the following data:
|
||||||
|
| settlementDate | purchasePriceRatio | status | effectiveFrom | effectiveTo | Transaction type |
|
||||||
|
| 2024-04-01 | 1 | PENDING | 2024-03-01 | 2024-04-01 | SALE |
|
||||||
|
| 2024-04-01 | 1 | ACTIVE | 2024-04-02 | 9999-12-31 | SALE |
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 02 February 2024 | | | | | 4 |
|
||||||
|
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 | 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 | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 16.88 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.31 | 16.66 | 0.22 | 0.0 | 0.0 | 16.88 | 0.13 | 0.13 | 0.0 | 16.75 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.6 | 16.71 | 0.17 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.83 | 16.77 | 0.11 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 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 |
|
||||||
|
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.42 | 0.0 | 0.0 | 101.42 | 34.02 | 0.13 | 0.0 | 67.4 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.73 | 0.28 | 0.0 | 0.0 | 66.84 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
When Customer makes "AUTOPAY" repayment on "01 April 2024" with 67.06 EUR transaction amount and check external owner
|
||||||
|
Then Loan's all installments have obligations met
|
||||||
|
|
||||||
|
@TestRailId:C3948
|
||||||
|
Scenario: Verify backdated interest rate INCREASE on charged-off loan - backdated, charged-off, regular - UC4.4
|
||||||
|
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:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" 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 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | |
|
||||||
|
| 1 | 31 | 01 February 2024 | | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 February 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 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 | | 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 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 17.01 | 0.0 | 0.0 | 85.04 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 March 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 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 | | 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.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 34.02 | 0.0 | 0.0 | 68.03 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.52 | 0.49 | 0.0 | 0.0 | 67.05 | false | false |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Admin does charge-off the loan on "01 April 2024"
|
||||||
|
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 | 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.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 34.02 | 0.0 | 0.0 | 68.03 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.52 | 0.49 | 0.0 | 0.0 | 67.05 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 68.03 | 67.05 | 0.98 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 15 January 2024 | 01 April 2024 | | | | | 12 |
|
||||||
|
# Verify increased interest 7% to 12% causes higher charge-off amount after reversal/replay
|
||||||
|
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 | 01 March 2024 | 83.6 | 16.4 | 0.83 | 0.0 | 0.0 | 17.23 | 17.23 | 0.0 | 0.22 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.21 | 16.39 | 0.84 | 0.0 | 0.0 | 17.23 | 16.79 | 0.0 | 0.0 | 0.44 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.65 | 16.56 | 0.67 | 0.0 | 0.0 | 17.23 | 0.0 | 0.0 | 0.0 | 17.23 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.93 | 16.72 | 0.51 | 0.0 | 0.0 | 17.23 | 0.0 | 0.0 | 0.0 | 17.23 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 17.04 | 16.89 | 0.34 | 0.0 | 0.0 | 17.23 | 0.0 | 0.0 | 0.0 | 17.23 |
|
||||||
|
| 6 | 30 | 01 July 2024 | | 0.0 | 17.04 | 0.17 | 0.0 | 0.0 | 17.21 | 0.0 | 0.0 | 0.0 | 17.21 |
|
||||||
|
Then Loan Repayment schedule has the following data in Total row:
|
||||||
|
| Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding |
|
||||||
|
| 100.0 | 3.36 | 0.0 | 0.0 | 103.36 | 34.02 | 0.0 | 0.22 | 69.34 |
|
||||||
|
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.4 | 0.61 | 0.0 | 0.0 | 83.6 | false | true |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.39 | 0.62 | 0.0 | 0.0 | 67.21 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 0.88 | 0.0 | 0.88 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 69.34 | 67.21 | 2.13 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
|
||||||
|
@TestRailId:C3949
|
||||||
|
Scenario: Verify backdated interest modification with PARTIAL payment before charge-off - backdated, charged-off, zero interest - UC4.5
|
||||||
|
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:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_ZERO_INTEREST_CHARGE_OFF | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 February 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 10.00 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 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | |
|
||||||
|
| 1 | 31 | 01 February 2024 | | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 10.0 | 0.0 | 0.0 | 7.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 10.0 | 0.0 | 0.0 | 92.05 |
|
||||||
|
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 | 10.0 | 10.0 | 0.0 | 0.0 | 0.0 | 90.0 | false | false |
|
||||||
|
When Admin sets the business date to "01 March 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 10.00 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 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | |
|
||||||
|
| 1 | 31 | 01 February 2024 | 01 March 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 7.01 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 2.99 | 0.0 | 0.0 | 14.02 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 20.0 | 0.0 | 7.01 | 82.05 |
|
||||||
|
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 | 10.0 | 10.0 | 0.0 | 0.0 | 0.0 | 90.0 | false | false |
|
||||||
|
| 01 March 2024 | Repayment | 10.0 | 9.42 | 0.58 | 0.0 | 0.0 | 80.58 | false | false |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Admin does charge-off the loan on "01 April 2024"
|
||||||
|
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 | 01 March 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 7.01 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 2.99 | 0.0 | 0.0 | 14.02 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.42 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.41 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 6 | 30 | 01 July 2024 | | 0.0 | 16.41 | 0.0 | 0.0 | 0.0 | 16.41 | 0.0 | 0.0 | 0.0 | 16.41 |
|
||||||
|
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 | 20.0 | 0.0 | 7.01 | 81.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 |
|
||||||
|
| 01 February 2024 | Repayment | 10.0 | 10.0 | 0.0 | 0.0 | 0.0 | 90.0 | false | false |
|
||||||
|
| 01 March 2024 | Repayment | 10.0 | 9.42 | 0.58 | 0.0 | 0.0 | 80.58 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 81.46 | 80.58 | 0.88 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 01 April 2024 | | | | | 4 |
|
||||||
|
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 | 01 March 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 7.01 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 66.97 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 2.99 | 0.0 | 0.0 | 13.89 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.31 | 16.66 | 0.22 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.43 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.55 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 6 | 30 | 01 July 2024 | | 0.0 | 16.55 | 0.0 | 0.0 | 0.0 | 16.55 | 0.0 | 0.0 | 0.0 | 16.55 |
|
||||||
|
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.08 | 0.0 | 0.0 | 101.08 | 20.0 | 0.0 | 7.01 | 81.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 | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false |
|
||||||
|
| 01 February 2024 | Repayment | 10.0 | 10.0 | 0.0 | 0.0 | 0.0 | 90.0 | false | false |
|
||||||
|
| 01 March 2024 | Repayment | 10.0 | 9.42 | 0.58 | 0.0 | 0.0 | 80.58 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.38 | 0.0 | 0.38 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 81.08 | 80.58 | 0.5 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
|
||||||
|
@TestRailId:C3950
|
||||||
|
Scenario: Verify multiple backdated interest modifications after charge-off - backdated, charged-off, accelerate maturity - UC4.6
|
||||||
|
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:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_INTEREST_RECALCULATION_ACCELERATE_MATURITY_CHARGE_OFF_BEHAVIOUR | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" EUR transaction amount
|
||||||
|
When Admin runs inline COB job for 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.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 February 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 February 2024" with 17.01 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 | | 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 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 17.01 | 0.0 | 0.0 | 85.04 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "01 March 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "01 March 2024" with 17.01 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 | | 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.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 34.02 | 0.0 | 0.0 | 68.03 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.52 | 0.49 | 0.0 | 0.0 | 67.05 | false | false |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Admin does charge-off the loan on "01 April 2024"
|
||||||
|
Then Loan Repayment schedule has 3 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 | 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 | | 0.0 | 67.05 | 0.39 | 0.0 | 0.0 | 67.44 | 0.0 | 0.0 | 0.0 | 67.44 |
|
||||||
|
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 | 34.02 | 0.0 | 0.0 | 67.44 |
|
||||||
|
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 |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.52 | 0.49 | 0.0 | 0.0 | 67.05 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 67.44 | 67.05 | 0.39 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
# First interest modification 7% -> 5%
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 15 January 2024 | 01 April 2024 | | | | | 5 |
|
||||||
|
Then Loan Repayment schedule has 3 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 | 01 February 2024 | 83.57 | 16.43 | 0.49 | 0.0 | 0.0 | 16.92 | 16.92 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | 01 March 2024 | 67.0 | 16.57 | 0.35 | 0.0 | 0.0 | 16.92 | 16.92 | 0.09 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 0.0 | 67.0 | 0.28 | 0.0 | 0.0 | 67.28 | 0.18 | 0.18 | 0.0 | 67.1 |
|
||||||
|
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.12 | 0.0 | 0.0 | 101.12 | 34.02 | 0.27 | 0.0 | 67.1 |
|
||||||
|
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.52 | 0.49 | 0.0 | 0.0 | 83.48 | false | true |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.66 | 0.35 | 0.0 | 0.0 | 66.82 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.34 | 0.0 | 0.34 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 67.1 | 66.82 | 0.28 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
# Second interest modification 5% -> 3%
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 20 February 2024 | 01 April 2024 | | | | | 3 |
|
||||||
|
Then Loan Repayment schedule has 3 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 | 01 February 2024 | 83.57 | 16.43 | 0.49 | 0.0 | 0.0 | 16.92 | 16.92 | 0.0 | 0.0 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | 01 March 2024 | 67.01 | 16.56 | 0.3 | 0.0 | 0.0 | 16.86 | 16.86 | 0.09 | 0.0 | 0.0 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 0.0 | 67.01 | 0.17 | 0.0 | 0.0 | 67.18 | 0.24 | 0.24 | 0.0 | 66.94 |
|
||||||
|
Then Loan Repayment schedule has the following data in Total row:
|
||||||
|
| Principal due | Interest | Fees | Penalties | Due | Paid | In advance | Late | Outstanding |
|
||||||
|
| 100.0 | 0.96 | 0.0 | 0.0 | 100.96 | 34.02 | 0.33 | 0.0 | 66.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 | 100.0 | 0.0 | 0.0 | 0.0 | 0.0 | 100.0 | false | false |
|
||||||
|
| 01 February 2024 | Repayment | 17.01 | 16.52 | 0.49 | 0.0 | 0.0 | 83.48 | false | true |
|
||||||
|
| 01 March 2024 | Repayment | 17.01 | 16.71 | 0.3 | 0.0 | 0.0 | 66.77 | false | true |
|
||||||
|
| 01 April 2024 | Accrual | 1.46 | 0.0 | 1.46 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.34 | 0.0 | 0.34 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.16 | 0.0 | 0.16 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 66.94 | 66.77 | 0.17 | 0.0 | 0.0 | 0.0 | false | true |
|
||||||
|
|
||||||
|
@TestRailId:C3951
|
||||||
|
Scenario: Verify backdated interest modification with fees and penalties on charged-off loan - backdated, charged-off, regular - UC4.7
|
||||||
|
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:
|
||||||
|
| LoanProduct | submitted on date | with Principal | ANNUAL interest rate % | interest type | interest calculation period | amortization type | loanTermFrequency | loanTermFrequencyType | repaymentEvery | repaymentFrequencyType | numberOfRepayments | graceOnPrincipalPayment | graceOnInterestPayment | interest free period | Payment strategy |
|
||||||
|
| LP2_ADV_PYMNT_INTEREST_DAILY_EMI_360_30_INTEREST_RECALCULATION_DAILY_TILL_PRECLOSE | 01 January 2024 | 100 | 7 | DECLINING_BALANCE | DAILY | EQUAL_INSTALLMENTS | 6 | MONTHS | 1 | MONTHS | 6 | 0 | 0 | 0 | ADVANCED_PAYMENT_ALLOCATION |
|
||||||
|
And Admin successfully approves the loan on "01 January 2024" with "100" amount and expected disbursement date on "01 January 2024"
|
||||||
|
When Admin successfully disburse the loan on "01 January 2024" with "100" 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 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | |
|
||||||
|
| 1 | 31 | 01 February 2024 | | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.05 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.43 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.71 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.9 | 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.9 | 0.1 | 0.0 | 0.0 | 17.0 | 0.0 | 0.0 | 0.0 | 17.0 |
|
||||||
|
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.05 | 0.0 | 0.0 | 102.05 | 0.0 | 0.0 | 0.0 | 102.05 |
|
||||||
|
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 |
|
||||||
|
When Admin sets the business date to "10 February 2024"
|
||||||
|
And Customer makes "AUTOPAY" repayment on "10 February 2024" with 17.01 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 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | |
|
||||||
|
| 1 | 31 | 01 February 2024 | 10 February 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 17.01 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.08 | 16.49 | 0.52 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.46 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.74 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.93 | 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.93 | 0.1 | 0.0 | 0.0 | 17.03 | 0.0 | 0.0 | 0.0 | 17.03 |
|
||||||
|
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.08 | 0.0 | 0.0 | 102.08 | 17.01 | 0.0 | 17.01 | 85.07 |
|
||||||
|
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 |
|
||||||
|
| 10 February 2024 | Repayment | 17.01 | 16.43 | 0.58 | 0.0 | 0.0 | 83.57 | false | false |
|
||||||
|
When Admin adds "LOAN_NSF_FEE" due date charge with "20 February 2024" due date and 5 EUR transaction amount
|
||||||
|
When Admin adds "LOAN_SNOOZE_FEE" due date charge with "20 February 2024" due date and 8 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 | | 100.0 | | | 0.0 | | 0.0 | 0.0 | | | |
|
||||||
|
| 1 | 31 | 01 February 2024 | 10 February 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 17.01 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.08 | 16.49 | 0.52 | 8.0 | 5.0 | 30.01 | 0.0 | 0.0 | 0.0 | 30.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.46 | 16.62 | 0.39 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.74 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.93 | 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.93 | 0.1 | 0.0 | 0.0 | 17.03 | 0.0 | 0.0 | 0.0 | 17.03 |
|
||||||
|
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.08 | 8.0 | 5.0 | 115.08 | 17.01 | 0.0 | 17.01 | 98.07 |
|
||||||
|
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 |
|
||||||
|
| 10 February 2024 | Repayment | 17.01 | 16.43 | 0.58 | 0.0 | 0.0 | 83.57 | false | false |
|
||||||
|
When Admin sets the business date to "01 April 2024"
|
||||||
|
And Admin does charge-off the loan on "01 April 2024"
|
||||||
|
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 | 10 February 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 17.01 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 67.08 | 16.49 | 0.52 | 8.0 | 5.0 | 30.01 | 0.0 | 0.0 | 0.0 | 30.01 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.56 | 16.52 | 0.49 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.84 | 16.72 | 0.29 | 0.0 | 0.0 | 17.01 | 0.0 | 0.0 | 0.0 | 17.01 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 17.03 | 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 | 17.03 | 0.1 | 0.0 | 0.0 | 17.13 | 0.0 | 0.0 | 0.0 | 17.13 |
|
||||||
|
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.18 | 8.0 | 5.0 | 115.18 | 17.01 | 0.0 | 17.01 | 98.17 |
|
||||||
|
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 |
|
||||||
|
| 10 February 2024 | Repayment | 17.01 | 16.43 | 0.58 | 0.0 | 0.0 | 83.57 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 1.59 | 0.0 | 1.59 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 98.17 | 83.57 | 1.6 | 8.0 | 5.0 | 0.0 | false | false |
|
||||||
|
When Admin creates and approves Loan reschedule with the following data:
|
||||||
|
| rescheduleFromDate | submittedOnDate | adjustedDueDate | graceOnPrincipal | graceOnInterest | extraTerms | newInterestRate |
|
||||||
|
| 02 February 2024 | 01 April 2024 | | | | | 4 |
|
||||||
|
# Verify fee/penalties are correctly handled in charge-off reversal/replay
|
||||||
|
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 | 10 February 2024 | 83.57 | 16.43 | 0.58 | 0.0 | 0.0 | 17.01 | 17.01 | 0.0 | 17.01 | 0.0 |
|
||||||
|
| 2 | 29 | 01 March 2024 | | 66.99 | 16.58 | 0.3 | 8.0 | 5.0 | 29.88 | 0.0 | 0.0 | 0.0 | 29.88 |
|
||||||
|
| 3 | 31 | 01 April 2024 | | 50.39 | 16.6 | 0.28 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 4 | 30 | 01 May 2024 | | 33.68 | 16.71 | 0.17 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 5 | 31 | 01 June 2024 | | 16.91 | 16.77 | 0.11 | 0.0 | 0.0 | 16.88 | 0.0 | 0.0 | 0.0 | 16.88 |
|
||||||
|
| 6 | 30 | 01 July 2024 | | 0.0 | 16.91 | 0.06 | 0.0 | 0.0 | 16.97 | 0.0 | 0.0 | 0.0 | 16.97 |
|
||||||
|
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.5 | 8.0 | 5.0 | 114.5 | 17.01 | 0.0 | 17.01 | 97.49 |
|
||||||
|
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 |
|
||||||
|
| 10 February 2024 | Repayment | 17.01 | 16.43 | 0.58 | 0.0 | 0.0 | 83.57 | false | false |
|
||||||
|
| 01 April 2024 | Accrual | 1.59 | 0.0 | 1.59 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Accrual Adjustment | 0.43 | 0.0 | 0.43 | 0.0 | 0.0 | 0.0 | false | false |
|
||||||
|
| 01 April 2024 | Charge-off | 97.49 | 83.57 | 0.92 | 8.0 | 5.0 | 0.0 | false | true |
|
||||||
|
|||||||
+1
@@ -827,6 +827,7 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loanTransaction.resetDerivedComponents();
|
||||||
loanTransaction.updateComponentsAndTotal(principalPortion, interestPortion, feeChargesPortion, penaltychargesPortion);
|
loanTransaction.updateComponentsAndTotal(principalPortion, interestPortion, feeChargesPortion, penaltychargesPortion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
@@ -35,6 +35,7 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
import org.apache.fineract.infrastructure.core.api.JsonCommand;
|
||||||
import org.apache.fineract.infrastructure.core.data.ApiParameterError;
|
import org.apache.fineract.infrastructure.core.data.ApiParameterError;
|
||||||
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
|
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
|
||||||
|
import org.apache.fineract.infrastructure.core.exception.GeneralPlatformDomainRuleException;
|
||||||
import org.apache.fineract.infrastructure.core.exception.InvalidJsonException;
|
import org.apache.fineract.infrastructure.core.exception.InvalidJsonException;
|
||||||
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
|
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
|
||||||
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
|
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
|
||||||
@@ -194,6 +195,12 @@ public class LoanRescheduleRequestDataValidatorImpl implements LoanRescheduleReq
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void validateLoanStatusIsActiveOrClosed(Loan loan, DataValidatorBuilder dataValidatorBuilder) {
|
||||||
|
if (!loan.getStatus().isActive() && !loan.getStatus().isClosed() && !loan.getStatus().isOverpaid()) {
|
||||||
|
dataValidatorBuilder.reset().failWithCode("loan.is.not.active.or.closed", "Loan is not active or closed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void validateSupportedParameters(JsonCommand jsonCommand, Set<String> createRequestDataParameters) {
|
public static void validateSupportedParameters(JsonCommand jsonCommand, Set<String> createRequestDataParameters) {
|
||||||
final String jsonString = jsonCommand.json();
|
final String jsonString = jsonCommand.json();
|
||||||
|
|
||||||
@@ -243,6 +250,11 @@ public class LoanRescheduleRequestDataValidatorImpl implements LoanRescheduleReq
|
|||||||
if (loan.getLoanProductRelatedDetail().getLoanScheduleType() == LoanScheduleType.PROGRESSIVE) {
|
if (loan.getLoanProductRelatedDetail().getLoanScheduleType() == LoanScheduleType.PROGRESSIVE) {
|
||||||
progressiveLoanRescheduleRequestDataValidatorDelegate.validateForCreateAction(jsonCommand, loan);
|
progressiveLoanRescheduleRequestDataValidatorDelegate.validateForCreateAction(jsonCommand, loan);
|
||||||
} else {
|
} else {
|
||||||
|
if (loan.isChargedOff()) {
|
||||||
|
throw new GeneralPlatformDomainRuleException("error.msg.loan.is.charged.off",
|
||||||
|
"Loan: " + loan.getId() + " reschedule installment is not allowed. Loan Account is Charged-off", loan.getId());
|
||||||
|
}
|
||||||
|
|
||||||
validateSupportedParameters(jsonCommand, CREATE_REQUEST_DATA_PARAMETERS);
|
validateSupportedParameters(jsonCommand, CREATE_REQUEST_DATA_PARAMETERS);
|
||||||
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
|
final List<ApiParameterError> dataValidationErrors = new ArrayList<>();
|
||||||
final DataValidatorBuilder dataValidatorBuilder = new DataValidatorBuilder(dataValidationErrors)
|
final DataValidatorBuilder dataValidatorBuilder = new DataValidatorBuilder(dataValidationErrors)
|
||||||
|
|||||||
+1
@@ -62,6 +62,7 @@ public class ProgressivePossibleNextRepaymentCalculationServiceImpl extends Abst
|
|||||||
ProgressiveTransactionCtx ctx = new ProgressiveTransactionCtx(loan.getCurrency(), repaymentScheduleInstallments, Set.of(),
|
ProgressiveTransactionCtx ctx = new ProgressiveTransactionCtx(loan.getCurrency(), repaymentScheduleInstallments, Set.of(),
|
||||||
new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), scheduleModel);
|
new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), scheduleModel);
|
||||||
ctx.setChargedOff(loan.isChargedOff());
|
ctx.setChargedOff(loan.isChargedOff());
|
||||||
|
ctx.setWrittenOff(loan.isClosedWrittenOff());
|
||||||
ctx.setContractTerminated(loan.isContractTermination());
|
ctx.setContractTerminated(loan.isContractTermination());
|
||||||
advancedPaymentScheduleTransactionProcessor.recalculateInterestForDate(nextPaymentDueDate, ctx, false);
|
advancedPaymentScheduleTransactionProcessor.recalculateInterestForDate(nextPaymentDueDate, ctx, false);
|
||||||
RepaymentPeriod repaymentPeriod = scheduleModel.findRepaymentPeriodByDueDate(nextPaymentDueDate)
|
RepaymentPeriod repaymentPeriod = scheduleModel.findRepaymentPeriodByDueDate(nextPaymentDueDate)
|
||||||
|
|||||||
+31
-26
@@ -1495,6 +1495,10 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void handleWriteOff(final LoanTransaction transaction, TransactionCtx ctx) {
|
protected void handleWriteOff(final LoanTransaction transaction, TransactionCtx ctx) {
|
||||||
|
if (ctx instanceof ProgressiveTransactionCtx progressiveTransactionCtx) {
|
||||||
|
updateInstallmentsPrincipalAndInterestByModel(progressiveTransactionCtx);
|
||||||
|
progressiveTransactionCtx.setChargedOff(true);
|
||||||
|
}
|
||||||
super.handleWriteOff(transaction, ctx.getCurrency(), ctx.getInstallments());
|
super.handleWriteOff(transaction, ctx.getCurrency(), ctx.getInstallments());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1548,8 +1552,8 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
|||||||
public void recalculateInterestForDate(LocalDate targetDate, ProgressiveTransactionCtx ctx, boolean updateInstallments) {
|
public void recalculateInterestForDate(LocalDate targetDate, ProgressiveTransactionCtx ctx, boolean updateInstallments) {
|
||||||
if (ctx.getInstallments() != null && !ctx.getInstallments().isEmpty()) {
|
if (ctx.getInstallments() != null && !ctx.getInstallments().isEmpty()) {
|
||||||
Loan loan = ctx.getInstallments().getFirst().getLoan();
|
Loan loan = ctx.getInstallments().getFirst().getLoan();
|
||||||
if (loan.isInterestBearingAndInterestRecalculationEnabled() && !loan.isNpa() && !ctx.isChargedOff()
|
if (isInterestRecalculationSupported(ctx, loan) && !loan.isNpa()
|
||||||
&& !ctx.isContractTerminated() && !loan.getLoanInterestRecalculationDetails().disallowInterestCalculationOnPastDue()) {
|
&& !loan.getLoanInterestRecalculationDetails().disallowInterestCalculationOnPastDue()) {
|
||||||
|
|
||||||
boolean modelHasUpdates = rework(targetDate, ctx);
|
boolean modelHasUpdates = rework(targetDate, ctx);
|
||||||
if (modelHasUpdates && updateInstallments) {
|
if (modelHasUpdates && updateInstallments) {
|
||||||
@@ -2313,9 +2317,9 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
|||||||
boolean interestBearingAndInterestRecalculationEnabled = loanTransaction.getLoan()
|
boolean interestBearingAndInterestRecalculationEnabled = loanTransaction.getLoan()
|
||||||
.isInterestBearingAndInterestRecalculationEnabled();
|
.isInterestBearingAndInterestRecalculationEnabled();
|
||||||
|
|
||||||
if (interestBearingAndInterestRecalculationEnabled && ctx instanceof ProgressiveTransactionCtx progressiveTransactionCtx
|
if (isInterestRecalculationSupported(ctx, loanTransaction.getLoan())) {
|
||||||
&& !progressiveTransactionCtx.isChargedOff() && !progressiveTransactionCtx.isContractTerminated()) {
|
|
||||||
// Clear any previously skipped installments before re-evaluating
|
// Clear any previously skipped installments before re-evaluating
|
||||||
|
ProgressiveTransactionCtx progressiveTransactionCtx = (ProgressiveTransactionCtx) ctx;
|
||||||
progressiveTransactionCtx.getSkipRepaymentScheduleInstallments().clear();
|
progressiveTransactionCtx.getSkipRepaymentScheduleInstallments().clear();
|
||||||
paymentAllocationContext
|
paymentAllocationContext
|
||||||
.setInAdvanceInstallmentsFilteringRules(installment -> loanTransaction.isBefore(installment.getDueDate())
|
.setInAdvanceInstallmentsFilteringRules(installment -> loanTransaction.isBefore(installment.getDueDate())
|
||||||
@@ -2389,15 +2393,12 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
|||||||
context.getTransactionMappings(), context.getLoanTransaction(), oldestPastDueInstallment,
|
context.getTransactionMappings(), context.getLoanTransaction(), oldestPastDueInstallment,
|
||||||
context.getCtx().getCurrency());
|
context.getCtx().getCurrency());
|
||||||
Loan loan = context.getLoanTransaction().getLoan();
|
Loan loan = context.getLoanTransaction().getLoan();
|
||||||
if (context.getCtx() instanceof ProgressiveTransactionCtx progressiveTransactionCtx
|
if (isInterestRecalculationSupported(context.getCtx(), loan)) {
|
||||||
&& loan.isInterestBearingAndInterestRecalculationEnabled()
|
context.setAllocatedAmount(handlingPaymentAllocationForInterestBearingProgressiveLoan(
|
||||||
&& !progressiveTransactionCtx.isChargedOff()
|
context.getLoanTransaction(), context.getTransactionAmountUnprocessed(),
|
||||||
&& !progressiveTransactionCtx.isContractTerminated()) {
|
context.getBalances(), paymentAllocationType, oldestPastDueInstallment,
|
||||||
context.setAllocatedAmount(
|
(ProgressiveTransactionCtx) context.getCtx(), loanTransactionToRepaymentScheduleMapping,
|
||||||
handlingPaymentAllocationForInterestBearingProgressiveLoan(context.getLoanTransaction(),
|
oldestPastDueInstallmentCharges));
|
||||||
context.getTransactionAmountUnprocessed(), context.getBalances(),
|
|
||||||
paymentAllocationType, oldestPastDueInstallment, progressiveTransactionCtx,
|
|
||||||
loanTransactionToRepaymentScheduleMapping, oldestPastDueInstallmentCharges));
|
|
||||||
} else {
|
} else {
|
||||||
context.setAllocatedAmount(processPaymentAllocation(paymentAllocationType, oldestPastDueInstallment,
|
context.setAllocatedAmount(processPaymentAllocation(paymentAllocationType, oldestPastDueInstallment,
|
||||||
context.getLoanTransaction(), context.getTransactionAmountUnprocessed(),
|
context.getLoanTransaction(), context.getTransactionAmountUnprocessed(),
|
||||||
@@ -2418,14 +2419,12 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
|||||||
context.getTransactionMappings(), context.getLoanTransaction(), dueInstallment,
|
context.getTransactionMappings(), context.getLoanTransaction(), dueInstallment,
|
||||||
context.getCtx().getCurrency());
|
context.getCtx().getCurrency());
|
||||||
Loan loan = context.getLoanTransaction().getLoan();
|
Loan loan = context.getLoanTransaction().getLoan();
|
||||||
if (context.getCtx() instanceof ProgressiveTransactionCtx progressiveTransactionCtx
|
if (isInterestRecalculationSupported(context.getCtx(), loan)) {
|
||||||
&& loan.isInterestBearingAndInterestRecalculationEnabled()
|
context.setAllocatedAmount(
|
||||||
&& !progressiveTransactionCtx.isChargedOff()
|
handlingPaymentAllocationForInterestBearingProgressiveLoan(context.getLoanTransaction(),
|
||||||
&& !progressiveTransactionCtx.isContractTerminated()) {
|
context.getTransactionAmountUnprocessed(), context.getBalances(),
|
||||||
context.setAllocatedAmount(handlingPaymentAllocationForInterestBearingProgressiveLoan(
|
paymentAllocationType, dueInstallment, (ProgressiveTransactionCtx) context.getCtx(),
|
||||||
context.getLoanTransaction(), context.getTransactionAmountUnprocessed(),
|
loanTransactionToRepaymentScheduleMapping, dueInstallmentCharges));
|
||||||
context.getBalances(), paymentAllocationType, dueInstallment, progressiveTransactionCtx,
|
|
||||||
loanTransactionToRepaymentScheduleMapping, dueInstallmentCharges));
|
|
||||||
} else {
|
} else {
|
||||||
context.setAllocatedAmount(processPaymentAllocation(paymentAllocationType, dueInstallment,
|
context.setAllocatedAmount(processPaymentAllocation(paymentAllocationType, dueInstallment,
|
||||||
context.getLoanTransaction(), context.getTransactionAmountUnprocessed(),
|
context.getLoanTransaction(), context.getTransactionAmountUnprocessed(),
|
||||||
@@ -2472,13 +2471,10 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
|||||||
if (inAdvanceInstallment.equals(inAdvanceInstallments.get(numberOfInstallments - 1))) {
|
if (inAdvanceInstallment.equals(inAdvanceInstallments.get(numberOfInstallments - 1))) {
|
||||||
evenPortion = evenPortion.add(balanceAdjustment);
|
evenPortion = evenPortion.add(balanceAdjustment);
|
||||||
}
|
}
|
||||||
if (context.getCtx() instanceof ProgressiveTransactionCtx progressiveTransactionCtx
|
if (isInterestRecalculationSupported(context.getCtx(), loan)) {
|
||||||
&& loan.isInterestBearingAndInterestRecalculationEnabled()
|
|
||||||
&& !progressiveTransactionCtx.isChargedOff()
|
|
||||||
&& !progressiveTransactionCtx.isContractTerminated()) {
|
|
||||||
context.setAllocatedAmount(handlingPaymentAllocationForInterestBearingProgressiveLoan(
|
context.setAllocatedAmount(handlingPaymentAllocationForInterestBearingProgressiveLoan(
|
||||||
context.getLoanTransaction(), evenPortion, context.getBalances(), paymentAllocationType,
|
context.getLoanTransaction(), evenPortion, context.getBalances(), paymentAllocationType,
|
||||||
inAdvanceInstallment, progressiveTransactionCtx,
|
inAdvanceInstallment, (ProgressiveTransactionCtx) context.getCtx(),
|
||||||
loanTransactionToRepaymentScheduleMapping, inAdvanceInstallmentCharges));
|
loanTransactionToRepaymentScheduleMapping, inAdvanceInstallmentCharges));
|
||||||
} else {
|
} else {
|
||||||
context.setAllocatedAmount(processPaymentAllocation(paymentAllocationType, inAdvanceInstallment,
|
context.setAllocatedAmount(processPaymentAllocation(paymentAllocationType, inAdvanceInstallment,
|
||||||
@@ -3070,4 +3066,13 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
|||||||
.fetchFirstNormalInstallmentNumber(getCtx().getInstallments());
|
.fetchFirstNormalInstallmentNumber(getCtx().getInstallments());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isInterestRecalculationSupported(TransactionCtx ctx, Loan loan) {
|
||||||
|
if (ctx instanceof ProgressiveTransactionCtx progressiveTransactionCtx) {
|
||||||
|
return loan.isInterestBearingAndInterestRecalculationEnabled() && !progressiveTransactionCtx.isChargedOff()
|
||||||
|
&& !progressiveTransactionCtx.isWrittenOff() && !progressiveTransactionCtx.isContractTerminated();
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -37,16 +37,18 @@ import org.apache.fineract.portfolio.loanproduct.calc.data.ProgressiveLoanIntere
|
|||||||
public class ProgressiveTransactionCtx extends TransactionCtx {
|
public class ProgressiveTransactionCtx extends TransactionCtx {
|
||||||
|
|
||||||
private final ProgressiveLoanInterestScheduleModel model;
|
private final ProgressiveLoanInterestScheduleModel model;
|
||||||
private List<LoanTransaction> alreadyProcessedTransactions = new ArrayList<>();
|
private final List<LoanTransaction> alreadyProcessedTransactions = new ArrayList<>();
|
||||||
@Setter
|
@Setter
|
||||||
private Money sumOfInterestRefundAmount;
|
private Money sumOfInterestRefundAmount;
|
||||||
@Setter
|
@Setter
|
||||||
private boolean isChargedOff = false;
|
private boolean isChargedOff = false;
|
||||||
@Setter
|
@Setter
|
||||||
|
private boolean isWrittenOff = false;
|
||||||
|
@Setter
|
||||||
private boolean isContractTerminated = false;
|
private boolean isContractTerminated = false;
|
||||||
@Setter
|
@Setter
|
||||||
private boolean isPrepayAttempt = false;
|
private boolean isPrepayAttempt = false;
|
||||||
private List<LoanRepaymentScheduleInstallment> skipRepaymentScheduleInstallments = new ArrayList<>();
|
private final List<LoanRepaymentScheduleInstallment> skipRepaymentScheduleInstallments = new ArrayList<>();
|
||||||
|
|
||||||
public ProgressiveTransactionCtx(MonetaryCurrency currency, List<LoanRepaymentScheduleInstallment> installments,
|
public ProgressiveTransactionCtx(MonetaryCurrency currency, List<LoanRepaymentScheduleInstallment> installments,
|
||||||
Set<LoanCharge> charges, MoneyHolder overpaymentHolder, ChangedTransactionDetail changedTransactionDetail,
|
Set<LoanCharge> charges, MoneyHolder overpaymentHolder, ChangedTransactionDetail changedTransactionDetail,
|
||||||
|
|||||||
+22
-2
@@ -25,6 +25,7 @@ import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.Loan
|
|||||||
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateApprovalDate;
|
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateApprovalDate;
|
||||||
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateForOverdueCharges;
|
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateForOverdueCharges;
|
||||||
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateLoanIsActive;
|
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateLoanIsActive;
|
||||||
|
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateLoanStatusIsActiveOrClosed;
|
||||||
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateRescheduleReasonComment;
|
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateRescheduleReasonComment;
|
||||||
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateRescheduleReasonId;
|
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateRescheduleReasonId;
|
||||||
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateRescheduleRequestStatus;
|
import static org.apache.fineract.portfolio.loanaccount.rescheduleloan.data.LoanRescheduleRequestDataValidatorImpl.validateRescheduleRequestStatus;
|
||||||
@@ -47,7 +48,9 @@ import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidati
|
|||||||
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
|
import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
|
||||||
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
|
||||||
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariationType;
|
||||||
import org.apache.fineract.portfolio.loanaccount.rescheduleloan.RescheduleLoansApiConstants;
|
import org.apache.fineract.portfolio.loanaccount.rescheduleloan.RescheduleLoansApiConstants;
|
||||||
import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest;
|
import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest;
|
||||||
import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository;
|
import org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository;
|
||||||
@@ -70,7 +73,6 @@ public class ProgressiveLoanRescheduleRequestDataValidator implements LoanResche
|
|||||||
|
|
||||||
final JsonElement jsonElement = jsonCommand.parsedJson();
|
final JsonElement jsonElement = jsonCommand.parsedJson();
|
||||||
|
|
||||||
validateLoanIsActive(loan, dataValidatorBuilder);
|
|
||||||
validateSubmittedOnDate(fromJsonHelper, loan, jsonElement, dataValidatorBuilder);
|
validateSubmittedOnDate(fromJsonHelper, loan, jsonElement, dataValidatorBuilder);
|
||||||
final LocalDate rescheduleFromDate = validateAndRetrieveRescheduleFromDate(fromJsonHelper, jsonElement, dataValidatorBuilder);
|
final LocalDate rescheduleFromDate = validateAndRetrieveRescheduleFromDate(fromJsonHelper, jsonElement, dataValidatorBuilder);
|
||||||
validateRescheduleReasonId(fromJsonHelper, jsonElement, dataValidatorBuilder);
|
validateRescheduleReasonId(fromJsonHelper, jsonElement, dataValidatorBuilder);
|
||||||
@@ -81,6 +83,11 @@ public class ProgressiveLoanRescheduleRequestDataValidator implements LoanResche
|
|||||||
|
|
||||||
boolean hasInterestRateChange = interestRate != null;
|
boolean hasInterestRateChange = interestRate != null;
|
||||||
boolean hasAdjustDueDateChange = adjustedDueDate != null;
|
boolean hasAdjustDueDateChange = adjustedDueDate != null;
|
||||||
|
if (hasInterestRateChange) {
|
||||||
|
validateLoanStatusIsActiveOrClosed(loan, dataValidatorBuilder);
|
||||||
|
} else {
|
||||||
|
validateLoanIsActive(loan, dataValidatorBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
if (hasInterestRateChange && hasAdjustDueDateChange) {
|
if (hasInterestRateChange && hasAdjustDueDateChange) {
|
||||||
dataValidatorBuilder.reset().parameter(RescheduleLoansApiConstants.adjustedDueDateParamName).failWithCode(
|
dataValidatorBuilder.reset().parameter(RescheduleLoansApiConstants.adjustedDueDateParamName).failWithCode(
|
||||||
@@ -144,7 +151,20 @@ public class ProgressiveLoanRescheduleRequestDataValidator implements LoanResche
|
|||||||
LocalDate rescheduleFromDate = loanRescheduleRequest.getRescheduleFromDate();
|
LocalDate rescheduleFromDate = loanRescheduleRequest.getRescheduleFromDate();
|
||||||
final Loan loan = loanRescheduleRequest.getLoan();
|
final Loan loan = loanRescheduleRequest.getLoan();
|
||||||
LoanRepaymentScheduleInstallment installment;
|
LoanRepaymentScheduleInstallment installment;
|
||||||
validateLoanIsActive(loan, dataValidatorBuilder);
|
|
||||||
|
boolean hasInterestRateChange = false;
|
||||||
|
for (LoanRescheduleRequestToTermVariationMapping mapping : loanRescheduleRequest
|
||||||
|
.getLoanRescheduleRequestToTermVariationMappings()) {
|
||||||
|
LoanTermVariationType termType = mapping.getLoanTermVariations().getTermType();
|
||||||
|
if (termType.isInterestRateVariation() || termType.isInterestRateFromInstallment()) {
|
||||||
|
hasInterestRateChange = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasInterestRateChange) {
|
||||||
|
validateLoanStatusIsActiveOrClosed(loan, dataValidatorBuilder);
|
||||||
|
} else {
|
||||||
|
validateLoanIsActive(loan, dataValidatorBuilder);
|
||||||
|
}
|
||||||
|
|
||||||
if (loanRescheduleRequest.getInterestRateFromInstallmentTermVariationIfExists() != null) {
|
if (loanRescheduleRequest.getInterestRateFromInstallmentTermVariationIfExists() != null) {
|
||||||
installment = loan.getRelatedRepaymentScheduleInstallment(rescheduleFromDate);
|
installment = loan.getRelatedRepaymentScheduleInstallment(rescheduleFromDate);
|
||||||
|
|||||||
+1
@@ -113,6 +113,7 @@ public class InterestScheduleModelRepositoryWrapperImpl implements InterestSched
|
|||||||
ProgressiveTransactionCtx ctx = new ProgressiveTransactionCtx(loan.getCurrency(), loan.getRepaymentScheduleInstallments(),
|
ProgressiveTransactionCtx ctx = new ProgressiveTransactionCtx(loan.getCurrency(), loan.getRepaymentScheduleInstallments(),
|
||||||
Set.of(), new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), savedModel.get());
|
Set.of(), new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), savedModel.get());
|
||||||
ctx.setChargedOff(loan.isChargedOff());
|
ctx.setChargedOff(loan.isChargedOff());
|
||||||
|
ctx.setWrittenOff(loan.isClosedWrittenOff());
|
||||||
ctx.setContractTerminated(loan.isContractTermination());
|
ctx.setContractTerminated(loan.isContractTermination());
|
||||||
advancedPaymentScheduleTransactionProcessor.recalculateInterestForDate(businessDate, ctx);
|
advancedPaymentScheduleTransactionProcessor.recalculateInterestForDate(businessDate, ctx);
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-6
@@ -28,6 +28,7 @@ import java.util.HashMap;
|
|||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -40,7 +41,6 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
|
|||||||
import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder;
|
import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder;
|
||||||
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
|
import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder;
|
||||||
import org.apache.fineract.infrastructure.core.exception.ErrorHandler;
|
import org.apache.fineract.infrastructure.core.exception.ErrorHandler;
|
||||||
import org.apache.fineract.infrastructure.core.exception.GeneralPlatformDomainRuleException;
|
|
||||||
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
|
import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
|
||||||
import org.apache.fineract.infrastructure.core.service.DateUtils;
|
import org.apache.fineract.infrastructure.core.service.DateUtils;
|
||||||
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanBalanceChangedBusinessEvent;
|
import org.apache.fineract.infrastructure.event.business.domain.loan.LoanBalanceChangedBusinessEvent;
|
||||||
@@ -53,6 +53,7 @@ import org.apache.fineract.portfolio.loanaccount.data.AccountingBridgeDataDTO;
|
|||||||
import org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsData;
|
import org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsData;
|
||||||
import org.apache.fineract.portfolio.loanaccount.data.ScheduleGeneratorDTO;
|
import org.apache.fineract.portfolio.loanaccount.data.ScheduleGeneratorDTO;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
||||||
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanLifecycleStateMachine;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository;
|
||||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
|
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
|
||||||
@@ -123,6 +124,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche
|
|||||||
private final LoanAccountingBridgeMapper loanAccountingBridgeMapper;
|
private final LoanAccountingBridgeMapper loanAccountingBridgeMapper;
|
||||||
private final LoanScheduleComponent loanSchedule;
|
private final LoanScheduleComponent loanSchedule;
|
||||||
private final LoanTransactionRepository loanTransactionRepository;
|
private final LoanTransactionRepository loanTransactionRepository;
|
||||||
|
private final LoanLifecycleStateMachine loanLifecycleStateMachine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create a new instance of the LoanRescheduleRequest object from the JsonCommand object and persist
|
* create a new instance of the LoanRescheduleRequest object from the JsonCommand object and persist
|
||||||
@@ -140,11 +142,6 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche
|
|||||||
// use the loan id to get a Loan entity object
|
// use the loan id to get a Loan entity object
|
||||||
final Loan loan = this.loanAssembler.assembleFrom(loanId);
|
final Loan loan = this.loanAssembler.assembleFrom(loanId);
|
||||||
|
|
||||||
if (loan.isChargedOff()) {
|
|
||||||
throw new GeneralPlatformDomainRuleException("error.msg.loan.is.charged.off",
|
|
||||||
"Loan: " + loanId + " reschedule installment is not allowed. Loan Account is Charged-off", loanId);
|
|
||||||
}
|
|
||||||
|
|
||||||
// validate the request in the JsonCommand object passed as
|
// validate the request in the JsonCommand object passed as
|
||||||
// parameter
|
// parameter
|
||||||
this.loanRescheduleRequestDataValidator.validateForCreateAction(jsonCommand, loan);
|
this.loanRescheduleRequestDataValidator.validateForCreateAction(jsonCommand, loan);
|
||||||
@@ -457,6 +454,10 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche
|
|||||||
// update the status of the request
|
// update the status of the request
|
||||||
loanRescheduleRequest.approve(appUser, approvedOnDate);
|
loanRescheduleRequest.approve(appUser, approvedOnDate);
|
||||||
|
|
||||||
|
Optional<LocalDate> lastTransactionDateForReprocessing = loanTransactionRepository.findLastTransactionDateForReprocessing(loan);
|
||||||
|
if (lastTransactionDateForReprocessing.isPresent()) {
|
||||||
|
loanLifecycleStateMachine.determineAndTransition(loan, lastTransactionDateForReprocessing.get());
|
||||||
|
}
|
||||||
loan = saveAndFlushLoanWithDataIntegrityViolationChecks(loan);
|
loan = saveAndFlushLoanWithDataIntegrityViolationChecks(loan);
|
||||||
|
|
||||||
loanAccrualsProcessingService.processAccrualsOnInterestRecalculation(loan, true, false);
|
loanAccrualsProcessingService.processAccrualsOnInterestRecalculation(loan, true, false);
|
||||||
|
|||||||
+1
@@ -103,6 +103,7 @@ public class LoanTransactionProcessingServiceImpl implements LoanTransactionProc
|
|||||||
new ChangedTransactionDetail(), model, getTotalRefundInterestAmount(loan));
|
new ChangedTransactionDetail(), model, getTotalRefundInterestAmount(loan));
|
||||||
progressiveContext.getAlreadyProcessedTransactions().addAll(loanTransactionService.retrieveListOfTransactionsForReprocessing(loan));
|
progressiveContext.getAlreadyProcessedTransactions().addAll(loanTransactionService.retrieveListOfTransactionsForReprocessing(loan));
|
||||||
progressiveContext.setChargedOff(loan.isChargedOff());
|
progressiveContext.setChargedOff(loan.isChargedOff());
|
||||||
|
progressiveContext.setWrittenOff(loan.isClosedWrittenOff());
|
||||||
progressiveContext.setContractTerminated(loan.isContractTermination());
|
progressiveContext.setContractTerminated(loan.isContractTermination());
|
||||||
ChangedTransactionDetail result = advancedProcessor.processLatestTransaction(loanTransaction, progressiveContext);
|
ChangedTransactionDetail result = advancedProcessor.processLatestTransaction(loanTransaction, progressiveContext);
|
||||||
if (!TransactionSynchronizationManager.isCurrentTransactionReadOnly()) {
|
if (!TransactionSynchronizationManager.isCurrentTransactionReadOnly()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user