[
https://issues.apache.org/jira/browse/FINERACT-2174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Adam Saghy updated FINERACT-2174:
---------------------------------
Description:
As part of this story we would like to focus on:
* In case the interestRecognitionOnDisbursementDate field is configured on
during the loan creation:
*
** if {*}TRUE{*}, Fineract should do interest recognition on Day 0
(disbursement date) EOD (end of day).
*
** if it is *not provided* or {*}FALSE{*}, Fineract should do interest
recognition on Day 1 (disbursement date+1) EOD (end of day). ({*}legacy,
default behaviour{*})
*Fineract behaviour*
* In Fineract the repayment period boundaries and calculation was following
the below rules:
** From date excluded (except the 1st period) as part of the period
** Due date included as part of the period
** Example:
*** Period #1
**** From date 1 January
**** Due date 1 February (part of #1 period)
*** Period #2
**** From date 1 February (excluded, not part of #2 period)
**** Due date 1 March
* The same rules applied to the calculation of daily interest
** By default FIneract was calculating and recognizing the interest on the 1
day of the repayment period (which is disbursement date + 1)
* However based on configuration, we can instruct Fineract to start the
interest recognition on the end of day disbursement date, which effectively
recognize the 1st day of repayment period (disbursement date + 1) on the end of
day of the disbursement date
** 1 day earlier, but only at end of day
*What advantages coming from this option?*
* So far for progressive loans, Fineract was recognizing the interest only at
end of day. It means when the day started the customer already ought to pay the
daily interest, but the recognition only happened with end of day job, in a
deferred manner.
* With the new flag, we can instruct Fineract to calculate the daily interest
ahead of 1 day, so this way, we dont need to mess with the repayment period and
interest boundaries and do any unnecessary changes to calculate and recognize
the interest "early".
** Example:
*** Loan was disbursed on 1 January
*** Daily interest is 0.20
*** At the time of end of day of 1 January, we calculate the interest for 2nd
January (which is the 1st day of the repayment period and the 1st day where the
customer ought to pay interest) but with the date of transaction date 1 January
(as part of COB, it is still 1 January):
**** Accrual on 1 January with amount of 0.20
* This strategy would allow us to avoid to implement any extensive conditions
and increase the complexity of the interest calculation and interest
recognition is not deferred any more, instead recognized ahead of 1 day, but as
the very last action.
* *Important to notice on the disbursement date the customer is not ought to
pay any daily interest, the recognition happens on the end of day and payable
only the next day!*
*Validation*
* Only supported for progressive loan schedule type!
* Can be updated if the loan got created but not yet approved / disbursed!
*Requires 3 steps:*
* Introduce the new field
* Enhance the "Apply periodic accrual business step"
** Based on the flag we might calculate the interest ahead of 1 day
* Enhance the days in year of rate factor calculation in EMICalculator
** Example: Period start from 20 Dec 2024 and ends on 20 January 2025, in
2024 there are 366 days, while in 2025 there are only 365
** We need to amend the logic which calculates how many days to be considered
as year #1 and year #2
*** If we recognize the interest a day ahead, we need to make sure the rate
factor which is the foundation of interest calculation is also recognize the
from date as well as part of the number of days in a year calculation which is
crucial in case the actual year was leap year or the upcoming year would be
leap year.
** *Example:*
*** If period from date is 18 December 2024 and due date is 18 January 2024
**** If we recognize the interest a day ahead the number of days for 2024 is
14 (including 18 dec and 31 dec) and number of days in 2025 is 17.
was:
As part of this story we would like to focus on:
* In case the interestRecognitionOnDisbursementDate field is configured on
during the loan creation:
*
** if {*}TRUE{*}, Fineract should do interest recognition on Day 0
(disbursement date) EOD (end of day).
*
** if it is *not provided* or {*}FALSE{*}, Fineract should do interest
recognition on Day 1 (disbursement date+1) EOD (end of day). ({*}legacy,
default behaviour{*})
*Fineract behaviour*
* In Fineract the repayment period boundaries and calculation was following
the below rules:
** From date excluded (except the 1st period) as part of the period
** Due date included as part of the period
** Example:
*** Period #1
**** From date 1 January
**** Due date 1 February (part of #1 period)
*** Period #2
**** From date 1 February (excluded, not part of #2 period)
**** Due date 1 March
* The same rules applied to the calculation of daily interest
** By default FIneract was calculating and recognizing the interest on the 1
day of the repayment period (which is disbursement date + 1)
* However based on configuration, we can instruct Fineract to start the
interest recognition on the end of day disbursement date, which effectively
recognize the 1st day of repayment period (disbursement date + 1) on the end of
day of the disbursement date
** 1 day earlier, but only at end of day
*What advantages coming from this option?*
* So far for progressive loans, Fineract was recognizing the interest only at
end of day. It means when the day started the customer already ought to pay the
daily interest, but the recognition only happened with end of day job, in a
deferred manner.
* With the new flag, we can instruct Fineract to calculate the daily interest
ahead of 1 day, so this way, we dont need to mess with the repayment period and
interest boundaries and do any unnecessary changes to calculate and recognize
the interest "early".
** Example:
*** Loan was disbursed on 1 January
*** Daily interest is 0.20
*** At the time of end of day of 1 January, we calculate the interest for 2nd
January (which is the 1st day of the repayment period and the 1st day where the
customer ought to pay interest) but with the date of transaction date 1 January
(as part of COB, it is still 1 January):
**** Accrual on 1 January with amount of 0.20
* This strategy would allow us to avoid to implement any extensive conditions
and increase the complexity of the interest calculation and interest
recognition is not deferred any more, instead recognized ahead of 1 day, but as
the very last action.
*Validation*
* Only supported for progressive loan schedule type!
* Can be updated if the loan got created but not yet approved / disbursed!
*Requires 3 steps:*
* Introduce the new field
* Enhance the "Apply periodic accrual business step"
** Based on the flag we might calculate the interest ahead of 1 day
* Enhance the days in year of rate factor calculation in EMICalculator
** Example: Period start from 20 Dec 2024 and ends on 20 January 2025, in
2024 there are 366 days, while in 2025 there are only 365
** We need to amend the logic which calculates how many days to be considered
as year #1 and year #2
*** If we recognize the interest a day ahead, we need to make sure the rate
factor which is the foundation of interest calculation is also recognize the
from date as well as part of the number of days in a year calculation which is
crucial in case the actual year was leap year or the upcoming year would be
leap year.
** *Example:*
*** If period from date is 18 December 2024 and due date is 18 January 2024
**** If we recognize the interest a day ahead the number of days for 2024 is
14 (including 18 dec and 31 dec) and number of days in 2025 is 17.
> Progressive Loan - Introduce `interestRecognitionFromDisbursementDate` to
> control when interest recognition should start
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: FINERACT-2174
> URL: https://issues.apache.org/jira/browse/FINERACT-2174
> Project: Apache Fineract
> Issue Type: Sub-task
> Reporter: Adam Saghy
> Priority: Minor
> Fix For: 1.11
>
>
> As part of this story we would like to focus on:
> * In case the interestRecognitionOnDisbursementDate field is configured on
> during the loan creation:
> *
> ** if {*}TRUE{*}, Fineract should do interest recognition on Day 0
> (disbursement date) EOD (end of day).
> *
> ** if it is *not provided* or {*}FALSE{*}, Fineract should do interest
> recognition on Day 1 (disbursement date+1) EOD (end of day). ({*}legacy,
> default behaviour{*})
>
> *Fineract behaviour*
> * In Fineract the repayment period boundaries and calculation was following
> the below rules:
> ** From date excluded (except the 1st period) as part of the period
> ** Due date included as part of the period
> ** Example:
> *** Period #1
> **** From date 1 January
> **** Due date 1 February (part of #1 period)
> *** Period #2
> **** From date 1 February (excluded, not part of #2 period)
> **** Due date 1 March
> * The same rules applied to the calculation of daily interest
> ** By default FIneract was calculating and recognizing the interest on the 1
> day of the repayment period (which is disbursement date + 1)
> * However based on configuration, we can instruct Fineract to start the
> interest recognition on the end of day disbursement date, which effectively
> recognize the 1st day of repayment period (disbursement date + 1) on the end
> of day of the disbursement date
> ** 1 day earlier, but only at end of day
> *What advantages coming from this option?*
> * So far for progressive loans, Fineract was recognizing the interest only
> at end of day. It means when the day started the customer already ought to
> pay the daily interest, but the recognition only happened with end of day
> job, in a deferred manner.
> * With the new flag, we can instruct Fineract to calculate the daily
> interest ahead of 1 day, so this way, we dont need to mess with the repayment
> period and interest boundaries and do any unnecessary changes to calculate
> and recognize the interest "early".
> ** Example:
> *** Loan was disbursed on 1 January
> *** Daily interest is 0.20
> *** At the time of end of day of 1 January, we calculate the interest for
> 2nd January (which is the 1st day of the repayment period and the 1st day
> where the customer ought to pay interest) but with the date of transaction
> date 1 January (as part of COB, it is still 1 January):
> **** Accrual on 1 January with amount of 0.20
> * This strategy would allow us to avoid to implement any extensive
> conditions and increase the complexity of the interest calculation and
> interest recognition is not deferred any more, instead recognized ahead of 1
> day, but as the very last action.
> * *Important to notice on the disbursement date the customer is not ought to
> pay any daily interest, the recognition happens on the end of day and payable
> only the next day!*
> *Validation*
> * Only supported for progressive loan schedule type!
> * Can be updated if the loan got created but not yet approved / disbursed!
> *Requires 3 steps:*
> * Introduce the new field
> * Enhance the "Apply periodic accrual business step"
> ** Based on the flag we might calculate the interest ahead of 1 day
> * Enhance the days in year of rate factor calculation in EMICalculator
> ** Example: Period start from 20 Dec 2024 and ends on 20 January 2025, in
> 2024 there are 366 days, while in 2025 there are only 365
> ** We need to amend the logic which calculates how many days to be
> considered as year #1 and year #2
> *** If we recognize the interest a day ahead, we need to make sure the rate
> factor which is the foundation of interest calculation is also recognize the
> from date as well as part of the number of days in a year calculation which
> is crucial in case the actual year was leap year or the upcoming year would
> be leap year.
> ** *Example:*
> *** If period from date is 18 December 2024 and due date is 18 January 2024
> **** If we recognize the interest a day ahead the number of days for 2024 is
> 14 (including 18 dec and 31 dec) and number of days in 2025 is 17.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)