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]

Reply via email to