You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Farooq Ayoade (Jira)" <ji...@apache.org> on 2026/06/21 18:25:00 UTC

[jira] [Commented] (FINERACT-2653) DELETE /provisioningcategory/{id} fails with "The parameter categoryname is mandatory" and never deletes the category

    [ https://issues.apache.org/jira/browse/FINERACT-2653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18090453#comment-18090453 ] 

Farooq Ayoade commented on FINERACT-2653:
-----------------------------------------

PR: https://github.com/apache/fineract/pull/6011

> DELETE /provisioningcategory/{id} fails with "The parameter categoryname is mandatory" and never deletes the category
> ---------------------------------------------------------------------------------------------------------------------
>
>                 Key: FINERACT-2653
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2653
>             Project: Apache Fineract
>          Issue Type: Bug
>          Components: Accounting
>            Reporter: Farooq Ayoade
>            Priority: Minor
>
> h3. Observed behavior
> Deleting a loan-loss provisioning category always returns HTTP 400, regardless of input:
> The parameter `categoryname` is mandatory.
>  
> The category is never deleted.
> h3. Expected behavior
>  * Deleting an unused category succeeds.
>  * Deleting a category referenced by a loan product returns the proper domain error ({{{}error.msg.provisioningcategory.cannot.be.deleted.it.is.already.used.in.loanproduct{}}} — "This provisioning category cannot be deleted; it is already used in a loan product"), *not* the misleading {{categoryname}} validation error.
>  * Deleting a non-existent ID returns *404 Not Found* ({{{}ProvisioningCategoryNotFoundException{}}}).
> h3. Steps to reproduce
>  # Create a category: {{POST /fineract-provider/api/v1/provisioningcategory}} with body {{{}{"categoryname":"Test","description":"x"}{}}}.
>  # Delete it: {{DELETE /fineract-provider/api/v1/provisioningcategory/\{categoryId}}} (no body).
>  # Observe HTTP 400: {{{}The parameter \{}}}categoryname` is mandatory.` The row remains in the database.
> h3. Root cause
> {{{}ProvisioningCategoryWritePlatformServiceJpaRepositoryImpl.deleteProvisioningCateogry(JsonCommand){}}}:
>  
>  
> public CommandProcessingResult deleteProvisioningCateogry(JsonCommand command) {
>     this.fromApiJsonDeserializer.validateForCreate(command.json());                  // BUG 1
>     final ProvisioningCategory provisioningCategory = ProvisioningCategory.fromJson(command); // BUG 2
>     boolean isProvisioningCategoryInUse =
>         isAnyLoanProductsAssociateWithThisProvisioningCategory(provisioningCategory.getId());
>     ...
>     this.provisioningCategoryRepository.delete(provisioningCategory);
>     return new CommandProcessingResultBuilder().withEntityId(provisioningCategory.getId()).build();
> }
> {{}}



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