# 1084 - Mobile
Req 01
### Incluir migrations para a entidade DuplicateEntityConfiguration incluindo atributo showPreRegistrationForm
Incluir novo migration com os dados a seguir:
```javascript
module.exports = {
version: '17.29.0',
module: 'Customer',
changeSets: [
{
id: '03ff0d72-0a9a-4674-add8-384527c3c203',
author: 'Eduardo Reichert',
change:
'ALTER TABLE DuplicateEntityConfiguration ADD COLUMN showPreRegistrationForm BOOLEAN;',
},
],
};
```
#### Evoluir entidade DuplicateEntityConfiguration para declarar novo atributo showPreRegistrationForm
Evoluir os seguintes arquivos para incluir este novo atributo
src/module/customer/duplicate-entity-configuration/logic/DuplicateEntityConfiguration.js
src/module/customer/duplicate-entity-configuration/logic/$DuplicateEntityConfiguration.js
src/module/customer/duplicate-entity-configuration/DuplicateEntityConfiguration.yml
---
Req 02
### Criar nova tela de formulário de pré-cadastro Customer
Criar componente de formulário, apresentado como uma nova tela, que será responsável pela pré-validação de clientes
Descrição completa da tarefa no ponto [05.02.01.03.](https://tdn.totvs.com/pages/viewpage.action?pageId=687149042#An%C3%A1liset%C3%A9cnicaparaavalida%C3%A7%C3%A3odeduplicidadepr%C3%A9viadeLeadseClientes(ME031220210747)-05.02.01.03.AplicativoMjolnir)
---
Req 03
### Evoluir telas de Customer formulário e lista
#### Evoluir formulário para que possa ser possível inicializar a entidade com dados do Navigator
Evoluir componente src/module/customer/customer/form/CustomerFormScreen.js para que a inicialização passe a considerar um possível estado recebido através do Navigator via propriedade entity. Esse estado pode ser recebido durante a criação de novos registros (ele deve ser ignorado em edições) e conterá as informações iniciais do registro que será criado (como nome, telefones, etc). O código a seguir exemplifica o comportamento esperado.
```javascript
constructor(props) {
const validationEntityState = props.entity;
const defaultEntityState = { ... };
this.state = {
entity: validationEntityState || defaultEntityState,
};
}
```
#### Evoluir lista de customers para que seja possível acessar o formulário de pré-cadastro de acordo com a configuração
Evoluir componente src/module/customer/customer/list/CustomerListScreen.js com as alterações a seguir
Quando o usuário clicar no botão de novo cliente (método goToForm), o formulário de pré-validação estiver ativado e o usuário estiver online, deve-se exibir o componente descrito acima neste documento. A exibição será por meio de uma nova tela, adicionada à stack de histórico de navegação.
A informação de que o formulário está ativado pode ser recuperado via src/module/customer/duplicate-entity-configuration/logic/DuplicateEntityConfigurationSource.js#getByEntityName passando customer como argumento, onde o atributo showPreRegistrationForm, do tipo booleano, indica se deve ser exibido ou não.
> Para recuperar se o app está online, utilizar o método mjolnir-utils/src/helper/connection/ConnectionHelper.js#isOnline
Quando o formulário de pré-validação estiver desativado ou o usuário estiver offline, o clique no botão de novo registro deve manter o comportamento atual de redirecionar para o formulário de novos registros de forma direta.
---
Req 04
### Criar nova tela de formulário de pré-cadastro Lead
Criar componente de formulário, apresentado como uma nova tela, que será responsável pela pré-validação de leads
Descrição completa da tarefa no ponto [05.02.02.03](https://tdn.totvs.com/pages/viewpage.action?pageId=687149042#An%C3%A1liset%C3%A9cnicaparaavalida%C3%A7%C3%A3odeduplicidadepr%C3%A9viadeLeadseClientes(ME031220210747)-05.02.02.03.AplicativoMjolnir)
---
Req 05
### Evoluir telas de Lead formulário e lista
#### Evoluir formulário de para que possa ser possível inicializar a entidade com dados do Navigator
Evoluir componente src/module/customer/lead/form/LeadFormScreen.js para que a inicialização passe a considerar um possível estado recebido através do Navigator via propriedade entity. Esse estado pode ser recebido durante a criação de novos registros (ele deve ser ignorado em edições) e conterá as informações iniciais do registro que será criado (como nome, telefones, etc). O código a seguir exemplifica o comportamento esperado.
```javascript
constructor(props) {
const validationEntityState = props.entity;
const defaultEntityState = { ... };
this.state = {
entity: validationEntityState || defaultEntityState,
};
}
```
#### Evoluir lista de leads para que seja possível acessar o formulário de pré-cadastro de acordo com a configuração
Evoluir componente src/module/customer/lead/list/LeadListScreen.js com as alterações a seguir
Quando o usuário clicar no botão de novo lead (método goToForm), o formulário de pré-validação estiver ativado e o usuário estiver online, deve-se exibir o componente descrito acima neste documento. A exibição será por meio de uma nova tela, adicionada à stack de histórico de navegação.
A informação de que o formulário está ativado pode ser recuperado via src/module/customer/duplicate-entity-configuration/logic/DuplicateEntityConfigurationSource.js#getByEntityName passando lead como argumento, onde o atributo showPreRegistrationForm, do tipo booleano, indica se deve ser exibido ou não.
Para recuperar se o app está online, utilizar o método mjolnir-utils/src/helper/connection/ConnectionHelper.js#isOnline
Quando o formulário de pré-validação estiver desativado ou o usuário estiver offline, o clique no botão de novo registro deve manter o comportamento atual de redirecionar para o formulário de novos registros de forma direta.
---
Req 06
### Validar se usuário esta offline em cenários que é necessário estar online
Evoluir componentes src/module/customer/customer/tabs/form/CustomerFormScreen.js e src/module/customer/lead/form/LeadFormScreen.js com as alterações a seguir
Descrição completa [05.03.01.01](https://tdn.totvs.com/pages/viewpage.action?pageId=687149042#An%C3%A1liset%C3%A9cnicaparaavalida%C3%A7%C3%A3odeduplicidadepr%C3%A9viadeLeadseClientes(ME031220210747)-05.03.01.01.AplicativoMjolnir)