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

Adam Saghy updated FINERACT-2406:
---------------------------------
    Description: 
When creating a backdated loan that undergoes charge-off followed by an 
interest payment waiver transaction, the charge-off processing requires 
creating missing accrual transactions. This triggers a database query to check 
if external ID auto-generation is enabled (calls [this 
method|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationRepositoryWrapper.java#L44-L51]).
 This query causes a premature flush of pending entities. This causes the 
interest waiver to be committed to the DB, which populates a transaction ID. 
This causes the new transaction to be treated as existing ([see 
here|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java#L1094]),
 and clears the external ID ([see 
here|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java#L1220]).
 The batch call fails on the GET transaction request (after the interest 
payment waiver) because of the missing resourceExternalId (missing [at this 
point|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java#L1055]).
 The flow:
 * Interest waiver created (id=null) → charge-off processing queries config DB 
→ auto-flush fires → waiver gets ID → reprocessing treats it as "existing" → 
external ID cleared on old one, new transaction is created, but the old one is 
returned as result → GET transaction fails due to missing resourceExternalId.

  was:
When creating a backbook loan that undergoes charge-off followed by an interest 
payment waiver transaction, the charge-off processing requires creating missing 
accrual transactions. This triggers a database query to check if external ID 
auto-generation is enabled (calls [this 
method|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationRepositoryWrapper.java#L44-L51]).
 This query causes a premature flush of pending entities. This causes the 
interest waiver to be committed to the DB, which populates a transaction ID. 
This causes the new transaction to be treated as existing ([see 
here|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java#L1094]),
 and clears the external ID ([see 
here|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java#L1220]).
 The batch call fails on the GET transaction request (after the interest 
payment waiver) because of the missing resourceExternalId (missing [at this 
point|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java#L1055]).
 The flow:
 * Interest waiver created (id=null) → charge-off processing queries config DB 
→ auto-flush fires → waiver gets ID → reprocessing treats it as "existing" → 
external ID cleared on old one, new transaction is created, but the old one is 
returned as result → GET transaction fails due to missing resourceExternalId.


> Null resourceExternalId On Backdated Loan Transactions
> ------------------------------------------------------
>
>                 Key: FINERACT-2406
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2406
>             Project: Apache Fineract
>          Issue Type: Bug
>    Affects Versions: 1.13.0
>            Reporter: Adam Saghy
>            Assignee: Adam Saghy
>            Priority: Major
>
> When creating a backdated loan that undergoes charge-off followed by an 
> interest payment waiver transaction, the charge-off processing requires 
> creating missing accrual transactions. This triggers a database query to 
> check if external ID auto-generation is enabled (calls [this 
> method|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-provider/src/main/java/org/apache/fineract/infrastructure/configuration/domain/GlobalConfigurationRepositoryWrapper.java#L44-L51]).
>  This query causes a premature flush of pending entities. This causes the 
> interest waiver to be committed to the DB, which populates a transaction ID. 
> This causes the new transaction to be treated as existing ([see 
> here|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java#L1094]),
>  and clears the external ID ([see 
> here|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java#L1220]).
>  The batch call fails on the GET transaction request (after the interest 
> payment waiver) because of the missing resourceExternalId (missing [at this 
> point|https://github.com/apache/fineract/blob/d21a1a98a29e4910b834bc74bcac3eee866d59f4/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java#L1055]).
>  The flow:
>  * Interest waiver created (id=null) → charge-off processing queries config 
> DB → auto-flush fires → waiver gets ID → reprocessing treats it as "existing" 
> → external ID cleared on old one, new transaction is created, but the old one 
> is returned as result → GET transaction fails due to missing 
> resourceExternalId.



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

Reply via email to