[ 
https://issues.apache.org/jira/browse/FINERACT-2938?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adam Saghy updated FINERACT-2938:
---------------------------------
    Component/s: Charges

> Introduce "Down payment fee" charge type
> ----------------------------------------
>
>                 Key: FINERACT-2938
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2938
>             Project: Apache Fineract
>          Issue Type: New Feature
>          Components: Charges
>    Affects Versions: 1.15.0
>            Reporter: Adam Saghy
>            Assignee: Adam Saghy
>            Priority: Major
>
> *Summary:* Support a Down payment fee charge on loans, calculated on and due 
> with the down payment period
> h4. Background
> Fineract already supports *Disbursement fee* charges 
> (ChargeTimeType.DISBURSEMENT), either as a flat amount or as a percentage of 
> the disbursed amount.
> h4. Goal
> Add a new charge time type, {*}Down payment fee{*}, that works like the 
> Disbursement fee but is linked to the down payment period and the down 
> payment amount.
>  
> h4. Acceptance criteria
>  # *Charge definition*
>  * A charge can be created with the new charge time type *"Down payment fee"* 
> (for example ChargeTimeType.DOWN_PAYMENT). It applies to loan charges only.
>  * Supported calculation types:
>  ** *Flat*
>  ** *Percentage of the down payment amount* (a new calculation type such as 
> PERCENT_OF_DOWN_PAYMENT_AMOUNT, or an agreed reuse of an existing one)
>  * Validation rejects the charge type on non-loan products, on loan products 
> without down payment enabled, and with unsupported calculation types.
>  # *Automatic creation at disbursement*
>  * When the loan has a Down payment fee and a disbursement creates a down 
> payment period:
>  ** the fee is calculated after the down payment amount is known (flat, or % 
> of the down payment amount),
>  ** the fee is added to the down payment period (like a disbursement fee on 
> the disbursement period),
>  ** the charge is {*}due on the due date of the down payment period{*}.
>  * With multiple disbursements, each down payment period gets its own fee.
>  # *Automatic down payment repayment*
>  * If enableAutoRepaymentForDownPayment is on, the automatic down payment 
> transaction also covers the Down payment fee, so the fee is paid together 
> with the down payment principal.
>  # *Skipping the fee at disbursement*
>  * The disbursement API accepts a flag (for example skipDownPaymentFee) that 
> tells the system *not* to create the Down payment fee automatically, so it 
> can be added manually later.
>  # *Adding the fee manually*
>  * A Down payment fee can be added to an existing loan through the Add loan 
> charge API.
>  * The charge is matched to the right down payment period by {*}charge due 
> date + charge type{*}. Validation fails if no down payment period exists on 
> that date.
>  * If enableAutoRepaymentForDownPayment is on, adding the fee *adjusts the 
> automatic down payment transaction* so it includes the new fee amount 
> (through reverse-replay or an equivalent mechanism).
>  * *Multiple* Down payment fees can be added to the same loan and down 
> payment period.
>  # *Repayment allocation*
>  * The fee sits in the down payment period, so it is paid {*}first, together 
> with the down payment principal{*}.
>  * The allocation order inside that period follows the configured allocation 
> rules of the transaction that pays it (advanced payment allocation / 
> transaction processing strategy).
>  # *Lifecycle and existing charge features*
> The Down payment fee behaves like any other loan charge:
>  * *Accrual:* the accrual transaction is created by the EOD job, as for all 
> charges.
>  * *Charge adjustment:* the fee can be adjusted through the charge adjustment 
> functionality.
>  * *Waive:* an unpaid fee can be waived.
>  * *Charge-off:* the fee takes part in loan charge-off processing and 
> accounting.
>  * *Reverse-replay / undo:* backdated transactions, undo disbursement and 
> undo of the down payment recalculate or remove the fee as expected.
>  # *Accounting and reporting*
>  * Journal entries for accrual, payment, waiver, adjustment and charge-off 
> use the fee income / fee receivable mappings, as for other fees.
>  * The fee shows up on the repayment schedule (down payment period fee 
> column), in charge details and in loan summary totals.
>  * Business events are raised for charge creation and changes, as for 
> existing charges.
> *Testing*
>  * Integration tests and E2E tests cover:
>  ** flat and percentage fees
>  ** automatic and manual creation
>  ** the skip flag
>  ** auto down payment adjustment
>  ** multiple fees
>  ** multi-disbursement
>  ** waive
>  ** charge adjustment
>  ** charge-off
>  ** accrual
>  ** reverse-replay scenarios
> h4. Out of scope
>  * Fee refund on Merchant issued refund and Payout refund (covered by the 
> follow-up story).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to