From 9f5e0fa5e38866dac02bb102e625d3bec4b40a61 Mon Sep 17 00:00:00 2001 From: Matheus de Castro Diori <44413101+mdiori@users.noreply.github.com> Date: Fri, 28 Jul 2023 08:23:32 -0300 Subject: [PATCH 1/6] =?UTF-8?q?feat(87224):=20Parametriza=C3=A7=C3=A3o=20d?= =?UTF-8?q?os=20motivos=20de=20rejei=C3=A7=C3=A3o=20do=20encerramento=20de?= =?UTF-8?q?=20conta=20(#1842)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(87224): Adiciona parametrizacao motivos rejeicao encerramento conta * feat(87224): Adiciona a posibilidade de gerar uma nova solicitacao encerramento --------- Co-authored-by: Matheus --- .../Associacao/DadosDasContas/index.js | 22 +++- .../sme/PainelParametrizacoes/index.js | 6 + .../YupSchemaMotivosRejeicao.js | 5 + .../components/ExibicaoQuantidade.js | 18 +++ .../components/Filtros.js | 65 ++++++++++ .../components/Lista.js | 121 ++++++++++++++++++ .../components/ModalConfirmacaoExclusao.js | 27 ++++ .../components/ModalForm.js | 112 ++++++++++++++++ .../components/Paginacao.js | 34 +++++ .../components/TopoComBotoes.js | 27 ++++ .../context/MotivosRejeicao.js | 75 +++++++++++ .../hooks/useDeleteMotivoRejeicao.js | 33 +++++ .../hooks/useGetMotivosRejeicao.js | 25 ++++ .../hooks/usePatchMotivoRejeicao.js | 33 +++++ .../hooks/usePostMotivoRejeicao.js | 31 +++++ .../MotivosRejeicaoEncerramentoConta/index.js | 27 ++++ .../motivosRejeicao.scss | 4 + src/rotas/index.js | 7 + ...otivosRejeicaoEncerramentoConta.service.js | 40 ++++++ src/services/escolas/Associacao.service.js | 4 + 20 files changed, 710 insertions(+), 6 deletions(-) create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/YupSchemaMotivosRejeicao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ExibicaoQuantidade.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Filtros.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Lista.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalConfirmacaoExclusao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalForm.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Paginacao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/TopoComBotoes.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/context/MotivosRejeicao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useDeleteMotivoRejeicao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useGetMotivosRejeicao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePatchMotivoRejeicao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePostMotivoRejeicao.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/index.js create mode 100644 src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/motivosRejeicao.scss create mode 100644 src/services/MotivosRejeicaoEncerramentoConta.service.js diff --git a/src/componentes/escolas/Associacao/DadosDasContas/index.js b/src/componentes/escolas/Associacao/DadosDasContas/index.js index 1ef5789e6..8b4beaa8a 100644 --- a/src/componentes/escolas/Associacao/DadosDasContas/index.js +++ b/src/componentes/escolas/Associacao/DadosDasContas/index.js @@ -3,7 +3,7 @@ import {useSelector, useDispatch} from "react-redux"; import {UrlsMenuInterno, retornaMenuAtualizadoPorStatusCadastro} from "../UrlsMenuInterno"; import Loading from "../../../../utils/Loading"; import {MenuInterno} from "../../../Globais/MenuInterno"; -import {getContas, salvarContas, getAssociacao, getStatusCadastroAssociacao, encerrarConta} from "../../../../services/escolas/Associacao.service"; +import {getContas, salvarContas, getAssociacao, getStatusCadastroAssociacao, encerrarConta, alterarSolicitacaoEncerramentoConta} from "../../../../services/escolas/Associacao.service"; import {FormDadosDasContas} from "./FormDadosDasContas"; import {ExportaDadosDaAsssociacao} from "../ExportaDadosAssociacao"; import { visoesService } from "../../../../services/visoes.service"; @@ -161,14 +161,24 @@ export const DadosDasContas = () => { const handleEncerrarTipoConta = async () => { let payload = { - "conta_associacao": modalEncerramentoData.conta_associacao, + "conta_associacao": modalEncerramentoData.conta_associacao.uuid, "data_de_encerramento_na_agencia": modalEncerramentoData.data_de_encerramento_na_agencia } setLoading(true); try { - await encerrarConta(payload); - toastCustom.ToastCustomSuccess('Solicitação de encerramento realizada com sucesso', 'A encerramento de conta foi enviado para a Dre e está no estado de pendente de aprovação.') + if(modalEncerramentoData.conta_associacao.solicitacao_encerramento !== null) { + const idSolicitacaoJaExistente = modalEncerramentoData.conta_associacao.solicitacao_encerramento.uuid; + + payload.status = "PENDENTE"; + + await alterarSolicitacaoEncerramentoConta(payload, idSolicitacaoJaExistente); + toastCustom.ToastCustomSuccess('Nova solicitação de encerramento realizada com sucesso', 'A solicitação de encerramento de conta foi enviado para a Dre e está no estado de pendente de aprovação.') + } else { + await encerrarConta(payload); + toastCustom.ToastCustomSuccess('Solicitação de encerramento realizada com sucesso', 'A solicitação de encerramento de conta foi enviado para a Dre e está no estado de pendente de aprovação.') + } + buscaContas(); } catch (error) { toastCustom.ToastCustomError('Erro ao tentar enviar a solicitação', 'Ocorreu um erro e a solicitação de encerramento não foi enviada para a Dre.') @@ -199,9 +209,9 @@ export const DadosDasContas = () => { const modalData = { "show": true, - "conta_associacao": conta.uuid, + "conta_associacao": conta, "data_de_encerramento_na_agencia": dataFormatada, - "index": index + "index": index, } return setModalEncerramentoData(modalData); diff --git a/src/componentes/sme/PainelParametrizacoes/index.js b/src/componentes/sme/PainelParametrizacoes/index.js index f7fa8aae9..42bb1126e 100644 --- a/src/componentes/sme/PainelParametrizacoes/index.js +++ b/src/componentes/sme/PainelParametrizacoes/index.js @@ -69,6 +69,12 @@ export const PainelParametrizacoes = () => { url: 'parametro-mandato', icone: IconeMandato, permissoes: ['access_painel_parametrizacoes'], + }, + { + parametro: 'Motivos Rejeição (encerramento conta)', + url: 'motivos-rejeicao', + icone: IconeTiposAcertos, + permissoes: ['access_painel_parametrizacoes'], } ]; diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/YupSchemaMotivosRejeicao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/YupSchemaMotivosRejeicao.js new file mode 100644 index 000000000..997e3a378 --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/YupSchemaMotivosRejeicao.js @@ -0,0 +1,5 @@ +import * as yup from "yup"; + +export const YupSchemaMotivosRejeicao = yup.object().shape({ + nome: yup.string().required("Motivo é obrigatório."), +}); \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ExibicaoQuantidade.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ExibicaoQuantidade.js new file mode 100644 index 000000000..79521da9d --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ExibicaoQuantidade.js @@ -0,0 +1,18 @@ +import React from "react"; +import { useGetMotivosRejeicao } from "../hooks/useGetMotivosRejeicao"; + + +export const ExibicaoQuantidade = () => { + + const {isLoading, totalMotivosRejeicao} = useGetMotivosRejeicao() + + return( + <> + {!isLoading && totalMotivosRejeicao ? ( +

Exibindo {totalMotivosRejeicao} motivos

+ ) : + null + } + + ) +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Filtros.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Filtros.js new file mode 100644 index 000000000..07a92dc83 --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Filtros.js @@ -0,0 +1,65 @@ +import React, {useContext, useState} from "react"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; + +export const Filtros = () => { + + const {setFilter, initialFilter, setCurrentPage, setFirstPage} = useContext(MotivosRejeicaoContext) + const [formFilter, setFormFilter] = useState(initialFilter); + + const handleChangeFormFilter = (name, value) => { + setFormFilter({ + ...formFilter, + [name]: value + }); + }; + + const handleSubmitFormFilter = () => { + setCurrentPage(1) + setFirstPage(0) + setFilter(formFilter); + }; + + const clearFilter = () => { + setCurrentPage(1) + setFirstPage(0) + setFormFilter(initialFilter); + setFilter(initialFilter); + }; + + return ( + <> +
+
+
+ + handleChangeFormFilter(e.target.name, e.target.value)} + name='nome' + id="nome" + type="text" + className="form-control" + placeholder='Busque por motivo' + /> +
+
+
+ +
+
+ +
+
+ + ) +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Lista.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Lista.js new file mode 100644 index 000000000..f430c198d --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Lista.js @@ -0,0 +1,121 @@ +import React, { useContext } from "react"; +import { Column } from "primereact/column"; +import { DataTable } from "primereact/datatable"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; +import { useGetMotivosRejeicao } from "../hooks/useGetMotivosRejeicao"; +import { usePostMotivoRejeicao } from "../hooks/usePostMotivoRejeicao"; +import { usePatchMotivoRejeicao } from "../hooks/usePatchMotivoRejeicao"; +import ReactTooltip from "react-tooltip"; +import { faEdit } from "@fortawesome/free-solid-svg-icons"; +import Loading from "../../../../../../utils/Loading"; +import {ModalForm} from "./ModalForm"; +import { ModalConfirmacaoExclusao } from "./ModalConfirmacaoExclusao"; +import { useDeleteMotivoRejeicao } from "../hooks/useDeleteMotivoRejeicao"; + +export const Lista = () => { + + const { setShowModalForm, stateFormModal, setStateFormModal, setBloquearBtnSalvarForm } = useContext(MotivosRejeicaoContext) + const { isLoading, data } = useGetMotivosRejeicao() + const { mutationPost } = usePostMotivoRejeicao() + const { mutationPatch } = usePatchMotivoRejeicao() + const { mutationDelete } = useDeleteMotivoRejeicao() + + // Necessária pela paginação + const {results} = data + const acoesTemplate = (rowData) => { + return ( +
+ +
+ ) + }; + + const handleEditFormModal = (rowData) => { + setStateFormModal({ + ...stateFormModal, + nome: rowData.nome, + uuid: rowData.uuid, + id: rowData.id, + }); + setShowModalForm(true) + }; + + const handleSubmitFormModal = async (values) => { + // Libera o botão somente após ter resolvido a mutation em usePostMotivoRejeicao e usePatchMotivoRejeicao + setBloquearBtnSalvarForm(true) + let payload = { + nome: values.nome, + }; + + if (!values.uuid) { + mutationPost.mutate({payload: payload}) + } else { + mutationPatch.mutate({uuidMotivoRejeicao: values.uuid, payload: payload}) + } + }; + + const handleExcluirMotivo = async (uuid) => { + if (!uuid) { + console.log("Erro ao tentar excluir o motivo.") + } else { + mutationDelete.mutate(uuid) + } + } + + if (isLoading) { + return ( + + ); + } + return ( + <> + {results && results.length > 0 ? ( +
+ + + + +
+ ) : +
+

Nenhum resultado encontrado.

+
+ } +
+ +
+
+ +
+ + ) +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalConfirmacaoExclusao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalConfirmacaoExclusao.js new file mode 100644 index 000000000..c436b2c7e --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalConfirmacaoExclusao.js @@ -0,0 +1,27 @@ +import React, { useContext } from "react"; +import { ModalBootstrap } from "../../../../../Globais/ModalBootstrap"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; + +export const ModalConfirmacaoExclusao = ({handleExcluirMotivo}) => { + + const {showModalConfirmacaoExclusao, setShowModalConfirmacaoExclusao, stateFormModal} = useContext(MotivosRejeicaoContext) + + return( + setShowModalConfirmacaoExclusao(false)} + primeiroBotaoTexto="Cancelar" + primeiroBotaoCss="outline-success" + segundoBotaoOnclick={()=> { + setShowModalConfirmacaoExclusao(false) + handleExcluirMotivo(stateFormModal.uuid) + }} + segundoBotaoCss="danger" + segundoBotaoTexto="Excluir" + /> + ) + +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalForm.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalForm.js new file mode 100644 index 000000000..5c0fbc353 --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/ModalForm.js @@ -0,0 +1,112 @@ +import React, { useContext } from "react"; +import { Formik } from "formik"; +import { YupSchemaMotivosRejeicao } from "../YupSchemaMotivosRejeicao"; +import { ModalFormBodyText } from "../../../../../Globais/ModalBootstrap"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; +import ReactTooltip from "react-tooltip"; + +export const ModalForm = ({handleSubmitFormModal}) => { + + const {showModalForm, setShowModalForm, stateFormModal, bloquearBtnSalvarForm, setShowModalConfirmacaoExclusao} = useContext(MotivosRejeicaoContext) + + const bodyTextarea = () => { + return ( + <> + + {props => { + const { + values, + setFieldValue, + } = props; + return( +
+
+
+

* Preenchimento obrigatório no cadastro e na edição do motivo

+
+ + + + + + + {props.touched.nome && props.errors.nome && {props.errors.nome}} +
+
+
+
+
+

UUID

+

{values.uuid}

+
+
+

ID

+

{values.id}

+
+
+ +
+
+ {values.uuid && + + } +
+
+ +
+ +
+ +
+
+
+ ); + }} +
+ + ) + } + + return ( + + ) + +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Paginacao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Paginacao.js new file mode 100644 index 000000000..74339b384 --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/Paginacao.js @@ -0,0 +1,34 @@ +import React, {useContext} from "react"; +import {Paginator} from 'primereact/paginator'; +import { useGetMotivosRejeicao } from "../hooks/useGetMotivosRejeicao"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; + + +export const Paginacao = () => { + const {isLoading, data, totalMotivosRejeicao} = useGetMotivosRejeicao() + const {count} = data + const {setCurrentPage, firstPage,setFirstPage} = useContext(MotivosRejeicaoContext) + + + const onPageChange = (event) => { + setCurrentPage(event.page + 1) + setFirstPage(event.first) + }; + + return ( + <> + {!isLoading && totalMotivosRejeicao ? ( + + ) : + null + } + + ) + +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/TopoComBotoes.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/TopoComBotoes.js new file mode 100644 index 000000000..02cffc0cc --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/components/TopoComBotoes.js @@ -0,0 +1,27 @@ +import React, {useContext} from "react"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; + +export const TopoComBotoes = () => { + + const {setShowModalForm, setStateFormModal, initialStateFormModal} = useContext(MotivosRejeicaoContext) + + return( +
+
+
Consulta dos motivos
+
+
+ +
+
+ ) + +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/context/MotivosRejeicao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/context/MotivosRejeicao.js new file mode 100644 index 000000000..0fb41cb58 --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/context/MotivosRejeicao.js @@ -0,0 +1,75 @@ +import React, { createContext, useMemo, useState } from 'react'; + +const initialFilter = { + nome: '', +}; +const initialStateFormModal = { + nome: '', + uuid:'', + id:'', +}; + +export const MotivosRejeicaoContext = createContext({ + initialFilter: initialFilter, + filter: initialFilter, + setFilter: () => {}, + + currentPage: 1, + setCurrentPage: () => {}, + firstPage: 0, + setFirstPage: () => {}, + + showModalForm: false, + setShowModalForm: () => {}, + stateFormModal: initialStateFormModal, + setStateFormModal: () => {}, + + showModalConfirmacaoExclusao: false, + setShowModalConfirmacaoExclusao: () => {}, + + bloquearBtnSalvarForm: '', + setBloquearBtnSalvarForm: () => {}, +}) + +export const MotivosRejeicaoProvider = ({children}) => { + + const [filter, setFilter] = useState(initialFilter); + + const [currentPage, setCurrentPage] = useState(1); + const [firstPage, setFirstPage] = useState(1); + + const [showModalForm, setShowModalForm] = useState(false); + const [stateFormModal, setStateFormModal] = useState(initialStateFormModal); + + const [showModalConfirmacaoExclusao, setShowModalConfirmacaoExclusao] = useState(false); + + const [bloquearBtnSalvarForm, setBloquearBtnSalvarForm] = useState(false); + + const contextValue = useMemo(() => { + return { + initialFilter, + filter, + setFilter, + currentPage, + setCurrentPage, + firstPage, + setFirstPage, + showModalForm, + setShowModalForm, + initialStateFormModal, + stateFormModal, + setStateFormModal, + showModalConfirmacaoExclusao, + setShowModalConfirmacaoExclusao, + bloquearBtnSalvarForm, + setBloquearBtnSalvarForm, + }; + }, [filter, currentPage, firstPage, showModalForm, stateFormModal, showModalConfirmacaoExclusao, bloquearBtnSalvarForm]); + + return ( + + {children} + + ) + +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useDeleteMotivoRejeicao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useDeleteMotivoRejeicao.js new file mode 100644 index 000000000..ec82f4516 --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useDeleteMotivoRejeicao.js @@ -0,0 +1,33 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { deleteMotivoRejeicaoEncerramentoConta } from "../../../../../../services/MotivosRejeicaoEncerramentoConta.service"; +import { useContext } from "react"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; +import { toastCustom } from "../../../../../Globais/ToastCustom"; + +export const useDeleteMotivoRejeicao = () => { + + const queryClient = useQueryClient(); + const { setShowModalForm, setBloquearBtnSalvarForm } = useContext(MotivosRejeicaoContext); + + const mutationDelete = useMutation({ + mutationFn: (uuidMotivoRejeicao) => { + return deleteMotivoRejeicaoEncerramentoConta(uuidMotivoRejeicao); + }, + onSuccess: () => { + console.log("Motivo rejeição apagado com sucesso."); + // Refaz a lista de motivos de rejeição + queryClient.invalidateQueries(['motivos-rejeicao-list']).then(); + // Mensagens + setShowModalForm(false); + toastCustom.ToastCustomSuccess('Exclusão do motivo de rejeição de encerramento de conta realizada com sucesso', `O motivo de rejeição foi excluído com sucesso.`); + }, + onError: (error) => { + console.log("Erro ao apagar o motivo de rejeição", error.response); + }, + onSettled: () => { + setBloquearBtnSalvarForm(false); + }, + }); + + return { mutationDelete }; +} diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useGetMotivosRejeicao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useGetMotivosRejeicao.js new file mode 100644 index 000000000..35e11ca0e --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/useGetMotivosRejeicao.js @@ -0,0 +1,25 @@ +import { getMotivosRejeicaoEncerramentoConta} from "../../../../../../services/MotivosRejeicaoEncerramentoConta.service"; +import { useQuery } from "@tanstack/react-query"; +import { useContext, useMemo } from "react"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; + +export const useGetMotivosRejeicao = () => { + + const {filter, currentPage} = useContext(MotivosRejeicaoContext) + + const { isLoading, isError, data = {count: 0, results: []}, error, refetch } = useQuery( + ['motivos-rejeicao-list', filter, currentPage], + ()=> getMotivosRejeicaoEncerramentoConta(filter, currentPage), + { + keepPreviousData: true, + staleTime: 5000, // 5 segundos + refetchOnWindowFocus: true, // Caso saia da aba e voltar ele refaz a requisição + } + ); + + const totalMotivosRejeicao = useMemo(() => data.results.length, [data]); + const count = useMemo(() => data.count, [data]); + + return {isLoading, isError, data, error, refetch, totalMotivosRejeicao, count} + +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePatchMotivoRejeicao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePatchMotivoRejeicao.js new file mode 100644 index 000000000..4b1dfd73a --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePatchMotivoRejeicao.js @@ -0,0 +1,33 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { patchMotivosRejeicaoEncerramentoConta } from "../../../../../../services/MotivosRejeicaoEncerramentoConta.service"; +import { useContext } from "react"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; +import { toastCustom } from "../../../../../Globais/ToastCustom"; + +export const usePatchMotivoRejeicao = () => { + + const queryClient = useQueryClient() + const {setShowModalForm, setBloquearBtnSalvarForm} = useContext(MotivosRejeicaoContext) + + const mutationPatch = useMutation({ + mutationFn: ({uuidMotivoRejeicao, payload}) => { + return patchMotivosRejeicaoEncerramentoConta(uuidMotivoRejeicao, payload) + }, + onSuccess: (data) => { + console.log("Motivo rejeição editado com sucesso.", data) + // Refaz a lista de motivos de rejeição + queryClient.invalidateQueries(['motivos-rejeicao-list']).then() + // Mensagens + setShowModalForm(false) + toastCustom.ToastCustomSuccess('Edição do motivo de rejeição de encerramento de conta realizada com sucesso', `O motivo de rejeição foi editado com sucesso.`) + }, + onError: (error) => { + console.log("Erro ao editar o motivo de rejeição", error.response) + // Mensagens + }, + onSettled: () => { + setBloquearBtnSalvarForm(false) + }, + }) + return {mutationPatch} +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePostMotivoRejeicao.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePostMotivoRejeicao.js new file mode 100644 index 000000000..3e6244289 --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/hooks/usePostMotivoRejeicao.js @@ -0,0 +1,31 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; +import { postMotivosRejeicaoEncerramentoConta } from "../../../../../../services/MotivosRejeicaoEncerramentoConta.service"; +import { useContext } from "react"; +import { MotivosRejeicaoContext } from "../context/MotivosRejeicao"; +import { toastCustom } from "../../../../../Globais/ToastCustom"; + +export const usePostMotivoRejeicao = () => { + + const queryClient = useQueryClient() + const {setShowModalForm, setBloquearBtnSalvarForm} = useContext(MotivosRejeicaoContext) + + const mutationPost = useMutation({ + mutationFn: ({payload}) => { + return postMotivosRejeicaoEncerramentoConta(payload) + }, + onSuccess: (data) => { + console.log("Motivo rejeição criado com sucesso.", data) + // Refaz a lista de motivos de rejeição + queryClient.invalidateQueries(['motivos-rejeicao-list']).then() + setShowModalForm(false) + toastCustom.ToastCustomSuccess('Inclusão do motivo de rejeição de encerramento de conta realizada com sucesso', `O motivo de rejeição foi adicionado com sucesso.`) + }, + onError: (error) => { + console.log("Erro ao criar o motivo de rejeição", error.response) + }, + onSettled: () => { + setBloquearBtnSalvarForm(false) + }, + }) + return {mutationPost} +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/index.js b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/index.js new file mode 100644 index 000000000..e9ddb045c --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/index.js @@ -0,0 +1,27 @@ +import React from "react"; +import "./motivosRejeicao.scss" + +import { MotivosRejeicaoProvider } from "./context/MotivosRejeicao"; +import { PaginasContainer } from "../../../../../paginas/PaginasContainer"; +import { TopoComBotoes } from "./components/TopoComBotoes"; +import { Filtros } from "./components/Filtros"; +import { ExibicaoQuantidade } from "./components/ExibicaoQuantidade"; +import { Lista } from "./components/Lista"; +import { Paginacao } from "./components/Paginacao"; + +export const MotivosRejeicaoEncerramentoConta = () => { + return ( + + +

Motivos Rejeição (encerramento conta)

+
+ + + + + +
+
+
+ ) +} \ No newline at end of file diff --git a/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/motivosRejeicao.scss b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/motivosRejeicao.scss new file mode 100644 index 000000000..69d641b5a --- /dev/null +++ b/src/componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta/motivosRejeicao.scss @@ -0,0 +1,4 @@ +span.total{ + color: #00585e; + font-weight: bold; + } \ No newline at end of file diff --git a/src/rotas/index.js b/src/rotas/index.js index fa0a549ae..c1e48af0f 100644 --- a/src/rotas/index.js +++ b/src/rotas/index.js @@ -91,6 +91,7 @@ import TesteDataTableAnt from "../componentes/Globais/ExibeAcertosEmLancamentosEDocumentosPorConta/AcertosLancamentos/TesteDataTableAnt"; import {GestaoDeUsuariosFormPage} from "../componentes/Globais/GestaoDeUsuariosForm"; import {Mandatos} from "../componentes/sme/Mandatos"; +import {MotivosRejeicaoEncerramentoConta} from "../componentes/sme/Parametrizacoes/Estrutura/MotivosRejeicaoEncerramentoConta"; const routesConfig = [ { @@ -451,6 +452,12 @@ const routesConfig = [ component: Mandatos, permissoes: ['access_painel_parametrizacoes'], }, + { + exact: true, + path: "/motivos-rejeicao", + component: MotivosRejeicaoEncerramentoConta, + permissoes: ['access_painel_parametrizacoes'], + }, { exact: true, path: "/acompanhamento-pcs-sme", diff --git a/src/services/MotivosRejeicaoEncerramentoConta.service.js b/src/services/MotivosRejeicaoEncerramentoConta.service.js new file mode 100644 index 000000000..0218e0c3e --- /dev/null +++ b/src/services/MotivosRejeicaoEncerramentoConta.service.js @@ -0,0 +1,40 @@ +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 getMotivosRejeicaoEncerramentoConta = async (filter, currentPage) => { + const {nome} = filter; + return (await api.get(`/api/motivos-rejeicao-encerramento-conta/`,{ + ...authHeader, + params: { + nome: nome, + page: currentPage, + } + })).data +} + +export const postMotivosRejeicaoEncerramentoConta = async (payload) => { + return (await api.post(`api/motivos-rejeicao-encerramento-conta/`, { + ...payload + }, + authHeader, + )) +}; + +export const patchMotivosRejeicaoEncerramentoConta = async (uuidMotivoRejeicaoEncerramentoConta, payload) => { + return (await api.patch(`api/motivos-rejeicao-encerramento-conta/${uuidMotivoRejeicaoEncerramentoConta}/`, { + ...payload + }, + authHeader, + )) +}; + +export const deleteMotivoRejeicaoEncerramentoConta = async (uuidMotivoRejeicaoEncerramentoConta) => { + return (await api.delete(`api/motivos-rejeicao-encerramento-conta/${uuidMotivoRejeicaoEncerramentoConta}/`, authHeader)); +}; diff --git a/src/services/escolas/Associacao.service.js b/src/services/escolas/Associacao.service.js index ec598cc60..502193a43 100644 --- a/src/services/escolas/Associacao.service.js +++ b/src/services/escolas/Associacao.service.js @@ -93,6 +93,10 @@ export const encerrarConta = async (payload) => { return (await api.post(`/api/solicitacoes-encerramento-conta/`, payload, authHeader)) }; +export const alterarSolicitacaoEncerramentoConta = async (payload, idSolicitacao) => { + return (await api.patch(`/api/solicitacoes-encerramento-conta/${idSolicitacao}/`, payload, authHeader)) +}; + export const exportarDadosAssociacao = async () => { return api .get(`/api/associacoes/${localStorage.getItem(ASSOCIACAO_UUID)}/exportar`, { From 3d0c18219916680af654eb81001dea3c658a72bb Mon Sep 17 00:00:00 2001 From: Matheus de Castro Diori <44413101+mdiori@users.noreply.github.com> Date: Fri, 28 Jul 2023 09:19:31 -0300 Subject: [PATCH 2/6] feat(87275): Cria nova aba de contas na consulta de associacoes (#1843) Co-authored-by: Matheus --- .../DadosDasContas/InfosContas.js | 66 +++++++++++++++++-- .../Associacoes/DadosDasAssociacoes/index.js | 58 ++++++++++++++-- src/utils/FormataData.js | 11 +++- 3 files changed, 126 insertions(+), 9 deletions(-) diff --git a/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js b/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js index c97f88248..52cc3b45e 100644 --- a/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js +++ b/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js @@ -1,8 +1,17 @@ import React, {Fragment} from "react"; import {MsgImgCentralizada} from "../../../../Globais/Mensagens/MsgImgCentralizada"; import Img404 from "../../../../../assets/img/img-404.svg"; +import {FontAwesomeIcon} from "@fortawesome/react-fontawesome"; +import {faExclamationCircle} from "@fortawesome/free-solid-svg-icons"; +import ReactTooltip from "react-tooltip"; +import {formataDataYYYYMMDDParaApresentacao} from "../../../../../utils/FormataData" + +export const InfosContas = ({dadosDaAssociacao, handleOpenModalConfirmarEncerramentoConta, handleOpenModalRejeitarEncerramentoConta}) =>{ + + const apresentaDataDeEncerramentoDeConta = (conta) => { + return conta && conta.solicitacao_encerramento !== null && conta.solicitacao_encerramento.status === "PENDENTE"; + } -export const InfosContas = ({dadosDaAssociacao}) =>{ return( <>
@@ -24,15 +33,15 @@ export const InfosContas = ({dadosDaAssociacao}) =>{ Conta {index + 1}

-
+

Banco

{conta.banco_nome}

-
+

Tipo de conta

{conta.tipo_conta.nome}

-
+

Agência

{conta.agencia}

@@ -40,6 +49,55 @@ export const InfosContas = ({dadosDaAssociacao}) =>{

Nº da conta com o dígito

{conta.numero_conta}

+ {apresentaDataDeEncerramentoDeConta(conta) && + <> +
+ + +
+ + } +
+
+
+
+
+ +
+
+ R$ {conta.saldo_atual_conta ? conta.saldo_atual_conta.toLocaleString("pt-BR") : 0} +
+
+ {/* {apresentaDataDeEncerramentoDeConta(conta) && +
+ + +
+ } */} +
+
+
): { + const [showModalConfirmarEncerramentoConta, setShowModalConfirmarEncerramentoConta] = useState(false); + const [showModalRejeitarEncerramentoConta, setShowModalRejeitarEncerramentoConta] = useState(false); + const [clickBtnEscolheOpcao, setClickBtnEscolheOpcao] = useState({ dados_unidade: true, dados_associacao: false, + contas_associacao: false, processos_sei: false, situacao_financeira: false }); @@ -22,6 +26,7 @@ export const DetalhesDaAssociacao = () => { const [activeTab, setActiveTab] = useState({ dados_unidade: true, dados_associacao: false, + contas_associacao: false, processos_sei: false, situacao_financeira: false }); @@ -39,6 +44,11 @@ export const DetalhesDaAssociacao = () => { nome: "Dados da associação", permissao: visoesService.getPermissoes(["access_dados_unidade_dre"]) }, + { + id: "contas_associacao", + nome: "Contas da associação", + permissao: visoesService.getPermissoes(["access_dados_unidade_dre"]) + }, { id: "processos_sei", nome: "Processos SEI", @@ -60,12 +70,16 @@ export const DetalhesDaAssociacao = () => { id: tabs[1].id, permissao: visoesService.getPermissoes(["access_dados_unidade_dre"]) }, - processos_sei : { + contas_associacao : { id: tabs[2].id, + permissao: visoesService.getPermissoes(["access_dados_unidade_dre"]) + }, + processos_sei : { + id: tabs[3].id, permissao: visoesService.getPermissoes(['access_processo_sei']) }, situacao_financeira : { - id: tabs[3].id, + id: tabs[4].id, permissao: visoesService.getPermissoes(["access_situacao_financeira_dre"]) }, } @@ -80,6 +94,7 @@ export const DetalhesDaAssociacao = () => { let novoEstadoConteudo = { dados_unidade: false, dados_associacao: false, + contas_associacao: false, processos_sei: false, situacao_financeira: false } @@ -87,6 +102,7 @@ export const DetalhesDaAssociacao = () => { let novoEstadoAba = { dados_unidade: false, dados_associacao: false, + contas_associacao: false, processos_sei: false, situacao_financeira: false } @@ -120,6 +136,7 @@ export const DetalhesDaAssociacao = () => { let novoEstadoAba = { dados_unidade: false, dados_associacao: false, + contas_associacao: false, processos_sei: false, situacao_financeira: false } @@ -127,6 +144,7 @@ export const DetalhesDaAssociacao = () => { let novoEstadoConteudo = { dados_unidade: false, dados_associacao: false, + contas_associacao: false, processos_sei: false, situacao_financeira: false } @@ -141,13 +159,29 @@ export const DetalhesDaAssociacao = () => { } - const toggleBtnEscolheOpcao= (id) => { setClickBtnEscolheOpcao({ [id]: !clickBtnEscolheOpcao[id] }); }; + const handleOpenModalConfirmarEncerramentoConta = (conta) => { + console.log("CONTA CONFIRMAR: ", conta) + return setShowModalConfirmarEncerramentoConta(true); + }; + + const handleCloseModalConfirmarEncerramentoConta = () => { + return setShowModalConfirmarEncerramentoConta(false); + }; + + const handleOpenModalRejeitarEncerramentoConta = (conta) => { + console.log("CONTA REJEITAR: ", conta) + return setShowModalRejeitarEncerramentoConta(true); + }; + + const handleCloseModalRejeitarEncerramentoConta = () => { + return setShowModalRejeitarEncerramentoConta(false); + }; return ( <> @@ -218,9 +252,25 @@ export const DetalhesDaAssociacao = () => { -
+
+
+ : + null + } + + {conteudo_tab.contas_associacao.permissao + ? +
+
diff --git a/src/utils/FormataData.js b/src/utils/FormataData.js index 9ef7b571b..f882554d6 100644 --- a/src/utils/FormataData.js +++ b/src/utils/FormataData.js @@ -5,4 +5,13 @@ export const formataDataParaPadraoYYYYMMDD = (data) => { const dia = String(date.getDate()).padStart(2, '0'); return `${ano}-${mes}-${dia}`; -}; \ No newline at end of file +}; + +export const formataDataYYYYMMDDParaApresentacao = (data) => { + const date = new Date(data); + const dia = date.getDate(); + const mes = date.getMonth() + 1; + const ano = date.getFullYear(); + + return `${dia < 10 ? "0" : ""}${dia}/${mes < 10 ? "0" : ""}${mes}/${ano}`; +} \ No newline at end of file From 07f6b6d91e0d5d1f5681ad0fa62de9624d7dc32e Mon Sep 17 00:00:00 2001 From: Matheus de Castro Diori <44413101+mdiori@users.noreply.github.com> Date: Mon, 31 Jul 2023 11:20:59 -0300 Subject: [PATCH 3/6] =?UTF-8?q?feat(96405):=20Modifica=20exibi=C3=A7=C3=A3?= =?UTF-8?q?o=20acompanhamento=20PCs=20(#1845)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(96405): Corrige mensagens * feat(96405): Modifica exibição acompanhamento PCs * feat(96405): Adiciona data minima no componente --------- Co-authored-by: Matheus --- .../DadosDasAssociacoes/DadosDasContas/InfosContas.js | 2 +- .../FormDadosDasContas/CardSaldoEncerramentoConta.js | 6 +++--- .../DadosDasContas/FormDadosDasContas/index.js | 4 ++-- .../escolas/Associacao/DadosDasContas/index.js | 9 +++++++-- src/componentes/sme/AcompanhamentoPcsSme/ResumoPorDre.js | 9 +++++++-- src/componentes/sme/AcompanhamentoPcsSme/index.js | 5 ++--- src/services/sme/DashboardSme.service.js | 3 +++ 7 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js b/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js index 52cc3b45e..b86bea942 100644 --- a/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js +++ b/src/componentes/dres/Associacoes/DadosDasAssociacoes/DadosDasContas/InfosContas.js @@ -54,7 +54,7 @@ export const InfosContas = ({dadosDaAssociacao, handleOpenModalConfirmarEncerra
+ handleOpenModalMotivoRejeicaoEncerramento={handleOpenModalMotivoRejeicaoEncerramento} errosDataEncerramentoConta={errosDataEncerramentoConta} inicioPeriodo={inicioPeriodo} /> ) })} diff --git a/src/componentes/escolas/Associacao/DadosDasContas/index.js b/src/componentes/escolas/Associacao/DadosDasContas/index.js index 8b4beaa8a..67267cdce 100644 --- a/src/componentes/escolas/Associacao/DadosDasContas/index.js +++ b/src/componentes/escolas/Associacao/DadosDasContas/index.js @@ -181,7 +181,11 @@ export const DadosDasContas = () => { buscaContas(); } catch (error) { - toastCustom.ToastCustomError('Erro ao tentar enviar a solicitação', 'Ocorreu um erro e a solicitação de encerramento não foi enviada para a Dre.') + if(error.response.data && error.response.data.mensagem) { + toastCustom.ToastCustomError('Erro ao enviar a solicitação de encerramento', error.response.data.mensagem) + } else { + toastCustom.ToastCustomError('Erro ao enviar a solicitação de encerramento', 'Ocorreu um erro e a solicitação de encerramento não foi enviada para a Dre.') + } } const modalData = { @@ -255,6 +259,7 @@ export const DadosDasContas = () => { handleOpenModalConfirmEncerramentoConta={handleOpenModalConfirmEncerramentoConta} handleOpenModalMotivoRejeicaoEncerramento={handleOpenModalMotivoRejeicaoEncerramento} errosDataEncerramentoConta={errosDataEncerramentoConta} + inicioPeriodo={stateAssociacao.periodo_inicial ? stateAssociacao.periodo_inicial.data_inicio_realizacao_despesas : null} /> @@ -268,7 +273,7 @@ export const DadosDasContas = () => { primeiroBotaoTexto="Cancelar" primeiroBotaoCss="base-verde-outline" segundoBotaoCss="base-verde" - segundoBotaoTexto="confirmar" + segundoBotaoTexto="Confirmar" />
diff --git a/src/componentes/sme/AcompanhamentoPcsSme/ResumoPorDre.js b/src/componentes/sme/AcompanhamentoPcsSme/ResumoPorDre.js index 4341a67c2..b27d4b44e 100644 --- a/src/componentes/sme/AcompanhamentoPcsSme/ResumoPorDre.js +++ b/src/componentes/sme/AcompanhamentoPcsSme/ResumoPorDre.js @@ -9,6 +9,7 @@ import {faEye} from "@fortawesome/free-solid-svg-icons"; import ReactTooltip from "react-tooltip"; import { formataNomeDreParaTabelas } from "../../../utils/FormataNomeDreParaTabelas"; +import {faExclamationCircle} from "@fortawesome/free-solid-svg-icons"; export const ResumoPorDre = ({resumoPorDre, statusPeriodo, periodoEscolhido}) => { @@ -85,6 +86,10 @@ export const ResumoPorDre = ({resumoPorDre, statusPeriodo, periodoEscolhido}) => return ( Em análise + ) @@ -111,8 +116,8 @@ export const ResumoPorDre = ({resumoPorDre, statusPeriodo, periodoEscolhido}) => - {!periodoEmAndamento && } - {periodoEmAndamento && } + + {periodoEmAndamento && } {periodoEmAndamento && } diff --git a/src/componentes/sme/AcompanhamentoPcsSme/index.js b/src/componentes/sme/AcompanhamentoPcsSme/index.js index 6bdee7277..a2dce5edb 100644 --- a/src/componentes/sme/AcompanhamentoPcsSme/index.js +++ b/src/componentes/sme/AcompanhamentoPcsSme/index.js @@ -1,6 +1,5 @@ import React, {useEffect, useState} from "react"; -import {Redirect} from 'react-router-dom' -import {getPeriodos, getItensDashboard} from "../../../services/sme/DashboardSme.service"; +import {getPeriodos, getItensDashboardSme} from "../../../services/sme/DashboardSme.service"; import {SelectPeriodo} from "./SelectPeriodo"; import "./dashboard.scss" import {BarraDeStatus} from "./BarraDeStatus"; @@ -40,7 +39,7 @@ export const AcompanhamentoPcsSme = () => { const carregaItensDashboard = async () =>{ setLoading(true); if (periodoEscolhido){ - let itens = await getItensDashboard(periodoEscolhido); + let itens = await getItensDashboardSme(periodoEscolhido, true); let cards = itens.cards; let totalCard = cards.shift(); let totalUnidades = totalCard ? totalCard.quantidade_prestacoes : 0; diff --git a/src/services/sme/DashboardSme.service.js b/src/services/sme/DashboardSme.service.js index 2937cd0bb..9ec6c5a14 100644 --- a/src/services/sme/DashboardSme.service.js +++ b/src/services/sme/DashboardSme.service.js @@ -16,6 +16,9 @@ export const getItensDashboard = async (uuid_periodo) => { return (await api.get(`/api/prestacoes-contas/dashboard-sme/?periodo=${uuid_periodo}`, authHeader)).data }; +export const getItensDashboardSme = async (uuid_periodo, unificar_apresentados_nao_recebidos) => { + return (await api.get(`/api/prestacoes-contas/dashboard-sme/?periodo=${uuid_periodo}&unificar_pcs_apresentadas_nao_recebidas=${unificar_apresentados_nao_recebidos}`, authHeader)).data +}; export const getCardRelatorios = async (uuid_periodo) => { return (await api.get(`/api/consolidados-dre/acompanhamento-de-relatorios-consolidados-sme/?periodo=${uuid_periodo}`, authHeader)).data From 2e47a7d790a94132dc1b4f9e843c31954ec08f3f Mon Sep 17 00:00:00 2001 From: rodrigodiaspilotogalvao <60263593+rodrigodiaspilotogalvao@users.noreply.github.com> Date: Tue, 1 Aug 2023 08:23:13 -0300 Subject: [PATCH 4/6] Update Jenkinsfile --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 3522d060e..dbf24ae73 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -61,7 +61,7 @@ pipeline { if ( env.branchname == 'main' || env.branchname == 'master' || env.branchname == 'homolog' || env.branchname == 'release' ) { sendTelegram("🤩 [Deploy ${env.branchname}] Job Name: ${JOB_NAME} \nBuild: ${BUILD_DISPLAY_NAME} \nMe aprove! \nLog: \n${env.BUILD_URL}") timeout(time: 24, unit: "HOURS") { - input message: 'Deseja realizar o deploy?', ok: 'SIM', submitter: 'alessandro_fernandes, kelwy_oliveira, anderson_morais, luis_zimmermann, rodolpho_azeredo, ollyver_ottoboni, rayane_santos' + input message: 'Deseja realizar o deploy?', ok: 'SIM', submitter: 'alessandro_fernandes, kelwy_oliveira, anderson_morais, luis_zimmermann, rodolpho_azeredo, ollyver_ottoboni, rayane_santos, lucas_rocha' } } withCredentials([file(credentialsId: "${kubeconfig}", variable: 'config')]){ From e008cfde1939110ebde49d3212e50b1c654d59fd Mon Sep 17 00:00:00 2001 From: Matheus de Castro Diori <44413101+mdiori@users.noreply.github.com> Date: Wed, 2 Aug 2023 07:45:52 -0300 Subject: [PATCH 5/6] feat(98017): Cria servico para manter ordenamento (#1847) Co-authored-by: Matheus --- .../TabelaConferenciaDeLancamentos.js | 20 ++++++++++++++++--- .../TabsConferenciaDeLancamentos.js | 4 +++- .../ConferenciaDeLancamentos/index.js | 12 ++++++----- .../mantemEstadoAcompanhamentoDePc.service.js | 13 +++++++++++- 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js index 98c9acc66..c823717c0 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/TabelaConferenciaDeLancamentos.js @@ -84,6 +84,8 @@ const TabelaConferenciaDeLancamentos = ({ let filtrar_por_tipo_de_pagamento = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_tipo_de_pagamento let filtrar_por_informacoes = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_informacao let filtrar_por_conferencia = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_conferencia + let ordenamento_tabela_lancamentos = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.ordenamento_tabela_lancamentos + useEffect(() => { desmarcarTodos() @@ -409,7 +411,7 @@ const TabelaConferenciaDeLancamentos = ({ await postLancamentosParaConferenciaMarcarComoCorreto(prestacaoDeContas.uuid, payload) console.log("Marcados como correto com sucesso!") desmarcarTodos() - await carregaLancamentosParaConferencia(prestacaoDeContas, contaUuid, stateFiltros.filtrar_por_acao, stateFiltros.filtrar_por_lancamento, paginacao_atual, false, stateFiltros.filtrar_por_data_inicio, stateFiltros.filtrar_por_data_fim, stateFiltros.filtrar_por_nome_fornecedor, stateFiltros.filtrar_por_numero_de_documento, stateFiltros.filtrar_por_tipo_de_documento, stateFiltros.filtrar_por_tipo_de_pagamento, stateFiltros.filtrar_por_informacoes, stateFiltros.filtrar_por_conferencia) + await carregaLancamentosParaConferencia(prestacaoDeContas, contaUuid, stateFiltros.filtrar_por_acao, stateFiltros.filtrar_por_lancamento, paginacao_atual, false, stateFiltros.filtrar_por_data_inicio, stateFiltros.filtrar_por_data_fim, stateFiltros.filtrar_por_nome_fornecedor, stateFiltros.filtrar_por_numero_de_documento, stateFiltros.filtrar_por_tipo_de_documento, stateFiltros.filtrar_por_tipo_de_pagamento, stateFiltros.filtrar_por_informacoes, stateFiltros.filtrar_por_conferencia, multiSortMeta) } catch (e) { console.log("Erro ao marcar como correto ", e.response) } @@ -438,7 +440,8 @@ const TabelaConferenciaDeLancamentos = ({ await postLancamentosParaConferenciaMarcarNaoConferido(prestacaoDeContas.uuid, payload) console.log("Marcados como não conferido com sucesso!") desmarcarTodos() - await carregaLancamentosParaConferencia(prestacaoDeContas, contaUuid, stateFiltros.filtrar_por_acao, stateFiltros.filtrar_por_lancamento, paginacao_atual, false, stateFiltros.filtrar_por_data_inicio, stateFiltros.filtrar_por_data_fim, stateFiltros.filtrar_por_nome_fornecedor, stateFiltros.filtrar_por_numero_de_documento, stateFiltros.filtrar_por_tipo_de_documento, stateFiltros.filtrar_por_tipo_de_pagamento, stateFiltros.filtrar_por_informacoes, stateFiltros.filtrar_por_conferencia) + await carregaLancamentosParaConferencia(prestacaoDeContas, contaUuid, stateFiltros.filtrar_por_acao, stateFiltros.filtrar_por_lancamento, paginacao_atual, false, stateFiltros.filtrar_por_data_inicio, stateFiltros.filtrar_por_data_fim, stateFiltros.filtrar_por_nome_fornecedor, stateFiltros.filtrar_por_numero_de_documento, stateFiltros.filtrar_por_tipo_de_documento, stateFiltros.filtrar_por_tipo_de_pagamento, stateFiltros.filtrar_por_informacoes, stateFiltros.filtrar_por_conferencia, + multiSortMeta) } catch (e) { console.log("Erro ao marcar como não conferido ", e.response) } @@ -480,8 +483,10 @@ const TabelaConferenciaDeLancamentos = ({ filtrar_por_tipo_de_pagamento: dados_acompanhamento_de_pc_usuario_logado && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_tipo_de_pagamento ? dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_tipo_de_pagamento : "", filtrar_por_informacoes: dados_acompanhamento_de_pc_usuario_logado && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_informacao ? dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_informacao : [], filtrar_por_conferencia: dados_acompanhamento_de_pc_usuario_logado && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_conferencia ? dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_conferencia : [], + ordenamento_tabela_lancamentos: dados_acompanhamento_de_pc_usuario_logado && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.ordenamento_tabela_lancamentos ? dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.ordenamento_tabela_lancamentos : [], } const [stateFiltros, setStateFiltros] = useState(initialStateFiltros); + const [multiSortMeta, setMultiSortMeta] = useState(initialStateFiltros.ordenamento_tabela_lancamentos); const handleChangeFiltros = (name, value) => { setStateFiltros({ @@ -514,7 +519,7 @@ const TabelaConferenciaDeLancamentos = ({ const handleSubmitFiltros = async () => { desmarcarTodos() - await carregaLancamentosParaConferencia(prestacaoDeContas, contaUuid, stateFiltros.filtrar_por_acao, stateFiltros.filtrar_por_lancamento, paginacao_atual, false, stateFiltros.filtrar_por_data_inicio, stateFiltros.filtrar_por_data_fim, stateFiltros.filtrar_por_nome_fornecedor, stateFiltros.filtrar_por_numero_de_documento, stateFiltros.filtrar_por_tipo_de_documento, stateFiltros.filtrar_por_tipo_de_pagamento, stateFiltros.filtrar_por_informacoes, stateFiltros.filtrar_por_conferencia) + await carregaLancamentosParaConferencia(prestacaoDeContas, contaUuid, stateFiltros.filtrar_por_acao, stateFiltros.filtrar_por_lancamento, paginacao_atual, false, stateFiltros.filtrar_por_data_inicio, stateFiltros.filtrar_por_data_fim, stateFiltros.filtrar_por_nome_fornecedor, stateFiltros.filtrar_por_numero_de_documento, stateFiltros.filtrar_por_tipo_de_documento, stateFiltros.filtrar_por_tipo_de_pagamento, stateFiltros.filtrar_por_informacoes, stateFiltros.filtrar_por_conferencia, multiSortMeta) }; const limpaFiltros = async () => { @@ -543,6 +548,7 @@ const TabelaConferenciaDeLancamentos = ({ filtrar_por_tipo_de_pagamento: filtrar_por_tipo_de_pagamento, filtrar_por_conferencia: filtrar_por_conferencia, filtrar_por_informacoes: filtrar_por_informacoes, + ordenamento_tabela_lancamentos: ordenamento_tabela_lancamentos, paginacao_atual: event.rows * event.page, }, } @@ -591,6 +597,12 @@ const TabelaConferenciaDeLancamentos = ({ } } + const onSort = (event) => { + let copiaArrayDeOrdenamento = [...event.multiSortMeta] + setMultiSortMeta(copiaArrayDeOrdenamento); + meapcservice.setOrdenamentoTabelaLancamentos(visoesService.getUsuarioLogin(), copiaArrayDeOrdenamento) + }; + return ( <> @@ -644,6 +656,8 @@ const TabelaConferenciaDeLancamentos = ({ // Usado para salvar no localStorage a página atual após os calculos ** ver função onPaginationClick first={primeiroRegistroASerExibido} onPage={onPaginationClick} + multiSortMeta={multiSortMeta} + onSort={onSort} > {loadingLancamentosParaConferencia ? ( @@ -38,7 +40,7 @@ export const TabsConferenciaDeLancamentos = ({contasAssociacao, toggleBtnEscolhe onClick={() => { toggleBtnEscolheConta(conta.uuid); setStateCheckBoxOrdenarPorImposto(false) - carregaLancamentosParaConferencia(prestacaoDeContas, conta.uuid, filtrar_por_acao, filtrar_por_lancamento, 0, false, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_informacoes, filtrar_por_conferencia) + carregaLancamentosParaConferencia(prestacaoDeContas, conta.uuid, filtrar_por_acao, filtrar_por_lancamento, 0, false, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_informacoes, filtrar_por_conferencia, ordenamento_tabela_lancamentos) }} className={`nav-link btn-escolhe-acao ${clickBtnEscolheConta === conta.uuid ? "btn-escolhe-acao-active" : ""}`} diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js index 69c019b83..085080e7d 100644 --- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js +++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/ConferenciaDeLancamentos/index.js @@ -58,9 +58,10 @@ const ConferenciaDeLancamentos = ({prestacaoDeContas, onCarregaLancamentosParaCo let filtrar_por_tipo_de_pagamento = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_tipo_de_pagamento let filtrar_por_conferencia = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_conferencia let filtrar_por_informacao = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_informacao + let ordenamento_tabela_lancamentos = dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.ordenamento_tabela_lancamentos if (dados_acompanhamento_de_pc_usuario_logado && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.conta_uuid){ - carregaLancamentosParaConferencia(prestacaoDeContas, dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.conta_uuid, filtrar_por_acao, filtrar_por_lancamento, paginacao_atual, false, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_conferencia, filtrar_por_informacao) + carregaLancamentosParaConferencia(prestacaoDeContas, dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.conta_uuid, filtrar_por_acao, filtrar_por_lancamento, paginacao_atual, false, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_informacao, filtrar_por_conferencia, ordenamento_tabela_lancamentos) toggleBtnEscolheConta(dados_acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.conta_uuid) }else if (contasAssociacao.length > 0){ carregaLancamentosParaConferencia(prestacaoDeContas, contasAssociacao[0].uuid) @@ -77,7 +78,7 @@ const ConferenciaDeLancamentos = ({prestacaoDeContas, onCarregaLancamentosParaCo setClickBtnEscolheConta(conta_uuid); }; - const salvaObjetoAcompanhamentoDePcPorUsuarioLocalStorage = (prestacao_de_contas, conta_uuid, filtrar_por_acao, filtrar_por_lancamento, paginacao_atual, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_informacoes, filtrar_por_conferencia) =>{ + const salvaObjetoAcompanhamentoDePcPorUsuarioLocalStorage = (prestacao_de_contas, conta_uuid, filtrar_por_acao, filtrar_por_lancamento, paginacao_atual, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_informacoes, filtrar_por_conferencia, ordenamento_tabela_lancamentos) =>{ let objetoAcompanhamentoDePcPorUsuario = { prestacao_de_conta_uuid: prestacaoDeContas.uuid, conferencia_de_lancamentos: { @@ -93,14 +94,15 @@ const ConferenciaDeLancamentos = ({prestacaoDeContas, onCarregaLancamentosParaCo filtrar_por_tipo_de_documento: filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento: filtrar_por_tipo_de_pagamento, filtrar_por_informacao: filtrar_por_informacoes, - filtrar_por_conferencia: filtrar_por_conferencia + filtrar_por_conferencia: filtrar_por_conferencia, + ordenamento_tabela_lancamentos: ordenamento_tabela_lancamentos }, } meapcservice.setAcompanhamentoDePcPorUsuario(visoesService.getUsuarioLogin(), objetoAcompanhamentoDePcPorUsuario) } - const carregaLancamentosParaConferencia = async (prestacao_de_contas, conta_uuid, filtrar_por_acao=null, filtrar_por_lancamento=null, paginacao_atual, ordenar_por_imposto=null, filtrar_por_data_inicio=null, filtrar_por_data_fim=null, filtrar_por_nome_fornecedor=null, filtrar_por_numero_de_documento=null, filtrar_por_tipo_de_documento=null, filtrar_por_tipo_de_pagamento=null, filtrar_por_informacoes=[], filtrar_por_conferencia = []) =>{ - salvaObjetoAcompanhamentoDePcPorUsuarioLocalStorage(prestacao_de_contas, conta_uuid, filtrar_por_acao, filtrar_por_lancamento, paginacao_atual, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_informacoes, filtrar_por_conferencia) + const carregaLancamentosParaConferencia = async (prestacao_de_contas, conta_uuid, filtrar_por_acao=null, filtrar_por_lancamento=null, paginacao_atual, ordenar_por_imposto=null, filtrar_por_data_inicio=null, filtrar_por_data_fim=null, filtrar_por_nome_fornecedor=null, filtrar_por_numero_de_documento=null, filtrar_por_tipo_de_documento=null, filtrar_por_tipo_de_pagamento=null, filtrar_por_informacoes=[], filtrar_por_conferencia = [], ordenamento_tabela_lancamentos=[]) =>{ + salvaObjetoAcompanhamentoDePcPorUsuarioLocalStorage(prestacao_de_contas, conta_uuid, filtrar_por_acao, filtrar_por_lancamento, paginacao_atual, filtrar_por_data_inicio, filtrar_por_data_fim, filtrar_por_nome_fornecedor, filtrar_por_numero_de_documento, filtrar_por_tipo_de_documento, filtrar_por_tipo_de_pagamento, filtrar_por_informacoes, filtrar_por_conferencia, ordenamento_tabela_lancamentos) setContaUuid(conta_uuid) setLoadingLancamentosParaConferencia(true) diff --git a/src/services/mantemEstadoAcompanhamentoDePc.service.js b/src/services/mantemEstadoAcompanhamentoDePc.service.js index 9028bd957..4ffacf6a7 100644 --- a/src/services/mantemEstadoAcompanhamentoDePc.service.js +++ b/src/services/mantemEstadoAcompanhamentoDePc.service.js @@ -21,7 +21,8 @@ const limpaAcompanhamentoDePcUsuarioLogado = (usuario) =>{ filtrar_por_tipo_de_documento: '', filtrar_por_tipo_de_pagamento: '', filtrar_por_conferencia: [], - filtrar_por_informacao: [] + filtrar_por_informacao: [], + ordenamento_tabela_lancamentos: [] }, } }; @@ -37,6 +38,14 @@ const setAcompanhamentoDePcPorUsuario = (usuario, objeto) =>{ localStorage.setItem(ACOMPANHAMENTO_DE_PC, JSON.stringify(dados_acompanhamentos_de_pc_update)); } +const setOrdenamentoTabelaLancamentos = (usuario, ordenamento) => { + let acompanhamento_de_pc_usuario_logado = getAcompanhamentoDePcUsuarioLogado(); + if (acompanhamento_de_pc_usuario_logado) { + acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.ordenamento_tabela_lancamentos = ordenamento; + setAcompanhamentoDePcPorUsuario(usuario, acompanhamento_de_pc_usuario_logado); + } +}; + const setAcompanhamentoDePc = async () =>{ let todos_acompanhamentos_de_pc = getTodosAcompanhamentosDePc() let acompanhamento_de_pc_usuario_logado = getAcompanhamentoDePcUsuarioLogado() @@ -60,6 +69,7 @@ const setAcompanhamentoDePc = async () =>{ filtrar_por_tipo_de_pagamento: acompanhamento_de_pc_usuario_logado && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_tipo_de_pagamento ? acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_tipo_de_pagamento : '', filtrar_por_informacoes: acompanhamento_de_pc_usuario_logado && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_informacao ? acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_informacao : [], filtrar_por_conferencia: acompanhamento_de_pc_usuario_logado && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_conferencia ? acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.filtrar_por_conferencia : [], + ordenamento_tabela_lancamentos: acompanhamento_de_pc_usuario_logado && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos && acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos ? acompanhamento_de_pc_usuario_logado.conferencia_de_lancamentos.ordenamento_tabela_lancamentos : [], }, } }; @@ -83,4 +93,5 @@ export const mantemEstadoAcompanhamentoDePc = { setAcompanhamentoDePcPorUsuario, getTodosAcompanhamentosDePc, getAcompanhamentoDePcUsuarioLogado, + setOrdenamentoTabelaLancamentos } \ No newline at end of file From 4ae5fccc20cf3a203b4ac6a64cd85507e92f33fa Mon Sep 17 00:00:00 2001 From: Lucas Santos Rocha Date: Thu, 3 Aug 2023 16:01:26 -0300 Subject: [PATCH 6/6] feat(99796): Deploy Release 8.6.0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca0a12455..56617fa81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "ptrf", - "version": "8.5.0", + "version": "8.6.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 8a4c5f06f..d2e663126 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ptrf", - "version": "8.5.0", + "version": "8.6.0", "private": true, "dependencies": { "@fortawesome/fontawesome-svg-core": "^1.2.27",