Foo Developer created FINERACT-2721:
---------------------------------------

             Summary: Loan collateral quantity handling is incorrect on 
submission and modify-loan silently drops collateral changes
                 Key: FINERACT-2721
                 URL: https://issues.apache.org/jira/browse/FINERACT-2721
             Project: Apache Fineract
          Issue Type: Bug
            Reporter: Foo Developer


Two related defects in loan collateral handling (LoanCollateralAssembler / 
LoanAssemblerImpl):
# Client collateral quantity is deducted every time 
{{LoanCollateralAssembler.fromParsedJson(...)}} is called, including from code 
paths that only need to read/validate the requested collateral (e.g. loan 
application validation, schedule preview) rather than actually commit a loan. 
Because the same parsing method is reused for both read-only and write paths, 
the client's available collateral quantity can be decremented more than once 
for the same loan, and submitting a loan with linked collateral can fail with 
an "invalid amount of collateral quantity" error even though the client has 
sufficient collateral.
# In {{LoanAssemblerImpl}}, when modifying an existing loan application's 
collateral, the change-detection check is inverted:

    
possiblyModifedLoanCollateralItems.equals(loan.getLoanCollateralManagements())

   This records a "collateral changed" entry (and therefore calls 
{{loan.updateLoanCollateral(...)}}) only when the new and existing collateral 
sets are equal — i.e. when nothing actually changed — and skips it when they 
differ. As a result, the Modify Loan Application API silently fails to persist 
real collateral changes, while doing a redundant no-op update when nothing 
changed.

Proposed fix: give {{LoanCollateralAssembler.fromParsedJson}} an explicit flag 
for whether client collateral quantities should be adjusted, defaulting to 
{{false}} for read-only/validation callers and {{true}} only when actually 
submitting or updating a loan; and flip the modify-loan change-detection 
condition to {{!equals(...)}} so real collateral changes are detected and 
persisted correctly.



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

Reply via email to