Samer-Melhem-FOO opened a new pull request, #6531:
URL: https://github.com/apache/fineract/pull/6531

   ## Description
   
   JIRA: https://issues.apache.org/jira/browse/FINERACT-2868
   
   On PostgreSQL, a duplicate savings/fixed deposit product name or short name, 
loan product name or external ID, savings/deposit account number or external 
ID, and loan account number or external ID is reported as "Unknown data 
integrity issue" instead of the specific `duplicate.*` error.
   
   **Root cause:** the `handleDataIntegrityIssues` methods look for the 
constraint names of the old MySQL schema (`sp_unq_name`, 
`sa_account_no_UNIQUE`, `unq_name`, ...). The Liquibase changelog declares 
these columns with a plain `unique="true"`, so PostgreSQL generates its own 
names (`m_savings_product_name_key`, `m_savings_account_account_no_key`, 
`m_product_loan_name_key`, `m_loan_account_no_key`, ...) and none of the checks 
match.
   
   **Fix:** also match the PostgreSQL-generated names, the same way 
`LoanProductWritePlatformServiceJpaRepositoryImpl` already does for the short 
name (`containsDuplicateShortnameErrorForPostgreSQL`). Error codes and messages 
are unchanged; MySQL/MariaDB behaviour is unchanged.
   
   **Tests:**
   - New `SavingsProductWritePlatformServiceJpaRepositoryImplTest`: PostgreSQL 
unique violations on `m_savings_product_name_key` / 
`m_savings_product_short_name_key` now map to 
`error.msg.savingsproduct.duplicate.name` / `.duplicate.short.name` (both fail 
on `develop`), plus the existing MySQL-name case.
   - Live on a local PostgreSQL instance: on `develop`, posting the same 
savings product twice and posting a loan product with an existing product's 
name both return HTTP 403 `...unknown.data.integrity.issue`. With this change 
they return `error.msg.savingsproduct.duplicate.name`, 
`error.msg.savingsproduct.duplicate.short.name` (same short name, new name) and 
`error.msg.product.loan.duplicate.name`.
   
   ## Checklist
   
   - [x] Write the commit message as per [our 
guidelines](https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#pull-requests)
   - [x] Acknowledge that we will not review PRs that are not passing the build 
_("green")_ - it is your responsibility to get a proposed PR to pass the build, 
not primarily the project's maintainers.
   - [x] Create/update [unit or integration 
tests](https://fineract.apache.org/docs/current/#_testing) for verifying the 
changes made.
   - [x] Follow our [coding 
conventions](https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions).
   - [ ] Add required Swagger annotation and update API documentation at 
fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with 
details of any API changes (no API change)
   - [x] [This PR must not be a "code 
dump"](https://cwiki.apache.org/confluence/display/FINERACT/Pull+Request+Size+Limit).
 Large changes can be made in a branch, with assistance. Ask for help on the 
[developer mailing list](https://fineract.apache.org/#contribute).
   - [x] If merging this PR resolves a JIRA issue, I will mark that issue as 
resolved and set "Fix Version/s" appropriately.
   - [x] I followed the [AI 
Policy](https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#ai-policy).
   
   Your assigned reviewer(s) will follow our [guidelines for code 
reviews](https://cwiki.apache.org/confluence/display/FINERACT/Code+Review+Guide).
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to