# OS 78615 - MELHORIA - SIS/WEB - COMPRAS - RELATÓRIO CURVA ABC

#### **Objetivo:**

Esta solicitação visa desenvolver a funcionalidade de **Relatório de Curva ABC** no módulo Compras, permitindo aos usuários gerar um ranking dos produtos mais comprados com base na entrada de notas fiscais no período (mensal ou anual) selecionado. O relatório deve permitir:

- Filtragem por **tipo de produto** e **período** (mês e/ou ano);
- Exibição dos produtos ordenados por **valor total** e **quantidade**, com **percentuais relativos** ao total;
- Classificação dos itens conforme Curva ABC: **Classe A (Alta)**, **Classe B (Média)**, e **Classe C (Baixa)**;
- Exportação para **Excel (XLSM)** com guia para análise por valor.

#### **Premissas:**

- Necessário o ambiente estar atualizado com a versão Compras de número **113315 Genexus 17** ou superior;

<p class="callout success">**Regras da funcionalidade:**</p>

**Regras de geração:**

- São consideradas apenas **notas fiscais de Entrada**;
- Caso o mês tenha sido informado, a data inicial será considerada como 1º dia do mês e ano selecionados e a data final como o último dia do mesmo mês.
- Caso o mês não tenha sido informado, a data inicial será considerada como 1º de janeiro do ano selecionado e a data final como 31 de dezembro do ano selecionado;
- São consideradas as **datas de movimentação** das notas no período selecionado;
- São consideradas apenas as notas da **Unidade Operacional** selecionada em contexto;
- São consideradas apenas notas com os status de **Liberada ou Integrada Contábil**;
- São considerados apenas os itens das notas processadas que correspondam ao(s) tipo(s) de produto(s) selecionado(s);
- Para a unidade de medida, é considerada a **unidade de medida de estoque** do produto;
- Para o valor unitário do produto, será considerado o quociente entre seu Valor Total (R$) e sua Quantidade, a fim de gerar uma média no período selecionado, uma vez que podem ter ocorrido variações nos preços unitários dos itens/notas; 
    - Exemplo: Valor Total (R$) do item é **R$ 362.992,08.** A quantidade do item é **26.** O valor unitário será calculado considerando o **arredondamento com duas casas decimais** e resultando em **R$ 13.961,23.**
- Na planilha de Valor, o percentual é calculado com base no quociente do Valor Total (R$) do produto pela somatória de todos os valores totais; 
    - Exemplo: Valor Total (R$) do item é **R$ 362.992,08**. A somatória dos itens é de **R$ 501.747,20**. A porcentagem deste item será de **72,345611%**
- As classes e prioridades serão definidas pelas seguintes porcentagens, também descritas na legenda presente no relatório Excel: 
    - **Acima de 70%** - Classe A e prioridade Alta (&gt;= 70%);
    - **Entre 20% e 70%** - Classe B e prioridade Média (&gt;= 20% e &lt; 70%);
    - **Abaixo de 20%** - Classe C e prioridade Baixa (&lt; 20%).
- Para a coluna Data Última Entrada NF é considerada a **data de movimentação mais recente** das notas correspondentes ao produto;

**Regras de exibição**

- Na guia "Valor", os itens são ranqueados em ordem decrescente pelo percentual e, em caso de empate, pelo Valor Total (R$), também em ordem decrescente;
- As colunas **Valor Unitário e Valor Total**, em ambas as guias, utilizam o **formato numérico contábil**;
- A coluna de **porcentagem (%)**, em ambas as guias, utiliza o **formato numérico de porcentagem** com duas casas decimais. O relatório é gerado com seis casas decimais, sendo possível aumentá-las caso desejado pelos controles do Excel;
- A coluna de **Data Última Entrada NF**, em ambas as guias, utiliza o **formato de data abreviada**, apresentando o padrão DD/MM/AAAA.

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

#### **Cenário 1: Validação de Permissão de Acesso**

**Passos:**

1. Acessar o sistema como usuário sem a permissão **`wpRelCurvaABC`**(Módulo segurança).
2. Navegar até o módulo Compras **&gt;Relatório**.
3. Verificar se o item **Curva ABC** está visível.

<p class="callout info">**Resultado Esperado:**  
O menu **Curva ABC** não deve estar disponível para usuários sem a permissão wpRelCurvaABC.</p>

**Usuário sem acesso ao relatório**[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/2IRBKUhG3rMGx60x-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/2IRBKUhG3rMGx60x-image.png)

[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/o9IkuK5iQp4NtQzv-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/o9IkuK5iQp4NtQzv-image.png)

4. Atribuir a permissão wpRelCurvaABC ao perfil do usuário (Módulo segurança)
5. Reacessar o módulo **Compras &gt; Relatórios**.

<p class="callout info">**Resultado Esperado:**  
O menu **Curva ABC** passa a estar visível para o usuário.</p>

**Usuário com acesso ao relatório.**[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/OTF0RAD3bZnBeDkt-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/OTF0RAD3bZnBeDkt-image.png)

[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/dCeIk5cMDvR9FT4A-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/dCeIk5cMDvR9FT4A-image.png)

---

#### **Cenário 2: Geração do relatório Curva ABC - Mensal**

**Passos:**

1. Acessar o menu Compras **&gt;**Relatório **&gt; Curva ABC**
2. Verificar os filtros exibidos na tela: 
    - Mês
    - Ano
    - Tipos de produto

<p class="callout info">**Resultado Esperado para relatório mensal**</p>

- O relatório considera as notas com **data de movimentação** no **mês/ano** informados e da unidade operacional logada.
- Os dados são enviados para a tela **Relatórios &gt; Em Processamento**.
- O relatório gerado contém: 
    - Guia “Valor”: produtos ordenados por percentual de valor total;
    - Colunas como: Valor Unitário, Valor Total, Percentual, Classe, Prioridade, Data da Última NF.

**Acessando a funcionalidade** [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/SZhfWTNHeIRLkuUR-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/SZhfWTNHeIRLkuUR-image.png)  
[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/dCeIk5cMDvR9FT4A-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/dCeIk5cMDvR9FT4A-image.png)

**Tela de filtros**

Ao entrar na tela de filtro, informe os dados conforme necessidade e clique em **Confirmar.**[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/jspDUKsjl6sWJqSI-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/jspDUKsjl6sWJqSI-image.png)

O sistema irá direcionar para o dashboard, onde será possível fazer o download do relatório.[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/t2MId1Ln1QSnxcX6-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/t2MId1Ln1QSnxcX6-image.png)

**Relatório gerado**[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/gfW44IPOfdtoWpcg-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/gfW44IPOfdtoWpcg-image.png)

---

#### **Cenário 3: Geração do relatório Curva ABC - Anual**

**Passos:**

1. Acessar o menu Compras **&gt;**relatório **&gt; Curva ABC**
2. Verificar os filtros exibidos na tela: 
    - Mês
    - Ano
    - Tipos de produto

<p class="callout info">**Resultado Esperado para relatório anual**</p>

- O relatório é gerado considerando as **notas fiscais de entrada** entre **01/01 e 31/12 do ano informado** e da unidade operacional logada.
- Os dados são enviados para a tela **Relatórios &gt; Em Processamento**.
- O relatório gerado contém: 
    - Guia “Valor”: produtos ordenados por percentual de valor total;
    - Colunas como: Valor Unitário, Valor Total, Percentual, Classe, Prioridade, Data da Última NF.

 **Acessando a funcionalidade** [![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/SZhfWTNHeIRLkuUR-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/SZhfWTNHeIRLkuUR-image.png)  
[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/dCeIk5cMDvR9FT4A-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/dCeIk5cMDvR9FT4A-image.png)

**Tela de filtros**

Ao entrar na tela de filtro, informe os dados conforme necessidade e clique em **Confirmar.**[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/R5XQMQ4RwfFSeWcm-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/R5XQMQ4RwfFSeWcm-image.png)

O sistema irá direcionar para o dashboard, onde será possível fazer o download do relatório.[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/9FOc3klDE0HKOv62-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/9FOc3klDE0HKOv62-image.png)

**Relatório gerado**[![image.png](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/scaled-1680-/Ay6OeQq4zHzDQFJ0-image.png)](https://wiki.sendsolutions.com.br/uploads/images/gallery/2025-06/Ay6OeQq4zHzDQFJ0-image.png)

![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>