---
# System prepended metadata

title: Relatórios

---

# Relatórios
>[color=#00796b]Funcionalidade que permite ao desenvolvedor criar relatórios sobre os procedimentos realizados pela Agrotis Plataforma.

![](https://i.imgur.com/2s2IaQr.png)

## Padrão de rotas
* LIST: `/relatorios`
* ITEM: `/relatorios/:nomeEntidade/:nomeRelatorio`

>[color=#00796b]`:nomeRelatorio` é capturado como `this.props.match.params.nomeRelatorio` e é responsável por conectar as informações contidas em `RelatorioList` ao seu respectivo conteúdo em `RelatorioItem`. Ele é utilizado como chave dentro do arquivo de declaração de um relatório no frontend (arquivo `data.js` em `RelatorioItem`), e é buscado ao iniciar o processo de gerar um relatório, na função `componentDidMount` de `RelatorioItem`;

## Containers
* `RelatorioList`: Arquivo da index que lista todas opções de relatórios;
* `RelatorioItem`: Container que renderiza a parametrização através dos componentes e consultas realizadas;

## Components
* `FilterData`: componente de filtro de data com parâmetros pré definidos;
* `FilterSelect`: componente que renderiza opções requeridas pelo relatório já previamente selecionadas na aba filtros;
* `Filtering`: componente de fieldarray permite adicionar filtros como parâmetros opcionais;
* `Ordering`: componente de fieldarray permite adicionar agrupamentos e respectivas ordenações como parâmetros opcionais;

## Store
* `actions`: setam informações da maneira correta em nossa store do Redux;
* `reducers`: setam informações da maneira correta em nossa store do Redux
* `actionTypes`: responsáveis por trafegar as actions corretas ao nosso reducer;
* `thunks`: responsáveis por fazer as chamadas e invocar actions corretas passando informacoes a elas;
* `initialState`: informações do estado inicial do formulário;

## Principais Arquivos
* **Endpoints consultados para popular campos e gerar relatórios** [endpoints.js](https://bitbucket.org/agrotis/core-frontend-react/src/relatorios/src/components/Relatorio/endpoints.js)
    * Endpoints para popular campos
    * Endpoints para gerar um relatório

* **Arquivos com os dados da Lista** [data.js](https://bitbucket.org/agrotis/core-frontend-react/src/relatorios/src/components/Relatorio/List/data.js)
    * Título de `nomeEntidade`
    * Título e função de `onCLick` de `nomeRelatorio`

* **Arquivos com os dados dos Items** [data.js](https://bitbucket.org/agrotis/core-frontend-react/src/relatorios/src/components/Relatorio/Item/data.js)
    * `title`: título do relatório
    * `selectedFilters`: filtros previamente selecionados
    * `filterOpts`: filtros como opção em `[Adicionar Filtro]`
    * `groups`: opções de agrupamentos e suas respectivas ordenações
    * `geraRelatorio`: função que retorna objeto para gerar relatório
    * `thunkGeraRelatorio`: validação e chamada de thunk para gerar relatório

<br>

    ## To Do List
    
    1. Tratar chamadas nos selects para realizar buscas `onSearchChange` e popular campos a partir de parâmetro passado ao endpoint;

    2. Separar dados de cada relatório em um arquivo separado, e importar todos em um index de dados;

    3. Evitar a verificação `typeof === 'function'`;

    4. Revisar internacionalizações de filtros e demais possíveis labels vindos das declarações de dados dos relatórios;

---

![](https://i.imgur.com/aQAwU0Q.jpg)
