Farooq Ayoade created FINERACT-2653:
---------------------------------------
Summary: 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
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)