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)