Ashhar Ahmad Khan created FINERACT-2587:
-------------------------------------------

             Summary: Remove CLIENTCHARGE| INACTIVATE write path — command has 
never functioned since 2015
                 Key: FINERACT-2587
                 URL: https://issues.apache.org/jira/browse/FINERACT-2587
             Project: Apache Fineract
          Issue Type: Bug
            Reporter: Ashhar Ahmad Khan


POST /clients/\{clientId}/charges/\{chargeId}?command=inactivate has never 
returned a 
successful response in any version of Fineract or its predecessor MifosX.

The inactivateCharge() service method was a stub returning null from its first 
commit 
(d0fd3e4a6c, August 17 2015). No command handler for CLIENTCHARGE|INACTIVATE 
was ever 
registered in any commit across the repository history. git log --all -S 
"clientCharge.inactivate" returns zero results outside the investigation branch.

Runtime confirmation against apache/fineract:latest showed HTTP 400 with 
error.msg.command.unsupported. m_portfolio_command_source shows 
made_on_date=NULL 
and status=5 — rejected before any processing began. m_client_charge.is_active 
was never written.

Surface area audit confirmed nothing depends on this path — no SDK method, no 
Swagger documentation, no frontend references, no integration tests, and 
m_portfolio_command_source had zero prior attempts before the validation run.

Per architectural direction from Victor and James that fees should be 
account-associated rather than client-associated, and following the 72-hour 
notice 
posted to the DEV list, this removes the write path scaffolding (Phase 1 only).

Phase 1 removes: API routing branch, interface method, stub implementation, 
CommandWrapperBuilder method, two ClientApiConstants, a Liquibase changeset 
deleting INACTIVATE_CLIENTCHARGE and INACTIVATE_CLIENTCHARGE_CHECKER from 
m_permission, and corresponding sample SQL entries.

Phase 1 does NOT remove: isActive and inactivationDate from the GET response — 
dropping those fields changes the response contract and is a separate Phase 2 
decision.

DEV list thread: 
https://lists.apache.org/thread/lhh0hx0t2y7vzdrs98fg3qyfx1xo9d0y
Related ticket: FINERACT-2545



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

Reply via email to