# Gerencie Vendas

# Nova Página

<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;">  
 ![Softensistemas Logo](https://www.softensistemas.com.br/assets/img/logo.webp)

</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;">MVP Gerencie Vendas</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>  
<span style="color: #000000;">Sincronização de tabelas de complementos e variações</span></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;">Jalile Cornachioni</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;">26/08/2025</span>

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

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

Hoje, a sincronização de produtos do **Gerencie Aqui (GA – retaguarda)** para o **Gerencie Vendas (GV – mobile)** considera apenas a tabela principal de produtos, o que impede o usuário do app de selecionar corretamente **variações (grades)** e **complementos**.  
Além disso, a busca via **código de barras** e a organização da listagem por **categorias** não atendem plenamente às necessidades de **varejo, atacado e food-service**.

O objetivo desta melhoria é:

1. Ampliar a sincronização GA → GV para incluir **ProdutoVariacaoItem** e **ProdutoComplemento**.
2. Permitir no GV a seleção de variações e complementos no fluxo de venda.
3. Garantir a volta das vendas GV → GA com consistência.
4. Viabilizar emissão de documentos fiscais no GA a partir das vendas sincronizadas.
5. Registrar logs completos, tratar erros e exceções.
6. Ajustar usabilidade: busca, código de barras e listagem por categorias.

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

[![Fluxograma - adaptação totem.jpg](https://docs.softensistemas.com.br/uploads/images/gallery/2025-08/scaled-1680-/fluxograma-adaptacao-totem.jpg)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-08/fluxograma-adaptacao-totem.jpg)

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

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

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

</td></tr><tr><td style="width: 27%;">Sincronização de Produtos (GA → GV)</td><td style="width: 19%;">GA (Retaguarda), GV (Mobile)</td><td style="width: 27%;">Produtos, Variações, Complementos</td><td style="width: 27%;">Tabelas locais do GV atualizadas, Logs</td></tr><tr><td style="width: 27%;">Venda no GV (Mobile)</td><td style="width: 19%;">Usuário (Vendedor), GV</td><td style="width: 27%;">Produto selecionado, variação, complementos</td><td style="width: 27%;">Pedido registrado no GV</td></tr><tr><td style="width: 27%;">Sincronização de Vendas (GV → GA)</td><td style="width: 19%;">GV, GA</td><td style="width: 27%;">Pedidos com produtos + variações + complementos</td><td style="width: 27%;">Pedidos integrados no GA, Logs</td></tr><tr><td style="width: 27%;">Emissão Fiscal (GA)</td><td style="width: 19%;">GA, SEFAZ</td><td style="width: 27%;">Pedidos recebidos</td><td style="width: 27%;">NF-e ou NFC-e emitidas, Logs</td></tr><tr><td style="width: 27%;">Cenários de Erro e Exceção</td><td style="width: 19%;">GA, GV</td><td style="width: 27%;">Erros de sincronização, inconsistências</td><td style="width: 27%;">Mensagens ao usuário, Logs, Marcações de inconsistência</td></tr></tbody></table>

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

- - - - - -

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

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

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

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

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

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

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

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

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Campo</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">100</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;">-

</td><td style="width: 201px; border-style: solid; border-color: black;">-

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

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

***1. Exemplo de regras do campo:*** Descrição das regras de interface ou de tela. Eventos em campos ou botões, bloqueios ou desbloqueios e outras alterações.

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

**1. Sincronização de Produtos (GA → GV)**

- Produtos simples, com variação e com complemento devem ser enviados.
- Alterações/exclusões no GA devem refletir no GV.
- Logs devem registrar quantidade enviada, recebida e erros (ex.: produto sem NCM, variação sem item).

**2. Venda no GV (Mobile)**

- Usuário deve conseguir vender produtos simples, com variação e com complementos.
- Seleção de variação deve ser obrigatória quando o produto exigir.
- Complementos devem ser opcionais.
- Código de barras:
- - Item principal → abre seleção de variação.
    - Variação → identifica direto.
    - Código duplicado → lista opções.
    - Código inexistente → mensagem “Produto não encontrado” e registro em log.

**3. Sincronização de Vendas (GV → GA)**

- Todos os pedidos devem ser integrados sem perda de dados.
- Pedido no GA deve refletir fielmente produto + variação + complemento.
- Alterações no GA (quantidade, forma de pagamento, preço) devem ser aceitas.
- Logs devem registrar número de pedidos recebidos, integrados e rejeitados.

**4. Emissão Fiscal (GA)**

- Deve ser possível gerar NF-e e NFC-e a partir dos pedidos recebidos.
- Dados fiscais devem respeitar CFOP, NCM, CST/CSOSN e tributações.
- Em caso de rejeição (ex.: falta de NCM), sistema deve permitir correção e reemissão.
- Logs devem registrar emissões, rejeições e correções.

**5. Cenários de Erro e Exceção**

- Produto inativo → não deve aparecer no GV.
- Venda offline no GV → deve ser armazenada localmente e enviada quando houver rede.
- Pedido duplicado → não deve ser integrado em duplicidade no GA.
- Pedido com valor divergente (preço atualizado no GA após venda) → pedido deve ser recebido e marcado como “inconsistente”.

- 

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

**GA (Retaguarda)**

- Ajustar API de sincronização de produtos para enviar também:
    
    
    - `ProdutoVariacaoItem`
    - `ProdutoComplemento`
- Incluir no payload de produto:
    
    
    - Código de barras do item principal.
    - Código de barras da variação (quando existir).
- Garantir que exclusões, inativação ou alterações em produtos/variações/complementos sejam refletidas na próxima sincronização.

**GV (Mobile)**

- Adaptar sincronização local para gravar produtos + variações + complementos.
- Ajustar listagem de produtos por categorias:
    
    
    - Exibir **apenas itens principais**.
    - Variações devem ser exibidas **após seleção do item principal**.
    - Complementos devem aparecer como **etapa opcional posterior**.
- Implementar busca inteligente:
    
    
    - Busca por nome do produto.
    - Busca por variação (ex.: “camiseta azul P”).
- Implementar leitura de código de barras:
    
    
    - Se bipar código do **item principal** → abrir seleção de variação.
    - Se bipar código da **variação** → lançar direto no carrinho.
    - Se código for duplicado → exibir lista de opções.

**GA (Recebimento das Vendas)**

- Ajustar integração para receber pedidos com:
    
    
    - Produto principal.
    - Variação selecionada.
    - Complementos escolhidos.
- Permitir edição no pedido (quantidade, forma de pagamento, preço).
- Gerar documentos fiscais:
    
    
    - **NF-e** (para atacado/distribuição).
    - **NFC-e** (para varejo/food-service).
- Implementar fila de reenvio em caso de falha na SEFAZ.

##### ***Cenários de Teste***

1. **Food-Service:** Pizza Média + borda recheada → venda no GV, sincronização, edição no GA, emissão de NFC-e.
2. **Atacado:** Cerveja pack 12 unid → venda no GV, sincronização, alteração de preço no GA, emissão de NF-e.
3. **Varejo:** Camiseta Polo G Azul → venda no GV, sincronização, alteração de forma de pagamento no GA, emissão de NFC-e.
4. **Erros:**
    
    
    1. Produto sem NCM → rejeição fiscal.
    2. Código de barras duplicado → exibir lista de escolha.
    3. Venda offline → reenvio após reconexão.

©SOFTEN SISTEMAS 2025# Modo de Venda



# Configuração dos modos de vendas

<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;">  
 ![Softensistemas Logo](https://www.softensistemas.com.br/assets/img/logo.webp)

</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;">GERENCIAMENTO DE PROJETOS</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>  
Configuração dos modos de vendas</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.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;">**Responsável(eis):** </span>  
<span style="color: #000000;">Jalile Cornachioni</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;">05/09/2025</span>

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

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

O aplicativo de vendas mobile **GV** será reformulado para atender diferentes cenários de operação comercial, desde representantes externos até pontos de venda em mercados, feiras e quiosques. Para isso, o sistema passará a contar com **modos de venda específicos**, que se adaptam ao perfil de cada cliente, e com a possibilidade de ativar o **Modo Ficha**, recurso que permite a impressão de fichas individuais por produto para retirada posterior.  
Essa evolução tem como objetivo oferecer mais flexibilidade, padronização dos fluxos e atender tanto operações assistidas por vendedores quanto modelos de autoatendimento.

***Comportamento Atual***

Atualmente, o app GV possui um fluxo único de vendas, voltado ao uso por representantes comerciais. Nesse modelo, o usuário precisa selecionar cliente e vendedor, buscar produtos por listagem ou código de barras, montar o carrinho, aplicar descontos e finalizar a venda com diferentes opções de pagamento.  
Esse comportamento não atende adequadamente cenários como **mini-mercados, feiras, eventos, quiosques ou autoatendimento**, onde a jornada do usuário precisa ser mais simples, rápida e sem etapas adicionais. Além disso, não existe a funcionalidade de emissão de **fichas individuais por produto**, recurso essencial em operações de consumo imediato, como bares, lanchonetes e eventos.

***Comportamento Esperado***

Com a reformulação, o app GV contará com três **modos de venda configuráveis**:

1. **Representante** – fluxo completo, com seleção de cliente e vendedor, carrinho editável, descontos e múltiplas formas de pagamento.
2. **PDV** – fluxo rápido para mercados de condomínio ou pequenos varejos, sem cliente, com inclusão de produtos apenas via código de barras, pagamento direto no TEF e sem divisão de pagamento.
3. **Touch (Catálogo/Autoatendimento)** – fluxo visual em grade, ideal para quiosques e autoatendimento, sem cliente e sem descontos, com tela de descanso personalizada.

Além disso, o **Modo Ficha** poderá ser ativado em qualquer fluxo, permitindo a emissão de fichas individuais por produto junto com o comprovante, atendendo especialmente operações de feiras, eventos e quiosques.

O resultado esperado é um aplicativo mais **versátil, escalável e alinhado às diferentes necessidades de operação dos clientes**, permitindo maior adoção e competitividade do produto.

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

[![Fluxo config modo venda.jpg](https://docs.softensistemas.com.br/uploads/images/gallery/2025-09/scaled-1680-/fluxo-config-modo-venda.jpg)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-09/fluxo-config-modo-venda.jpg)

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

- - - - - -

##### [***Protótipo de Tela:*** ](https://www.figma.com/design/CA2GjWd7CVf0Lmn0K14AYo/Fluxo-de-Vendas---Gerencie-Vendas?node-id=2544-1924&t=IYsafmZLJAc1emR7-0)

[![Android.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-09/scaled-1680-/android.png) ](https://docs.softensistemas.com.br/uploads/images/gallery/2025-09/android.png)[![Android (1).png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-09/scaled-1680-/android-1.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-09/android-1.png)

- - - - - -

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

##### Configurações do App GV

***1. Modo de Venda (obrigatório)***

Define o fluxo principal que será carregado ao abrir o app:

- **Venda Representante (Valor default)**
- **Venda PDV**
- **Venda Touch**

*(No caso de feiras/eventos, o administrador escolhe Representante ou Touch, dependendo da operação)*

- - - - - -

***2. Modo Ficha (opcional, pode ser combinado)***

- **Ativo:** Após o pagamento, além do comprovante, o sistema imprime **fichas individuais por produto**.
- **Inativo:** Emite apenas comprovante padrão.

- - - - - -

***3.** **Venda /Orçamento***

- Define o vendedor padrão do dispositivo (necessário sincronizar vendedores do GA para selecioar um vendedor padrão)
- Define o percentual máximo de desconto permitido

- - - - - -

***4. Parâmetros do sistema***

*Define configurações que serão utilizadas durante a venda*

- Alterar vendedor na venda/orçamento?
- Bloqueia clientes de outros vendedores?
- Bloqueia descontos na venda?
- Altera preço de venda dos itens?
- Preenchimento numérico reverso (moeda)?
- Bloqueia acesso a Dashboard?

- - - - - -

***5.** **Métodos de Pagamento Permitidos (opcional por fluxo)***

- Dinheiro
- Cartão (TEF integrado)
- PIX
- Boleto
- Outros
- **Dividir pagamento (on/off)?**
- **Integração com POS Smart?**

*(Exemplo: no PDV de mercadinho → só cartão TEF; no Representante → todos; no Touch → só cartão/PIX)*

- - - - - -

<span style="text-decoration: line-through;">***6. Configuração de Impressão (por dispositivo)***</span>

- <span style="text-decoration: line-through;">**Impressora ativa:** Sim/Não</span>
- <span style="text-decoration: line-through;">**Tipo de impressão:**</span>
    
    
    - <span style="text-decoration: line-through;">Cupom fiscal</span>
    - <span style="text-decoration: line-through;">Comprovante simples</span>
    - <span style="text-decoration: line-through;">Fichas individuais</span>
- <span style="text-decoration: line-through;">**Número de vias:** 1, 2, etc.</span>

- - - - - -

***7. Tela de Descanso***

- **Ativar tela de descanso:** Sim/Não
    
    
    - Com a tela de descanso **desabilitada**, o comportamento padrão deve ser usar o logo do sistema GerencieVendas.
    - Com a tela de descanso **habilitada**, o comportamento da tela de descanso pode aceitar 3 opções.
- **Imagem genérica:** Uma imagem pré-selecionada pelo sistema - Não abre o upload de arquivos.
- **Logo da empresa:** Arquivo .SVG com o logo da Empresa do Cliente. Abre o upload de arquivos.
- **Anúncio/promocional:** Abre o upload de arquivos - Arquivo .JPEG/.PNG
- **Banner:** Com o formato do dispositivo. Abre o upload de arquivos.

*(Ex.: PDV e Touch voltam sempre para tela de descanso; Representante não precisa.)*

##### Configurações do App GV

**Modo venda** = representante  
**Modo ficha** = desativado  
**Vendedor padrão para o aparelho** = vazio  
**Percentual max de desconto** = zerado para a situação em que o vendedor não pode aplicar desconto e diferente de zero quando ele puder dar desconto na venda.

**Permissões referentes a ações do sistema**

- Alterar vendedor na venda/orçamento = desativado
- Bloqueia clientes de outros vendedores = ativado
- Bloqueia descontos na venda = ativado
- Alterar preço de venda dos itens = desativado
- Preenchimento numérico reverso (moeda) = desativado
- Bloqueia acesso a Dashboard = desativado

**Métodos de Pagamento**  
Selecione os métodos de pagamento permitidos:

- Dinheiro = ativo
- Cartão (TEF) = ativo
- Outros = ativo
- PIX = ativo
- Boleto = ativo

**Permitir divisão de pagamento**  
Permite que o pagamento seja dividido em múltiplas formas.

- Ativado

**Integração com POS Smart**  
Configurações de pagamento terceiros:

- Receber PIX via integração POS = desativado
- Receber via Integração TEF = desativado
- Não mostrar Teclado numérico virtual = desativado

**Tela de descans**o = não

##### ***Critérios de Aceitação***

- **Dado** que o modo de venda configurado é **Representante**,  
    **quando** acessar as configurações,  
    **então** o sistema deve **ocultar apenas a configuração “Tela de descanso”** e **exibir todas as demais**.
- **Dado** que o modo de venda configurado é **PDV**,  
    **quando** acessar as configurações,  
    **então** o sistema deve **ocultar a configuração “Percentual de desconto”**, **ocultar as “Parametrizações do sistema”** e **exibir a configuração “Tela de descanso”**.
- **Dado** que o modo de venda configurado é **Touch**,  
    **quando** acessar as configurações,  
    **então** o sistema deve **ocultar a configuração “Percentual de desconto”**, **ocultar as “Parametrizações do sistema”** e **exibir a configuração “Tela de descanso”**.
- **Dado** que o usuário altera o modo de venda,  
    **quando** salvar a configuração,  
    **então** o backend deve persistir a configuração correta e o frontend deve refletir automaticamente quais opções devem ser exibidas ou ocultas.

- - - - - -

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

***1. Modo Representante***

- O sistema **deve** exigir a seleção de **cliente** e **vendedor** antes de iniciar a venda.
- O sistema **deve** permitir buscar produtos por **listagem com categorias** ou por **código de barras**.
- O sistema **deve** permitir edição de quantidade, preço unitário, desconto e acréscimo no carrinho.
- O sistema **deve** apresentar uma **tela de resumo da venda** antes da finalização.
- O sistema **deve** permitir **divisão do pagamento em múltiplas formas** (ex.: parte PIX, parte cartão).
- O sistema **não deve** permitir avançar para o pagamento sem seleção de cliente.
- O sistema **deve** emitir **comprovante impresso** após o pagamento.

***2. Modo PDV***

- O sistema **deve** iniciar na **tela de descanso**.
- O sistema **deve** incluir automaticamente um produto no carrinho ao bipar um código de barras.
- O sistema **não deve** permitir inclusão de produtos manualmente por listagem ou pesquisa.
- O sistema **não deve** permitir aplicação de desconto ou acréscimo.
- O sistema **não deve** permitir divisão do pagamento.
- O sistema **deve** direcionar o usuário para o fluxo de pagamento TEF após finalização.
- O sistema **deve** exibir status de pagamento (**sucesso/falha**) após retorno da maquininha.
- O sistema **deve** imprimir o comprovante e retornar automaticamente para a tela de descanso.

***3. Modo Touch (Catálogo / Autoatendimento)***

- O sistema **deve** iniciar na **tela de descanso** configurada (imagem genérica, logo ou publicidade).
- O sistema **deve** permitir navegação de produtos em **grade** com categorias exibidas em carrossel (superior ou lateral).
- O sistema **deve** permitir inclusão de itens no carrinho por toque.
- O sistema **não deve** permitir busca por código de barras, aplicação de desconto ou acréscimo.
- O sistema **não deve** permitir divisão do pagamento.
- O sistema **deve** direcionar o cliente ao pagamento após seleção dos itens.
- O sistema **deve** retornar à tela de descanso automaticamente após a finalização da venda.

***4. Modo Ficha (configuração aplicável a qualquer fluxo)***

- - O sistema **deve**, quando ativo, emitir **fichas individuais por produto** junto ao comprovante de venda.
    - O sistema **deve** gerar uma ficha para cada unidade do produto vendido.
        
        
        - Ex.: 3 refrigerantes → 3 fichas.
    - O sistema **deve** incluir em cada ficha:
        
        
        - Nome do produto
        - Quantidade (sempre 1)
        - Código/identificador do pedido
        - QR Code ou código de barras para conferência (quando configurado).
    - O sistema **não deve** permitir finalizar o pedido sem que todas as fichas sejam impressas corretamente.
    - O sistema **deve** retornar automaticamente para o fluxo normal após a impressão das fichas.

- - - - - -

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

***1. Descrição de mudanças na base de dados, ou integração de API, ou arquivo que deva ser gerado.***

©SOFTEN SISTEMAS 2025

# Sincronizar tabela de complementos e variações de produtos

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

Hoje, a sincronização de produtos do **Gerencie Aqui (GA – retaguarda)** para o **Gerencie Vendas (GV – mobile)** considera apenas a tabela principal de produtos, o que impede o usuário do app de selecionar **variações (grades)** e/ou **complementos**.

O objetivo desta melhoria é: Ampliar a sincronização GA → GV para incluir as tabelas **ProdutoVariacaoItem** e **ProdutoComplemento** na sincronização e garantir que a busca via código de barras e listagem por categorias sejam aprimoradas para atender às necessidades específicas dos segmentos de varejo, atacado e food-service.

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

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

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

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

</td></tr><tr><td style="width: 27%;">Sincronização de Produtos (GA → GV)</td><td style="width: 19%;">GA (Retaguarda), GV (Mobile)</td><td style="width: 27%;">Produtos, Variações, Complementos</td><td style="width: 27%;">Tabelas locais do GV atualizadas, Logs</td></tr></tbody></table>

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

- - - - - -

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

*Não há*

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

**1. Sincronização de Produtos (GA → GV)**

- Produtos simples, com variação e com complemento devem ser enviados.
- Alterações/exclusões no GA devem refletir no GV.
- Logs devem registrar quantidade enviada, recebida e erros (ex.: produto sem NCM, variação sem item).


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

**GA (Retaguarda)**

- Ajustar API de sincronização de produtos para enviar também:
    
    
    - `ProdutoVariacaoItem`
    - `ProdutoComplemento`
- Incluir no payload de produto:
    
    
    - Código de barras do item principal.
    - Código de barras da variação (quando existir).
- Garantir que exclusões, inativação ou alterações em produtos/variações/complementos sejam refletidas na próxima sincronização.

GV (Mobile)

- Adaptar sincronização local para gravar produtos + variações + complementos.
- Implementar leitura de código de barras da variação

1. 

©SOFTEN SISTEMAS 2025

# Incluir complementos durante o fluxo da venda

<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;">  
 ![Softensistemas Logo](https://www.softensistemas.com.br/assets/img/logo.webp)

</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;">MVP Gerencie Vendas</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>  
<span style="color: #000000;">Sincronização de tabelas de complementos e variações</span></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;">Jalile Cornachioni</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;">26/08/2025</span>

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

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

O objetivo desta melhoria é: Permitir no GV a seleção de variações e complementos no fluxo de venda.

**2. Processo**

[![Fluxograma - adaptação totem.jpg](https://docs.softensistemas.com.br/uploads/images/gallery/2025-08/scaled-1680-/fluxograma-adaptacao-totem.jpg)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-08/fluxograma-adaptacao-totem.jpg)

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

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

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

</td></tr><tr><td style="width: 27%;">Venda no GV (Mobile)</td><td style="width: 19%;">Usuário (Vendedor), GV</td><td style="width: 27%;">Produto selecionado, variação, complementos</td><td style="width: 27%;">Pedido registrado no GV</td></tr></tbody></table>

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

- - - - - -

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

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

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

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

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

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

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

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

</td></tr><tr><td style="width: 168px; border-style: solid; border-color: black;"><span style="color: #000000;">Campo</span>

</td><td style="width: 102px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 88px; border-style: solid; border-color: black;"><span style="color: #000000;">100</span>

</td><td style="width: 165px; border-style: solid; border-color: black;"><span style="color: #000000;">Sim</span>

</td><td style="width: 119px; border-style: solid; border-color: black;">-

</td><td style="width: 201px; border-style: solid; border-color: black;">-

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

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

***1. Exemplo de regras do campo:*** Descrição das regras de interface ou de tela. Eventos em campos ou botões, bloqueios ou desbloqueios e outras alterações.

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

**1.Venda no GV (Mobile)**

- Usuário deve conseguir vender produtos simples, com variação e com complementos.
- Seleção de variação deve ser obrigatória quando o produto exigir.
- Complementos devem ser opcionais.
- Código de barras: 
    - Item principal → abre seleção de variação.
    - Variação → identifica direto.
    - Código duplicado → lista opções.
    - Código inexistente → mensagem “Produto não encontrado” e registro em log.



- 

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

**GV (Mobile)**

- Ajustar listagem de produtos por categorias:
    
    
    - Exibir **apenas itens principais**.
    - Variações devem ser exibidas **após seleção do item principal**.
    - Complementos devem aparecer como **etapa opcional posterior**.
- Implementar busca inteligente:
    
    
    - Busca por nome do produto.
    - Busca por variação (ex.: “camiseta azul P”).
- Implementar leitura de código de barras:
    
    
    - Se bipar código do **item principal** → abrir seleção de variação.
    - Se bipar código da **variação** → lançar direto no carrinho.
    - Se código for duplicado → exibir lista de opções.

##### ***Cenários de Teste***

1. **Food-Service:** Pizza Média + borda recheada → venda no GV, sincronização, edição no GA, emissão de NFC-e.
2. **Atacado:** Cerveja pack 12 unid → venda no GV, sincronização, alteração de preço no GA, emissão de NF-e.
3. **Varejo:** Camiseta Polo G Azul → venda no GV, sincronização, alteração de forma de pagamento no GA, emissão de NFC-e.
4. **Erros:**
    
    
    1. Produto sem NCM → rejeição fiscal.
    2. Código de barras duplicado → exibir lista de escolha.
    3. Venda offline → reenvio após reconexão.

©SOFTEN SISTEMAS 2025

# Cadastro de cliente pelo app



# Tela de formulário de cadastro de clientes

<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;">  
 ![Softensistemas Logo](https://www.softensistemas.com.br/assets/img/logo.webp)

</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;">CADASTRO DE CLIENTE PELO APP</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>  
<span style="color: #000000;">Tela de formulário de cadastro de cliente</span></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;">Pâmela Munhoz, Jalile Cornachioni, Gustavo Evaristo</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;">05/09/2025</span>

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

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

<span style="color: #000000;">O aplicativo mobile é utilizado por representantes de vendas que realizam a visita aos clientes para registro de pedidos. Atualmente o aplicativo sincroniza apenas clientes cadastrados previamente no GerencieAqui (GA), não havendo a possibilidade de realizar cadastros novos durante as visitas.</span>

<span style="color: #000000;">A limitação afeta o processo de prospecção, já que representantes não conseguem abrir carteira de um novo cliente no momento da venda.</span>

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

[![image-1760527894387.jpg](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/scaled-1680-/image-1760527894387.jpg)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/image-1760527894387.jpg)

#### **Solução esperada**

A implementação do cadastro de clientes diretamente no **App Mobile** *(Representante de vendas)* possui como maior objetivo a eliminação do processo de dependência de envio manual de cadastro para o responsável pela utilização do **GerencieAqui** *(retaguarda)*, permitindo assim que o representante registre o cliente no momento da venda ou do orçamento, com sincronização posterior para o sistema de retaguarda. O *processo deverá:*

- Permitir cadastrar novos clientes diretamente ao aplicativo mobile, *respeitando a configuração de permissão de cadastro* definida na tela de configurações, com valor padrão inativo para todos os dispositivos.
- Exibir o ícone de adição "➕" para criação de novo cliente *nas tela*s: listagem de clientes, campo de cliente em nova venda e novo orçamento. **Somente quando a configuração estiver habilitada**.
- Ocultar completamente o ícone de adição caso a configuração estiver **desabilitada**.
- Garantir que os clientes importados da retaguarda **não possam** ser editados, permitindo edição apenas para clientes novos recém criados e que ainda **não foram exportados**.
- Exibir ícone de edição na tela de listagem e detalhes somente para clientes novos (não sincronizados).

- - - - - -

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

- - - - - -

##### **CADASTRO DE CLIENTE POR NOVO ORÇAMENTO E NOVA VENDA:**

***[Protótipo de tela:](https://www.figma.com/design/CA2GjWd7CVf0Lmn0K14AYo/Fluxo-de-Vendas---Gerencie-Vendas?node-id=2753-15546&p=f&t=NPvNQYFlM1J8K8uH-0)***

[![image-1760621174671.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/scaled-1680-/image-1760621174671.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/image-1760621174671.png)

##### **CADASTRO DE CLIENTE POR CLIENTES:**

***[Protótipo de tela:](https://www.figma.com/design/CA2GjWd7CVf0Lmn0K14AYo/Fluxo-de-Vendas---Gerencie-Vendas?node-id=2753-15546&p=f&t=NPvNQYFlM1J8K8uH-0)***

[![image-1760621228766.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/scaled-1680-/image-1760621228766.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/image-1760621228766.png)

##### **TELA DE CONFIGURAÇÃO:**

***[Protótipo de tela:](https://www.figma.com/design/CA2GjWd7CVf0Lmn0K14AYo/Fluxo-de-Vendas---Gerencie-Vendas?node-id=2948-3961&t=NPvNQYFlM1J8K8uH-0)***

[![image-1760621292306.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/scaled-1680-/image-1760621292306.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/image-1760621292306.png)

##### **TELA DE SINCRONIZAÇÃO:**

***[Protótipo de tela:](https://www.figma.com/design/CA2GjWd7CVf0Lmn0K14AYo/Fluxo-de-Vendas---Gerencie-Vendas?node-id=2753-15550&p=f&t=NPvNQYFlM1J8K8uH-0)***

[![image-1760621350028.png](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/scaled-1680-/image-1760621350028.png)](https://docs.softensistemas.com.br/uploads/images/gallery/2025-10/image-1760621350028.png)

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

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

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

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

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

</td></tr><tr style="height: 35px;"><td class="align-left" style="width: 310px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">CPF (Seleção de pessoa física)</span></td><td style="width: 139px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Número</span>

</td><td style="width: 91px; border-style: solid; border-color: black; height: 35px;">11

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

</td></tr><tr style="height: 35px;"><td class="align-left" style="width: 310px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">CNPJ (Seleção de pessoa jurídica)</span></td><td style="width: 139px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Número</span>

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;"><span style="color: #000000;">Nome/Razão Social</span>

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

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

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

</td></tr><tr><td style="width: 310px; border-style: solid; border-color: black;"><span style="color: #000000;">Nome fantasia (Seleção de pessoa jurídica)</span>

</td><td style="width: 139px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 91px; border-style: solid; border-color: black;"><span style="color: #000000;">60</span>

</td><td style="width: 116px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

</td></tr><tr><td style="width: 310px; border-style: solid; border-color: black;"><span style="color: #000000;">Tipo de Contribuinte</span>

</td><td style="width: 139px; border-style: solid; border-color: black;"><span style="color: #000000;">Dropdown</span>

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

</td><td style="width: 116px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

</td></tr><tr><td style="width: 310px; border-style: solid; border-color: black;"><span style="color: #000000;">IE (Seleção de pessoa jurídica)</span>

</td><td style="width: 139px; border-style: solid; border-color: black;"><span style="color: #000000;">Número</span>

</td><td style="width: 91px; border-style: solid; border-color: black;">20</td><td style="width: 116px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

</td></tr><tr><td style="width: 310px; border-style: solid; border-color: black;"><span style="color: #000000;">RG (Seleção de pessoa física)</span>

</td><td style="width: 139px; border-style: solid; border-color: black;"><span style="color: #000000;">Número</span>

</td><td style="width: 91px; border-style: solid; border-color: black;"><span style="color: #000000;">9</span>

</td><td style="width: 116px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

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

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

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;">Telefone (Com DDD)

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

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;">CEP

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

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;">Endereço

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

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;">Número

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

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;">Complemento

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

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;">Bairro

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

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

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

</td></tr><tr style="height: 35px;"><td style="width: 310px; border-style: solid; border-color: black; height: 35px;">Município e UF

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

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

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

</td></tr><tr><td style="width: 310px; border-style: solid; border-color: black;">Vendedor

</td><td style="width: 139px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

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

</td><td style="width: 116px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

</td></tr><tr><td style="width: 310px; border-style: solid; border-color: black;">Observação interna

</td><td style="width: 139px; border-style: solid; border-color: black;"><span style="color: #000000;">Texto</span>

</td><td style="width: 91px; border-style: solid; border-color: black;"><span style="color: #000000;">5000</span>

</td><td style="width: 116px; border-style: solid; border-color: black;"><span style="color: #000000;">Não</span>

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

#####  

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

***1. Campo CPF/CNPJ:***

O campo "CNPJ/CPF" deverá ser preenchido corretamente com a quantidade de dígitos necessários.

**Comportamento esperado:**

- - Ao realizar o preenchimento corretamente e após a validação, os campos subsequentes serão liberados para preenchimento dos dados.
    - Validar duplicidade de CPF/CNPJ na base local do aplicativo: 
        - Caso haja registro com o mesmo dado, exibir a mensagem "Já existem registros associados a este CNPJ ou CPF", permitindo ainda assim a criação de mais um cliente com o mesmo documento.
        - Caso não haja duplicidade, seguir normalmente o fluxo de cadastro.

**Cenários negativos e possíveis erros:**

- - Ao digitar um CPF/CNPJ com a quantidade de dígitos inválidos deverá aparecer uma mensagem com o texto sugerido "CPF/CNPJ inválido".

***2. E-mail:***

Embora o campo não seja obrigatório a inclusão de e-mail no cadastro do cliente possibilita o envio de relatórios e pedidos de venda/orçamento, com isso é necessário que o campo possua um endereço de e-mail válido caso tenha sido preenchido.

**Comportamento esperado**

- - Ao realizar o cadastro do e-mail do cliente com formato inválido, ao tentar prosseguir deverá aparecer uma mensagem com o texto sugerido "O e-mail informado não está em um formato válido".

***3. Telefone:***

O campo não é obrigatório e caso preenchido deverá ter um formato válido com DDD. O telefone é um campo obrigatório devido a possibilidade de ser encaminhado relatório de venda/orçamento diretamente pelo WhatsApp do cliente

**Comportamento esperado**

- - Ao realizar o cadastro do telefone do cliente com formato inválido, ao tentar prosseguir deverá aparecer uma mensagem com o texto sugerido "Digite um número de telefone válido".

***4. Campo CEP:***

Os dados serão importados para dentro do banco do APP.

**Comportamento esperado:**

- - Consultar o serviço de CEP já utilizado pelo retaguarda para preencher automaticamente logradouro, município e UF no formulário de cadastro.
    - Caso não seja possível localizar o CEP, o sistema deverá permitir a seleção manual de cidade a partir da base local de município sincronizada com o app.
    - Concatenar os valores de município e UF em um único campo no formulário.

**Cenário negativos e possíveis erros:**

- - Ao realizar o preenchimento com quantidade de dígitos inválida, deverá aparecer uma mensagem "CEP inválido".

- 

##### ***REGRA DE NEGÓCIO TELA DE CADASTRO:***

1. O sistema mobile não deve permitir edição de clientes que já estão cadastrados ou importados na retaguarda.
2. A edição será permitida somente para clientes novos, ainda não exportados. *Regras de exibição*: 
    - Exibir ícone de edição na tela de listagem e de detalhes somente para clientes novos (não sincronizados).
    - Não exibir o ícone de edição para clientes já exportados.
3. Durante o cadastro de um novo cliente: 
    - O sistema deve verificar se já existe um cliente com o mesmo CPF/CNPJ: 
        - Caso exista exibir mensagem: *Já existe registros associados a este CNPJ ou CPF.".* O sistema permitirá a criação mesmo assim.
        - Caso não exista, seguir normalmente o fluxo de cadastro.
4. O sistema deverá consultar o serviço de CEP já utilizado pela retaguarda para preencher automaticamente logradouro, município e UF no formulário de cadastro 
    - Caso CEP não seja encontrado, o sistema deverá permitir que o usuário selecione manualmente a cidade a partir da base local sincronizada de municípios.
5. Os valores de município e UF deverão ser concatenados em um único campo no formulário de cadastro.
6. O Campo vendedor deverá ser preenchido automaticamente e respeitar a configuração de permissão para alteração.
7. O sistema mobile e o retaguarda deverão manter um campo de origem para identificar se o cliente foi cadastrado pelo mobile ou pelo retaguarda.

##### ***REGRA DE NEGÓCIO TELA DE CONFIGURAÇÃO:***

1. O sistema deve oferecer uma configuração para determinar se o usuário poderá ou não realizar cadastro de novos clientes pelo aplicativo mobile. O valor padrão dessa configuração deverá ser **inativo** para todos os dispositivos. 
    - Quando a opção estiver **habilitada**, o sistema deverá: 
        - Exibir o ícone ➕ para criação de novo cliente nas telas de listagem de clientes.
        - Exibir o ícone **➕** no campo cliente das telas de *nova venda* e *novo orçamento,* permitindo o cadastro direto a partir dessas telas.
    - Quando opção estiver **desabilitada**, o sistema deverá: 
        - Ocultar completamente o ícone que permite o cadastro de novos clientes em todas as telas e campos.
        - Impedir o usuário de iniciar o fluxo de cadastro de cliente.
2. A configuração de permissão para alteração de vendedor também deverá ser respeitada: 
    - Se **habilitada**, o usuário poderá alterar o vendedor no cadastro de cliente, venda e orçamento.
    - Se **desabilitada**, o vendedor permanecerá fixo, sem permissão de alteração.

##### ***REGRA DE NEGÓCIO TELA DE SINCRONIZAÇÃO***

1. O sistema retaguarda deverá enviar, durante a sincronização de clientes: 
    - E-mail e telefone dos clientes
    - Vendedor vinculado ao cliente
    - Todos os municípios para atualização da base local de cidades no app, com frequência de sincronização configurável.
2. O sistema deverá permitir sincronização manual de clientes, vendas e orçamentos entre o mobile e o retaguarda.
3. Durante o processo: 
    - A exportação de clientes deverá ser travada como sempre ativa, impedindo que o usuário desmarque essa opção.
    - Caso a permissão de cadastro de cliente esteja desabilitada, o sistema deverá ocultar a opção de exportar clientes para o retaguarda.
    - A sincronização do mobile deverá desconsiderar a data de cadastro e se basear apenas no indicador de cliente exportado da base local.
    - O sistema mobile deverá enviar o cadastro de clientes obrigatoriamente antes da venda ou orçamento.
    - A sincronização deverá ocorrer mesmo que não haja vendas ou orçamentos pendentes.
    - Durante o envio, o sistema deverá atribuir o nome do cliente ao contato padrão no retaguarda e garantir que o vendedor responsável seja incluído no envio.

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

***Estrutura de Integração Exemplo da estrutura atual do payload de envio do mobile para o retaguarda. Deve ser incluído no Payload tipo de contribuínte, vendedor, e-mail e telefone:***

***{ "originId": 0,  
"name": "name\_a10cbf024d58",  
"tradeName": "tradeName\_26ad41df96b3",  
"personType": "0",  
"cpfCnpj": "999.999.999-99",  
"zipCode": "99999999",  
"ieRg": "ieRg\_bcaf3a4888d2",   
"address": "address\_e78947a13cd5",   
"complement": "complement\_21df26977603",   
"neighborhood": "neighborhood\_be1610630a66",   
"city": "city\_1040a05de6da",   
"sellerOriginId": 0,   
"internalNotes": "internalNotes\_62e1372c5096",   
"image": "image\_1cbed78b9b46"  
"appId": "069d3be4-fbed-4663-a3de-00c9be6af151"  
}  
  
personType: 0-CLIENTE, 1-FORNECEDOR   
imagem: base64   
appId: Novo campo que vai ser criado, para preenchimento do id gerado no aplicativo e vínculo na venda quando for um cadastro novo***

***2. Persistência e Base de Dados:***

- ***Alterações ou novos campos criar um bit para indicar cliente sincronizado;<span class="hiddenVisually_b18fe2">,</span>***
- ***Regras de atualização: “campo sincronizado deve ser atualizado para true após confirmação do servidor”.***

***3. Lógica de Sincronização:***

- ***Fluxo e prioridade de envio: clientes sempre antes de vendas/orçamentos.<span class="hiddenVisually_b18fe2">,</span>***
- ***Tratamento de falhas: caso sincronização não tenha concluído por algum motivo (pode ser timeout, falhas diversas), o sistema deve executar rollback e não atualizar o bit "sincronizado" na tabela local fazendo com que a sync leia esse cliente e tente enviá-lo novamente posteriormente.<span class="hiddenVisually_b18fe2">,</span>***

***4. Testes Técnicos:***

- ***Estratégia de teste automatizado (mock de API, payloads simulados).<span class="hiddenVisually_b18fe2">,</span>***
- ***Cenários de integração (cliente duplicado, falha de rede, permissão desabilitada).***

©SOFTEN SISTEMAS 2025

