# OS 92136 - CORREÇÃO - RECEBIMENTO - SISTEMA ESTÁ MISTURANDO OS ANEXOS NA HORA DE FAZER A PRÉVIA

#### **Objetivo:**

A correção implementada visa garantir que, após o ajuste de controle de concorrência na gravação de anexos do **Lançamento Prévio de Nota Fiscal**, o sistema **impede que um mesmo código de arquivo** seja atribuído a **requisições simultâneas**, garantindo que cada anexo permaneça vinculado **exclusivamente à sua respectiva prévia**, mesmo quando usuários distintos realizam o upload no mesmo instante.

#### **Situação reportada.**

- - Foi identificado que, em situações específicas de **concorrência de usuários**, o sistema estava atribuindo **o mesmo código de arquivo** a anexos enviados simultaneamente em **lançamentos prévios distintos**, ocasionando a **vinculação incorreta de documentos**.
        
        Nesses casos, um arquivo anexado por um usuário em determinada prévia de nota fiscal era indevidamente associado à prévia de outro usuário, inclusive **não pertencente ao mesmo fornecedor**.  
        A ocorrência estava relacionada a, requisições de upload executadas **no mesmo instante (mesmo milissegundo)**, gerando sobreposição na numeração do arquivo e comprometendo a integridade referencial dos anexos.
        
        Para correção, foi implementado um **controle de concorrência na geração do código de anexo**, garantindo que cada requisição receba uma numeração única, mesmo quando processada simultaneamente, evitando assim a mistura de anexos entre lançamentos prévios diferentes.

#### **Premissas:**

- Necessário o ambiente estar atualizado com as versões: 
    - **Recebimento** de número **129811 Genexus 17** ou superior;
    - **Script** com a versão de número **129812** ou superior.
- Necessário ter a opção de lançamento prévio habilitado.

#### **Teste realizado após a atualização**

#### **Cenário 01 — Upload simultâneo de anexos em prévias diferentes (concorrência de usuários)**

**Finalidade:**  
Validar que, em situação de concorrência (requisições simultâneas), o sistema gera **numeração única de arquivo** para cada anexo e mantém a integridade entre **prévia e documento anexado**.

**Pré-requisitos:**

- Ambiente de testes atualizado com o ajuste final.
- Dois usuários distintos (Usuário A e Usuário B).
- Acesso ao módulo **Recebimento &gt; Lançamento Prévio Nota Fiscal**.
    
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/CA5YS0cayHwbdyt2-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/CA5YS0cayHwbdyt2-image.png)
    
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/0e9uYJszElDY38V6-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/0e9uYJszElDY38V6-image.png)
- Duas prévias distintas, preferencialmente de **fornecedores diferentes**.
- Uso de um **mecanismo de interceptação de requisições** para liberação simultânea.

**Passo a passo:**

1. Acessar o módulo **Lançamento Prévio Nota Fiscal** com o **Usuário A**.
2. Em outra sessão (guia anônima ou navegador separado), acessar o mesmo módulo com o **Usuário B**.
3. Pelo Usuário A, selecionar a prévia **X** e abrir a tela de **Anexos**.
4. Pelo Usuário B, selecionar a prévia **Y** (diferente da X) e abrir a tela de **Anexos**.
    
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/XVeVdE4swQvii4cg-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/XVeVdE4swQvii4cg-image.png)
5. Em ambas as sessões, clicar em **Upload** e selecionar arquivos distintos para cada prévia.
6. Ajustar o tipo do anexo (quando aplicável), **sem confirmar** em nenhuma das telas.
    
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/0gd91jigbmGwfxH1-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/0gd91jigbmGwfxH1-image.png)
7. Clicar em **Confirmar** no ambiente do Usuário A e, em seguida, em **Confirmar** no ambiente do Usuário B **simultaneamente**.
8. Retornar à tela de anexos da prévia **X**.
9. Retornar à tela de anexos da prévia **Y**.
    
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/4RdZIAWBs8Y3prQ9-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/4RdZIAWBs8Y3prQ9-image.png)

**Resultado esperado:**

- A prévia **X** apresenta **somente o arquivo** anexado pelo Usuário A.
- A prévia **Y** apresenta **somente o arquivo** anexado pelo Usuário B.
- Não ocorre mistura ou duplicidade de anexos entre prévias.
- Cada anexo recebe **numeração distinta**, mesmo em concorrência.
- O sistema não apresenta erro de integridade ou inconsistência de dados.

---

#### **Cenário 02 — Upload simultâneo por fluxos diferentes (Anexos da NF × Edição do Lançamento Prévio)**

**Finalidade:**  
Garantir que o controle de concorrência funcione corretamente **independente do fluxo de anexação utilizado**.

**Pré-requisitos:**

- Mesmo ambiente e usuários do Cenário 01.
- Duas prévias distintas disponíveis para teste.
- Uso de mecanismo de interceptação de requisições para simulação de concorrência.

**Passo a passo:**

1. Com o **Usuário A**, acessar a prévia **X** e abrir os anexos pelo **popup/lista de anexos da Nota Fiscal**.
2. Com o **Usuário B**, acessar a prévia **Y** e abrir os anexos pela **tela de edição do lançamento prévio**.
3. Selecionar arquivos diferentes em cada fluxo e deixar ambos prontos para confirmação.
    
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/2Yg5DUtRLQVwPK10-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/2Yg5DUtRLQVwPK10-image.png)
4. Clicar em **Confirmar** no fluxo do Usuário A e Clicar em **Confirmar** no fluxo do Usuário B **simultaneamte**.  
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/dyTlm8Kr8g4h2oUU-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/dyTlm8Kr8g4h2oUU-image.png)
5. Aguardar o processamento e retornar às telas do sistema.
6. Validar os anexos da prévia **X**.
7. Validar os anexos da prévia **Y**.
    
    [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/scaled-1680-/hqsHUG1miIsTEpic-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2026-01/hqsHUG1miIsTEpic-image.png)

**Resultado esperado:**

- Cada prévia mantém apenas os anexos inseridos em seu respectivo fluxo.
- Não ocorre reaproveitamento de código/numeração de arquivo.
- Os dois fluxos concluem com sucesso, sem erro ou sobreposição de dados.
- O comportamento atende ao ajuste implementado para controle de concorrência.

![4.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-03/scaled-1680-/eO9m8fVMKPpticCz-4.png)

<p class="callout danger">**ATENÇÃO: As informações neste documento são meramente ilustrativas e utilizadas apenas para fins de teste.**</p>