oluexpert99 opened a new pull request, #6074:
URL: https://github.com/apache/fineract/pull/6074
- Downloading a bulk-import template that embeds client lookups (e.g. loan
repayment,
GET /v1/loans/repayments/downloadtemplate) returns HTTP 500 with
IllegalArgumentException: Invalid name: 'Account_IRE'S_LIMITED_181_'
when any client in the requesting
user's office hierarchy has an apostrophe in its display name (e.g.
O'Brien, IRE'S LIMITED). Excel defined
names allow only letters, digits, period and underscore.
- Root cause: AbstractWorkbookPopulator.setSanitized sanitises the
display name via a denylist regex that
enumerates characters to strip. The apostrophe (and other
Excel-illegal characters such as %, ~, ^, {, },
backtick) are not in the list, so they survive into the defined name
and POI rejects it. A denylist
inherently misses any character it does not enumerate.
- Invert the denylist into an allowlist: replace anything that is not
a valid Excel defined-name character
(Unicode letter, digit, period, underscore) with '_'. Unicode
letters/digits are kept, so accented names
behave as before; only truly invalid characters are replaced. This
fixes every Excel-illegal character in
one place, for every template that builds named ranges via
setSanitized.
- Also apply the same apostrophe substitution to the in-sheet
account-dropdown formula in
LoanRepaymentWorkbookPopulator.setRules: the
INDIRECT/CONCATENATE/SUBSTITUTE formula that reconstructs the
named-range key substituted space and parentheses but not the
apostrophe, so after the sanitiser fix the
formula key no longer matched the defined name and the cascading
dropdown silently failed to resolve for
apostrophe clients.
- Add a unit test asserting an apostrophe/space name is sanitised into
a valid Excel name without throwing and
that Unicode letters are preserved.
## Description
Describe the changes made and why they were made. (Ignore if these details
are present on the associated Apache Fineract JIRA ticket.)
## Checklist
Please make sure these boxes are checked before submitting your pull request
- thanks!
- [ ] Write the commit message as per [our
guidelines](https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#pull-requests)
- [ ] 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.
- [ ] Create/update [unit or integration
tests](https://fineract.apache.org/docs/current/#_testing) for verifying the
changes made.
- [ ] 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
- [ ] [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).
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]