Skip to content

Commit

Permalink
Arquivos finais com correções na versão 2.1.0 e subimos o requisito m…
Browse files Browse the repository at this point in the history
…ínimo para o SEI 4.0.12
  • Loading branch information
neijobson committed Aug 25, 2023
1 parent 033fcc7 commit 00a04e7
Show file tree
Hide file tree
Showing 33 changed files with 874 additions and 470 deletions.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# Módulo Utilidades

## Requisitos
- SEI 4.0.9 instalado/atualizado (Não é compatível com o SEI 3.1.x)
- Verificar valor da constante de versão do SEI no arquivo /sei/web/SEI.php ou, após logado no sistema, parando o mouse sobre a logo do SEI no canto superior esquerdo.
- Requisito Mínimo é o SEI 4.0.12 instalado/atualizado - Não é compatível com versões anteriores e em versões mais recentes é necessário conferir antes se possui compatibilidade.
- Verificar valor da constante de versão no arquivo /sei/web/SEI.php ou, após logado no sistema, parando o mouse sobre a logo do SEI no canto superior esquerdo.
- Antes de executar os scripts de instalação/atualização, o usuário de acesso aos bancos de dados do SEI e do SIP, constante nos arquivos ConfiguracaoSEI.php e ConfiguracaoSip.php, deverá ter permissão de acesso total ao banco de dados, permitindo, por exemplo, criação e exclusão de tabelas.
- Os códigos-fonte do Módulo podem ser baixados a partir do link a seguir, devendo sempre utilizar a versão mais recente: [https://github.com/anatelgovbr/mod-sei-utilidades/releases](https://github.com/anatelgovbr/mod-sei-utilidades/releases "Clique e acesse")
- Solicitamos que os Órgãos que tenham instalado o Módulo preencham a pesquisa a seguir, para termos um feedback sobre sua utilização: [http://bit.ly/Form_SEI_Mod_Utilidades](http://bit.ly/Form_SEI_Mod_Utilidades "Clique e acesse")
- Se já tiver instalado a versão principal com a execução dos scripts de banco do módulo no SEI e no SIP, então basta sobrescrever os códigos e não precisa executar os scripts de banco novamente.
- Atualizações apenas de código são identificadas com o incremento apenas do terceiro dígito da versão (p. ex. v4.1.1, v4.1.2) e não envolve execução de scripts de banco.

## Procedimentos para Instalação
1. Fazer backup dos bancos de dados do SEI e do SIP.
Expand Down
40 changes: 33 additions & 7 deletions sei/scripts/sei_atualizar_versao_modulo_utilidades.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,18 @@ protected function finalizar($strMsg = null, $bolErro = false)
die;
}

protected function atualizarVersaoConectado()
protected function normalizaVersao($versao)
{
$ultimoPonto = strrpos($versao, '.');
if ($ultimoPonto !== false) {
$versao = substr($versao, 0, $ultimoPonto) . substr($versao, $ultimoPonto + 1);
}
return $versao;
}

protected function atualizarVersaoConectado()
{

try {
$this->inicializar('INICIANDO A INSTALAÇÃO/ATUALIZAÇÃO DO ' . $this->nomeDesteModulo . ' NO SEI VERSÃO ' . SEI_VERSAO);

Expand All @@ -84,11 +94,8 @@ protected function atualizarVersaoConectado()
}

//testando versao do framework
$numVersaoInfraRequerida = '1.612.3';
$versaoInfraFormatada = (int)str_replace('.', '', VERSAO_INFRA);
$versaoInfraReqFormatada = (int)str_replace('.', '', $numVersaoInfraRequerida);

if ($versaoInfraFormatada < $versaoInfraReqFormatada) {
$numVersaoInfraRequerida = '2.0.18';
if ($this->normalizaVersao(VERSAO_INFRA) < $this->normalizaVersao($numVersaoInfraRequerida)) {
$this->finalizar('VERSÃO DO FRAMEWORK PHP INCOMPATÍVEL (VERSÃO ATUAL ' . VERSAO_INFRA . ', SENDO REQUERIDA VERSÃO IGUAL OU SUPERIOR A ' . $numVersaoInfraRequerida . ')', true);
}

Expand Down Expand Up @@ -1709,9 +1716,28 @@ protected function instalarv210()
//$infraAgendamentoRN->cadastrar($infraAgendamentoDTO);
$infraAgendamentoDTO = $infraAgendamentoRN->cadastrar($infraAgendamentoDTO);

$this->logar('CRIA ÍNDICES NAS TABELAS: md_utl_controle_dsmp e md_utl_hist_controle_dsmp SOBRE A COLUNA: dth_atual');
InfraDebug::getInstance()->gravar('INICIADO ESTA EXECUÇÃO: ' . InfraData::getStrHoraAtual() );
$objInfraMetaBD->criarIndice('md_utl_controle_dsmp', 'i07_md_utl_controle_dsmp', array('dth_atual'));
$objInfraMetaBD->criarIndice('md_utl_hist_controle_dsmp', 'i07_md_utl_hist_controle_dsmp', array('dth_atual'));
InfraDebug::getInstance()->gravar('FINALIZADO ESTA EXECUÇÃO: ' . InfraData::getStrHoraAtual() );

/* EXECUCAO DA COLUNA ID_PROCEDIMENTO PARA NULL */
$this->logar('ALTERA O CAMPO id_procedimento nulo NAS TABELAS: md_utl_controle_dsmp e md_utl_hist_controle_dsmp');
InfraDebug::getInstance()->gravar('INICIADO ESTA EXECUÇÃO: ' . InfraData::getStrHoraAtual() );

$objInfraMetaBD->excluirChaveEstrangeira('md_utl_controle_dsmp', 'fk1_md_utl_controle_dsmp');
$objInfraMetaBD->alterarColuna('md_utl_controle_dsmp', 'id_procedimento', $objInfraMetaBD->tipoNumeroGrande(), 'null');

$objInfraMetaBD->excluirChaveEstrangeira('md_utl_hist_controle_dsmp', 'fk1_md_utl_hist_controle_dsmp');
$objInfraMetaBD->alterarColuna('md_utl_hist_controle_dsmp', 'id_procedimento', $objInfraMetaBD->tipoNumeroGrande(), 'null');

InfraDebug::getInstance()->gravar('FINALIZADO ESTA EXECUÇÃO: ' . InfraData::getStrHoraAtual() );
/* FIM EXECUCAO DA COLUNA ID_PROCEDIMENTO PARA NULL */

// ATUALIZACAO NA INFRA PARAMETRO
$this->logar('ATUALIZANDO PARÂMETRO ' . $this->nomeParametroModulo . ' NA TABELA infra_parametro PARA CONTROLAR A VERSÃO DO MÓDULO');
BancoSEI::getInstance()->executarSql('UPDATE infra_parametro SET valor = \'2.1.0\' WHERE nome = \'' . $this->nomeParametroModulo . '\' ');
BancoSEI::getInstance()->executarSql('UPDATE infra_parametro SET valor = \'2.1.0\' WHERE nome = \'' . $this->nomeParametroModulo . '\' ');

$this->logar('INSTALAÇÃO/ATUALIZAÇÃO DA VERSÃO 2.1.0 DO ' . $this->nomeDesteModulo . ' REALIZADA COM SUCESSO NA BASE DO SEI');
}
Expand Down
7 changes: 4 additions & 3 deletions sei/web/modulos/utilidades/README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
# Módulo Utilidades

## Requisitos
- SEI 4.0.9 instalado/atualizado (Não é compatível com o SEI 3.1.x)
- Verificar valor da constante de versão do SEI no arquivo /sei/web/SEI.php ou, após logado no sistema, parando o mouse sobre a logo do SEI no canto superior esquerdo.
- Requisito Mínimo é o SEI 4.0.12 instalado/atualizado - Não é compatível com versões anteriores e em versões mais recentes é necessário conferir antes se possui compatibilidade.
- Verificar valor da constante de versão no arquivo /sei/web/SEI.php ou, após logado no sistema, parando o mouse sobre a logo do SEI no canto superior esquerdo.
- Antes de executar os scripts de instalação/atualização, o usuário de acesso aos bancos de dados do SEI e do SIP, constante nos arquivos ConfiguracaoSEI.php e ConfiguracaoSip.php, deverá ter permissão de acesso total ao banco de dados, permitindo, por exemplo, criação e exclusão de tabelas.
- Os códigos-fonte do Módulo podem ser baixados a partir do link a seguir, devendo sempre utilizar a versão mais recente: [https://github.com/anatelgovbr/mod-sei-utilidades/releases](https://github.com/anatelgovbr/mod-sei-utilidades/releases "Clique e acesse")
- Solicitamos que os Órgãos que tenham instalado o Módulo preencham a pesquisa a seguir, para termos um feedback sobre sua utilização: [http://bit.ly/Form_SEI_Mod_Utilidades](http://bit.ly/Form_SEI_Mod_Utilidades "Clique e acesse")
- Se já tiver instalado a versão principal com a execução dos scripts de banco do módulo no SEI e no SIP, então basta sobrescrever os códigos e não precisa executar os scripts de banco novamente.
- Atualizações apenas de código são identificadas com o incremento apenas do terceiro dígito da versão (p. ex. v4.1.1, v4.1.2) e não envolve execução de scripts de banco.

## Procedimentos para Instalação
1. Fazer backup dos bancos de dados do SEI e do SIP.
Expand Down
65 changes: 41 additions & 24 deletions sei/web/modulos/utilidades/int/MdUtlAdmIntegracaoINT.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ public static function montarOperacaoSOAP($data){
}

public static function getDadosServicoREST( $post ){
$objInfraException = new InfraException();

$urlServico = trim($post['urlServico']);

Expand All @@ -60,6 +61,8 @@ public static function getDadosServicoREST( $post ){
curl_setopt_array( $curl, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_CONNECTTIMEOUT => 3,
CURLOPT_TIMEOUT => 7,
CURLOPT_CUSTOMREQUEST => $post['tipoRequisicao'],
]);

Expand All @@ -82,14 +85,23 @@ public static function getDadosServicoREST( $post ){
curl_setopt( $curl, CURLOPT_HTTPHEADER, $header );
}

$ret = self::trataRetornoCurl( curl_exec( $curl ) );
// executa a consulta no webservice
$ret = curl_exec( $curl );
$info = curl_getinfo( $curl );
$ret = self::trataRetornoCurl( $info , $ret );

if ( $ret === false ) {
$strError = curl_error( $curl );
throw new InfraException( $strError );
if ( $info['http_code'] == 0 ) $ret['msg'] = curl_error($curl);

if ( $ret['suc'] === false ) {
$strError = "Falha no serviço SARH \n\n";
$strError .= "URL acessada: $urlServico \n\n";
$strError .= "STATUS CODE: " . $ret['code'] . "\n\n";
$strError .= $ret['msg'];
$objInfraException->lancarValidacao($strError);
//throw new Exception( $strError );
} else {
curl_close( $curl );
return $ret;
return $ret['dados'];
}
}

Expand Down Expand Up @@ -164,32 +176,37 @@ private static function filtrarJSON( $arrJson ){
return json_encode( $arrDados );
}

private static function trataRetornoCurl( $ret ){
$type = gettype( $ret );

switch ($type){
case 'string':
$rs = json_decode( $ret );
if ( is_object( $rs ) )
{
if (!is_null($rs->error))
throw new InfraException($rs->message);
else
return $rs;
}
else if( is_array($rs))
{
return $rs;
}
private static function trataRetornoCurl( $info , $ret ){
$arrRet = ['suc' => false , 'msg' => null , 'dados' => null , 'code' => $info['http_code']];
$type = gettype( $ret );
$rs = json_decode( $ret );

switch ( $info['http_code'] ) {
case 200:
$arrRet['suc'] = true;
$arrRet['dados'] = $rs;
break;

case 'boolean':
return $ret;
case 404:
$arrRet['msg'] = MdUtlMensagemINT::$MSG_UTL_135;
break;

case 500:
if ( $type == 'string' && is_object( $rs ) ) {
$arrRet['msg'] = !is_null($rs->message) ? $rs->message : ( !is_null($rs->error) ? $rs->error : MdUtlMensagemINT::$MSG_UTL_133 );
} elseif ( $type == 'boolean') {
$arrRet['msg'] = MdUtlMensagemINT::$MSG_UTL_134;
} else {
$arrRet['msg'] = MdUtlMensagemINT::$MSG_UTL_133;
}
break;

default:
$arrRet['msg'] = 'Falha não Identificada';
break;
}

return $arrRet;
}

public static function montaParametrosEntrada( $arrObjsIntegracao , $arrParams ){
Expand Down
55 changes: 27 additions & 28 deletions sei/web/modulos/utilidades/int/MdUtlAdmPrmGrINT.php
Original file line number Diff line number Diff line change
Expand Up @@ -401,25 +401,25 @@ public static function recuperarTextoFrequenciaTooltipDinamico($idControleDesemp
return $retorno;
}

public static function recuperarTextoFrequenciaTooltipDinamicoMeusProcessos($idControleDesempenho = null)
public static function recuperarTextoFrequenciaTooltipDinamicoMeusProcessos($idControleDesempenho = null, $strTela = null)
{
$msgPadrao = $strTela ? MdUtlMensagemINT::setMensagemPadraoPersonalizada(MdUtlMensagemINT::$MSG_UTL_137,[$strTela]) : MdUtlMensagemINT::$MSG_UTL_136;
if (!$idControleDesempenho){
return 'O Total abrange toda e qualquer execução realizada pelo usuário logado no Tipo de Controle indicado, dentro do Período em andamento, conforme definido nos parâmetros gerais do Tipo de Controle de Desempenho.\n \n Para o Tipo de Controle selecionado, o Período de distribuição e acompanhamento é "Semanal", tendo sempre início toda segunda-feira às 0h, o que marca o fim do Período anterior;';
return $msgPadrao;
}

$dados = MdUtlAdmPrmGrINT::recuperarTextoFrequenciaTooltipDinamico($idControleDesempenho);

return 'O Total abrange toda e qualquer execução realizada pelo usuário logado no Tipo de Controle indicado, dentro do Período em andamento, conforme definido nos parâmetros gerais do Tipo de Controle de Desempenho.\n \n '. $dados['textoFrequencia'];
return $msgPadrao ."\n \n". $dados['textoFrequencia'];
}

public static function recuperarTextoFrequenciaTooltipDinamicoDistribuirProcessos($idControleDesempenho)
{
$msgPadrao = MdUtlMensagemINT::$MSG_UTL_136;
$msgDist = 'A Carga Exigível no Período Atual somente será exibida depois que for aplicado o filtro "Membro Participante". \n \n '. $msgPadrao;
if (!$idControleDesempenho) {
return 'O Total de Tempo Executado no Período somente será exibido depois que for aplicado o filtro "Responsável".\n \n O Total abrange toda e qualquer execução realizada pelo responsável no Tipo de Controle indicado, dentro do Período em andamento, conforme definido nos parâmetros gerais do Tipo de Controle de Desempenho.\n \n Para o Tipo de Controle selecionado, o Período de distribuição e acompanhamento é "Semanal", tendo sempre início toda segunda-feira às 0h, o que marca o fim do Período anterior;';
return $msgDist;
}

$dados = MdUtlAdmPrmGrINT::recuperarTextoFrequenciaTooltipDinamico($idControleDesempenho);
return 'O Total de Tempo Executado no Período somente será exibido depois que for aplicado o filtro "Responsável".\n \n O Total abrange toda e qualquer execução realizada pelo responsável no Tipo de Controle indicado, dentro do Período em andamento, conforme definido nos parâmetros gerais do Tipo de Controle de Desempenho.\n \n '. $dados['textoFrequencia'];
return $msgDist ."\n \n". $dados['textoFrequencia'];
}

public static function recuperarTextoFrequenciaTooltipDinamicoDistribuirPessoaCargaHoraria($idControleDesempenho)
Expand Down Expand Up @@ -464,26 +464,25 @@ public static function recuperarTextoFrequenciaTooltipDistribuicaoDinamicoCargaH

public static function retornaTipoPeriodo($idTipoControle)
{
$objMdUtlAdmPrmGrRN = new MdUtlAdmPrmGrRN();
$objMdUtlAdmPrmGrDTO = new MdUtlAdmPrmGrDTO();
$objMdUtlAdmPrmGrDTO->setNumIdMdUtlAdmPrmGr($idTipoControle);
$objMdUtlAdmPrmGrDTO->retStrStaFrequencia();
$objMdUtlAdmPrmGr = $objMdUtlAdmPrmGrRN->consultar($objMdUtlAdmPrmGrDTO);

$retorno = '';
switch($objMdUtlAdmPrmGr->getStrStaFrequencia()){
case MdUtlAdmPrmGrRN::$FREQUENCIA_DIARIO:
$retorno = MdUtlAdmPrmGrRN::$STR_FREQUENCIA_DIARIO;
break;

case MdUtlAdmPrmGrRN::$FREQUENCIA_SEMANAL:
$retorno = MdUtlAdmPrmGrRN::$STR_FREQUENCIA_SEMANAL;
break;

case MdUtlAdmPrmGrRN::$FREQUENCIA_MENSAL:
$retorno = MdUtlAdmPrmGrRN::$STR_FREQUENCIA_MENSAL;
break;
}
$objMdUtlAdmTpCtrlDTO = new MdUtlAdmTpCtrlDesempDTO();
$objMdUtlAdmTpCtrlDTO->setNumIdMdUtlAdmTpCtrlDesemp($idTipoControle);
$objMdUtlAdmTpCtrlDTO->retStrStaFrequencia();
$objMdUtlAdmTpCtrlDTO = ( new MdUtlAdmTpCtrlDesempRN() )->consultar($objMdUtlAdmTpCtrlDTO);

$retorno = '';
switch($objMdUtlAdmTpCtrlDTO->getStrStaFrequencia()){
case MdUtlAdmPrmGrRN::$FREQUENCIA_DIARIO:
$retorno = MdUtlAdmPrmGrRN::$STR_FREQUENCIA_DIARIO;
break;

case MdUtlAdmPrmGrRN::$FREQUENCIA_SEMANAL:
$retorno = MdUtlAdmPrmGrRN::$STR_FREQUENCIA_SEMANAL;
break;

case MdUtlAdmPrmGrRN::$FREQUENCIA_MENSAL:
$retorno = MdUtlAdmPrmGrRN::$STR_FREQUENCIA_MENSAL;
break;
}
return $retorno;
}

Expand Down
37 changes: 18 additions & 19 deletions sei/web/modulos/utilidades/int/MdUtlAdmPrmGrUsuINT.php
Original file line number Diff line number Diff line change
Expand Up @@ -360,23 +360,27 @@ public static function buscarDadosCargaUsuarioCompleto( $post ){

$tipoPeriodo = '';
if ($post['idTipoControle'] && count($post['idTipoControle']) == 1) {
$tipoPeriodo = MdUtlAdmPrmGrINT::retornaTipoPeriodo(current($post['idTipoControle']));
$retorno['tipoPeriodo'] = MdUtlAdmPrmGrINT::retornaTipoPeriodo(current($post['idTipoControle']));
}

$dadosChefia = ( new MdUtlAdmPrmGrUsuRN() )->validaUsuarioIsChefiaImediata( [ $arrIdsPrmGr , $post['idUsuarioParticipante'] ]);

$xml = '<Documento>';
$xml .= '<ValorCarga>' . $retorno['totalCarga'] . '</ValorCarga>';
$xml .= '<ValorUndEs>' . $retorno['totalUnidEsforco'] . '</ValorUndEs>';
$xml .= '<ValorUndEsExecutado>' . $retorno['unidEsforcoHist'] . '</ValorUndEsExecutado>';
$xml .= '<ValorTempoPendenteExecucao>' . $retorno['valorTempoPendenteExecucao'] . '</ValorTempoPendenteExecucao>';
$xml .= '<TipoPeriodo>' . $tipoPeriodo . '</TipoPeriodo>';

if( $dadosChefia ) $xml .= '<ChefeImediato>S</ChefeImediato>';
$retorno['isChefeImediato'] = $dadosChefia ? 'S' : 'N';

$xml .= '</Documento>';

return $xml;
if ( isset( $post['isRetornoXML'] ) && $post['isRetornoXML'] === false ) {
return $retorno;
} else {
$xml = '<Documento>';
$xml .= '<ValorCarga>' . $retorno['totalCarga'] . '</ValorCarga>';
$xml .= '<ValorUndEs>' . $retorno['totalUnidEsforco'] . '</ValorUndEs>';
$xml .= '<ValorUndEsExecutado>' . $retorno['unidEsforcoHist'] . '</ValorUndEsExecutado>';
$xml .= '<ValorTempoPendenteExecucao>' . $retorno['valorTempoPendenteExecucao'] . '</ValorTempoPendenteExecucao>';
$xml .= '<TipoPeriodo>' . $retorno['tipoPeriodo'] . '</TipoPeriodo>';
$xml .= '<ChefeImediato>'. $retorno['isChefeImediato'] .'</ChefeImediato>';
$xml .= '</Documento>';

return $xml;
}
}

public static function buscarCargaPadrao( $post ){
Expand Down Expand Up @@ -419,11 +423,6 @@ public static function arrDadosCargaUsuario($idUsuarioParticipante, $idParam, $n
$objMdUtlHistControleDsmpRN = new MdUtlHistControleDsmpRN();
$objMdUtlPrazoRN = new MdUtlPrazoRN();

$objMdUtlPrmGrDTO = new MdUtlAdmPrmGrDTO();
$objMdUtlPrmGrDTO->setNumIdMdUtlAdmPrmGr($idParam);
$objMdUtlPrmGrDTO->retDtaDataCorte();
$objMdUtlPrmGrDTO = (new MdUtlAdmPrmGrRN())->consultar($objMdUtlPrmGrDTO);

$arrDatasFiltro = $objMdUtlPrazoRN->getDatasPeriodoAtual($idParam);

#if (empty($arrDatasFiltro)) $arrDatasFiltro = $objMdUtlPrazoRN->getDatasPorFrequencia($inicioPeriodo);
Expand All @@ -437,8 +436,8 @@ public static function arrDadosCargaUsuario($idUsuarioParticipante, $idParam, $n
$totalTempoExecucaoExecutadoHist = $tempoExecucaoExecutado + $tempoExecucaoExecutadoHist;

$arrPeriodo = $objMdUtlAdmPrmGrUsuRN->getDiasUteisNoPeriodo([$staFrequencia]);
$diasUteis = $arrPeriodo['numFrequencia'];
$totalCarga = $objMdUtlAdmPrmGrUsuRN->verificaCargaPadrao(array($idUsuarioParticipante, $idParam, $numCargaPadrao, $numPercentualTele, $diasUteis));

$totalCarga = $objMdUtlAdmPrmGrUsuRN->verificaCargaPadrao(array($idUsuarioParticipante, $idParam, $numCargaPadrao, $numPercentualTele, $arrPeriodo));

$valorTempoPendenteExecucao = MdUtlAdmPrmGrUsuINT::retornaTempoPendenteExecucao($idUsuarioParticipante, $idTipoControle);

Expand Down
Loading

0 comments on commit 00a04e7

Please sign in to comment.