[
https://issues.apache.org/jira/browse/FINERACT-2471?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18058148#comment-18058148
]
Ayush Singh commented on FINERACT-2471:
---------------------------------------
Hi everyone, I've successfully set up my JIRA account (ayushsingh). As
discussed with Mohammed Saifulhuq on the dev-list, I am taking ownership of the
Phase 2 implementation for FINERACT-2471, focusing on the Reason Codes and
Notification triggers.
I am currently reviewing the integration tests in PR #5465, specifically
SavingsAccountForceWithdrawalTest.java, to ensure my implementation aligns with
the core engine. I have also noted the new
FORCE_WITHDRAWAL_SAVINGSACCOUNT_CHECKER permission and will ensure the
notification logic supports the mandatory Maker-Checker flow.
I will begin work as soon as the Phase 1 foundation is merged.
Best, Ayush SinghÂ
> Implement 'Force Debit' functionality for Savings Accounts with Configurable
> Limits
> -----------------------------------------------------------------------------------
>
> Key: FINERACT-2471
> URL: https://issues.apache.org/jira/browse/FINERACT-2471
> Project: Apache Fineract
> Issue Type: New Feature
> Reporter: saifulhuq
> Priority: Major
>
> *Background:* Currently, Fineract rejects savings account withdrawals if the
> balance is insufficient. Regulatory requirements (e.g., tax levies,
> maintenance fees) often require a "Force Post" capability where the bank must
> debit the account regardless of the balance, up to a certain risk limit.
> *Functional Specification:*
> # *Global Configurations:*
> *
> ** {{allow-force-debit-on-savings-account}} (Boolean): Global switch to
> enable the feature.
> *
> ** {{force-debit-on-savings-account-limit}} (Decimal): The maximum negative
> balance allowed (e.g., -5000).
> # *Permissions:*
> *
> ** Introduce {{WITHDRAW_SAVINGSACCOUNT_FORCE_DEBIT}} and
> {{{}WITHDRAW_SAVINGSACCOUNT_FORCE_DEBIT_CHECKER{}}}.
> *
> ** Only users with this specific permission can trigger the force debit API.
> # *API Implementation:*
> *
> ** New Command: {{force-withdrawal}}
> *
> ** Endpoint: {{POST
> /savingsaccounts/\{accountId}/transactions?command=force-withdrawal}}
> # *Validation Logic (Command Layer):*
> *
> ** If {{allow-force-debit}} is FALSE -> Fail if insufficient funds (Standard
> behavior).
> *
> ** If {{allow-force-debit}} is TRUE:
> *
> **
> *** Check: {{{}Current Balance - Transaction Amount >= force-debit-limit{}}}.
> *
> **
> *** If limit is breached -> Throw
> {{{}InsufficientAccountBalanceException{}}}.
> *
> **
> *** If within limit -> Process transaction and allow negative balance.
> *Technical Implementation Plan:*
> * Modify {{GlobalConfigurationPropertyData}} to include new keys.
> * Update {{SavingsAccountWritePlatformServiceJpaRepositoryImpl}} to handle
> the new command.
> * Implement validation logic ensuring GL consistency.
> * Add Unit Tests covering:
> *
> ** Limit breached (Fail).
> *
> ** Limit respected (Pass).
> *
> ** Permission denied (Fail).
--
This message was sent by Atlassian Jira
(v8.20.10#820010)