Skip to content

Commit

Permalink
Merge branch 'release/1.27.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
alcfernandes committed Feb 22, 2022
2 parents 9c8a4de + f1a1481 commit b1d72a0
Show file tree
Hide file tree
Showing 30 changed files with 985 additions and 550 deletions.
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,18 @@ Front da aplicação _SIG.Escola_ da Secretaria de Educação da cidade de São

License: MIT

Versão: 1.26.0
Versão: 1.27.0

## Release Notes

### 1.27.0 - 22/02/2022 - Entregas da Sprint 35
* UE > Notificações de reprovação agora informam ou não os motivos dependendo das permissões do destinatário
* UE > Ata de apresentação passa a pedir e exibir justificativa para a existência de repasses pendentes
* UE e DRE > Consulta de resumo de acertos passa a exibir informação de data de retorno de devolução
* UE > Verificação de saldo no momento de lançamento de despesa agora considera saldos anteriores mesmo de períodos abertos
* DRE > Inclusão de campo para informação de recomendações ao aprovar uma PC com ressalvas
* 🐞 Correção de bugs

### 1.26.0 - 07/02/2022 - Entregas da Sprint 34
* UE > A conciliação bancária agora só trada de gastos; créditos são conciliados automaticamente
* UE > Várias mudanças na forma que a conciliação bancária trata transações de períodos anteriores
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "ptrf",
"version": "1.26.0",
"version": "1.27.0",
"private": true,
"dependencies": {
"@fortawesome/fontawesome-svg-core": "^1.2.27",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,19 @@ const CardsInfoDevolucaoSelecionada = ({objetoConteudoCard}) => {
<div className="card-body card-info-devolucao-para-acerto-dre pb-1">
<h5 className="card-title"><img src={IconeDevolucaoPrazoReenvio} alt="" className="img-fluid"/></h5>
<p className="card-text fonte-16 mb-0"><strong>Prazo para reenvio:</strong> </p>
<p className="card-text texto-info pb-0">{objetoConteudoCard.devolucao_prestacao_conta && objetoConteudoCard.devolucao_prestacao_conta.data ? dataTemplate(null, null, objetoConteudoCard.devolucao_prestacao_conta.data_limite_ue) : ''}</p>
<p className="card-text texto-info pb-0">{objetoConteudoCard.devolucao_prestacao_conta && objetoConteudoCard.devolucao_prestacao_conta.data_limite_ue ? dataTemplate(null, null, objetoConteudoCard.devolucao_prestacao_conta.data_limite_ue) : ''}</p>
</div>
</div>

{objetoConteudoCard.devolucao_prestacao_conta && objetoConteudoCard.devolucao_prestacao_conta.data_retorno_ue &&
<div className="card">
<div className="card-body card-info-devolucao-para-acerto-dre pb-1">
<h5 className="card-title"><img src={IconeDevolucaoData} alt="" className="img-fluid"/></h5>
<p className="card-text fonte-16 mb-0"><strong>Data de devolução da UE:</strong> </p>
<p className="card-text texto-info pb-0">{dataTemplate(null, null, objetoConteudoCard.devolucao_prestacao_conta.data_retorno_ue)}</p>
</div>
</div>
}
</div>
</>
)
Expand Down
105 changes: 85 additions & 20 deletions src/componentes/Globais/GestaoDePerfis/GestaoDePerfisForm.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,20 +54,27 @@ export const GestaoDePerfisForm = () =>{


const exibeGrupos = useCallback(async (visao_selecionada_parametro='')=>{

let get_visoes = await getVisoes()
let grupos

setGrupos([])
let lista = [];

if (visao_selecionada_parametro instanceof Array && visao_selecionada_parametro.length > 0){
if(visao_selecionada_parametro.includes("SME")){
grupos = await getGrupos("SME");
lista.push(...grupos);
}

visao_selecionada_parametro && visao_selecionada_parametro.length > 0 && visao_selecionada_parametro.map(async (visao_id)=>{
let nome = get_visoes.filter(element => parseInt(element.id) === parseInt(visao_id))
grupos = await getGrupos(nome[0].nome);
setGrupos(prevState => [...prevState, ...grupos]);
})
}else {
if(visao_selecionada_parametro.includes("DRE")){
grupos = await getGrupos("DRE");
lista.push(...grupos);
}

if(visao_selecionada_parametro.includes("UE")){
grupos = await getGrupos("UE");
lista.push(...grupos);
}
setGrupos(lista)
}
else{
grupos = await getGrupos(visao_selecionada);
setGrupos(grupos);
}
Expand Down Expand Up @@ -235,7 +242,7 @@ export const GestaoDePerfisForm = () =>{
let ids_visoes = [];
if (dados_usuario.visoes && dados_usuario.visoes.length > 0){
dados_usuario.visoes.map((visao)=>
ids_visoes.push(visao.id)
ids_visoes.push(visao.nome)
);
}

Expand Down Expand Up @@ -528,14 +535,16 @@ export const GestaoDePerfisForm = () =>{
unidade: codigoEolUnidade,
};
} else {
let ids_visoes = recuperaIdsVisoes(values.visoes)

payload = {
e_servidor: values.e_servidor,
username: values.username,
name: values.name,
email: values.email ? values.email : "",
groups: grupos_concatenados_sem_repeticao,
unidade: null,
visoes: values.visoes,
visoes: ids_visoes,
};
}

Expand Down Expand Up @@ -685,11 +694,11 @@ export const GestaoDePerfisForm = () =>{
let _visoes
const { checked, value } = e.target;
if (checked) {
setFieldValue("visoes", [...values.visoes, parseInt(value)]);
_visoes = [...values.visoes, parseInt(value)]
setFieldValue("visoes", [...values.visoes, value]);
_visoes = [...values.visoes, value]
} else {
setFieldValue("visoes", values.visoes.filter((v) => v !== parseInt(value)));
_visoes = values.visoes.filter((v) => v !== parseInt(value))
setFieldValue("visoes", values.visoes.filter((v) => v !== value));
_visoes = values.visoes.filter((v) => v !== value)
}
exibeGrupos(_visoes)
};
Expand Down Expand Up @@ -759,12 +768,22 @@ export const GestaoDePerfisForm = () =>{
}
}, [visoes])

const pesquisaPermissaoExibicaoVisao = useCallback((nome_visao)=>{
const pesquisaPermissaoExibicaoVisao = useCallback((visao)=>{
let ret = exibePermissaoExibicaoVisoes()
let editavel
if (ret){
editavel = ret.filter((element => element.nome === nome_visao))
editavel = editavel[0].editavel
if(visao.includes("SME")){
editavel = ret.filter((element => element.nome === "SME"))
editavel = editavel[0].editavel
}
if(visao.includes("DRE")){
editavel = ret.filter((element => element.nome === "DRE"))
editavel = editavel[0].editavel
}
if(visao.includes("UE")){
editavel = ret.filter((element => element.nome === "UE"))
editavel = editavel[0].editavel
}
}
return editavel
}, [exibePermissaoExibicaoVisoes])
Expand All @@ -775,7 +794,7 @@ export const GestaoDePerfisForm = () =>{

let _visoes = []

_visoes.push(visao.id)
_visoes.push(visao.nome)

setStatePerfisForm({
...statePerfisForm,
Expand All @@ -788,6 +807,51 @@ export const GestaoDePerfisForm = () =>{
setaVisaoUE()
}, [visoes])


const recuperaIdsVisoes = (visoesSelecionadas) => {
let lista_ids = []

for(let visao=0; visao<=visoesSelecionadas.length-1; visao++){
let id = parseInt(visoes.find(element => element.nome === visoesSelecionadas[visao]).id)
lista_ids.push(id)
}

return lista_ids;
}

const evitaDuplicacao = (grupos) => {
let lista = [];

for(let i=0; i<= grupos.length-1; i++){
let id = grupos[i].id
let index = lista.findIndex(val => val.id === id);

if(index < 0){
let objeto = {
id: id,
visao: [grupos[i].visao],
descricao: grupos[i].descricao,
nome: grupos[i].nome
}

lista.push(objeto);
}
else{
let novas_visoes = []

let visao_que_ja_esta_na_lista = lista[index].visao
novas_visoes.push(...visao_que_ja_esta_na_lista)

let visao_que_nao_esta_na_lista = grupos[i].visao
novas_visoes.push(visao_que_nao_esta_na_lista)

lista[index].visao = novas_visoes
}
}

return lista
}

return (
<PaginasContainer>

Expand Down Expand Up @@ -847,6 +911,7 @@ export const GestaoDePerfisForm = () =>{
pesquisaVisao={pesquisaVisao}
pesquisaPermissaoExibicaoVisao={pesquisaPermissaoExibicaoVisao}
exibeGrupos={exibeGrupos}
evitaDuplicacao={evitaDuplicacao}
/>
</div>
</>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export const GestaoDePerfisFormFormik = (
serviceTemUnidadeUE,
pesquisaVisao,
pesquisaPermissaoExibicaoVisao,
evitaDuplicacao,
}) => {

return (
Expand Down Expand Up @@ -253,12 +254,12 @@ export const GestaoDePerfisFormFormik = (
type="checkbox"
name="visoes"
id={visao.nome}
value={visao.id}
value={visao.nome}
onChange={(e) => {
handleChangeVisao(e, setFieldValue, values)
getEstadoInicialVisoesChecked()
}}
checked={props.values.visoes.includes(parseInt(visao.id))}
checked={props.values.visoes.includes(visao.nome)}
disabled={!visao.editavel || initPerfisForm.visao === "UE"}
/>
<label className="form-check-label" htmlFor={visao.nome}>{visao.nome}</label>
Expand All @@ -275,8 +276,9 @@ export const GestaoDePerfisFormFormik = (
<label htmlFor="groups">Grupos</label>
<div className="card">
<div className="card-body p-2">
{grupos && grupos.length > 0 && grupos.map((grupo, index_grupos) => (
<div className="form-group form-check mb-0" key={index_grupos}>
{grupos && grupos.length > 0 &&
evitaDuplicacao(grupos).map((grupo, index_grupos) => (
<div className="form-group form-check mb-0" key={index_grupos}>
{pesquisaPermissaoExibicaoVisao(grupo.visao) &&
<>
<input
Expand All @@ -294,7 +296,7 @@ export const GestaoDePerfisFormFormik = (
<label className="form-check-label" htmlFor={grupo.nome}>{grupo.nome}</label>
</>
}
</div>
</div>
))}
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/componentes/Globais/ModalBootstrap/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ export const ModalBootstrapFormConcluirAnalise = (propriedades) =>{
// Os botões de Cancelar e Salvar estão dentro do próprio form, pois utilizei Formik para validações
return (
<Fragment>
<Modal centered show={propriedades.show} onHide={propriedades.onHide}>
<Modal centered show={propriedades.show} onHide={propriedades.onHide} size='lg'>
<Modal.Header>
<Modal.Title>{propriedades.titulo}</Modal.Title>
</Modal.Header>
Expand Down
12 changes: 6 additions & 6 deletions src/componentes/Globais/SidebarLeft/getUrls.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,18 +100,18 @@ const GetUrls = () =>{

let dados_usuario_logado = visoesService.getDadosDoUsuarioLogado();

if (dados_usuario_logado.visao_selecionada.nome === 'SME'){
if (dados_usuario_logado && dados_usuario_logado.visao_selecionada && dados_usuario_logado.visao_selecionada.nome && dados_usuario_logado.visao_selecionada.nome === 'SME'){
return UrlsMenuSME
}else if(dados_usuario_logado.visao_selecionada.nome === 'DRE'){
}else if(dados_usuario_logado && dados_usuario_logado.visao_selecionada && dados_usuario_logado.visao_selecionada.nome && dados_usuario_logado.visao_selecionada.nome === 'DRE'){
return UrlsMenuDres
}else if (dados_usuario_logado.visao_selecionada.nome === 'UE'){
}else if (dados_usuario_logado && dados_usuario_logado.visao_selecionada && dados_usuario_logado.visao_selecionada.nome && dados_usuario_logado.visao_selecionada.nome === 'UE'){
return UrlsMenuEscolas
}else {
if ( dados_usuario_logado.visoes.find(visao=> visao.tipo === 'SME')){
if (dados_usuario_logado && dados_usuario_logado.visoes && dados_usuario_logado.visoes.find(visao=> visao.tipo === 'SME')){
return UrlsMenuSME
}else if (dados_usuario_logado.visoes.find(visao=> visao.tipo === 'DRE')){
}else if (dados_usuario_logado && dados_usuario_logado.visoes && dados_usuario_logado.visoes.find(visao=> visao.tipo === 'DRE')){
return UrlsMenuDres
}else if (dados_usuario_logado.visoes.find(visao=> visao.tipo === 'UE')){
}else if (dados_usuario_logado && dados_usuario_logado.visoes && dados_usuario_logado.visoes.find(visao=> visao.tipo === 'UE')){
return UrlsMenuEscolas
}else {
return UrlsMenuEscolas
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import ArquivosDeReferenciaVisualizacaoDownload from "./ArquivosDeReferenciaVisu
import {FontAwesomeIcon} from "@fortawesome/react-fontawesome";
import {faExclamationTriangle} from "@fortawesome/free-solid-svg-icons";

export const TabsArquivosDeReferencia = ({prestacaoDeContas, infoAta, toggleBtnEscolheConta, exibeAtaPorConta, clickBtnEscolheConta, infoAtaPorConta, ...rest}) => {
export const TabsArquivosDeReferencia = ({valoresReprogramadosAjustes, setValoresReprogramadosAjustes, prestacaoDeContas, infoAta, toggleBtnEscolheConta, exibeAtaPorConta, clickBtnEscolheConta, infoAtaPorConta, ...rest}) => {

return (
<>
Expand Down Expand Up @@ -90,6 +90,8 @@ export const TabsArquivosDeReferencia = ({prestacaoDeContas, infoAta, toggleBtnE
>

<ResumoFinanceiroTabelaAcoes
setValoresReprogramadosAjustes={setValoresReprogramadosAjustes}
valoresReprogramadosAjustes={valoresReprogramadosAjustes}
infoAta={infoAtaPorConta}
valorTemplate={rest.valorTemplate}
toggleBtnTabelaAcoes={rest.toggleBtnTabelaAcoes}
Expand Down
Loading

0 comments on commit b1d72a0

Please sign in to comment.