# 1. Melhoria Importação de Cadastro



# PROC001 Melhoria importação de produtos

<table border="1" id="bkmrk-%C2%A0-projeto%2Fsistema%3Age" style="border-collapse: collapse; width: 100.123%; height: 68px;"><tbody><tr style="border-style: solid;"><td rowspan="3" style="width: 26.6667%; height: 68px; border-color: black; border-top-style: hidden; border-left-style: hidden; border-bottom-style: hidden;">  
[![image-1762776253666.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/scaled-1680-/image-1762776253666.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-11/image-1762776253666.png)

</td><td style="width: 49.9999%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Projeto/Sistema:**</span>  
<span style="color: #000000;">GerencieAqui</span></td><td class="align-center" style="width: 23.3333%; height: 10px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do *Template:***</span>  
<span style="color: #000000;">1.2</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Processo:**</span>  
PROC001 Melhoria importação de produtos</td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Versão do Documento:**</span>  
<span style="color: #000000;">1.0</span></td></tr><tr style="border-style: solid;"><td style="width: 49.9999%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Responsável(eis):** </span>  
<span style="color: #000000;">Luís Leite</span></td><td class="align-center" style="width: 23.3333%; height: 29px; border-color: black; border-style: solid;"><span style="color: #000000;">**Data:** </span>

<span style="color: #000000;">30/03/2026</span>

</td></tr></tbody></table>

##### <span style="color: #000000;">**1. Introdução**</span>

**Este processo visa exemplificar a melhoria para a importação de cadastro de produtos.**

##### <span style="color: #000000;">**2. Processo**</span>

<table cellpadding="9" cellspacing="0" id="bkmrk-processo-envolvidos-" width="100%"><tbody><tr valign="top"><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Processo**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">**Envolvidos**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Entrada**</span>

</td><td bgcolor="#acb9ca" style="border-style: solid; border-color: black;" width="27%"><span style="font-size: small; color: #000000;">**Dados de Saída**</span>

</td></tr><tr valign="top"><td style="border-style: solid; border-color: black;" width="27%">PROC001 Melhoria importação de produtos

</td><td style="border-style: solid; border-color: black;" width="19%"><span style="font-size: small; color: #000000;">-</span>

</td><td style="border-style: solid; border-color: black;" width="27%">Arquivo XLSX ou XML

</td><td style="border-style: solid; border-color: black;" width="27%">Dados inseridos ou atualizados em banco

</td></tr></tbody></table>

#### **Especificação Funcional**

- - - - - -

#### **PROC001 Melhoria importação de produtos:**

##### ***Protótipo de Tela:***

[![image-1774873820873.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774873820873.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774873820873.png)

*Imagem I - Exemplo de nova Dialog de guia para importação de Produtos.*

[![image-1774875093115.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774875093115.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774875093115.png)

*Imagem II- Exemplo de nova Dialog.*

[![image-1774887199474.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774887199474.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774887199474.png)

*Imagem III - Importação de planilha.*

[![image-1774887979981.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774887979981.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774887979981.png)

*Imagem IV - Exemplo de nova Dialog de importação.*

[![image-1775665173479.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-04/scaled-1680-/image-1775665173479.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-04/image-1775665173479.png)

*Imagem V - Progresso importação.*

[![image-1774888006824.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774888006824.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774888006824.png)

*Imagem VI - Tela de resultado.*

##### ***Descrição dos Campos:***

<table border="1" cellpadding="7" cellspacing="0" id="bkmrk-campo-tipo-tamanho-o" style="width: 810px; height: 785px;"><tbody><tr style="height: 35px;" valign="top"><td bgcolor="#acb9ca" style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">**Campo**</span>

</td><td bgcolor="#acb9ca" style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tipo**</span>

</td><td bgcolor="#acb9ca" style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">**Tamanho**</span>

</td><td bgcolor="#acb9ca" style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">**Obrig. ?**</span>

</td><td bgcolor="#acb9ca" style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">**Máscara**</span>

</td><td bgcolor="#acb9ca" style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">**Observações**</span>

</td></tr><tr style="height: 35px;"><td colspan="6" style="width: 810px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">*Dialog* inicial de importação</span>

</td></tr><tr style="height: 57px;"><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">\[Baixar Planilha Modelo\]</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Link</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr style="height: 35px;"><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Fechar</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr style="height: 35px;"><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Entendi</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr style="height: 35px;"><td colspan="6" style="width: 810px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">*Dialog* de importação</span>

</td></tr><tr style="height: 57px;"><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Resolução de conflitos</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Check</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr style="height: 57px;"><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Planilha com Cabeçalho</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Botão</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;"> -</span>

</td><td style="width: 111px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;"> -</span>

</td><td style="width: 159px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td></tr><tr style="height: 35px;"><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Arquivo XLSX/XML</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Botão</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">- </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> -</span>

</td><td style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> -</span>

</td><td style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td></tr><tr style="height: 35px;"><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Coluna da Planilha</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">*Column Header*</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td></tr><tr style="height: 80px;"><td style="width: 135px; height: 80px; border-style: solid; border-color: black;"><span style="color: #000000;">Campo do Sistema</span>

</td><td style="width: 135px; height: 80px; border-style: solid; border-color: black;"><span style="color: #000000;">*Column Header*</span>

</td><td style="width: 135px; height: 80px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 80px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 80px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 80px; border-style: solid; border-color: black;"><span style="color: #000000;">Deve ser *dropdown* com campo busca</span>

</td></tr><tr style="height: 35px;"><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Fechar</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td></tr><tr style="height: 35px;"><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Importar</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td></tr><tr style="height: 35px;"><td colspan="6" style="width: 810px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">*Dialog* Progresso</span>

</td></tr><tr style="height: 57px;"><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Cancelar Importação</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Botão</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr style="height: 35px;"><td colspan="6" style="width: 810px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">*Dialog* Progresso</span>

</td></tr><tr style="height: 57px;"><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Baixar relatório de Erros</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">Botão</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 135px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 111px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td><td style="width: 159px; height: 57px; border-style: solid; border-color: black;"><span style="color: #000000;">-</span>

</td></tr><tr style="height: 35px;"><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;">Fechar</span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 135px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 111px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td><td style="width: 159px; height: 35px; border-style: solid; border-color: black;"><span style="color: #000000;"> </span>

</td></tr></tbody></table>

##### ***Regras de Interface:***

<span style="color: #000000;">**1. Baixar Planilha Modelo:**</span> Executa o download do modelo para guia de importação.  
<span style="color: #000000;">***2.***</span>**<span style="color: #000000;"> Resolução de conflitos:</span>** Deve conter as seguintes opções "Atualizar cadastro existente"; "Ignorar duplicados" e "Gerar erro e bloquear".  
<span style="color: #000000;">**3. Planilha com Cabeçalho:**</span> Por padrão deve vir como [![image-1774447263799.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774447263799.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774447263799.png), o evento de clique deve alterar o botão para[![image-1774447287695.png](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/scaled-1680-/image-1774447287695.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2026-03/image-1774447287695.png)  
  
**<span style="color: #000000;">4. Arquivo XLSX/XML:</span>** Ao importar o arquivo deve gerar o *Loading* da importação do arquivo. Caso seja possível a importação, retornar o popup "Arquivo importado". Caso não seja possível, retornar a mensagem de erro "Não foi possível importar, verifique o arquivo".  
<span style="color: #000000;">**5. Fechar (Imagem IV):**</span> Deve encerrar a tela sem modificações em base, apenas memoria.  
**<span style="color: #000000;">6. Importar:</span>** Se possível importar, deve ir para a *Imagem V - Progresso importação.* **7.<span style="color: #000000;">Campo do Sistema</span>:** O campo para o vínculo entre campo do sistema e coluna de vínculo da planilha deve ser um *Dropdown* com campo para busca, comportamento já existente no componente atual*.* Deve conter as opções já existentes com a adição do "Tipo de Cadastro". Os campos obrigatórios devem ser listados primeiro:

<table border="1" class="align-center" id="bkmrk-op%C3%A7%C3%A3o-obrigatoriedad" style="height: 673px; width: 427px;"><tbody><tr style="height: 29px;"><td style="height: 29px; width: 230px;">**Opção**</td><td style="height: 29px; width: 197px;">**Obrigatoriedade**</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Ignorar ou Escolha o campo</td><td style="height: 29px; width: 197px;">-</td></tr><tr style="height: 29px;"><td style="width: 230px; height: 29px;">Tipo de Cadastro\*</td><td style="width: 197px; height: 29px;">S</td></tr><tr style="height: 30px;"><td style="width: 230px; height: 30px;">Cód. de Barras/GTIN</td><td style="height: 30px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="width: 230px; height: 29px;">Cód. de Referência/SKU</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="width: 230px; height: 29px;">Nome\*</td><td style="height: 29px; width: 197px;">S</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Unid. Medida</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Categoria</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Marca</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 230px;">CFOP Padrão</td><td style="height: 30px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Largura</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 30px;"><td style="height: 30px; width: 230px;">Altura</td><td style="height: 30px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="width: 230px; height: 29px;">Comprimento</td><td style="width: 197px; height: 29px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Peso</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Valor de Custo</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Margem de Venda</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 32px;"><td style="width: 230px; height: 32px;">Valor de Venda</td><td style="width: 197px; height: 32px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Aprox. Est.</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;"><span style="color: #000000;">Saldo de Estoque</span></td><td style="height: 29px; width: 197px;"><span style="color: #ff0000;">N</span></td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Venda Garçom</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="height: 29px; width: 230px;">Venda Touch</td><td style="height: 29px; width: 197px;">N</td></tr><tr style="height: 29px;"><td style="width: 230px; height: 29px;">NCM</td><td style="width: 197px; height: 29px;">N</td></tr><tr style="height: 29px;"><td style="width: 230px; height: 29px;">CEST</td><td style="width: 197px; height: 29px;">N</td></tr></tbody></table>

**8. Importar:** Se possível iniciar a importação, a tela deve ser finalizada e deve ser dado sequência para a *Dialog* da Imagem V - Progresso importação.  
Essa tela deve mostrar o progresso tanto em percentual quanto de registros sendo salvos.

**8.1** Caso **não seja possível a importação,** deve exibir em tela a mensagem:   
"Erro  
Valide a estrutura do arquivo a ser importado"

<span style="text-decoration: line-through;">***9.* Cancelar Importação:** A ação deve abrir uma tela de confirmação pro usuário "Deseja interromper o processo de importação?" caso o usuário clique em 'Não', deve ser fechada a tela de confirmação e o processo continuado. Caso clique em 'Sim' a tela de importação deve ser encerrada.</span>(função não existe atualmente, ao finalizar a importação continua em segundo plano)  
**10. Tela de resultado:** Deve exibir a quantidade de registros no arquivo, importados com sucesso e registros com erro. Caso houverem erros exibir a mensagem:

> Alguns registros não puderam ser importados. Verifique o relatório para mais detalhes.

<div id="bkmrk-10.1-baixar-relat%C3%B3ri"><div><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg><div>**10.1 Baixar relatório de Erros:** Deve ser renderizado apenas se existirem erros na importação. Mais detalhes nas regras de negócio.</div></div></div>#####  

##### ***Regras de Negócio:***

**1. Baixar Planilha Modelo:** Deve fazer o download de uma planilha XLSX contendo a coluna com todos os campos disponíveis para vínculo no sistema, conforme Tabela I - Tabela de campos para vínculo.  
**2. Arquivo XLSX/XML:** Deve validar o formato do arquivo, se é XLSX ou XML e se o arquivo não supera **2MB** . Caso for um formato diferente desses, não dar sequência na tentativa de importação.  
**3. Tipo de Cadastro\*:** Servirá pra marcar caso um item seja "1-Produto" ou "2-Serviço".  
**4. Importar:** Validar se os campos obrigatórios do sistema possuem vínculo com a coluna da planilha. Se estiverem vinculados, deve ser validado a "**Resolução de conflitos"**

- Se for "Atualizar cadastro existente", novos registros devem gerar uma Inserção na base de dados. Registros existentes devem ser Atualizados. O Critério para isso é o Código de Barras, caso não tiver, considerar o SKU, caso contrário não será feito validação e sempre gerar adição nova em banco.
- Se for "Ignorar duplicados", os registros conflitantes/já existentes na base de dados devem ser ignorados no momento da importação dos registros da planilha.
- Se "Gerar erro e bloquear", quando um registro já existir em banco, a importação deve ser interrompida, não realizando mais inserções no banco.

<span style="color: #000000;">**5. Campos do Sistema-Saldo de Estoque:** Caso seja informado uma linha de registro como Serviço e ela possua valor acima de zero no Saldo de Estoque, deve ser validado para não registrar esse saldo no cadastro respectivo. Apesar da importação deve ser informado no relatório de erros o informe da não permissão de saldo de estoque para serviço.</span>

**6.** Deve ser gerado um log de registro da importação, contendo dados básicos 'data/hora', 'modulo', 'Usuário' e 'Descrição'. Inserir a descrição como "Realizada importação de planilha {nome\_arquivo} de produtos com total de {numero\_total\_registros}, importados com sucesso: {numero\_total\_sucesso}, com erro: {numero\_total\_erro}"

**7. Cancelar Importação:** <span style="text-decoration: line-through;">A ação deve interromper a importação até que o usuário confirme alguma ação. Caso o usuário confirme o cancelamento da importação, deve ser interrompida as inserções e alterações na base de dados. </span>(função não existe atualmente, ao finalizar a importação continua em segundo plano)

**8. Baixar relatório de Erros -** Esse relatório deverá conter:

- - - número da linha na planilha
        - campo que apresentou erro
        - descrição do erro encontrado

<table border="1" class="align-center" id="bkmrk-linha-campo-erro-15-" style="height: 58px;"><tbody><tr style="height: 29px;"><td style="border-style: solid; border-color: black; height: 29px; width: 57px;"><span style="color: #000000;">**Linha**</span></td><td style="border-style: solid; border-color: black; height: 29px; width: 117px;"><span style="color: #000000;">**Campo**</span></td><td style="border-style: solid; border-color: black; height: 29px; width: 121px;"><span style="color: #000000;">**Erro**</span></td></tr><tr style="height: 29px;"><td style="border-style: solid; border-color: black; height: 29px; width: 57px;">15</td><td style="border-style: solid; border-color: black; height: 29px; width: 117px;">Tipo de Cadastro</td><td style="border-style: solid; border-color: black; height: 29px; width: 121px;">Formato inválido</td></tr><tr><td style="border-style: solid; border-color: black; width: 57px;">31</td><td style="border-style: solid; border-color: black; width: 117px;">Saldo de Estoque</td><td style="border-style: solid; border-color: black; width: 121px;">Não permitido para serviços</td></tr></tbody></table>

##### ***Questões Técnicas:***

**1.** Tabela onde deve ser inserido ou alterado o cliente: 'produto'.

**2. Baixar Planilha Modelo:** Planilha de padrão XLSX, deve conter cabeçalho com os campos para vínculo.

**3. Baixar relatório de Erros:** Relatório temporário gerado por HTML, deve listar apenas as rejeições e a linha onde ocorreu a rejeição da importação.

©SOFTEN SISTEMAS 2026

