Adam Saghy created FINERACT-2938:
------------------------------------

             Summary: 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
    Affects Versions: 1.15.0
            Reporter: Adam Saghy
            Assignee: Adam Saghy


*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