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

Ralph Hopman resolved FINERACT-2565.
------------------------------------
    Resolution: Fixed

> Batch API support for disburseToSavings, paySavingsAccountCharge, 
> createAccountTransfer
> ---------------------------------------------------------------------------------------
>
>                 Key: FINERACT-2565
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2565
>             Project: Apache Fineract
>          Issue Type: Improvement
>          Components: Savings
>            Reporter: Ralph Hopman
>            Assignee: Ralph Hopman
>            Priority: Minor
>
> The Fineract Batch API allows multiple API calls to be executed in a single 
> HTTP request via {{{}POST /v1/batch{}}}. Each request entry is routed to a 
> {{CommandStrategy}} based on its relative URL and HTTP method. Several common 
> loan and savings operations are currently missing from the batch routing 
> table:
>  * *Disburse a loan to a linked savings account* ({{{}POST 
> loans/\{loanId}?command=disburseToSavings{}}})
>  * *Pay or waive a savings account charge* ({{{}POST 
> savingsaccounts/\{savingsAccountId}/charges/\{savingsAccountChargeId}?command=paycharge{}}}
>  and {{{}?command=waive{}}})
>  * *Create an account transfer* ({{{}POST accounttransfers{}}})
> Attempting to include any of these in a batch request results in a {{501 Not 
> Implemented}} response from the {{UnknownCommandStrategy}} fallback.
> h2. Proposed Solution
> Implement and register the following new {{CommandStrategy}} beans:
> h3. DisburseToSavingsCommandStrategy
>  * Handles {{POST loans/\{loanId}?command=disburseToSavings}}
>  * Extracts {{loanId}} from the URL path segment and delegates to 
> {{LoansApiResource#stateTransitions(loanId, "disburseToSavings", body)}}
> h3. PaySavingsAccountChargeCommandStrategy
>  * Handles {{{}POST 
> savingsaccounts/\{savingsAccountId}/charges/\{savingsAccountChargeId}?command={command{}}}}
>  * Supported commands: {{{}paycharge{}}}, {{waive}}
>  * Extracts {{{}savingsAccountId{}}}, {{{}savingsAccountChargeId{}}}, and 
> {{command}} from the URL and delegates to 
> {{SavingsAccountChargesApiResource#payOrWaiveSavingsAccountCharge}}
>  * Returns {{501}} if no {{?command=}} query parameter is present
> h3. CreateAccountTransferCommandStrategy
>  * Handles {{POST accounttransfers}}
>  * Builds a {{createAccountTransfer}} {{CommandWrapper}} and passes the raw 
> request body directly to 
> {{{}PortfolioCommandSourceWritePlatformService#logCommandSource{}}}, 
> bypassing the DTO round-trip in {{AccountTransfersApiResource}}
> h3. CommandStrategyProvider registration
> All three strategies will be registered in {{CommandStrategyProvider}} 
> alongside the existing routes.



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

Reply via email to