From 48a28d8f78f48728fa634259260211e949f0ae37 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 9 Jun 2022 09:32:24 -0300 Subject: [PATCH 01/98] =?UTF-8?q?feat(52292):=20Cria=20p=C3=A1gina=20e=20r?= =?UTF-8?q?ota=20de=20suporte=20=C3=A0s=20unidades=20DRE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cria a página de suporte às unidades DRE, configura a sua rota e verificação de acessos. --- src/assets/img/icone-menu-suporte-unidades.svg | 3 +++ src/componentes/Globais/SidebarLeft/getUrls.js | 2 ++ src/paginas/dres/SuporteAsUnidades/index.js | 13 +++++++++++++ src/rotas/index.js | 8 +++++++- 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 src/assets/img/icone-menu-suporte-unidades.svg create mode 100644 src/paginas/dres/SuporteAsUnidades/index.js diff --git a/src/assets/img/icone-menu-suporte-unidades.svg b/src/assets/img/icone-menu-suporte-unidades.svg new file mode 100644 index 000000000..160421b35 --- /dev/null +++ b/src/assets/img/icone-menu-suporte-unidades.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/componentes/Globais/SidebarLeft/getUrls.js b/src/componentes/Globais/SidebarLeft/getUrls.js index f01a491ef..c5b115715 100644 --- a/src/componentes/Globais/SidebarLeft/getUrls.js +++ b/src/componentes/Globais/SidebarLeft/getUrls.js @@ -12,6 +12,7 @@ import IconeGestaoDePerfis from "../../../assets/img/icone-menu-gestao-de-perfis import IconeMenuParametrizacoes from "../../../assets/img/icone-menu-parametrizacoes.svg" import IconeMenuSaldosBancarios from "../../../assets/img/icone-menu-sme-saldos-bancarios.svg" import IconeMenuFornecedores from "../../../assets/img/icone-menu-fornecedores.svg" +import IconeMenuSuporteUnidades from "../../../assets/img/icone-menu-suporte-unidades.svg" const getDadosUsuario = () =>{ let usuario = localStorage.getItem(USUARIO_NOME); @@ -75,6 +76,7 @@ const UrlsMenuDres ={ ] }, {label: "Fornecedores", url: "parametro-fornecedores", dataFor:"parametro_fornecedores", icone:IconeMenuFornecedores, permissoes: ['access_fornecedores'],}, + {label: "Suporte às Unidades", url: "suporte-unidades-dre", dataFor:"suporte_unidades_dre", icone:IconeMenuSuporteUnidades, permissoes: ['access_suporte_unidades_dre'],}, {label: "Gestão de perfis", url: "gestao-de-perfis", dataFor:"gestao_de_perfis", icone:IconeGestaoDePerfis, permissoes: ['access_gestao_perfis_dre'],}, ] }; diff --git a/src/paginas/dres/SuporteAsUnidades/index.js b/src/paginas/dres/SuporteAsUnidades/index.js new file mode 100644 index 000000000..8961705a8 --- /dev/null +++ b/src/paginas/dres/SuporteAsUnidades/index.js @@ -0,0 +1,13 @@ +import React from "react"; +import {PaginasContainer} from "../../PaginasContainer"; + + +export const SuporteAsUnidadesDre = () =>{ + return ( + +

Suporte às unidades da DRE

+
+
+
+ ) +}; \ No newline at end of file diff --git a/src/rotas/index.js b/src/rotas/index.js index 1719fcd8e..d4e2b0af9 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -34,6 +34,7 @@ import {ConsultaDeSaldosBancarios} from "../componentes/sme/ConsultaDeSaldosBanc import {ConsultaDeSaldosBancariosDetalhesAssociacoes} from "../componentes/sme/ConsultaDeSaldosBancarios/ConsultaDeSaldosBancariosDetalhesAssociacoes"; import {RegularidadeAssociacoesPage} from "../paginas/dres/RegularidadeAssociacoes"; import {AnalisesRegularidadeAssociacaoPage} from "../paginas/dres/RegularidadeAssociacoes/AnalisesRegularidadeDaAssociacao"; +import {SuporteAsUnidadesDre} from "../paginas/dres/SuporteAsUnidades" // Faz o redirect de acordo com a Visao Selecionada import {RedirectLoginVisaoUe} from "../utils/RedirectLoginVisaoUe"; import {DadosDaDiretoriaDrePage} from "../paginas/dres/Diretoria/DadosDaDiretoria"; @@ -277,7 +278,12 @@ const routesConfig = [ component: ResumoDosAcertos, permissoes: ['access_acompanhamento_pcs_dre'], }, - + { + exact: true, + path: "/suporte-unidades-dre", + component: SuporteAsUnidadesDre, + permissoes: ['access_suporte_unidades_dre'], + }, { exact: true, path: "/sem-permissao-de-acesso", From 1a79bd61ece52efb9544187ebe15fd27caf0c251 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 9 Jun 2022 09:44:14 -0300 Subject: [PATCH 02/98] =?UTF-8?q?feat(52292):=20Cria=20p=C3=A1gina=20e=20r?= =?UTF-8?q?ota=20de=20suporte=20=C3=A0s=20unidades=20SME?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cria a página de suporte às unidades SME, configura a sua rota e verificação de acessos. --- src/componentes/Globais/SidebarLeft/getUrls.js | 2 +- src/paginas/SME/SuporteAsUnidades/index.js | 13 +++++++++++++ src/rotas/index.js | 7 +++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 src/paginas/SME/SuporteAsUnidades/index.js diff --git a/src/componentes/Globais/SidebarLeft/getUrls.js b/src/componentes/Globais/SidebarLeft/getUrls.js index c5b115715..b409a59e5 100644 --- a/src/componentes/Globais/SidebarLeft/getUrls.js +++ b/src/componentes/Globais/SidebarLeft/getUrls.js @@ -92,12 +92,12 @@ const UrlsMenuSME ={ {label: "Parametrizações", url: "painel-parametrizacoes", dataFor:"sme_painel_parametrizacoes", icone:IconeMenuParametrizacoes, permissoes: ['access_painel_parametrizacoes'],}, {label: "Acompanhamento de PCs", url: "acompanhamento-pcs-sme", dataFor:"acompanhamento_pcs_sme", icone:IconeAcompanhamento, permissoes: ['access_acompanhamento_pc_sme'],}, {label: "Consulta de saldos bancários", url: "consulta-de-saldos-bancarios", dataFor:"consulta_de_saldos_bancarios", icone:IconeMenuSaldosBancarios, permissoes: ['access_consulta_saldo_bancario'],}, + {label: "Suporte às Unidades", url: "suporte-unidades-sme", dataFor:"suporte_unidades_sme", icone:IconeMenuSuporteUnidades, permissoes: ['access_suporte_unidades_sme'],}, {label: "Gestão de perfis", url: "gestao-de-perfis", dataFor:"gestao_de_perfis", icone:IconeGestaoDePerfis, permissoes: ['access_gestao_perfis_sme'],}, ] }; - const GetUrls = () =>{ let dados_usuario_logado = visoesService.getDadosDoUsuarioLogado(); diff --git a/src/paginas/SME/SuporteAsUnidades/index.js b/src/paginas/SME/SuporteAsUnidades/index.js new file mode 100644 index 000000000..069158cf8 --- /dev/null +++ b/src/paginas/SME/SuporteAsUnidades/index.js @@ -0,0 +1,13 @@ +import React from "react"; +import {PaginasContainer} from "../../PaginasContainer"; + + +export const SuporteAsUnidadesSme = () =>{ + return ( + +

Suporte às unidades da SME

+
+
+
+ ) +}; diff --git a/src/rotas/index.js b/src/rotas/index.js index d4e2b0af9..aac74736a 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -35,6 +35,7 @@ import {ConsultaDeSaldosBancariosDetalhesAssociacoes} from "../componentes/sme/C import {RegularidadeAssociacoesPage} from "../paginas/dres/RegularidadeAssociacoes"; import {AnalisesRegularidadeAssociacaoPage} from "../paginas/dres/RegularidadeAssociacoes/AnalisesRegularidadeDaAssociacao"; import {SuporteAsUnidadesDre} from "../paginas/dres/SuporteAsUnidades" +import {SuporteAsUnidadesSme} from "../paginas/SME/SuporteAsUnidades" // Faz o redirect de acordo com a Visao Selecionada import {RedirectLoginVisaoUe} from "../utils/RedirectLoginVisaoUe"; import {DadosDaDiretoriaDrePage} from "../paginas/dres/Diretoria/DadosDaDiretoria"; @@ -461,6 +462,12 @@ const routesConfig = [ component: AnalisesRegularidadeAssociacaoPage, permissoes: ['access_regularidade_dre'], }, + { + exact: true, + path: "/suporte-unidades-sme", + component: SuporteAsUnidadesSme, + permissoes: ['access_suporte_unidades_sme'], + }, ]; From 520f8b87416f0defe1734ba974449770a9060cad Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 9 Jun 2022 09:59:16 -0300 Subject: [PATCH 03/98] =?UTF-8?q?feat(52292):=20Cria=20componente=20de=20s?= =?UTF-8?q?uporte=20=C3=A0s=20unidades=20conforme=20vis=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cria o componente que será usado nas visões de DRE e SME para o suporte às unidades. Por hora o componente apenas recebe a visão como parâmetro e a exibe. --- src/componentes/Globais/SuporteAsUnidades/index.js | 10 ++++++++++ src/paginas/SME/SuporteAsUnidades/index.js | 3 ++- src/paginas/dres/SuporteAsUnidades/index.js | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 src/componentes/Globais/SuporteAsUnidades/index.js diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js new file mode 100644 index 000000000..1b907799e --- /dev/null +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -0,0 +1,10 @@ +import React from "react"; + +export const SuporteAsUnidades = (props) =>{ + + const {visao} = props + + return( +

Componente de suporte às unidades da {visao}

+ ) +} diff --git a/src/paginas/SME/SuporteAsUnidades/index.js b/src/paginas/SME/SuporteAsUnidades/index.js index 069158cf8..f4b5d21c5 100644 --- a/src/paginas/SME/SuporteAsUnidades/index.js +++ b/src/paginas/SME/SuporteAsUnidades/index.js @@ -1,12 +1,13 @@ import React from "react"; import {PaginasContainer} from "../../PaginasContainer"; - +import {SuporteAsUnidades} from "../../../componentes/Globais/SuporteAsUnidades" export const SuporteAsUnidadesSme = () =>{ return (

Suporte às unidades da SME

+
) diff --git a/src/paginas/dres/SuporteAsUnidades/index.js b/src/paginas/dres/SuporteAsUnidades/index.js index 8961705a8..91c9998c9 100644 --- a/src/paginas/dres/SuporteAsUnidades/index.js +++ b/src/paginas/dres/SuporteAsUnidades/index.js @@ -1,5 +1,6 @@ import React from "react"; import {PaginasContainer} from "../../PaginasContainer"; +import {SuporteAsUnidades} from "../../../componentes/Globais/SuporteAsUnidades" export const SuporteAsUnidadesDre = () =>{ @@ -7,6 +8,7 @@ export const SuporteAsUnidadesDre = () =>{

Suporte às unidades da DRE

+
) From 08befb64250b94b5c423f1f1f97c5d590fe964e7 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 9 Jun 2022 11:55:03 -0300 Subject: [PATCH 04/98] =?UTF-8?q?feat(52292):=20Cria=20componente=20TextoE?= =?UTF-8?q?xplicativo=20da=20p=C3=A1gina=20de=20suporte=20=C3=A0s=20unidad?= =?UTF-8?q?es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cria o componente responsável por obter e exibir o texto explicativo da página de suporte às unidades, considerando em qual visão o componente está sendo usado. --- .../TextoExplicativoDaPagina.js | 28 +++++++++++++++++++ .../Globais/SuporteAsUnidades/index.js | 4 +-- .../suporte-as-unidades.scss | 3 ++ src/services/SuporteAsUnidades.service.js | 21 ++++++++++++++ 4 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 src/componentes/Globais/SuporteAsUnidades/TextoExplicativoDaPagina.js create mode 100644 src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss create mode 100644 src/services/SuporteAsUnidades.service.js diff --git a/src/componentes/Globais/SuporteAsUnidades/TextoExplicativoDaPagina.js b/src/componentes/Globais/SuporteAsUnidades/TextoExplicativoDaPagina.js new file mode 100644 index 000000000..6002a36e8 --- /dev/null +++ b/src/componentes/Globais/SuporteAsUnidades/TextoExplicativoDaPagina.js @@ -0,0 +1,28 @@ +import React, {useState, useEffect} from "react"; +import "./suporte-as-unidades.scss" + +import {geTextoExplicativoSuporteUnidades} from "../../../services/SuporteAsUnidades.service" + +export const TextoExplicativo = (props) => { + const {visao} = props + + const [textoExplicativo, setTextoExplicativo] = useState(""); + + useEffect(() => { + buscaTextoExplicativo(); + }, []); + + const buscaTextoExplicativo = async () => { + await geTextoExplicativoSuporteUnidades(visao).then((response) => { + setTextoExplicativo(response.detail); + }).catch((error) => { + console.log(error); + }) + }; + + return( +
+
+
+ ) +}; \ No newline at end of file diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index 1b907799e..54c97106f 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -1,10 +1,10 @@ import React from "react"; - +import {TextoExplicativo} from "./TextoExplicativoDaPagina" export const SuporteAsUnidades = (props) =>{ const {visao} = props return( -

Componente de suporte às unidades da {visao}

+ ) } diff --git a/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss b/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss new file mode 100644 index 000000000..5a9c25ec4 --- /dev/null +++ b/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss @@ -0,0 +1,3 @@ +.container-texto-explicativo { + margin-top: 5px; +} diff --git a/src/services/SuporteAsUnidades.service.js b/src/services/SuporteAsUnidades.service.js new file mode 100644 index 000000000..b43d3ed38 --- /dev/null +++ b/src/services/SuporteAsUnidades.service.js @@ -0,0 +1,21 @@ +import api from './api' +import { TOKEN_ALIAS } from './auth.service.js'; + +const authHeader = { + headers: { + 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, + 'Content-Type': 'application/json' + } +}; + +export const geTextoExplicativoSuporteUnidades = async (visao) => { + if (visao === "DRE") { + return (await api.get(`/api/parametros-dre/texto-pagina-suporte/`, authHeader)).data + } + + if (visao === "SME") { + return (await api.get(`/api/parametros-sme/texto-pagina-suporte/`, authHeader)).data + } + + return {detail: "Erro. Visão não definida, esperado DRE ou SME."} +} From d47914a465d48549cf487994f4a1f863972aa9f2 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 9 Jun 2022 17:23:11 -0300 Subject: [PATCH 05/98] feat(52292): Cria o componente EscolheUnidade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cria o componente responsável porescolher uma unidade a partir de uma lista de unidades. O componente apresenta a lista de unidades da DRE logada se estiver em uma visão de DRE e todos se estiver em uma visão de SME. --- .../Globais/EscolheUnidade/ListaDeUnidades.js | 59 +++++++++++++++++++ .../Globais/EscolheUnidade/index.js | 46 +++++++++++++++ .../Globais/SuporteAsUnidades/index.js | 16 ++++- src/services/dres/Unidades.service.js | 18 +++++- 4 files changed, 136 insertions(+), 3 deletions(-) create mode 100644 src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js create mode 100644 src/componentes/Globais/EscolheUnidade/index.js diff --git a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js new file mode 100644 index 000000000..79a1ded34 --- /dev/null +++ b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js @@ -0,0 +1,59 @@ +import React from "react"; +import {Column} from "primereact/column"; +import {DataTable} from "primereact/datatable"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faKey} from "@fortawesome/free-solid-svg-icons"; + +export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnidade}) => { + + const unidadeEscolarTemplate = (rowData) => { + return ( +
+ {rowData['nome_com_tipo'] ? {rowData['nome_com_tipo']} : ''} +
+ ) + }; + + const acoesTemplate = (rowData) =>{ + return ( + <> + + + + + ) + }; + + return ( + rowsPerPage} + rows={rowsPerPage} + paginatorTemplate="PrevPageLink PageLinks NextPageLink" + autoLayout={true} + > + + + + + ); +}; \ No newline at end of file diff --git a/src/componentes/Globais/EscolheUnidade/index.js b/src/componentes/Globais/EscolheUnidade/index.js new file mode 100644 index 000000000..0a90965c5 --- /dev/null +++ b/src/componentes/Globais/EscolheUnidade/index.js @@ -0,0 +1,46 @@ +import React, {useEffect, useState} from "react"; +import {getUnidades} from "../../../services/dres/Unidades.service" +import {ListaDeUnidades} from "./ListaDeUnidades"; +import Loading from "../../../utils/Loading"; + +export const EscolheUnidade = (props) =>{ + + const {dre_uuid} = props + + const [loading, setLoading] = useState(true); + const [listaUnidades, setListaUnidades] = useState([]); + + useEffect(()=>{ + carregaListaUnidades(); + }, []); + + const carregaListaUnidades = async ()=>{ + try { + let listaUnidades = await getUnidades(dre_uuid); + setListaUnidades(listaUnidades); + }catch (e) { + console.log("Erro ao carregar lista de unidades.", e) + } + setLoading(false) + }; + + const escolherUnidade = (uuidUnidade) => { + console.log('Unidade escolhida:', uuidUnidade) + } + + return( +
+ {loading ? ( + + ) : + } + +
+ ) +} diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index 54c97106f..36e21b037 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -1,10 +1,22 @@ -import React from "react"; +import React, {useState} from "react"; import {TextoExplicativo} from "./TextoExplicativoDaPagina" +import {EscolheUnidade} from "../EscolheUnidade"; +import {visoesService} from "../../../services/visoes.service"; + export const SuporteAsUnidades = (props) =>{ const {visao} = props + let dreUuid = '' + if (visao === "DRE") { + dreUuid = visoesService.getItemUsuarioLogado('associacao_selecionada.uuid') + } + return( - +
+ + +
+ ) } diff --git a/src/services/dres/Unidades.service.js b/src/services/dres/Unidades.service.js index b2780ca55..4f7254805 100644 --- a/src/services/dres/Unidades.service.js +++ b/src/services/dres/Unidades.service.js @@ -15,4 +15,20 @@ export const getUnidade = async () => { export const salvaDadosDiretoria = async (uuid_unidade, payload) => { return (await api.patch(`api/unidades/${uuid_unidade}/`, payload, authHeader)).data -}; \ No newline at end of file +}; + +export const getUnidades = async (dreUuid, search) => { + + let url = 'api/unidades/' + if (dreUuid && search){ + url = `${url}?dre__uuid=${dreUuid}&search=${search}` + } + else if (dreUuid){ + url = `${url}?dre__uuid=${dreUuid}` + } + else if (search){ + url = `${url}?search=${search}` + } + console.log('URL:', url) + return (await api.get(url, authHeader)).data +}; From 49079e5d53cd9069522acfbc7e9c4b239b6b28a2 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Fri, 10 Jun 2022 09:32:38 -0300 Subject: [PATCH 06/98] feat(52292): Cria o componente FiltroDeUnidades MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cria o componente responsável por filtrar uma lista de unidades. O componente apresenta pede um único campo onde o usuário pode digitar o nome ou código eol da unidade, um botão para aplicar o filtro e outro para limpar o filtro. --- .../EscolheUnidade/FiltroDeUnidades.js | 41 ++++++++++++++ .../Globais/EscolheUnidade/ListaDeUnidades.js | 9 ++- .../Globais/EscolheUnidade/index.js | 56 +++++++++++++++---- .../suporte-as-unidades.scss | 1 + 4 files changed, 96 insertions(+), 11 deletions(-) create mode 100644 src/componentes/Globais/EscolheUnidade/FiltroDeUnidades.js diff --git a/src/componentes/Globais/EscolheUnidade/FiltroDeUnidades.js b/src/componentes/Globais/EscolheUnidade/FiltroDeUnidades.js new file mode 100644 index 000000000..6ce3ca6fb --- /dev/null +++ b/src/componentes/Globais/EscolheUnidade/FiltroDeUnidades.js @@ -0,0 +1,41 @@ +import React, {useState} from "react"; + +export const FiltroDeUnidades = ({stateFiltros, handleSubmitFiltros, limpaFiltros, filtroInicial}) =>{ + const [filtros, setFiltros] = useState(stateFiltros); + + const handleChangeFiltros = (name, value) => { + setFiltros({ + ...stateFiltros, + [name]: value + }); + }; + + const handleLimpaFiltros = () => { + setFiltros(filtroInicial) + limpaFiltros() + } + + return( + <> +
handleSubmitFiltros(event, filtros)}> +
+
+ + handleChangeFiltros(e.target.name, e.target.value)} + name="nome_ou_codigo" + type="text" + className="form-control" + placeholder="Escreva o nome ou código que deseja procurar..." + /> +
+
+
+ + +
+
+ + ); +}; diff --git a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js index 79a1ded34..521173db0 100644 --- a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js +++ b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js @@ -43,7 +43,12 @@ export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnida paginatorTemplate="PrevPageLink PageLinks NextPageLink" autoLayout={true} > - + ); diff --git a/src/componentes/Globais/EscolheUnidade/index.js b/src/componentes/Globais/EscolheUnidade/index.js index 0a90965c5..9bc17ac7a 100644 --- a/src/componentes/Globais/EscolheUnidade/index.js +++ b/src/componentes/Globais/EscolheUnidade/index.js @@ -2,34 +2,70 @@ import React, {useEffect, useState} from "react"; import {getUnidades} from "../../../services/dres/Unidades.service" import {ListaDeUnidades} from "./ListaDeUnidades"; import Loading from "../../../utils/Loading"; +import {FiltroDeUnidades} from "./FiltroDeUnidades"; export const EscolheUnidade = (props) =>{ const {dre_uuid} = props - const [loading, setLoading] = useState(true); + const initialStateFiltros = { + nome_ou_codigo: "", + }; + + + const [loading, setLoading] = useState(false); const [listaUnidades, setListaUnidades] = useState([]); + const [stateFiltros, setStateFiltros] = useState(initialStateFiltros); useEffect(()=>{ carregaListaUnidades(); - }, []); + }, [stateFiltros]); const carregaListaUnidades = async ()=>{ - try { - let listaUnidades = await getUnidades(dre_uuid); - setListaUnidades(listaUnidades); - }catch (e) { - console.log("Erro ao carregar lista de unidades.", e) + if (stateFiltros.nome_ou_codigo !== "") { + setLoading(true) + try { + let listaUnidades = await getUnidades(dre_uuid, stateFiltros.nome_ou_codigo); + setListaUnidades(listaUnidades); + }catch (e) { + console.log("Erro ao carregar lista de unidades.", e) + } + setLoading(false) + } + else { + setListaUnidades([]) } - setLoading(false) }; const escolherUnidade = (uuidUnidade) => { console.log('Unidade escolhida:', uuidUnidade) } + const handleChangeFiltros = (name, value) => { + setStateFiltros({ + ...stateFiltros, + [name]: value + }); + }; + + const handleSubmitFiltros = (event, filtros)=>{ + event.preventDefault(); + setStateFiltros(filtros); + }; + + const limpaFiltros = () => { + setStateFiltros(initialStateFiltros); + }; + return(
+ + {loading ? ( { marginTop="0" marginBottom="0" /> - ) : + ) : listaUnidades && listaUnidades.length > 0 ? () : }
diff --git a/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss b/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss index 5a9c25ec4..e18ca97d3 100644 --- a/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss +++ b/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss @@ -1,3 +1,4 @@ .container-texto-explicativo { margin-top: 5px; + padding: 0px; } From 2c3fad59b20d0890a84da9946ee2713b10851698 Mon Sep 17 00:00:00 2001 From: ollyvergithub Date: Fri, 10 Jun 2022 16:05:34 -0300 Subject: [PATCH 07/98] =?UTF-8?q?feat(63286):=20Implementa=20publica=C3=A7?= =?UTF-8?q?=C3=A3o=20relat=C3=B3rios=20consolidados=20da=20DRE=20de=20toda?= =?UTF-8?q?s=20as=20contas=20ao=20clicar=20em=20publicar=20e=20altera?= =?UTF-8?q?=C3=A7=C3=B5es=20de=20layout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AtaParecerTecnico/index.js | 177 +++--- ...DemonstrativoDaExecucaoFisicoFinanceira.js | 81 +++ .../ExecucaoFinanceira/index.js | 93 ---- .../dres/RelatorioConsolidado/Lauda.js | 85 +++ .../PublicarDocumentos.js | 14 + .../TopoComBotoes.js | 13 - .../dres/RelatorioConsolidado/index.js | 512 ++++++------------ .../relatorio-consolidado.scss | 6 +- .../dres/RelatorioConsolidado/index.js | 12 - src/rotas/index.js | 4 +- .../dres/RelatorioConsolidado.service.js | 66 ++- 11 files changed, 513 insertions(+), 550 deletions(-) create mode 100644 src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js delete mode 100644 src/componentes/dres/RelatorioConsolidado/ExecucaoFinanceira/index.js create mode 100644 src/componentes/dres/RelatorioConsolidado/Lauda.js create mode 100644 src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js delete mode 100644 src/paginas/dres/RelatorioConsolidado/index.js diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/index.js index 4083c6cc9..bc3ae69d1 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/index.js @@ -1,12 +1,81 @@ -import React from "react"; +import React, {useCallback, useEffect, useState} from "react"; import './ata-parecer-tecnico.scss'; import { exibeDateTimePT_BR_Ata } from "../../../../utils/ValidacoesAdicionaisFormularios"; -import Spinner from "../../../../assets/img/spinner.gif" import {FontAwesomeIcon} from '@fortawesome/react-fontawesome' import {faDownload} from '@fortawesome/free-solid-svg-icons' +import {getStatusAta} from "../../../../services/dres/RelatorioConsolidado.service"; +import {getDownloadAtaParecerTecnico, getGerarAta} from "../../../../services/dres/AtasParecerTecnico.service"; +import {toastCustom} from "../../../Globais/ToastCustom"; +export const AtaParecerTecnico = ({dre_uuid, periodoEscolhido, statusConsolidadoDre, statusProcessamentoConsolidadoDre, setDisablebtnGerarLauda}) => { + + const [ataParecerTecnico, setAtaParecerTecnico] = useState({}); + const [disablebtnVisualizarAta, setDisablebtnVisualizarAta] = useState(true); + const [disablebtnGerarAta, setDisablebtnGerarAta] = useState(true); + + const consultarStatusAta = useCallback(async () => { + if(dre_uuid && periodoEscolhido && statusConsolidadoDre.status_geracao === "GERADOS_TOTAIS"){ + try{ + let ata = await getStatusAta(dre_uuid, periodoEscolhido); + setAtaParecerTecnico(ata) + setDisablebtnVisualizarAta(false); + setDisablebtnGerarAta(false); + + if(ata.alterado_em && statusProcessamentoConsolidadoDre !== "EM_PROCESSAMENTO"){ + setDisablebtnGerarLauda(false); + } + else{ + setDisablebtnGerarLauda(true); + } + } + catch{ + setAtaParecerTecnico({}) + console.log("Ata não encontrada") + setDisablebtnVisualizarAta(true); + setDisablebtnGerarAta(true); + setDisablebtnGerarLauda(true); + } + } + }, [dre_uuid, periodoEscolhido, statusConsolidadoDre, statusProcessamentoConsolidadoDre, setDisablebtnGerarLauda]) + + useEffect(() => { + consultarStatusAta(); + }, [consultarStatusAta]); + + useEffect(() => { + if (ataParecerTecnico && ataParecerTecnico.status_geracao_pdf && ataParecerTecnico.status_geracao_pdf === "EM_PROCESSAMENTO") { + const timer = setInterval(() => { + consultarStatusAta(); + }, 5000); + // clearing interval + return () => clearInterval(timer); + } + }); + + const onClickVerAta = (uuid_ata) =>{ + window.location.assign(`/visualizacao-da-ata-parecer-tecnico/${uuid_ata}/`) + }; + + const downloadAtaParecerTecnico = async () =>{ + await getDownloadAtaParecerTecnico(ataParecerTecnico.uuid); + }; + + const handleClickGerarAta = async () => { + try { + await getGerarAta(ataParecerTecnico.uuid, dre_uuid, periodoEscolhido); + let mensagem_parte_1 = "Quando a geração for concluída um botão para download ficará" + let mensagem_parte_2 = "disponível na área da Ata." + toastCustom.ToastCustomInfo('Ata sendo gerada', {mensagem_parte_1}
{mensagem_parte_2}
) + setAtaParecerTecnico({ + ...ataParecerTecnico, + status_geracao_pdf: "EM_PROCESSAMENTO" + }) + } + catch (e) { + console.log('Erro ao gerar ata ', e.response.data); + } + } -export const AtaParecerTecnico = ({ataParecerTecnico, onClickVerAta, disablebtnVisualizarAta, downloadAtaParecerTecnico, handleClickGerarAta, disablebtnGerarAta}) => { const mensagem = (ata) => { if(ata.uuid === undefined){ return "Documento pendente de geração"; @@ -29,82 +98,48 @@ export const AtaParecerTecnico = ({ataParecerTecnico, onClickVerAta, disablebtnV } const emProcessamento = (ata) => { - if(ata && ata.status_geracao_pdf && ata.status_geracao_pdf === "EM_PROCESSAMENTO"){ - return true; - } - - return false; + return !!(ata && ata.status_geracao_pdf && ata.status_geracao_pdf === "EM_PROCESSAMENTO"); } - - const mensagemGeracao = (ata) => { - if(ata.status_geracao_pdf === "EM_PROCESSAMENTO"){ - return ( - - Gerando ata em PDF. Aguarde - - ) - } - } - return ( <> -
-
-
-
- Atas de Parecer Técnico Conclusivo +
+
+
+
+

Ata de apresentação do Parecer Técnico Conclusivo

+

+ {mensagem(ataParecerTecnico)} + {ataParecerTecnico.arquivo_pdf && + + } +

- -
- {ataParecerTecnico && ataParecerTecnico.alterado_em && - - } - +
+
+ {ataParecerTecnico && ataParecerTecnico.alterado_em && -
-
- -
-
-

Ata de apresentação de Parecer Técnico Conclusivo

-

- - {mensagem(ataParecerTecnico)} - - - <> - {emProcessamento(ataParecerTecnico) - ? - mensagemGeracao(ataParecerTecnico) - : - ataParecerTecnico.arquivo_pdf && - - } - -

-
+ } +
diff --git a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js new file mode 100644 index 000000000..c969b6ee4 --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js @@ -0,0 +1,81 @@ +import React, {memo, useCallback, useEffect, useState} from "react"; +import {getDocumentosConsolidadoDre, getDownloadRelatorio} from "../../../services/dres/RelatorioConsolidado.service"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faDownload} from "@fortawesome/free-solid-svg-icons"; + +const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolidadoDre, periodoEscolhido}) => { + + const [relatoriosFisicoFinanceiros, setRelatoriosFisicoFinanceiros] = useState([]); + + const retornaRelatoriosFisicoFinanceiros = useCallback(async () => { + if (consolidadoDre && consolidadoDre.uuid) { + try { + let documentos = await getDocumentosConsolidadoDre(consolidadoDre.uuid) + setRelatoriosFisicoFinanceiros(documentos.relatorios_consolidados_dre_do_consolidado_dre) + } catch (e) { + console.log("Erro ao buscar Relatórios Físico Financeiros ", e) + } + } else { + setRelatoriosFisicoFinanceiros(false) + } + }, [consolidadoDre]) + + useEffect(() => { + retornaRelatoriosFisicoFinanceiros() + }, [retornaRelatoriosFisicoFinanceiros]) + + const retornaClasseMensagem = (texto) => { + let classeMensagem = "documento-gerado"; + if (texto === 'NAO_GERADOS') { + classeMensagem = "documento-pendente" + } + if (texto === 'EM_PROCESSAMENTO') { + classeMensagem = "documento-processando" + } + return classeMensagem + } + + const downloadRelatorio = async (relatorio_uuid, relatorio_versao) =>{ + await getDownloadRelatorio(relatorio_uuid, relatorio_versao); + }; + + const onClickPreencherRelatorio = (contaEscolhida) =>{ + window.location.assign(`/dre-relatorio-consolidado-apuracao/${periodoEscolhido}/${contaEscolhida}/`) + }; + + return ( +
+ {relatoriosFisicoFinanceiros && relatoriosFisicoFinanceiros.length > 0 ? ( + <> + {relatoriosFisicoFinanceiros.map((relatorio) => +
+
+
+

Demonstrativo da Execução Físico-Financeira - {relatorio.tipo_conta && relatorio.tipo_conta.nome ? "Conta " + relatorio.tipo_conta.nome : ""}

+

+ {statusConsolidadoDre.status_arquivo} + +

+
+
+
+ +
+
+ )} + + ) : +
+

Documentos não gerados

+
+ } +
+ ) +} +export default memo(DemonstrativoDaExecucaoFisicoFinanceira) \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/ExecucaoFinanceira/index.js b/src/componentes/dres/RelatorioConsolidado/ExecucaoFinanceira/index.js deleted file mode 100644 index 96f9a8726..000000000 --- a/src/componentes/dres/RelatorioConsolidado/ExecucaoFinanceira/index.js +++ /dev/null @@ -1,93 +0,0 @@ -import React from "react"; -import Spinner from "../../../../assets/img/spinner.gif" -import {FontAwesomeIcon} from '@fortawesome/react-fontawesome' -import {faDownload} from '@fortawesome/free-solid-svg-icons' - -export const ExecucaoFinanceira =({statusRelatorio, textoBtnRelatorio, gerarPrevia, downloadPreviaRelatorio, downloadRelatorio}) =>{ - const emProcessamento = statusRelatorio.status_geracao === 'EM_PROCESSAMENTO' - let classeMensagem = "documento-gerado"; - if (statusRelatorio.status_geracao === 'NAO_GERADO') { - classeMensagem = "documento-pendente" - } - if (statusRelatorio.status_geracao === 'EM_PROCESSAMENTO') { - classeMensagem = "documento-processando" - } - - const relatorioGerado = (status) => { - if(status === "GERADO_PARCIAL" || status === "GERADO_TOTAL"){ - return true; - } - - return false; - } - - return( - <> - {statusRelatorio && -
-
-

Execução Financeira

-
-
-
-

Demonstrativo da Execução Físico-Financeira

-

- - {statusRelatorio.status_arquivo ? statusRelatorio.status_arquivo : ''} {emProcessamento ? : ''} - - - {relatorioGerado(statusRelatorio.status_geracao) && statusRelatorio.versao === "PREVIA" ? - - : - null - } - - -

- - -
-
- {statusRelatorio.versao !== "FINAL" && - - } - -
-
-
-
-
- } - - - ) -}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/Lauda.js b/src/componentes/dres/RelatorioConsolidado/Lauda.js new file mode 100644 index 000000000..ee78fef5d --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/Lauda.js @@ -0,0 +1,85 @@ +import React, {memo} from "react"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faDownload} from "@fortawesome/free-solid-svg-icons"; +import {exibeDateTimePT_BR_Ata} from "../../../utils/ValidacoesAdicionaisFormularios"; +import {postGerarLauda} from "../../../services/dres/RelatorioConsolidado.service"; + +const Lauda = ({dre_uuid, periodoEscolhido, disablebtnGerarLauda, lauda={}}) => { + + const mensagem = (lauda) => { + if(!lauda || lauda.uuid === undefined){ + return "Documento pendente de geração"; + } + else if(lauda.uuid && lauda.alterado_em){ + return "Último preenchimento em " + exibeDateTimePT_BR_Ata(lauda.alterado_em); + } + else if(lauda.uuid && lauda.alterado_em === null){ + return "Lauda não preenchida"; + } + } + + const classeMensagem = (lauda) => { + if(!lauda || lauda.uuid === undefined || lauda.alterado_em === null){ + return "documento-pendente" + } + else if(lauda.uuid && lauda.alterado_em){ + return "documento-gerado" + } + } + + const gerarLauda = async () => { + alert("Método ainda não implementado!!") + return + const payload = { + dre_uuid: dre_uuid, + periodo_uuid: periodoEscolhido, + }; + + try{ + await postGerarLauda(payload); + console.log('Solicitação de lauda enviada com sucesso.'); + }catch(e){ + console.log('Erro ao gerar lauda ', e.response.data); + } + } + + + return( +
+
+
+
+

Lauda

+

+ {mensagem(lauda)} + {lauda && lauda.uuid && + + + } +

+ +
+
+
+ + + +
+
+
+ ) + +} +export default memo(Lauda) \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js b/src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js new file mode 100644 index 000000000..b38baf5f3 --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js @@ -0,0 +1,14 @@ +import React, {memo} from "react"; + +const PublicarDocumentos = ({publicarConsolidadoDre}) => { + + return( +
+
Relatórios
+
+ +
+
+ ) +} +export default memo(PublicarDocumentos) \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js index 6ab7e9e1d..bf0e31817 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js @@ -1,5 +1,4 @@ import React from "react"; -import {visoesService} from "../../../../services/visoes.service"; export const TopoComBotoes = ({periodoNome, contaNome, onClickGerarRelatorio, textoBtnRelatorio}) =>{ return( @@ -9,18 +8,6 @@ export const TopoComBotoes = ({periodoNome, contaNome, onClickGerarRelatorio, te
- {visoesService.getPermissoes(['gerar_relatorio_consolidado_dre']) - ? -
- -
- : null}
) diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index 2b872521f..961b6b361 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -1,401 +1,243 @@ -import React, {useEffect, useState} from "react"; -import {getFiqueDeOlhoRelatoriosConsolidados, getConsultarStatus, getTiposConta, getDownloadRelatorio, postGerarPreviaRelatorio, postGerarLauda, getStatusAta} from "../../../services/dres/RelatorioConsolidado.service"; +import React, {useCallback, useEffect, useState, memo} from "react"; +import {visoesService} from "../../../services/visoes.service"; +import { + getFiqueDeOlhoRelatoriosConsolidados, + getStatusConsolidadoDre, + postPublicarConsolidadoDre, + getConsolidadoDre, +} from "../../../services/dres/RelatorioConsolidado.service"; import {getItensDashboard, getPeriodos} from "../../../services/dres/Dashboard.service"; import {SelectPeriodo} from "./SelectPeriodo"; -import {SelectConta} from "./SelectConta"; -import {MsgImgCentralizada} from "../../Globais/Mensagens/MsgImgCentralizada"; -import Img404 from "../../../assets/img/img-404.svg"; -import {TrilhaDeStatus} from "./TrilhaDeStatus"; -import {visoesService} from "../../../services/visoes.service"; +import {PaginasContainer} from "../../../paginas/PaginasContainer"; import {BarraDeStatus} from "./BarraDeStatus"; -import {ExecucaoFinanceira} from "./ExecucaoFinanceira"; -import { AtaParecerTecnico } from "./AtaParecerTecnico"; import './relatorio-consolidado.scss' +import Img404 from "../../../assets/img/img-404.svg"; +import {MsgImgCentralizada} from "../../Globais/Mensagens/MsgImgCentralizada"; +import {TrilhaDeStatus} from "./TrilhaDeStatus"; import Loading from "../../../utils/Loading"; -import { ModalMsgGeracaoRelatorio, ModalMsgGeracaoLauda } from "./ModalMsgGeracaoRelatorio"; -import { getDownloadAtaParecerTecnico, getGerarAta } from "../../../services/dres/AtasParecerTecnico.service"; -import {toastCustom} from "../../Globais/ToastCustom"; +import PublicarDocumentos from "./PublicarDocumentos"; +import DemonstrativoDaExecucaoFisicoFinanceira from "./DemonstrativoDaExecucaoFisicoFinanceira"; +import {AtaParecerTecnico} from "./AtaParecerTecnico"; +import Lauda from "./Lauda"; -export const RelatorioConsolidado = () => { +const RelatorioConsolidado = () => { const dre_uuid = visoesService.getItemUsuarioLogado('associacao_selecionada.uuid'); const [fiqueDeOlho, setFiqueDeOlho] = useState(""); + + // Consolidado DRE + const [consolidadoDre, setConsolidadoDre] = useState(false); + const [statusConsolidadoDre, setStatusConsolidadoDre] = useState(false); + const [statusProcessamentoConsolidadoDre, setStatusProcessamentoConsolidadoDre] = useState(''); const [periodos, setPeriodos] = useState(false); const [periodoEscolhido, setPeriodoEsolhido] = useState(false); - const [itensDashboard, setItensDashboard] = useState(false); - const [contas, setContas] = useState(false); - const [contaEscolhida, setContaEscolhida] = useState(false); - const [statusRelatorio, setStatusRelatorio] = useState(false); - const [totalEmAnalise, setTotalEmAnalise] = useState(0); - const [loading, setLoading] = useState(false); - const [showModalMsgGeracaoRelatorio, setShowModalMsgGeracaoRelatorio] = useState(false); - const [showModalMsgGeracaoLauda, setShowModalMsgGeracaoLauda] = useState(false); - const [msgGeracaoRelatorio, setMsgGeracaoRelatorio] = useState(''); - const [msgGeracaoLauda, setMsgGeracaoLauda] = useState(''); - const [ataParecerTecnico, setAtaParecerTecnico] = useState({}); - const [disablebtnVisualizarAta, setDisablebtnVisualizarAta] = useState(true); - const [disablebtnGerarAta, setDisablebtnGerarAta] = useState(true); + + // Lauda const [disablebtnGerarLauda, setDisablebtnGerarLauda] = useState(true); - useEffect(() => { - if (statusRelatorio && statusRelatorio.status_geracao && statusRelatorio.status_geracao === "EM_PROCESSAMENTO") { - const timer = setInterval(() => { - consultarStatus(); - }, 5000); - // clearing interval - return () => clearInterval(timer); - } - }); + const [itensDashboard, setItensDashboard] = useState(false); + const [loading, setLoading] = useState(false); - useEffect(() => { - if (ataParecerTecnico && ataParecerTecnico.status_geracao_pdf && ataParecerTecnico.status_geracao_pdf === "EM_PROCESSAMENTO") { - const timer = setInterval(() => { - consultarStatusAta(); - }, 5000); - // clearing interval - return () => clearInterval(timer); + const carregaPeriodos = useCallback(async () => { + try { + let periodos = await getPeriodos(); + setPeriodos(periodos); + if (periodos && periodos.length > 0) { + setPeriodoEsolhido(periodos[0].uuid) + } + }catch (e) { + console.log("Erro ao buscar períodos ", e) } - }); - - useEffect(() => { - buscaFiqueDeOlho(); }, []); useEffect(() => { - carregaPeriodos(); - }, []); - - useEffect(() => { - carregaContas(); - }, []); - - useEffect(() => { - carregaItensDashboard(); - }, [periodoEscolhido]); + carregaPeriodos() + }, [carregaPeriodos]) + + const carregaConsolidadoDre = useCallback(async () => { + if (dre_uuid && periodoEscolhido){ + try { + let consolidado_dre = await getConsolidadoDre(dre_uuid, periodoEscolhido) + if (consolidado_dre && consolidado_dre.length > 0){ + setConsolidadoDre(consolidado_dre[0]) + }else { + setConsolidadoDre(false) + } + }catch (e) { + console.log("Erro ao buscar Consolidado Dre ", e) + } + } + }, [dre_uuid, periodoEscolhido]) useEffect(() => { - consultarStatus(); - }, [periodoEscolhido, contaEscolhida]); + carregaConsolidadoDre() + }, [carregaConsolidadoDre]) + + const retornaStatusConsolidadoDre = useCallback(async () => { + if (dre_uuid && periodoEscolhido) { + try { + let status = await getStatusConsolidadoDre(dre_uuid, periodoEscolhido) + setStatusConsolidadoDre(status) + setStatusProcessamentoConsolidadoDre(status.status_geracao) + }catch (e) { + console.log("Erro ao buscar status Consolidado Dre ", e) + } + } + }, [dre_uuid, periodoEscolhido]) useEffect(() => { - retornaQtdeEmAnalise(); - }, [itensDashboard]); + retornaStatusConsolidadoDre() + }, [retornaStatusConsolidadoDre]) useEffect(() => { - consultarStatusAta(); - }, [periodoEscolhido, statusRelatorio]); - - const carregaPeriodos = async () => { - let periodos = await getPeriodos(); - setPeriodos(periodos); - if (periodos && periodos.length > 0){ - setPeriodoEsolhido(periodos[0].uuid) - } - }; - - const setaStatusComoProcessando = () => { - const statusProcessando = { - pcs_em_analise: false, - status_geracao: "EM_PROCESSAMENTO", - status_txt: "Análise de prestações de contas das associações completa. Relatório em processamento.", - cor_idx: 3, - status_arquivo: "Previa do relatório sendo gerada. Aguarde." + if (statusProcessamentoConsolidadoDre && statusProcessamentoConsolidadoDre === "EM_PROCESSAMENTO") { + setLoading(true) + const timer = setInterval(() => { + retornaStatusConsolidadoDre(); + }, 5000); + // clearing interval + return () => clearInterval(timer); + } else { + setLoading(false) } - setStatusRelatorio(statusProcessando); - }; + }, [statusProcessamentoConsolidadoDre, retornaStatusConsolidadoDre]); - const carregaContas = async () => { + const buscaFiqueDeOlho = useCallback(async () => { try { - let tipo_contas = await getTiposConta(); - setContas(tipo_contas); - if (tipo_contas && tipo_contas.length > 0){ - setContaEscolhida(tipo_contas[0].uuid) - } + let fique_de_olho = await getFiqueDeOlhoRelatoriosConsolidados(); + setFiqueDeOlho(fique_de_olho.detail); }catch (e) { - console.log("Erro ao trazer os tipos de contas ", e); + console.log("Erro ao buscar Fique de Olho ", e) } - }; + }, []) - const carregaItensDashboard = async () =>{ - if (periodoEscolhido){ + useEffect(() => { + buscaFiqueDeOlho() + }, [buscaFiqueDeOlho]) + + const carregaItensDashboard = useCallback(async () => { + if (periodoEscolhido) { let itens = await getItensDashboard(periodoEscolhido); setItensDashboard(itens) } - }; + }, [periodoEscolhido]); - const buscaFiqueDeOlho = async () => { - let fique_de_olho = await getFiqueDeOlhoRelatoriosConsolidados(); - setFiqueDeOlho(fique_de_olho.detail); - }; + useEffect(() => { + carregaItensDashboard() + }, [carregaItensDashboard]) const handleChangePeriodos = async (uuid_periodo) => { setPeriodoEsolhido(uuid_periodo) }; - const handleChangeContas = async (uuid_conta) => { - setContaEscolhida(uuid_conta) - }; - const retornaQtdeStatus = (status) => { let item = itensDashboard.cards.find(element => element.status === status); let qtde_itens = item.quantidade_prestacoes; - if (qtde_itens <= 9){ + if (qtde_itens <= 9) { return '0' + qtde_itens; - }else { + } else { return qtde_itens.toString(); } }; - const retornaQtdeStatusTotal = () =>{ + const retornaQtdeStatusTotal = () => { if (itensDashboard) { let total = itensDashboard.cards.filter(elemtent => elemtent.status === 'APROVADA' || elemtent.status === 'REPROVADA').reduce((total, valor) => total + valor.quantidade_prestacoes, 0); - if (total <= 9){ + if (total <= 9) { return '0' + total; - }else { + } else { return total.toString(); } } }; - const retornaQtdeEmAnalise = () => { - if (itensDashboard) { - let total = itensDashboard.cards.filter(elemtent => elemtent.status === 'RECEBIDA' || elemtent.status === 'DEVOLVIDA' || elemtent.status === 'EM_ANALISE').reduce((total, valor) => total + valor.quantidade_prestacoes, 0); - setTotalEmAnalise(total) - } - }; - - const consultarStatus = async () =>{ - if (dre_uuid && periodoEscolhido && contaEscolhida){ - let status = await getConsultarStatus(dre_uuid, periodoEscolhido, contaEscolhida); - setStatusRelatorio(status); - } - }; - - const consultarStatusAta = async() => { - if(dre_uuid && periodoEscolhido && statusRelatorio.versao === "FINAL"){ - try{ - let ata = await getStatusAta(dre_uuid, periodoEscolhido); - setAtaParecerTecnico(ata) - setDisablebtnVisualizarAta(false); - setDisablebtnGerarAta(false); - - if(ata.alterado_em && statusRelatorio.status_geracao !== "EM_PROCESSAMENTO"){ - setDisablebtnGerarLauda(false); - } - else{ - setDisablebtnGerarLauda(true); - } - - } - catch{ - setAtaParecerTecnico({}) - console.log("Ata não encontrada") - setDisablebtnVisualizarAta(true); - setDisablebtnGerarAta(true); - setDisablebtnGerarLauda(true); - } - - - } - } - - const onClickVerRelatorio = () =>{ - window.location.assign(`/dre-relatorio-consolidado-apuracao/${periodoEscolhido}/${contaEscolhida}/`) - }; - - const onClickVerAta = (uuid_ata) =>{ - window.location.assign(`/visualizacao-da-ata-parecer-tecnico/${uuid_ata}/`) - }; - - const textoBtnRelatorio = () =>{ - if(statusRelatorio.versao === "FINAL"){ - if (statusRelatorio.status_geracao === 'GERADO_TOTAL'){ - return 'Documento gerado' - }else if (statusRelatorio.status_geracao === 'GERADO_PARCIAL'){ - return 'Documento parcial gerado' - }else if (statusRelatorio.status_geracao === 'NAO_GERADO'){ - return 'Documento não gerado' - }else if (statusRelatorio.status_geracao === "EM_PROCESSAMENTO"){ - return 'Relatório sendo gerado...' - } - } - - return 'Documento não gerado' - }; - - const gerarPrevia = async () => { - let parcial = totalEmAnalise > 0; - const payload = { - dre_uuid: dre_uuid, - periodo_uuid: periodoEscolhido, - tipo_conta_uuid: contaEscolhida, - parcial: parcial - }; - - try{ - await postGerarPreviaRelatorio(payload); - console.log('Solicitação de previa do relatório enviada com sucesso.'); - setMsgGeracaoRelatorio('O relatório está sendo gerado, enquanto isso você pode continuar a usar o sistema. Quando a geração for concluída um botão para download ficará disponível.'); - setShowModalMsgGeracaoRelatorio(true); - setaStatusComoProcessando(); - }catch(e){ - setMsgGeracaoRelatorio('Erro ao gerar relatório'); - setShowModalMsgGeracaoRelatorio(true); - console.log('Erro ao gerar relatório ', e.response.data); - } - - } - - const gerarLauda = async () => { - let parcial = totalEmAnalise > 0; - const payload = { + const publicarConsolidadoDre = async () => { + let payload = { dre_uuid: dre_uuid, - periodo_uuid: periodoEscolhido, - tipo_conta_uuid: contaEscolhida, - parcial: parcial - }; - - try{ - await postGerarLauda(payload); - console.log('Solicitação de lauda enviada com sucesso.'); - setMsgGeracaoLauda('A lauda está sendo gerada e será enviada para a central de downloads.') - setShowModalMsgGeracaoLauda(true); - }catch(e){ - setMsgGeracaoLauda('Erro ao gerar lauda.') - setShowModalMsgGeracaoLauda(true); - console.log('Erro ao gerar lauda ', e.response.data); + periodo_uuid: periodoEscolhido } - } - - const downloadRelatorio = async () =>{ - await getDownloadRelatorio(dre_uuid, periodoEscolhido, contaEscolhida, statusRelatorio.versao); - }; - - const downloadPreviaRelatorio = async () =>{ - await getDownloadRelatorio(dre_uuid, periodoEscolhido, contaEscolhida, statusRelatorio.versao); - }; - - const downloadAtaParecerTecnico = async () =>{ - await getDownloadAtaParecerTecnico(ataParecerTecnico.uuid); - }; - - const onHandleClose = () => { - setShowModalMsgGeracaoRelatorio(false); - }; - - const onHandleCloseModalMsgLauda = () => { - setShowModalMsgGeracaoLauda(false); - }; - - const handleClickGerarAta = async () => { try { - await getGerarAta(ataParecerTecnico.uuid, dre_uuid, periodoEscolhido); - let mensagem_parte_1 = "Quando a geração for concluída um botão para download ficará" - let mensagem_parte_2 = "disponível na área da Ata." - toastCustom.ToastCustomInfo('Ata sendo gerada', {mensagem_parte_1}
{mensagem_parte_2}
) - setAtaParecerTecnico({ - ...ataParecerTecnico, - status_geracao_pdf: "EM_PROCESSAMENTO" - }) - } - catch (e) { - console.log('Erro ao gerar ata ', e.response.data); + let publicar = await postPublicarConsolidadoDre(payload) + setStatusProcessamentoConsolidadoDre(publicar.status) + setConsolidadoDre(publicar) + }catch (e) { + console.log("Erro ao publicar Consolidado Dre ", e) } } return ( - <> - {loading ? ( -
- -
- ) : - <> -
-
-
-
- {statusRelatorio && - - } - - {periodoEscolhido && - - } - {periodoEscolhido && itensDashboard ? ( - <> - - - - {statusRelatorio.versao === "FINAL" && statusRelatorio.status_geracao === "GERADO_TOTAL" && ataParecerTecnico && - - } - - - ) : - +

Relatório consolidado

+ + <> + {loading ? ( +
+ - } - -
- -
- -
- Os documentos estão sendo gerados. Enquanto isso, você pode realizar outras atividades no sistema.

+
+ ) : + <> +
+
+
+
+ {statusConsolidadoDre && + + } + - - -
- - } - + {periodoEscolhido && dre_uuid && itensDashboard ? ( + <> + + + + {statusConsolidadoDre && statusConsolidadoDre.status_geracao === "GERADOS_TOTAIS" && + + } + + + ) : + + } +
+ + } + + ) -}; \ No newline at end of file +} + +export default memo(RelatorioConsolidado) \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss b/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss index 221d04f69..b3bb0338d 100644 --- a/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss +++ b/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss @@ -35,10 +35,14 @@ color: #00585e; } -.container-box-consultar-dados{ +.container-box-consultar-dados, .container-publicar-cabecalho{ background-color: #F3F3F3; } +.container-publicar-cabecalho{ + border-color: #DADADA; +} + .tabela-execucao-financeira, .tabela-devolucoes, .tabela-execucao-fisica{ .tr-titulo{ background-color: #F5F6F8; diff --git a/src/paginas/dres/RelatorioConsolidado/index.js b/src/paginas/dres/RelatorioConsolidado/index.js deleted file mode 100644 index a23b02f6e..000000000 --- a/src/paginas/dres/RelatorioConsolidado/index.js +++ /dev/null @@ -1,12 +0,0 @@ -import React from "react"; -import {PaginasContainer} from '../../PaginasContainer' -import {RelatorioConsolidado} from "../../../componentes/dres/RelatorioConsolidado"; - -export const RelatorioConsolidadoPage = () => { - return ( - -

Relatório consolidado

- -
- ) -}; \ No newline at end of file diff --git a/src/rotas/index.js b/src/rotas/index.js index 1719fcd8e..53e057a92 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -45,7 +45,7 @@ import {DreDashboardPage} from "../paginas/dres/DreDashboard"; import {ListaPrestacaoDeContas} from "../componentes/dres/PrestacaoDeContas/ListaPrestacaoDeContas"; import {DetalhePrestacaoDeContas} from "../componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas"; import {DetalhePrestacaoDeContasNaoApresentada} from "../componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContasNaoApresentada"; -import {RelatorioConsolidadoPage} from "../paginas/dres/RelatorioConsolidado"; +import RelatorioConsolidado from "../componentes/dres/RelatorioConsolidado"; import {RelatorioConsolidadoApuracao} from "../componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao"; import {RelatorioConsolidadoDadosDasUes} from "../componentes/dres/RelatorioConsolidado/RelatorioConsolidadoDadosDasUes"; import {PainelParametrizacoesPage} from "../paginas/SME/Parametrizacoes/PainelParametrizacoes"; @@ -302,7 +302,7 @@ const routesConfig = [ { exact: true, path: "/dre-relatorio-consolidado", - component: RelatorioConsolidadoPage, + component: RelatorioConsolidado, permissoes: ['access_relatorio_consolidado_dre'], }, { diff --git a/src/services/dres/RelatorioConsolidado.service.js b/src/services/dres/RelatorioConsolidado.service.js index 4e24cb0de..7d7840bef 100644 --- a/src/services/dres/RelatorioConsolidado.service.js +++ b/src/services/dres/RelatorioConsolidado.service.js @@ -9,6 +9,49 @@ const authHeader = { } }; +// Consolidado DRE + +export const getConsolidadoDre = async (dre_uuid, periodo_uuid) => { + return (await api.get(`/api/consolidados-dre/?dre=${dre_uuid}&periodo=${periodo_uuid}`, authHeader)).data +}; + +export const getStatusConsolidadoDre = async (dre_uuid, periodo_uuid) => { + return (await api.get(`/api/consolidados-dre/status-consolidado-dre/?dre=${dre_uuid}&periodo=${periodo_uuid}`, authHeader)).data +}; + +export const getDocumentosConsolidadoDre = async (consolidado_dre_uuid) => { + return (await api.get(`/api/consolidados-dre/${consolidado_dre_uuid}/documentos/`, authHeader)).data +}; + +export const postPublicarConsolidadoDre = async (payload) => { + return (await api.post(`/api/consolidados-dre/publicar/`, payload, authHeader)).data +}; + +export const getDownloadRelatorio = async (relatorio_uuid, versao) => { + return api + .get(`/api/consolidados-dre/${relatorio_uuid}/download/`, { + responseType: 'blob', + timeout: 30000, + headers: { + 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, + 'Content-Type': 'application/json', + } + }) + .then((response) => { + const url = window.URL.createObjectURL(new Blob([response.data])); + const filename = (versao === "FINAL") ? 'relatorio_fisico_financeiro_dre.pdf' : 'previa_relatorio_fisico_financeiro_dre.pdf' + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', filename); + document.body.appendChild(link); + link.click(); + }).catch(error => { + return error.response; + }); +}; + +// FIM Consolidado DRE + export const getFiqueDeOlhoRelatoriosConsolidados = async () => { return (await api.get(`/api/relatorios-consolidados-dre/fique-de-olho/`, authHeader)).data }; @@ -85,29 +128,6 @@ export const postGerarLauda = async (payload) => { return (await api.post(`/api/relatorios-consolidados-dre/gerar-lauda/`, payload, authHeader)).data }; -export const getDownloadRelatorio = async (dre_uuid, periodo_uuid, conta_uuid, versao) => { - return api - .get(`/api/relatorios-consolidados-dre/download/?dre=${dre_uuid}&periodo=${periodo_uuid}&tipo_conta=${conta_uuid}`, { - responseType: 'blob', - timeout: 30000, - headers: { - 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, - 'Content-Type': 'application/json', - } - }) - .then((response) => { - const url = window.URL.createObjectURL(new Blob([response.data])); - const filename = (versao === "FINAL") ? 'relatorio_dre.pdf' : 'previa_relatorio_dre.pdf' - const link = document.createElement('a'); - link.href = url; - link.setAttribute('download', filename); - document.body.appendChild(link); - link.click(); - }).catch(error => { - return error.response; - }); -}; - export const getListaAssociacoesNaoRegularizadas = async (dre_uuid) => { return (await api.get(`/api/associacoes/?unidade__dre__uuid=${dre_uuid}&status_regularidade=PENDENTE`, authHeader)).data }; From 3973e9767caabffa8e99a6e4793ec05dcdd5a77e Mon Sep 17 00:00:00 2001 From: luke Date: Mon, 13 Jun 2022 16:13:07 -0300 Subject: [PATCH 08/98] feat(60461): Adiciona listagem de valores reprogramados MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agora é possível consultar os valores reprogramados através do menu --- .../img/icone-menu-valores-reprogramados.svg | 3 + .../Globais/SidebarLeft/getUrls.js | 2 + .../dres/ValoresReprogramadosDre/Cabecalho.js | 14 ++ .../dres/ValoresReprogramadosDre/Filtros.js | 80 ++++++ .../TabelaValoresReprogramados.js | 50 ++++ .../dres/ValoresReprogramadosDre/index.js | 230 ++++++++++++++++++ .../valoresReprogramadosDre.scss | 35 +++ .../dres/ValoresReprogramadosDre/index.js | 14 ++ src/rotas/index.js | 8 + .../dres/ValoresReprogramadosDre.service.js | 24 ++ 10 files changed, 460 insertions(+) create mode 100644 src/assets/img/icone-menu-valores-reprogramados.svg create mode 100644 src/componentes/dres/ValoresReprogramadosDre/Cabecalho.js create mode 100644 src/componentes/dres/ValoresReprogramadosDre/Filtros.js create mode 100644 src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js create mode 100644 src/componentes/dres/ValoresReprogramadosDre/index.js create mode 100644 src/componentes/dres/ValoresReprogramadosDre/valoresReprogramadosDre.scss create mode 100644 src/paginas/dres/ValoresReprogramadosDre/index.js create mode 100644 src/services/dres/ValoresReprogramadosDre.service.js diff --git a/src/assets/img/icone-menu-valores-reprogramados.svg b/src/assets/img/icone-menu-valores-reprogramados.svg new file mode 100644 index 000000000..63ca65f61 --- /dev/null +++ b/src/assets/img/icone-menu-valores-reprogramados.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/componentes/Globais/SidebarLeft/getUrls.js b/src/componentes/Globais/SidebarLeft/getUrls.js index f01a491ef..af3d3def3 100644 --- a/src/componentes/Globais/SidebarLeft/getUrls.js +++ b/src/componentes/Globais/SidebarLeft/getUrls.js @@ -12,6 +12,7 @@ import IconeGestaoDePerfis from "../../../assets/img/icone-menu-gestao-de-perfis import IconeMenuParametrizacoes from "../../../assets/img/icone-menu-parametrizacoes.svg" import IconeMenuSaldosBancarios from "../../../assets/img/icone-menu-sme-saldos-bancarios.svg" import IconeMenuFornecedores from "../../../assets/img/icone-menu-fornecedores.svg" +import IconeMenuValoresReprogramados from "../../../assets/img/icone-menu-valores-reprogramados.svg" const getDadosUsuario = () =>{ let usuario = localStorage.getItem(USUARIO_NOME); @@ -63,6 +64,7 @@ const UrlsMenuDres ={ }, lista_de_urls:[ {label: "Associações", url: "dre-associacoes", dataFor:"dre_associacoes", icone:IconeMenuGastosDaEscola, permissoes: ['access_associacao_dre'],}, + {label: "Valores reprogramados", url: "dre-valores-reprogramados", dataFor: "dre-valores-reprogramados", icone: IconeMenuValoresReprogramados, permissoes: ['access_valores_reprogramados_dre']}, {label: "Regularidade", url: "regularidade-associacoes", dataFor:"regularidade_associacoes", icone:IconeMenuGastosDaEscola, permissoes: ['access_regularidade_dre'],}, {label: "Acompanhamento de PC", url: "dre-dashboard", dataFor:"dre_dashboard", icone:IconeAcompanhamento, permissoes: ['access_dados_diretoria'],}, {label: "Relatório consolidado", url: "dre-relatorio-consolidado", dataFor:"dre_relatorio_consolidado", icone:IconeRelatorio, permissoes: ['access_relatorio_consolidado_dre']}, diff --git a/src/componentes/dres/ValoresReprogramadosDre/Cabecalho.js b/src/componentes/dres/ValoresReprogramadosDre/Cabecalho.js new file mode 100644 index 000000000..c9b4918c6 --- /dev/null +++ b/src/componentes/dres/ValoresReprogramadosDre/Cabecalho.js @@ -0,0 +1,14 @@ +import React from "react"; + +export const Cabecalho = () => { + return( +
+
+

+ Conferência de valores reprogramados iniciais +

+
+
+ + ) +} \ No newline at end of file diff --git a/src/componentes/dres/ValoresReprogramadosDre/Filtros.js b/src/componentes/dres/ValoresReprogramadosDre/Filtros.js new file mode 100644 index 000000000..abac78724 --- /dev/null +++ b/src/componentes/dres/ValoresReprogramadosDre/Filtros.js @@ -0,0 +1,80 @@ +import React from "react"; +import { Select } from 'antd'; + +export const Filtros = ({ + stateFiltros, + handleChangeFiltros, + handleOnChangeMultipleSelectStatus, + handleSubmitFiltros, + limpaFiltros, + tabelaAssociacoes, + tabelaValoresReprogramados +}) => { + + const { Option } = Select; + + return( +
+
+
+ + handleChangeFiltros(e.target.name, e.target.value)} + name="filtro_search" + id="filtro_search" + type="text" + className="form-control" + placeholder="Escreva o termo que deseja filtrar" + /> +
+ +
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ ) +} \ No newline at end of file diff --git a/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js b/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js new file mode 100644 index 000000000..d4d00a962 --- /dev/null +++ b/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js @@ -0,0 +1,50 @@ +import React from "react"; +import { DataTable } from 'primereact/datatable'; +import { Column } from 'primereact/column'; + +export const TabelaValoresReprogramados = ({ + listaDeValoresReprogramados, + rowsPerPage, + valorTemplateCheque, + valorTemplateCartao, + statusTemplate, + acoesTemplate +}) => { + + return( + rowsPerPage} + paginatorTemplate="PrevPageLink PageLinks NextPageLink" + > + + + + + + + + + + ) +} \ No newline at end of file diff --git a/src/componentes/dres/ValoresReprogramadosDre/index.js b/src/componentes/dres/ValoresReprogramadosDre/index.js new file mode 100644 index 000000000..96c05e240 --- /dev/null +++ b/src/componentes/dres/ValoresReprogramadosDre/index.js @@ -0,0 +1,230 @@ +import React, {useEffect, useState} from "react"; +import "./valoresReprogramadosDre.scss" +import { Cabecalho } from "./Cabecalho"; +import { Filtros } from "./Filtros"; +import { TabelaValoresReprogramados } from "./TabelaValoresReprogramados"; +import { + getListaValoresReprogramados, + filtrosListaValoresReprogramados, + getTabelaValoresReprogramados +} from "../../../services/dres/ValoresReprogramadosDre.service"; +import { + getTabelaAssociacoes, +} from "../../../services/dres/Associacoes.service"; +import { getUnidade } from "../../../services/dres/Unidades.service"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faEdit} from "@fortawesome/free-solid-svg-icons"; +import Loading from "../../../utils/Loading"; +import Img404 from "../../../assets/img/img-404.svg"; +import {MsgImgCentralizada} from "../../Globais/Mensagens/MsgImgCentralizada"; +import {MsgImgLadoDireito} from "../../Globais/Mensagens/MsgImgLadoDireito"; + + +export const ValoresReprogramadosDre = () =>{ + // Tabela Valores Reprogramados + const rowsPerPage = 10; + // Filtros + + // O critério da história pede que venha por padrão filtrado pelos status: + const statusPadrao = ["NAO_FINALIZADO", "EM_CONFERENCIA_DRE", "EM_CORRECAO_UE"] + + const initialStateFiltros = { + filtro_search: "", + filtro_tipo_unidade: "", + filtro_status: statusPadrao, + }; + + const [listaDeValoresReprogramados, setListaDeValoresReprogramados] = useState([]); + const [dadosDiretoria, setDadosDiretoria] = useState(null); + const [loading, setLoading] = useState(true); + const [buscaUtilizandoFiltros, setBuscaUtilizandoFiltros] = useState(false); + const [stateFiltros, setStateFiltros] = useState(initialStateFiltros); + const [tabelaAssociacoes, setTabelaAssociacoes] = useState({}); + const [tabelaValoresReprogramados, setTabelaValoresReprogramados] = useState({}); + + // Consultas a API + useEffect(()=>{ + buscaTabelaAssociacoes(); + }, []); + + useEffect(()=>{ + buscaTabelaValoresReprogramados(); + }, []); + + useEffect(() => { + buscaDiretoria(); + }, []); + + useEffect(() => { + buscaListaDeValoresReprogramados(); + }, [dadosDiretoria]); + + + const buscaDiretoria = async () => { + let diretoria = await getUnidade(); + setDadosDiretoria(diretoria); + setLoading(false); + }; + + const buscaListaDeValoresReprogramados = async () => { + try{ + if(dadosDiretoria && dadosDiretoria.uuid){ + let valoresReprogramados = await getListaValoresReprogramados(dadosDiretoria.uuid, statusPadrao); + setListaDeValoresReprogramados(valoresReprogramados); + } + }catch (e){ + console.log("Erro ao buscar valores reprogramados ", e); + } + + setLoading(false); + } + + const buscaTabelaAssociacoes = async () =>{ + let tabela_associacoes = await getTabelaAssociacoes(); + setTabelaAssociacoes(tabela_associacoes); + }; + + const buscaTabelaValoresReprogramados = async () => { + let tabela_valores_reprogramados = await getTabelaValoresReprogramados(); + setTabelaValoresReprogramados(tabela_valores_reprogramados); + } + + // Filtros + const handleChangeFiltros = (name, value) => { + setStateFiltros({ + ...stateFiltros, + [name]: value + }); + }; + + const handleOnChangeMultipleSelectStatus = async (value) => { + let name = "filtro_status" + + setStateFiltros({ + ...stateFiltros, + [name]: value + }); + } + + const handleSubmitFiltros = async (event)=>{ + setLoading(true); + setBuscaUtilizandoFiltros(true); + event.preventDefault(); + let resultado_filtros = await filtrosListaValoresReprogramados( + dadosDiretoria.uuid, stateFiltros.filtro_search, + stateFiltros.filtro_tipo_unidade, stateFiltros.filtro_status + ); + setListaDeValoresReprogramados(resultado_filtros); + setLoading(false); + }; + + const limpaFiltros = async () => { + setLoading(true); + setStateFiltros(initialStateFiltros); + await buscaListaDeValoresReprogramados(); + setLoading(false); + }; + + // Templates tabela + const valorTemplateCheque = (rowData) => { + const valorFormatado = rowData['total_conta_cheque'] + ? Number(rowData['total_conta_cheque']).toLocaleString('pt-BR', { + style: 'currency', + currency: 'BRL' + }) + : '-'; + return ({valorFormatado}) + }; + + const valorTemplateCartao = (rowData) => { + const valorFormatado = rowData['total_conta_cartao'] + ? Number(rowData['total_conta_cartao']).toLocaleString('pt-BR', { + style: 'currency', + currency: 'BRL' + }) + : '-'; + return ({valorFormatado}) + }; + + const statusTemplate = (rowData) => { + let status = rowData["associacao"]['status_valores_reprogramados'] + + if(status === "NAO_FINALIZADO"){ + return "Não finalizado" + } + else if(status === "EM_CONFERENCIA_DRE"){ + return "Em conferência DRE" + } + else if(status === "EM_CORRECAO_UE"){ + return "Em correção UE" + } + else if(status === "VALORES_CORRETOS"){ + return "Valores corretos" + } + else{ + return "" + } + } + + const acoesTemplate = (rowData) => { + return ( +
+ +
+ ) + } + + + return( + <> + + + + + {loading ? ( + + ) : + listaDeValoresReprogramados && listaDeValoresReprogramados.length > 0 ? ( + + + ) : + buscaUtilizandoFiltros ? + + : + + } + + + ) +} \ No newline at end of file diff --git a/src/componentes/dres/ValoresReprogramadosDre/valoresReprogramadosDre.scss b/src/componentes/dres/ValoresReprogramadosDre/valoresReprogramadosDre.scss new file mode 100644 index 000000000..7917cb978 --- /dev/null +++ b/src/componentes/dres/ValoresReprogramadosDre/valoresReprogramadosDre.scss @@ -0,0 +1,35 @@ +.titulo-valores-reprogramados-dre{ + color: #00585E; + font-size: 24pt; + font-weight: 700; +} + + +/* multiselect */ + +.multiselect-demo .p-multiselect { + min-width: 15rem; +} + +.multiselect-demo .multiselect-custom .p-multiselect-label:not(.p-placeholder):not(.p-multiselect-items-label) { + padding-top: .25rem; + padding-bottom: .25rem; +} + +.multiselect-demo .multiselect-custom .country-item-value { + padding: .25rem .5rem; + border-radius: 3px; + display: inline-flex; + margin-right: .5rem; + background-color: var(--primary-color); + color: var(--primary-color-text); +} + +.multiselect-demo .multiselect-custom .country-item-value img.flag { + width: 17px; +} + +.multiselect-lista-valores-reprogramados .ant-select-selector .ant-select-selection-overflow{ + min-height: calc(1.5em + .75rem + 2px); +} + \ No newline at end of file diff --git a/src/paginas/dres/ValoresReprogramadosDre/index.js b/src/paginas/dres/ValoresReprogramadosDre/index.js new file mode 100644 index 000000000..e500579ef --- /dev/null +++ b/src/paginas/dres/ValoresReprogramadosDre/index.js @@ -0,0 +1,14 @@ +import React from "react"; +import {PaginasContainer} from "../../PaginasContainer"; +import { ValoresReprogramadosDre } from "../../../componentes/dres/ValoresReprogramadosDre"; + +export const ValoresReprogramadosDrePage = () =>{ + return ( + +

Valores reprogramados

+
+ +
+
+ ) +}; \ No newline at end of file diff --git a/src/rotas/index.js b/src/rotas/index.js index 1719fcd8e..c07f03a60 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -33,6 +33,7 @@ import {GestaoDePerfisForm} from "../componentes/Globais/GestaoDePerfis/GestaoDe import {ConsultaDeSaldosBancarios} from "../componentes/sme/ConsultaDeSaldosBancarios"; import {ConsultaDeSaldosBancariosDetalhesAssociacoes} from "../componentes/sme/ConsultaDeSaldosBancarios/ConsultaDeSaldosBancariosDetalhesAssociacoes"; import {RegularidadeAssociacoesPage} from "../paginas/dres/RegularidadeAssociacoes"; +import { ValoresReprogramadosDrePage } from "../paginas/dres/ValoresReprogramadosDre"; import {AnalisesRegularidadeAssociacaoPage} from "../paginas/dres/RegularidadeAssociacoes/AnalisesRegularidadeDaAssociacao"; // Faz o redirect de acordo com a Visao Selecionada import {RedirectLoginVisaoUe} from "../utils/RedirectLoginVisaoUe"; @@ -187,6 +188,13 @@ const routesConfig = [ component: AssociacoesPage, permissoes: ['access_associacao_dre'], }, + { + exact: true, + path: "/dre-valores-reprogramados", + component: ValoresReprogramadosDrePage, + permissoes: ['access_valores_reprogramados_dre'], + }, + { exact: true, path: "/dre-detalhes-associacao/:origem?/:periodo_uuid?/:conta_uuid?", diff --git a/src/services/dres/ValoresReprogramadosDre.service.js b/src/services/dres/ValoresReprogramadosDre.service.js new file mode 100644 index 000000000..ca282fb01 --- /dev/null +++ b/src/services/dres/ValoresReprogramadosDre.service.js @@ -0,0 +1,24 @@ +import api from '../api' +import { TOKEN_ALIAS } from '../auth.service.js'; + +const authHeader = { + headers: { + 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, + 'Content-Type': 'application/json' + } +}; + +export const getListaValoresReprogramados = async (dreUuid, status_padrao) => { + return ( + await api.get(`api/valores-reprogramados/?dre_uuid=${dreUuid}&status=${status_padrao}`, authHeader) + ).data +} + +export const filtrosListaValoresReprogramados = async(dreUuid, search=null, tipo_unidade=null, status_valores=null) => { + const url = `api/valores-reprogramados/?dre_uuid=${dreUuid}&search=${search}&tipo_unidade=${tipo_unidade}&status=${status_valores}` + return (await api.get(url, authHeader)).data +} + +export const getTabelaValoresReprogramados = async () => { + return (await api.get(`/api/valores-reprogramados/tabelas`, authHeader)).data +}; \ No newline at end of file From 176a6e20140287d3c0cce941d70ee81502d63a3a Mon Sep 17 00:00:00 2001 From: luke Date: Mon, 13 Jun 2022 16:55:26 -0300 Subject: [PATCH 09/98] feat(60461): Altera tamanho das colunas da tabela Altera tamanho das colunas da tabela para evitar quebras de linha --- .../TabelaValoresReprogramados.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js b/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js index d4d00a962..9eeac27ca 100644 --- a/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js +++ b/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js @@ -18,32 +18,32 @@ export const TabelaValoresReprogramados = ({ paginator={listaDeValoresReprogramados.length > rowsPerPage} paginatorTemplate="PrevPageLink PageLinks NextPageLink" > - + - + ) From 45d16a931de9c788cfff369972d6b9f1e372177c Mon Sep 17 00:00:00 2001 From: ollyvergithub Date: Mon, 20 Jun 2022 12:35:29 -0300 Subject: [PATCH 10/98] =?UTF-8?q?feat(63286):=20Altera=20posi=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20Loading=20e=20exibe=20link=20para=20contas=20mesmo=20se?= =?UTF-8?q?m=20documentos=20gerados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...DemonstrativoDaExecucaoFisicoFinanceira.js | 44 +++++++++-- .../dres/RelatorioConsolidado/index.js | 76 ++++++++++--------- 2 files changed, 79 insertions(+), 41 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js index c969b6ee4..aa6b2aca5 100644 --- a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js +++ b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js @@ -1,11 +1,16 @@ import React, {memo, useCallback, useEffect, useState} from "react"; -import {getDocumentosConsolidadoDre, getDownloadRelatorio} from "../../../services/dres/RelatorioConsolidado.service"; +import { + getDocumentosConsolidadoDre, + getDownloadRelatorio, + getTiposConta +} from "../../../services/dres/RelatorioConsolidado.service"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faDownload} from "@fortawesome/free-solid-svg-icons"; const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolidadoDre, periodoEscolhido}) => { const [relatoriosFisicoFinanceiros, setRelatoriosFisicoFinanceiros] = useState([]); + const [contas, setContas] = useState(false); const retornaRelatoriosFisicoFinanceiros = useCallback(async () => { if (consolidadoDre && consolidadoDre.uuid) { @@ -24,6 +29,24 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolid retornaRelatoriosFisicoFinanceiros() }, [retornaRelatoriosFisicoFinanceiros]) + useEffect(()=>{ + let mounted = true + const carregaContas = async () => { + try { + let tipo_contas = await getTiposConta(); + if (mounted){ + setContas(tipo_contas); + } + }catch (e) { + console.log("Erro ao trazer os tipos de contas ", e); + } + }; + carregaContas() + return () =>{ + mounted = false + } + }, []) + const retornaClasseMensagem = (texto) => { let classeMensagem = "documento-gerado"; if (texto === 'NAO_GERADOS') { @@ -71,10 +94,21 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolid )} ) : -
-

Documentos não gerados

-
- } + contas && contas.length > 0 && contas.map((conta) => +
+
+
+

Demonstrativo da Execução Físico-Financeira - {conta && conta.nome ? "Conta " + conta.nome : ""}

+

+ Documento pendente de geração +

+
+
+
+ +
+
+ )}
) } diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index 961b6b361..eb0e3d9c6 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -171,18 +171,6 @@ const RelatorioConsolidado = () => {

Relatório consolidado

<> - {loading ? ( -
- -

Os documentos estão sendo gerados. Enquanto isso, você pode realizar outras atividades no sistema.

-
- ) : - <>
@@ -203,28 +191,45 @@ const RelatorioConsolidado = () => { retornaQtdeStatus={retornaQtdeStatus} retornaQtdeStatusTotal={retornaQtdeStatusTotal} /> - - - {statusConsolidadoDre && statusConsolidadoDre.status_geracao === "GERADOS_TOTAIS" && - - } - + <> + {loading ? ( +
+ +

Os documentos estão sendo gerados. Enquanto isso, você pode realizar outras atividades no sistema.

+
+ ) : + <> + + + {statusConsolidadoDre && statusConsolidadoDre.status_geracao === "GERADOS_TOTAIS" && + + } + + + } + + ) : { }
- } - + ) } From 2cf603c6f331de4ef61243ea8c7d9b65f87431a0 Mon Sep 17 00:00:00 2001 From: luke Date: Mon, 20 Jun 2022 15:21:02 -0300 Subject: [PATCH 11/98] feat(60461)-parte-3: altera chamada ao endpoint de valores reprogramados MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Realiza mudança no nome do endpoint utilizado --- .../TabelaValoresReprogramados.js | 4 +-- .../dres/ValoresReprogramadosDre/index.js | 29 +++++++++++++------ .../dres/ValoresReprogramadosDre.service.js | 4 +-- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js b/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js index 9eeac27ca..815e3af6d 100644 --- a/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js +++ b/src/componentes/dres/ValoresReprogramadosDre/TabelaValoresReprogramados.js @@ -26,13 +26,13 @@ export const TabelaValoresReprogramados = ({ /> { const buscaListaDeValoresReprogramados = async () => { try{ if(dadosDiretoria && dadosDiretoria.uuid){ - let valoresReprogramados = await getListaValoresReprogramados(dadosDiretoria.uuid, statusPadrao); - setListaDeValoresReprogramados(valoresReprogramados); + let listaValoresReprogramados = await getListaValoresReprogramados(dadosDiretoria.uuid, statusPadrao); + setListaDeValoresReprogramados(listaValoresReprogramados.valores_reprogramados); } }catch (e){ console.log("Erro ao buscar valores reprogramados ", e); @@ -114,7 +114,7 @@ export const ValoresReprogramadosDre = () =>{ dadosDiretoria.uuid, stateFiltros.filtro_search, stateFiltros.filtro_tipo_unidade, stateFiltros.filtro_status ); - setListaDeValoresReprogramados(resultado_filtros); + setListaDeValoresReprogramados(resultado_filtros.valores_reprogramados); setLoading(false); }; @@ -127,23 +127,34 @@ export const ValoresReprogramadosDre = () =>{ // Templates tabela const valorTemplateCheque = (rowData) => { - const valorFormatado = rowData['total_conta_cheque'] - ? Number(rowData['total_conta_cheque']).toLocaleString('pt-BR', { + if(rowData['total_conta_um'] !== "-"){ + let valorFormatado = rowData['total_conta_um'] + ? Number(rowData['total_conta_um']).toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }) : '-'; - return ({valorFormatado}) + return ({valorFormatado}) + } + else{ + return (-) + } }; const valorTemplateCartao = (rowData) => { - const valorFormatado = rowData['total_conta_cartao'] - ? Number(rowData['total_conta_cartao']).toLocaleString('pt-BR', { + if(rowData['total_conta_dois'] !== "-"){ + let valorFormatado = rowData['total_conta_dois'] + ? Number(rowData['total_conta_dois']).toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }) : '-'; - return ({valorFormatado}) + + return ({valorFormatado}) + } + else{ + return (-) + } }; const statusTemplate = (rowData) => { diff --git a/src/services/dres/ValoresReprogramadosDre.service.js b/src/services/dres/ValoresReprogramadosDre.service.js index ca282fb01..dd6a00052 100644 --- a/src/services/dres/ValoresReprogramadosDre.service.js +++ b/src/services/dres/ValoresReprogramadosDre.service.js @@ -10,12 +10,12 @@ const authHeader = { export const getListaValoresReprogramados = async (dreUuid, status_padrao) => { return ( - await api.get(`api/valores-reprogramados/?dre_uuid=${dreUuid}&status=${status_padrao}`, authHeader) + await api.get(`api/valores-reprogramados/lista-associacoes/?dre_uuid=${dreUuid}&status=${status_padrao}`, authHeader) ).data } export const filtrosListaValoresReprogramados = async(dreUuid, search=null, tipo_unidade=null, status_valores=null) => { - const url = `api/valores-reprogramados/?dre_uuid=${dreUuid}&search=${search}&tipo_unidade=${tipo_unidade}&status=${status_valores}` + const url = `api/valores-reprogramados/lista-associacoes/?dre_uuid=${dreUuid}&search=${search}&tipo_unidade=${tipo_unidade}&status=${status_valores}` return (await api.get(url, authHeader)).data } From a4269ca911f8b685f6ff699b36d312324de161a2 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 21 Jun 2022 13:38:34 -0300 Subject: [PATCH 12/98] =?UTF-8?q?feat(62851):=20Cria=20confirma=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20viabiliza=C3=A7=C3=A3o=20de=20acesso=20suporte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cria o modal que confirma a seleção de uma unidade para viabilização do acesso de suporte. --- .../Globais/EscolheUnidade/ListaDeUnidades.js | 14 ++++++-- .../Globais/EscolheUnidade/index.js | 4 +-- .../ModalConfirmaInicioSuporte.js | 19 ++++++++++ .../Globais/SuporteAsUnidades/index.js | 35 +++++++++++++++++-- 4 files changed, 65 insertions(+), 7 deletions(-) create mode 100644 src/componentes/Globais/SuporteAsUnidades/ModalConfirmaInicioSuporte.js diff --git a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js index 521173db0..8127f8e7b 100644 --- a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js +++ b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js @@ -4,7 +4,7 @@ import {DataTable} from "primereact/datatable"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faKey} from "@fortawesome/free-solid-svg-icons"; -export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnidade}) => { +export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnidade, textoAcaoEscolher}) => { const unidadeEscolarTemplate = (rowData) => { return ( @@ -14,19 +14,27 @@ export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnida ) }; + const handleAcaoEscolher = (rowData) => { + const unidadeSelecionada = { + uuid: rowData.uuid, + nome: rowData.nome + } + acaoAoEscolherUnidade(unidadeSelecionada) + }; + const acoesTemplate = (rowData) =>{ return ( <> diff --git a/src/componentes/Globais/EscolheUnidade/index.js b/src/componentes/Globais/EscolheUnidade/index.js index 9bc17ac7a..0c050a0af 100644 --- a/src/componentes/Globais/EscolheUnidade/index.js +++ b/src/componentes/Globais/EscolheUnidade/index.js @@ -38,7 +38,7 @@ export const EscolheUnidade = (props) =>{ }; const escolherUnidade = (uuidUnidade) => { - console.log('Unidade escolhida:', uuidUnidade) + props.onSelecionaUnidade(uuidUnidade) } const handleChangeFiltros = (name, value) => { @@ -74,7 +74,7 @@ export const EscolheUnidade = (props) =>{ marginBottom="0" /> ) : listaUnidades && listaUnidades.length > 0 ? () : + acaoAoEscolherUnidade={escolherUnidade} textoAcaoEscolher={"Viabilizar acesso"}/>) : }
diff --git a/src/componentes/Globais/SuporteAsUnidades/ModalConfirmaInicioSuporte.js b/src/componentes/Globais/SuporteAsUnidades/ModalConfirmaInicioSuporte.js new file mode 100644 index 000000000..b9614e5ee --- /dev/null +++ b/src/componentes/Globais/SuporteAsUnidades/ModalConfirmaInicioSuporte.js @@ -0,0 +1,19 @@ +import {ModalBootstrap} from "../ModalBootstrap"; +import React from "react"; + +export const ModalConfirmaInicioSuporte = (props) => { + return ( + + ) +}; \ No newline at end of file diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index 36e21b037..cc3fefe71 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -1,7 +1,9 @@ -import React, {useState} from "react"; +import React, {useCallback, useEffect, useState} from "react"; import {TextoExplicativo} from "./TextoExplicativoDaPagina" import {EscolheUnidade} from "../EscolheUnidade"; import {visoesService} from "../../../services/visoes.service"; +import {ModalConfirmaInicioSuporte} from "./ModalConfirmaInicioSuporte"; + export const SuporteAsUnidades = (props) =>{ @@ -12,10 +14,39 @@ export const SuporteAsUnidades = (props) =>{ dreUuid = visoesService.getItemUsuarioLogado('associacao_selecionada.uuid') } + const [showModalConfirmaSuporte, setShowModalConfirmaSuporte] = useState(false); + const [unidadeSuporteSelecionada, setUnidadeSuporteSelecionada] = useState(null) + + const handleNaoConfirmaSuporte = useCallback(() => { + setShowModalConfirmaSuporte(false) + }, []); + + const handleConfirmaSuporte = useCallback(() => { + setShowModalConfirmaSuporte(false) + }, []); + + const handleSelecaoUnidadeSuporte = useCallback((unidadeSelecionada) => { + setUnidadeSuporteSelecionada(unidadeSelecionada) + setShowModalConfirmaSuporte(true) + }, []); + + let textoConfirmacaoSuporte = "" + if (unidadeSuporteSelecionada){ + textoConfirmacaoSuporte = `

Deseja iniciar suporte para a unidade ${unidadeSuporteSelecionada.nome}?

Ao confirmar, você será direcionado para a página de acesso ao sistema e ao acessá-lo novamente você visualizará a unidade selecionada.

` + } + return(
- + +
+ +
) From 2fe8e6cfab03bb825891a26cd87ab09c1483d4f9 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 21 Jun 2022 14:23:44 -0300 Subject: [PATCH 13/98] =?UTF-8?q?feat(62851):=20Altera=20viabiliza=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20acesso=20suporte=20para=20chamar=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera a viabilização de acesso de suporte para chamar endpoint da API responsável por criar o vínculo com a unidade de acesso. --- .../Globais/EscolheUnidade/ListaDeUnidades.js | 3 ++- src/componentes/Globais/SuporteAsUnidades/index.js | 5 +++-- src/services/auth.service.js | 12 ++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js index 8127f8e7b..9f497f14e 100644 --- a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js +++ b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js @@ -17,7 +17,8 @@ export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnida const handleAcaoEscolher = (rowData) => { const unidadeSelecionada = { uuid: rowData.uuid, - nome: rowData.nome + nome: rowData.nome, + codigo_eol: rowData.codigo_eol } acaoAoEscolherUnidade(unidadeSelecionada) }; diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index cc3fefe71..4024e492d 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -3,7 +3,7 @@ import {TextoExplicativo} from "./TextoExplicativoDaPagina" import {EscolheUnidade} from "../EscolheUnidade"; import {visoesService} from "../../../services/visoes.service"; import {ModalConfirmaInicioSuporte} from "./ModalConfirmaInicioSuporte"; - +import {getUsuarioLogado, viabilizarAcessoSuporte} from "../../../services/auth.service" export const SuporteAsUnidades = (props) =>{ @@ -22,8 +22,9 @@ export const SuporteAsUnidades = (props) =>{ }, []); const handleConfirmaSuporte = useCallback(() => { + viabilizarAcessoSuporte(getUsuarioLogado().login, {codigo_eol: unidadeSuporteSelecionada.codigo_eol}) setShowModalConfirmaSuporte(false) - }, []); + }, [unidadeSuporteSelecionada]); const handleSelecaoUnidadeSuporte = useCallback((unidadeSelecionada) => { setUnidadeSuporteSelecionada(unidadeSelecionada) diff --git a/src/services/auth.service.js b/src/services/auth.service.js index c2f39a111..0dc49c48b 100644 --- a/src/services/auth.service.js +++ b/src/services/auth.service.js @@ -157,3 +157,15 @@ export const authService = { isLoggedIn, esqueciMinhaSenha, }; + + +export const getUsuarioLogado = () => { + return { + login: localStorage.getItem(USUARIO_LOGIN), + nome: localStorage.getItem(USUARIO_NOME) + } +} + +export const viabilizarAcessoSuporte = async (usuario, payload) => { + return (await api.post(`api/usuarios/${usuario}/viabilizar-acesso-suporte/`, payload, authHeaderAuthorization)) +}; From 9b00ed329138f1430c1c7ef261f41bb05f24c51a Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 21 Jun 2022 14:44:21 -0300 Subject: [PATCH 14/98] =?UTF-8?q?feat(62851):=20Altera=20viabiliza=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20acesso=20para=20fazer=20logout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera a viabilização de acesso de suporte para forçar o logout após criar o vínculo com a unidade de acesso. --- src/componentes/Globais/SuporteAsUnidades/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index 4024e492d..36bcb9598 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -3,7 +3,7 @@ import {TextoExplicativo} from "./TextoExplicativoDaPagina" import {EscolheUnidade} from "../EscolheUnidade"; import {visoesService} from "../../../services/visoes.service"; import {ModalConfirmaInicioSuporte} from "./ModalConfirmaInicioSuporte"; -import {getUsuarioLogado, viabilizarAcessoSuporte} from "../../../services/auth.service" +import {getUsuarioLogado, viabilizarAcessoSuporte, authService} from "../../../services/auth.service" export const SuporteAsUnidades = (props) =>{ @@ -23,6 +23,7 @@ export const SuporteAsUnidades = (props) =>{ const handleConfirmaSuporte = useCallback(() => { viabilizarAcessoSuporte(getUsuarioLogado().login, {codigo_eol: unidadeSuporteSelecionada.codigo_eol}) + authService.logout() setShowModalConfirmaSuporte(false) }, [unidadeSuporteSelecionada]); From d56bdf46a8f052a64cbe07b4bb4d268b4607fb0c Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Wed, 22 Jun 2022 08:17:07 -0300 Subject: [PATCH 15/98] feat(62851): Altera EscolheUnidade para add tipo_unidade MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera o componente de escolha de unidades para incluir o tipo de unidade no objeto retornado. Isso é necessário para setar a unidade selecionada do usuário de suporte. --- .../Globais/EscolheUnidade/ListaDeUnidades.js | 3 ++- src/componentes/Globais/EscolheUnidade/index.js | 11 ++--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js index 9f497f14e..76f8cfaee 100644 --- a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js +++ b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js @@ -18,7 +18,8 @@ export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnida const unidadeSelecionada = { uuid: rowData.uuid, nome: rowData.nome, - codigo_eol: rowData.codigo_eol + codigo_eol: rowData.codigo_eol, + tipo_unidade: rowData.tipo_unidade } acaoAoEscolherUnidade(unidadeSelecionada) }; diff --git a/src/componentes/Globais/EscolheUnidade/index.js b/src/componentes/Globais/EscolheUnidade/index.js index 0c050a0af..ebc508b4e 100644 --- a/src/componentes/Globais/EscolheUnidade/index.js +++ b/src/componentes/Globais/EscolheUnidade/index.js @@ -37,17 +37,10 @@ export const EscolheUnidade = (props) =>{ } }; - const escolherUnidade = (uuidUnidade) => { - props.onSelecionaUnidade(uuidUnidade) + const escolherUnidade = (unidadeSelecionada) => { + props.onSelecionaUnidade(unidadeSelecionada) } - const handleChangeFiltros = (name, value) => { - setStateFiltros({ - ...stateFiltros, - [name]: value - }); - }; - const handleSubmitFiltros = (event, filtros)=>{ event.preventDefault(); setStateFiltros(filtros); From 9b1ba7d0456bfaf8068f79888ff0a64b95fa4267 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Wed, 22 Jun 2022 09:38:25 -0300 Subject: [PATCH 16/98] =?UTF-8?q?feat(62851):=20Altera=20EscolheUnidade=20?= =?UTF-8?q?add=20associacao=20e=20vis=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera o componente de escolha de unidades para incluir o nome e uuid da associação e visão no objeto retornado. Isso é necessário para setar a unidade selecionada do usuário de suporte. --- src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js index 76f8cfaee..06b62c32a 100644 --- a/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js +++ b/src/componentes/Globais/EscolheUnidade/ListaDeUnidades.js @@ -19,7 +19,10 @@ export const ListaDeUnidades = ({listaUnidades, rowsPerPage, acaoAoEscolherUnida uuid: rowData.uuid, nome: rowData.nome, codigo_eol: rowData.codigo_eol, - tipo_unidade: rowData.tipo_unidade + tipo_unidade: rowData.tipo_unidade, + associacao_nome: rowData.associacao_nome, + associacao_uuid: rowData.associacao_uuid, + visao: rowData.visao } acaoAoEscolherUnidade(unidadeSelecionada) }; From 60eb2875c3155bae758f36dfc5c1759f0a8d984f Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Wed, 22 Jun 2022 10:39:32 -0300 Subject: [PATCH 17/98] =?UTF-8?q?feat(62851):=20Altera=20SuporteAsUnidades?= =?UTF-8?q?=20para=20setar=20pr=C3=B3ximo=20acesso?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera o componente de suporte às unidades para setar o próximo acesso para a unidade de suporte selecionada. De modo que o próximo acesso do usuário após o logout será na unidade de suporte selecionada. --- .../Globais/SuporteAsUnidades/index.js | 9 +++++ src/services/visoes.service.js | 34 ++++++++++++++++++- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index 36bcb9598..f13f17785 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -4,6 +4,7 @@ import {EscolheUnidade} from "../EscolheUnidade"; import {visoesService} from "../../../services/visoes.service"; import {ModalConfirmaInicioSuporte} from "./ModalConfirmaInicioSuporte"; import {getUsuarioLogado, viabilizarAcessoSuporte, authService} from "../../../services/auth.service" +import {setarUnidadeProximoLoginAcessoSuporte} from "../../../services/visoes.service" export const SuporteAsUnidades = (props) =>{ @@ -23,6 +24,14 @@ export const SuporteAsUnidades = (props) =>{ const handleConfirmaSuporte = useCallback(() => { viabilizarAcessoSuporte(getUsuarioLogado().login, {codigo_eol: unidadeSuporteSelecionada.codigo_eol}) + setarUnidadeProximoLoginAcessoSuporte( + unidadeSuporteSelecionada.visao, + unidadeSuporteSelecionada.uuid, + unidadeSuporteSelecionada.associacao_uuid, + unidadeSuporteSelecionada.associacao_nome, + unidadeSuporteSelecionada.tipo_unidade, + unidadeSuporteSelecionada.nome + ) authService.logout() setShowModalConfirmaSuporte(false) }, [unidadeSuporteSelecionada]); diff --git a/src/services/visoes.service.js b/src/services/visoes.service.js index c7b181fe2..2906d9626 100644 --- a/src/services/visoes.service.js +++ b/src/services/visoes.service.js @@ -253,6 +253,39 @@ const alternaVisoes = (visao, uuid_unidade, uuid_associacao, nome_associacao, un } }; + +export const setarUnidadeProximoLoginAcessoSuporte = (visao, uuid_unidade, uuid_associacao, nome_associacao, unidade_tipo, unidade_nome) => { + let todos_os_dados_usuario_logado = localStorage.getItem(DADOS_USUARIO_LOGADO) ? JSON.parse(localStorage.getItem(DADOS_USUARIO_LOGADO)) : null; + let dados_usuario_logado = getDadosDoUsuarioLogado(); + + if (dados_usuario_logado) { + let novos_dados_usuario_logado = { + ...todos_os_dados_usuario_logado, + [`usuario_${getUsuarioLogin()}`]: { + ...dados_usuario_logado, + visao_selecionada: { + nome: converteNomeVisao(visao) + }, + unidade_selecionada: { + uuid: uuid_unidade, + tipo_unidade:unidade_tipo, + nome:unidade_nome, + notificar_devolucao_referencia:null, + notificar_devolucao_pc_uuid:null, + notificacao_uuid: null, + }, + + associacao_selecionada: { + uuid: unidade_tipo === "DRE" ? uuid_unidade: uuid_associacao, + nome: unidade_tipo === "DRE" ? unidade_nome: nome_associacao, + }, + } + }; + localStorage.setItem(DADOS_USUARIO_LOGADO, JSON.stringify(novos_dados_usuario_logado)); + } +}; + + const redirectVisao = (visao = null) => { let dados_usuario_logado = visoesService.getDadosDoUsuarioLogado(); if (visao === 'SME') { @@ -294,4 +327,3 @@ export const visoesService = { getItemUsuarioLogado, getUsuarioLogin, }; - From b80a0bcda31425b7fdbe7c03f3c0826c29d7bf4d Mon Sep 17 00:00:00 2001 From: linikerj Date: Wed, 22 Jun 2022 15:09:59 -0300 Subject: [PATCH 18/98] =?UTF-8?q?feat(65002)=20Altera=20branch=20para=20de?= =?UTF-8?q?velop=20e=20cria=20nova=20branch=20com=20o=20mesmo=20c=C3=B3dig?= =?UTF-8?q?o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Globais/ExtracaoDados/CardButton.js | 13 +++ .../Globais/ExtracaoDados/Cards.js | 14 +++ .../Globais/ExtracaoDados/ExtracaoCard.js | 19 ++++ .../Globais/ExtracaoDados/extracao-dados.scss | 96 +++++++++++++++++++ .../Globais/ExtracaoDados/index.js | 71 ++++++++++++++ .../Globais/SidebarLeft/getUrls.js | 2 + src/paginas/SME/ExtracaoDados/index.js | 15 +++ src/rotas/index.js | 7 ++ src/services/sme/ExtracaoDados.service.js | 16 ++++ 9 files changed, 253 insertions(+) create mode 100644 src/componentes/Globais/ExtracaoDados/CardButton.js create mode 100644 src/componentes/Globais/ExtracaoDados/Cards.js create mode 100644 src/componentes/Globais/ExtracaoDados/ExtracaoCard.js create mode 100644 src/componentes/Globais/ExtracaoDados/extracao-dados.scss create mode 100644 src/componentes/Globais/ExtracaoDados/index.js create mode 100644 src/paginas/SME/ExtracaoDados/index.js create mode 100644 src/services/sme/ExtracaoDados.service.js diff --git a/src/componentes/Globais/ExtracaoDados/CardButton.js b/src/componentes/Globais/ExtracaoDados/CardButton.js new file mode 100644 index 000000000..5e4cd93e1 --- /dev/null +++ b/src/componentes/Globais/ExtracaoDados/CardButton.js @@ -0,0 +1,13 @@ +import React from 'react'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' +import { faDownload } from '@fortawesome/free-solid-svg-icons' +import './extracao-dados.scss' + +export const CardButton = ( { children, ...props }) => { + return ( + + ) +} \ No newline at end of file diff --git a/src/componentes/Globais/ExtracaoDados/Cards.js b/src/componentes/Globais/ExtracaoDados/Cards.js new file mode 100644 index 000000000..01d872d3e --- /dev/null +++ b/src/componentes/Globais/ExtracaoDados/Cards.js @@ -0,0 +1,14 @@ +export const cards = [ + { + titulo: 'Créditos das Unidades Educacionais no período', + descricao: 'Arquivo com os créditos informados por todas as unidades educacionais no período. Arquivos: Principal e Motivos de estorno', + tags: ['CSV'], + endpoint: 'creditos' + }, + // { Para a criação de um novo card e feita a inserção de dados via objeto + // titulo: '', + // descricao: '', + // tags: [''], + // action: () => Exportar Dados + // } +] \ No newline at end of file diff --git a/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js b/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js new file mode 100644 index 000000000..2cffb27a5 --- /dev/null +++ b/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js @@ -0,0 +1,19 @@ +import React from 'react'; +import './extracao-dados.scss' + +export const ExtracaoCard = ({titulo, descricao, tags, action}) => { + return ( +
+
+

{ titulo }

+

{ descricao }

+
+ { tags.map(tag => {tag} ) } +
+
+
+ { action('') } +
+
+ ) +} diff --git a/src/componentes/Globais/ExtracaoDados/extracao-dados.scss b/src/componentes/Globais/ExtracaoDados/extracao-dados.scss new file mode 100644 index 000000000..b558683d5 --- /dev/null +++ b/src/componentes/Globais/ExtracaoDados/extracao-dados.scss @@ -0,0 +1,96 @@ +.extracao { + &-title { + margin-top: 15px; + color: #2B7D83; + font-weight: 700; + font-size: 20px; + line-height: 140%; + &-filter{ + padding-top: 18px; + font-weight: 700; + font-size: 16px; + line-height: 28px; + margin-bottom: 0px; + } + } + &-filter { + padding-top: 22px; + border-top: 1px solid #CCC; + &-datepicker { + width: 20%; + } + } + &-date { + display: block; + margin-top: 15px; + &-msg{ + color: #2B7D83; + font-weight: 700; + } + } + +} + +.extracao-card { + margin-top: 8px; + padding: 16px; + border: 1.5px solid #CCC; + border-radius: 3px; + display: flex; + color: #42474A; + &-container{ + width: 70%; + height: 100%; + } + &-title { + font-weight: 700; + font-size: 16px; + line-height: 22px; + } + &-description { + font-size: 14px; + line-height: 22px; + } + &-tags { + display: flex; + } + &-tag { + background-color: #086397; + display: block; + color: #FFF; + padding: 4px 8px; + border-radius: 4px; + margin-right: 8px; + font-weight: 700; + } + &-action { + flex: 1; + margin-right: 15px; + display: flex; + align-items: center; + justify-content: flex-end; + } + &-button { + color: #00585E; + padding: 8px; + border: 2px solid #00585E; + border-radius: 3px; + outline: none; + background-color: inherit; + font-size: 14px; + font-weight: bold; + line-height: 22px; + letter-spacing: 0em; + + } +} + +.ant-picker-range-separator::before { + margin-top: 10px; + content: "até"; + color: #CBC1C9; +} + +.ant-picker-separator{ + display:none; +} \ No newline at end of file diff --git a/src/componentes/Globais/ExtracaoDados/index.js b/src/componentes/Globais/ExtracaoDados/index.js new file mode 100644 index 000000000..26a77456f --- /dev/null +++ b/src/componentes/Globais/ExtracaoDados/index.js @@ -0,0 +1,71 @@ +import React, {useState} from 'react'; +import {DatePicker, Space } from "antd"; +import {ExtracaoCard} from "./ExtracaoCard" +import {CardButton} from "./CardButton" +import {getExportaCreditos} from "../../../services/sme/ExtracaoDados.service" +import {toastCustom} from "../../Globais/ToastCustom"; +import moment from "moment"; +import {cards} from "./Cards" +import './extracao-dados.scss' + +export const ExtracaoDados = () => { + const [dataInicial, setDataInicial] = useState('') + const [dataFinal, setDataFinal] = useState('') + + // ajustar a data para ser unica, ajustar o cards para um arquivo separado, handleExportaDados generico com url + // pegar e enviar para uma pasta, git stash, ir para git development git pull e jogar os arquivos + + async function handleExportaDados(finalPath) { + console.log('teste') + if (finalPath === 'creditos'){ + try { + await getExportaCreditos(dataInicial, dataFinal) + toastCustom.ToastCustomSuccess('Geração solicitada com sucesso.', 'A geração foi solicitada. Em breve você receberá um aviso na central de downloads com o resultado.') + } + catch (err) { + console.log(`erro ao exportar dados de creditos ${err}`) + } + } + } + + return ( + <> +
Dados disponíveis para extração
+

Filtrar por data

+
+ + Selecione o período de criação (vazio para todos) + { + setDataInicial(moment(dates[0]).format('YYYY-MM-DD')) + setDataFinal(moment(dates[1]).format('YYYY-MM-DD')) + }} + /> + { + dataInicial && dataFinal ? + Exibindo dados de {moment(dataInicial).format('DD/MM/YYYY')}, + á {moment(dataFinal).format('DD/MM/YYYY')}. : + } + + { cards.map(( {titulo, descricao, tags, endpoint}, index ) => ( + Exportar Dados + // () => Exportar Dados + } + /> + ) )} + +
+ + ) +} \ No newline at end of file diff --git a/src/componentes/Globais/SidebarLeft/getUrls.js b/src/componentes/Globais/SidebarLeft/getUrls.js index 2cb27fca6..e18b7b498 100644 --- a/src/componentes/Globais/SidebarLeft/getUrls.js +++ b/src/componentes/Globais/SidebarLeft/getUrls.js @@ -14,6 +14,7 @@ import IconeMenuSaldosBancarios from "../../../assets/img/icone-menu-sme-saldos- import IconeMenuFornecedores from "../../../assets/img/icone-menu-fornecedores.svg" import IconeMenuValoresReprogramados from "../../../assets/img/icone-menu-valores-reprogramados.svg" import IconeMenuSuporteUnidades from "../../../assets/img/icone-menu-suporte-unidades.svg" +import IconeMenuExtracaoDados from '../../../assets/img/icone-dados-da-diretoria.svg' const getDadosUsuario = () =>{ let usuario = localStorage.getItem(USUARIO_NOME); @@ -96,6 +97,7 @@ const UrlsMenuSME ={ {label: "Consulta de saldos bancários", url: "consulta-de-saldos-bancarios", dataFor:"consulta_de_saldos_bancarios", icone:IconeMenuSaldosBancarios, permissoes: ['access_consulta_saldo_bancario'],}, {label: "Suporte às Unidades", url: "suporte-unidades-sme", dataFor:"suporte_unidades_sme", icone:IconeMenuSuporteUnidades, permissoes: ['access_suporte_unidades_sme'],}, {label: "Gestão de perfis", url: "gestao-de-perfis", dataFor:"gestao_de_perfis", icone:IconeGestaoDePerfis, permissoes: ['access_gestao_perfis_sme'],}, + {label: "Extração de dados", url: "extracoes-dados", dataFor:"extracao_de_dados", icone:IconeMenuExtracaoDados, permissoes: ['access_gestao_perfis_sme'],}, ] }; diff --git a/src/paginas/SME/ExtracaoDados/index.js b/src/paginas/SME/ExtracaoDados/index.js new file mode 100644 index 000000000..f603a2e5d --- /dev/null +++ b/src/paginas/SME/ExtracaoDados/index.js @@ -0,0 +1,15 @@ +import React from "react"; +import {PaginasContainer} from "../../PaginasContainer"; +import {ExtracaoDados} from "../../../componentes/Globais/ExtracaoDados"; + + +export const ExtracaoDadosPage = () =>{ + return ( + +

Extração de dados do sistema

+
+ +
+
+ ) +}; \ No newline at end of file diff --git a/src/rotas/index.js b/src/rotas/index.js index 18de30886..bc53373e8 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -74,6 +74,7 @@ import {AnalisesRegularidadePage} from "../componentes/dres/RegularidadeAssociac import { VisualizacaoDaAtaParecerTecnico } from "../componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico"; import { EdicaoAtaParecerTecnico } from "../componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/EdicaoAta"; import { ParametrizacoesMotivosDeEstorno } from "../componentes/sme/Parametrizacoees/Receitas/ParametrizacoesMotivosEstorno"; +import {ExtracaoDadosPage} from '../paginas/SME/ExtracaoDados' const routesConfig = [ { @@ -306,6 +307,12 @@ const routesConfig = [ component: GestaoDePerfisPage, permissoes: ['access_gestao_perfis_ue', 'access_gestao_perfis_dre', 'access_gestao_perfis_sme'], }, + { + exact: true, + path: "/extracoes-dados", + component: ExtracaoDadosPage, + permissoes: ['access_gestao_perfis_sme'], + }, { exact: true, diff --git a/src/services/sme/ExtracaoDados.service.js b/src/services/sme/ExtracaoDados.service.js new file mode 100644 index 000000000..f1865e92a --- /dev/null +++ b/src/services/sme/ExtracaoDados.service.js @@ -0,0 +1,16 @@ +import api from '../api' +import { TOKEN_ALIAS } from '../auth.service.js'; + +const authHeader = { + headers: { + 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, + 'Content-Type': 'application/json' + } +}; + +export const getExportaCreditos = async (dataInicio, dataFinal) => { + return (await api.get( + `/api/exportacoes-dados/creditos/?data_inicio=${dataInicio}&data_final=${dataFinal}`, + authHeader + )).data +}; \ No newline at end of file From 8bb5b08f8319b94f6827433827bc03dc65287826 Mon Sep 17 00:00:00 2001 From: linikerj Date: Wed, 22 Jun 2022 15:53:17 -0300 Subject: [PATCH 19/98] feat(65002) Altera style in line Space e permite trabalhar apenas com uma data. --- .../Globais/ExtracaoDados/Cards.js | 2 +- .../Globais/ExtracaoDados/ExtracaoCard.js | 2 +- .../Globais/ExtracaoDados/extracao-dados.scss | 3 ++ .../Globais/ExtracaoDados/index.js | 29 +++++++++---------- src/services/sme/ExtracaoDados.service.js | 4 +-- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/componentes/Globais/ExtracaoDados/Cards.js b/src/componentes/Globais/ExtracaoDados/Cards.js index 01d872d3e..39d6ddae6 100644 --- a/src/componentes/Globais/ExtracaoDados/Cards.js +++ b/src/componentes/Globais/ExtracaoDados/Cards.js @@ -3,7 +3,7 @@ export const cards = [ titulo: 'Créditos das Unidades Educacionais no período', descricao: 'Arquivo com os créditos informados por todas as unidades educacionais no período. Arquivos: Principal e Motivos de estorno', tags: ['CSV'], - endpoint: 'creditos' + endpoint: '/api/exportacoes-dados/creditos/' }, // { Para a criação de um novo card e feita a inserção de dados via objeto // titulo: '', diff --git a/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js b/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js index 2cffb27a5..708bc9743 100644 --- a/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js +++ b/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js @@ -12,7 +12,7 @@ export const ExtracaoCard = ({titulo, descricao, tags, action}) => {
- { action('') } + { action() }
) diff --git a/src/componentes/Globais/ExtracaoDados/extracao-dados.scss b/src/componentes/Globais/ExtracaoDados/extracao-dados.scss index b558683d5..3d97e338c 100644 --- a/src/componentes/Globais/ExtracaoDados/extracao-dados.scss +++ b/src/componentes/Globais/ExtracaoDados/extracao-dados.scss @@ -28,6 +28,9 @@ font-weight: 700; } } + &-space { + width: 100% + } } diff --git a/src/componentes/Globais/ExtracaoDados/index.js b/src/componentes/Globais/ExtracaoDados/index.js index 26a77456f..746608709 100644 --- a/src/componentes/Globais/ExtracaoDados/index.js +++ b/src/componentes/Globais/ExtracaoDados/index.js @@ -15,16 +15,13 @@ export const ExtracaoDados = () => { // ajustar a data para ser unica, ajustar o cards para um arquivo separado, handleExportaDados generico com url // pegar e enviar para uma pasta, git stash, ir para git development git pull e jogar os arquivos - async function handleExportaDados(finalPath) { - console.log('teste') - if (finalPath === 'creditos'){ - try { - await getExportaCreditos(dataInicial, dataFinal) - toastCustom.ToastCustomSuccess('Geração solicitada com sucesso.', 'A geração foi solicitada. Em breve você receberá um aviso na central de downloads com o resultado.') - } - catch (err) { - console.log(`erro ao exportar dados de creditos ${err}`) - } + async function handleExportaDados(endpoint) { + try { + await getExportaCreditos(endpoint, dataInicial, dataFinal) + toastCustom.ToastCustomSuccess('Geração solicitada com sucesso.', 'A geração foi solicitada. Em breve você receberá um aviso na central de downloads com o resultado.') + } + catch (err) { + console.log(`erro ao exportar dados de creditos ${err}`) } } @@ -33,17 +30,18 @@ export const ExtracaoDados = () => {
Dados disponíveis para extração

Filtrar por data

- + Selecione o período de criação (vazio para todos) { - setDataInicial(moment(dates[0]).format('YYYY-MM-DD')) - setDataFinal(moment(dates[1]).format('YYYY-MM-DD')) + onCalendarChange={(dates) => { + setDataInicial(dates?.[0] ? dates[0].format('YYYY-MM-DD'): '') + setDataFinal(dates?.[1] ? dates[1].format('YYYY-MM-DD'): '') }} /> { @@ -59,8 +57,7 @@ export const ExtracaoDados = () => { descricao={descricao} tags={tags} action={ - () => Exportar Dados - // () => Exportar Dados + () => handleExportaDados(endpoint)}> Exportar Dados } /> ) )} diff --git a/src/services/sme/ExtracaoDados.service.js b/src/services/sme/ExtracaoDados.service.js index f1865e92a..1dad0e6db 100644 --- a/src/services/sme/ExtracaoDados.service.js +++ b/src/services/sme/ExtracaoDados.service.js @@ -8,9 +8,9 @@ const authHeader = { } }; -export const getExportaCreditos = async (dataInicio, dataFinal) => { +export const getExportaCreditos = async (url, dataInicio, dataFinal) => { return (await api.get( - `/api/exportacoes-dados/creditos/?data_inicio=${dataInicio}&data_final=${dataFinal}`, + `${url}?data_inicio=${dataInicio}&data_final=${dataFinal}`, authHeader )).data }; \ No newline at end of file From 05912d33dbad71e1976260ba631b1f966c92f360 Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 23 Jun 2022 09:09:33 -0300 Subject: [PATCH 20/98] feat(65002) Altera locale do component datepicker.range --- src/componentes/Globais/ExtracaoDados/index.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/componentes/Globais/ExtracaoDados/index.js b/src/componentes/Globais/ExtracaoDados/index.js index 746608709..025f20226 100644 --- a/src/componentes/Globais/ExtracaoDados/index.js +++ b/src/componentes/Globais/ExtracaoDados/index.js @@ -4,17 +4,15 @@ import {ExtracaoCard} from "./ExtracaoCard" import {CardButton} from "./CardButton" import {getExportaCreditos} from "../../../services/sme/ExtracaoDados.service" import {toastCustom} from "../../Globais/ToastCustom"; -import moment from "moment"; import {cards} from "./Cards" +import locale from 'antd/es/date-picker/locale/pt_BR'; +import moment from "moment"; import './extracao-dados.scss' export const ExtracaoDados = () => { const [dataInicial, setDataInicial] = useState('') const [dataFinal, setDataFinal] = useState('') - // ajustar a data para ser unica, ajustar o cards para um arquivo separado, handleExportaDados generico com url - // pegar e enviar para uma pasta, git stash, ir para git development git pull e jogar os arquivos - async function handleExportaDados(endpoint) { try { await getExportaCreditos(endpoint, dataInicial, dataFinal) @@ -33,8 +31,9 @@ export const ExtracaoDados = () => { Selecione o período de criação (vazio para todos) Date: Thu, 23 Jun 2022 09:30:55 -0300 Subject: [PATCH 21/98] feat(65002): Adiciona permissoes para acesso em extracao de dados. --- src/componentes/Globais/SidebarLeft/getUrls.js | 2 +- src/rotas/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/componentes/Globais/SidebarLeft/getUrls.js b/src/componentes/Globais/SidebarLeft/getUrls.js index e18b7b498..3f46527c8 100644 --- a/src/componentes/Globais/SidebarLeft/getUrls.js +++ b/src/componentes/Globais/SidebarLeft/getUrls.js @@ -97,7 +97,7 @@ const UrlsMenuSME ={ {label: "Consulta de saldos bancários", url: "consulta-de-saldos-bancarios", dataFor:"consulta_de_saldos_bancarios", icone:IconeMenuSaldosBancarios, permissoes: ['access_consulta_saldo_bancario'],}, {label: "Suporte às Unidades", url: "suporte-unidades-sme", dataFor:"suporte_unidades_sme", icone:IconeMenuSuporteUnidades, permissoes: ['access_suporte_unidades_sme'],}, {label: "Gestão de perfis", url: "gestao-de-perfis", dataFor:"gestao_de_perfis", icone:IconeGestaoDePerfis, permissoes: ['access_gestao_perfis_sme'],}, - {label: "Extração de dados", url: "extracoes-dados", dataFor:"extracao_de_dados", icone:IconeMenuExtracaoDados, permissoes: ['access_gestao_perfis_sme'],}, + {label: "Extração de dados", url: "extracoes-dados", dataFor:"extracao_de_dados", icone:IconeMenuExtracaoDados, permissoes: ['access_extracao_de_dados_sme'],}, ] }; diff --git a/src/rotas/index.js b/src/rotas/index.js index bc53373e8..c40552d3d 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -311,7 +311,7 @@ const routesConfig = [ exact: true, path: "/extracoes-dados", component: ExtracaoDadosPage, - permissoes: ['access_gestao_perfis_sme'], + permissoes: ['access_extracao_de_dados_sme'], }, { From 37bea0e9f4f9db604dc8093e6f771afe0b28364d Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 23 Jun 2022 10:01:03 -0300 Subject: [PATCH 22/98] feat(65002) Altera estrutura de pasta de globais para sme --- src/componentes/{Globais => sme}/ExtracaoDados/CardButton.js | 0 src/componentes/{Globais => sme}/ExtracaoDados/Cards.js | 0 src/componentes/{Globais => sme}/ExtracaoDados/ExtracaoCard.js | 0 .../{Globais => sme}/ExtracaoDados/extracao-dados.scss | 0 src/componentes/{Globais => sme}/ExtracaoDados/index.js | 0 src/paginas/SME/ExtracaoDados/index.js | 2 +- 6 files changed, 1 insertion(+), 1 deletion(-) rename src/componentes/{Globais => sme}/ExtracaoDados/CardButton.js (100%) rename src/componentes/{Globais => sme}/ExtracaoDados/Cards.js (100%) rename src/componentes/{Globais => sme}/ExtracaoDados/ExtracaoCard.js (100%) rename src/componentes/{Globais => sme}/ExtracaoDados/extracao-dados.scss (100%) rename src/componentes/{Globais => sme}/ExtracaoDados/index.js (100%) diff --git a/src/componentes/Globais/ExtracaoDados/CardButton.js b/src/componentes/sme/ExtracaoDados/CardButton.js similarity index 100% rename from src/componentes/Globais/ExtracaoDados/CardButton.js rename to src/componentes/sme/ExtracaoDados/CardButton.js diff --git a/src/componentes/Globais/ExtracaoDados/Cards.js b/src/componentes/sme/ExtracaoDados/Cards.js similarity index 100% rename from src/componentes/Globais/ExtracaoDados/Cards.js rename to src/componentes/sme/ExtracaoDados/Cards.js diff --git a/src/componentes/Globais/ExtracaoDados/ExtracaoCard.js b/src/componentes/sme/ExtracaoDados/ExtracaoCard.js similarity index 100% rename from src/componentes/Globais/ExtracaoDados/ExtracaoCard.js rename to src/componentes/sme/ExtracaoDados/ExtracaoCard.js diff --git a/src/componentes/Globais/ExtracaoDados/extracao-dados.scss b/src/componentes/sme/ExtracaoDados/extracao-dados.scss similarity index 100% rename from src/componentes/Globais/ExtracaoDados/extracao-dados.scss rename to src/componentes/sme/ExtracaoDados/extracao-dados.scss diff --git a/src/componentes/Globais/ExtracaoDados/index.js b/src/componentes/sme/ExtracaoDados/index.js similarity index 100% rename from src/componentes/Globais/ExtracaoDados/index.js rename to src/componentes/sme/ExtracaoDados/index.js diff --git a/src/paginas/SME/ExtracaoDados/index.js b/src/paginas/SME/ExtracaoDados/index.js index f603a2e5d..08b9f5634 100644 --- a/src/paginas/SME/ExtracaoDados/index.js +++ b/src/paginas/SME/ExtracaoDados/index.js @@ -1,6 +1,6 @@ import React from "react"; import {PaginasContainer} from "../../PaginasContainer"; -import {ExtracaoDados} from "../../../componentes/Globais/ExtracaoDados"; +import {ExtracaoDados} from "../../../componentes/sme/ExtracaoDados"; export const ExtracaoDadosPage = () =>{ From bb37b8611a02b9ca71ca6583c1cbfb760beabb55 Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 23 Jun 2022 14:30:50 -0300 Subject: [PATCH 23/98] =?UTF-8?q?feat(65002)=20Altera=20posi=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20icone=20menus=20em=20sideBar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/componentes/Globais/SidebarLeft/getUrls.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/componentes/Globais/SidebarLeft/getUrls.js b/src/componentes/Globais/SidebarLeft/getUrls.js index 3f46527c8..3244878fa 100644 --- a/src/componentes/Globais/SidebarLeft/getUrls.js +++ b/src/componentes/Globais/SidebarLeft/getUrls.js @@ -96,8 +96,8 @@ const UrlsMenuSME ={ {label: "Acompanhamento de PCs", url: "acompanhamento-pcs-sme", dataFor:"acompanhamento_pcs_sme", icone:IconeAcompanhamento, permissoes: ['access_acompanhamento_pc_sme'],}, {label: "Consulta de saldos bancários", url: "consulta-de-saldos-bancarios", dataFor:"consulta_de_saldos_bancarios", icone:IconeMenuSaldosBancarios, permissoes: ['access_consulta_saldo_bancario'],}, {label: "Suporte às Unidades", url: "suporte-unidades-sme", dataFor:"suporte_unidades_sme", icone:IconeMenuSuporteUnidades, permissoes: ['access_suporte_unidades_sme'],}, - {label: "Gestão de perfis", url: "gestao-de-perfis", dataFor:"gestao_de_perfis", icone:IconeGestaoDePerfis, permissoes: ['access_gestao_perfis_sme'],}, {label: "Extração de dados", url: "extracoes-dados", dataFor:"extracao_de_dados", icone:IconeMenuExtracaoDados, permissoes: ['access_extracao_de_dados_sme'],}, + {label: "Gestão de perfis", url: "gestao-de-perfis", dataFor:"gestao_de_perfis", icone:IconeGestaoDePerfis, permissoes: ['access_gestao_perfis_sme'],}, ] }; From fe805406d335eea6c98f59330859ff25c152fadf Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 23 Jun 2022 15:14:10 -0300 Subject: [PATCH 24/98] =?UTF-8?q?feat(65002)=20Altera=20espa=C3=A7o=20em?= =?UTF-8?q?=20branco=20e=20adiciona=20crase=20na=20letra=20a?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/componentes/sme/ExtracaoDados/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/componentes/sme/ExtracaoDados/index.js b/src/componentes/sme/ExtracaoDados/index.js index 025f20226..9a6aa115e 100644 --- a/src/componentes/sme/ExtracaoDados/index.js +++ b/src/componentes/sme/ExtracaoDados/index.js @@ -45,8 +45,8 @@ export const ExtracaoDados = () => { /> { dataInicial && dataFinal ? - Exibindo dados de {moment(dataInicial).format('DD/MM/YYYY')}, - á {moment(dataFinal).format('DD/MM/YYYY')}. : + Exibindo dados de {moment(dataInicial).format('DD/MM/YYYY')} à  + {moment(dataFinal).format('DD/MM/YYYY')}. : } { cards.map(( {titulo, descricao, tags, endpoint}, index ) => ( From ca0dc7b6ed49080346e69b34a1be9f398eab8d6c Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 23 Jun 2022 17:27:37 -0300 Subject: [PATCH 25/98] =?UTF-8?q?feat(67147)=20Remove=20component=20Inform?= =?UTF-8?q?acoesDevolucaoAoTesouro=20da=20tela=20de=20detalhe=20preta?= =?UTF-8?q?=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetComportamentoPorStatus.js | 23 -- .../InformacoesDevolucaoAoTesouro.js | 357 ------------------ 2 files changed, 380 deletions(-) delete mode 100644 src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesDevolucaoAoTesouro.js diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js index 49d96492a..58fde093a 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js @@ -4,7 +4,6 @@ import {BotoesAvancarRetroceder} from "./BotoesAvancarRetroceder"; import {TrilhaDeStatus} from "./TrilhaDeStatus"; import {FormRecebimentoPelaDiretoria} from "./FormRecebimentoPelaDiretoria"; import {InformacoesPrestacaoDeContas} from "./InformacoesPrestacaoDeContas"; -import {InformacoesDevolucaoAoTesouro} from "./InformacoesDevolucaoAoTesouro"; import ComentariosDeAnalise from "./ComentariosDeAnalise"; import {TabsArquivosDeReferencia} from "./ArquivosDeReferencia/TabsArquivosDeReferencia"; import ConferenciaDeLancamentos from "./ConferenciaDeLancamentos"; @@ -31,15 +30,7 @@ export const GetComportamentoPorStatus = ( setShowRecebida, handleChangeFormInformacoesPrestacaoDeContas, informacoesPrestacaoDeContas, - initialFormDevolucaoAoTesouro, - formRef, - despesas, - buscaDespesaPorFiltros, - buscaDespesa, valorTemplate, - despesasTabelas, - tiposDevolucao, - validateFormDevolucaoAoTesouro, infoAta, clickBtnEscolheConta, toggleBtnEscolheConta, @@ -52,7 +43,6 @@ export const GetComportamentoPorStatus = ( clickBtnTabelaAcoes, setShowVoltarParaAnalise, btnSalvarDisabled, - setBtnSalvarDisabled, carregaPrestacaoDeContas, dataRecebimentoDevolutiva, handleChangedataRecebimentoDevolutiva, @@ -178,19 +168,6 @@ export const GetComportamentoPorStatus = ( informacoesPrestacaoDeContas={informacoesPrestacaoDeContas} editavel={true} /> - { - - - const [showConfirmaRemocao, setShowConfirmaRemocao] = useState({abrir:false, indice:0}); - const [btnSalvarDisabled, setBtnSalvarDisabled] = useState(true); - - const onChangeLiberaBtnSalvar = () => { - setBtnSalvarDisabled(false); - } - - const setDisabledCampos = (devolucao) =>{ - return devolucao.visao_criacao === "DRE" && visoesService.getItemUsuarioLogado('visao_selecionada.nome') === 'UE' - }; - - const onClickRemoverDevolucao = async (remove, index) =>{ - await remove(index); - setShowConfirmaRemocao(false); - setBtnSalvarDisabled(false); - }; - - const onHandleClose = () => { - setShowConfirmaRemocao(false); - }; - - const clear = (index, setFieldValue) => { - setFieldValue(`devolucoes_ao_tesouro_da_prestacao[${index}].despesa`, ''); - setFieldValue(`devolucoes_ao_tesouro_da_prestacao[${index}].devolucao_total`, ''); - setFieldValue(`devolucoes_ao_tesouro_da_prestacao[${index}].valor`, '0,00'); - } - - const exibeDespesaSelecionada = (index, values, despesas, devolucao) => { - - if (values.devolucoes_ao_tesouro_da_prestacao[index].despesa) { - let uuid_despesa = values.devolucoes_ao_tesouro_da_prestacao[index].despesa; - /* eslint-disable-next-line no-eval */ - let desp = eval('despesas.devolucao_'+index).find(item => item.uuid === uuid_despesa); - - return ( - - {desp && - - {/* eslint-disable-next-line no-eval */} - - - - {/* eslint-disable-next-line no-eval */} - {desp.nome_fornecedor} - {/* eslint-disable-next-line no-eval */} - {desp.cpf_cnpj_fornecedor} - {/* eslint-disable-next-line no-eval */} - {desp.tipo_documento && desp.tipo_documento.nome ? desp.tipo_documento.nome : ''} - {/* eslint-disable-next-line no-eval */} - {desp.numero_documento} - {/* eslint-disable-next-line no-eval */} - R$ {valorTemplate(desp.valor_total)} - {/* eslint-disable-next-line no-eval */} - {desp.data_documento ? exibeDataPT_BR(desp.data_documento) : ''} - - } - - ) - } - } - - return( - <> - {informacoesPrestacaoDeContas && informacoesPrestacaoDeContas.devolucao_ao_tesouro !== "Não" && - <> - - {props => { - const { - values, - setFieldValue, - } = props; - return ( -
- ( - <> - {values.devolucoes_ao_tesouro_da_prestacao && values.devolucoes_ao_tesouro_da_prestacao.length > 0 && values.devolucoes_ao_tesouro_da_prestacao.map((devolucao, index) => { - return ( -
-
-

- Devolução {index + 1} -

-
-
-
-
-
- - cpfMaskContitional(valor)} - value={devolucao.busca_por_cpf_cnpj ? devolucao.busca_por_cpf_cnpj : ''} - onChange={async (e) => { - props.handleChange(e); - }} - name={`devolucoes_ao_tesouro_da_prestacao[${index}].busca_por_cpf_cnpj`} - type="text" - className='form-control' - placeholder="Digite o nº do CNPJ ou CPF" - disabled={setDisabledCampos(devolucao) } - /> -
- -
- - -
- -
- - { - props.handleChange(e); - }} - type="text" - className='form-control' - disabled={setDisabledCampos(devolucao) } - /> -
-
- -
-
-
- -
-
- {/* eslint-disable-next-line no-eval */} - 0 ? 'table-bordered' : ''}`}> - - {/* eslint-disable-next-line no-eval */} - {values.devolucoes_ao_tesouro_da_prestacao[index].despesa !== "" && despesas && eval('despesas.devolucao_'+index) && eval('despesas.devolucao_'+index).length > 0? - exibeDespesaSelecionada(index, values, despesas, devolucao) - /* eslint-disable-next-line no-eval */ - : despesas && eval('despesas.devolucao_'+index) && eval('despesas.devolucao_'+index).length > 0 ? - /* eslint-disable-next-line no-eval */ - eval('despesas.devolucao_'+index).map((despesa, index_interno)=> - - - {/* eslint-disable-next-line no-eval */} - - {/* eslint-disable-next-line no-eval */} - - {/* eslint-disable-next-line no-eval */} - - {/* eslint-disable-next-line no-eval */} - - {/* eslint-disable-next-line no-eval */} - - {/* eslint-disable-next-line no-eval */} - - {/* eslint-disable-next-line no-eval */} - - - - ): - - - - } - -
values.devolucoes_ao_tesouro_da_prestacao[index].devolucao_total === "true" ? setFieldValue(`devolucoes_ao_tesouro_da_prestacao[${index}].valor`, valorTemplate(despesa.valor_total)): null}/>{despesa.nome_fornecedor}{despesa.cpf_cnpj_fornecedor}{despesa.tipo_documento && despesa.tipo_documento.nome ? despesa.tipo_documento.nome : ''}{despesa.numero_documento}R$ {valorTemplate(despesa.valor_total)}{despesa.data_documento ? exibeDataPT_BR(despesa.data_documento) : ''}

Não existem itens para essa pesquisa

-
-
- -
-
- - - {props.errors.tipo && {props.errors.tipo}} -
-
- -
-
- - - {props.errors.data && {props.errors.data}} -
-
- -
- - -
- -
- - { - props.handleChange(e); - onChangeLiberaBtnSalvar() - }} - className={`form-control`} - selectAllOnFocus={true} - placeholder='Digite o valor' - disabled={setDisabledCampos(devolucao) } - /> -
- - {visoesService.getItemUsuarioLogado('visao_selecionada.nome') === "UE" || (index >= 1 && values.devolucoes_ao_tesouro_da_prestacao.length > 1) ? ( -
-
- -
-
- ) : null} -
- onClickRemoverDevolucao(remove, showConfirmaRemocao.indice)} - titulo="Excluir devolução" - texto="

Essa devolução foi incluida pela Diretoria Regional. Deseja realmente exclui-la?

" - primeiroBotaoTexto="Cancelar" - primeiroBotaoCss="outline-success" - segundoBotaoCss="success" - segundoBotaoTexto="Confirmar" - /> -
- -
- - ) - })} - - {props.errors.campos_obrigatorios && -
-
- {props.errors.campos_obrigatorios} -
-
- } -
- -
- - )} - > -
-
- ) - }} -
- - } - - ) -}; \ No newline at end of file From e8e49fc4e528ec4b8992d9e10eb4a057c72518a9 Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 23 Jun 2022 17:30:30 -0300 Subject: [PATCH 26/98] =?UTF-8?q?feat(67147)=20Remove=20campo=20devolu?= =?UTF-8?q?=C3=A7=C3=A3o=20ao=20tesoure=20da=20tela=20de=20detalhe=20prest?= =?UTF-8?q?acao=20contas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InformacoesPrestacaoDeContas.js | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesPrestacaoDeContas.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesPrestacaoDeContas.js index 6cbf38b01..06972bd72 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesPrestacaoDeContas.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesPrestacaoDeContas.js @@ -30,21 +30,6 @@ export const InformacoesPrestacaoDeContas = ({handleChangeFormInformacoesPrestac placeholderText='' />
-
- - -
From 400376602b1d95cdd8594e9ad1b930a6b5612e42 Mon Sep 17 00:00:00 2001 From: luke Date: Fri, 24 Jun 2022 08:12:35 -0300 Subject: [PATCH 27/98] feat(63304): Novo status publicado MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agora o novo status é exibido na timeline --- .../prestacao-de-contas.scss | 46 +++++++++++- .../RelatorioConsolidado/TrilhaDeStatus.js | 61 +++++++++------ .../dres/RelatorioConsolidado/index.js | 74 +++++++++++++------ .../dres/RelatorioConsolidado.service.js | 6 +- 4 files changed, 138 insertions(+), 49 deletions(-) diff --git a/src/componentes/dres/PrestacaoDeContas/prestacao-de-contas.scss b/src/componentes/dres/PrestacaoDeContas/prestacao-de-contas.scss index 42d665c6d..e6a6139f4 100644 --- a/src/componentes/dres/PrestacaoDeContas/prestacao-de-contas.scss +++ b/src/componentes/dres/PrestacaoDeContas/prestacao-de-contas.scss @@ -461,4 +461,48 @@ color: #297805; font-size: 14px; font-weight: bold; -} \ No newline at end of file +} + +/* trilha status relatorio consolidado */ + +.container-circulo-relatorio-consolidado { + z-index: 1; + text-align: center; + background-color: #fff; + + .circulo { + color: #fff; + font-size: 14px; + background-color: #A4A4A4; + border-radius: 67px; + padding: 3px 8px; + font-weight: bold; + } + + .circulo-duplo { + color: #fff; + font-size: 14px; + border-radius: 67px; + font-weight: bold; + padding: 12px 4px; + border: 2px solid #00585E; + background-color: #fff; + } + + .circulo-relatorio-consolidado-dois-digitos{ + padding: 8px 9px; + } + + .circulo-relatorio-consolidado-tres-digitos{ + padding: 9px 6px; + } + + .circulo-relatorio-consolidado-simples { + background-color: #00585E; + } + + .circulo-relatorio-consolidado-simples-vermelho { + background-color: #B40C02; + } +} + diff --git a/src/componentes/dres/RelatorioConsolidado/TrilhaDeStatus.js b/src/componentes/dres/RelatorioConsolidado/TrilhaDeStatus.js index f7f3d47a5..7b6141ed4 100644 --- a/src/componentes/dres/RelatorioConsolidado/TrilhaDeStatus.js +++ b/src/componentes/dres/RelatorioConsolidado/TrilhaDeStatus.js @@ -1,39 +1,52 @@ import React from "react"; -export const TrilhaDeStatus = ({retornaQtdeStatus, retornaQtdeStatusTotal}) => { +export const TrilhaDeStatus = ({ + trilhaStatus, + filtraStatus, + retornaClasseCirculoTrilhaStatus, + formataNumero, + retornaCorCirculoTrilhaStatus, + eh_circulo_duplo +}) => { + return ( <>
-
Prestações de contas das Associações
+
Prestações de contas das {trilhaStatus.total_associacoes_dre} Associações
-
+ +
 
-
- {retornaQtdeStatus('NAO_RECEBIDA')} -

Não recebido

-
-
- {retornaQtdeStatus('RECEBIDA')} -

Recebida e
aguardando análise

-
-
- {retornaQtdeStatus('DEVOLVIDA')} -

Devolvido
para acertos

-
-
- {retornaQtdeStatus('EM_ANALISE')} -

Em análise

-
-
- {retornaQtdeStatusTotal()} -

Conclusão

da análise

-
+ {filtraStatus().map((item, index) => +
+ {eh_circulo_duplo(item.estilo_css) + ? + <> + + + {formataNumero(item.status)} + + +

+ + : + <> + + {formataNumero(item.status)} + +

+ + } +
+ )} +
- )}; + ) +} \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index eb0e3d9c6..4dcfa2034 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -5,8 +5,9 @@ import { getStatusConsolidadoDre, postPublicarConsolidadoDre, getConsolidadoDre, + getTrilhaStatus } from "../../../services/dres/RelatorioConsolidado.service"; -import {getItensDashboard, getPeriodos} from "../../../services/dres/Dashboard.service"; +import {getPeriodos} from "../../../services/dres/Dashboard.service"; import {SelectPeriodo} from "./SelectPeriodo"; import {PaginasContainer} from "../../../paginas/PaginasContainer"; import {BarraDeStatus} from "./BarraDeStatus"; @@ -36,7 +37,7 @@ const RelatorioConsolidado = () => { // Lauda const [disablebtnGerarLauda, setDisablebtnGerarLauda] = useState(true); - const [itensDashboard, setItensDashboard] = useState(false); + const [trilhaStatus, setTrilhaStatus] = useState(false); const [loading, setLoading] = useState(false); const carregaPeriodos = useCallback(async () => { @@ -99,7 +100,8 @@ const RelatorioConsolidado = () => { // clearing interval return () => clearInterval(timer); } else { - setLoading(false) + buscaTrilhaStatus(); + setLoading(false); } }, [statusProcessamentoConsolidadoDre, retornaStatusConsolidadoDre]); @@ -116,24 +118,25 @@ const RelatorioConsolidado = () => { buscaFiqueDeOlho() }, [buscaFiqueDeOlho]) - const carregaItensDashboard = useCallback(async () => { - if (periodoEscolhido) { - let itens = await getItensDashboard(periodoEscolhido); - setItensDashboard(itens) + const buscaTrilhaStatus = useCallback(async () => { + if (dre_uuid && periodoEscolhido) { + let trilha_status = await getTrilhaStatus(dre_uuid, periodoEscolhido) + setTrilhaStatus(trilha_status) } - }, [periodoEscolhido]); + }, [dre_uuid, periodoEscolhido]) useEffect(() => { - carregaItensDashboard() - }, [carregaItensDashboard]) + buscaTrilhaStatus() + }, [buscaTrilhaStatus]) const handleChangePeriodos = async (uuid_periodo) => { setPeriodoEsolhido(uuid_periodo) }; - const retornaQtdeStatus = (status) => { - let item = itensDashboard.cards.find(element => element.status === status); + const formataNumero = (status) => { + let item = trilhaStatus.cards.find(element => element.status === status); let qtde_itens = item.quantidade_prestacoes; + if (qtde_itens <= 9) { return '0' + qtde_itens; } else { @@ -141,17 +144,38 @@ const RelatorioConsolidado = () => { } }; - const retornaQtdeStatusTotal = () => { - if (itensDashboard) { - let total = itensDashboard.cards.filter(elemtent => elemtent.status === 'APROVADA' || elemtent.status === 'REPROVADA').reduce((total, valor) => total + valor.quantidade_prestacoes, 0); - if (total <= 9) { - return '0' + total; - } else { - return total.toString(); - } + const retornaClasseCirculoTrilhaStatus = (status) => { + let qtde_formatado = formataNumero(status); + + if(qtde_formatado && qtde_formatado.length < 3){ + return "circulo-relatorio-consolidado-dois-digitos" + } + else{ + return "circulo-relatorio-consolidado-tres-digitos" + } + }; + + const retornaCorCirculoTrilhaStatus = (estilo) => { + if(estilo === 2){ + return "circulo-relatorio-consolidado-simples-vermelho" } + + return "circulo-relatorio-consolidado-simples" + }; + const eh_circulo_duplo = (estilo) => { + if(estilo === 1){ + return true; + } + + return false; + } + + const filtraStatus = () => { + return trilhaStatus.cards.filter((item) => item.status !== "APROVADA" && item.status !== "REPROVADA") + } + const publicarConsolidadoDre = async () => { let payload = { dre_uuid: dre_uuid, @@ -185,11 +209,15 @@ const RelatorioConsolidado = () => { periodoEscolhido={periodoEscolhido} handleChangePeriodos={handleChangePeriodos} /> - {periodoEscolhido && dre_uuid && itensDashboard ? ( + {periodoEscolhido && dre_uuid && trilhaStatus ? ( <> <> {loading ? ( diff --git a/src/services/dres/RelatorioConsolidado.service.js b/src/services/dres/RelatorioConsolidado.service.js index 7d7840bef..a1f9ca817 100644 --- a/src/services/dres/RelatorioConsolidado.service.js +++ b/src/services/dres/RelatorioConsolidado.service.js @@ -134,4 +134,8 @@ export const getListaAssociacoesNaoRegularizadas = async (dre_uuid) => { export const getStatusAta = async (dre_uuid, periodo_uuid) => { return (await api.get(`/api/ata-parecer-tecnico/status-ata/?dre=${dre_uuid}&periodo=${periodo_uuid}`, authHeader)).data -} \ No newline at end of file +} + +export const getTrilhaStatus = async (dre_uuid, uuid_periodo) => { + return (await api.get(`/api/consolidados-dre/trilha-de-status/?dre=${dre_uuid}&periodo=${uuid_periodo}`, authHeader)).data +}; \ No newline at end of file From efc5fef1c04506946d68f7ebc923965bd9ba92ba Mon Sep 17 00:00:00 2001 From: linikerj Date: Fri, 24 Jun 2022 12:09:58 -0300 Subject: [PATCH 28/98] =?UTF-8?q?feat(65002)=20Adiciona=20regra=20de=20val?= =?UTF-8?q?ida=C3=A7=C3=A3o=20de=20datas=20menos=20que=20o=20dia=20atual?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/componentes/sme/ExtracaoDados/index.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/componentes/sme/ExtracaoDados/index.js b/src/componentes/sme/ExtracaoDados/index.js index 025f20226..f818f5df0 100644 --- a/src/componentes/sme/ExtracaoDados/index.js +++ b/src/componentes/sme/ExtracaoDados/index.js @@ -33,6 +33,10 @@ export const ExtracaoDados = () => { ( + (date).startOf('day').toDate().valueOf() > + moment().startOf('day').toDate().valueOf() + )} allowEmpty={[true, true]} className='extracao-filter-datepicker' placeholder={['data inicial', 'data final']} From 3458e3a46669260b67f0d4ac723206f576798a0b Mon Sep 17 00:00:00 2001 From: linikerj Date: Mon, 27 Jun 2022 13:45:29 -0300 Subject: [PATCH 29/98] =?UTF-8?q?feat(67146)=20Habilita=20bot=C3=A3o=20de?= =?UTF-8?q?=20gerar=20ata,=20para=20qualquer=20condi=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GeracaoDaAta/GeracaoAtaApresentacao/index.js | 2 -- src/componentes/escolas/PrestacaoDeContas/index.js | 14 +++----------- 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js index 9d321089e..719d87545 100644 --- a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js +++ b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js @@ -7,7 +7,6 @@ import {faDownload} from '@fortawesome/free-solid-svg-icons' export const GeracaoAtaApresentacao = ( { - gerarAta, uuidAtaApresentacao, uuidPrestacaoConta, corBoxAtaApresentacao, @@ -89,7 +88,6 @@ export const GeracaoAtaApresentacao = ( onClick={() => gerar_ata_pdf()} type="button" className="btn btn-outline-success float-right mr-2" - disabled={!uuidAtaApresentacao || !gerarAta} > gerar ata diff --git a/src/componentes/escolas/PrestacaoDeContas/index.js b/src/componentes/escolas/PrestacaoDeContas/index.js index b6464e76c..dbbb862c3 100644 --- a/src/componentes/escolas/PrestacaoDeContas/index.js +++ b/src/componentes/escolas/PrestacaoDeContas/index.js @@ -31,7 +31,6 @@ export const PrestacaoDeContas = ({setStatusPC}) => { const [textoBoxAtaApresentacao, settextoBoxAtaApresentacao] = useState(""); const [dataBoxAtaApresentacao, setdataBoxAtaApresentacao] = useState(""); const [uuidAtaApresentacao, setUuidAtaApresentacao] = useState(""); - const [gerarAta, setGerarAta] = useState(false); const associacaoUuid = localStorage.getItem(ASSOCIACAO_UUID) @@ -216,16 +215,14 @@ export const PrestacaoDeContas = ({setStatusPC}) => { if (data_preenchimento.alterado_em === null){ setcorBoxAtaApresentacao("vermelho"); setdataBoxAtaApresentacao("Ata não preenchida"); - setGerarAta(false) } else if (!data_preenchimento.completa) { setcorBoxAtaApresentacao("vermelho"); setdataBoxAtaApresentacao("Ata incompleta"); - setGerarAta(false) } + } else { setcorBoxAtaApresentacao("verde"); - setdataBoxAtaApresentacao("Último preenchimento em "+exibeDateTimePT_BR_Ata(data_preenchimento.alterado_em)); - setGerarAta(true) + setdataBoxAtaApresentacao("Último preenchimento em "+exibeDateTimePT_BR_Ata(data_preenchimento.alterado_em)); } }catch (e) { @@ -235,7 +232,7 @@ export const PrestacaoDeContas = ({setStatusPC}) => { setcorBoxAtaApresentacao("vermelho"); settextoBoxAtaApresentacao(data_preenchimento.nome); setdataBoxAtaApresentacao("Ata não preenchida"); - setGerarAta(false) + } } @@ -250,11 +247,9 @@ export const PrestacaoDeContas = ({setStatusPC}) => { if (data_preenchimento.alterado_em === null) { setcorBoxAtaApresentacao("vermelho"); setdataBoxAtaApresentacao("Ata não preenchida"); - setGerarAta(false) } else { setcorBoxAtaApresentacao("verde"); setdataBoxAtaApresentacao("Último preenchimento em " + exibeDateTimePT_BR_Ata(data_preenchimento.alterado_em)); - setGerarAta(true) } } catch (e) { @@ -264,10 +259,8 @@ export const PrestacaoDeContas = ({setStatusPC}) => { setcorBoxAtaApresentacao("vermelho"); settextoBoxAtaApresentacao(data_preenchimento.nome); setdataBoxAtaApresentacao("Ata não preenchida"); - setGerarAta(false) } - } setLoading(false); } @@ -387,7 +380,6 @@ export const PrestacaoDeContas = ({setStatusPC}) => { dataBoxAtaApresentacao={dataBoxAtaApresentacao} uuidAtaApresentacao={uuidAtaApresentacao} uuidPrestacaoConta={uuidPrestacaoConta} - gerarAta={gerarAta} /> {localStorage.getItem('uuidPrestacaoConta') && exibeBoxAtaRetificadora() && From a8ab735329eeee095483af672a5b3e7aa649c911 Mon Sep 17 00:00:00 2001 From: linikerj Date: Mon, 27 Jun 2022 14:17:52 -0300 Subject: [PATCH 30/98] =?UTF-8?q?feat(67146)=20Habilita=20bot=C3=A3o=20par?= =?UTF-8?q?a=20gerar=20ata=20retificadora.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GeracaoAtaRetificadora/BoxAtaRetificadora/index.js | 2 -- src/componentes/escolas/GeracaoAtaRetificadora/index.js | 8 -------- 2 files changed, 10 deletions(-) diff --git a/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js b/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js index 0ec76ab85..c3847b8a8 100644 --- a/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js +++ b/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js @@ -11,7 +11,6 @@ export const BoxAtaRetificadora = ({ onClickVisualizarAta, uuidPrestacaoConta, uuidAtaRetificacao, - gerarAtaRetificadora, statusPc }) => { const [dadosAtaRetificadora, setDadosAtaRetificadora] = useState({}); @@ -81,7 +80,6 @@ export const BoxAtaRetificadora = ({ onClick={() => gerar_ata_pdf()} type="button" className="btn btn-outline-success float-right mr-2" - disabled={!uuidAtaRetificacao || !gerarAtaRetificadora} > gerar ata diff --git a/src/componentes/escolas/GeracaoAtaRetificadora/index.js b/src/componentes/escolas/GeracaoAtaRetificadora/index.js index 0887e7db8..2a58ec957 100644 --- a/src/componentes/escolas/GeracaoAtaRetificadora/index.js +++ b/src/componentes/escolas/GeracaoAtaRetificadora/index.js @@ -9,7 +9,6 @@ export const GeracaoAtaRetificadora = ({uuidPrestacaoConta, statusPrestacaoDeCon const [corBoxAtaRetificadora, setCorBoxAtaRetificadora] = useState(""); const [textoBoxAtaRetificadora, setTextoBoxAtaRetificadora] = useState(""); const [dataBoxAtaRetificadora, setDataBoxAtaRetificadora] = useState(""); - const [gerarAtaRetificadora, setGerarAtaRetificadora] = useState(false); const statusPC = statusPrestacaoDeConta && statusPrestacaoDeConta.prestacao_contas_status ? statusPrestacaoDeConta.prestacao_contas_status.status_prestacao : '' @@ -26,17 +25,14 @@ export const GeracaoAtaRetificadora = ({uuidPrestacaoConta, statusPrestacaoDeCon if (dados.alterado_em === null){ setCorBoxAtaRetificadora("vermelho"); setDataBoxAtaRetificadora("Ata não preenchida"); - setGerarAtaRetificadora(false) } else if (!dados.completa) { setCorBoxAtaRetificadora("vermelho"); setDataBoxAtaRetificadora("Ata incompleta"); - setGerarAtaRetificadora(false) } else { setCorBoxAtaRetificadora("verde"); setDataBoxAtaRetificadora("Último preenchimento em "+exibeDateTimePT_BR_Ata(dados.alterado_em)); - setGerarAtaRetificadora(true) } } catch (e) { if (statusPrestacaoDeConta.prestacao_contas_status.status_prestacao === "DEVOLVIDA" || statusPrestacaoDeConta.prestacao_contas_status.status_prestacao === "DEVOLVIDA_RETORNADA") { @@ -46,17 +42,14 @@ export const GeracaoAtaRetificadora = ({uuidPrestacaoConta, statusPrestacaoDeCon if (dados.alterado_em === null){ setCorBoxAtaRetificadora("vermelho"); setDataBoxAtaRetificadora("Ata não preenchida"); - setGerarAtaRetificadora(false) } else if (!dados.completa) { setCorBoxAtaRetificadora("vermelho"); setDataBoxAtaRetificadora("Ata incompleta"); - setGerarAtaRetificadora(false) } else { setCorBoxAtaRetificadora("verde"); setDataBoxAtaRetificadora("Último preenchimento em "+exibeDateTimePT_BR_Ata(dados.alterado_em)); - setGerarAtaRetificadora(true) } } } @@ -75,7 +68,6 @@ export const GeracaoAtaRetificadora = ({uuidPrestacaoConta, statusPrestacaoDeCon onClickVisualizarAta={onClickVisualizarAta} uuidPrestacaoConta={uuidPrestacaoConta} uuidAtaRetificacao={dadosAtaRetificadora ? dadosAtaRetificadora.uuid : ""} - gerarAtaRetificadora={gerarAtaRetificadora} statusPc={statusPC} /> } From 36e15676700487bd440c8b5907f0f4c5180b4a8e Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 28 Jun 2022 07:55:39 -0300 Subject: [PATCH 31/98] feat(62837): Cria barra unidade em suporte em PaginasContainer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera PaginasContainer para passar a exibir uma barra fixa em todas as páginas quando a unidade selecionada for um acesso de suporte. --- src/paginas/PaginasContainer.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/paginas/PaginasContainer.js b/src/paginas/PaginasContainer.js index 4870ca1b8..562eab362 100644 --- a/src/paginas/PaginasContainer.js +++ b/src/paginas/PaginasContainer.js @@ -1,24 +1,45 @@ -import React, {useContext} from "react"; +import React, {useContext, useEffect, useState} from "react"; import {SidebarContext} from "../context/Sidebar"; import {NotificacaoContext} from "../context/Notificacoes"; import {useHistory} from "react-router-dom"; import {notificaDevolucaoPCService} from "../services/NotificacaDevolucaoPC.service"; import { barraMensagemCustom } from "../componentes/Globais/BarraMensagem"; +import {visoesService} from "../services/visoes.service" export const PaginasContainer = ({children}) => { const history = useHistory(); const sidebarStatus = useContext(SidebarContext); const notificacaoContext = useContext(NotificacaoContext); const mensagem = `A prestação de contas ${localStorage.getItem("NOTIFICAR_DEVOLUCAO_REFERENCIA")} foi devolvida para acertos pela DRE.` - const onVerAcertos = () => { notificacaoContext.setExibeMensagemFixaTemDevolucao(false) notificaDevolucaoPCService.marcaNotificacaoComoLidaERedirecianaParaVerAcertos(history) }; + const mensagemSuporte = "Você está acessando essa unidade em modo de suporte. Use o botão para encerrar o suporte quando concluir." + const [unidadeEstaEmSuporte, setUnidadeEstaEmSuporte] = useState(false) + + const verificaSeUnidadeEstaEmSuporte = () => { + const dadosUsuarioLogado = visoesService.getDadosDoUsuarioLogado() + + if (dadosUsuarioLogado) { + const unidadeSelecionada = dadosUsuarioLogado.unidades.find(obj => { + return obj.uuid === dadosUsuarioLogado.unidade_selecionada.uuid + }) + setUnidadeEstaEmSuporte(unidadeSelecionada.acesso_de_suporte) + } + } + + useEffect(() => { + verificaSeUnidadeEstaEmSuporte() + }, []); + return ( <>
+ { unidadeEstaEmSuporte && + barraMensagemCustom.BarraMensagemSucessLaranja(mensagemSuporte, "Encerrar suporte", onVerAcertos, true) + } { notificacaoContext.exibeMensagemFixaTemDevolucao && barraMensagemCustom.BarraMensagemSucessLaranja(mensagem, "Ver acertos", onVerAcertos, true) } From 4406e6ce265b3f66073eb4fad76ca39aa79d400a Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 28 Jun 2022 09:17:09 -0300 Subject: [PATCH 32/98] refactor(62837): Refatora barra unidade em suporte MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refatora o código de exibição da barra de unidade em suporte para extrair a função para um componente próprio e retirar da PaginasContainer. --- .../ModalConfirmaEncerramentoSuporte.js | 19 ++++++ .../BarraMensagemUnidadeEmSuporte/index.js | 63 +++++++++++++++++++ src/paginas/PaginasContainer.js | 27 ++------ 3 files changed, 86 insertions(+), 23 deletions(-) create mode 100644 src/componentes/Globais/BarraMensagemUnidadeEmSuporte/ModalConfirmaEncerramentoSuporte.js create mode 100644 src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js diff --git a/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/ModalConfirmaEncerramentoSuporte.js b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/ModalConfirmaEncerramentoSuporte.js new file mode 100644 index 000000000..131954808 --- /dev/null +++ b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/ModalConfirmaEncerramentoSuporte.js @@ -0,0 +1,19 @@ +import {ModalBootstrap} from "../ModalBootstrap"; +import React from "react"; + +export const ModalConfirmaEncerramentoSuporte = (props) => { + return ( + {}} + titulo={"Confirmação de encerramento de suporte"} + bodyText={"

Deseja encerrar o suporte a essa unidade?

Ao confirmar, você será direcionado para a página de acesso ao sistema e ao acessá-lo, não visualizará mais essa unidade.

"} + primeiroBotaoTexto={"Não"} + primeiroBotaoCss={"outline-success"} + primeiroBotaoOnclick={props.handleNaoConfirmaEncerramentoSuporte} + segundoBotaoTexto={"Sim"} + segundoBotaoCss={"danger"} + segundoBotaoOnclick={props.handleConfirmaEncerramentoSuporte} + /> + ) +}; diff --git a/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js new file mode 100644 index 000000000..20b7eb8b8 --- /dev/null +++ b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js @@ -0,0 +1,63 @@ +import React, {useCallback, useEffect, useState} from "react"; +import { barraMensagemCustom } from "../BarraMensagem"; +import {visoesService} from "../../../services/visoes.service" +import {ModalConfirmaEncerramentoSuporte} from "./ModalConfirmaEncerramentoSuporte"; + +export const BarraMensagemUnidadeEmSuporte = () => { + const mensagemSuporte = "Você está acessando essa unidade em modo de suporte. Use o botão para encerrar o suporte quando concluir." + const [unidadeEstaEmSuporte, setUnidadeEstaEmSuporte] = useState(false) + + const verificaSeUnidadeEstaEmSuporte = () => { + const dadosUsuarioLogado = visoesService.getDadosDoUsuarioLogado() + + if (dadosUsuarioLogado) { + const unidadeSelecionada = dadosUsuarioLogado.unidades.find(obj => { + return obj.uuid === dadosUsuarioLogado.unidade_selecionada.uuid + }) + setUnidadeEstaEmSuporte(unidadeSelecionada.acesso_de_suporte) + } + } + + useEffect(() => { + verificaSeUnidadeEstaEmSuporte() + }, []); + + const handleEncerrarSuporte = () => { + setShowModalConfirmaEncerramentoSuporte(true) + } + + const [showModalConfirmaEncerramentoSuporte, setShowModalConfirmaEncerramentoSuporte] = useState(false); + const handleNaoConfirmaEncerramentoSuporte = useCallback(() => { + setShowModalConfirmaEncerramentoSuporte(false) + }, []); + const handleConfirmaEncerramentoSuporte = useCallback(() => { + // viabilizarAcessoSuporte(getUsuarioLogado().login, {codigo_eol: unidadeSuporteSelecionada.codigo_eol}) + // setarUnidadeProximoLoginAcessoSuporte( + // unidadeSuporteSelecionada.visao, + // unidadeSuporteSelecionada.uuid, + // unidadeSuporteSelecionada.associacao_uuid, + // unidadeSuporteSelecionada.associacao_nome, + // unidadeSuporteSelecionada.tipo_unidade, + // unidadeSuporteSelecionada.nome + // ) + // authService.logout() + setUnidadeEstaEmSuporte(false) + setShowModalConfirmaEncerramentoSuporte(false) + }, []); + + return ( + <> + + { unidadeEstaEmSuporte && + barraMensagemCustom.BarraMensagemSucessLaranja(mensagemSuporte, "Encerrar suporte", handleEncerrarSuporte, true) + } +
+ +
+ + ); +} diff --git a/src/paginas/PaginasContainer.js b/src/paginas/PaginasContainer.js index 562eab362..63cde2138 100644 --- a/src/paginas/PaginasContainer.js +++ b/src/paginas/PaginasContainer.js @@ -1,10 +1,11 @@ -import React, {useContext, useEffect, useState} from "react"; +import React, {useCallback, useContext, useEffect, useState} from "react"; import {SidebarContext} from "../context/Sidebar"; import {NotificacaoContext} from "../context/Notificacoes"; import {useHistory} from "react-router-dom"; import {notificaDevolucaoPCService} from "../services/NotificacaDevolucaoPC.service"; import { barraMensagemCustom } from "../componentes/Globais/BarraMensagem"; -import {visoesService} from "../services/visoes.service" + +import {BarraMensagemUnidadeEmSuporte} from "../componentes/Globais/BarraMensagemUnidadeEmSuporte"; export const PaginasContainer = ({children}) => { const history = useHistory(); @@ -16,30 +17,10 @@ export const PaginasContainer = ({children}) => { notificaDevolucaoPCService.marcaNotificacaoComoLidaERedirecianaParaVerAcertos(history) }; - const mensagemSuporte = "Você está acessando essa unidade em modo de suporte. Use o botão para encerrar o suporte quando concluir." - const [unidadeEstaEmSuporte, setUnidadeEstaEmSuporte] = useState(false) - - const verificaSeUnidadeEstaEmSuporte = () => { - const dadosUsuarioLogado = visoesService.getDadosDoUsuarioLogado() - - if (dadosUsuarioLogado) { - const unidadeSelecionada = dadosUsuarioLogado.unidades.find(obj => { - return obj.uuid === dadosUsuarioLogado.unidade_selecionada.uuid - }) - setUnidadeEstaEmSuporte(unidadeSelecionada.acesso_de_suporte) - } - } - - useEffect(() => { - verificaSeUnidadeEstaEmSuporte() - }, []); - return ( <>
- { unidadeEstaEmSuporte && - barraMensagemCustom.BarraMensagemSucessLaranja(mensagemSuporte, "Encerrar suporte", onVerAcertos, true) - } + { notificacaoContext.exibeMensagemFixaTemDevolucao && barraMensagemCustom.BarraMensagemSucessLaranja(mensagem, "Ver acertos", onVerAcertos, true) } From 937896542529dbfa2271c85f1632cc00e9747e91 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 28 Jun 2022 10:54:12 -0300 Subject: [PATCH 33/98] refactor(62837): Implementa encerramento de acesso de suporte MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementa a ação de encerrar o acesso de suporte que chama o endpoint de encerramento do suporte e faz o logout. --- .../BarraMensagemUnidadeEmSuporte/index.js | 24 ++++++++----------- src/services/auth.service.js | 7 ++++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js index 20b7eb8b8..34e43f685 100644 --- a/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js +++ b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js @@ -2,19 +2,22 @@ import React, {useCallback, useEffect, useState} from "react"; import { barraMensagemCustom } from "../BarraMensagem"; import {visoesService} from "../../../services/visoes.service" import {ModalConfirmaEncerramentoSuporte} from "./ModalConfirmaEncerramentoSuporte"; +import {encerrarAcessoSuporte,authService} from "../../../services/auth.service"; export const BarraMensagemUnidadeEmSuporte = () => { - const mensagemSuporte = "Você está acessando essa unidade em modo de suporte. Use o botão para encerrar o suporte quando concluir." + const mensagemSuporte = "Você está acessando essa unidade em MODO SUPORTE. Use o botão encerrar quando concluir o suporte." const [unidadeEstaEmSuporte, setUnidadeEstaEmSuporte] = useState(false) - const verificaSeUnidadeEstaEmSuporte = () => { - const dadosUsuarioLogado = visoesService.getDadosDoUsuarioLogado() + const dadosUsuarioLogado = visoesService.getDadosDoUsuarioLogado() + const verificaSeUnidadeEstaEmSuporte = () => { if (dadosUsuarioLogado) { const unidadeSelecionada = dadosUsuarioLogado.unidades.find(obj => { return obj.uuid === dadosUsuarioLogado.unidade_selecionada.uuid }) - setUnidadeEstaEmSuporte(unidadeSelecionada.acesso_de_suporte) + if (unidadeSelecionada && unidadeSelecionada.acesso_de_suporte){ + setUnidadeEstaEmSuporte(unidadeSelecionada.acesso_de_suporte) + } } } @@ -31,18 +34,11 @@ export const BarraMensagemUnidadeEmSuporte = () => { setShowModalConfirmaEncerramentoSuporte(false) }, []); const handleConfirmaEncerramentoSuporte = useCallback(() => { - // viabilizarAcessoSuporte(getUsuarioLogado().login, {codigo_eol: unidadeSuporteSelecionada.codigo_eol}) - // setarUnidadeProximoLoginAcessoSuporte( - // unidadeSuporteSelecionada.visao, - // unidadeSuporteSelecionada.uuid, - // unidadeSuporteSelecionada.associacao_uuid, - // unidadeSuporteSelecionada.associacao_nome, - // unidadeSuporteSelecionada.tipo_unidade, - // unidadeSuporteSelecionada.nome - // ) - // authService.logout() + encerrarAcessoSuporte(dadosUsuarioLogado.usuario_logado.login, dadosUsuarioLogado.unidade_selecionada.uuid) setUnidadeEstaEmSuporte(false) setShowModalConfirmaEncerramentoSuporte(false) + localStorage.removeItem('DADOS_USUARIO_LOGADO'); + authService.logout() }, []); return ( diff --git a/src/services/auth.service.js b/src/services/auth.service.js index 0dc49c48b..3b0410087 100644 --- a/src/services/auth.service.js +++ b/src/services/auth.service.js @@ -169,3 +169,10 @@ export const getUsuarioLogado = () => { export const viabilizarAcessoSuporte = async (usuario, payload) => { return (await api.post(`api/usuarios/${usuario}/viabilizar-acesso-suporte/`, payload, authHeaderAuthorization)) }; + +export const encerrarAcessoSuporte = async (usuario, unidade_suporte_uuid) => { + const payload = { + unidade_suporte_uuid: unidade_suporte_uuid + } + return (await api.post(`api/usuarios/${usuario}/encerrar-acesso-suporte/`, payload, authHeaderAuthorization)) +}; From 017fc2f403d2e1c4cddd2bb58a7c06aba6386c27 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 28 Jun 2022 15:12:32 -0300 Subject: [PATCH 34/98] =?UTF-8?q?feat(62837):=20Implementa=20verifica?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20falha=20no=20acesso=20de=20suporte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera as chamadas a API para iniciar e encerrar o acesso de suporte para sá efetivar as alterações no front após API retornar com sucesso. --- .../BarraMensagemUnidadeEmSuporte/index.js | 14 +++++++--- .../Globais/SuporteAsUnidades/index.js | 26 ++++++++++++------- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js index 34e43f685..98fca4565 100644 --- a/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js +++ b/src/componentes/Globais/BarraMensagemUnidadeEmSuporte/index.js @@ -35,10 +35,16 @@ export const BarraMensagemUnidadeEmSuporte = () => { }, []); const handleConfirmaEncerramentoSuporte = useCallback(() => { encerrarAcessoSuporte(dadosUsuarioLogado.usuario_logado.login, dadosUsuarioLogado.unidade_selecionada.uuid) - setUnidadeEstaEmSuporte(false) - setShowModalConfirmaEncerramentoSuporte(false) - localStorage.removeItem('DADOS_USUARIO_LOGADO'); - authService.logout() + .then((result) => { + setUnidadeEstaEmSuporte(false) + setShowModalConfirmaEncerramentoSuporte(false) + localStorage.removeItem('DADOS_USUARIO_LOGADO'); + authService.logout() + }) + .catch((erro) => { + console.error('Erro ao encerrar acesso de suporte.', erro) + }) + }, []); return ( diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index f13f17785..bca438baf 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -24,16 +24,22 @@ export const SuporteAsUnidades = (props) =>{ const handleConfirmaSuporte = useCallback(() => { viabilizarAcessoSuporte(getUsuarioLogado().login, {codigo_eol: unidadeSuporteSelecionada.codigo_eol}) - setarUnidadeProximoLoginAcessoSuporte( - unidadeSuporteSelecionada.visao, - unidadeSuporteSelecionada.uuid, - unidadeSuporteSelecionada.associacao_uuid, - unidadeSuporteSelecionada.associacao_nome, - unidadeSuporteSelecionada.tipo_unidade, - unidadeSuporteSelecionada.nome - ) - authService.logout() - setShowModalConfirmaSuporte(false) + .then((result) => { + setarUnidadeProximoLoginAcessoSuporte( + unidadeSuporteSelecionada.visao, + unidadeSuporteSelecionada.uuid, + unidadeSuporteSelecionada.associacao_uuid, + unidadeSuporteSelecionada.associacao_nome, + unidadeSuporteSelecionada.tipo_unidade, + unidadeSuporteSelecionada.nome + ) + authService.logout() + setShowModalConfirmaSuporte(false) + }) + .catch((erro) => { + console.error('Erro ao viabilizar acesso de suporte.', erro) + }) + }, [unidadeSuporteSelecionada]); const handleSelecaoUnidadeSuporte = useCallback((unidadeSelecionada) => { From d7ba5d86c94b871ace0027682dd6fec5296f9c27 Mon Sep 17 00:00:00 2001 From: linikerj Date: Tue, 28 Jun 2022 15:41:52 -0300 Subject: [PATCH 35/98] =?UTF-8?q?feat(67146)=20Finaliza=20modal=20com=20ca?= =?UTF-8?q?mpos=20inv=C3=A1lidos.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GeracaoAtaApresentacao/index.js | 42 +++++++++++++------ 1 file changed, 30 insertions(+), 12 deletions(-) diff --git a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js index 719d87545..599428107 100644 --- a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js +++ b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js @@ -1,6 +1,7 @@ import React, {useCallback, useEffect, useState} from "react"; import "../geracao-da-ata.scss" import {getGerarAtaPdf, getAtas, getDownloadAtaPdf} from "../../../../services/escolas/AtasAssociacao.service"; +import {ModalNaoPodeGerarAta} from "../ModalNaoPodeGerarAta"; import Spinner from "../../../../assets/img/spinner.gif"; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome' import {faDownload} from '@fortawesome/free-solid-svg-icons' @@ -13,24 +14,24 @@ export const GeracaoAtaApresentacao = ( textoBoxAtaApresentacao, dataBoxAtaApresentacao, onClickVisualizarAta, - uuidAssociacao, - uuidPeriodo, } ) => { const [dadosAta, setDadosAta] = useState({}); + const [showNaoPodeGerarAta, setShowNaoPodeGerarAta] = useState(false); + const [textoModalAta, setTextoModalAta] = useState('

Você não pode gerar o PDF de uma ata incompleta.

'); useEffect(() => { if (uuidAtaApresentacao && dadosAta && dadosAta.status_geracao_pdf && dadosAta.status_geracao_pdf === 'EM_PROCESSAMENTO'){ const timer = setInterval(() => { - get_dados_ata(); + getDadosAta(); }, 5000); // clearing interval return () => clearInterval(timer); } }); - const get_dados_ata = useCallback(async ()=>{ + const getDadosAta = useCallback(async ()=>{ if (uuidAtaApresentacao){ let dados_ata = await getAtas(uuidAtaApresentacao); setDadosAta(dados_ata) @@ -38,17 +39,24 @@ export const GeracaoAtaApresentacao = ( }, [uuidAtaApresentacao]) useEffect(()=>{ - get_dados_ata() - }, [get_dados_ata]) + getDadosAta() + }, [getDadosAta]) - const gerar_ata_pdf = async () =>{ - await getGerarAtaPdf(uuidPrestacaoConta, uuidAtaApresentacao) - await get_dados_ata() + const gerarAta = async () =>{ + try { + await getGerarAtaPdf(uuidPrestacaoConta, uuidAtaApresentacao) + await getDadosAta() + } + catch (e) { + const camposInvalidos = e.response.data.campos_invalidos.join(', '); + setTextoModalAta(`

Você não pode gerar o PDF de uma ata incompleta. Para completa-la preencha os campos ${camposInvalidos}.

`) + setShowNaoPodeGerarAta(true) + } } const download_ata_pdf = async () =>{ await getDownloadAtaPdf(uuidAtaApresentacao) - await get_dados_ata() + await getDadosAta() } return ( @@ -80,12 +88,22 @@ export const GeracaoAtaApresentacao = ( }

- +
+ { setShowNaoPodeGerarAta(false) }} + setShowNaoPodeGerarAta={setShowNaoPodeGerarAta} + titulo="Campo em ata incompletos" + texto={textoModalAta} + primeiroBotaoTexto="Fechar" + primeiroBotaoCss="outline-success" + /> +
{uuidPrestacaoConta &&
+
+ { setShowNaoPodeGerarAta(false) }} + setShowNaoPodeGerarAta={setShowNaoPodeGerarAta} + titulo="Campo em ata incompletos" + texto={textoModalAta} + primeiroBotaoTexto="Fechar" + primeiroBotaoCss="outline-success" + /> +
{ statusPc !== 'DEVOLVIDA' && - - {dadosAta && dadosAta.alterado_em && - - } + - {dadosAta && dadosAta.arquivo_pdf && textoBtnGerar() !== 'Ata sendo gerada...' && + {dadosAta && dadosAta.arquivo_pdf && - } diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index 4dcfa2034..09522db19 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -5,7 +5,8 @@ import { getStatusConsolidadoDre, postPublicarConsolidadoDre, getConsolidadoDre, - getTrilhaStatus + getTrilhaStatus, + getStatusAta } from "../../../services/dres/RelatorioConsolidado.service"; import {getPeriodos} from "../../../services/dres/Dashboard.service"; import {SelectPeriodo} from "./SelectPeriodo"; @@ -20,6 +21,7 @@ import PublicarDocumentos from "./PublicarDocumentos"; import DemonstrativoDaExecucaoFisicoFinanceira from "./DemonstrativoDaExecucaoFisicoFinanceira"; import {AtaParecerTecnico} from "./AtaParecerTecnico"; import Lauda from "./Lauda"; +import { ModalAtaNaoPreenchida } from "../../../utils/Modais"; const RelatorioConsolidado = () => { @@ -34,6 +36,11 @@ const RelatorioConsolidado = () => { const [periodos, setPeriodos] = useState(false); const [periodoEscolhido, setPeriodoEsolhido] = useState(false); + // Ata + const [ataParecerTecnico, setAtaParecerTecnico] = useState(false); + const [showAtaNaoPreenchida, setShowAtaNaoPreenchida] = useState(false); + + // Lauda const [disablebtnGerarLauda, setDisablebtnGerarLauda] = useState(true); @@ -75,6 +82,26 @@ const RelatorioConsolidado = () => { carregaConsolidadoDre() }, [carregaConsolidadoDre]) + const carregaAtaParecerTecnico = useCallback(async () => { + if (dre_uuid && periodoEscolhido){ + try { + let ata = await getStatusAta(dre_uuid, periodoEscolhido); + if(ata && ata.uuid){ + setAtaParecerTecnico(ata); + } + else{ + setAtaParecerTecnico(false); + } + }catch (e) { + console.log("Erro ao buscar Ata parecer tecnico ", e) + } + } + }, [dre_uuid, periodoEscolhido]) + + useEffect(() => { + carregaAtaParecerTecnico() + }, [carregaAtaParecerTecnico]) + const retornaStatusConsolidadoDre = useCallback(async () => { if (dre_uuid && periodoEscolhido) { try { @@ -101,6 +128,7 @@ const RelatorioConsolidado = () => { return () => clearInterval(timer); } else { buscaTrilhaStatus(); + carregaAtaParecerTecnico(); setLoading(false); } }, [statusProcessamentoConsolidadoDre, retornaStatusConsolidadoDre]); @@ -182,9 +210,14 @@ const RelatorioConsolidado = () => { periodo_uuid: periodoEscolhido } try { - let publicar = await postPublicarConsolidadoDre(payload) - setStatusProcessamentoConsolidadoDre(publicar.status) - setConsolidadoDre(publicar) + if(ataParecerTecnico.uuid && ataParecerTecnico.alterado_em === null){ + setShowAtaNaoPreenchida(true); + } + else{ + let publicar = await postPublicarConsolidadoDre(payload); + setStatusProcessamentoConsolidadoDre(publicar.status); + setConsolidadoDre(publicar); + } }catch (e) { console.log("Erro ao publicar Consolidado Dre ", e) } @@ -240,15 +273,11 @@ const RelatorioConsolidado = () => { statusConsolidadoDre={statusConsolidadoDre} periodoEscolhido={periodoEscolhido} /> - {statusConsolidadoDre && statusConsolidadoDre.status_geracao === "GERADOS_TOTAIS" && - - } + + + {
+
+ setShowAtaNaoPreenchida(false)} + /> +
+ ) } diff --git a/src/services/dres/AtasParecerTecnico.service.js b/src/services/dres/AtasParecerTecnico.service.js index 883605af5..25f7a3ffd 100644 --- a/src/services/dres/AtasParecerTecnico.service.js +++ b/src/services/dres/AtasParecerTecnico.service.js @@ -24,17 +24,13 @@ export const postEdicaoAtaParecerTecnico = async (ata_uuid, payload) => { return (await api.patch(`/api/ata-parecer-tecnico/${ata_uuid}/`, payload, authHeader)).data }; -export const getGerarAta = async (ata_uuid, dre_uuid, periodo_uuid) => { - return (await api.get(`api/ata-parecer-tecnico/gerar-ata-parecer-tecnico/?ata=${ata_uuid}&dre=${dre_uuid}&periodo=${periodo_uuid}`, authHeader)).data -} - export const getStatusAta = async (dre_uuid, periodo_uuid) => { return (await api.get(`api/ata-parecer-tecnico/status-ata/?dre=${dre_uuid}&periodo=${periodo_uuid}`, authHeader)).data } export const getDownloadAtaParecerTecnico = async (ata_uuid) => { return api - .get(`api/ata-parecer-tecnico/download-ata-parecer-tecnico/?ata=${ata_uuid}`, { + .get(`api/consolidados-dre/download-ata-parecer-tecnico/?ata=${ata_uuid}`, { responseType: 'blob', timeout: 30000, headers: { diff --git a/src/services/dres/RelatorioConsolidado.service.js b/src/services/dres/RelatorioConsolidado.service.js index a1f9ca817..e17b3cd2b 100644 --- a/src/services/dres/RelatorioConsolidado.service.js +++ b/src/services/dres/RelatorioConsolidado.service.js @@ -29,7 +29,7 @@ export const postPublicarConsolidadoDre = async (payload) => { export const getDownloadRelatorio = async (relatorio_uuid, versao) => { return api - .get(`/api/consolidados-dre/${relatorio_uuid}/download/`, { + .get(`/api/consolidados-dre/${relatorio_uuid}/download-relatorio-consolidado`, { responseType: 'blob', timeout: 30000, headers: { diff --git a/src/utils/Modais.js b/src/utils/Modais.js index f65402a1b..e79f2c4eb 100644 --- a/src/utils/Modais.js +++ b/src/utils/Modais.js @@ -596,3 +596,17 @@ export const ModalConfirmarExportacao = (propriedades) => { /> ) }; + +export const ModalAtaNaoPreenchida = (propriedades) => { + return ( + + ) +}; From f65f374c81d4a44378d92ff83a1b83de11923df9 Mon Sep 17 00:00:00 2001 From: linikerj Date: Wed, 29 Jun 2022 17:25:03 -0300 Subject: [PATCH 39/98] =?UTF-8?q?feat(67146)=20Altera=20mensagem=20para=20?= =?UTF-8?q?lidar=20com=20caso=20de=20presidente=20ou=20secret=C3=A1rio=20s?= =?UTF-8?q?em=20estar=20presente.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js index 599428107..31ca8f20c 100644 --- a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js +++ b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js @@ -48,8 +48,11 @@ export const GeracaoAtaApresentacao = ( await getDadosAta() } catch (e) { - const camposInvalidos = e.response.data.campos_invalidos.join(', '); - setTextoModalAta(`

Você não pode gerar o PDF de uma ata incompleta. Para completa-la preencha os campos ${camposInvalidos}.

`) + let mensagem = '' + e.response.data.campos_invalidos.map((element) => { + mensagem += typeof(element) === 'object' ? ` ${element['msg_presente']}` : ` ${element} ,` + }) + setTextoModalAta(`

Você não pode gerar o PDF de uma ata incompleta. Para completa-la ${mensagem}

`) setShowNaoPodeGerarAta(true) } } From 000f3ae7cf6aaa1405c7ffbcf7976e891b8df635 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 30 Jun 2022 08:46:53 -0300 Subject: [PATCH 40/98] =?UTF-8?q?feat(67886):=20Altera=20estilo=20p=C3=A1g?= =?UTF-8?q?ina=20de=20Suporte=20=C3=A0s=20unidades?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Faz alterações no estilo da pagina de suporte às unidades para que o estilo fique igual ao de outras páginas que exibem textos configurados como a de geração de documentos da prestação de contas. --- .../Globais/EscolheUnidade/index.js | 2 +- .../Globais/SuporteAsUnidades/index.js | 20 ++++++++++--------- .../suporte-as-unidades.scss | 5 +++-- src/paginas/SME/SuporteAsUnidades/index.js | 6 ++---- src/paginas/dres/SuporteAsUnidades/index.js | 4 +--- 5 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/componentes/Globais/EscolheUnidade/index.js b/src/componentes/Globais/EscolheUnidade/index.js index ebc508b4e..902e06416 100644 --- a/src/componentes/Globais/EscolheUnidade/index.js +++ b/src/componentes/Globais/EscolheUnidade/index.js @@ -51,7 +51,7 @@ export const EscolheUnidade = (props) =>{ }; return( -
+
{ return(
- -
- -
+
+ +
+ +
+
) diff --git a/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss b/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss index e18ca97d3..271165f71 100644 --- a/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss +++ b/src/componentes/Globais/SuporteAsUnidades/suporte-as-unidades.scss @@ -1,4 +1,5 @@ .container-texto-explicativo { - margin-top: 5px; - padding: 0px; + background-color: #D3F1F3; + padding-top: 16px; + padding-bottom: 14px; } diff --git a/src/paginas/SME/SuporteAsUnidades/index.js b/src/paginas/SME/SuporteAsUnidades/index.js index f4b5d21c5..7e62188ae 100644 --- a/src/paginas/SME/SuporteAsUnidades/index.js +++ b/src/paginas/SME/SuporteAsUnidades/index.js @@ -5,10 +5,8 @@ import {SuporteAsUnidades} from "../../../componentes/Globais/SuporteAsUnidades" export const SuporteAsUnidadesSme = () =>{ return ( -

Suporte às unidades da SME

-
- -
+

Suporte às unidades

+
) }; diff --git a/src/paginas/dres/SuporteAsUnidades/index.js b/src/paginas/dres/SuporteAsUnidades/index.js index 91c9998c9..9115d86b7 100644 --- a/src/paginas/dres/SuporteAsUnidades/index.js +++ b/src/paginas/dres/SuporteAsUnidades/index.js @@ -7,9 +7,7 @@ export const SuporteAsUnidadesDre = () =>{ return (

Suporte às unidades da DRE

-
- -
+
) }; \ No newline at end of file From 4606b2cfefcbf8a5ae12ca3523635b364fd5b627 Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 30 Jun 2022 09:21:33 -0300 Subject: [PATCH 41/98] =?UTF-8?q?feat(67146)=20Altera=20mensagem=20para=20?= =?UTF-8?q?incluir=20campos=20inv=C3=A1lidos=20e=20membros=20n=C3=A3o=20pr?= =?UTF-8?q?esentes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js index 31ca8f20c..d4253a844 100644 --- a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js +++ b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js @@ -49,10 +49,12 @@ export const GeracaoAtaApresentacao = ( } catch (e) { let mensagem = '' - e.response.data.campos_invalidos.map((element) => { - mensagem += typeof(element) === 'object' ? ` ${element['msg_presente']}` : ` ${element} ,` + let camposInvalidos = e.response.data.campos_invalidos + console.log(camposInvalidos.length) + camposInvalidos.map((element) => { + mensagem += typeof(element) === 'object' ? ` ${element['msg_presente']}` : ` ${element}, ` }) - setTextoModalAta(`

Você não pode gerar o PDF de uma ata incompleta. Para completa-la ${mensagem}

`) + setTextoModalAta(`

Você não pode gerar o PDF de uma ata incompleta. Para completa-la ${camposInvalidos[0]['msg_presente'] ? mensagem : `preencha os campo(s) ${mensagem}`}.

`.replace(/,(?=[^,]*$)/, '')) // Regex remove espaço em branco e virgula no final. ⮕ (/,(?=[^,]*$)/,) '' setShowNaoPodeGerarAta(true) } } From f48cc9fb93e7afb3303ebdafbdec4aa8b5641c13 Mon Sep 17 00:00:00 2001 From: linikerj Date: Thu, 30 Jun 2022 11:07:09 -0300 Subject: [PATCH 42/98] feat(66366) Inclui mensagem de modal personalizada. --- .../GeracaoAtaRetificadora/BoxAtaRetificadora/index.js | 8 ++++++-- .../escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js b/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js index 094740b5e..a5b75ff86 100644 --- a/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js +++ b/src/componentes/escolas/GeracaoAtaRetificadora/BoxAtaRetificadora/index.js @@ -45,8 +45,12 @@ export const BoxAtaRetificadora = ({ getDadosAta() } catch (e) { - const camposInvalidos = e.response.data.campos_invalidos.join(', '); - setTextoModalAta(`

Você não pode gerar o PDF de uma ata incompleta. Para completa-la preencha os campos ${camposInvalidos}.

`) + let mensagem = '' + let camposInvalidos = e.response.data.campos_invalidos + camposInvalidos.map((element) => { + mensagem += typeof(element) === 'object' ? ` ${element['msg_presente']}` : ` ${element}, ` + }) + setTextoModalAta(`

Você não pode gerar o PDF de uma ata incompleta. Para completa-la ${camposInvalidos[0]['msg_presente'] ? mensagem : `preencha os campo(s) ${mensagem}`}.

`.replace(/,(?=[^,]*$)/, '')) // Regex remove espaço em branco e virgula no final. ⮕ (/,(?=[^,]*$)/,) '' setShowNaoPodeGerarAta(true) } } diff --git a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js index d4253a844..97d65d588 100644 --- a/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js +++ b/src/componentes/escolas/GeracaoDaAta/GeracaoAtaApresentacao/index.js @@ -50,7 +50,6 @@ export const GeracaoAtaApresentacao = ( catch (e) { let mensagem = '' let camposInvalidos = e.response.data.campos_invalidos - console.log(camposInvalidos.length) camposInvalidos.map((element) => { mensagem += typeof(element) === 'object' ? ` ${element['msg_presente']}` : ` ${element}, ` }) From 9e4df4b1dbdf725fc4532074f502ff4fa5d7eaca Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 30 Jun 2022 13:38:14 -0300 Subject: [PATCH 43/98] feat(67886): Altera escolha de unidades para suporte MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Faz alterações na página de escolha de unidades para suporte para exibir mensagem e imagem quando a lista estiver vazia. --- .../Globais/EscolheUnidade/index.js | 40 ++++++++++++++----- .../Globais/SuporteAsUnidades/index.js | 2 +- 2 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/componentes/Globais/EscolheUnidade/index.js b/src/componentes/Globais/EscolheUnidade/index.js index 902e06416..d32f4b409 100644 --- a/src/componentes/Globais/EscolheUnidade/index.js +++ b/src/componentes/Globais/EscolheUnidade/index.js @@ -3,24 +3,39 @@ import {getUnidades} from "../../../services/dres/Unidades.service" import {ListaDeUnidades} from "./ListaDeUnidades"; import Loading from "../../../utils/Loading"; import {FiltroDeUnidades} from "./FiltroDeUnidades"; +import Img404 from "../../../assets/img/img-404.svg"; +import {MsgImgCentralizada} from "../Mensagens/MsgImgCentralizada"; export const EscolheUnidade = (props) =>{ - const {dre_uuid} = props + const {dre_uuid, visao} = props const initialStateFiltros = { nome_ou_codigo: "", }; + const mensagemListaVaziaSemFiltroAplicado = 'Use parte do nome ou código EOL para localizar a unidade para qual você deseja viabilizar o acesso de suporte.' + const mensagemListaVaziaComFiltroAplicadoDRE = 'Não foi encontrada nenhuma unidade que corresponda ao filtro aplicado. Certifique-se que a unidade procurada é uma unidade subordinada à sua DRE.' + const mensagemListaVaziaComFiltroAplicadoSME = 'Não foi encontrada nenhuma unidade que corresponda ao filtro aplicado.' const [loading, setLoading] = useState(false); const [listaUnidades, setListaUnidades] = useState([]); const [stateFiltros, setStateFiltros] = useState(initialStateFiltros); + const [mensagemListaVazia, setMensagemListaVazia] = useState(mensagemListaVaziaSemFiltroAplicado) useEffect(()=>{ carregaListaUnidades(); }, [stateFiltros]); + useEffect( () => { + if (stateFiltros.nome_ou_codigo === "") { + setMensagemListaVazia(mensagemListaVaziaSemFiltroAplicado); + } else { + if (visao === 'DRE') setMensagemListaVazia(mensagemListaVaziaComFiltroAplicadoDRE); + if (visao === 'SME') setMensagemListaVazia(mensagemListaVaziaComFiltroAplicadoSME); + } + }, [stateFiltros]); + const carregaListaUnidades = async ()=>{ if (stateFiltros.nome_ou_codigo !== "") { setLoading(true) @@ -59,15 +74,22 @@ export const EscolheUnidade = (props) =>{ filtroInicial={initialStateFiltros} /> - {loading ? ( - } + + {!loading && listaUnidades && listaUnidades.length > 0 && + + } + + {!loading && (!listaUnidades || listaUnidades.length === 0) && + - ) : listaUnidades && listaUnidades.length > 0 ? () : }
diff --git a/src/componentes/Globais/SuporteAsUnidades/index.js b/src/componentes/Globais/SuporteAsUnidades/index.js index 3a9025343..bd2ca1add 100644 --- a/src/componentes/Globais/SuporteAsUnidades/index.js +++ b/src/componentes/Globais/SuporteAsUnidades/index.js @@ -56,7 +56,7 @@ export const SuporteAsUnidades = (props) =>{
- +
Date: Mon, 4 Jul 2022 08:25:59 -0300 Subject: [PATCH 44/98] docs(68830): Release Notes 1.33.0 - Release 5 (Parcial) --- README.md | 14 +++++++++++++- package.json | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f7ac4ffb2..32e6f6ffd 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,22 @@ Front da aplicação _SIG.Escola_ da Secretaria de Educação da cidade de São License: MIT -Versão: 1.32.0 +Versão: 1.33.0 ## Release Notes +### 1.33.0 - 04/07/2022 - Entregas da Release 5 - (Parcial até a Sprint 44) +* UE > Na emissão da ata, agora a aplicação informa quais campos estão incompletos. +* DRE > Melhorias no demonstrativo da execução físico-financeira +* DRE > Mudanças no layout da lauda +* DRE > Nova funcionalidade de Acesso de Suporte para DREs e SME +* DRE > Novo fluxo de aprovação de valores reprogramados iniciais (Parcial) +* DRE > Novo processo de geração de relatórios consolidados (Parcial) +* SME > Nova central de extração de dados +* SME > Extração de dados de créditos +* ADM > Registro de movimentações nos arquivos de análise de PCs para fins de auditoria +* 🐞 Correção de bugs + ### 1.32.0 - 01/06/2022 - Entregas da Release 4c - Sprint 42 * DRE > Exibição do período e remoção do histórico de devoluções em análise de PC * DRE > Remoção do bloco "Cobrança da PC" e revisão do bloco "Comentários" em análise de PC diff --git a/package.json b/package.json index bfc7052f9..dc5067efc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ptrf", - "version": "1.32.1", + "version": "1.33.0", "private": true, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.27", From 06abd5754bf39b8df4ae03d64d2bdc9240e6c707 Mon Sep 17 00:00:00 2001 From: luke Date: Mon, 4 Jul 2022 15:27:16 -0300 Subject: [PATCH 45/98] =?UTF-8?q?feat(64958):=20Gera=C3=A7=C3=A3o=20de=20l?= =?UTF-8?q?audas=20no=20momento=20da=20publica=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agora é possivel realizar download das laudas na tela de relatorio consolidado --- .../dres/RelatorioConsolidado/Lauda.js | 141 ++++++++++-------- .../dres/RelatorioConsolidado/index.js | 16 +- src/services/dres/Laudas.service.js | 32 ++++ src/utils/ValidacoesAdicionaisFormularios.js | 16 ++ 4 files changed, 133 insertions(+), 72 deletions(-) create mode 100644 src/services/dres/Laudas.service.js diff --git a/src/componentes/dres/RelatorioConsolidado/Lauda.js b/src/componentes/dres/RelatorioConsolidado/Lauda.js index ee78fef5d..726f0cb66 100644 --- a/src/componentes/dres/RelatorioConsolidado/Lauda.js +++ b/src/componentes/dres/RelatorioConsolidado/Lauda.js @@ -1,83 +1,100 @@ -import React, {memo} from "react"; +import React, {memo, useCallback, useState, useEffect} from "react"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faDownload} from "@fortawesome/free-solid-svg-icons"; -import {exibeDateTimePT_BR_Ata} from "../../../utils/ValidacoesAdicionaisFormularios"; -import {postGerarLauda} from "../../../services/dres/RelatorioConsolidado.service"; +import { + getDocumentosConsolidadoDre, +} from "../../../services/dres/RelatorioConsolidado.service"; -const Lauda = ({dre_uuid, periodoEscolhido, disablebtnGerarLauda, lauda={}}) => { +import { getDownloadLauda } from "../../../services/dres/Laudas.service"; +import { formataNomeDRE } from "../../../utils/ValidacoesAdicionaisFormularios"; +import moment from "moment"; - const mensagem = (lauda) => { - if(!lauda || lauda.uuid === undefined){ - return "Documento pendente de geração"; +const Lauda = ({consolidadoDre}) => { + const [laudas, setLaudas] = useState([]); + + const retornaLauda = useCallback(async () => { + if (consolidadoDre && consolidadoDre.uuid) { + try { + let documentos = await getDocumentosConsolidadoDre(consolidadoDre.uuid) + setLaudas(documentos.laudas_do_consolidado_dre); + } catch (e) { + console.log("Erro ao buscar Laudas ", e) + } + } else { + setLaudas(false) } - else if(lauda.uuid && lauda.alterado_em){ - return "Último preenchimento em " + exibeDateTimePT_BR_Ata(lauda.alterado_em); + }, [consolidadoDre]) + + useEffect(() => { + retornaLauda() + }, [retornaLauda]) + + const retornaClasseMensagem = (texto) => { + let classeMensagem = "documento-gerado"; + if (texto === 'NAO_GERADOS') { + classeMensagem = "documento-pendente" } - else if(lauda.uuid && lauda.alterado_em === null){ - return "Lauda não preenchida"; + if (texto === 'EM_PROCESSAMENTO') { + classeMensagem = "documento-processando" } + return classeMensagem } - const classeMensagem = (lauda) => { - if(!lauda || lauda.uuid === undefined || lauda.alterado_em === null){ - return "documento-pendente" + const downloadLauda = async (lauda) =>{ + let nome_dre = ""; + let tipo_conta = ""; + + if(consolidadoDre && consolidadoDre.dre && consolidadoDre.dre.nome){ + nome_dre = formataNomeDRE(consolidadoDre.dre.nome).toLowerCase(); } - else if(lauda.uuid && lauda.alterado_em){ - return "documento-gerado" + + if(lauda && lauda.tipo_conta && lauda.tipo_conta.nome){ + tipo_conta = lauda.tipo_conta.nome.toLowerCase(); } - } - const gerarLauda = async () => { - alert("Método ainda não implementado!!") - return - const payload = { - dre_uuid: dre_uuid, - periodo_uuid: periodoEscolhido, - }; + let filename = `Lauda_${nome_dre}_${tipo_conta}.docx.txt`; + + await getDownloadLauda(lauda.uuid, filename); + }; - try{ - await postGerarLauda(payload); - console.log('Solicitação de lauda enviada com sucesso.'); - }catch(e){ - console.log('Erro ao gerar lauda ', e.response.data); + const mensagem = (lauda) => { + if(lauda){ + if(lauda.alterado_em){ + let data = moment(lauda.alterado_em).format("DD/MM/YYYY HH:mm"); + return `Documentos finais gerados dia ${data}` + } + } + else{ + return "Documentos pendentes de geração"; } } - return( -
-
-
-
-

Lauda

-

- {mensagem(lauda)} - {lauda && lauda.uuid && - - - } -

- -
-
-
- - +
+ {laudas && laudas.length > 0 && + <> + {laudas.map((lauda) => +
+
+
+

Lauda - {lauda.tipo_conta && lauda.tipo_conta.nome ? "Conta " + lauda.tipo_conta.nome : ""}

-
-
+

+ {mensagem(lauda)} + +

+
+
+
+ )} + + }
) diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index 09522db19..11a6606a8 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -40,10 +40,6 @@ const RelatorioConsolidado = () => { const [ataParecerTecnico, setAtaParecerTecnico] = useState(false); const [showAtaNaoPreenchida, setShowAtaNaoPreenchida] = useState(false); - - // Lauda - const [disablebtnGerarLauda, setDisablebtnGerarLauda] = useState(true); - const [trilhaStatus, setTrilhaStatus] = useState(false); const [loading, setLoading] = useState(false); @@ -277,12 +273,12 @@ const RelatorioConsolidado = () => { - - + + {consolidadoDre && consolidadoDre.uuid && + + } } diff --git a/src/services/dres/Laudas.service.js b/src/services/dres/Laudas.service.js new file mode 100644 index 000000000..8db219e4b --- /dev/null +++ b/src/services/dres/Laudas.service.js @@ -0,0 +1,32 @@ +import api from '../api' +import { TOKEN_ALIAS } from '../auth.service.js'; + +const authHeader = { + headers: { + 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, + 'Content-Type': 'application/json' + } +} + + +export const getDownloadLauda = async (lauda_uuid, filename) => { + return api + .get(`api/consolidados-dre/download-lauda/?lauda=${lauda_uuid}`, { + responseType: 'blob', + timeout: 30000, + headers: { + 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, + 'Content-Type': 'application/json', + } + }) + .then((response) => { + const url = window.URL.createObjectURL(new Blob([response.data])); + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', filename); + document.body.appendChild(link); + link.click(); + }).catch(error => { + return error.response; + }); +} \ No newline at end of file diff --git a/src/utils/ValidacoesAdicionaisFormularios.js b/src/utils/ValidacoesAdicionaisFormularios.js index 52911f913..fbddd75cd 100644 --- a/src/utils/ValidacoesAdicionaisFormularios.js +++ b/src/utils/ValidacoesAdicionaisFormularios.js @@ -865,3 +865,19 @@ export const apenasNumero = (valor) => { } return false; } + +export const formataNomeDRE = (nome_dre) => { + if(nome_dre !== ""){ + nome_dre = nome_dre.toUpperCase(); + + if(nome_dre.indexOf("DIRETORIA REGIONAL DE EDUCACAO") !== -1){ + nome_dre = nome_dre.replace("DIRETORIA REGIONAL DE EDUCACAO", ""); + nome_dre = nome_dre.trim(); + + return nome_dre; + } + } + + + return nome_dre; +} From 78522b0b36d7e239c166edf4fbf7baf13d631a49 Mon Sep 17 00:00:00 2001 From: luke Date: Tue, 5 Jul 2022 11:18:56 -0300 Subject: [PATCH 46/98] feat(64958)-parte-2: resolve dependencia useeffect MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve dependencia da função carregarata no useeffect --- .../dres/RelatorioConsolidado/index.js | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index 11a6606a8..fb8f30ad1 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -22,6 +22,9 @@ import DemonstrativoDaExecucaoFisicoFinanceira from "./DemonstrativoDaExecucaoFi import {AtaParecerTecnico} from "./AtaParecerTecnico"; import Lauda from "./Lauda"; import { ModalAtaNaoPreenchida } from "../../../utils/Modais"; +import { + getDocumentosConsolidadoDre, +} from "../../../services/dres/RelatorioConsolidado.service"; const RelatorioConsolidado = () => { @@ -114,6 +117,17 @@ const RelatorioConsolidado = () => { retornaStatusConsolidadoDre() }, [retornaStatusConsolidadoDre]) + const buscaTrilhaStatus = useCallback(async () => { + if (dre_uuid && periodoEscolhido) { + let trilha_status = await getTrilhaStatus(dre_uuid, periodoEscolhido) + setTrilhaStatus(trilha_status) + } + }, [dre_uuid, periodoEscolhido]) + + useEffect(() => { + buscaTrilhaStatus() + }, [buscaTrilhaStatus]) + useEffect(() => { if (statusProcessamentoConsolidadoDre && statusProcessamentoConsolidadoDre === "EM_PROCESSAMENTO") { setLoading(true) @@ -124,10 +138,9 @@ const RelatorioConsolidado = () => { return () => clearInterval(timer); } else { buscaTrilhaStatus(); - carregaAtaParecerTecnico(); setLoading(false); } - }, [statusProcessamentoConsolidadoDre, retornaStatusConsolidadoDre]); + }, [statusProcessamentoConsolidadoDre, retornaStatusConsolidadoDre, buscaTrilhaStatus]); const buscaFiqueDeOlho = useCallback(async () => { try { @@ -142,16 +155,26 @@ const RelatorioConsolidado = () => { buscaFiqueDeOlho() }, [buscaFiqueDeOlho]) - const buscaTrilhaStatus = useCallback(async () => { - if (dre_uuid && periodoEscolhido) { - let trilha_status = await getTrilhaStatus(dre_uuid, periodoEscolhido) - setTrilhaStatus(trilha_status) + const retornaDocumentosAta = useCallback(async () => { + if (consolidadoDre && consolidadoDre.uuid) { + try { + let documentos = await getDocumentosConsolidadoDre(consolidadoDre.uuid) + if(documentos.atas_de_parecer_tecnico_do_consolidado_dre.length > 0){ + setAtaParecerTecnico(documentos.atas_de_parecer_tecnico_do_consolidado_dre[0]) + } + } catch (e) { + console.log("Erro ao buscar documentos da ata ", e) + } + } else { + setAtaParecerTecnico(false) } - }, [dre_uuid, periodoEscolhido]) + }, [consolidadoDre]) useEffect(() => { - buscaTrilhaStatus() - }, [buscaTrilhaStatus]) + if(statusProcessamentoConsolidadoDre && statusProcessamentoConsolidadoDre !== "EM_PROCESSAMENTO" ){ + retornaDocumentosAta(); + } + }, [statusProcessamentoConsolidadoDre, retornaDocumentosAta]) const handleChangePeriodos = async (uuid_periodo) => { setPeriodoEsolhido(uuid_periodo) From 5e3130251038d6ec705f1e02c115dc976dac8596 Mon Sep 17 00:00:00 2001 From: luke Date: Tue, 5 Jul 2022 13:43:42 -0300 Subject: [PATCH 47/98] feat(64958)-parte-2: remove bloco else --- src/componentes/dres/RelatorioConsolidado/index.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index fb8f30ad1..ed5cf4028 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -165,8 +165,6 @@ const RelatorioConsolidado = () => { } catch (e) { console.log("Erro ao buscar documentos da ata ", e) } - } else { - setAtaParecerTecnico(false) } }, [consolidadoDre]) From fe0d71d7094cd63a6340fcca877aac84c729c2e3 Mon Sep 17 00:00:00 2001 From: luke Date: Wed, 6 Jul 2022 07:57:51 -0300 Subject: [PATCH 48/98] =?UTF-8?q?feat(63315):=20Gera=C3=A7=C3=A3o=20de=20p?= =?UTF-8?q?r=C3=A9vias=20dos=20demonstrativos=20e=20ata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agora é possivel gerar prévia dos demonstrativos e visualizar a prévia da ata em tela --- .../TextoDinamicoSuperior/index.js | 10 +++- .../TopoComBotoes/index.js | 11 +++- .../VisualizacaoAtaParecerTecnico/index.js | 58 ++++++++++++++++++- .../ata-parecer-tecnico.scss | 6 ++ .../RelatorioConsolidado/PreviaDocumento.js | 10 ++++ .../PublicarDocumentos.js | 10 +++- .../dres/RelatorioConsolidado/index.js | 38 +++++++++++- .../dres/RelatorioConsolidado.service.js | 4 ++ 8 files changed, 138 insertions(+), 9 deletions(-) create mode 100644 src/componentes/dres/RelatorioConsolidado/PreviaDocumento.js diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TextoDinamicoSuperior/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TextoDinamicoSuperior/index.js index 93db52de9..181963747 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TextoDinamicoSuperior/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TextoDinamicoSuperior/index.js @@ -1,10 +1,16 @@ import React from "react"; -export const TextoDinamicoSuperior = ({retornaDadosAtaFormatado}) => { +export const TextoDinamicoSuperior = ({retornaDadosAtaFormatado, retornaTituloCorpoAta, ehPrevia}) => { return( <> -

ATA DE PARECER TÉCNICO CONCLUSIVO {retornaDadosAtaFormatado("numero_ata")}

+

{retornaTituloCorpoAta()} {retornaDadosAtaFormatado("numero_ata")}

+ {ehPrevia() && +

+ Atenção! Essa é apenas uma prévia da ata. As informações aqui exibidas podem mudar até a publicação do relatório consolidado. A ata final só poderá ser criada após a publicação. +

+ } +

{retornaDadosAtaFormatado("data_reuniao")}, às {retornaDadosAtaFormatado("hora_reuniao")}, reuniu-se a Comissão de Prestação de Contas do PTRF da Diretoria Regional de Educação {retornaDadosAtaFormatado("nome_dre")}, instituída pela Portaria DRE-{retornaDadosAtaFormatado("nome_dre")} nº {retornaDadosAtaFormatado("numero_portaria")} de {retornaDadosAtaFormatado("data_portaria")}, para análise das prestações de contas dos recursos transferidos pelo diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js index 0e52689c4..82c64d846 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js @@ -1,14 +1,21 @@ import React from "react"; import { visoesService } from "../../../../../../services/visoes.service"; -export const TopoComBotoes = ({dadosAta, retornaDadosAtaFormatado, handleClickFecharAtaParecerTecnico, handleClickEditarAta, downloadAtaParecerTecnico}) =>{ +export const TopoComBotoes = ({ + dadosAta, + retornaDadosAtaFormatado, + handleClickFecharAtaParecerTecnico, + handleClickEditarAta, + downloadAtaParecerTecnico, + retornaTituloCabecalhoAta +}) =>{ const podeEditarAta = [['change_ata_parecer_tecnico']].some(visoesService.getPermissoes) return( <>

-

Visualização da ata

+

{retornaTituloCabecalhoAta()}

Período {dadosAta.periodo.referencia} - {retornaDadosAtaFormatado('periodo.data_inicio_realizacao_despesas')} até {retornaDadosAtaFormatado('periodo.data_fim_realizacao_despesas')} diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js index e3355eeed..b31c240c7 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js @@ -1,4 +1,4 @@ -import React, {useState, useEffect} from "react"; +import React, {useState, useEffect, useCallback} from "react"; import {useParams} from "react-router-dom"; import { TopoComBotoes } from "./TopoComBotoes"; import { TextoDinamicoSuperior } from "./TextoDinamicoSuperior"; @@ -7,6 +7,7 @@ import { Assinaturas } from "./Assinaturas"; import {getAtaParecerTecnico, getInfoContas, getDownloadAtaParecerTecnico} from "../../../../../services/dres/AtasParecerTecnico.service"; import moment from "moment"; import Loading from "../../../../../utils/Loading" +import {getConsolidadoDre} from "../../../../../services/dres/RelatorioConsolidado.service" moment.updateLocale('pt', { months: [ @@ -24,6 +25,9 @@ export const VisualizacaoDaAtaParecerTecnico = () => { const [infoContas, setInfoContas] = useState([]) const [loading, setLoading] = useState(true); + // Consolidado DRE + const [consolidadoDre, setConsolidadoDre] = useState(false); + useEffect(() => { getDadosAta(); }, []); @@ -46,6 +50,28 @@ export const VisualizacaoDaAtaParecerTecnico = () => { } + const carregaConsolidadoDre = useCallback(async () => { + if (dadosAta && dadosAta.dre && dadosAta.periodo){ + if(dadosAta.dre.uuid && dadosAta.periodo.uuid){ + try { + let consolidado_dre = await getConsolidadoDre(dadosAta.dre.uuid, dadosAta.periodo.uuid) + if (consolidado_dre && consolidado_dre.length > 0){ + console.log("conssolidado", consolidado_dre) + setConsolidadoDre(consolidado_dre[0]) + }else { + setConsolidadoDre(false) + } + }catch (e) { + console.log("Erro ao buscar Consolidado Dre ", e) + } + } + } + }, [dadosAta]) + + useEffect(() => { + carregaConsolidadoDre() + }, [carregaConsolidadoDre]) + const dataPorExtenso = (data) => { if (!data) { return "___ dias do mês de ___ de ___" @@ -150,6 +176,33 @@ export const VisualizacaoDaAtaParecerTecnico = () => { } }; + const retornaTituloCabecalhoAta = () => { + if(ehPrevia()){ + return "Visualização da prévia da ata" + } + + return "Visualização da ata" + } + + const retornaTituloCorpoAta = () => { + if(ehPrevia()){ + return "PRÉVIA DA ATA DE PARECER TÉCNICO CONCLUSIVO" + } + + return "ATA DE PARECER TÉCNICO CONCLUSIVO" + } + + const ehPrevia = () => { + if(!consolidadoDre){ + return true; + } + else if(consolidadoDre && consolidadoDre.versao === "PREVIA"){ + return true; + } + + return false; + } + const handleClickFecharAtaParecerTecnico = () => { window.location.assign("/dre-relatorio-consolidado") }; @@ -185,6 +238,7 @@ export const VisualizacaoDaAtaParecerTecnico = () => { handleClickFecharAtaParecerTecnico={handleClickFecharAtaParecerTecnico} handleClickEditarAta={handleClickEditarAta} downloadAtaParecerTecnico={downloadAtaParecerTecnico} + retornaTituloCabecalhoAta={retornaTituloCabecalhoAta} /> }
@@ -193,6 +247,8 @@ export const VisualizacaoDaAtaParecerTecnico = () => { {dadosAta && Object.entries(dadosAta).length > 0 && } diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/ata-parecer-tecnico.scss b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/ata-parecer-tecnico.scss index a14ac2a45..d09375a01 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/ata-parecer-tecnico.scss +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/ata-parecer-tecnico.scss @@ -53,6 +53,12 @@ font-size: 16px; } +.texto-atencao { + color: #42474A; + font-size: 16px; + font-weight: bold; +} + .tabela-status-pc tbody:nth-child(odd) { background-color: #F3F3F3; } diff --git a/src/componentes/dres/RelatorioConsolidado/PreviaDocumento.js b/src/componentes/dres/RelatorioConsolidado/PreviaDocumento.js new file mode 100644 index 000000000..e1d597f4e --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/PreviaDocumento.js @@ -0,0 +1,10 @@ +import React from "react"; + +const PreviaDocumentos = ({gerarPreviaConsolidadoDre}) => { + return( + + ) +} +export default PreviaDocumentos \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js b/src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js index b38baf5f3..d38170d7d 100644 --- a/src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js +++ b/src/componentes/dres/RelatorioConsolidado/PublicarDocumentos.js @@ -1,10 +1,16 @@ import React, {memo} from "react"; -const PublicarDocumentos = ({publicarConsolidadoDre}) => { - +const PublicarDocumentos = ({publicarConsolidadoDre, podeGerarPrevia, children}) => { return(
Relatórios
+ + {podeGerarPrevia() && +
+ {children} +
+ } +
diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index ed5cf4028..5ecbdae00 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -6,7 +6,8 @@ import { postPublicarConsolidadoDre, getConsolidadoDre, getTrilhaStatus, - getStatusAta + getStatusAta, + postGerarPreviaConsolidadoDre } from "../../../services/dres/RelatorioConsolidado.service"; import {getPeriodos} from "../../../services/dres/Dashboard.service"; import {SelectPeriodo} from "./SelectPeriodo"; @@ -25,6 +26,7 @@ import { ModalAtaNaoPreenchida } from "../../../utils/Modais"; import { getDocumentosConsolidadoDre, } from "../../../services/dres/RelatorioConsolidado.service"; +import PreviaDocumentos from "./PreviaDocumento"; const RelatorioConsolidado = () => { @@ -221,6 +223,17 @@ const RelatorioConsolidado = () => { return trilhaStatus.cards.filter((item) => item.status !== "APROVADA" && item.status !== "REPROVADA") } + const podeGerarPrevia = () => { + if(!consolidadoDre){ + return true; + } + else if(consolidadoDre && consolidadoDre.versao !== "FINAL"){ + return true; + } + + return false; + } + const publicarConsolidadoDre = async () => { let payload = { dre_uuid: dre_uuid, @@ -240,6 +253,21 @@ const RelatorioConsolidado = () => { } } + const gerarPreviaConsolidadoDre = async () =>{ + let payload = { + dre_uuid: dre_uuid, + periodo_uuid: periodoEscolhido + } + + try { + let previa = await postGerarPreviaConsolidadoDre(payload); + setStatusProcessamentoConsolidadoDre(previa.status); + setConsolidadoDre(previa); + }catch (e) { + console.log("Erro ao publicar Prévia Consolidado Dre ", e) + } + } + return (

Relatório consolidado

@@ -284,7 +312,13 @@ const RelatorioConsolidado = () => { <> + podeGerarPrevia={podeGerarPrevia} + > + + + { return (await api.post(`/api/consolidados-dre/publicar/`, payload, authHeader)).data }; +export const postGerarPreviaConsolidadoDre = async (payload) => { + return (await api.post(`/api/consolidados-dre/gerar-previa/`, payload, authHeader)).data +}; + export const getDownloadRelatorio = async (relatorio_uuid, versao) => { return api .get(`/api/consolidados-dre/${relatorio_uuid}/download-relatorio-consolidado`, { From 65a84432b89a1842bd3790283c15d7654ec1d19d Mon Sep 17 00:00:00 2001 From: luke Date: Wed, 6 Jul 2022 15:05:57 -0300 Subject: [PATCH 49/98] =?UTF-8?q?feat(63318):=20Fechamento=20de=20altera?= =?UTF-8?q?=C3=A7=C3=B5es=20ap=C3=B3s=20publica=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agora as edições de relatórios e ata são bloqueadas após publicação --- .../Globais/ModalBootstrap/index.js | 25 ++++ .../TopoComBotoes/index.js | 11 +- .../VisualizacaoAtaParecerTecnico/index.js | 15 ++ .../AtaParecerTecnico/index.js | 13 +- ...DemonstrativoDaExecucaoFisicoFinanceira.js | 15 +- .../ModalAssociacoesEmAnalise.js | 19 --- .../ModalMsgGeracaoRelatorio.js | 14 -- .../PublicarDocumentos.js | 10 +- .../JustificativaDiferenca.js | 8 +- .../TopoComBotoes.js | 2 +- .../RelatorioConsolidadoApuracao/index.js | 140 +++++------------- .../dres/RelatorioConsolidado/index.js | 31 +++- src/utils/Modais.js | 41 ++++- 13 files changed, 185 insertions(+), 159 deletions(-) delete mode 100644 src/componentes/dres/RelatorioConsolidado/ModalAssociacoesEmAnalise.js diff --git a/src/componentes/Globais/ModalBootstrap/index.js b/src/componentes/Globais/ModalBootstrap/index.js index 76a184cfb..23776d195 100644 --- a/src/componentes/Globais/ModalBootstrap/index.js +++ b/src/componentes/Globais/ModalBootstrap/index.js @@ -368,4 +368,29 @@ export const ModalBootstrapTipoRecursoNaoAceito = (propriedades) =>{ ) +}; + +export const ModalBootstrapConfirmarPublicacao = (propriedades) =>{ + return ( + + + + {propriedades.titulo} + + + {propriedades.bodyText} + + + + {propriedades.segundoBotaoOnclick && propriedades.segundoBotaoTexto ? ( + + ):null} + + + + ) }; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js index 82c64d846..694c7e164 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js @@ -7,7 +7,8 @@ export const TopoComBotoes = ({ handleClickFecharAtaParecerTecnico, handleClickEditarAta, downloadAtaParecerTecnico, - retornaTituloCabecalhoAta + retornaTituloCabecalhoAta, + publicado }) =>{ const podeEditarAta = [['change_ata_parecer_tecnico']].some(visoesService.getPermissoes) @@ -23,8 +24,12 @@ export const TopoComBotoes = ({
- - + {!publicado() && + + } + {dadosAta && dadosAta.arquivo_pdf &&
diff --git a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js index aa6b2aca5..d34e9a2bb 100644 --- a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js +++ b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js @@ -7,7 +7,7 @@ import { import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faDownload} from "@fortawesome/free-solid-svg-icons"; -const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolidadoDre, periodoEscolhido}) => { +const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolidadoDre, periodoEscolhido, publicado}) => { const [relatoriosFisicoFinanceiros, setRelatoriosFisicoFinanceiros] = useState([]); const [contas, setContas] = useState(false); @@ -66,6 +66,15 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolid window.location.assign(`/dre-relatorio-consolidado-apuracao/${periodoEscolhido}/${contaEscolhida}/`) }; + const textoBtnRelatorio = () => { + if(publicado()){ + return "Consultar relatório"; + } + else{ + return "Preencher relatório"; + } + } + return (
{relatoriosFisicoFinanceiros && relatoriosFisicoFinanceiros.length > 0 ? ( @@ -88,7 +97,7 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolid
- +
)} @@ -105,7 +114,7 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, statusConsolid
- +
)} diff --git a/src/componentes/dres/RelatorioConsolidado/ModalAssociacoesEmAnalise.js b/src/componentes/dres/RelatorioConsolidado/ModalAssociacoesEmAnalise.js deleted file mode 100644 index 87f299d11..000000000 --- a/src/componentes/dres/RelatorioConsolidado/ModalAssociacoesEmAnalise.js +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; -import {ModalBootstrap} from "../../Globais/ModalBootstrap"; - -export const ModalAssociacoesEmAnalise = (props) =>{ - return ( - - ) -}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/ModalMsgGeracaoRelatorio.js b/src/componentes/dres/RelatorioConsolidado/ModalMsgGeracaoRelatorio.js index 8f9a4bb82..f99c24e9f 100644 --- a/src/componentes/dres/RelatorioConsolidado/ModalMsgGeracaoRelatorio.js +++ b/src/componentes/dres/RelatorioConsolidado/ModalMsgGeracaoRelatorio.js @@ -1,20 +1,6 @@ import React from "react"; import {ModalBootstrap} from "../../Globais/ModalBootstrap"; -export const ModalMsgGeracaoRelatorio = (props) =>{ - return ( - - ) -}; - export const ModalMsgGeracaoLauda = (props) =>{ return ( { +const PublicarDocumentos = ({podeGerarPrevia, publicado, setShowPublicarRelatorioConsolidado, children}) => { return(
Relatórios
@@ -11,9 +11,11 @@ const PublicarDocumentos = ({publicarConsolidadoDre, podeGerarPrevia, children})
} -
- -
+ {!publicado() && +
+ +
+ }
) } diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js index ee1f54cda..35d8493d0 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js @@ -2,7 +2,7 @@ import React from "react"; import {visoesService} from "../../../../services/visoes.service"; -export const JustificativaDiferenca = ({comparaValores, justificativaDiferenca, setJustificativaDiferenca, onChangeJustificativaDiferenca, onSubmitJustificativaDiferenca, btnSalvarJustificativaDisable, setBtnSalvarJustificativaDisable}) => { +export const JustificativaDiferenca = ({comparaValores, justificativaDiferenca, setJustificativaDiferenca, onChangeJustificativaDiferenca, onSubmitJustificativaDiferenca, btnSalvarJustificativaDisable, setBtnSalvarJustificativaDisable, publicado}) => { const onClickBtnLimpar = () => { setJustificativaDiferenca({ @@ -18,12 +18,12 @@ export const JustificativaDiferenca = ({comparaValores, justificativaDiferenca, <>

Justificativa da diferença entre o valor previsto pela SME e o transferido pela DRE no período

-
- - + +
} diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js index bf0e31817..9f25ca68b 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js @@ -1,6 +1,6 @@ import React from "react"; -export const TopoComBotoes = ({periodoNome, contaNome, onClickGerarRelatorio, textoBtnRelatorio}) =>{ +export const TopoComBotoes = ({periodoNome, contaNome}) =>{ return( <>
diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js index 3d82b233e..05f570568 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js @@ -1,4 +1,4 @@ -import React, {useEffect, useState} from "react"; +import React, {useEffect, useState, useCallback} from "react"; import {useParams} from "react-router-dom"; import {InfoAssociacoesEmAnalise} from "./InfoAssociacoesEmAnalise"; import { @@ -11,7 +11,7 @@ import { getDevolucoesAoTesouro, putCriarEditarDeletarObservacaoDevolucaoContaPtrf, putCriarEditarDeletarObservacaoDevolucaoTesouro, - postGerarRelatorio, getConsultarStatus, + getConsolidadoDre } from "../../../../services/dres/RelatorioConsolidado.service"; import {TopoComBotoes} from "./TopoComBotoes"; import {BoxConsultarDados} from "./BoxConsultarDados"; @@ -23,8 +23,6 @@ import {TabelaDevolucoesAoTesouro} from "./TabelaDevolucoesAoTesouro"; import {TabelaExecucaoFisica} from "./TabelaExecucaoFisica"; import {auxGetNomes} from "../auxGetNomes"; import {ModalObservacoesRelatorioConsolidadoApuracao} from "../ModalObservacoesRelatorioConsolidadoApuracao"; -import {ModalAssociacoesEmAnalise} from "../ModalAssociacoesEmAnalise"; -import {ModalMsgGeracaoRelatorio} from "../ModalMsgGeracaoRelatorio"; import {ModalSalvarJustificativa} from "../ModalSalvarJustificativa"; import Loading from "../../../../utils/Loading"; @@ -55,26 +53,10 @@ export const RelatorioConsolidadoApuracao = () => { const [observacao, setObservacao] = useState(false); const [showModalObservacao, setShowModalObservacao] = useState(false); - const [showModalAssociacoesEmAnalise, setShowModalAssociacoesEmAnalise] = useState(false); const [loading, setLoading] = useState(false); - const [showModalMsgGeracaoRelatorio, setShowModalMsgGeracaoRelatorio] = useState(false); - const [msgGeracaoRelatorio, setMsgGeracaoRelatorio] = useState(''); - - const [statusRelatorio, setStatusRelatorio] = useState(false); - - useEffect(() => { - if (statusRelatorio && statusRelatorio.status_geracao && statusRelatorio.status_geracao === "EM_PROCESSAMENTO") { - const timer = setInterval(() => { - consultarStatus(); - }, 5000); - // clearing interval - return () => clearInterval(timer); - } - }); - - useEffect(() => { - consultarStatus(); - }, [periodo_uuid, conta_uuid]); + + // Consolidado DRE + const [consolidadoDre, setConsolidadoDre] = useState(false); useEffect(() => { carregaItensDashboard(); @@ -90,32 +72,25 @@ export const RelatorioConsolidadoApuracao = () => { carregaDevolucoesAoTesouro(); }, [itensDashboard]); - const consultarStatus = async () => { - console.log("Consultar status...") - if (dre_uuid && periodo_uuid && conta_uuid) { - let status = await getConsultarStatus(dre_uuid, periodo_uuid, conta_uuid); - setStatusRelatorio(status); - } - }; - - const setaStatusComoProcessando = () => { - const statusProcessando = { - pcs_em_analise: false, - status_geracao: "EM_PROCESSAMENTO", - status_txt: "Análise de prestações de contas das associações completa. Relatório em processamento.", - cor_idx: 3, - status_arquivo: "Relatório sendo gerado. Aguarde." + // Consolidado DRE + const carregaConsolidadoDre = useCallback(async () => { + if (dre_uuid && periodo_uuid){ + try { + let consolidado_dre = await getConsolidadoDre(dre_uuid, periodo_uuid) + if (consolidado_dre && consolidado_dre.length > 0){ + setConsolidadoDre(consolidado_dre[0]) + }else { + setConsolidadoDre(false) + } + }catch (e) { + console.log("Erro ao buscar Consolidado Dre ", e) + } } - setStatusRelatorio(statusProcessando); - }; + }, [dre_uuid, periodo_uuid]) - const textoBtnRelatorio = () =>{ - if (statusRelatorio.status_geracao === 'EM_PROCESSAMENTO'){ - return 'Relatório sendo gerado...' - } else{ - return 'Gerar relatório' - } - }; + useEffect(() => { + carregaConsolidadoDre() + }, [carregaConsolidadoDre]) const carregaItensDashboard = async () => { if (periodo_uuid) { @@ -235,8 +210,6 @@ export const RelatorioConsolidadoApuracao = () => { const onHandleClose = () => { setShowModalObservacao(false); - setShowModalAssociacoesEmAnalise(false); - setShowModalMsgGeracaoRelatorio(false); }; const onHandleCloseSalvarJustificativa = () => { @@ -295,41 +268,19 @@ export const RelatorioConsolidadoApuracao = () => { setLoading(false); }; - const onClickGerarRelatorio = async () => { - if (totalEmAnalise > 0) { - setShowModalAssociacoesEmAnalise(true) - } else { - await onGerarRelatorio(); + const publicado = () => { + if(!consolidadoDre){ + return false; } - }; - - const onGerarRelatorio = async () => { - - let parcial = totalEmAnalise > 0; - - const payload = { - dre_uuid: dre_uuid, - periodo_uuid: periodo_uuid, - tipo_conta_uuid: conta_uuid, - parcial: parcial - }; - try { - setLoading(true); - await postGerarRelatorio(payload); - console.log('Solicitação de relatório enviada com sucesso.'); - setShowModalAssociacoesEmAnalise(false); - setLoading(false); - setMsgGeracaoRelatorio('O relatório está sendo gerado, enquanto isso você pode continuar a usar o sistema. Consulte na tela anterior o status de geração do relatório.'); - setShowModalMsgGeracaoRelatorio(true) - setaStatusComoProcessando() - } catch (e) { - setShowModalAssociacoesEmAnalise(false); - setLoading(false); - setMsgGeracaoRelatorio('Erro ao gerar relatório'); - setShowModalMsgGeracaoRelatorio(true); - console.log('Erro ao gerar relatório ', e.response.data); + else if(consolidadoDre && consolidadoDre.versao === "PREVIA"){ + return false; + } + else if(consolidadoDre && consolidadoDre.versao === "FINAL"){ + return true; } - }; + + return false; + } return ( <> @@ -350,8 +301,6 @@ export const RelatorioConsolidadoApuracao = () => { { onSubmitJustificativaDiferenca={onSubmitJustificativaDiferenca} btnSalvarJustificativaDisable={btnSalvarJustificativaDisable} setBtnSalvarJustificativaDisable={setBtnSalvarJustificativaDisable} + publicado={publicado} /> { titulo="Observação sobre devolução" /> -
- -
{ handleClose={onHandleCloseSalvarJustificativa} />
- - {msgGeracaoRelatorio && -
- -
- } - } diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index 5ecbdae00..279dbcc75 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -22,7 +22,7 @@ import PublicarDocumentos from "./PublicarDocumentos"; import DemonstrativoDaExecucaoFisicoFinanceira from "./DemonstrativoDaExecucaoFisicoFinanceira"; import {AtaParecerTecnico} from "./AtaParecerTecnico"; import Lauda from "./Lauda"; -import { ModalAtaNaoPreenchida } from "../../../utils/Modais"; +import { ModalAtaNaoPreenchida, ModalPublicarRelatorioConsolidado } from "../../../utils/Modais"; import { getDocumentosConsolidadoDre, } from "../../../services/dres/RelatorioConsolidado.service"; @@ -40,6 +40,7 @@ const RelatorioConsolidado = () => { const [statusProcessamentoConsolidadoDre, setStatusProcessamentoConsolidadoDre] = useState(''); const [periodos, setPeriodos] = useState(false); const [periodoEscolhido, setPeriodoEsolhido] = useState(false); + const [showPublicarRelatorioConsolidado, setShowPublicarRelatorioConsolidado] = useState(false); // Ata const [ataParecerTecnico, setAtaParecerTecnico] = useState(false); @@ -247,6 +248,7 @@ const RelatorioConsolidado = () => { let publicar = await postPublicarConsolidadoDre(payload); setStatusProcessamentoConsolidadoDre(publicar.status); setConsolidadoDre(publicar); + setShowPublicarRelatorioConsolidado(false); } }catch (e) { console.log("Erro ao publicar Consolidado Dre ", e) @@ -268,6 +270,20 @@ const RelatorioConsolidado = () => { } } + const publicado = () => { + if(!consolidadoDre){ + return false; + } + else if(consolidadoDre && consolidadoDre.versao === "PREVIA"){ + return false; + } + else if(consolidadoDre && consolidadoDre.versao === "FINAL"){ + return true; + } + + return false; + } + return (

Relatório consolidado

@@ -311,8 +327,9 @@ const RelatorioConsolidado = () => { ) : <> { consolidadoDre={consolidadoDre} statusConsolidadoDre={statusConsolidadoDre} periodoEscolhido={periodoEscolhido} + publicado={publicado} /> {consolidadoDre && consolidadoDre.uuid && @@ -355,6 +374,14 @@ const RelatorioConsolidado = () => { /> +
+ setShowPublicarRelatorioConsolidado(false)} + publicarConsolidadoDre={publicarConsolidadoDre} + /> +
+
) } diff --git a/src/utils/Modais.js b/src/utils/Modais.js index e79f2c4eb..30ba53f99 100644 --- a/src/utils/Modais.js +++ b/src/utils/Modais.js @@ -6,7 +6,8 @@ import { ModalBootstrapTipoRecursoNaoAceito, ModalBootstrapSaldoInsuficienteDaconta, ModalBootstrapFormMeusDadosSenha, - ModalBootstrapFormMeusDadosEmail + ModalBootstrapFormMeusDadosEmail, + ModalBootstrapConfirmarPublicacao } from "../componentes/Globais/ModalBootstrap"; import {FormAlterarSenha} from "../componentes/Globais/EdicaoDeSenha/FormAlterarSenha"; import {TextoValidacaoSenha} from "../componentes/Globais/MedidorForcaSenha/textoValidacaoSenha"; @@ -610,3 +611,41 @@ export const ModalAtaNaoPreenchida = (propriedades) => { /> ) }; + +export const ModalPublicarRelatorioConsolidado = (propriedades) => { + const bodyTextarea = () => { + return ( + <> +

+ Ao confirmar a publicação, o sistema bloqueará as alterações dos relatórios e da ata. +

+ +

+ Essa operação, não poderá ser revertida. +

+ +

+ Caso queira conferir as informações cadastradas, antes de concluir, volte e gere um prévia dos documentos. +

+ +

Deseja concluir a publicação?

+ + ) + + }; + + return ( + + ) +}; From 16fb37fdd2cc55fdc792d294d7db55c45fd32235 Mon Sep 17 00:00:00 2001 From: linikerj Date: Wed, 6 Jul 2022 15:09:09 -0300 Subject: [PATCH 50/98] =?UTF-8?q?feat(66783)=20Finaliza=20persistencia=20e?= =?UTF-8?q?m=20datas,=20e=20altera=20campos=20de=20per=C3=ADodo=20para=20r?= =?UTF-8?q?ange=20picker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FiltrosConferenciaDeLancamentos.js | 88 ++++++++++++------- .../TabelaConferenciaDeLancamentos.js | 9 +- .../TabsConferenciaDeLancamentos.js | 3 +- .../ConferenciaDeLancamentos/index.js | 15 ++-- .../dres/PrestacaoDeContas.service.js | 4 +- 5 files changed, 73 insertions(+), 46 deletions(-) diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/FiltrosConferenciaDeLancamentos.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/FiltrosConferenciaDeLancamentos.js index 4cf59fe30..617e9d8d9 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/FiltrosConferenciaDeLancamentos.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/FiltrosConferenciaDeLancamentos.js @@ -1,5 +1,9 @@ -import React from "react"; -import {DatePickerField} from "../../../../Globais/DatePickerField"; +import React from 'react'; +import {DatePicker, Space} from "antd"; +import locale from 'antd/es/date-picker/locale/pt_BR'; +import moment from "moment"; +import './../../../../sme/ExtracaoDados/extracao-dados.scss' + export const FiltrosConferenciaDeLancamentos = ({stateFiltros, tabelasDespesa, handleChangeFiltros, handleSubmitFiltros, limpaFiltros})=>{ @@ -7,30 +11,6 @@ export const FiltrosConferenciaDeLancamentos = ({stateFiltros, tabelasDespesa, h <>
-
- -
-
- -
-
- até -
-
- -
-
-
handleChangeFiltros(e.target.name, e.target.value)} + name={`filtrar_por_nome_fornecedor`} + id={`filtrar_por_nome_fornecedor`} + type="text" + className="form-control" + placeholder="Escreva a razão social do fornecedor" + /> +
+
+ +
-
- -
- -
+
+
+
- {props.errors.periodo && - {props.errors.periodo}} -
- -
- - { - props.handleChange(e); - } - } - readOnly={true} - /> - {props.errors.valor_total && - {props.errors.valor_total}} -
-
- - ( - <> - {values.saldos && values.saldos.length > 0 && values.saldos.map((saldo, index) => { - return ( -
-
- -
- - - {props.errors.acao_associacao && {props.errors.acao_associacao}} -
- -
- - - {props.touched.conta_associacao && props.errors.conta_associacao && - {props.errors.conta_associacao}} -
- -
- - - {props.touched.aplicacao && props.errors.aplicacao && - {props.errors.aplicacao}} -
- -
- - { - props.handleChange(e); - } - } - /> - {props.touched.saldo && props.errors.saldo && {props.errors.saldo}} -
- - - {index >= 0 && values.saldos.length > 0 && ( -
- -
- )} -
-
/*div key*/ - ) - })} - {props.errors.lancamemto_duplicado && -
- {props.errors.lancamemto_duplicado} -
- } - {props.errors.campos_obrigatorios && -
- {props.errors.campos_obrigatorios} -
- } - {props.errors.sem_saldos && -
- {props.errors.sem_saldos} -
- } -
- -
- - )} - /> - -
- - -
- -
- setShowModalSalvar(false)} - onSalvarTrue={() => serviceSalvarValoresReprogramados(values, errors, setFieldValue)} - /> -
- - - ) - }} - - } - - ); -}; \ No newline at end of file diff --git a/src/componentes/escolas/ValoresReprogramados/valores-reprogramados.scss b/src/componentes/escolas/ValoresReprogramados/valores-reprogramados.scss deleted file mode 100644 index 67d0cd52b..000000000 --- a/src/componentes/escolas/ValoresReprogramados/valores-reprogramados.scss +++ /dev/null @@ -1,13 +0,0 @@ -.container-campos-dinamicos { - - .btn-excluir-valores-reprogramados, .btn-excluir-valores-reprogramados:hover, .btn-excluir-valores-reprogramados:focus { - outline: none; - border: none; - background-color: transparent; - } - - .fa-trash-alt{ - color: #B40C02; - } - -} diff --git a/src/paginas/escolas/ValoresReprogramados/index.js b/src/paginas/escolas/ValoresReprogramados/index.js deleted file mode 100644 index 43c938b14..000000000 --- a/src/paginas/escolas/ValoresReprogramados/index.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from "react"; -import {PaginasContainer} from "../../PaginasContainer"; -import {ValoresReprogramados} from "../../../componentes/escolas/ValoresReprogramados"; - - -export const ValoresReprogramadosPage = () =>{ - - return ( - -

Cadastro de valores reprogramados

-
- -
-
- ) - -} \ No newline at end of file diff --git a/src/rotas/index.js b/src/rotas/index.js index c40552d3d..dac2dac83 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -16,7 +16,7 @@ import {DetalhedasPrestacoesPage} from "../paginas/escolas/DetalheDasPrestacoes" import {VisualizacaoDaAta} from "../componentes/escolas/GeracaoDaAta/VisualizacaoDaAta"; import {EdicaoAta} from "../componentes/escolas/GeracaoDaAta/VisualizacaoDaAta/EdicaoAta"; import {MembrosDaAssociacaoPage} from "../paginas/escolas/MembrosDaAssociacao"; -import {ValoresReprogramadosPage} from "../paginas/escolas/ValoresReprogramados"; +import { ValoresReprogramados } from "../componentes/Globais/ValoresReprogramados"; import {DadosDasContasPage} from "../paginas/escolas/DadosDasContasAssociacao"; import {EsqueciMinhaSenhaPage} from "../paginas/Login/EsqueciMinhaSenha"; import {RedefinirSenhaPage} from "../paginas/Login/RedefinirMinhaSenha"; @@ -134,8 +134,8 @@ const routesConfig = [ { exact: true, path: "/cadastro-de-valores-reprogramados", - component: ValoresReprogramadosPage, - permissoes: ['add_valores_reprogramados'], + component: ValoresReprogramados, + permissoes: ['access_valores_reprogramados_ue', 'access_valores_reprogramados_dre'], }, { exact: true, diff --git a/src/services/ValoresReprogramados.service.js b/src/services/ValoresReprogramados.service.js new file mode 100644 index 000000000..bcaf4f14f --- /dev/null +++ b/src/services/ValoresReprogramados.service.js @@ -0,0 +1,25 @@ +import api from './api'; +import {TOKEN_ALIAS} from "./auth.service"; + +const authHeader = { + headers: { + 'Authorization': `JWT ${localStorage.getItem(TOKEN_ALIAS)}`, + 'Content-Type': 'application/json' + } +}; + +export const getValoresReprogramados = async(associacao_uuid) => { + return (await api.get(`/api/valores-reprogramados/get-valores-reprogramados/?associacao_uuid=${associacao_uuid}`, authHeader)).data +} + +export const patchSalvarValoresReprogramados = async (payload) => { + return (await api.patch(`/api/valores-reprogramados/salvar-valores-reprogramados/`, payload, authHeader)).data +}; + +export const patchConcluirValoresReprogramados = async (payload) => { + return (await api.patch(`/api/valores-reprogramados/concluir-valores-reprogramados/`, payload, authHeader)).data +}; + +export const getStatusValoresReprogramados = async(associacao_uuid) => { + return (await api.get(`/api/valores-reprogramados/get-status-valores-reprogramados/?associacao_uuid=${associacao_uuid}`, authHeader)).data +} \ No newline at end of file diff --git a/src/utils/Modais.js b/src/utils/Modais.js index 30ba53f99..a0299b7d6 100644 --- a/src/utils/Modais.js +++ b/src/utils/Modais.js @@ -625,7 +625,7 @@ export const ModalPublicarRelatorioConsolidado = (propriedades) => {

- Caso queira conferir as informações cadastradas, antes de concluir, volte e gere um prévia dos documentos. + Caso queira conferir as informações cadastradas, antes de concluir, volte e gere uma prévia dos documentos.

Deseja concluir a publicação?

@@ -649,3 +649,34 @@ export const ModalPublicarRelatorioConsolidado = (propriedades) => { /> ) }; + +export const ModalConclusaoValoresReprogramadosNaoPermitido = (propriedades) => { + return ( + + ) +}; + +export const ModalDescartarAlteracoesValoresReprogramados = (propriedades) => { + return ( + + ) +}; From 3b40ae311e2318e71e9ff1f469a87ef09b4fb3e8 Mon Sep 17 00:00:00 2001 From: luke Date: Wed, 20 Jul 2022 16:47:33 -0300 Subject: [PATCH 66/98] feat(60462)-ajuste-linha-tabela MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajuste na linha da tabela que não estava exibindo --- .../ValoresReprogramadosFormFormik.js | 5 +++-- .../Globais/ValoresReprogramados/index.js | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js b/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js index 5c6514135..f64ec953f 100644 --- a/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js +++ b/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js @@ -16,7 +16,8 @@ export const ValoresReprogramadosFormFormik = ({ handleChangeStatusConferencia, handleClickEstaCorreto, visao_selecionada, - exibeAcao + exibeAcao, + rowSpan }) => { return ( @@ -76,7 +77,7 @@ export const ValoresReprogramadosFormFormik = ({ {exibeAcao(acao) && - {acao.nome} + {acao.nome} } diff --git a/src/componentes/Globais/ValoresReprogramados/index.js b/src/componentes/Globais/ValoresReprogramados/index.js index d7e67d28c..5543b4efe 100644 --- a/src/componentes/Globais/ValoresReprogramados/index.js +++ b/src/componentes/Globais/ValoresReprogramados/index.js @@ -533,6 +533,24 @@ export const ValoresReprogramados = () => { return true; } + const rowSpan = (acao) => { + let total = 1 + + if(acao.capital){ + total = total +1 + } + + if(acao.custeio){ + total = total + 1 + }; + + if(acao.livre){ + total = total + 1 + } + + return total; + } + return ( <> @@ -572,6 +590,7 @@ export const ValoresReprogramados = () => { handleClickEstaCorreto={handleClickEstaCorreto} visao_selecionada={visao_selecionada} exibeAcao={exibeAcao} + rowSpan={rowSpan} /> Date: Thu, 21 Jul 2022 09:50:20 -0300 Subject: [PATCH 67/98] feat(67144) Ajusta hover, retira index em despesa e cria tag para vinculo a atividade. --- .../ConferenciaDeLancamentos/index.js | 1 - .../scss/rowExpansionTable.scss | 3 +++ .../scss/tagInformacaoTemplate.scss | 10 ++++++++++ .../useRowExpansionDespesaTemplate.js | 5 +++-- .../useRowExpansionReceitaTemplate.js | 1 + 5 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js index 1b41c04f4..7c99e557e 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js @@ -3,7 +3,6 @@ import {getLancamentosParaConferencia, getUltimaAnalisePc, getContasDaAssociacao import {TabsConferenciaDeLancamentos} from "./TabsConferenciaDeLancamentos"; import {visoesService} from "../../../../../services/visoes.service"; import {mantemEstadoAcompanhamentoDePc as meapcservice} from "../../../../../services/mantemEstadoAcompanhamentoDePc.service"; -import moment from "moment"; const ConferenciaDeLancamentos = ({prestacaoDeContas, editavel=true}) =>{ const [lancamentosParaConferencia, setLancamentosParaConferencia] = useState([]) diff --git a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss new file mode 100644 index 000000000..506b2add7 --- /dev/null +++ b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss @@ -0,0 +1,3 @@ +tr:not([class]) { + pointer-events: none; +} \ No newline at end of file diff --git a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/tagInformacaoTemplate.scss b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/tagInformacaoTemplate.scss index 588bbc7ca..2ccb94bab 100644 --- a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/tagInformacaoTemplate.scss +++ b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/tagInformacaoTemplate.scss @@ -32,3 +32,13 @@ background: inherit; } +#vinculo-atividade + span { + max-width: 130px; + padding-left: 6px; + padding-right: 6px; + border-radius: 5px; + margin-bottom: 10px; + color: #00585D; + background-color: #DADADA; +} + diff --git a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/useRowExpansionDespesaTemplate.js b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/useRowExpansionDespesaTemplate.js index 53fac9f9f..eea613207 100644 --- a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/useRowExpansionDespesaTemplate.js +++ b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/useRowExpansionDespesaTemplate.js @@ -7,6 +7,7 @@ import useConferidoRateioTemplate from "./useConferidoRateioTemplate"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; import {faInfoCircle} from "@fortawesome/free-solid-svg-icons"; import ReactTooltip from "react-tooltip"; +import './scss/rowExpansionTable.scss'; const useRowExpansionDespesaTemplate = (prestacaoDeContas) =>{ @@ -62,7 +63,7 @@ const useRowExpansionDespesaTemplate = (prestacaoDeContas) =>{
-
Despesa {index + 1} +
Despesas {(retornaToolTipRateio(rateio))}
@@ -102,7 +103,7 @@ const useRowExpansionDespesaTemplate = (prestacaoDeContas) =>{ {rateio.valor_rateio ? valor_template(null, null, rateio.valor_rateio) : 0}
-

Vínculo a atividade

+

Vínculo a atividade

{tagRateioTemplate(rateio)}
{ From 346ac6dc9f529a5653553da16acb26839b0f2b76 Mon Sep 17 00:00:00 2001 From: luke Date: Thu, 21 Jul 2022 12:01:05 -0300 Subject: [PATCH 68/98] feat(63318)-parte-2 ajuste modal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agora o modal para publicar está sendo exibido --- .../TopoComBotoes/index.js | 6 ++++-- .../RelatorioConsolidado/PublicarDocumentos.js | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js index f468a4705..57b72b82f 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TopoComBotoes/index.js @@ -23,8 +23,10 @@ export const TopoComBotoes = ({
- - + {!jaPublicado && + + } + {dadosAta && dadosAta.arquivo_pdf && +
}
+ +
+ setShowPublicarRelatorioConsolidado(false)} + publicarConsolidadoDre={() => publicarConsolidadoDre(consolidadoDre)} + /> +
+ ) } export default memo(PublicarDocumentos) \ No newline at end of file From 651ac4e99577296c2deaa6e7b4d98d281a5fcaa2 Mon Sep 17 00:00:00 2001 From: linikerj Date: Fri, 22 Jul 2022 07:15:04 -0300 Subject: [PATCH 69/98] Ajuste em escrita de modal que estava em plural passa a estar no singular. --- .../TabelaConferenciaDeLancamentos.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js index d10258bfe..b7766bf29 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js @@ -301,7 +301,7 @@ const TabelaConferenciaDeLancamentos = ({ style={{fontSize: '18px', marginRight: "8px", color: '#00585D'}} icon={faInfoCircle} /> - +
@@ -669,7 +669,7 @@ const TabelaConferenciaDeLancamentos = ({ setShowModalLegendaInformacao(false)} - titulo="Legenda Informações" + titulo="Legenda Informação" primeiroBotaoTexto="Fechar" primeiroBotaoCss="outline-success" texto='

Esse lançamento tem um status de conferência que não pode ser selecionado em conjunto com os demais status já selecionados.

' From e70f6f070609861533cd327ebacd654c7bcc100f Mon Sep 17 00:00:00 2001 From: luke Date: Fri, 22 Jul 2022 09:27:04 -0300 Subject: [PATCH 70/98] feat(60462)-parte-3 adiciona classe tr Agora as tr da listagem possuem classes --- .../ValoresReprogramadosFormFormik.js | 26 +++++-------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js b/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js index f64ec953f..4ecc32326 100644 --- a/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js +++ b/src/componentes/Globais/ValoresReprogramados/ValoresReprogramadosFormFormik.js @@ -2,7 +2,7 @@ import React from "react"; import {Formik} from "formik"; import CurrencyInput from "react-currency-input"; import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; -import {faFile, faCheckCircle, faExclamationTriangle} from "@fortawesome/free-solid-svg-icons"; +import {faCheckCircle, faExclamationTriangle} from "@fortawesome/free-solid-svg-icons"; export const ValoresReprogramadosFormFormik = ({ @@ -50,23 +50,9 @@ export const ValoresReprogramadosFormFormik = ({ - + - + @@ -82,7 +68,7 @@ export const ValoresReprogramadosFormFormik = ({ } {acao.custeio && - +
AçãoAção Tipo de aplicação -
-
- -
- -
- Preencha o valor reprogramado (Associação) -
-
- -
Preencha o valor reprogramado (Associação) Conferência DRE
Custeio +
Capital +
Livre aplicação Date: Fri, 22 Jul 2022 12:16:40 -0300 Subject: [PATCH 71/98] feat de ahyste em tr, e adicionei o retorno exado da tag --- .../DetalheDasPrestacoes/TabelaTransacoes/index.js | 4 ++-- .../ConferenciaDeLancamentos/scss/rowExpansionTable.scss | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaTransacoes/index.js b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaTransacoes/index.js index 6c7fe40b4..e4074d3c3 100644 --- a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaTransacoes/index.js +++ b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaTransacoes/index.js @@ -111,9 +111,9 @@ const TabelaTransacoes = ({ let texto_exibir = rowData?.informacoes?.map(info => { if (info.tag_nome === 'Parcial'){ return info.tag_hint - }}) + }}).filter((texto) => texto !== undefined).join(', '); - if (texto_exibir != ''){ + if (!texto_exibir){ return (
diff --git a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss index 506b2add7..ee61cef15 100644 --- a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss +++ b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss @@ -1,3 +1,3 @@ -tr:not([class]) { +.p-datatable-tbody tr:not([class]) { pointer-events: none; } \ No newline at end of file From dc820e123bb049e6cb20b6a0894d133533d6efad Mon Sep 17 00:00:00 2001 From: linikerj Date: Fri, 22 Jul 2022 13:08:24 -0300 Subject: [PATCH 72/98] feature ajuste, pega o elemento pelo id para especificar a tabela. --- .../ConferenciaDeLancamentos/scss/rowExpansionTable.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss index ee61cef15..8bb6f84ae 100644 --- a/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss +++ b/src/hooks/dres/PrestacaoDeContas/ConferenciaDeLancamentos/scss/rowExpansionTable.scss @@ -1,3 +1,3 @@ -.p-datatable-tbody tr:not([class]) { +#nav-conferencia-de-lancamentos-tabContent .p-datatable-tbody tr:not([class]) { pointer-events: none; } \ No newline at end of file From 43798212266d44a4f1ac5c1d5b12fecb194e60df Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Mon, 25 Jul 2022 06:54:51 -0300 Subject: [PATCH 73/98] docs(1.34): Release Notes --- README.md | 12 +++++++++++- package.json | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 32e6f6ffd..60f95fc96 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,20 @@ Front da aplicação _SIG.Escola_ da Secretaria de Educação da cidade de São License: MIT -Versão: 1.33.0 +Versão: 1.34.0 ## Release Notes +### 1.34.0 - 22/07/2022 - Entregas da Release 5 - (Parcial até a Sprint 45) +* UE > Novo fluxo de informação de valores reprogramados iniciais (Conclusão) +* DRE > Novo fluxo de aprovação de valores reprogramados iniciais (Conclusão) +* DRE > Melhorias na conferência de lançamentos do acompanhamento de PC: Tags de informações e novos filtros +* DRE > Novo processo de geração de relatórios consolidados (Continuação) +* ADM > Ação a partir de comissões para definição da comissão de exame de contas +* Informação de critério de senha diferente das anteriores no formulário de alteração/redefinição de senha +* Incluída a informação de hora de criação no rodapé de vários relatórios +* 🐞 Correção de bugs + ### 1.33.0 - 04/07/2022 - Entregas da Release 5 - (Parcial até a Sprint 44) * UE > Na emissão da ata, agora a aplicação informa quais campos estão incompletos. * DRE > Melhorias no demonstrativo da execução físico-financeira diff --git a/package.json b/package.json index dc5067efc..e0a7b47ee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ptrf", - "version": "1.33.0", + "version": "1.34.0", "private": true, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.27", From 55850ad998146a7b51d792c5b5b67f736b67588c Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 26 Jul 2022 08:32:50 -0300 Subject: [PATCH 74/98] =?UTF-8?q?feat(69314):=20Inclui=20info=20sobre=20pu?= =?UTF-8?q?blica=C3=A7=C3=A3o=20no=20acompanhamento=20de=20PC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera a tela de acompanhamento de PC para exibir infirmações de publicação no relatório consolidado DRE. --- .../DetalhePrestacaoDeContas/Cabecalho.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/Cabecalho.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/Cabecalho.js index 068421240..74be38af9 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/Cabecalho.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/Cabecalho.js @@ -8,6 +8,8 @@ import {exibeDataPT_BR} from "../../../../utils/ValidacoesAdicionaisFormularios" const Cabecalho = ({prestacaoDeContas, exibeSalvar, metodoSalvarAnalise, btnSalvarDisabled}) => { const [periodoTexto, setPeriodoTexto] = useState('') + const [publicacaoTexto, setPublicacaoTexto] = useState('') + const [pcPublicada, setPcPublicada] = useState(false) const carregaPeriodo = useCallback(async ()=>{ if (prestacaoDeContas && prestacaoDeContas.periodo_uuid){ @@ -19,8 +21,17 @@ const Cabecalho = ({prestacaoDeContas, exibeSalvar, metodoSalvarAnalise, btnSalv } }, [prestacaoDeContas]) + const verificaPublicacao = useCallback( () => { + if (prestacaoDeContas.publicada){ + setPcPublicada(true) + let textoPublicacao = `Essa PC entrou no relatório consolidado ${prestacaoDeContas.referencia_consolidado_dre}` + setPublicacaoTexto(textoPublicacao) + } + }, [prestacaoDeContas]) + useEffect(()=>{ carregaPeriodo() + verificaPublicacao() }, [carregaPeriodo]) return ( @@ -33,6 +44,9 @@ const Cabecalho = ({prestacaoDeContas, exibeSalvar, metodoSalvarAnalise, btnSalv {periodoTexto &&

Período: {periodoTexto}

} + {publicacaoTexto && +

{publicacaoTexto}

+ }
Date: Tue, 26 Jul 2022 09:13:19 -0300 Subject: [PATCH 75/98] =?UTF-8?q?feat(69314):=20Altera=20voltar=20PC=20par?= =?UTF-8?q?a=20an=C3=A1lise=20para=20verificar=20publica=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Altera no acompanhamento de PC o processo de voltar uma PC para análise, de modo a não permitir a volta se a PC tiver sido publicada em um relatório consolidado DRE. --- .../GetComportamentoPorStatus.js | 2 +- .../DetalhePrestacaoDeContas/index.js | 23 ++++++++++++++++++- .../ModalNaoPodeVoltarParaAnalise.js | 16 +++++++++++++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/componentes/dres/PrestacaoDeContas/ModalNaoPodeVoltarParaAnalise.js diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js index 58fde093a..d1d78f9d3 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/GetComportamentoPorStatus.js @@ -536,7 +536,7 @@ export const GetComportamentoPorStatus = ( textoBtnAvancar={"Concluir análise"} textoBtnRetroceder={"Voltar para análise"} metodoAvancar={() => setShowConcluirAnalise(true)} - metodoRetroceder={() => setShowVoltarParaAnalise(true)} + metodoRetroceder={() => setShowVoltarParaAnalise()} disabledBtnAvancar={true} disabledBtnRetroceder={false} esconderBotaoAvancar={true} diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js index 3f9e62323..c2d20b7d4 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js @@ -29,6 +29,7 @@ import {GetComportamentoPorStatus} from "./GetComportamentoPorStatus"; import {ModalSalvarPrestacaoDeContasAnalise} from "../../../../utils/Modais"; import Loading from "../../../../utils/Loading"; import {toastCustom} from "../../../Globais/ToastCustom"; +import {ModalNaoPodeVoltarParaAnalise} from "../ModalNaoPodeVoltarParaAnalise"; require("ordinal-pt-br"); @@ -114,6 +115,7 @@ export const DetalhePrestacaoDeContas = () =>{ const [showRecebida, setShowRecebida] = useState(false); const [showConcluirAnalise, setShowConcluirAnalise] = useState(false); const [showVoltarParaAnalise, setShowVoltarParaAnalise] = useState(false); + const [showNaoPodeVoltarParaAnalise, setShowNaoPodeVoltarParaAnalise] = useState(false); const [redirectListaPc, setRedirectListaPc] = useState(false); const [informacoesPrestacaoDeContas, setInformacoesPrestacaoDeContas] = useState(initialInformacoesPrestacaoDeContas); const [clickBtnEscolheConta, setClickBtnEscolheConta] = useState({0: true, key_0: true}); @@ -710,6 +712,7 @@ export const DetalhePrestacaoDeContas = () =>{ setShowVoltarParaAnalise(false); setshowErroPrestacaoDeContasPosterior(false); setShowDeleteAjusteSaldoPC(false); + setShowNaoPodeVoltarParaAnalise(false); }; const onCloseModalSalvarAnalise = () => { @@ -884,6 +887,15 @@ export const DetalhePrestacaoDeContas = () =>{ setLoading(false); }; + const verificaSePodeVoltarParaAnalise = () => { + if (prestacaoDeContas.publicada) { + setShowNaoPodeVoltarParaAnalise(true) + } + else { + setShowVoltarParaAnalise(true) + } + } + const onVoltarParaAnalise = async () => { setLoading(true); setShowVoltarParaAnalise(false); @@ -1049,7 +1061,7 @@ export const DetalhePrestacaoDeContas = () =>{ getObjetoIndexAnalise={getObjetoIndexAnalise} toggleBtnTabelaAcoes={toggleBtnTabelaAcoes} clickBtnTabelaAcoes={clickBtnTabelaAcoes} - setShowVoltarParaAnalise={setShowVoltarParaAnalise} + setShowVoltarParaAnalise={verificaSePodeVoltarParaAnalise} btnSalvarDisabled={btnSalvarDisabled} setBtnSalvarDisabled={setBtnSalvarDisabled} carregaPrestacaoDeContas={carregaPrestacaoDeContas} @@ -1168,6 +1180,15 @@ export const DetalhePrestacaoDeContas = () =>{ segundoBotaoTexto="Confirmar" /> +
+ Não é possível voltar com essa PC para análise porque ela consta na versão final do relatório consolidado ${prestacaoDeContas.referencia_consolidado_dre}

`} + primeiroBotaoTexto="Fechar" + primeiroBotaoCss="success" + /> +
{ + return ( + + ) +}; From 281a019434ca87966fdbb3aafdd82be524e64ba0 Mon Sep 17 00:00:00 2001 From: ollyvergithub Date: Thu, 28 Jul 2022 14:33:03 -0300 Subject: [PATCH 76/98] =?UTF-8?q?feat(67941):=20Implementa=20gera=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20relat=C3=B3rio=20consolidado=20DRE=20=C3=BAnico?= =?UTF-8?q?=20para=20todas=20as=20contas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...DemonstrativoDaExecucaoFisicoFinanceira.js | 74 ++++++++++++++----- .../relatorio-consolidado.scss | 25 +++++++ 2 files changed, 82 insertions(+), 17 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js index 9e8032ba9..b1b0d7a80 100644 --- a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js +++ b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js @@ -1,4 +1,5 @@ -import React, {memo, useEffect, useState} from "react"; +import React, {memo, useCallback, useEffect, useState} from "react"; +import { SplitButton } from 'primereact/splitbutton'; import { getDownloadRelatorio, getTiposConta @@ -8,6 +9,7 @@ import {faDownload} from "@fortawesome/free-solid-svg-icons"; const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, periodoEscolhido}) => { const [contas, setContas] = useState(false); + const [itensSplitButton, setItensSplitButton] = useState([]) useEffect(()=>{ let mounted = true @@ -46,6 +48,23 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, periodoEscolhi window.location.assign(`/dre-relatorio-consolidado-apuracao/${periodoEscolhido}/${contaEscolhida}/${consolidadoDre.ja_publicado}`) }; + const geraItensSplitButton = useCallback( () => { + + if (contas && contas.length > 0){ + contas.map((conta) => ( + setItensSplitButton(prevState => [...prevState, { + label: `Conta ${conta.nome}`, + command: ()=> onClickPreencherRelatorio(conta.uuid) + }]) + )) + } + + }, [contas]) + + useEffect(()=>{ + geraItensSplitButton() + }, [geraItensSplitButton]) + return (
{consolidadoDre.relatorios_fisico_financeiros && consolidadoDre.relatorios_fisico_financeiros.length > 0 ? ( @@ -54,7 +73,7 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, periodoEscolhi
-

Demonstrativo da Execução Físico-Financeira - {relatorio.tipo_conta ? "Conta " + relatorio.tipo_conta : ""}

+

Demonstrativo da Execução Físico-Financeira {relatorio.tipo_conta ? "- Conta " + relatorio.tipo_conta : ""}

{relatorio.status_geracao_arquivo}

- + {!relatorio.tipo_conta ? ( + + + ): + + }
)} ) : - contas && contas.length > 0 && contas.map((conta) => -
-
-
-

Demonstrativo da Execução Físico-Financeira - {conta && conta.nome ? "Conta " + conta.nome : ""}

-

- Documento pendente de geração -

-
-
-
- -
+
+
+
+

Demonstrativo da Execução Físico-Financeira

+

+ Documento pendente de geração +

- )} +
+
+ + +
+
+ }
) } diff --git a/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss b/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss index b3bb0338d..ca64b347c 100644 --- a/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss +++ b/src/componentes/dres/RelatorioConsolidado/relatorio-consolidado.scss @@ -128,3 +128,28 @@ body .tabela-associacoes-nao-regularizadas .p-datatable-tbody > tr > td, body .t padding: 15px !important; } + +.btn-consultar-relatorio, .btn-consultar-relatorio > button{ + background-color: #fff !important; + font-weight: normal !important; + border-color: #00585E !important; + color: #00585E !important; + padding: 0.25rem 0.5rem; +} + +.btn-consultar-relatorio > button span{ + padding: 0 !important; +} + +.btn-consultar-relatorio button:nth-child(1){ + cursor: default; +} + +.btn-consultar-relatorio button:nth-child(2){ + border-left: none !important; +} + +.btn-consultar-relatorio button:nth-child(2):hover{ + background-color: #00585E !important; + color: #fff !important; +} From 4b1717fde75250d3d4f04adfc32b8fb24d2dd6ba Mon Sep 17 00:00:00 2001 From: ollyvergithub Date: Mon, 1 Aug 2022 09:47:10 -0300 Subject: [PATCH 77/98] =?UTF-8?q?feat(70099):=20Altera=20Ata=20de=20Parece?= =?UTF-8?q?r=20T=C3=A9cnico=20em=20tela=20para=20exibir=20apenas=20PCs=20d?= =?UTF-8?q?o=20consolidado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assinaturas/index.js | 2 +- .../TabelaAprovadas/index.js | 18 ------- .../VisualizacaoAtaParecerTecnico/index.js | 53 ++++++++++++------- .../dres/AtasParecerTecnico.service.js | 4 +- 4 files changed, 36 insertions(+), 41 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/Assinaturas/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/Assinaturas/index.js index cf7e50be6..9b69020d0 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/Assinaturas/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/Assinaturas/index.js @@ -11,7 +11,7 @@ moment.updateLocale('pt', { export const Assinaturas = ({presentes_na_ata}) => { return ( <> -

+

Nada mais a ser tratado, os trabalhos foram encerrados, a Ata lida e achada conforme, vai assinada pelos membros da Comissão.

diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TabelaAprovadas/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TabelaAprovadas/index.js index a39598f13..9d2bff1e7 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TabelaAprovadas/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/TabelaAprovadas/index.js @@ -81,12 +81,6 @@ export const TabelaAprovadas = ({infoContas, status, exibirUltimoItem}) => { infoContas.contas.map((conta, index) => -
-

- Conta {conta.nome} -

-
-
{divideLista(conta).map((dados, index_dados) =>
@@ -123,12 +117,6 @@ export const TabelaAprovadas = ({infoContas, status, exibirUltimoItem}) => { infoContas.contas.map((conta, index) => -
-

- Conta {conta.nome} -

-
- @@ -166,12 +154,6 @@ export const TabelaAprovadas = ({infoContas, status, exibirUltimoItem}) => { infoContas.contas.map((conta, index) => -
-

- Conta {conta.nome} -

-
-
diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js index bddbcfb93..065bcf21d 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js @@ -32,38 +32,40 @@ export const VisualizacaoDaAtaParecerTecnico = () => { // Consolidado DRE const [consolidadoDre, setConsolidadoDre] = useState(false); - useEffect(() => { - getDadosAta(); - }, []); + const carregaConsolidadoDrePorUuidDaAtaDeParecerTecnico = useCallback(async () => { + if (uuid_ata){ + let consolidado_dre = await getConsolidadoDrePorUuidAtaDeParecerTecnico(uuid_ata) + setConsolidadoDre(consolidado_dre) + } + }, [uuid_ata]) useEffect(() => { - consultaInfoContas(); - }, [dadosAta]); + carregaConsolidadoDrePorUuidDaAtaDeParecerTecnico() + }, [carregaConsolidadoDrePorUuidDaAtaDeParecerTecnico]) + - const getDadosAta = async () => { + const getDadosAta = useCallback(async () => { let dados_ata = await getAtaParecerTecnico(uuid_ata); + console.log("XXXXXXXXXXX getDadosAta ", dados_ata) setDadosAta(dados_ata); - } + }, [uuid_ata]) + + useEffect(() => { + getDadosAta(); + }, [getDadosAta]); - const consultaInfoContas = async () => { + const consultaInfoContas = useCallback( async () => { if(dadosAta && Object.entries(dadosAta).length > 0){ - let info = await getInfoContas(dadosAta.dre.uuid, dadosAta.periodo.uuid) + let info = await getInfoContas(dadosAta.dre.uuid, dadosAta.periodo.uuid, uuid_ata) + setInfoContas(info) setLoading(false); } - - } - - const carregaConsolidadoDrePorUuidDaAtaDeParecerTecnico = useCallback(async () => { - if (uuid_ata){ - let consolidado_dre = await getConsolidadoDrePorUuidAtaDeParecerTecnico(uuid_ata) - setConsolidadoDre(consolidado_dre) - } - }, [uuid_ata]) + }, [dadosAta, uuid_ata]) useEffect(() => { - carregaConsolidadoDrePorUuidDaAtaDeParecerTecnico() - }, [carregaConsolidadoDrePorUuidDaAtaDeParecerTecnico]) + consultaInfoContas(); + }, [consultaInfoContas]); const dataPorExtenso = (data) => { if (!data) { @@ -266,11 +268,22 @@ export const VisualizacaoDaAtaParecerTecnico = () => { /> } + {dadosAta && dadosAta.comentarios && + <> +

Comentários

+
+
+

{dadosAta.comentarios}

+
+
+ + } {dadosAta && Object.entries(dadosAta).length > 0 && dadosAta.presentes_na_ata && } + } diff --git a/src/services/dres/AtasParecerTecnico.service.js b/src/services/dres/AtasParecerTecnico.service.js index 25f7a3ffd..1549b0b98 100644 --- a/src/services/dres/AtasParecerTecnico.service.js +++ b/src/services/dres/AtasParecerTecnico.service.js @@ -12,8 +12,8 @@ export const getAtaParecerTecnico = async (uuid_ata) => { return (await api.get(`api/ata-parecer-tecnico/${uuid_ata}/`, authHeader)).data } -export const getInfoContas = async (dre_uuid, periodo_uuid) => { - return (await api.get(`api/ata-parecer-tecnico/info-ata/?dre=${dre_uuid}&periodo=${periodo_uuid}`, authHeader)).data +export const getInfoContas = async (dre_uuid, periodo_uuid, uuid_ata) => { + return (await api.get(`api/ata-parecer-tecnico/info-ata/?dre=${dre_uuid}&periodo=${periodo_uuid}&ata=${uuid_ata}`, authHeader)).data } export const getListaPresentesPadrao = async (dre_uuid, ata_uuid) => { From 513b422c3a18da951a17c9a767eb295264cb447d Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Wed, 3 Aug 2022 14:21:31 -0300 Subject: [PATCH 78/98] feat(69314): Ajusta texto da mensagem --- .../dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js index c2d20b7d4..62b8cfec7 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js @@ -1184,7 +1184,7 @@ export const DetalhePrestacaoDeContas = () =>{ Não é possível voltar com essa PC para análise porque ela consta na versão final do relatório consolidado ${prestacaoDeContas.referencia_consolidado_dre}

`} + texto={`

Não é possível reabrir essa PC para análise, pois ela já foi publicada no Relatório Consolidado ${prestacaoDeContas.referencia_consolidado_dre}.

`} primeiroBotaoTexto="Fechar" primeiroBotaoCss="success" /> From 8ca94dd703419dbcdae2d38e95f971139450d5ef Mon Sep 17 00:00:00 2001 From: ollyvergithub Date: Thu, 4 Aug 2022 18:25:39 -0300 Subject: [PATCH 79/98] =?UTF-8?q?feat(70107):=20Inicia=20a=20leitura=20dos?= =?UTF-8?q?=20dados=20para=20nova=20consulta=20do=20relat=C3=B3rio=20conso?= =?UTF-8?q?lidado=20em=20tela?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../VisualizacaoAtaParecerTecnico/index.js | 1 - .../DemonstrativoDaExecucaoFisicoFinanceira.js | 3 ++- .../RelatorioConsolidadoApuracao/index.js | 14 +++++++++----- src/componentes/dres/RelatorioConsolidado/index.js | 2 +- src/rotas/index.js | 2 +- src/services/dres/RelatorioConsolidado.service.js | 4 ++-- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js index 065bcf21d..0a7683d50 100644 --- a/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js +++ b/src/componentes/dres/RelatorioConsolidado/AtaParecerTecnico/VisualizacaoAtaParecerTecnico/index.js @@ -46,7 +46,6 @@ export const VisualizacaoDaAtaParecerTecnico = () => { const getDadosAta = useCallback(async () => { let dados_ata = await getAtaParecerTecnico(uuid_ata); - console.log("XXXXXXXXXXX getDadosAta ", dados_ata) setDadosAta(dados_ata); }, [uuid_ata]) diff --git a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js index b1b0d7a80..255aa063b 100644 --- a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js +++ b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js @@ -45,7 +45,8 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, periodoEscolhi }; const onClickPreencherRelatorio = (contaEscolhida) =>{ - window.location.assign(`/dre-relatorio-consolidado-apuracao/${periodoEscolhido}/${contaEscolhida}/${consolidadoDre.ja_publicado}`) + let consolidado_dre_uuid = consolidadoDre.uuid + window.location.assign(`/dre-relatorio-consolidado-apuracao/${periodoEscolhido}/${contaEscolhida}/${consolidadoDre.ja_publicado}/${consolidado_dre_uuid}`) }; const geraItensSplitButton = useCallback( () => { diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js index b59941133..9c8d34a66 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/index.js @@ -28,7 +28,7 @@ import Loading from "../../../../utils/Loading"; export const RelatorioConsolidadoApuracao = () => { - let {periodo_uuid, conta_uuid, ja_publicado} = useParams(); + let {periodo_uuid, conta_uuid, ja_publicado, consolidado_dre_uuid} = useParams(); // Para bloquear as edições quando for de um Consolidado DRE incremental publicacoes_anteriores // eslint-disable-next-line no-eval @@ -70,7 +70,6 @@ export const RelatorioConsolidadoApuracao = () => { carregaNomePeriodo(); carregaNomeConta(); retornaQtdeEmAnalise(); - carregaExecucaoFinanceira(); carregaDevolucoesContaPtrf(); carregaJustificativa(); carregaDevolucoesAoTesouro(); @@ -115,14 +114,19 @@ export const RelatorioConsolidadoApuracao = () => { setContaNome(conta_nome); }; - const carregaExecucaoFinanceira = async () => { + const carregaExecucaoFinanceira = useCallback( async () => { try { - let execucao = await getExecucaoFinanceira(dre_uuid, periodo_uuid, conta_uuid); + let execucao = await getExecucaoFinanceira(dre_uuid, periodo_uuid, consolidado_dre_uuid !== 'null' ? consolidado_dre_uuid : ''); + console.log("XXXXXXXXXXXXXXX getExecucaoFinanceira ", execucao) setExecucaoFinanceira(execucao); } catch (e) { console.log("Erro ao carregar execução financeira ", e) } - }; + }, [dre_uuid, periodo_uuid, consolidado_dre_uuid]); + + useEffect(() => { + carregaExecucaoFinanceira(); + }, [carregaExecucaoFinanceira]); const carregaDevolucoesContaPtrf = async () => { try { diff --git a/src/componentes/dres/RelatorioConsolidado/index.js b/src/componentes/dres/RelatorioConsolidado/index.js index 76a13a0d0..5d0fb77f0 100644 --- a/src/componentes/dres/RelatorioConsolidado/index.js +++ b/src/componentes/dres/RelatorioConsolidado/index.js @@ -256,7 +256,7 @@ const RelatorioConsolidado = () => { ) : <> - {podeGerarPrevia() && + {consolidadoDreProximaPublicacao && podeGerarPrevia() &&
{ return (await api.get(`/api/tipos-conta/`, authHeader)).data }; -export const getExecucaoFinanceira = async (dre_uuid, periodo_uuid, conta_uuid) => { - return (await api.get(`/api/relatorios-consolidados-dre/info-execucao-financeira/?dre=${dre_uuid}&periodo=${periodo_uuid}&tipo_conta=${conta_uuid}`, authHeader)).data +export const getExecucaoFinanceira = async (dre_uuid, periodo_uuid, consolidado_dre_uuid='') => { + return (await api.get(`/api/relatorios-consolidados-dre/info-execucao-financeira/?dre=${dre_uuid}&periodo=${periodo_uuid}${consolidado_dre_uuid ? '&consolidado_dre=' + consolidado_dre_uuid : ""}`, authHeader)).data }; export const getDevolucoesContaPtrf = async (dre_uuid, periodo_uuid, conta_uuid) => { From 2c28e2f8fecdb9ac039f871e615caf5aa7ab3dfa Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 9 Aug 2022 09:49:39 -0300 Subject: [PATCH 80/98] feat(70107): Cria componente RelatorioConsolidadoEmTela Cria novo componente RelatorioConsolidadoEmTela com base no antigo RelatorioConsolidadoApuracao. --- src/App.js | 1 + ...DemonstrativoDaExecucaoFisicoFinanceira.js | 4 +- .../BoxConsultarDados.js | 36 ++ .../InfoAssociacoesEmAnalise.js | 23 ++ .../JustificativaDiferenca.js | 54 +++ .../TabelaDevolucoesAoTesouro.js | 56 +++ .../TabelaDevolucoesContaPtrf.js | 56 +++ .../TabelaExecucaoFinanceira.js | 99 +++++ .../TabelaExecucaoFisica.js | 41 ++ .../TopoComBotoes.js | 14 + .../RelatorioConsolidadoEmTela/index.js | 380 ++++++++++++++++++ src/rotas/index.js | 7 + 12 files changed, 770 insertions(+), 1 deletion(-) create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/BoxConsultarDados.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js create mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js diff --git a/src/App.js b/src/App.js index 495aacd16..808cb10e9 100644 --- a/src/App.js +++ b/src/App.js @@ -25,6 +25,7 @@ export const App = () => { pathName.match(/\/visualizacao-da-ata-parecer-tecnico\/[a-zA-Z0-9]/) || pathName.match(/\/edicao-da-ata-parecer-tecnico\/[a-zA-Z0-9]/) || pathName.match(/\/dre-relatorio-consolidado-apuracao\/[a-zA-Z0-9]/) || + pathName.match(/\/dre-relatorio-consolidado-em-tela\/[a-zA-Z0-9]/) || pathName.match(/\/dre-relatorio-consolidado-dados-das-ues\/[a-zA-Z0-9]/) ? ( <> diff --git a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js index 255aa063b..50de9e2c9 100644 --- a/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js +++ b/src/componentes/dres/RelatorioConsolidado/DemonstrativoDaExecucaoFisicoFinanceira.js @@ -46,7 +46,7 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, periodoEscolhi const onClickPreencherRelatorio = (contaEscolhida) =>{ let consolidado_dre_uuid = consolidadoDre.uuid - window.location.assign(`/dre-relatorio-consolidado-apuracao/${periodoEscolhido}/${contaEscolhida}/${consolidadoDre.ja_publicado}/${consolidado_dre_uuid}`) + window.location.assign(`/dre-relatorio-consolidado-em-tela/${periodoEscolhido}/${contaEscolhida}/${consolidadoDre.ja_publicado}/${consolidado_dre_uuid}`) }; const geraItensSplitButton = useCallback( () => { @@ -88,6 +88,7 @@ const DemonstrativoDaExecucaoFisicoFinanceira = ({consolidadoDre, periodoEscolhi
+ {/*TODO Remover o SplitButton e manter apenas o botão normal.*/} {!relatorio.tipo_conta ? ( ): + //TODO Não passar mais o tipo de conta. +
+ + + + + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js new file mode 100644 index 000000000..e9ecfd64b --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js @@ -0,0 +1,23 @@ +import React from "react"; + +export const InfoAssociacoesEmAnalise = ({totalEmAnalise, periodoUuid}) =>{ + return( + <> + {totalEmAnalise > 0 && +
+
+
Associações com pendências nas prestações de contas
+
+
+

{totalEmAnalise === 1 ? 'Existe ' + totalEmAnalise + ' associação ': 'Existem ' + totalEmAnalise + ' associações '} ainda em análise nas prestações de contas

+
+
+ +
+
+
+
+ } + + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js new file mode 100644 index 000000000..e5b64aeb8 --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js @@ -0,0 +1,54 @@ +import React from "react"; +import {visoesService} from "../../../../services/visoes.service"; + + +export const JustificativaDiferenca = ({comparaValores, justificativaDiferenca, setJustificativaDiferenca, onChangeJustificativaDiferenca, onSubmitJustificativaDiferenca, btnSalvarJustificativaDisable, setBtnSalvarJustificativaDisable, jaPublicado}) => { + + const onClickBtnLimpar = () => { + setJustificativaDiferenca({ + ...justificativaDiferenca, + texto: "" + }) + setBtnSalvarJustificativaDisable(false); + } + + return( + <> + {comparaValores() && + <> +

Justificativa da diferença entre o valor previsto pela SME e o transferido pela DRE no período

+
+ +
+
+ + +
+ + } + + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js new file mode 100644 index 000000000..18e90f191 --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js @@ -0,0 +1,56 @@ +import React from "react"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faHandHoldingUsd, faPlus, faEdit} from "@fortawesome/free-solid-svg-icons"; + +export const TabelaDevolucoesAoTesouro = ({devolucoesAoTesouro, valorTemplate, onClickObservacao}) => { + return( + <> +
+
+

+ + Devoluções ao tesouro +

+ {devolucoesAoTesouro && devolucoesAoTesouro.length > 0 ? ( +
+ + + + + + + + + + {devolucoesAoTesouro.map((devolucao, index)=> + + + + + + + )} + +
Tipo de devolução ao tesouroNúmero de ocorrênciasValorObservações da DRE
{devolucao.tipo_nome}{devolucao.ocorrencias}{devolucao.valor ? valorTemplate(devolucao.valor) : '-'} + +
+ ) : +

Não existem devoluções a serem exibidas

+ } +
+
+ + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js new file mode 100644 index 000000000..4ba19cace --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js @@ -0,0 +1,56 @@ +import React from "react"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faWallet, faPlus, faEdit} from "@fortawesome/free-solid-svg-icons"; + +export const TabelaDevolucoesContaPtrf = ({devolucoesContaPtrf, valorTemplate, onClickObservacao}) => { + return( + <> +
+
+

+ + Devoluções a conta PTRF +

+ {devolucoesContaPtrf && devolucoesContaPtrf.length > 0 ? ( + + + + + + + + + + + {devolucoesContaPtrf.map((devolucao, index)=> + + + + + + + )} + +
Tipo de devolução a conta PTRFNúmero de ocorrênciasValorObservações da DRE
{devolucao.tipo_nome}{devolucao.ocorrencias}{devolucao.valor ? valorTemplate(devolucao.valor) : '-'} + +
+ ) : +

Não existem devoluções a serem exibidas

+ } +
+
+ + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js new file mode 100644 index 000000000..847ad89b8 --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js @@ -0,0 +1,99 @@ +import React from "react"; + +export const TabelaExecucaoFinanceira = ({execucaoFinanceira, valorTemplate, comparaValores}) =>{ + + return( + <> +
Execução Financeira
+ {execucaoFinanceira && Object.entries(execucaoFinanceira).length > 0 && + + + + + + + + + + + + + + + + + + + {comparaValores() && + <> + + + + + + + + + + + + + + + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Tipo de recursoCusteioCapitalLivre AplicaçãoTotal (R$)
Saldo reprogramado período anterior{execucaoFinanceira.saldo_reprogramado_periodo_anterior_custeio ? valorTemplate(execucaoFinanceira.saldo_reprogramado_periodo_anterior_custeio) :'-'}{execucaoFinanceira.saldo_reprogramado_periodo_anterior_capital ? valorTemplate(execucaoFinanceira.saldo_reprogramado_periodo_anterior_capital) :'-'}{execucaoFinanceira.saldo_reprogramado_periodo_anterior_livre ? valorTemplate(execucaoFinanceira.saldo_reprogramado_periodo_anterior_livre) :'-'}{execucaoFinanceira.saldo_reprogramado_periodo_anterior_total ? valorTemplate(execucaoFinanceira.saldo_reprogramado_periodo_anterior_total) :'-'}
Previsto Secretaria Municipal de Educação{execucaoFinanceira.repasses_previstos_sme_custeio ? valorTemplate(execucaoFinanceira.repasses_previstos_sme_custeio) :'-'}{execucaoFinanceira.repasses_previstos_sme_capital ? valorTemplate(execucaoFinanceira.repasses_previstos_sme_capital) :'-'}{execucaoFinanceira.repasses_previstos_sme_livre ? valorTemplate(execucaoFinanceira.repasses_previstos_sme_livre) :'-'}{execucaoFinanceira.repasses_previstos_sme_total ? valorTemplate(execucaoFinanceira.repasses_previstos_sme_total) :'-'}
Transferido pela Diretoria Regional de Ensino no período{execucaoFinanceira.repasses_no_periodo_custeio ? valorTemplate(execucaoFinanceira.repasses_no_periodo_custeio) :'-'}{execucaoFinanceira.repasses_no_periodo_capital ? valorTemplate(execucaoFinanceira.repasses_no_periodo_capital) :'-'}{execucaoFinanceira.repasses_no_periodo_livre ? valorTemplate(execucaoFinanceira.repasses_no_periodo_livre) :'-'}{execucaoFinanceira.repasses_no_periodo_total ? valorTemplate(execucaoFinanceira.repasses_no_periodo_total) :'-'}
Rendimentos de Aplicação Financeira{execucaoFinanceira.receitas_rendimento_no_periodo_custeio ? valorTemplate(execucaoFinanceira.receitas_rendimento_no_periodo_custeio) :'-'}{execucaoFinanceira.receitas_rendimento_no_periodo_capital ? valorTemplate(execucaoFinanceira.receitas_rendimento_no_periodo_capital) :'-'}{execucaoFinanceira.receitas_rendimento_no_periodo_livre ? valorTemplate(execucaoFinanceira.receitas_rendimento_no_periodo_livre) :'-'}{execucaoFinanceira.receitas_rendimento_no_periodo_total ? valorTemplate(execucaoFinanceira.receitas_rendimento_no_periodo_total) :'-'}
Devolução à conta PTRF{execucaoFinanceira.receitas_devolucao_no_periodo_custeio ? valorTemplate(execucaoFinanceira.receitas_devolucao_no_periodo_custeio) :'-'}{execucaoFinanceira.receitas_devolucao_no_periodo_capital ? valorTemplate(execucaoFinanceira.receitas_devolucao_no_periodo_capital) :'-'}{execucaoFinanceira.receitas_devolucao_no_periodo_livre ? valorTemplate(execucaoFinanceira.receitas_devolucao_no_periodo_livre) :'-'}{execucaoFinanceira.receitas_devolucao_no_periodo_total ? valorTemplate(execucaoFinanceira.receitas_devolucao_no_periodo_total) :'-'}
Demais créditos{execucaoFinanceira.demais_creditos_no_periodo_custeio ? valorTemplate(execucaoFinanceira.demais_creditos_no_periodo_custeio) :'-'}{execucaoFinanceira.demais_creditos_no_periodo_capital ? valorTemplate(execucaoFinanceira.demais_creditos_no_periodo_capital) :'-'}{execucaoFinanceira.demais_creditos_no_periodo_livre ? valorTemplate(execucaoFinanceira.demais_creditos_no_periodo_livre) :'-'}{execucaoFinanceira.demais_creditos_no_periodo_total ? valorTemplate(execucaoFinanceira.demais_creditos_no_periodo_total) :'-'}
Valor total{execucaoFinanceira.receitas_totais_no_periodo_custeio ? valorTemplate(execucaoFinanceira.receitas_totais_no_periodo_custeio) :'-'}{execucaoFinanceira.receitas_totais_no_periodo_capital ? valorTemplate(execucaoFinanceira.receitas_totais_no_periodo_capital) :'-'}{execucaoFinanceira.receitas_totais_no_periodo_livre ? valorTemplate(execucaoFinanceira.receitas_totais_no_periodo_livre) :'-'}{execucaoFinanceira.receitas_totais_no_periodo_total ? valorTemplate(execucaoFinanceira.receitas_totais_no_periodo_total) :'-'}
Despesa realizada{execucaoFinanceira.despesas_no_periodo_custeio ? valorTemplate(execucaoFinanceira.despesas_no_periodo_custeio) :'-'}{execucaoFinanceira.despesas_no_periodo_capital ? valorTemplate(execucaoFinanceira.despesas_no_periodo_capital) :'-'}{execucaoFinanceira.despesas_no_periodo_livre ? valorTemplate(execucaoFinanceira.despesas_no_periodo_livre) :'-'}{execucaoFinanceira.despesas_no_periodo_total ? valorTemplate(execucaoFinanceira.despesas_no_periodo_total) :'-'}
Saldo reprogramado próximo período{execucaoFinanceira.saldo_reprogramado_proximo_periodo_custeio ? valorTemplate(execucaoFinanceira.saldo_reprogramado_proximo_periodo_custeio) :'-'}{execucaoFinanceira.saldo_reprogramado_proximo_periodo_capital ? valorTemplate(execucaoFinanceira.saldo_reprogramado_proximo_periodo_capital) :'-'}{execucaoFinanceira.saldo_reprogramado_proximo_periodo_livre ? valorTemplate(execucaoFinanceira.saldo_reprogramado_proximo_periodo_livre) :'-'}{execucaoFinanceira.saldo_reprogramado_proximo_periodo_total ? valorTemplate(execucaoFinanceira.saldo_reprogramado_proximo_periodo_total) :'-'}
Devolução para o tesouro---{execucaoFinanceira.devolucoes_ao_tesouro_no_periodo_total ? valorTemplate(execucaoFinanceira.devolucoes_ao_tesouro_no_periodo_total) :'-'}
+ } + + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js new file mode 100644 index 000000000..d98ec101c --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js @@ -0,0 +1,41 @@ +import React from "react"; + +export const TabelaExecucaoFisica = ({itensDashboard, retornaQtdePorStatus, retornaNaoApresentadas}) => { + return( + <> + {itensDashboard && +
+
+

Execução Física

+

Prestação de contas das Associações

+ + + + + + + + + + + + + + + + + + + + + + + + +
AprovadasAprovadas com ressalvasEm análiseNão apresentadasNão aprovadasDevidas (Não apresentadas + não aprovadas)Total
{retornaQtdePorStatus('APROVADA')}{retornaQtdePorStatus('APROVADA_RESSALVA')}{retornaQtdePorStatus('EM_ANALISE')}{retornaNaoApresentadas()}{retornaQtdePorStatus('REPROVADA')}{retornaNaoApresentadas() + retornaQtdePorStatus('REPROVADA')}{itensDashboard.total_associacoes_dre}
+
+
+ } + + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js new file mode 100644 index 000000000..9f25ca68b --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js @@ -0,0 +1,14 @@ +import React from "react"; + +export const TopoComBotoes = ({periodoNome, contaNome}) =>{ + return( + <> +
+

Período {periodoNome} | Conta {contaNome}

+
+ +
+
+ + ) +}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js new file mode 100644 index 000000000..15aad6091 --- /dev/null +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js @@ -0,0 +1,380 @@ +import React, {useEffect, useState, useCallback} from "react"; +import {useParams} from "react-router-dom"; +import {InfoAssociacoesEmAnalise} from "./InfoAssociacoesEmAnalise"; +import { + getItensDashboard, + getExecucaoFinanceira, + getDevolucoesContaPtrf, + getJustificativa, + postJustificativa, + patchJustificativa, + getDevolucoesAoTesouro, + putCriarEditarDeletarObservacaoDevolucaoContaPtrf, + putCriarEditarDeletarObservacaoDevolucaoTesouro, + getConsolidadoDre +} from "../../../../services/dres/RelatorioConsolidado.service"; +import {TopoComBotoes} from "./TopoComBotoes"; +import {BoxConsultarDados} from "./BoxConsultarDados"; +import {visoesService} from "../../../../services/visoes.service"; +import {TabelaExecucaoFinanceira} from "./TabelaExecucaoFinanceira"; +import {JustificativaDiferenca} from "./JustificativaDiferenca"; +import {TabelaDevolucoesContaPtrf} from "./TabelaDevolucoesContaPtrf"; +import {TabelaDevolucoesAoTesouro} from "./TabelaDevolucoesAoTesouro"; +import {TabelaExecucaoFisica} from "./TabelaExecucaoFisica"; +import {auxGetNomes} from "../auxGetNomes"; +import {ModalObservacoesRelatorioConsolidadoApuracao} from "../ModalObservacoesRelatorioConsolidadoApuracao"; +import {ModalSalvarJustificativa} from "../ModalSalvarJustificativa"; +import Loading from "../../../../utils/Loading"; + +export const RelatorioConsolidadoEmTela = () => { + + let {periodo_uuid, conta_uuid, ja_publicado, consolidado_dre_uuid} = useParams(); + + // Para bloquear as edições quando for de um Consolidado DRE incremental publicacoes_anteriores + // eslint-disable-next-line no-eval + const jaPublicado = eval(ja_publicado) + + const dre_uuid = visoesService.getItemUsuarioLogado('associacao_selecionada.uuid'); + + const initJustificativa = { + uuid: '', + dre: dre_uuid, + periodo: periodo_uuid, + tipo_conta: conta_uuid, + texto: '' + }; + + const [itensDashboard, setItensDashboard] = useState(false); + const [totalEmAnalise, setTotalEmAnalise] = useState(0); + const [periodoNome, setPeriodoNome] = useState(''); + const [contaNome, setContaNome] = useState(''); + const [execucaoFinanceira, setExecucaoFinanceira] = useState(false); + const [justificativaDiferenca, setJustificativaDiferenca] = useState(initJustificativa); + const [btnSalvarJustificativaDisable, setBtnSalvarJustificativaDisable] = useState(true); + const [showSalvarJustificativa, setShowSalvarJustificativa] = useState(false); + const [devolucoesContaPtrf, setDevolucoesContaPtrf] = useState(false); + const [devolucoesAoTesouro, setDevolucoesAoTesouro] = useState(false); + + const [observacao, setObservacao] = useState(false); + const [showModalObservacao, setShowModalObservacao] = useState(false); + const [loading, setLoading] = useState(false); + + // Consolidado DRE + const [consolidadoDre, setConsolidadoDre] = useState(false); + + useEffect(() => { + carregaItensDashboard(); + }, []); + + useEffect(() => { + carregaNomePeriodo(); + carregaNomeConta(); + retornaQtdeEmAnalise(); + carregaDevolucoesContaPtrf(); + carregaJustificativa(); + carregaDevolucoesAoTesouro(); + }, [itensDashboard]); + + // Consolidado DRE + const carregaConsolidadoDre = useCallback(async () => { + if (dre_uuid && periodo_uuid){ + try { + let consolidado_dre = await getConsolidadoDre(dre_uuid, periodo_uuid) + if (consolidado_dre && consolidado_dre.length > 0){ + setConsolidadoDre(consolidado_dre[0]) + }else { + setConsolidadoDre(false) + } + }catch (e) { + console.log("Erro ao buscar Consolidado Dre ", e) + } + } + }, [dre_uuid, periodo_uuid]) + + useEffect(() => { + carregaConsolidadoDre() + }, [carregaConsolidadoDre]) + + const carregaItensDashboard = async () => { + if (periodo_uuid) { + let itens = await getItensDashboard(periodo_uuid); + setItensDashboard(itens) + } + }; + + const carregaNomePeriodo = async () => { + if (periodo_uuid) { + let periodo_nome = await auxGetNomes.nomePeriodo(periodo_uuid); + setPeriodoNome(periodo_nome); + } + }; + + const carregaNomeConta = async () => { + let conta_nome = await auxGetNomes.nomeConta(conta_uuid); + setContaNome(conta_nome); + }; + + const carregaExecucaoFinanceira = useCallback( async () => { + try { + let execucao = await getExecucaoFinanceira(dre_uuid, periodo_uuid, consolidado_dre_uuid !== 'null' ? consolidado_dre_uuid : ''); + console.log("XXXXXXXXXXXXXXX getExecucaoFinanceira ", execucao) + setExecucaoFinanceira(execucao); + } catch (e) { + console.log("Erro ao carregar execução financeira ", e) + } + }, [dre_uuid, periodo_uuid, consolidado_dre_uuid]); + + useEffect(() => { + carregaExecucaoFinanceira(); + }, [carregaExecucaoFinanceira]); + + const carregaDevolucoesContaPtrf = async () => { + try { + let devolucoes = await getDevolucoesContaPtrf(dre_uuid, periodo_uuid, conta_uuid); + setDevolucoesContaPtrf(devolucoes); + } catch (e) { + console.log("Erro ao carregar Devolucoes a Conta Ptrf ", e); + } + }; + + const carregaDevolucoesAoTesouro = async () => { + try { + let devolucoes = await getDevolucoesAoTesouro(dre_uuid, periodo_uuid, conta_uuid); + setDevolucoesAoTesouro(devolucoes) + } catch (e) { + console.log("Erro ao carregar Devolucoes ao Tesouro ", e); + } + }; + + const carregaJustificativa = async () => { + try { + let justificativa = await getJustificativa(dre_uuid, periodo_uuid, conta_uuid); + if (justificativa && justificativa.length > 0) { + setJustificativaDiferenca(justificativa[0]) + } + } catch (e) { + console.log("Erro ao carregar justificativa ", e) + } + }; + + + const retornaQtdeEmAnalise = () => { + if (itensDashboard) { + let total = itensDashboard.cards.filter(elemtent => elemtent.status === 'RECEBIDA' || elemtent.status === 'DEVOLVIDA' || elemtent.status === 'EM_ANALISE').reduce((total, valor) => total + valor.quantidade_prestacoes, 0); + setTotalEmAnalise(total) + } + }; + + const valorTemplate = (valor) => { + let valor_formatado = Number(valor).toLocaleString('pt-BR', { + style: 'currency', + currency: 'BRL' + }); + valor_formatado = valor_formatado.replace(/R/, "").replace(/\$/, ""); + return valor_formatado + }; + + const comparaValores = () => { + if (execucaoFinanceira) { + return execucaoFinanceira.repasses_previstos_sme_custeio !== execucaoFinanceira.repasses_no_periodo_custeio || + execucaoFinanceira.repasses_previstos_sme_capital !== execucaoFinanceira.repasses_no_periodo_capital || + execucaoFinanceira.repasses_previstos_sme_livre !== execucaoFinanceira.repasses_no_periodo_livre || + execucaoFinanceira.repasses_previstos_sme_total !== execucaoFinanceira.repasses_no_periodo_total; + } + }; + + const onChangeJustificativaDiferenca = (justificativa_texto) => { + setBtnSalvarJustificativaDisable(false); + setJustificativaDiferenca({ + ...justificativaDiferenca, + texto: justificativa_texto + }) + }; + + const onSubmitJustificativaDiferenca = async () => { + if (justificativaDiferenca && justificativaDiferenca.uuid) { + let payload = { + texto: justificativaDiferenca.texto + }; + await patchJustificativa(justificativaDiferenca.uuid, payload) + setShowSalvarJustificativa(true); + setBtnSalvarJustificativaDisable(true); + } else { + delete justificativaDiferenca.uuid; + await postJustificativa(justificativaDiferenca) + setShowSalvarJustificativa(true); + setBtnSalvarJustificativaDisable(true); + } + }; + + const retornaQtdePorStatus = (status) => { + let item = itensDashboard.cards.find(element => element.status === status); + return item.quantidade_prestacoes; + }; + + const retornaNaoApresentadas = () => { + return itensDashboard.total_associacoes_dre - retornaQtdePorStatus('EM_ANALISE') - retornaQtdePorStatus('APROVADA') - retornaQtdePorStatus('APROVADA_RESSALVA') - retornaQtdePorStatus('REPROVADA'); + }; + + const onHandleClose = () => { + setShowModalObservacao(false); + }; + + const onHandleCloseSalvarJustificativa = () => { + setShowSalvarJustificativa(false); + } + + + // Observações + // Os métodos onClickObservacao, onChangeObservacao e serviceObservacao, servem tanto para devoluções a conta PTRF quanto devoluções ao tesouro + // É passado ao clicar nas respectivas tabelas os parâmetros tipo_devolucao:'devolucao_conta', tipo_devolucao:'devolucao_tesouro' e operacao:'salvar' e operacao:'deletar' + + const onClickObservacao = (devolucao) => { + setShowModalObservacao(true); + setObservacao(devolucao) + }; + + const onChangeObservacao = (valor) => { + setObservacao({ + ...observacao, + observacao: valor, + }) + }; + + const serviceObservacao = async (operacao) => { + setShowModalObservacao(false); + setLoading(true); + let payload; + + if (operacao.operacao === 'salvar') { + payload = { + observacao: observacao.observacao, + }; + } else if (operacao.operacao === 'deletar') { + payload = { + observacao: '', + }; + } + + if (observacao.tipo_devolucao === 'devolucao_conta') { + try { + await putCriarEditarDeletarObservacaoDevolucaoContaPtrf(dre_uuid, periodo_uuid, conta_uuid, observacao.tipo_uuid, payload); + await carregaDevolucoesContaPtrf(); + console.log("Operação de ", operacao.operacao, " Observação devolução a conta PTRF realizada com sucesso") + } catch (e) { + console.log("Erro ao ", operacao.operacao, "observação devolução a conta PTRF", e) + } + } else if (observacao.tipo_devolucao === 'devolucao_tesouro') { + try { + await putCriarEditarDeletarObservacaoDevolucaoTesouro(dre_uuid, periodo_uuid, conta_uuid, observacao.tipo_uuid, payload); + await carregaDevolucoesAoTesouro(); + console.log("Operação de ", operacao.operacao, " Observação devolução ao tesouro realizada com sucesso") + } catch (e) { + console.log("Erro ao ", operacao.operacao, "observação devolução ao Tesouro ", e) + } + } + setLoading(false); + }; + + const publicado = () => { + if(!consolidadoDre){ + return false; + } + else if(consolidadoDre && consolidadoDre.versao === "PREVIA"){ + return false; + } + else if(consolidadoDre && consolidadoDre.versao === "FINAL"){ + return true; + } + + return false; + } + + return ( + <> + +
+ {loading ? ( +
+ +
+ ) : + <> +
+

Em tela...

+ + + + + + + + +
+
+ +
+ +
+ +
+ + + } + +
+ + + + ) +}; \ No newline at end of file diff --git a/src/rotas/index.js b/src/rotas/index.js index feaafaa6b..1eaf6ffdd 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -50,6 +50,7 @@ import {DetalhePrestacaoDeContas} from "../componentes/dres/PrestacaoDeContas/De import {DetalhePrestacaoDeContasNaoApresentada} from "../componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContasNaoApresentada"; import RelatorioConsolidado from "../componentes/dres/RelatorioConsolidado"; import {RelatorioConsolidadoApuracao} from "../componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao"; +import {RelatorioConsolidadoEmTela} from "../componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela"; import {RelatorioConsolidadoDadosDasUes} from "../componentes/dres/RelatorioConsolidado/RelatorioConsolidadoDadosDasUes"; import {PainelParametrizacoesPage} from "../paginas/SME/Parametrizacoes/PainelParametrizacoes"; import {AcompanhamentoPcsSmePage} from "../paginas/SME/AcompanhamentoPcsSme"; @@ -345,6 +346,12 @@ const routesConfig = [ component: RelatorioConsolidadoApuracao, permissoes: ['access_relatorio_consolidado_dre'], }, + { + exact: true, + path: "/dre-relatorio-consolidado-em-tela/:periodo_uuid/:conta_uuid/:ja_publicado?/:consolidado_dre_uuid?", + component: RelatorioConsolidadoEmTela, + permissoes: ['access_relatorio_consolidado_dre'], + }, { exact: true, path: "/dre-relatorio-consolidado-dados-das-ues/:periodo_uuid/:conta_uuid/:ja_publicado?", From 0b28b2b739218644b85fa627ac824bc811f5e273 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Tue, 9 Aug 2022 11:35:18 -0300 Subject: [PATCH 81/98] =?UTF-8?q?feat(70107):=20Remove=20componentes=20n?= =?UTF-8?q?=C3=A3o=20usados=20em=20RelatorioConsolidadoEmTela?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove componentes e chamadas não usadas no componente RelatorioConsolidadoEmTela. --- .../BoxConsultarDados.js | 36 ---- .../InfoAssociacoesEmAnalise.js | 23 --- .../TabelaDevolucoesAoTesouro.js | 56 ------ .../TabelaDevolucoesContaPtrf.js | 56 ------ .../TabelaExecucaoFisica.js | 41 ----- .../TopoComBotoes.js | 4 +- .../RelatorioConsolidadoEmTela/index.js | 167 +----------------- 7 files changed, 4 insertions(+), 379 deletions(-) delete mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/BoxConsultarDados.js delete mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js delete mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js delete mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js delete mode 100644 src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/BoxConsultarDados.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/BoxConsultarDados.js deleted file mode 100644 index 392cc8448..000000000 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/BoxConsultarDados.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from "react"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; -import {faArrowRight} from "@fortawesome/free-solid-svg-icons"; - -export const BoxConsultarDados = ({periodo_uuid, conta_uuid, jaPublicado}) =>{ - - const onClickConsultar = ()=>{ - window.location.assign(`/dre-relatorio-consolidado-dados-das-ues/${periodo_uuid}/${conta_uuid}/${jaPublicado}`) - }; - - return( - <> -
-
-
-
-
Consulte os dados de todas as unidades educacionais
-
-
- -
-
-
-
- - ) -}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js deleted file mode 100644 index e9ecfd64b..000000000 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/InfoAssociacoesEmAnalise.js +++ /dev/null @@ -1,23 +0,0 @@ -import React from "react"; - -export const InfoAssociacoesEmAnalise = ({totalEmAnalise, periodoUuid}) =>{ - return( - <> - {totalEmAnalise > 0 && -
-
-
Associações com pendências nas prestações de contas
-
-
-

{totalEmAnalise === 1 ? 'Existe ' + totalEmAnalise + ' associação ': 'Existem ' + totalEmAnalise + ' associações '} ainda em análise nas prestações de contas

-
-
- -
-
-
-
- } - - ) -}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js deleted file mode 100644 index 18e90f191..000000000 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesAoTesouro.js +++ /dev/null @@ -1,56 +0,0 @@ -import React from "react"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; -import {faHandHoldingUsd, faPlus, faEdit} from "@fortawesome/free-solid-svg-icons"; - -export const TabelaDevolucoesAoTesouro = ({devolucoesAoTesouro, valorTemplate, onClickObservacao}) => { - return( - <> -
-
-

- - Devoluções ao tesouro -

- {devolucoesAoTesouro && devolucoesAoTesouro.length > 0 ? ( - - - - - - - - - - - {devolucoesAoTesouro.map((devolucao, index)=> - - - - - - - )} - -
Tipo de devolução ao tesouroNúmero de ocorrênciasValorObservações da DRE
{devolucao.tipo_nome}{devolucao.ocorrencias}{devolucao.valor ? valorTemplate(devolucao.valor) : '-'} - -
- ) : -

Não existem devoluções a serem exibidas

- } -
-
- - ) -}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js deleted file mode 100644 index 4ba19cace..000000000 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaDevolucoesContaPtrf.js +++ /dev/null @@ -1,56 +0,0 @@ -import React from "react"; -import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; -import {faWallet, faPlus, faEdit} from "@fortawesome/free-solid-svg-icons"; - -export const TabelaDevolucoesContaPtrf = ({devolucoesContaPtrf, valorTemplate, onClickObservacao}) => { - return( - <> -
-
-

- - Devoluções a conta PTRF -

- {devolucoesContaPtrf && devolucoesContaPtrf.length > 0 ? ( - - - - - - - - - - - {devolucoesContaPtrf.map((devolucao, index)=> - - - - - - - )} - -
Tipo de devolução a conta PTRFNúmero de ocorrênciasValorObservações da DRE
{devolucao.tipo_nome}{devolucao.ocorrencias}{devolucao.valor ? valorTemplate(devolucao.valor) : '-'} - -
- ) : -

Não existem devoluções a serem exibidas

- } -
-
- - ) -}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js deleted file mode 100644 index d98ec101c..000000000 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFisica.js +++ /dev/null @@ -1,41 +0,0 @@ -import React from "react"; - -export const TabelaExecucaoFisica = ({itensDashboard, retornaQtdePorStatus, retornaNaoApresentadas}) => { - return( - <> - {itensDashboard && -
-
-

Execução Física

-

Prestação de contas das Associações

- - - - - - - - - - - - - - - - - - - - - - - - -
AprovadasAprovadas com ressalvasEm análiseNão apresentadasNão aprovadasDevidas (Não apresentadas + não aprovadas)Total
{retornaQtdePorStatus('APROVADA')}{retornaQtdePorStatus('APROVADA_RESSALVA')}{retornaQtdePorStatus('EM_ANALISE')}{retornaNaoApresentadas()}{retornaQtdePorStatus('REPROVADA')}{retornaNaoApresentadas() + retornaQtdePorStatus('REPROVADA')}{itensDashboard.total_associacoes_dre}
-
-
- } - - ) -}; \ No newline at end of file diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js index 9f25ca68b..b3ea2f731 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js @@ -1,10 +1,10 @@ import React from "react"; -export const TopoComBotoes = ({periodoNome, contaNome}) =>{ +export const TopoComBotoes = ({periodoNome}) =>{ return( <>
-

Período {periodoNome} | Conta {contaNome}

+

Período {periodoNome}

diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js index 15aad6091..a51382f75 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js @@ -1,28 +1,17 @@ import React, {useEffect, useState, useCallback} from "react"; import {useParams} from "react-router-dom"; -import {InfoAssociacoesEmAnalise} from "./InfoAssociacoesEmAnalise"; import { - getItensDashboard, getExecucaoFinanceira, - getDevolucoesContaPtrf, getJustificativa, postJustificativa, patchJustificativa, - getDevolucoesAoTesouro, - putCriarEditarDeletarObservacaoDevolucaoContaPtrf, - putCriarEditarDeletarObservacaoDevolucaoTesouro, getConsolidadoDre } from "../../../../services/dres/RelatorioConsolidado.service"; import {TopoComBotoes} from "./TopoComBotoes"; -import {BoxConsultarDados} from "./BoxConsultarDados"; import {visoesService} from "../../../../services/visoes.service"; import {TabelaExecucaoFinanceira} from "./TabelaExecucaoFinanceira"; import {JustificativaDiferenca} from "./JustificativaDiferenca"; -import {TabelaDevolucoesContaPtrf} from "./TabelaDevolucoesContaPtrf"; -import {TabelaDevolucoesAoTesouro} from "./TabelaDevolucoesAoTesouro"; -import {TabelaExecucaoFisica} from "./TabelaExecucaoFisica"; import {auxGetNomes} from "../auxGetNomes"; -import {ModalObservacoesRelatorioConsolidadoApuracao} from "../ModalObservacoesRelatorioConsolidadoApuracao"; import {ModalSalvarJustificativa} from "../ModalSalvarJustificativa"; import Loading from "../../../../utils/Loading"; @@ -44,36 +33,20 @@ export const RelatorioConsolidadoEmTela = () => { texto: '' }; - const [itensDashboard, setItensDashboard] = useState(false); - const [totalEmAnalise, setTotalEmAnalise] = useState(0); const [periodoNome, setPeriodoNome] = useState(''); - const [contaNome, setContaNome] = useState(''); const [execucaoFinanceira, setExecucaoFinanceira] = useState(false); const [justificativaDiferenca, setJustificativaDiferenca] = useState(initJustificativa); const [btnSalvarJustificativaDisable, setBtnSalvarJustificativaDisable] = useState(true); const [showSalvarJustificativa, setShowSalvarJustificativa] = useState(false); - const [devolucoesContaPtrf, setDevolucoesContaPtrf] = useState(false); - const [devolucoesAoTesouro, setDevolucoesAoTesouro] = useState(false); - - const [observacao, setObservacao] = useState(false); - const [showModalObservacao, setShowModalObservacao] = useState(false); const [loading, setLoading] = useState(false); // Consolidado DRE const [consolidadoDre, setConsolidadoDre] = useState(false); - useEffect(() => { - carregaItensDashboard(); - }, []); - useEffect(() => { carregaNomePeriodo(); - carregaNomeConta(); - retornaQtdeEmAnalise(); - carregaDevolucoesContaPtrf(); carregaJustificativa(); - carregaDevolucoesAoTesouro(); - }, [itensDashboard]); + }, []); // Consolidado DRE const carregaConsolidadoDre = useCallback(async () => { @@ -95,12 +68,6 @@ export const RelatorioConsolidadoEmTela = () => { carregaConsolidadoDre() }, [carregaConsolidadoDre]) - const carregaItensDashboard = async () => { - if (periodo_uuid) { - let itens = await getItensDashboard(periodo_uuid); - setItensDashboard(itens) - } - }; const carregaNomePeriodo = async () => { if (periodo_uuid) { @@ -109,11 +76,6 @@ export const RelatorioConsolidadoEmTela = () => { } }; - const carregaNomeConta = async () => { - let conta_nome = await auxGetNomes.nomeConta(conta_uuid); - setContaNome(conta_nome); - }; - const carregaExecucaoFinanceira = useCallback( async () => { try { let execucao = await getExecucaoFinanceira(dre_uuid, periodo_uuid, consolidado_dre_uuid !== 'null' ? consolidado_dre_uuid : ''); @@ -128,23 +90,6 @@ export const RelatorioConsolidadoEmTela = () => { carregaExecucaoFinanceira(); }, [carregaExecucaoFinanceira]); - const carregaDevolucoesContaPtrf = async () => { - try { - let devolucoes = await getDevolucoesContaPtrf(dre_uuid, periodo_uuid, conta_uuid); - setDevolucoesContaPtrf(devolucoes); - } catch (e) { - console.log("Erro ao carregar Devolucoes a Conta Ptrf ", e); - } - }; - - const carregaDevolucoesAoTesouro = async () => { - try { - let devolucoes = await getDevolucoesAoTesouro(dre_uuid, periodo_uuid, conta_uuid); - setDevolucoesAoTesouro(devolucoes) - } catch (e) { - console.log("Erro ao carregar Devolucoes ao Tesouro ", e); - } - }; const carregaJustificativa = async () => { try { @@ -157,14 +102,6 @@ export const RelatorioConsolidadoEmTela = () => { } }; - - const retornaQtdeEmAnalise = () => { - if (itensDashboard) { - let total = itensDashboard.cards.filter(elemtent => elemtent.status === 'RECEBIDA' || elemtent.status === 'DEVOLVIDA' || elemtent.status === 'EM_ANALISE').reduce((total, valor) => total + valor.quantidade_prestacoes, 0); - setTotalEmAnalise(total) - } - }; - const valorTemplate = (valor) => { let valor_formatado = Number(valor).toLocaleString('pt-BR', { style: 'currency', @@ -207,75 +144,11 @@ export const RelatorioConsolidadoEmTela = () => { } }; - const retornaQtdePorStatus = (status) => { - let item = itensDashboard.cards.find(element => element.status === status); - return item.quantidade_prestacoes; - }; - - const retornaNaoApresentadas = () => { - return itensDashboard.total_associacoes_dre - retornaQtdePorStatus('EM_ANALISE') - retornaQtdePorStatus('APROVADA') - retornaQtdePorStatus('APROVADA_RESSALVA') - retornaQtdePorStatus('REPROVADA'); - }; - - const onHandleClose = () => { - setShowModalObservacao(false); - }; const onHandleCloseSalvarJustificativa = () => { setShowSalvarJustificativa(false); } - - // Observações - // Os métodos onClickObservacao, onChangeObservacao e serviceObservacao, servem tanto para devoluções a conta PTRF quanto devoluções ao tesouro - // É passado ao clicar nas respectivas tabelas os parâmetros tipo_devolucao:'devolucao_conta', tipo_devolucao:'devolucao_tesouro' e operacao:'salvar' e operacao:'deletar' - - const onClickObservacao = (devolucao) => { - setShowModalObservacao(true); - setObservacao(devolucao) - }; - - const onChangeObservacao = (valor) => { - setObservacao({ - ...observacao, - observacao: valor, - }) - }; - - const serviceObservacao = async (operacao) => { - setShowModalObservacao(false); - setLoading(true); - let payload; - - if (operacao.operacao === 'salvar') { - payload = { - observacao: observacao.observacao, - }; - } else if (operacao.operacao === 'deletar') { - payload = { - observacao: '', - }; - } - - if (observacao.tipo_devolucao === 'devolucao_conta') { - try { - await putCriarEditarDeletarObservacaoDevolucaoContaPtrf(dre_uuid, periodo_uuid, conta_uuid, observacao.tipo_uuid, payload); - await carregaDevolucoesContaPtrf(); - console.log("Operação de ", operacao.operacao, " Observação devolução a conta PTRF realizada com sucesso") - } catch (e) { - console.log("Erro ao ", operacao.operacao, "observação devolução a conta PTRF", e) - } - } else if (observacao.tipo_devolucao === 'devolucao_tesouro') { - try { - await putCriarEditarDeletarObservacaoDevolucaoTesouro(dre_uuid, periodo_uuid, conta_uuid, observacao.tipo_uuid, payload); - await carregaDevolucoesAoTesouro(); - console.log("Operação de ", operacao.operacao, " Observação devolução ao tesouro realizada com sucesso") - } catch (e) { - console.log("Erro ao ", operacao.operacao, "observação devolução ao Tesouro ", e) - } - } - setLoading(false); - }; - const publicado = () => { if(!consolidadoDre){ return false; @@ -306,19 +179,9 @@ export const RelatorioConsolidadoEmTela = () => { ) : <>
-

Em tela...

+

Novo

- - { setBtnSalvarJustificativaDisable={setBtnSalvarJustificativaDisable} jaPublicado={jaPublicado} /> - - -
-
- -
-
Date: Tue, 9 Aug 2022 13:23:32 -0300 Subject: [PATCH 82/98] =?UTF-8?q?feat(70107):=20Inclui=20informa=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20pr=C3=A9via=20em=20RelatorioConsolidadoEmTela?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adiciona informação se trata-se de uma prévia no cabeçalho do RelatorioConsolidadoEmTela. --- .../TopoComBotoes.js | 6 ++-- .../RelatorioConsolidadoEmTela/index.js | 29 ++++++++++++------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js index b3ea2f731..caf1b6e8c 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TopoComBotoes.js @@ -1,10 +1,12 @@ import React from "react"; -export const TopoComBotoes = ({periodoNome}) =>{ +export const TopoComBotoes = ({periodoNome, ePrevia}) =>{ + const textoVersao = ePrevia ? '(Prévia)': '' + return( <>
-

Período {periodoNome}

+

Período: {periodoNome} {textoVersao}

diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js index a51382f75..2f0a9d630 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js @@ -39,6 +39,8 @@ export const RelatorioConsolidadoEmTela = () => { const [btnSalvarJustificativaDisable, setBtnSalvarJustificativaDisable] = useState(true); const [showSalvarJustificativa, setShowSalvarJustificativa] = useState(false); const [loading, setLoading] = useState(false); + const [ePrevia, setEPrevia] = useState(true); + // Consolidado DRE const [consolidadoDre, setConsolidadoDre] = useState(false); @@ -48,11 +50,21 @@ export const RelatorioConsolidadoEmTela = () => { carregaJustificativa(); }, []); + useEffect( () => { + if(!consolidadoDre || consolidadoDre.versao === 'PREVIA'){ + setEPrevia(true); + } + else { + setEPrevia(false); + } + }, [consolidadoDre]) + // Consolidado DRE const carregaConsolidadoDre = useCallback(async () => { if (dre_uuid && periodo_uuid){ try { let consolidado_dre = await getConsolidadoDre(dre_uuid, periodo_uuid) + console.log('Consolidado DRE:', consolidado_dre) if (consolidado_dre && consolidado_dre.length > 0){ setConsolidadoDre(consolidado_dre[0]) }else { @@ -79,7 +91,7 @@ export const RelatorioConsolidadoEmTela = () => { const carregaExecucaoFinanceira = useCallback( async () => { try { let execucao = await getExecucaoFinanceira(dre_uuid, periodo_uuid, consolidado_dre_uuid !== 'null' ? consolidado_dre_uuid : ''); - console.log("XXXXXXXXXXXXXXX getExecucaoFinanceira ", execucao) + console.log("Execução Financeira:", execucao) setExecucaoFinanceira(execucao); } catch (e) { console.log("Erro ao carregar execução financeira ", e) @@ -149,18 +161,13 @@ export const RelatorioConsolidadoEmTela = () => { setShowSalvarJustificativa(false); } - const publicado = () => { + const versaoConsolidadoDRE = () => { if(!consolidadoDre){ - return false; - } - else if(consolidadoDre && consolidadoDre.versao === "PREVIA"){ - return false; + return "PREVIA"; } - else if(consolidadoDre && consolidadoDre.versao === "FINAL"){ - return true; + else { + return consolidadoDre.versao; } - - return false; } return ( @@ -179,9 +186,9 @@ export const RelatorioConsolidadoEmTela = () => { ) : <>
-

Novo

Date: Tue, 9 Aug 2022 15:14:01 -0300 Subject: [PATCH 83/98] =?UTF-8?q?feat(70107):=20Inclui=20informa=C3=A7?= =?UTF-8?q?=C3=A3o=20financeiro=20por=20conta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adiciona informação financeira por conta no RelatorioConsolidadoEmTela. --- .../TabelaExecucaoFinanceira.js | 16 +++--- .../RelatorioConsolidadoEmTela/index.js | 49 +++++++------------ 2 files changed, 27 insertions(+), 38 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js index 847ad89b8..c83a5e651 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/TabelaExecucaoFinanceira.js @@ -1,19 +1,19 @@ import React from "react"; -export const TabelaExecucaoFinanceira = ({execucaoFinanceira, valorTemplate, comparaValores}) =>{ +export const TabelaExecucaoFinanceira = ({execucaoFinanceira, valorTemplate, comparaValores, tipoConta}) =>{ return( <> -
Execução Financeira
+
Execução Financeira - Conta {tipoConta}
{execucaoFinanceira && Object.entries(execucaoFinanceira).length > 0 && - - - - - + + + + + @@ -24,7 +24,7 @@ export const TabelaExecucaoFinanceira = ({execucaoFinanceira, valorTemplate, com - {comparaValores() && + {comparaValores(execucaoFinanceira) && <> diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js index 2f0a9d630..eb3edbb3b 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js @@ -40,9 +40,6 @@ export const RelatorioConsolidadoEmTela = () => { const [showSalvarJustificativa, setShowSalvarJustificativa] = useState(false); const [loading, setLoading] = useState(false); const [ePrevia, setEPrevia] = useState(true); - - - // Consolidado DRE const [consolidadoDre, setConsolidadoDre] = useState(false); useEffect(() => { @@ -50,15 +47,12 @@ export const RelatorioConsolidadoEmTela = () => { carregaJustificativa(); }, []); + useEffect( () => { - if(!consolidadoDre || consolidadoDre.versao === 'PREVIA'){ - setEPrevia(true); - } - else { - setEPrevia(false); - } + setEPrevia(!consolidadoDre || consolidadoDre.versao === 'PREVIA') }, [consolidadoDre]) + // Consolidado DRE const carregaConsolidadoDre = useCallback(async () => { if (dre_uuid && periodo_uuid){ @@ -123,12 +117,12 @@ export const RelatorioConsolidadoEmTela = () => { return valor_formatado }; - const comparaValores = () => { - if (execucaoFinanceira) { - return execucaoFinanceira.repasses_previstos_sme_custeio !== execucaoFinanceira.repasses_no_periodo_custeio || - execucaoFinanceira.repasses_previstos_sme_capital !== execucaoFinanceira.repasses_no_periodo_capital || - execucaoFinanceira.repasses_previstos_sme_livre !== execucaoFinanceira.repasses_no_periodo_livre || - execucaoFinanceira.repasses_previstos_sme_total !== execucaoFinanceira.repasses_no_periodo_total; + const comparaValores = (execucaoFinanceiraConta) => { + if (execucaoFinanceiraConta) { + return execucaoFinanceiraConta.repasses_previstos_sme_custeio !== execucaoFinanceiraConta.repasses_no_periodo_custeio || + execucaoFinanceiraConta.repasses_previstos_sme_capital !== execucaoFinanceiraConta.repasses_no_periodo_capital || + execucaoFinanceiraConta.repasses_previstos_sme_livre !== execucaoFinanceiraConta.repasses_no_periodo_livre || + execucaoFinanceiraConta.repasses_previstos_sme_total !== execucaoFinanceiraConta.repasses_no_periodo_total; } }; @@ -156,20 +150,10 @@ export const RelatorioConsolidadoEmTela = () => { } }; - const onHandleCloseSalvarJustificativa = () => { setShowSalvarJustificativa(false); } - const versaoConsolidadoDRE = () => { - if(!consolidadoDre){ - return "PREVIA"; - } - else { - return consolidadoDre.versao; - } - } - return ( <> @@ -190,11 +174,16 @@ export const RelatorioConsolidadoEmTela = () => { periodoNome={periodoNome} ePrevia={ePrevia} /> - + {execucaoFinanceira && execucaoFinanceira.por_tipo_de_conta.map((valoresConta) => { + return + })} + Date: Wed, 10 Aug 2022 15:07:18 -0300 Subject: [PATCH 84/98] feat(70472)-parte-dois: Valores reprogramados ajustes diversos Ajustes diversos em valores reprogramados --- .../ValoresReprogramados/BarraStatus.js | 7 +- .../Globais/ValoresReprogramados/Botoes.js | 4 +- .../Globais/ValoresReprogramados/Cabecalho.js | 13 ++ .../TextoExplicativoDaPagina.js | 9 ++ .../ValoresReprogramadosFormFormik.js | 46 ++++--- .../Globais/ValoresReprogramados/index.js | 114 ++++++++++++++---- .../valores-reprogramados.scss | 16 ++- .../dres/ValoresReprogramadosDre/index.js | 7 +- src/services/ValoresReprogramados.service.js | 8 ++ src/utils/Modais.js | 17 +++ 10 files changed, 180 insertions(+), 61 deletions(-) create mode 100644 src/componentes/Globais/ValoresReprogramados/Cabecalho.js create mode 100644 src/componentes/Globais/ValoresReprogramados/TextoExplicativoDaPagina.js diff --git a/src/componentes/Globais/ValoresReprogramados/BarraStatus.js b/src/componentes/Globais/ValoresReprogramados/BarraStatus.js index 87d15a291..0ea0bb065 100644 --- a/src/componentes/Globais/ValoresReprogramados/BarraStatus.js +++ b/src/componentes/Globais/ValoresReprogramados/BarraStatus.js @@ -2,11 +2,8 @@ import React from "react"; export const BarraStatus = ({statusValoresReprogramados, defineCorBarraStatus}) => { return ( -
-
-

{statusValoresReprogramados.texto}

-
- +
+

{statusValoresReprogramados.texto}

) } \ No newline at end of file diff --git a/src/componentes/Globais/ValoresReprogramados/Botoes.js b/src/componentes/Globais/ValoresReprogramados/Botoes.js index ab333ddcc..0dbb9a4ba 100644 --- a/src/componentes/Globais/ValoresReprogramados/Botoes.js +++ b/src/componentes/Globais/ValoresReprogramados/Botoes.js @@ -1,6 +1,6 @@ import React from "react"; -export const Botoes = ({handleSalvarValoresReprogramados, handleConcluirValoresReprogramados, handleVoltar, permiteSalvarOuConcluir}) => { +export const Botoes = ({handleSalvarValoresReprogramados, handleOnClickConcluirValoresReprogramados, handleVoltar, permiteSalvarOuConcluir}) => { return( <>
@@ -25,7 +25,7 @@ export const Botoes = ({handleSalvarValoresReprogramados, handleConcluirValoresR
Tipo de recursoCusteioCapitalLivre AplicaçãoTotal (R$)Tipo de recursoCusteioCapitalLivre AplicaçãoTotal (R$)
{execucaoFinanceira.saldo_reprogramado_periodo_anterior_livre ? valorTemplate(execucaoFinanceira.saldo_reprogramado_periodo_anterior_livre) :'-'} {execucaoFinanceira.saldo_reprogramado_periodo_anterior_total ? valorTemplate(execucaoFinanceira.saldo_reprogramado_periodo_anterior_total) :'-'}
Previsto Secretaria Municipal de Educação
@@ -96,10 +96,6 @@ export const ValoresReprogramadosFormFormik = ({
- {(acao.custeio.status_conferencia === "correto" || acao.custeio.status_conferencia === "incorreto") && - {acao.custeio.status_conferencia === "correto" ? "Correto" : "Corrigir para:"} - } - + + {(acao.custeio.status_conferencia === "correto" || acao.custeio.status_conferencia === "incorreto") && +
+ {acao.custeio.status_conferencia === "correto" ? "Correto" : "Corrigir valor"} +
+ } - {!acao.custeio.status_conferencia && visao_selecionada === "DRE" && + {!acao.custeio.status_conferencia && visao_selecionada === "DRE" && editavelDRE() &&
- {(acao.capital.status_conferencia === "correto" || acao.capital.status_conferencia === "incorreto") && - {acao.capital.status_conferencia === "correto" ? "Correto" : "Corrigir para:"} - } - - {!acao.capital.status_conferencia && visao_selecionada === "DRE" && + {(acao.capital.status_conferencia === "correto" || acao.capital.status_conferencia === "incorreto") && +
+ {acao.capital.status_conferencia === "correto" ? "Correto" : "Corrigir valor"} +
+ } + + {!acao.capital.status_conferencia && visao_selecionada === "DRE" && editavelDRE() &&
- {(acao.livre.status_conferencia === "correto" || acao.livre.status_conferencia === "incorreto") && - {acao.livre.status_conferencia === "correto" ? "Correto" : "Corrigir para:"} - } - - {!acao.livre.status_conferencia && visao_selecionada === "DRE" && + {(acao.livre.status_conferencia === "correto" || acao.livre.status_conferencia === "incorreto") && +
+ {acao.livre.status_conferencia === "correto" ? "Correto" : "Corrigir valor"} +
+ } + + {!acao.livre.status_conferencia && visao_selecionada === "DRE" && editavelDRE() &&
diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js index 9ce227db0..b4cf73604 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/index.js @@ -193,6 +193,7 @@ export const RelatorioConsolidadoEmTela = () => { {execucaoFinanceira && execucaoFinanceira.por_tipo_de_conta.map((execucaoFinanceiraConta) => { return
From 03e1d36800cdf0462669dc590f36861ae08ae9d5 Mon Sep 17 00:00:00 2001 From: Alessandro Fernandes Date: Thu, 11 Aug 2022 11:54:34 -0300 Subject: [PATCH 87/98] =?UTF-8?q?feat(70107):=20Implementa=20verifica?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20apenas=20leitura?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implementa verificação de apenas leitura na digitação de justificativas do relatório em tela. --- .../RelatorioConsolidadoEmTela/JustificativaDiferenca.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js index f4dbf8f7b..9b246eb8f 100644 --- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js +++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoEmTela/JustificativaDiferenca.js @@ -18,8 +18,11 @@ export const JustificativaDiferenca = ({execucaoFinanceira, comparaValores, just

Justificativa da diferença entre o valor previsto pela SME e o transferido pela DRE no período