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

Adam Saghy updated FINERACT-2682:
---------------------------------
    Labels: beginner beginner-friendly  (was: )

> Bulk client import fails when a mandatory datatable is configured on the 
> Client entity
> --------------------------------------------------------------------------------------
>
>                 Key: FINERACT-2682
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2682
>             Project: Apache Fineract
>          Issue Type: Bug
>          Components: Client, Data Tables
>            Reporter: Foo Developer
>            Priority: Minor
>              Labels: beginner, beginner-friendly
>   Original Estimate: 5h
>  Remaining Estimate: 5h
>
> When a custom datatable is registered against the Client entity 
> ({{{}m_client{}}}) and an Entity Datatable Check makes that datatable 
> mandatory for client creation (Entity = Client, Status = Create), the Bulk 
> Client Import (Excel upload) feature fails.
> Steps to Reproduce:
>  # Admin > System > Manage Data Tables — add a new datatable for the Client 
> entity (e.g. a single-row datatable with one text column).
>  # Admin > Organization > Entity Data Table Checks — add a check for Entity = 
> Client, Status = Create, Data Table = the one created in step 1.
>  # Admin > Organization > Bulk Import — download the Bulk Client Upload 
> template (both Person and Entity legal forms).
>  # Populate the template with valid client data.
>  # Upload the file via Bulk Import.
> Expected Result: The client is created successfully, and the downloaded 
> template includes columns for the required datatable so it can be populated.
> Actual Result: The upload fails. The bulk import workbook populator and 
> import handlers have no support for datatable columns: the template doesn't 
> render columns for datatables configured on the Client entity, and the import 
> handlers have no way to validate, parse, or submit datatable data as part of 
> client creation — so a mandatory datatable check blocks every row.
> *Proposed fix (implemented, PR forthcoming):*
>  * {{ClientEntityWorkbookPopulator}} / {{ClientPersonWorkbookPopulator}} 
> render a column per datatable configured against the Client entity (including 
> datatables with no existing check, so they can be optionally populated), with 
> support for dropdown, date, datetime, and boolean column types. Columns from 
> single-row datatables are marked mandatory ({{{}*{}}}) to match Entity 
> Datatable Check requirements; multi-row (repeatable child) datatable columns 
> are always optional.
>  * {{ImportHandlerUtils}} gains helpers to parse and validate datatable 
> columns from the workbook, and {{validateRequiredDatatables()}} skips 
> multi-row datatables since they represent repeatable child data, not a single 
> mandatory value.
>  * {{ClientEntityImportHandler}} / {{ClientPersonImportHandler}} submit 
> parsed datatable data as part of the client-create command, with clearer 
> error reporting when validation fails.
>  * {{DatatableData}} gains an {{isMultiRow()}} flag, threaded through 
> {{DatatableReadServiceImpl}} (and {{{}ReadSurveyServiceImpl{}}}, which shares 
> the same {{DatatableData.create(...)}} factory).
> Includes unit tests for single-row vs. multi-row {{DatatableData}} handling.
> *Affected APIs:*
>  * {{GET 
> /v1/clients/downloadtemplate?legalFormType=CLIENTS_PERSON|CLIENTS_ENTITY}}
>  * {{POST 
> /v1/clients/uploadtemplate?legalFormType=CLIENTS_PERSON|CLIENTS_ENTITY}}
>  * {{{}GET /v1/imports{}}}, {{GET /v1/imports/downloadOutputTemplate}}



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

Reply via email to