diff --git a/README.md b/README.md
index 399e32473..f7779383a 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.3.0
+Versão: 1.4.0
## Release Notes
+### 1.4.0 - 07/01/2021 - Entregas da Sprint 13
+* Visão SME
+* SME > Painel de parâmetros do sistema
+* SME > Acompanhamento de prestações de conta > Resumo Geral
+* SME > Acompanhamento de prestações de conta > Resumo por DRE (lista)
+* Lançamento de Créditos não relativos ao PTRF
+* Melhorias na Ata de Retificação
+* Seleção de repasses ao cadastrar créditos
+* Recurso de exclusão de membros da associação
+* Melhorias no acompanhamento de prestações de contas da DRE
+* 🐞 Correção de alguns poucos bugs ;-)
+
### 1.3.0 - 08/12/2020 - Entregas da Sprint 12
* Carga de previsões de repasse da SME;
* Carga de quantidade de alunos do último celso;
diff --git a/package.json b/package.json
index 994a64acc..0ea4bbbc5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "ptrf",
- "version": "1.3.0",
+ "version": "1.4.0",
"private": true,
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.27",
diff --git a/src/assets/img/icon-und-educacional.svg b/src/assets/img/icon-und-educacional.svg
new file mode 100644
index 000000000..929957cdf
--- /dev/null
+++ b/src/assets/img/icon-und-educacional.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/img/icone-menu-parametrizacoes.svg b/src/assets/img/icone-menu-parametrizacoes.svg
new file mode 100644
index 000000000..7364f52b2
--- /dev/null
+++ b/src/assets/img/icone-menu-parametrizacoes.svg
@@ -0,0 +1,3 @@
+
diff --git a/src/assets/img/icone-parametro-acoes-associacoes.svg b/src/assets/img/icone-parametro-acoes-associacoes.svg
new file mode 100644
index 000000000..c74c052aa
--- /dev/null
+++ b/src/assets/img/icone-parametro-acoes-associacoes.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/assets/img/icone-parametro-associacoes.svg b/src/assets/img/icone-parametro-associacoes.svg
new file mode 100644
index 000000000..5f59e0d9b
--- /dev/null
+++ b/src/assets/img/icone-parametro-associacoes.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/assets/img/icone-parametro-contas-associacoes.svg b/src/assets/img/icone-parametro-contas-associacoes.svg
new file mode 100644
index 000000000..5ad073861
--- /dev/null
+++ b/src/assets/img/icone-parametro-contas-associacoes.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/img/icone-parametro-especificacoes.svg b/src/assets/img/icone-parametro-especificacoes.svg
new file mode 100644
index 000000000..b8a7a0f06
--- /dev/null
+++ b/src/assets/img/icone-parametro-especificacoes.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/assets/img/icone-parametro-periodos.svg b/src/assets/img/icone-parametro-periodos.svg
new file mode 100644
index 000000000..6e35becec
--- /dev/null
+++ b/src/assets/img/icone-parametro-periodos.svg
@@ -0,0 +1,15 @@
+
diff --git a/src/assets/img/icone-parametro-tags.svg b/src/assets/img/icone-parametro-tags.svg
new file mode 100644
index 000000000..a77302967
--- /dev/null
+++ b/src/assets/img/icone-parametro-tags.svg
@@ -0,0 +1,4 @@
+
diff --git a/src/assets/img/icone-parametro-tipos-acao.svg b/src/assets/img/icone-parametro-tipos-acao.svg
new file mode 100644
index 000000000..7ab4835e6
--- /dev/null
+++ b/src/assets/img/icone-parametro-tipos-acao.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/assets/img/icone-parametro-tipos-conta.svg b/src/assets/img/icone-parametro-tipos-conta.svg
new file mode 100644
index 000000000..7ae6c32c8
--- /dev/null
+++ b/src/assets/img/icone-parametro-tipos-conta.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/assets/img/icone-parametro-tipos-custeio.svg b/src/assets/img/icone-parametro-tipos-custeio.svg
new file mode 100644
index 000000000..65f179f99
--- /dev/null
+++ b/src/assets/img/icone-parametro-tipos-custeio.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/assets/img/icone-parametro-tipos-documento.svg b/src/assets/img/icone-parametro-tipos-documento.svg
new file mode 100644
index 000000000..7a6a0645a
--- /dev/null
+++ b/src/assets/img/icone-parametro-tipos-documento.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/assets/img/icone-parametro-tipos-receita.svg b/src/assets/img/icone-parametro-tipos-receita.svg
new file mode 100644
index 000000000..be0b1b791
--- /dev/null
+++ b/src/assets/img/icone-parametro-tipos-receita.svg
@@ -0,0 +1,12 @@
+
diff --git a/src/assets/img/icone-parametro-tipos-transacao.svg b/src/assets/img/icone-parametro-tipos-transacao.svg
new file mode 100644
index 000000000..97bcd58d6
--- /dev/null
+++ b/src/assets/img/icone-parametro-tipos-transacao.svg
@@ -0,0 +1,9 @@
+
diff --git a/src/assets/img/icone-parametro-usuarios.svg b/src/assets/img/icone-parametro-usuarios.svg
new file mode 100644
index 000000000..5656ac2a0
--- /dev/null
+++ b/src/assets/img/icone-parametro-usuarios.svg
@@ -0,0 +1,6 @@
+
diff --git a/src/componentes/Globais/Cabecalho/index.js b/src/componentes/Globais/Cabecalho/index.js
index a56294109..57e32f091 100644
--- a/src/componentes/Globais/Cabecalho/index.js
+++ b/src/componentes/Globais/Cabecalho/index.js
@@ -26,13 +26,6 @@ export const Cabecalho = () => {
qtdeNotificacoesNaoLidas()
}, []);
-
- useEffect(()=>{
- if (dados_usuario_logado.visoes.find(visao=> visao === 'SME')){
- setExibeMenu(false);
- }
- }, []);
-
const qtdeNotificacoesNaoLidas = async () =>{
await notificacaoContext.getQtdeNotificacoesNaoLidas()
};
@@ -52,7 +45,7 @@ export const Cabecalho = () => {
const retornaVisaoConvertida = (visao, uuid_unidade, uuid_associacao, nome_associacao, unidade_tipo, unidade_nome) =>{
let visao_convertida = visoesService.converteNomeVisao(visao);
let obj;
- if (visao === "DRE"){
+ if (visao === "DRE" || visao === "SME"){
obj = JSON.stringify({
visao: visao_convertida ,
uuid_unidade:uuid_unidade,
@@ -141,7 +134,7 @@ export const Cabecalho = () => {
unidade.tipo_unidade,
unidade.uuid,
unidade.associacao.uuid,
- unidade.tipo_unidade === "DRE" ? unidade.nome : unidade.associacao.nome,
+ unidade.tipo_unidade === "DRE" || unidade.tipo_unidade === "SME" ? unidade.nome : unidade.associacao.nome,
unidade.tipo_unidade,
unidade.nome,
)}
diff --git a/src/componentes/Globais/SidebarLeft/getUrls.js b/src/componentes/Globais/SidebarLeft/getUrls.js
index 3c6cdbf9f..f306ff9f1 100644
--- a/src/componentes/Globais/SidebarLeft/getUrls.js
+++ b/src/componentes/Globais/SidebarLeft/getUrls.js
@@ -12,6 +12,7 @@ import IconePainel from "../../../assets/img/icone-menu-dre-painel.svg"
import IconeRelatorio from "../../../assets/img/icone-menu-dre-relatorio.svg"
import IconeApoioDiretoria from "../../../assets/img/icone-apoio-a-diretoria.svg"
import IconeGestaoDePerfis from "../../../assets/img/icone-menu-gestao-de-perfis.svg"
+import IconeMenuParametrizacoes from "../../../assets/img/icone-menu-parametrizacoes.svg"
const getDadosUsuario = () =>{
let usuario = localStorage.getItem(USUARIO_NOME);
@@ -40,10 +41,10 @@ const UrlsMenuEscolas ={
{label: "Prestação de contas", url: "prestacao-de-contas", dataFor:"prestacao_de_contas", icone:IconeMenuPrestacaoDeContas, permissoes: ['view_prestacaoconta'],
subItens: [
{
- label: "Conciliação Bancária", url: "detalhe-das-prestacoes", dataFor:"detalhe_das_prestacoes", icone:""
+ label: "Conciliação Bancária", url: "detalhe-das-prestacoes", dataFor:"detalhe_das_prestacoes", icone:"", permissoes: ['view_conciliacao_bancaria', ]
},
{
- label: "Geração de documentos", url: "prestacao-de-contas", dataFor:"prestacao_de_contas", icone:""
+ label: "Geração de documentos", url: "prestacao-de-contas", dataFor:"prestacao_de_contas", icone:"", permissoes: ['view_default']
},
]
},
@@ -62,12 +63,12 @@ const UrlsMenuDres ={
/*{label: "Painel", url: "dre-dashboard", dataFor:"dre_dashboard", icone:IconePainel, permissoes: ['view_dashboard_dre'],},*/
{label: "Associações", url: "dre-associacoes", dataFor:"dre_associacoes", icone:IconeMenuGastosDaEscola, permissoes: ['view_associacao_dre'],},
{label: "Acompanhamento de PC", url: "dre-dashboard", dataFor:"dre_dashboard", icone:IconeAcompanhamento, permissoes: ['view_dadosdiretoria_dre'],},
- {label: "Relatório consolidado", url: "dre-relatorio-consolidado", dataFor:"dre_relatorio_consolidado", icone:IconeRelatorio, permissoes: ['view_dashboard_dre']},
+ {label: "Relatório consolidado", url: "dre-relatorio-consolidado", dataFor:"dre_relatorio_consolidado", icone:IconeRelatorio, permissoes: ['view_relatorio_consolidado_dre']},
{label: "Dados da Diretoria", url: "dre-dados-da-diretoria", dataFor:"dre_dados_da_diretoria", icone:IconeDadosDaDiretoria, permissoes: ['view_dadosdiretoria_dre']},
{label: "Apoio à Diretoria", url: "dre-dados-da-diretoria", dataFor:"dre_dados_da_diretoria", icone:IconeApoioDiretoria, permissoes: ['view_dadosdiretoria_dre'],
subItens: [
{
- label: "Perguntas Frequentes", url: "dre-faq", dataFor:"dre_dados_da_diretoria", icone:IconeDadosDaDiretoria
+ label: "Perguntas Frequentes", url: "dre-faq", dataFor:"dre_dados_da_diretoria", icone:IconeDadosDaDiretoria, permissoes: ['view_default']
}
]
},
@@ -75,31 +76,35 @@ const UrlsMenuDres ={
]
};
-const UrlsMenuSme ={
+const UrlsMenuSME ={
dados_iniciais: {
- default_selected: "undefined",
+ default_selected: "acompanhamento-pcs-sme",
usuario: getDadosUsuario(),
associacao_tipo_escola: getDadosUnidade().tipo_escola,
associacao_nome_escola: getDadosUnidade().nome_escola
},
lista_de_urls:[
- {},
+ {label: "Parametrizações", url: "painel-parametrizacoes", dataFor:"sme_painel_parametrizacoes", icone:IconeMenuParametrizacoes, permissoes: ['view_default'],},
+ {label: "Acompanhamento de PCs", url: "acompanhamento-pcs-sme", dataFor:"acompanhamento_pcs_sme", icone:IconeAcompanhamento, permissoes: ['view_default'],},
+ {label: "Gestão de perfis", url: "gestao-de-perfis", dataFor:"gestao_de_perfis", icone:IconeGestaoDePerfis, permissoes: ['view_default'],},
]
};
+
+
const GetUrls = () =>{
let dados_usuario_logado = visoesService.getDadosDoUsuarioLogado();
if (dados_usuario_logado.visao_selecionada.nome === 'SME'){
- return UrlsMenuSme
+ return UrlsMenuSME
}else if(dados_usuario_logado.visao_selecionada.nome === 'DRE'){
return UrlsMenuDres
}else if (dados_usuario_logado.visao_selecionada.nome === 'UE'){
return UrlsMenuEscolas
}else {
if ( dados_usuario_logado.visoes.find(visao=> visao.tipo === 'SME')){
- return UrlsMenuSme
+ return UrlsMenuSME
}else if (dados_usuario_logado.visoes.find(visao=> visao.tipo === 'DRE')){
return UrlsMenuDres
}else if (dados_usuario_logado.visoes.find(visao=> visao.tipo === 'UE')){
diff --git a/src/componentes/Globais/SidebarLeft/index.js b/src/componentes/Globais/SidebarLeft/index.js
index 210e64c89..5069f04b7 100644
--- a/src/componentes/Globais/SidebarLeft/index.js
+++ b/src/componentes/Globais/SidebarLeft/index.js
@@ -95,6 +95,7 @@ export const SidebarLeft = () => {
{}
{url.subItens && url.subItens.length > 0 && url.subItens.map((subItem, index) =>
+ visoesService.getPermissoes(subItem.permissoes) ? (
{
{subItem.label}
-
+ ): null
)}
) : null
diff --git a/src/componentes/dres/Associacoes/TabelaAssociacoes.js b/src/componentes/dres/Associacoes/TabelaAssociacoes.js
index 54ad7d1f3..018abe894 100644
--- a/src/componentes/dres/Associacoes/TabelaAssociacoes.js
+++ b/src/componentes/dres/Associacoes/TabelaAssociacoes.js
@@ -10,13 +10,12 @@ export const TabelaAssociacoes = ({associacoes, rowsPerPage, unidadeEscolarTempl
paginator={associacoes.length > rowsPerPage}
rows={rowsPerPage}
paginatorTemplate="PrevPageLink PageLinks NextPageLink"
- //paginatorTemplate="FirstPageLink PrevPageLink PageLinks NextPageLink LastPageLink"
autoLayout={true}
selectionMode="single"
>
diff --git a/src/componentes/dres/Associacoes/index.js b/src/componentes/dres/Associacoes/index.js
index 540b78b97..afccce287 100644
--- a/src/componentes/dres/Associacoes/index.js
+++ b/src/componentes/dres/Associacoes/index.js
@@ -74,7 +74,7 @@ export const Associacoes = () =>{
const unidadeEscolarTemplate = (rowData) =>{
return (
- {rowData['nome'] ? {rowData['nome']} : ''}
+ {rowData['unidade']['nome_com_tipo'] ? {rowData['unidade']['nome_com_tipo']} : ''}
)
};
diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesDevolucaoAoTesouro.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesDevolucaoAoTesouro.js
index b3e4345d8..c77abbc39 100644
--- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesDevolucaoAoTesouro.js
+++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/InformacoesDevolucaoAoTesouro.js
@@ -24,6 +24,40 @@ export const InformacoesDevolucaoAoTesouro = ({formRef, informacoesPrestacaoDeCo
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;
+ let desp = eval('despesas.devolucao_'+index).find(item => item.uuid === uuid_despesa);
+
+ return (
+
+
+ {/* 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" &&
@@ -111,7 +145,7 @@ export const InformacoesDevolucaoAoTesouro = ({formRef, informacoesPrestacaoDeCo
-
+
@@ -123,13 +157,15 @@ export const InformacoesDevolucaoAoTesouro = ({formRef, informacoesPrestacaoDeCo
0 ? 'table-bordered' : ''}`}>
{/* eslint-disable-next-line no-eval */}
- {despesas && eval('despesas.devolucao_'+index) && eval('despesas.devolucao_'+index).length > 0 ?
+ {values.devolucoes_ao_tesouro_da_prestacao[index].despesa !== "" && despesas && eval('despesas.devolucao_'+index) && eval('despesas.devolucao_'+index).length > 0?
+ exibeDespesaSelecionada(index, values, despesas, devolucao)
+ : 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 */}
- |
+ values.devolucoes_ao_tesouro_da_prestacao[index].devolucao_total === "true" ? setFieldValue(`devolucoes_ao_tesouro_da_prestacao[${index}].valor`, valorTemplate(despesa.valor_total)): null}/> |
{/* eslint-disable-next-line no-eval */}
{despesa.nome_fornecedor} |
{/* eslint-disable-next-line no-eval */}
@@ -183,8 +219,8 @@ export const InformacoesDevolucaoAoTesouro = ({formRef, informacoesPrestacaoDeCo
{props.errors.data && {props.errors.data}}
@@ -197,6 +233,10 @@ export const InformacoesDevolucaoAoTesouro = ({formRef, informacoesPrestacaoDeCo
value={devolucao.devolucao_total}
onChange={async (e) => {
props.handleChange(e);
+ if (values.devolucoes_ao_tesouro_da_prestacao[index].despesa && e.target.value === 'true') {
+ let desp = eval('despesas.devolucao_'+index).find(item => item.uuid === values.devolucoes_ao_tesouro_da_prestacao[index].despesa);
+ setFieldValue(`devolucoes_ao_tesouro_da_prestacao[${index}].valor`, valorTemplate(desp.valor_total));
+ }
}
}
className='form-control'
@@ -226,21 +266,6 @@ export const InformacoesDevolucaoAoTesouro = ({formRef, informacoesPrestacaoDeCo
disabled={setDisabledCampos(devolucao) }
/>
-
-
-
-
{visoesService.getItemUsuarioLogado('visao_selecionada.nome') === "UE" || (index >= 1 && values.devolucoes_ao_tesouro_da_prestacao.length > 1) ? (
diff --git a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js
index 76f6586a6..6aae5fa68 100644
--- a/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js
+++ b/src/componentes/dres/PrestacaoDeContas/DetalhePrestacaoDeContas/index.js
@@ -53,6 +53,7 @@ export const DetalhePrestacaoDeContas = () =>{
const initialConcluirAnalise = {
status: "",
resalvas: '',
+ motivos_reprovacao: '',
data_limite_devolucao:'',
};
@@ -530,6 +531,7 @@ export const DetalhePrestacaoDeContas = () =>{
devolucao_tesouro: informacoesPrestacaoDeContas.devolucao_ao_tesouro === 'Sim',
analises_de_conta_da_prestacao: analisesDeContaDaPrestacao,
resultado_analise: stateConcluirAnalise.status,
+ motivos_reprovacao: stateConcluirAnalise.motivos_reprovacao,
devolucoes_ao_tesouro_da_prestacao:devolucao_ao_tesouro_tratado
}
}
@@ -608,7 +610,7 @@ export const DetalhePrestacaoDeContas = () =>{
const validateFormDevolucaoAoTesouro = async (values) => {
const errors = {};
values.devolucoes_ao_tesouro_da_prestacao.map((devolucao)=>{
- if (!devolucao.data || !devolucao.despesa || devolucao.devolucao_total === '' || !devolucao.motivo || !devolucao.tipo || !devolucao.valor){
+ if (!devolucao.despesa || devolucao.devolucao_total === '' || !devolucao.tipo || !devolucao.valor){
setCamposObrigatorios(true);
errors.campos_obrigatorios = "Todos os campos são obrigatórios";
}else {
diff --git a/src/componentes/dres/PrestacaoDeContas/ListaPrestacaoDeContas/index.js b/src/componentes/dres/PrestacaoDeContas/ListaPrestacaoDeContas/index.js
index 1b2f36b4c..8b7e1d224 100644
--- a/src/componentes/dres/PrestacaoDeContas/ListaPrestacaoDeContas/index.js
+++ b/src/componentes/dres/PrestacaoDeContas/ListaPrestacaoDeContas/index.js
@@ -161,10 +161,10 @@ export const ListaPrestacaoDeContas = () => {
)
};
- const dataTemplate = (rowData) => {
+ const dataTemplate = (rowData, column) => {
return (
- {rowData['data_recebimento'] ? moment(rowData['data_recebimento']).format('DD/MM/YYYY') : rowData['data_ultima_analise'] ? moment(rowData['data_ultima_analise']).format('DD/MM/YYYY') : '-'}
+ {rowData[column.field] ? moment(rowData[column.field]).format('DD/MM/YYYY') : '-'}
)
};
diff --git a/src/componentes/dres/PrestacaoDeContas/ModalConcluirAnalise.js b/src/componentes/dres/PrestacaoDeContas/ModalConcluirAnalise.js
index af526438e..f7e8dc372 100644
--- a/src/componentes/dres/PrestacaoDeContas/ModalConcluirAnalise.js
+++ b/src/componentes/dres/PrestacaoDeContas/ModalConcluirAnalise.js
@@ -35,6 +35,17 @@ export const ModalConcluirAnalise = (props) => {
/>
}
+ {props.stateConcluirAnalise.status === 'REPROVADA' &&
+
+
+
+ }
{props.stateConcluirAnalise.status === 'DEVOLVIDA' &&
<>
diff --git a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js
index d856d0228..2b34f3ad1 100644
--- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js
+++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/JustificativaDiferenca.js
@@ -1,4 +1,6 @@
import React from "react";
+import {visoesService} from "../../../../services/visoes.service";
+
export const JustificativaDiferenca = ({comparaValores, justificativaDiferenca, setJustificativaDiferenca, onChangeJustificativaDiferenca, onSubmitJustificativaDiferenca}) => {
return(
@@ -7,12 +9,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 a3b334c58..0d2f4a595 100644
--- a/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js
+++ b/src/componentes/dres/RelatorioConsolidado/RelatorioConsolidadoApuracao/TopoComBotoes.js
@@ -1,4 +1,5 @@
import React from "react";
+import {visoesService} from "../../../../services/visoes.service";
export const TopoComBotoes = ({periodoNome, contaNome, onClickGerarRelatorio}) =>{
return(
@@ -8,9 +9,12 @@ export const TopoComBotoes = ({periodoNome, contaNome, onClickGerarRelatorio}) =
-
-
-
+ {visoesService.getPermissoes(['gerar_relatorio_consolidado_dre'])
+ ?
+
+
+
+ : null}
>
)
diff --git a/src/componentes/escolas/Associacao/Membros/ConfirmaDeleteMembroDialog.js b/src/componentes/escolas/Associacao/Membros/ConfirmaDeleteMembroDialog.js
new file mode 100644
index 000000000..2e8976661
--- /dev/null
+++ b/src/componentes/escolas/Associacao/Membros/ConfirmaDeleteMembroDialog.js
@@ -0,0 +1,20 @@
+import {ModalBootstrap} from "../../../Globais/ModalBootstrap";
+
+import React from "react";
+
+export const ConfirmaDeleteMembro = (propriedades) => {
+ return (
+
+ )
+};
diff --git a/src/componentes/escolas/Associacao/Membros/index.js b/src/componentes/escolas/Associacao/Membros/index.js
index acd916946..c570ea44b 100644
--- a/src/componentes/escolas/Associacao/Membros/index.js
+++ b/src/componentes/escolas/Associacao/Membros/index.js
@@ -2,12 +2,13 @@ import React, {useEffect, useState, useMemo} from "react";
import {MenuInterno} from "../../../Globais/MenuInterno";
import {TabelaMembros} from "../TabelaMembros";
import {EditarMembro} from "../ModalMembros";
-import {getMembrosAssociacao, criarMembroAssociacao, editarMembroAssociacao, consultarRF, consultarCodEol, consultarCpfResponsavel, getUsuarios} from "../../../../services/escolas/Associacao.service";
+import {getMembrosAssociacao, criarMembroAssociacao, editarMembroAssociacao, consultarRF, consultarCodEol, consultarCpfResponsavel, getUsuarios, deleteMembroAssociacao} from "../../../../services/escolas/Associacao.service";
import {ASSOCIACAO_UUID} from '../../../../services/auth.service';
import Loading from "../../../../utils/Loading";
import {UrlsMenuInterno} from "../UrlsMenuInterno";
import {ExportaDadosDaAsssociacao} from "../ExportaDadosAssociacao";
import {visoesService} from "../../../../services/visoes.service";
+import {ConfirmaDeleteMembro} from "./ConfirmaDeleteMembroDialog";
export const MembrosDaAssociacao = () =>{
@@ -53,6 +54,7 @@ export const MembrosDaAssociacao = () =>{
const [stateFormEditarMembro, setStateFormEditarMembro] = useState(initFormMembro);
const [btnSalvarReadOnly, setBtnSalvarReadOnly] = useState(false);
const [loading, setLoading] = useState(true);
+ const [showConfirmDelete, setShowConfirmDelete] = useState(false);
useEffect(()=>{
carregaMembros();
@@ -72,13 +74,11 @@ export const MembrosDaAssociacao = () =>{
const carregaMembros = async ()=>{
let membros = await getMembrosAssociacao();
- //console.log("Carrega Membros ", membros)
setMembros(membros)
};
const carregaUsuarios = async ()=>{
let usuarios = await getUsuarios();
- //console.log('carregaUsuarios ', usuarios)
setUsuarios(usuarios);
};
@@ -112,6 +112,9 @@ export const MembrosDaAssociacao = () =>{
];
setInitialValuesMembrosDiretoria(cargos_e_infos_diretoria);
setInitialValuesMembrosConselho(cargos_e_infos_conselho);
+ } else {
+ setInitialValuesMembrosDiretoria(initDiretoria);
+ setInitialValuesMembrosConselho(initConselho);
}
};
@@ -185,6 +188,7 @@ export const MembrosDaAssociacao = () =>{
setInfosMembroSelecionado(infoMembroSelecionado)
};
+
const toggleIcon = (id) => {
setClickIconeToogle({
...clickIconeToogle,
@@ -372,6 +376,38 @@ export const MembrosDaAssociacao = () =>{
setLoading(false)
};
+ const handleDeleteMembroAction = (infoMembroSelecionado) => {
+ setInfosMembroSelecionado(infoMembroSelecionado)
+ setShowConfirmDelete(true);
+ };
+
+ const handleDeleteConfirmation = async () => {
+ setShowConfirmDelete(false);
+ await deleteMembro(infosMembroSelecionado.infos.uuid);
+ };
+
+ const closeConfirmDeleteDialog = () => {
+ setShowConfirmDelete(false);
+ };
+
+ const deleteMembro = async (uuid) => {
+ if (uuid) {
+ try {
+ const response = await deleteMembroAssociacao(uuid);
+ if (response.status === 204) {
+ console.log("Exclusão realizada com sucesso!");
+ await carregaMembros();
+ } else {
+ console.log("Erro ao excluir Membro")
+ }
+ } catch (error) {
+ console.log(error)
+ }
+
+ }
+ };
+
+
return(
@@ -393,6 +429,7 @@ export const MembrosDaAssociacao = () =>{
clickIconeToogle={clickIconeToogle}
toggleIcon={toggleIcon}
onShowEditarMembro={onShowEditarMembro}
+ onDeleteMembro={handleDeleteMembroAction}
cargos={initialValuesMembrosDiretoria}
converteNomeRepresentacao={converteNomeRepresentacao}
retornaDadosAdicionaisTabela={retornaDadosAdicionaisTabela}
@@ -404,6 +441,7 @@ export const MembrosDaAssociacao = () =>{
clickIconeToogle={clickIconeToogle}
toggleIcon={toggleIcon}
onShowEditarMembro={onShowEditarMembro}
+ onDeleteMembro={handleDeleteMembroAction}
cargos={initialValuesMembrosConselho}
converteNomeRepresentacao={converteNomeRepresentacao}
retornaDadosAdicionaisTabela={retornaDadosAdicionaisTabela}
@@ -428,6 +466,14 @@ export const MembrosDaAssociacao = () =>{
/>
+
+
);
};
\ No newline at end of file
diff --git a/src/componentes/escolas/Associacao/TabelaMembros/index.js b/src/componentes/escolas/Associacao/TabelaMembros/index.js
index eae2e1bf8..1d5a0f4ab 100644
--- a/src/componentes/escolas/Associacao/TabelaMembros/index.js
+++ b/src/componentes/escolas/Associacao/TabelaMembros/index.js
@@ -1,8 +1,8 @@
import React, {Fragment} from "react";
import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'
-import {faAngleDown, faAngleUp, faEdit} from '@fortawesome/free-solid-svg-icons'
+import {faAngleDown, faAngleUp, faEdit, faTrash} from '@fortawesome/free-solid-svg-icons'
-export const TabelaMembros = ({titulo, clickIconeToogle, toggleIcon, onShowEditarMembro, cargos, converteNomeRepresentacao, retornaDadosAdicionaisTabela}) => {
+export const TabelaMembros = ({titulo, clickIconeToogle, toggleIcon, onShowEditarMembro, cargos, converteNomeRepresentacao, retornaDadosAdicionaisTabela, onDeleteMembro}) => {
return(
<>
@@ -36,12 +36,19 @@ export const TabelaMembros = ({titulo, clickIconeToogle, toggleIcon, onShowEdita
{item.infos && item.infos.representacao ? converteNomeRepresentacao(item.infos.representacao) : ""} |
-
|
diff --git a/src/componentes/escolas/Despesas/CadastroDeDespesas/CadastroSaidaForm.js b/src/componentes/escolas/Despesas/CadastroDeDespesas/CadastroSaidaForm.js
new file mode 100644
index 000000000..e55ae7893
--- /dev/null
+++ b/src/componentes/escolas/Despesas/CadastroDeDespesas/CadastroSaidaForm.js
@@ -0,0 +1,314 @@
+import React, {useContext, useEffect, useState} from "react";
+import {Formik} from "formik";
+import {
+ YupSignupSchemaCadastroDespesaSaida,
+ validaPayloadDespesas,
+ cpfMaskContitional,
+} from "../../../../utils/ValidacoesAdicionaisFormularios";
+import MaskedInput from 'react-text-mask';
+import {getDespesasTabelas, criarDespesa} from "../../../../services/escolas/Despesas.service";
+import {DatePickerField} from "../../../Globais/DatePickerField";
+import {useParams} from 'react-router-dom';
+import {DespesaContext} from "../../../../context/Despesa";
+import "./cadastro-de-despesas.scss";
+import {metodosAuxiliares} from "../metodosAuxiliares";
+import {trataNumericos} from "../../../../utils/ValidacoesAdicionaisFormularios";
+import Loading from "../../../../utils/Loading";
+import CurrencyInput from "react-currency-input";
+import HTTP_STATUS from "http-status-codes";
+import {getReceita} from '../../../../services/escolas/Receitas.service';
+
+
+export const CadastroSaidaForm = (props) => {
+ const aux = metodosAuxiliares;
+
+ let {uuid} = useParams();
+ const despesaContext = useContext(DespesaContext);
+ const [cssEscondeDocumentoTransacao, setCssEscondeDocumentoTransacao] = useState('escondeItem');
+ const [labelDocumentoTransacao, setLabelDocumentoTransacao] = useState('');
+ const [numeroDocumentoReadOnly, setNumeroDocumentoReadOnly] = useState(false);
+ const [despesasTabelas, setDespesasTabelas] = useState([]);
+ const [exibeMsgErroValorOriginal, setExibeMsgErroValorOriginal] = useState(false);
+ const [loading, setLoading] = useState(true);
+ const [receita, setReceita] = useState(true);
+
+ useEffect(() => {
+ const carregaTabelasDespesas = async () => {
+ const resp = await getDespesasTabelas();
+ setDespesasTabelas(resp);
+ };
+
+ const buscaReceita = async () => {
+ if (uuid) {
+ getReceita(uuid).then(response => {
+ const resp = response.data;
+ setReceita(resp);
+ }).catch(error => {
+ console.log(error);
+ });
+ }
+ };
+ buscaReceita();
+ carregaTabelasDespesas();
+ setLoading(false);
+ }, [])
+
+ const initialValues = () => {
+ return despesaContext.initialValues;
+ };
+
+
+ const onSubmit = async (values) => {
+ setLoading(true);
+ validaPayloadDespesas(values, despesasTabelas);
+
+ values.rateios[0].acao_associacao = receita.acao_associacao.uuid;
+ values.rateios[0].conta_associacao = receita.conta_associacao.uuid;
+ values.rateios[0].valor_original = values.valor_original
+ values.rateios[0].valor_rateio = values.valor_original
+
+ try {
+
+ const response = await criarDespesa(values);
+ if (response.status === HTTP_STATUS.CREATED) {
+ console.log("Operação realizada com sucesso!");
+ aux.getPath();
+ } else {
+ setLoading(false);
+ }
+ } catch (error) {
+ console.log(error);
+ setLoading(false);
+ }
+
+ };
+
+ const onCancelarTrue = () => {
+ aux.getPath();
+ };
+
+ return (
+ <>
+ {loading ?
+
+ :
+
+ {props => {
+ const {
+ values,
+ setFieldValue,
+ resetForm,
+ errors,
+ } = props;
+
+ return (
+ <>
+
+ >
+ )
+ }}
+ }
+ >)
+}
\ No newline at end of file
diff --git a/src/componentes/escolas/GeracaoDaAta/VisualizacaoDaAta/index.js b/src/componentes/escolas/GeracaoDaAta/VisualizacaoDaAta/index.js
index ea9f6c8e8..d66c600a5 100644
--- a/src/componentes/escolas/GeracaoDaAta/VisualizacaoDaAta/index.js
+++ b/src/componentes/escolas/GeracaoDaAta/VisualizacaoDaAta/index.js
@@ -73,6 +73,7 @@ export const VisualizacaoDaAta = () => {
let dados_ata = await getAtas(uuid_ata);
let prestacao = await getPrestacaoDeContasDetalhe(dados_ata.prestacao_conta);
setPrestacaoDeContasDetalhe(prestacao);
+ console.log(prestacao.devolucoes_ao_tesouro_da_prestacao);
let data_da_reuniao = dados_ata.data_reuniao ? dados_ata.data_reuniao : "";
setStateFormEditarAta({
comentarios: dados_ata.comentarios,
@@ -258,6 +259,7 @@ export const VisualizacaoDaAta = () => {
Data de devolução |
Número de documento |
CPF/CNPJ do fornecedor |
+
Valor da devolução |
@@ -267,6 +269,7 @@ export const VisualizacaoDaAta = () => {
{devolucao.data ? exibeDataPT_BR(devolucao.data) : ''} |
{devolucao.despesa.numero_documento} |
{devolucao.despesa.cpf_cnpj_fornecedor} |
+ {devolucao.valor ? valorTemplate(devolucao.valor) : ''} |
))}
diff --git a/src/componentes/escolas/PrestacaoDeContas/DemonstrativoFinanceiro/index.js b/src/componentes/escolas/PrestacaoDeContas/DemonstrativoFinanceiro/index.js
index 9b33099d0..135702b11 100644
--- a/src/componentes/escolas/PrestacaoDeContas/DemonstrativoFinanceiro/index.js
+++ b/src/componentes/escolas/PrestacaoDeContas/DemonstrativoFinanceiro/index.js
@@ -66,11 +66,11 @@ export class DemonstrativoFinanceiro extends Component {
let data_inicio = this.props.periodoPrestacaoDeConta.data_inicial;
let data_fim = this.props.periodoPrestacaoDeConta.data_final;
this.setState({data_inicio: data_inicio, data_fim: data_fim})
- }
+ };
onHide = () => {
this.setState({show: false});
- }
+ };
handleChange = (name, value) => {
this.setState({
@@ -81,6 +81,9 @@ export class DemonstrativoFinanceiro extends Component {
};
gerarPrevia = async () => {
+
+
+
if (this.state.data_fim === null || this.state.data_fim === "") {
this.setState({mensagemErro: "Data final não pode ser vazia!"});
return
@@ -93,8 +96,10 @@ export class DemonstrativoFinanceiro extends Component {
return
}
- let data_fim_periodo = new Date(this.props.periodoPrestacaoDeConta.data_final)
- if (data_fim.getTime() > data_fim_periodo.getTime()) {
+ let data_fim_periodo_verifica = this.props.periodoPrestacaoDeConta.data_final;
+ let data_fim_periodo = new Date(this.props.periodoPrestacaoDeConta.data_final);
+
+ if (data_fim_periodo_verifica && data_fim.getTime() > data_fim_periodo.getTime()) {
this.setState({mensagemErro: "Data final não pode ser maior que a data final do período."});
return
}
diff --git a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/Justivicativa/index.js b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/Justivicativa/index.js
index 0deda3362..799b0827e 100644
--- a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/Justivicativa/index.js
+++ b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/Justivicativa/index.js
@@ -1,4 +1,5 @@
import React from "react";
+import {visoesService} from "../../../../../services/visoes.service";
export const Justificativa = ({textareaJustificativa, handleChangeTextareaJustificativa, periodoFechado}) => {
return(
@@ -12,7 +13,7 @@ export const Justificativa = ({textareaJustificativa, handleChangeTextareaJustif
id="justificativa"
name="justificativa"
placeholder="Escreva o comentário"
- disabled={periodoFechado}
+ disabled={periodoFechado | !visoesService.getPermissoes(['change_conciliacao_bancaria'])}
>
diff --git a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaDeLancamentosReceitas/index.js b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaDeLancamentosReceitas/index.js
index 6c2734995..010cad078 100644
--- a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaDeLancamentosReceitas/index.js
+++ b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TabelaDeLancamentosReceitas/index.js
@@ -6,6 +6,7 @@ import moment from "moment";
import {RedirectModalTabelaLancamentos} from "../../../../../utils/Modais";
import IconeNaoDemonstrado from "../../../../../assets/img/icone-nao-demonstrado.svg";
import ReactTooltip from "react-tooltip";
+import {visoesService} from "../../../../../services/visoes.service";
export const TabelaDeLancamentosReceitas = ({conciliados, receitas, checkboxReceitas, handleChangeCheckboxReceitas, dataTip, periodoFechado}) => {
@@ -53,7 +54,7 @@ export const TabelaDeLancamentosReceitas = ({conciliados, receitas, checkboxRece
const conferidoTemplate = (rowData) => {
return (
-
+
handleChangeCheckboxReceitas(e, rowData.uuid)}
name="checkConferido"
id="checkConferido"
- disabled={periodoFechado}
+ disabled={periodoFechado | !visoesService.getPermissoes(['change_conciliacao_bancaria'])}
/>
)
diff --git a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TopoComBotoes/index.js b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TopoComBotoes/index.js
index dc819e960..619ca6424 100644
--- a/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TopoComBotoes/index.js
+++ b/src/componentes/escolas/PrestacaoDeContas/DetalheDasPrestacoes/TopoComBotoes/index.js
@@ -1,4 +1,5 @@
import React from "react";
+import {visoesService} from "../../../../../services/visoes.service";
export const TopoComBotoes = ({handleClickCadastrar, btnCadastrarTexto, onSalvarTrue, contaConciliacao, showSalvar}) => {
return (
@@ -8,8 +9,12 @@ export const TopoComBotoes = ({handleClickCadastrar, btnCadastrarTexto, onSalvar
{btnCadastrarTexto &&
- {btnCadastrarTexto}
- onSalvarTrue()} className="btn btn-outline-success mt-2" disabled={!showSalvar}>Salvar
+ {(btnCadastrarTexto.includes('Receita') & visoesService.getPermissoes(['add_receita'])) | (btnCadastrarTexto.includes('Despesa') & visoesService.getPermissoes(['add_despesa']))
+ ? {btnCadastrarTexto}
+ : null}
+ {visoesService.getPermissoes(['change_conciliacao_bancaria'])
+ ? onSalvarTrue()} className="btn btn-outline-success mt-2" disabled={!showSalvar}>Salvar
+ : null}
}
diff --git a/src/componentes/escolas/PrestacaoDeContas/RelacaoDeBens/index.js b/src/componentes/escolas/PrestacaoDeContas/RelacaoDeBens/index.js
index 79bbcd534..3eda18a52 100644
--- a/src/componentes/escolas/PrestacaoDeContas/RelacaoDeBens/index.js
+++ b/src/componentes/escolas/PrestacaoDeContas/RelacaoDeBens/index.js
@@ -49,14 +49,13 @@ export default class RelacaoDeBens extends Component {
let data_inicio = this.props.periodoPrestacaoDeConta.data_inicial;
let data_fim = this.props.periodoPrestacaoDeConta.data_final;
this.setState({data_inicio: data_inicio, data_fim: data_fim})
- }
+ };
onHide = () => {
this.setState({show: false});
- }
+ };
handleChange = (name, value) => {
- console.log("")
this.setState({
...this.state,
[name]: value !== "" && value !== null ? moment(value, "YYYY-MM-DD").format("YYYY-MM-DD"): ""
@@ -77,8 +76,10 @@ export default class RelacaoDeBens extends Component {
return
}
- let data_fim_periodo = new Date(this.props.periodoPrestacaoDeConta.data_final)
- if (data_fim.getTime() > data_fim_periodo.getTime()) {
+ let data_fim_periodo_verifica = this.props.periodoPrestacaoDeConta.data_final;
+ let data_fim_periodo = new Date(this.props.periodoPrestacaoDeConta.data_final);
+
+ if (data_fim_periodo_verifica && data_fim.getTime() > data_fim_periodo.getTime()) {
this.setState({mensagemErro: "Data final não pode ser maior que a data final do período."});
return
}
diff --git a/src/componentes/escolas/Receitas/Formularios/index.js b/src/componentes/escolas/Receitas/Formularios/index.js
index 8277d88bc..2f03ed50e 100644
--- a/src/componentes/escolas/Receitas/Formularios/index.js
+++ b/src/componentes/escolas/Receitas/Formularios/index.js
@@ -9,23 +9,28 @@ import {
deletarReceita,
getReceita,
getTabelasReceita,
- getRepasse
+ getRepasses
} from '../../../../services/escolas/Receitas.service';
import {round, trataNumericos, periodoFechado, comparaObjetos} from "../../../../utils/ValidacoesAdicionaisFormularios";
import {ReceitaSchema} from '../Schemas';
import moment from "moment";
import {useParams} from 'react-router-dom';
import {ASSOCIACAO_UUID} from '../../../../services/auth.service';
-import {DeletarModalReceitas, PeriodoFechado, ErroGeral} from "../../../../utils/Modais";
+import {DeletarModalReceitas, PeriodoFechado, ErroGeral, SalvarReceita} from "../../../../utils/Modais";
import {CancelarModalReceitas} from "../CancelarModalReceitas";
import {ModalReceitaConferida} from "../ModalReceitaJaConferida";
+import {ModalSelecionaRepasse} from "../ModalSelecionaRepasse";
import {visoesService} from "../../../../services/visoes.service";
+
export const ReceitaForm = () => {
let {origem} = useParams();
let {uuid} = useParams();
- const [loading, setLoading] = useState(true)
+ const [loading, setLoading] = useState(true);
+
+ const [redirectTo, setRedirectTo] = useState('');
+ const [uuid_receita, setUuidReceita] = useState(null);
const tabelaInicial = {
tipos_receita: [],
@@ -50,11 +55,16 @@ export const ReceitaForm = () => {
const [showDelete, setShowDelete] = useState(false);
const [showPeriodoFechado, setShowPeriodoFechado] = useState(false);
const [showErroGeral, setShowErroGeral] = useState(false);
+ const [showCadastrarSaida, setShowCadastrarSaida] = useState(false);
+ const [showSalvarReceita, setShowSalvarReceita] = useState(false);
const [initialValue, setInitialValue] = useState(initial);
const [objetoParaComparacao, setObjetoParaComparacao] = useState({});
const [receita, setReceita] = useState({});
const [readOnlyValor, setReadOnlyValor] = useState(false);
const [readOnlyClassificacaoReceita, setreadOnlyClassificacaoReceita] = useState(false);
+ const [readOnlyAcaoAssociacaoReceita, setreadOnlyAcaoAssociacaoReceita] = useState(false);
+ const [readOnlyContaAssociacaoReceita, setreadOnlyContaAssociacaoReceita] = useState(false);
+ const [readOnlyTipoReceita, setreadOnlyTipoReceita] = useState(false);
const [readOnlyBtnAcao, setReadOnlyBtnAcao] = useState(false);
const [readOnlyCampos, setReadOnlyCampos] = useState(false);
@@ -64,6 +74,9 @@ export const ReceitaForm = () => {
const [showReceitaConferida, setShowReceitaConferida] = useState(false);
+ const [repasses, setRepasses] = useState([]);
+ const [showSelecionaRepasse, setShowSelecionaRepasse] = useState(false);
+
useEffect(() => {
const carregaTabelas = async () => {
getTabelasReceita().then(response => {
@@ -96,6 +109,12 @@ export const ReceitaForm = () => {
setInitialValue(init);
setReceita(resp);
periodoFechado(resp.data, setReadOnlyBtnAcao, setShowPeriodoFechado, setReadOnlyCampos, onShowErroGeral)
+ if (resp.repasse !== null) {
+ setRepasse(resp.repasse);
+ setReadOnlyValor(true);
+ setreadOnlyClassificacaoReceita(true);
+ setreadOnlyTipoReceita(true);
+ }
}).catch(error => {
console.log(error);
});
@@ -136,15 +155,24 @@ export const ReceitaForm = () => {
const payload = {
...values,
associacao: localStorage.getItem(ASSOCIACAO_UUID),
- detalhe_tipo_receita: values.detalhe_tipo_receita && values.detalhe_tipo_receita.id !== undefined ? values.detalhe_tipo_receita.id : values.detalhe_tipo_receita
+ detalhe_tipo_receita: values.detalhe_tipo_receita && values.detalhe_tipo_receita.id !== undefined ? values.detalhe_tipo_receita.id : values.detalhe_tipo_receita,
};
+
+ if (Object.keys(repasse).length !== 0) {
+ payload['repasse'] = repasse.uuid;
+ }
+
setLoading(true);
if (uuid) {
- await atualizar(uuid, payload);
+ await atualizar(uuid, payload).then(response => {
+ setShowSalvarReceita(true);
+ });
} else {
- await cadastrar(payload);
+ cadastrar(payload).then(response => {
+ setShowSalvarReceita(true);
+ setUuidReceita(response);
+ });
}
- getPath();
setLoading(false);
};
@@ -153,6 +181,7 @@ export const ReceitaForm = () => {
const response = await criarReceita(payload);
if (response.status === HTTP_STATUS.CREATED) {
console.log("Operação realizada com sucesso!");
+ return response.data.uuid;
} else {
console.log(response)
}
@@ -161,7 +190,7 @@ export const ReceitaForm = () => {
}
};
- const atualizar = async (uid, payload) => {
+ const atualizar = async (uuid, payload) => {
try {
const response = await atualizaReceita(uuid, payload);
if (response.status === HTTP_STATUS.CREATED) {
@@ -176,6 +205,7 @@ export const ReceitaForm = () => {
const onCancelarTrue = () => {
setShow(false);
+ setRedirectTo('');
getPath();
};
@@ -184,8 +214,14 @@ export const ReceitaForm = () => {
setShowDelete(false);
setShowPeriodoFechado(false);
setShowErroGeral(false);
+
};
+ const fecharSalvarCredito = () => {
+ setShowSalvarReceita(false);
+ getPath();
+ }
+
const onShowModal = () => {
setShow(true);
};
@@ -211,34 +247,41 @@ export const ReceitaForm = () => {
const getPath = () => {
let path;
- if (origem === undefined) {
+ if (redirectTo !== '') {
+ path = `${redirectTo}/${uuid_receita}`;
+ } else if (origem === undefined) {
path = `/lista-de-receitas`;
} else {
path = `/detalhe-das-prestacoes`;
}
- window.location.assign(path)
+ window.location.assign(path);
};
- const setaRepasse = async (values)=>{
- let local_repasse;
- if (values && values.acao_associacao && values.data) {
- let data_receita = moment(new Date(values.data), "YYYY-MM-DD").format("DD/MM/YYYY");
- if (uuid) {
+ const setaRepasse = async (value)=>{
+ if (value) {
+ setRepasse(value);
+ }
+
+ };
+
+ const consultaRepasses = async (value) => {
+ if (value) {
+ let tipo_receita = tabelas.tipos_receita.find(item => item.id == value);
+ if (tipo_receita.e_repasse === true) {
try {
- local_repasse = await getRepasse(values.acao_associacao, data_receita, uuid);
- setRepasse(local_repasse)
+ let listaRepasses = await getRepasses();
+ setRepasses(listaRepasses);
+ setShowSelecionaRepasse(true);
} catch (e) {
- console.log("Erro ao obter o repasse ", e)
+ console.log("Erro ao obter a listagem de repasses", e);
}
+
} else {
- try {
- local_repasse = await getRepasse(values.acao_associacao, data_receita);
- setRepasse(local_repasse)
- } catch (e) {
- console.log("Erro ao obter o repasse ", e)
- }
+ setaRepasse({});
+ setreadOnlyAcaoAssociacaoReceita(false);
+ setreadOnlyContaAssociacaoReceita(false);
+ setReadOnlyValor(false);
}
- return local_repasse;
}
};
@@ -308,10 +351,45 @@ export const ReceitaForm = () => {
return false
};
- const retornaClassificacaoReceita = (values, setFieldValue) => {
+ const e_repasse = (values) => {
+ return tabelas.tipos_receita.find(element => element.id === Number(values.tipo_receita)).e_repasse
+ }
+
+ const retornaAcoes = (values) => {
+ if (tabelas.acoes_associacao !== undefined && tabelas.acoes_associacao.length > 0 && values.tipo_receita && e_repasse(values) && Object.keys(repasse).length !== 0) {
+ let acao_associacao = tabelas.acoes_associacao.find(item => item.uuid == repasse.acao_associacao.uuid);
+ setreadOnlyAcaoAssociacaoReceita(true);
+ return (
+
+ )
+ } else if (tabelas.acoes_associacao !== undefined && tabelas.acoes_associacao.length > 0 && values.tipo_receita) {
+ let e_recurso_proprio = tabelas.tipos_receita.find(element => element.id === Number(values.tipo_receita)).e_recursos_proprios
+
+ return (tabelas.acoes_associacao.filter(item => item.e_recursos_proprios == e_recurso_proprio).map((item, key) => (
+
+ )))
+ }
- if (tabelas.categorias_receita !== undefined && tabelas.categorias_receita.length > 0 && values.acao_associacao && values.tipo_receita && Object.entries(repasse).length > 0) {
+ return tabelas.acoes_associacao !== undefined && tabelas.acoes_associacao.length > 0 ?(tabelas.acoes_associacao.map((item, key) => (
+
+ ))): null
+ }
+
+ const showBotaoCadastrarSaida = (uuid_acao_associacao, values) => {
+ if (tabelas.acoes_associacao !== undefined && tabelas.acoes_associacao.length > 0 && uuid_acao_associacao && values && values.tipo_receita) {
+ let e_recurso_proprio = tabelas.tipos_receita.find(element => element.id === Number(values.tipo_receita)).e_recursos_proprios
+ let acao = tabelas.acoes_associacao.find(item => item.uuid == uuid_acao_associacao)
+ if (acao && acao.e_recursos_proprios && e_recurso_proprio) {
+ setShowCadastrarSaida(true);
+ }
+ return acao;
+ } else {
+ setShowCadastrarSaida(false);
+ }
+ }
+ const retornaClassificacaoReceita = (values, setFieldValue) => {
+ if (tabelas.categorias_receita !== undefined && tabelas.categorias_receita.length > 0 && values !== undefined && values.acao_associacao && values.tipo_receita && Object.entries(repasse).length > 0 && uuid === undefined) {
return tabelas.categorias_receita.map((item, index) => {
let id_categoria_receita_lower = item.id.toLowerCase();
@@ -347,10 +425,11 @@ export const ReceitaForm = () => {
}
})
}else{
- if (tabelas.categorias_receita && tabelas.categorias_receita.length > 0){
+ if (tabelas.categorias_receita && tabelas.categorias_receita.length > 0 && values.tipo_receita){
return tabelas.categorias_receita.map((item)=>{
return (
+ )
+ } else if (tabelas.contas_associacao !== undefined && tabelas.contas_associacao.length > 0 && values.tipo_receita) {
const tipoReceita = tabelas.tipos_receita.find(element => element.id === Number(values.tipo_receita));
@@ -374,13 +459,12 @@ export const ReceitaForm = () => {
// Filtra as contas pelos tipos aceitos
return (
tabelas.contas_associacao.filter(conta => (tipos_conta.includes(conta.nome))).map((item, key) => (
- )
+ )
))
}
};
const validateFormReceitas = async (values) => {
-
const errors = {};
// Verifica se é devolucao e setando erro caso referencia devolucao vazio
@@ -411,49 +495,8 @@ export const ReceitaForm = () => {
errors.data = "Data do crédito não pode ser maior que a data de hoje"
}
- if (e_repasse_tipo_receita !== false && e_repasse_acao !== "" && e_repasse_acao !== "Escolha uma ação" && values.data) {
-
- try {
-
- let repasse = await setaRepasse(values);
-
- let data_digitada = moment(values.data);
- let data_inicio = moment(repasse.periodo.data_inicio_realizacao_despesas);
- let data_fim = repasse.periodo.data_fim_realizacao_despesas;
-
- if (data_fim === null) {
- data_fim = moment(new Date());
- } else {
- data_fim = moment(repasse.periodo.data_fim_realizacao_despesas);
- }
-
- if (data_digitada > data_fim || data_digitada < data_inicio) {
- errors.data = `Data inválida. A data tem que ser entre ${data_inicio.format("DD/MM/YYYY")} e ${data_fim.format("DD/MM/YYYY")}`;
- }
-
- let id_categoria_receita_lower = values.categoria_receita.toLowerCase();
-
- let valor_da_receita = eval('repasse.valor_' + id_categoria_receita_lower);
-
- const init = {
- ...initialValue,
- tipo_receita: values.tipo_receita,
- detalhe_tipo_receita: values.detalhe_tipo_receita,
- detalhe_outros: values.detalhe_outros,
- data: values.data,
- valor: Number(valor_da_receita),
- acao_associacao: values.acao_associacao,
- conta_associacao: repasse.conta_associacao.uuid,
- categoria_receita: values.categoria_receita,
- conferido: values.conferido,
- referencia_devolucao: values.referencia_devolucao,
- };
- setInitialValue(init);
- setReadOnlyValor(true);
- } catch (e) {
- console.log("Erro: ", e);
- errors.acao_associacao = 'Não existem repasses pendentes para a Associação nesta ação';
- }
+ if (tabelas.tipos_receita !== undefined && tabelas.tipos_receita.length > 0 && values.tipo_receita && e_repasse(values) && Object.keys(repasse).length !== 0) {
+ setReadOnlyValor(true);
} else {
setReadOnlyValor(false)
}
@@ -475,6 +518,29 @@ export const ReceitaForm = () => {
}
};
+ const trataRepasse = (repasse_row, setFieldValue) => {
+ setaRepasse(repasse_row);
+ setFieldValue('acao_associacao', repasse_row.acao_associacao.uuid);
+ setFieldValue('conta_associacao', repasse_row.conta_associacao.uuid);
+ setFieldValue('valor', '0,00');
+ setReadOnlyValor(true);
+ setShowSelecionaRepasse(false);
+
+ }
+
+ const atualizaValorRepasse = (value, setFieldValue) => {
+ if (Object.keys(repasse).length !== 0) {
+ let valor_formatado = new Number(repasse[`valor_${value.toLowerCase()}`]).toLocaleString('pt-BR', {
+ style: 'currency',
+ currency: 'BRL'
+ });
+
+ setFieldValue('valor', valor_formatado);
+ }
+ }
+
+
+
return (
<>
{