From 00a04e7d29c0ca7ebf1f26073cf3b246e82b2ad8 Mon Sep 17 00:00:00 2001 From: Nei Jobson Date: Fri, 25 Aug 2023 16:28:07 -0300 Subject: [PATCH] =?UTF-8?q?Arquivos=20finais=20com=20corre=C3=A7=C3=B5es?= =?UTF-8?q?=20na=20vers=C3=A3o=202.1.0=20e=20subimos=20o=20requisito=20m?= =?UTF-8?q?=C3=ADnimo=20para=20o=20SEI=204.0.12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +- ...sei_atualizar_versao_modulo_utilidades.php | 40 +- sei/web/modulos/utilidades/README.md | 7 +- .../utilidades/int/MdUtlAdmIntegracaoINT.php | 65 +-- .../utilidades/int/MdUtlAdmPrmGrINT.php | 55 ++- .../utilidades/int/MdUtlAdmPrmGrUsuINT.php | 37 +- .../utilidades/int/MdUtlMensagemINT.php | 6 +- .../md_utl_adm_integracao_cadastro_js.php | 73 ++-- .../md_utl_adm_prm_gr_cadastro_js.php | 28 +- .../utilidades/md_utl_analise_cadastro.php | 69 ++- .../utilidades/md_utl_analise_cadastro_js.php | 12 +- .../md_utl_controle_dsmp_associacao.php | 24 +- .../md_utl_distrib_usuario_cadastro.php | 4 +- .../md_utl_distrib_usuario_lista.php | 2 +- .../modulos/utilidades/md_utl_funcoes_js.php | 4 +- .../modulos/utilidades/md_utl_geral_js.php | 1 + .../md_utl_meus_processos_dsmp_lista.php | 2 +- .../utilidades/md_utl_revisao_cadastro.php | 8 + .../utilidades/md_utl_revisao_cadastro_js.php | 6 - ...md_utl_triag_analise_rev_calculo_tempo.php | 18 +- .../utilidades/md_utl_triagem_cadastro.php | 14 +- .../utilidades/md_utl_triagem_cadastro_js.php | 14 +- .../utilidades/rn/MdUtlAdmAtividadeRN.php | 84 ++-- .../modulos/utilidades/rn/MdUtlAdmPrmGrRN.php | 27 +- .../utilidades/rn/MdUtlAdmPrmGrUsuCargaRN.php | 119 ++++-- .../utilidades/rn/MdUtlAdmPrmGrUsuRN.php | 45 +- .../rn/MdUtlAgendamentoAutomaticoRN.php | 394 +++++++++++------- .../utilidades/rn/MdUtlControleDsmpRN.php | 19 +- .../utilidades/rn/MdUtlHistControleDsmpRN.php | 34 +- .../rn/MdUtlRelAnaliseProdutoRN.php | 26 ++ .../utilidades/rn/MdUtlRelTriagemAtvRN.php | 45 +- .../modulos/utilidades/rn/MdUtlTriagemRN.php | 36 +- ...sip_atualizar_versao_modulo_utilidades.php | 19 +- 33 files changed, 874 insertions(+), 470 deletions(-) diff --git a/README.md b/README.md index e70caa6..7f0d5c3 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/sei/scripts/sei_atualizar_versao_modulo_utilidades.php b/sei/scripts/sei_atualizar_versao_modulo_utilidades.php index 0d24f55..7b0cdb9 100644 --- a/sei/scripts/sei_atualizar_versao_modulo_utilidades.php +++ b/sei/scripts/sei_atualizar_versao_modulo_utilidades.php @@ -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); @@ -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); } @@ -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'); } diff --git a/sei/web/modulos/utilidades/README.md b/sei/web/modulos/utilidades/README.md index e70caa6..7f0d5c3 100644 --- a/sei/web/modulos/utilidades/README.md +++ b/sei/web/modulos/utilidades/README.md @@ -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. diff --git a/sei/web/modulos/utilidades/int/MdUtlAdmIntegracaoINT.php b/sei/web/modulos/utilidades/int/MdUtlAdmIntegracaoINT.php index 966fe28..9ae7b1e 100644 --- a/sei/web/modulos/utilidades/int/MdUtlAdmIntegracaoINT.php +++ b/sei/web/modulos/utilidades/int/MdUtlAdmIntegracaoINT.php @@ -46,6 +46,7 @@ public static function montarOperacaoSOAP($data){ } public static function getDadosServicoREST( $post ){ + $objInfraException = new InfraException(); $urlServico = trim($post['urlServico']); @@ -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'], ]); @@ -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']; } } @@ -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 ){ diff --git a/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrINT.php b/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrINT.php index e53b2eb..4e084f9 100644 --- a/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrINT.php +++ b/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrINT.php @@ -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) @@ -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; } diff --git a/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrUsuINT.php b/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrUsuINT.php index 891facf..4af23d2 100644 --- a/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrUsuINT.php +++ b/sei/web/modulos/utilidades/int/MdUtlAdmPrmGrUsuINT.php @@ -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 = ''; - $xml .= '' . $retorno['totalCarga'] . ''; - $xml .= '' . $retorno['totalUnidEsforco'] . ''; - $xml .= '' . $retorno['unidEsforcoHist'] . ''; - $xml .= '' . $retorno['valorTempoPendenteExecucao'] . ''; - $xml .= '' . $tipoPeriodo . ''; - - if( $dadosChefia ) $xml .= 'S'; + $retorno['isChefeImediato'] = $dadosChefia ? 'S' : 'N'; - $xml .= ''; - - return $xml; + if ( isset( $post['isRetornoXML'] ) && $post['isRetornoXML'] === false ) { + return $retorno; + } else { + $xml = ''; + $xml .= '' . $retorno['totalCarga'] . ''; + $xml .= '' . $retorno['totalUnidEsforco'] . ''; + $xml .= '' . $retorno['unidEsforcoHist'] . ''; + $xml .= '' . $retorno['valorTempoPendenteExecucao'] . ''; + $xml .= '' . $retorno['tipoPeriodo'] . ''; + $xml .= ''. $retorno['isChefeImediato'] .''; + $xml .= ''; + + return $xml; + } } public static function buscarCargaPadrao( $post ){ @@ -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); @@ -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); diff --git a/sei/web/modulos/utilidades/int/MdUtlMensagemINT.php b/sei/web/modulos/utilidades/int/MdUtlMensagemINT.php index d560e03..f6dda25 100644 --- a/sei/web/modulos/utilidades/int/MdUtlMensagemINT.php +++ b/sei/web/modulos/utilidades/int/MdUtlMensagemINT.php @@ -145,7 +145,11 @@ class MdUtlMensagemINT extends InfraINT { public static $MSG_UTL_130 = 'Para remover este membro, antes é necessário preencher a Data Fim de Participação'; public static $MSG_UTL_131 = 'Não é permitido solicitar ajuste de prazo, pois em nenhuma das atividades selecionadas deste processo possuem prazo definido.'; public static $MSG_UTL_132 = 'Não foi possível distribuir processos para o usuário logado, pois nenhum processo foi encontrado considerando as parametrizações da Distribuição.'; - + public static $MSG_UTL_133 = "Erro Interno no Servidor de Resposta\nHá um problema com o recurso que você está procurando e ele não pode ser exibido"; + public static $MSG_UTL_134 = "Falha na execução da consulta no webservice"; + public static $MSG_UTL_135 = "Nenhum recurso correspondente encontrado para determinada solicitação"; + public static $MSG_UTL_136 = 'A Carga Exigível no Período Atual corresponde ao Tempo de Execução exigido pelo usuário logado no Tipo de Controle indicado durante o período atual, abatendo o tempo de ausências formais (afastamentos, licenças e férias) ou o tempo de quando estiver no exercício de Chefia Imediata (inclusive Substituição), caso na Administração do Módulo no SEI esteja ativada a integração com o Sistema de Recursos Humanos.'; + public static $MSG_UTL_137 = 'A Carga Exigível no Período Atual corresponde ao Tempo de Execução exigido pelo Membro Responsável pela @VALOR1@ no Tipo de Controle indicado durante o período atual, abatendo o tempo de ausências formais (afastamentos, licenças e férias) ou o tempo de quando estiver no exercício de Chefia Imediata (inclusive Substituição), caso na Administração do Módulo no SEI esteja ativada a integração com o Sistema de Recursos Humanos.'; public static function getMensagem($msg, $arrParams = null){ $isPersonalizada = count(explode('@VALOR', self::$MSG_UTL_10)) > 1; diff --git a/sei/web/modulos/utilidades/md_utl_adm_integracao_cadastro_js.php b/sei/web/modulos/utilidades/md_utl_adm_integracao_cadastro_js.php index 9f528ff..22121a8 100644 --- a/sei/web/modulos/utilidades/md_utl_adm_integracao_cadastro_js.php +++ b/sei/web/modulos/utilidades/md_utl_adm_integracao_cadastro_js.php @@ -381,6 +381,33 @@ function limparCamposHeader() { }); } + /* + * Função acionada pelo clique do botao # Mapear # + * */ + function validarMapear(){ + if (infraTrim(document.querySelector('#txtUrlDefServico').value) == '') { + alert(setMensagemPersonalizada(msgDef, ['URL Definição do Serviço'])); + document.querySelector('#txtUrlDefServico').focus(); + return false; + } + + if (infraTrim(document.querySelector('#txtUrlServico').value) == '') { + alert(setMensagemPersonalizada(msgDef, ['URL do Endpoint da Operação'])); + document.querySelector('#txtUrlServico').focus(); + return false; + } + + let tpFuncionalidade = document.querySelector('#selFuncionalidade').value; + let urlServico = document.querySelector('#txtUrlServico').value; + let arrUrlServico = urlServico.split('/'); + + objOperacao.operacao = arrUrlServico.pop(); + objOperacao.validado = false; + + //executa consulta no arquivo .json, definido no campo: URL Definição do Serviço + validarWebService(); + } + function validarWebService() { let tpInteg = document.querySelectorAll('input[name="rdnTpIntegracao"]:checked'); let params = { @@ -411,10 +438,9 @@ function buscarOperacoeWs( parametros ) { type: "POST", url: path, dataType: 'xml', - async: false, data: parametros, beforeSend: function() { - //infraExibirAviso(false); + infraExibirAviso(false); }, success: function(result) { montaOperacao(result); @@ -422,13 +448,18 @@ function buscarOperacoeWs( parametros ) { error: function(msgError) { msgCommit = "Erro ao processar o XML do SEI: " + msgError.responseText; }, - complete: function(result) { - //infraAvisoCancelar(); + complete: function(result,opt) { + infraAvisoCancelar(); } }); } function montaOperacao( result ) { + if ( $(result).find('erros').length > 0 ) { + console.error($(result).find('erro').attr('descricao')); + return false; + } + let nmOperacao = '/' + objOperacao.operacao; //recupera o json que retorna do servico com os dados das operacoes existentes e dados de entrada/saida de cada operacao @@ -441,40 +472,15 @@ function montaOperacao( result ) { if( !objOperacao.validado ) return objOperacao.validado; - if ( $(result).find('success').text() != 'true' ) { - if ( $(result).find('erros').length ) - alert( $(result).find('erro').attr('descricao') ); - else - alert( $(result).find('msg').text() ); - } + showDadosTela(); } - function validarMapear(){ - if (infraTrim(document.querySelector('#txtUrlDefServico').value) == '') { - alert(setMensagemPersonalizada(msgDef, ['URL Definição do Serviço'])); - document.querySelector('#txtUrlDefServico').focus(); - return false; - } - - if (infraTrim(document.querySelector('#txtUrlServico').value) == '') { - alert(setMensagemPersonalizada(msgDef, ['URL do Endpoint da Operação'])); - document.querySelector('#txtUrlServico').focus(); - return false; - } - + function showDadosTela(){ let tpFuncionalidade = document.querySelector('#selFuncionalidade').value; - let urlServico = document.querySelector('#txtUrlServico').value; - let arrUrlServico = urlServico.split('/'); - - objOperacao.operacao = arrUrlServico.pop(); - objOperacao.validado = false; - - //executa consulta no arquivo .json, definido no campo: URL Definição do Serviço - validarWebService(); if ( objOperacao.validado === false ) { - alert('Operação Inválida.'); - return false; + alert('Operação Inválida.'); + return false; } const txt = '/' + objOperacao.operacao; @@ -539,6 +545,5 @@ function validarMapear(){ v.appendChild( opt ); }); }); - //alert('Dados das combos carregados!'); } \ No newline at end of file diff --git a/sei/web/modulos/utilidades/md_utl_adm_prm_gr_cadastro_js.php b/sei/web/modulos/utilidades/md_utl_adm_prm_gr_cadastro_js.php index e43b149..7ea0c7d 100644 --- a/sei/web/modulos/utilidades/md_utl_adm_prm_gr_cadastro_js.php +++ b/sei/web/modulos/utilidades/md_utl_adm_prm_gr_cadastro_js.php @@ -673,7 +673,16 @@ function adicionarRegistroTabelaUsuario(retornoAjax,linkNumSei){ var idUsuario = arrUsuarios[i]; var nomeCampAjx = 'IdUsuario' + idUsuario; - var htmlNomeUsu = '
'+$(retornoAjax).find(nomeCampAjx).text()+'
'; + let nmAuxUsuario = $(retornoAjax).find(nomeCampAjx).text(); + let htmlNomeUsu = '
#TEXTO
'; + + if( nmAuxUsuario == '' || nmAuxUsuario === null ) { + let rowUser = buscaItemUsuario(idUsuario); + htmlNomeUsu = htmlNomeUsu.replace('#TEXTO',rowUser[1]); + } else { + htmlNomeUsu = htmlNomeUsu.replace('#TEXTO',nmAuxUsuario); + } + var nomeSigla = $.trim(document.getElementById('txtUsuario').value); var arrLinha = [ @@ -747,6 +756,23 @@ function adicionarRegistroTabelaUsuario(retornoAjax,linkNumSei){ } } + function buscaItemUsuario(idUsuario){ + let dadosUsuario = null; + let hdnListaUsuariosPart = objTabelaDinamicaUsuario.hdn.value; + let arrListaUsuariosPart = hdnListaUsuariosPart.split('¥'); + + for (i = 0; i < arrListaUsuariosPart.length; i++) { + + let hdnListaUsuPart = arrListaUsuariosPart[i].split('±'); + + if( hdnListaUsuPart[0] == idUsuario ){ + dadosUsuario = hdnListaUsuPart; + break; + } + } + return dadosUsuario; + } + function limparCamposControleParticipante(){ var blocoControleParticipante = document.getElementById('blocoUsuario'); diff --git a/sei/web/modulos/utilidades/md_utl_analise_cadastro.php b/sei/web/modulos/utilidades/md_utl_analise_cadastro.php index 8bd3c92..723b6b4 100644 --- a/sei/web/modulos/utilidades/md_utl_analise_cadastro.php +++ b/sei/web/modulos/utilidades/md_utl_analise_cadastro.php @@ -38,6 +38,7 @@ $disabledConsultar = ""; $disabled = 'disabled="disabled"'; $strTitulo = 'Análise '; +$strTela = trim($strTitulo); $displayFila = "display:none"; $isRetriagem = array_key_exists('id_retriagem', $_GET) ? $_GET['id_retriagem'] : $_POST['hdnIdRetriagem']; $isProcessoConcluido = 0; @@ -210,6 +211,9 @@ $isJsTpProcParametrizado = $isTpProcParametrizado ? '1' : '0'; +//Retorna os tempos calculados: Executado, Pendente, Distribuido e Carga Padrao +$arrParams = ['idTipoControle' => $arrIdsTpCtrls , 'idUsuarioParticipante' => $idUsuarioResp , 'isRetornoXML' => false]; +$arrTempos = MdUtlAdmPrmGrUsuINT::buscarDadosCargaUsuarioCompleto( $arrParams ); //Configuração da Paginação switch (true) { @@ -236,16 +240,25 @@ $objInfraException->lancarValidacoes(); if( $_POST['hdnIdRetriagem'] == 1 && $_POST["hdnSalvarRascunho"] != "1"){ - - $objMdUtlAdmAtividadeRN = new MdUtlAdmAtividadeRN(); - $dados = $objMdUtlAdmAtividadeRN->getAtividadesParaRetriagem( $_POST['idsAtividades'] ); - - $_POST['hdnTbAtividade'] = $dados['itensTable']; - $_POST['hdnTmpExecucao'] = $dados['tmpExecucao']; - $_POST['hdnIsPossuiAnalise'] = 'S'; - $objTriagemDTO = $objTriagemRN->buscarObjTriagemPorId($idTriagem); - $isRetriagemConcluida = $objTriagemRN->cadastroRetriagem($objTriagemDTO,$objControleDsmpDTO); - + $_POST['isOrigemTelaAnalise'] = true; + + // retorna os itens que foram marcados na Tela de analise para a busca dos registros de + // RelTriagem corretos para a retriagem automatica + $arrItens = explode( ',' , $_POST['hdnItensSelecionados'] ); + $arrIdsRelTriag = []; + foreach ( $arrItens as $item ) { + array_push($arrIdsRelTriag,$_POST['idRelTriagem_'.$item]); + } + + //simula a geraçao da grid, como se estivesse na tela de Retriagem + $arrObjsRelTriag = $objMdUtlRelTriagemAtvRN->getObjsRelTriagemAtividade($arrIdsRelTriag); + $objMdUtlAdmAtividadeRN = new MdUtlAdmAtividadeRN(); + $arrItensRelTriagem = $objMdUtlAdmAtividadeRN->getAtividadesParaRetriagem($arrObjsRelTriag); + $_POST['hdnTbAtividade'] = $arrItensRelTriagem['itensTable']; + $_POST['hdnTmpExecucao'] = $arrItensRelTriagem['tmpExecucao']; + $_POST['hdnIsPossuiAnalise'] = 'S'; + $objTriagemDTO = $objTriagemRN->buscarObjTriagemPorId($idTriagem); + $isRetriagemConcluida = $objTriagemRN->cadastroRetriagem($objTriagemDTO,$objControleDsmpDTO); } $objRn = new MdUtlAnaliseRN(); @@ -334,17 +347,18 @@ $isProdutoIgual = !is_null($idTpProdutoPreenchido) && $idTpProdutoAtividade == $idTpProdutoPreenchido; $isSerieIgual = !is_null($idSerieAtual) && $idSerieAtiv == $idSerieAtual; $isProdGeralIgual = $isSerieIgual || $isProdutoIgual; + $isProdMarcado = $arrObjs[$key1]->getNumIdMdUtlRelTriagemAtv() == $objPreenchidoDTO->getNumIdMdUtlRelTriagemAtv(); if( $isProdGeralIgual && $isAtividadeIgual && $objPreenchidoDTO->getStrSinObjPreenchido() == 'N' && $arrObjs[$key1]->getStrSinAnalisado() == 'N' + && $isProdMarcado ){ $arrObjs[$key1]->setStrSinAnalisado('S'); $arrObjs[$key1]->setStrObservacaoAnalise($objPreenchidoDTO->getStrObservacaoAnalise()); $arrObjs[$key1]->setStrProtocoloFormatado($objPreenchidoDTO->getStrProtocoloFormatado()); - //$arrObjs[$key1]->setStrDocumentoFormatado($objPreenchidoDTO->getStrDocumentoFormatado()); $arrObjsPreenchidos[$key2]->setStrSinObjPreenchido('S'); } } @@ -381,13 +395,25 @@ $objMdUtlAnaliseRN->desativar(array($objMdUtlAnaliseDTO)); if( $_POST['hdnIdRetriagem'] == 1 ){ - $objMdUtlAdmAtividadeRN = new MdUtlAdmAtividadeRN(); - $dados = $objMdUtlAdmAtividadeRN->getAtividadesParaRetriagem( $_POST['idsAtividades'] ); - $_POST['hdnTbAtividade'] = $dados['itensTable']; - $_POST['hdnTmpExecucao'] = $dados['tmpExecucao']; - $_POST['hdnIsPossuiAnalise'] = 'S'; - $objTriagemDTO = $objTriagemRN->buscarObjTriagemPorId($idTriagem); - $isRetriagemConcluida = $objTriagemRN->cadastroRetriagem($objTriagemDTO,$objControleDsmpDTO); + $_POST['isOrigemTelaAnalise'] = true; + + // retorna os itens que foram marcados na Tela de analise para a busca dos registros de + // RelTriagem corretos para a retriagem automatica + $arrItens = explode( ',' , $_POST['hdnItensSelecionados'] ); + $arrIdsRelTriag = []; + foreach ( $arrItens as $item ) { + array_push($arrIdsRelTriag,$_POST['idRelTriagem_'.$item]); + } + + //simula a geraçao da grid, como se estivesse na tela de Retriagem + $arrObjsRelTriag = $objMdUtlRelTriagemAtvRN->getObjsRelTriagemAtividade($arrIdsRelTriag); + $objMdUtlAdmAtividadeRN = new MdUtlAdmAtividadeRN(); + $arrItensRelTriagem = $objMdUtlAdmAtividadeRN->getAtividadesParaRetriagem($arrObjsRelTriag); + $_POST['hdnTbAtividade'] = $arrItensRelTriagem['itensTable']; + $_POST['hdnTmpExecucao'] = $arrItensRelTriagem['tmpExecucao']; + $_POST['hdnIsPossuiAnalise'] = 'S'; + $objTriagemDTO = $objTriagemRN->buscarObjTriagemPorId($idTriagem); + $isRetriagemConcluida = $objTriagemRN->cadastroRetriagem($objTriagemDTO,$objControleDsmpDTO); } $isProcessoConcluido = $objMdUtlAnaliseRN->cadastrarDadosAnalise(array($_POST, $isTpProcParametrizado, true)); @@ -449,6 +475,7 @@ $idRelTriagem = ""; $strValor = 'N'; $rowNmAtv = ''; + $strId = $i; // Controle para tratar os dados: Tempo de Execucao e Nome da Atividade $vlrUnidEsf = !is_null($arrObjs[$i]->getNumTempoExecucaoAtribuido()) ? $arrObjs[$i]->getNumTempoExecucaoAtribuido() : 0; @@ -458,6 +485,7 @@ $ctrlNmAtividade = PaginaSEI::tratarHTML($arrObjs[$i]->getStrNomeAtividade().' (' . MdUtlAdmAtividadeRN::$ARR_COMPLEXIDADE[$arrObjs[$i]->getNumComplexidadeAtividade()]) . ') - ' . $vlrUnidEsf; if( $idRelTriagem2 != $arrObjs[$i]->getNumIdMdUtlRelTriagemAtv() ){ + $dataExecucaoAtividade = ''; if($arrObjs[$i]->getDtaDataExecucao() != "") { $dataExecucaoAtividade = $arrObjs[$i]->getDtaDataExecucao(); } @@ -471,8 +499,8 @@ $rowNmAtv = '
-
'.$ctrlNmAtividade.'
-
+
'.$ctrlNmAtividade.'
+
getNumIdMdUtlRelTriagemAtv(); $idRelTriagem = $idRelTriagem2; - $strId = $i; $strIdSerieProd = $isCadastrar ? $arrObjs[$i]->getNumIdMdUtlAdmAtvSerieProd() : null; $TmpExecucao = $isCadastrar || $isAlterar ? $arrObjs[$i]->getNumTempoExecucaoProduto() : 0; $idSerieAtual = $isCadastrar || $isAlterar ? $arrObjs[$i]->getNumIdSerieRel() : $arrObjs[$i]->getNumIdSerie(); diff --git a/sei/web/modulos/utilidades/md_utl_analise_cadastro_js.php b/sei/web/modulos/utilidades/md_utl_analise_cadastro_js.php index 011baa6..c30930a 100644 --- a/sei/web/modulos/utilidades/md_utl_analise_cadastro_js.php +++ b/sei/web/modulos/utilidades/md_utl_analise_cadastro_js.php @@ -69,16 +69,10 @@ function inicializar(){ } else { $('#divCargaHrDistribExecRascunho').css("display", "block"); } - // $('input[name^=chkItem]').trigger('click'); - carregarHiddenDominio(); - - const arrTpsCtrl = new Array(); - - arrTpsCtrl.push(); - - getCargaHrDistribuida(arrTpsCtrl,); + carregarHiddenDominio(); preencherNomeHidden(); + $('input[type=checkbox]').on('change', function() { var idCheckbox = this.id; if(idCheckbox.indexOf("chkItem") != -1) { @@ -119,7 +113,7 @@ function inicializar(){ - var tempoSomado = 0; + var tempoSomado = parseInt( convertToMins( $("#spnCargaHrDistribExec").html() ) ); //0; const atividadesSelecionadas = []; $('input[type=checkbox]').each(function () { var idCheckbox = this.id; diff --git a/sei/web/modulos/utilidades/md_utl_controle_dsmp_associacao.php b/sei/web/modulos/utilidades/md_utl_controle_dsmp_associacao.php index aafef2a..496577f 100644 --- a/sei/web/modulos/utilidades/md_utl_controle_dsmp_associacao.php +++ b/sei/web/modulos/utilidades/md_utl_controle_dsmp_associacao.php @@ -167,19 +167,17 @@ $objRN = new MdUtlControleDsmpRN(); $objRN->associarFila(); } + + // monta o link do direcionamento quando a acao veio da tela de detalhamento do processo $arrHref = [ "acao=procedimento_visualizar", "acao_origem={$_GET['acao']}", "montar_visualizacao=0", "id_procedimento=$idProcedimento" ]; - $link = SessaoSEI::getInstance()->assinarLink("controlador.php?".implode('&',$arrHref)); - echo ""; - die; + + $linkPosSubmitDetalhamento = SessaoSEI::getInstance()->assinarLink("controlador.php?".implode('&',$arrHref)); + } break; @@ -300,7 +298,17 @@ var msgPadrao85 =''; function inicializar() { - + + // veio da tela de detalhamento do processo + if ( document.querySelector('#hdnDetalhamento').value == 1 ) { + window.opener.parent.document.querySelector('#ifrArvore').src = ''; + window.opener.location.reload(); + } else { // veio do menu Associar Processo a Fila + window.opener.document.querySelector('#btnPesquisar').click(); + } + window.close(); + + if( document.getElementById('selTpCtrl').length == 1 ){ alert('Não existe Tipo de Controle vinculado ao Tipo de Processo'); window.close(); diff --git a/sei/web/modulos/utilidades/md_utl_distrib_usuario_cadastro.php b/sei/web/modulos/utilidades/md_utl_distrib_usuario_cadastro.php index adbaba0..bc770b3 100644 --- a/sei/web/modulos/utilidades/md_utl_distrib_usuario_cadastro.php +++ b/sei/web/modulos/utilidades/md_utl_distrib_usuario_cadastro.php @@ -209,7 +209,7 @@ // textos dos tooltips $txtTooltipUsuárioParticipante = 'Selecione o Membro Participante para o qual pretende distribuir esta atividade no fluxo do Controle de Desempenho.\n \n Caso alguém não seja listado como Membro Participante, verifique com o Gestor do Controle de Desempenho para adicioná-lo na Fila correspondente do Tipo de Controle indicado. Também é necessário que o Membro Participante possua permissões nesta Unidade.'; - $txtTooltipCargaHorariaPadrao = 'A Carga Horária Padrão corresponde ao Tempo da Jornada de Trabalho parametrizado para o Tipo de Controle que os Membros Participantes devem cumprir.'; + $txtTooltipCargaHorariaPadrao = MdUtlAdmPrmGrINT::recuperarTextoFrequenciaTooltipDinamicoDistribuirProcessos($idTipoControle); $txtTooltipTotalTempoPendenteExecucao = 'O Total de Tempo Pendente de Execução somente será exibido depois que for selecionado o Membro Participante.\n \n O Total corresponde à soma do Tempo de Execução de cada processo sob responsabilidade do Membro Participante, independentemente de quando tenha sido distribuído.'; @@ -309,7 +309,7 @@
- + /> diff --git a/sei/web/modulos/utilidades/md_utl_distrib_usuario_lista.php b/sei/web/modulos/utilidades/md_utl_distrib_usuario_lista.php index c16b141..6269056 100644 --- a/sei/web/modulos/utilidades/md_utl_distrib_usuario_lista.php +++ b/sei/web/modulos/utilidades/md_utl_distrib_usuario_lista.php @@ -679,7 +679,7 @@ class="infraSelect padraoSelect form-control"
- + /> diff --git a/sei/web/modulos/utilidades/md_utl_funcoes_js.php b/sei/web/modulos/utilidades/md_utl_funcoes_js.php index 5bb309e..64e4b35 100644 --- a/sei/web/modulos/utilidades/md_utl_funcoes_js.php +++ b/sei/web/modulos/utilidades/md_utl_funcoes_js.php @@ -56,6 +56,7 @@ function getCargaHrDistribuida( idsTpCtrl , idUsuario = null, tela = '' ){ idUsuarioParticipante: idUsuario === null ? "getNumIdUsuario() ?>" : idUsuario, idTipoControle: idsTpCtrl }; + $.ajax({ url: "", type: 'post', @@ -83,6 +84,7 @@ function getCargaHrDistribuida( idsTpCtrl , idUsuario = null, tela = '' ){ if (document.getElementById('spnTempoPendente') !== null) { document.getElementById('spnTempoPendente').innerHTML = String(convertToHoursMins(tmpPendente)); } + if ($("#spnCargaHrDistribRascunho").length) { var totalTempoExecutadoPeriodo = $("#spnCargaHrDistribExec").html(); var tempoDecorrido = $("#spnCargaHrDistribRascunho").html(); @@ -91,7 +93,7 @@ function getCargaHrDistribuida( idsTpCtrl , idUsuario = null, tela = '' ){ } if ( tela == 'distribuicao-listar' ) { - if ( $(r).find('ChefeImediato').length > 0 ) $('#divMsgChefiaImediata').show(); + if ( $(r).find('ChefeImediato').text() == 'S' ) $('#divMsgChefiaImediata').show(); } }, error: function (e) { diff --git a/sei/web/modulos/utilidades/md_utl_geral_js.php b/sei/web/modulos/utilidades/md_utl_geral_js.php index 59ae288..c5004ba 100644 --- a/sei/web/modulos/utilidades/md_utl_geral_js.php +++ b/sei/web/modulos/utilidades/md_utl_geral_js.php @@ -241,6 +241,7 @@ function bloquearBotaoSalvar(){ } function removerTags( html ){ + html = infraRemoverFormatacaoXML(html); const data = new DOMParser().parseFromString(html, 'text/html'); return data.body.textContent || ""; } diff --git a/sei/web/modulos/utilidades/md_utl_meus_processos_dsmp_lista.php b/sei/web/modulos/utilidades/md_utl_meus_processos_dsmp_lista.php index de4e3e0..5f059c9 100644 --- a/sei/web/modulos/utilidades/md_utl_meus_processos_dsmp_lista.php +++ b/sei/web/modulos/utilidades/md_utl_meus_processos_dsmp_lista.php @@ -641,7 +641,7 @@
- + /> diff --git a/sei/web/modulos/utilidades/md_utl_revisao_cadastro.php b/sei/web/modulos/utilidades/md_utl_revisao_cadastro.php index fd5e32e..dd6a624 100644 --- a/sei/web/modulos/utilidades/md_utl_revisao_cadastro.php +++ b/sei/web/modulos/utilidades/md_utl_revisao_cadastro.php @@ -147,6 +147,7 @@ $arrComandos[] = ''; $tpAcaoAval = MdUtlControleDsmpRN::$EM_ANALISE; + $strTela = 'Análise'; $idObj = in_array( $objControleDsmpDTO->getStrStaAtendimentoDsmp(), @@ -197,6 +198,7 @@ $arrComandos[] = ''; $tpAcaoAval = MdUtlControleDsmpRN::$EM_TRIAGEM; + $strTela = 'Triagem(sem análise)'; $idObj = in_array( $objControleDsmpDTO->getStrStaAtendimentoDsmp(), @@ -251,6 +253,7 @@ $arrComandos[] = ''; $tpAcaoAval = MdUtlControleDsmpRN::$EM_ANALISE; + $strTela = 'Análise'; $numId = $objControleDsmpDTO->getStrStaAtendimentoDsmp() == MdUtlControleDsmpRN::$EM_CORRECAO_ANALISE ? $objControleDsmpDTO->getNumIdMdUtlControleDsmp() @@ -279,6 +282,7 @@ $arrComandos[] = ''; $tpAcaoAval = MdUtlControleDsmpRN::$EM_TRIAGEM; + $strTela = 'Triagem(sem análise)'; $numId = $objControleDsmpDTO->getStrStaAtendimentoDsmp() == MdUtlControleDsmpRN::$EM_CORRECAO_TRIAGEM ? $objControleDsmpDTO->getNumIdMdUtlControleDsmp() @@ -309,6 +313,10 @@ PaginaSEI::getInstance()->processarExcecao($e); } +//Retorna os tempos calculados: Executado, Pendente, Distribuido e Carga Padrao +$arrParams = ['idTipoControle' => $arrIdsTpCtrls , 'idUsuarioParticipante' => $idUsuarioResp , 'isRetornoXML' => false]; +$arrTempos = MdUtlAdmPrmGrUsuINT::buscarDadosCargaUsuarioCompleto( $arrParams ); + $habDivDistAutoTriagem = $encaminhamentoRevisao['sta_encaminhamento'] == 'N'; PaginaSEI::getInstance()->montarDocType(); diff --git a/sei/web/modulos/utilidades/md_utl_revisao_cadastro_js.php b/sei/web/modulos/utilidades/md_utl_revisao_cadastro_js.php index 2e586cc..081009e 100644 --- a/sei/web/modulos/utilidades/md_utl_revisao_cadastro_js.php +++ b/sei/web/modulos/utilidades/md_utl_revisao_cadastro_js.php @@ -170,12 +170,6 @@ function inicializar(){ .prop('checked',false); } - - const arrTpsCtrl = new Array(); - - arrTpsCtrl.push(); - - getCargaHrDistribuida(arrTpsCtrl, ); } function validarSelects() { diff --git a/sei/web/modulos/utilidades/md_utl_triag_analise_rev_calculo_tempo.php b/sei/web/modulos/utilidades/md_utl_triag_analise_rev_calculo_tempo.php index 38e34fa..3861566 100644 --- a/sei/web/modulos/utilidades/md_utl_triag_analise_rev_calculo_tempo.php +++ b/sei/web/modulos/utilidades/md_utl_triag_analise_rev_calculo_tempo.php @@ -1,9 +1,15 @@ @@ -24,7 +30,7 @@ /> - 0min +
- + /> - 0min +
@@ -50,6 +56,6 @@ /> - 0min +
\ No newline at end of file diff --git a/sei/web/modulos/utilidades/md_utl_triagem_cadastro.php b/sei/web/modulos/utilidades/md_utl_triagem_cadastro.php index 3ed152d..67c8ee0 100644 --- a/sei/web/modulos/utilidades/md_utl_triagem_cadastro.php +++ b/sei/web/modulos/utilidades/md_utl_triagem_cadastro.php @@ -27,6 +27,7 @@ // Vars $idProcedimento = array_key_exists('id_procedimento', $_GET) ? $_GET['id_procedimento'] : $_POST['hdnIdProcedimento']; $strTitulo = 'Triagem '; +$strTela = trim($strTitulo); //Tipo de Controle e Procedimento $objMdUtlAdmTpCtrlUndRN = new MdUtlAdmRelTpCtrlDesempUndRN(); @@ -168,6 +169,10 @@ // verifica se exite grupo cadastrado para ocultar ou exibir os campos na tela $existeGrupoCadastrado = MdUtlAdmGrpINT::verificarExisteGruposParametrizado($objControleDsmpDTO->getNumIdMdUtlAdmTpCtrlDesemp(), $objControleDsmpDTO->getNumIdMdUtlAdmFila(), $idTipoProcedimento); +//Retorna os tempos calculados: Executado, Pendente, Distribuido e Carga Padrao +$arrParams = ['idTipoControle' => $arrIdsTpCtrls , 'idUsuarioParticipante' => $idUsuarioResp , 'isRetornoXML' => false]; +$arrTempos = MdUtlAdmPrmGrUsuINT::buscarDadosCargaUsuarioCompleto( $arrParams ); + switch ($_GET['acao']) { //region Listar @@ -313,7 +318,12 @@ $contador++; $valorTotalUE += $vlrTmpExec; $valorTotalHdn += $vlUeHdn; - $arrGrid[] = array($idMain, $idPk, $objDTO->getStrNomeAtividade() . ' (' . MdUtlAdmAtividadeRN::$ARR_COMPLEXIDADE[$objDTO->getNumComplexidadeAtividade()] . ')', $vlUe, $objDTO->getStrSinAnalise(), $strVlAnalise, $vlUeHdn, $vlrTmpExec); + + $strDadosExtra = ''; + $strDadosExtra = ($objDTO && !is_null($objDTO->getDtaDataExecucao())) ? $objDTO->getDtaDataExecucao() : '_'; + $strDadosExtra .= ($objDTO && !is_null($objDTO->getNumIdMdUtlRelTriagemAtv())) ? '#'. $objDTO->getNumIdMdUtlRelTriagemAtv() : '#_'; + + $arrGrid[] = array($idMain, $idPk, $objDTO->getStrNomeAtividade() . ' (' . MdUtlAdmAtividadeRN::$ARR_COMPLEXIDADE[$objDTO->getNumComplexidadeAtividade()] . ')', $vlUe, $objDTO->getStrSinAnalise(), $strVlAnalise, $vlUeHdn, $vlrTmpExec, $strDadosExtra); $isSemAnalise = $objDTO->getStrSinAnalise() == 'N'; } @@ -609,7 +619,7 @@ class="col-xs-12 col-sm-6 col-md-6 col-lg-6 mb-3 pt-2 col-xl-6"> Com Análise? Total de Tempo de Execução Total de Tempo de Execução Atribuido - Habilitado para Avaliação + Informações Úteis Ações diff --git a/sei/web/modulos/utilidades/md_utl_triagem_cadastro_js.php b/sei/web/modulos/utilidades/md_utl_triagem_cadastro_js.php index 6e33654..a79b60f 100644 --- a/sei/web/modulos/utilidades/md_utl_triagem_cadastro_js.php +++ b/sei/web/modulos/utilidades/md_utl_triagem_cadastro_js.php @@ -58,12 +58,6 @@ function inicializar(){ carregarComponenteGrupoAtividade(); inicializarTabelaDinamicaAtividade(consultar); carregarHiddenDominio(); - - const arrTpsCtrl = new Array(); - - arrTpsCtrl.push(); - - getCargaHrDistribuida(arrTpsCtrl , ); } function carregarHiddenDominio(){ @@ -483,6 +477,11 @@ function adicionarRegistroTabelaAtividade(){ var complexidade = arrIdsAtv.length > 3 ? ' ('+ arrIdsAtv[3] + ')' : ''; + /* + No index 8, do array abaixo, sinaliza registro da data de execucao e o id da triagem x atividade + mas como eh um novo item, o valor por default eh igual a _#_ + */ + idMain = idMain.trim(); var arrLinha = [ idMain, arrIdsAtv[0], @@ -492,7 +491,8 @@ function adicionarRegistroTabelaAtividade(){ strTipoAnalise, arrIdsAtv[2], vlAtvComAnalise, - sinAvaliacaoHabilitada + '_#_' + //sinAvaliacaoHabilitada, ] objTabelaDinamicaAtividade.adicionar(arrLinha); diff --git a/sei/web/modulos/utilidades/rn/MdUtlAdmAtividadeRN.php b/sei/web/modulos/utilidades/rn/MdUtlAdmAtividadeRN.php index efb5b61..98b73e5 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlAdmAtividadeRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlAdmAtividadeRN.php @@ -538,34 +538,60 @@ protected function verificaAtividadeDistribuicaoConectado($idAtividade){ $objInfraException->lancarValidacao($msg); } } - - public function getAtividadesParaRetriagem($idsAtividades){ - $objMdUtlAtividadeDTO = new MdUtlAdmAtividadeDTO(); - $arrIds = strpos($idsAtividades,',') > 0 ? explode(',',$idsAtividades) : array($idsAtividades); - - $objMdUtlAtividadeDTO->setNumIdMdUtlAdmAtividade( $arrIds , InfraDTO::$OPER_IN ); - - $objMdUtlAtividadeDTO->retNumIdMdUtlAdmAtividade(); - $objMdUtlAtividadeDTO->retStrNome(); - $objMdUtlAtividadeDTO->retStrSinAnalise(); - $objMdUtlAtividadeDTO->retNumTmpExecucaoAtv(); - $objMdUtlAtividadeDTO->retNumComplexidade(); - - $arrMdUtlAtividadeDTO = $this->listar( $objMdUtlAtividadeDTO ); - $contador = 0; - $arrGrid = array(); - $tmpExecucao = 0; - - foreach ( $arrMdUtlAtividadeDTO as $objDTO ) { - $idMain = $contador . '_' . $objDTO->getNumIdMdUtlAdmAtividade(); - $idPk = $objDTO->getNumIdMdUtlAdmAtividade(); - $vlUe = $objDTO->getStrSinAnalise() == 'S' ? MdUtlAdmPrmGrINT::convertToHoursMins($objDTO->getNumTmpExecucaoAtv()) : '0min'; - $strVlAnalise = $objDTO->getStrSinAnalise() == 'S' ? 'Sim' : 'Não'; - $tmpExecucao += $objDTO->getNumTmpExecucaoAtv(); - $contador++; - $arrGrid[] = array($idMain, $idPk, $objDTO->getStrNome() . ' (' . MdUtlAdmAtividadeRN::$ARR_COMPLEXIDADE[$objDTO->getNumComplexidade()] . ')', $vlUe, $objDTO->getStrSinAnalise(), $strVlAnalise, $objDTO->getNumTmpExecucaoAtv()); - } - return array( 'itensTable' => PaginaSEI::getInstance()->gerarItensTabelaDinamica($arrGrid) , 'tmpExecucao' => $tmpExecucao ); - } + public function getAtividadesParaRetriagem($arrObjsRelTriag) { + if ( !empty( $arrObjsRelTriag ) ){ + $contador = 0; + $arrGrid = []; + $tmpExecucao = 0; + + foreach ( $arrObjsRelTriag as $objTriag ) { + $objUtlAtividadeDTO = new MdUtlAdmAtividadeDTO(); + $objUtlAtividadeDTO->setNumIdMdUtlAdmAtividade( $objTriag->getNumIdMdUtlAdmAtividade() ); + $objUtlAtividadeDTO->retStrSinAnalise(); + $objUtlAtividadeDTO = $this->consultar( $objUtlAtividadeDTO ); + + $idMain = $contador . '_' . $objTriag->getNumIdMdUtlAdmAtividade(); + $idPk = $objTriag->getNumIdMdUtlAdmAtividade(); + $strVlAnalise = $objUtlAtividadeDTO->getStrSinAnalise() == 'S' ? 'Sim' : 'Não'; + + //tempo total da atividade + $tmpExecucao = $objTriag->getNumTempoExecucao(); + $sumTmpExecucao += $tmpExecucao; + + //tempo atribuido, onde pode ter um tempo menor + $tmpExecAtrib = $objTriag->getNumTempoExecucaoAtribuido(); + $sumTmpExecAtrib += $tmpExecAtrib; + + //descricao da atividade + $strDescAtiv = $objTriag->getStrNomeAtividade() . ' (' . self::$ARR_COMPLEXIDADE[$objTriag->getNumComplexidadeAtividade()] . ')'; + + // concatena idRelTriag com Data de Execucao + $strDadosExtra = ''; + $strDadosExtra = (!is_null($objTriag->getDtaDataExecucao())) ? $objTriag->getDtaDataExecucao() : '_'; + $strDadosExtra .= '#'. $objTriag->getNumIdMdUtlRelTriagemAtv(); + + $contador ++; + + $arrGrid[] = [ + $idMain, + $idPk, + $strDescAtiv, + MdUtlAdmPrmGrINT::convertToHoursMins($tmpExecAtrib), + $objUtlAtividadeDTO->getStrSinAnalise(), + $strVlAnalise, + $tmpExecucao, + $tmpExecAtrib, + $strDadosExtra + ]; + } + + return [ + 'itensTable' => PaginaSEI::getInstance()->gerarItensTabelaDinamica($arrGrid), + 'tmpExecucao' => $sumTmpExecucao, + ]; + } + + return []; + } } diff --git a/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrRN.php b/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrRN.php index 6954274..1ea6a56 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrRN.php @@ -87,7 +87,7 @@ private function validarStrStaFrequencia(MdUtlAdmPrmGrDTO $objMdUtlAdmPrmGrDTO, $objMdUtlAdmPrmGrDTOOriginal->retTodos(); $objMdUtlAdmPrmGrDTOOriginal->setNumIdMdUtlAdmPrmGr($objMdUtlAdmPrmGrDTO->getNumIdMdUtlAdmPrmGr()); $objMdUtlAdmPrmGrDTOOriginal = $this->consultar($objMdUtlAdmPrmGrDTOOriginal); - if ($objMdUtlAdmPrmGrDTOOriginal->getStrStaFrequencia() != "") { + if ( !is_null($objMdUtlAdmPrmGrDTOOriginal) && $objMdUtlAdmPrmGrDTOOriginal->getStrStaFrequencia() != "") { if ($objMdUtlAdmPrmGrDTOOriginal->getStrStaFrequencia() == "D" && $objMdUtlAdmPrmGrDTO->getStrStaFrequencia() == "S") { if (date('N') != "1") { $objInfraException->adicionarValidacao('A alteração do Tipo de Período de Diário para Semanal somente é permitida em segundas-feiras.'); @@ -562,13 +562,19 @@ private function _cadastrarRelParametrizacaoUsuario($isBolAlterarParametrizacao, public function _cadastrarNovoUsuarioHistorico($arrObjsParametrizados, $idTipoControleUtl) { + $idUsuarioAtual = SessaoSEI::getInstance()->getNumIdUsuario(); + if ( empty($idUsuarioAtual) ) { + $objUsuarioRN = new MdUtlUsuarioRN(); + $idUsuarioAtual = $objUsuarioRN->getObjUsuarioUtilidades( true ); + } + if (count($arrObjsParametrizados) > 0) { $objHistoricoRN = new MdUtlAdmHistPrmGrUsuRN(); foreach ($arrObjsParametrizados as $objDTOParametrizado) { if (!is_null($objDTOParametrizado)) { $objHistoricoDTO = $objHistoricoRN->clonarObjParametroParaHistorico($objDTOParametrizado); $objHistoricoDTO->setDthInicial(InfraData::getStrDataHoraAtual()); - $objHistoricoDTO->setNumIdUsuarioAtual(SessaoSEI::getInstance()->getNumIdUsuario()); + $objHistoricoDTO->setNumIdUsuarioAtual($idUsuarioAtual); $objHistoricoRN->cadastrar($objHistoricoDTO); //atualizar distribuições no controle de desempenho para usuario alterado @@ -592,7 +598,9 @@ public function _cadastrarDataFinalUsuarios($idMdUtlAdmPrmGr, $idsUsuariosAlter) Retorna registros de usuarios excluidos que contem alteração na data Fim de Participacao para ser salvo no registro do historico $arrDadosExtraMembro = [0 => idPrmGrUsu , 1 => idUsuario , 2 => Data Fim Participacao] */ - $arrDadosExtraMembro = PaginaSEI::getInstance()->getArrItensTabelaDinamica($_POST['hdnTbUsuarioRemove']); + $arrDadosExtraMembro = isset( $_POST['hdnTbUsuarioRemove'] ) + ? PaginaSEI::getInstance()->getArrItensTabelaDinamica($_POST['hdnTbUsuarioRemove']) + : []; $count = $objMdUtlHistAdmPrmGrUsuRN->contar($objMdUtlHistAdmPrmGrUsuDTO); if ($count > 0) { @@ -600,12 +608,15 @@ public function _cadastrarDataFinalUsuarios($idMdUtlAdmPrmGr, $idsUsuariosAlter) foreach ($arrObjs as $objDTO) { $objDTO->setDthFinal(InfraData::getStrDataHoraAtual()); - foreach ( $arrDadosExtraMembro as $updFimPart ) { - if ( (int) $updFimPart[1] == $objDTO->getNumIdUsuario() ) { - $objDTO->setDthFimParticipacao( $updFimPart[2] ); - break; + if ( !empty( $arrDadosExtraMembro ) ) { + foreach ($arrDadosExtraMembro as $updFimPart) { + if ((int)$updFimPart[1] == $objDTO->getNumIdUsuario()) { + $objDTO->setDthFimParticipacao($updFimPart[2]); + break; + } } } + $objMdUtlHistAdmPrmGrUsuRN->alterar($objDTO); } } @@ -693,7 +704,7 @@ public function cadastrarParametrizacao($idMdUtlAdmPrmGr, $idTipoControleUtl, $o if ( $_POST['hdnCargaPadrao'] != $objMdUtlAdmPrmGrDTO->getNumCargaPadrao() || $objMdUtlAdmPrmGrDTOOriginal->getStrStaFrequencia() != $_POST['selStaFrequencia']) { $isUpdateCargaPadrao = $_POST['hdnCargaPadrao'] != $objMdUtlAdmPrmGrDTO->getNumCargaPadrao(); - if($objMdUtlAdmPrmGrDTOOriginal->getStrStaFrequencia() == "M" && $_POST['selStaFrequencia'] == "S") { + if ( !is_null($objMdUtlAdmPrmGrDTOOriginal) && $objMdUtlAdmPrmGrDTOOriginal->getStrStaFrequencia() == "M" && $_POST['selStaFrequencia'] == "S") { $this->atualizarCargaMembros($idMdUtlAdmPrmGr, true, $isUpdateCargaPadrao); } else { $this->atualizarCargaMembros($idMdUtlAdmPrmGr, false, $isUpdateCargaPadrao); diff --git a/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuCargaRN.php b/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuCargaRN.php index 3708711..c765084 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuCargaRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuCargaRN.php @@ -267,6 +267,7 @@ public function addCargaHorariaMembro( MdUtlAdmPrmGrUsuDTO $objMdUtlAdmPrmGrUsuD $cargaHoraria = 0; //$this->geraTempoCargaHoraria( $fatorPres , $arrPeriodo['numFrequencia'] , $_POST['txtCargaPadrao'] ); $arrDatasAusencias = []; $diaAtual = date('Y-m-d'); + $isPodeCadastrar = false; // virou chefe if ( $objMdUtlAdmPrmGrUsuDTO->getStrSinChefiaImediata() == 'S' && $isChefeAlterado ) { @@ -305,48 +306,54 @@ public function addCargaHorariaMembro( MdUtlAdmPrmGrUsuDTO $objMdUtlAdmPrmGrUsuD // condicoes acima if ( $cargaHoraria > 0 ) { - // verifica se a integracao esta ativa, com REST e o membro tem ausencias no periodo - $objMdUtlAdmIntegDTO = ( new MdUtlAdmIntegracaoRN() )->obterConfigIntegracaoPorFuncionalidade(MdUtlAdmIntegracaoRN::$AUSENCIA); - - if ( $objMdUtlAdmIntegDTO && $objMdUtlAdmIntegDTO['integracao']->getStrTipoIntegracao() == 'RE' ) { - // retorna dados do usuario atual - $objUserDTO = new UsuarioDTO(); - $objUserDTO->setNumIdUsuario($objMdUtlAdmPrmGrUsuDTO->getNumIdUsuario()); - $objUserDTO->retStrSigla(); - $objUserDTO = ( new UsuarioRN() )->consultarRN0489($objUserDTO); - - $arrParams = ['dataInicial' => $dtIniPadraoEUA, 'dataFinal' => $dtFinPadraoEUA, 'loginUsuario' => $objUserDTO->getStrSigla()]; - $arrParams = ['parametros' => MdUtlAdmIntegracaoINT::montaParametrosEntrada( $objMdUtlAdmIntegDTO, $arrParams )]; - $arrObjAusencia = MdUtlAdmIntegracaoINT::executarConsultaREST( $objMdUtlAdmIntegDTO , $arrParams['parametros'] ); - - if ( !empty( $arrObjAusencia ) ) { - $arrIdentificador = MdUtlAdmIntegracaoINT::montaParametrosSaida($objMdUtlAdmIntegDTO['parametros-integracao']); - foreach ( $arrObjAusencia as $objAusencia ) { - $arrRangeDiasAus = MdUtlAdmPrmGrUsuCargaINT::geraRangeDias( $objAusencia->{$arrIdentificador['dataInicial']} , $objAusencia->{$arrIdentificador['dataFinal']} ); - foreach ( $arrRangeDiasAus as $diaAusencia ) { - if ( strtotime($diaAusencia) >= strtotime($dtIniPadraoEUA ) && strtotime($diaAusencia) <= strtotime( $dtFinPadraoEUA ) ) { - array_push($arrDatasAusencias,$diaAusencia); - $tmpParcial = (new MdUtlAdmPrmGrUsuCargaRN())->geraTempoCargaHoraria( $fatorPres, 1, $_POST['txtCargaPadrao'] ); - $cargaHoraria -= $tmpParcial; - } - } - } - } + // verifica se a integracao esta ativa, com REST e o membro tem ausencias no periodo + $objMdUtlAdmIntegDTO = ( new MdUtlAdmIntegracaoRN() )->obterConfigIntegracaoPorFuncionalidade(MdUtlAdmIntegracaoRN::$AUSENCIA); + + if ( $objMdUtlAdmIntegDTO && $objMdUtlAdmIntegDTO['integracao']->getStrTipoIntegracao() == 'RE' ) { + // retorna dados do usuario atual + $objUserDTO = new UsuarioDTO(); + $objUserDTO->setNumIdUsuario($objMdUtlAdmPrmGrUsuDTO->getNumIdUsuario()); + $objUserDTO->retStrSigla(); + $objUserDTO = ( new UsuarioRN() )->consultarRN0489($objUserDTO); + + if( !is_null($objUserDTO) ) { + $isPodeCadastrar = true; + + $arrParams = ['dataInicial' => $dtIniPadraoEUA, 'dataFinal' => $dtFinPadraoEUA, 'loginUsuario' => $objUserDTO->getStrSigla()]; + $arrParams = ['parametros' => MdUtlAdmIntegracaoINT::montaParametrosEntrada($objMdUtlAdmIntegDTO, $arrParams)]; + $arrObjAusencia = MdUtlAdmIntegracaoINT::executarConsultaREST($objMdUtlAdmIntegDTO, $arrParams['parametros']); + + if (!empty($arrObjAusencia)) { + $arrIdentificador = MdUtlAdmIntegracaoINT::montaParametrosSaida($objMdUtlAdmIntegDTO['parametros-integracao']); + foreach ($arrObjAusencia as $objAusencia) { + $arrRangeDiasAus = MdUtlAdmPrmGrUsuCargaINT::geraRangeDias($objAusencia->{$arrIdentificador['dataInicial']}, $objAusencia->{$arrIdentificador['dataFinal']}); + foreach ($arrRangeDiasAus as $diaAusencia) { + if (strtotime($diaAusencia) >= strtotime($dtIniPadraoEUA) && strtotime($diaAusencia) <= strtotime($dtFinPadraoEUA)) { + array_push($arrDatasAusencias, $diaAusencia); + $tmpParcial = (new MdUtlAdmPrmGrUsuCargaRN())->geraTempoCargaHoraria($fatorPres, 1, $_POST['txtCargaPadrao']); + $cargaHoraria -= $tmpParcial; + } + } + } + } } + } } - $strDatasAusencias = empty($arrDatasAusencias) ? null : MdUtlAdmPrmGrUsuCargaINT::montaDatasAusenciasBanco($arrDatasAusencias); + if ( $isPodeCadastrar ) { + $strDatasAusencias = empty($arrDatasAusencias) ? null : MdUtlAdmPrmGrUsuCargaINT::montaDatasAusenciasBanco($arrDatasAusencias); - $objMdUtlAdmPrmGrUsuCargaDTO->setNumCargaHoraria( $cargaHoraria ); - $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoInicial( $arrPeriodo['dtInicial'] ); - $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoFinal( $arrPeriodo['dtFinal'] ); - $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGrUsu( $objMdUtlAdmPrmGrUsuDTO->getNumIdMdUtlAdmPrmGrUsu() ); - $objMdUtlAdmPrmGrUsuCargaDTO->setStrDatasAusencias( $strDatasAusencias ); - $objMdUtlAdmPrmGrUsuCargaDTO->setStrSinAtivo('S'); - $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdUsuario($objMdUtlAdmPrmGrUsuDTO->getNumIdUsuario()); - $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGr($objMdUtlAdmPrmGrUsuDTO->getNumIdMdUtlAdmPrmGr()); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumCargaHoraria($cargaHoraria); + $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoInicial($arrPeriodo['dtInicial']); + $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoFinal($arrPeriodo['dtFinal']); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGrUsu($objMdUtlAdmPrmGrUsuDTO->getNumIdMdUtlAdmPrmGrUsu()); + $objMdUtlAdmPrmGrUsuCargaDTO->setStrDatasAusencias($strDatasAusencias); + $objMdUtlAdmPrmGrUsuCargaDTO->setStrSinAtivo('S'); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdUsuario($objMdUtlAdmPrmGrUsuDTO->getNumIdUsuario()); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGr($objMdUtlAdmPrmGrUsuDTO->getNumIdMdUtlAdmPrmGr()); - $this->cadastrar( $objMdUtlAdmPrmGrUsuCargaDTO ); + $this->cadastrar($objMdUtlAdmPrmGrUsuCargaDTO); + } } public function atualizarCargaHorariaAntiga( MdUtlAdmPrmGrUsuDTO $objMdUtlAdmPrmGrUsuDTO, $objMdUtlAdmPrmGrUsuCargaDTO, $strFrequencia = null){ @@ -490,4 +497,42 @@ public function desativarCargaHorariaAtual( $idPrmGrUsu ){ $this->alterar($objMdUtlCargaDTO); } } + + public function getInfoCargaPeriodoAtivo( $arrParams , $isRetUnicoRegistro = true ){ + + $objMdUtlAdmPrmGrUsuCargaDTO = new MdUtlAdmPrmGrUsuCargaDTO(); + + $objMdUtlAdmPrmGrUsuCargaDTO->setStrSinAtivo('S'); + + if( isset($arrParams['idPrmGr']) && !is_null($arrParams['idPrmGr']) ) + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGr([$arrParams['idPrmGr']] , InfraDTO::$OPER_IN); + + if( isset($arrParams['idPrmGrUsu']) && !is_null($arrParams['idPrmGrUsu']) ) + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGrUsu($arrParams['idPrmGrUsu']); + + if( isset($arrParams['idUsuario']) && !is_null($arrParams['idUsuario']) ) + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdUsuario([$arrParams['idUsuario']] , InfraDTO::$OPER_IN); + + if( isset($arrParams['periodoIni']) && !is_null($arrParams['periodoIni']) ) + $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoInicial($arrParams['periodoIni']); + + if( isset($arrParams['periodoFin']) && !is_null($arrParams['periodoFin']) ) + $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoFinal($arrParams['periodoFin']); + + if( $isRetUnicoRegistro ) + $objMdUtlAdmPrmGrUsuCargaDTO->setNumMaxRegistrosRetorno(1); + + //config ordenacao + //$objMdUtlAdmPrmGrUsuCargaDTO->setOrd('IdMdUtlAdmPrmGrUsuCarga',InfraDTO::$TIPO_ORDENACAO_DESC); + + //config coluna(s) para retorno + $objMdUtlAdmPrmGrUsuCargaDTO->retNumCargaHoraria(); + + if ( $isRetUnicoRegistro ) { + $ret = $this->consultar($objMdUtlAdmPrmGrUsuCargaDTO); + return is_null($ret) ? '0' : $ret->getNumCargaHoraria(); + } else { + return $this->listar($objMdUtlAdmPrmGrUsuCargaDTO); + } + } } diff --git a/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuRN.php b/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuRN.php index e4a1d92..2f58acb 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlAdmPrmGrUsuRN.php @@ -259,7 +259,9 @@ protected function pesquisarUsuarioParametrosConectado(MdUtlAdmPrmGrUsuDTO $objU } protected function montarArrUsuarioParticipanteControlado($idMdUtlAdmPrmGr){ + $objMdUtlAdmPrmGrUsuCargaRN = new MdUtlAdmPrmGrUsuCargaRN(); + $arrDatasFiltro = ( new MdUtlPrazoRN() )->getDatasPeriodoAtual($idMdUtlAdmPrmGr); $mdUtlAdmPrmGrUsuDTO = new MdUtlAdmPrmGrUsuDTO(); $mdUtlAdmPrmGrUsuDTO->setNumIdMdUtlAdmPrmGr($idMdUtlAdmPrmGr); @@ -268,6 +270,8 @@ protected function montarArrUsuarioParticipanteControlado($idMdUtlAdmPrmGr){ $mdUtlAdmPrmGrUsuDTO->setOrdNumIdMdUtlAdmPrmGrUsu(InfraDTO::$TIPO_ORDENACAO_DESC); $mdUtlAdmPrmGrUsu = $this->listar($mdUtlAdmPrmGrUsuDTO); + + $arrPresenca = array( MdUtlAdmPrmGrUsuRN::$TP_PRESENCA_PRESENCIAL => 'Presencial', MdUtlAdmPrmGrUsuRN::$TP_PRESENCA_TELETRABALHO => 'Teletrabalho' @@ -321,15 +325,16 @@ protected function montarArrUsuarioParticipanteControlado($idMdUtlAdmPrmGr){ $UsuarioParticipante[]= empty($dadosUsuParticipante->getDthFimParticipacao()) ? '' : explode(' ', $dadosUsuParticipante->getDthFimParticipacao())[0]; //Carga Horaria - $objMdUtlPrmGrUsuCargaDTO = new MdUtlAdmPrmGrUsuCargaDTO(); - $objMdUtlPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGrUsu($dadosUsuParticipante->getNumIdMdUtlAdmPrmGrUsu()); - $objMdUtlPrmGrUsuCargaDTO->setStrSinAtivo('S'); - $objMdUtlPrmGrUsuCargaDTO->setOrd('IdMdUtlAdmPrmGrUsuCarga',InfraDTO::$TIPO_ORDENACAO_DESC); - $objMdUtlPrmGrUsuCargaDTO->setNumMaxRegistrosRetorno(1); - $objMdUtlPrmGrUsuCargaDTO->retNumCargaHoraria(); - - $objCargaHoraria = ( new MdUtlAdmPrmGrUsuCargaRN() )->consultar( $objMdUtlPrmGrUsuCargaDTO ); - $cargaHorariaMembro = empty( $objCargaHoraria ) ? '0' : $objCargaHoraria->getNumCargaHoraria(); + $arrParams = [ + 'periodoIni' => $arrDatasFiltro['DT_INICIAL'], + 'periodoFin' => $arrDatasFiltro['DT_FINAL'], + 'idUsuario' => $dadosUsuParticipante->getNumIdUsuario(), + 'idPrmGr' => $idMdUtlAdmPrmGr, + ]; + + $cargaHorariaMembro = $objMdUtlAdmPrmGrUsuCargaRN->getInfoCargaPeriodoAtivo($arrParams); + $cargaHorariaMembro = empty($cargaHorariaMembro) ? '0' : $cargaHorariaMembro; + $UsuarioParticipante[] = MdUtlAdmPrmGrINT::convertToHoursMins($cargaHorariaMembro); $arrUsuarioParticipante[]= $UsuarioParticipante; @@ -435,16 +440,16 @@ protected function atualizarCargaAposExclusao( $objMdUtlAdmPrmGrUsuDTO ){ if ( InfraData::compararDatasSimples($dtFimParticipacao , $carga->getDtaPeriodoInicial()) >= 0 ) { $carga->setNumCargaHoraria(0); } else { - $carga = $carga->getNumCargaHoraria(); + $_carga = $carga->getNumCargaHoraria(); $dtIniEUA = implode('-',array_reverse(explode('/',$carga->getDtaPeriodoInicial()))); $dtFinEUA = implode('-',array_reverse(explode('/',$carga->getDtaPeriodoFinal()))); $dtFinPartEUA = implode('-',array_reverse(explode('/',$dtFimParticipacao))); $arrRangeDatas = MdUtlAdmPrmGrUsuCargaINT::geraRangeDias($dtIniEUA , $dtFinEUA); $cargaDiaria = $objMdUtlAdmPrmGrUsuCargaRN->geraTempoCargaHoraria( $fatorPres, 1, $_POST['selStaFrequencia'] ); foreach ( $arrRangeDatas as $dia ) { - if ( strtotime($dia) >= strtotime($dtFinPartEUA) ) $carga -= $cargaDiaria; + if ( strtotime($dia) >= strtotime($dtFinPartEUA) ) $_carga -= $cargaDiaria; } - $carga->setNumCargaHoraria($carga); + $carga->setNumCargaHoraria($_carga); } $objMdUtlAdmPrmGrUsuCargaRN->alterar($carga); } @@ -462,13 +467,21 @@ protected function usuarioLogadoIsUsuarioParticipanteConectado($idPrmTpCtrl){ protected function verificaCargaPadraoConectado($arrObj){ - $idUsuarioParticipante = array_key_exists(0, $arrObj) ? $arrObj[0] : null; $idParam = array_key_exists(1, $arrObj) ? $arrObj[1] : null; + $arrDatasFiltro = ( new MdUtlPrazoRN() )->getDatasPeriodoAtual($idParam); $numCargaPadrao = array_key_exists(2, $arrObj) ? $arrObj[2] : null; $numPercentualTele = array_key_exists(3, $arrObj) ? $arrObj[3] : null; - $diasUteis = array_key_exists(4, $arrObj) ? $arrObj[4] : null; + $diasUteis = array_key_exists(4, $arrObj) ? $arrObj[4]['numFrequencia'] : null; + $periodoInicial = ( array_key_exists(4, $arrObj) && !is_null($arrObj[4]['dtInicial']) ) ? $arrObj[4]['dtInicial'] : $arrDatasFiltro['DT_INICIAL']; + $periodoFinal = ( array_key_exists(4, $arrObj) && !is_null($arrObj[4]['dtFinal']) ) ? $arrObj[4]['dtFinal'] : $arrDatasFiltro['DT_FINAL']; + $arrParams = [ 'idPrmGr' => $idParam , 'idUsuario' => $idUsuarioParticipante , 'periodoIni' => $periodoInicial , 'periodoFin' => $periodoFinal]; + + $cargaPeriodoAtual = ( new MdUtlAdmPrmGrUsuCargaRN() )->getInfoCargaPeriodoAtivo($arrParams); + + if ( !is_null($cargaPeriodoAtual) ) return $cargaPeriodoAtual; + // se o resultado acima retornar null ou array vazio, busca pelo carga padrão parametrizada no Tipo de Ctrl $fatorReducaoFornada = 0; $fatorDesempUsu = 0; @@ -604,11 +617,11 @@ protected function trataUsuariosChefiaImediataControlado( $arrUsuarios ){ } } return $bolTemIntegracao; - } catch (InfraException $e ) { + } catch ( Exception $e ) { $func = MdUtlAdmIntegracaoRN::$STR_CHEFIA; $msg = "Não foi possível estabelecer a integração com o Sistema de Recursos Humanos para atualizar a indicação de Chefia Imediata dos Membros Participantes deste Controle de Desempenho."; - $msg .= "\n\n" . $func . ": " . $e->getMessage(); + $msg .= "\n\n" . $func; PaginaSEI::getInstance()->adicionarMensagem( $msg , InfraPagina::$TIPO_MSG_AVISO ); } } diff --git a/sei/web/modulos/utilidades/rn/MdUtlAgendamentoAutomaticoRN.php b/sei/web/modulos/utilidades/rn/MdUtlAgendamentoAutomaticoRN.php index 72ebb83..3303fc1 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlAgendamentoAutomaticoRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlAgendamentoAutomaticoRN.php @@ -444,64 +444,86 @@ private function _buscarRespostaTacitaParametrizacao($arrObjCtrlDesempDTO){ * Funcao acionada pelo Agendamento */ protected function incluirPeriodoControlado(){ - $dadosChefia = null; - $arrObjIntegracao = (new MdUtlAdmIntegracaoRN())->obterConfigIntegracaoPorFuncionalidade(MdUtlAdmIntegracaoRN::$CHEFIA); - - // verifica se o serviço esta cadastrado e ativo - if (!empty($arrObjIntegracao) && $arrObjIntegracao['integracao']->getStrTipoIntegracao() == 'RE'){ - $arrParams = ['loginUsuario' => '']; - $arrParams = ['parametros' => MdUtlAdmIntegracaoINT::montaParametrosEntrada( $arrObjIntegracao, $arrParams )]; - $dadosChefia = MdUtlAdmIntegracaoINT::executarConsultaREST( $arrObjIntegracao , $arrParams['parametros'] ); - } + try { + $this->initDadosDebug(); + + $numSeg = InfraUtil::verificarTempoProcessamento(); + InfraDebug::getInstance()->gravar('INCLUINDO A CARGA DOS USUÁRIOS COM TRATAMENTO RELACIONADO À CHEFIA IMEDIATA E AUSÊNCIAS'); + + $dadosChefia = null; + $arrObjIntegracao = (new MdUtlAdmIntegracaoRN())->obterConfigIntegracaoPorFuncionalidade(MdUtlAdmIntegracaoRN::$CHEFIA); + + // verifica se o serviço esta cadastrado e ativo + if (!empty($arrObjIntegracao) && $arrObjIntegracao['integracao']->getStrTipoIntegracao() == 'RE') { + $arrParams = ['loginUsuario' => '']; + $arrParams = ['parametros' => MdUtlAdmIntegracaoINT::montaParametrosEntrada($arrObjIntegracao, $arrParams)]; + $dadosChefia = MdUtlAdmIntegracaoINT::executarConsultaREST($arrObjIntegracao, $arrParams['parametros']); + } + + // instancia objetos da classe RN + $objUtlAdmPrmGrUsuRN = new MdUtlAdmPrmGrUsuRN(); + $objMdUtlAdmPrmGrUsuCargaRN = new MdUtlAdmPrmGrUsuCargaRN(); + $objUtlAdmTpCtrlRN = new MdUtlAdmTpCtrlDesempRN(); - // instancia objetos da classe RN - $objUtlAdmPrmGrUsuRN = new MdUtlAdmPrmGrUsuRN(); - $objMdUtlAdmPrmGrUsuCargaRN = new MdUtlAdmPrmGrUsuCargaRN(); - $objUtlAdmTpCtrlRN = new MdUtlAdmTpCtrlDesempRN(); + // retorna os tipos de controles com o alguns dados da parametrizacao + $objUtlAdmTpCtrlDTO = new MdUtlAdmTpCtrlDesempDTO(); - // retorna os tipos de controles com o alguns dados da parametrizacao - $objUtlAdmTpCtrlDTO = new MdUtlAdmTpCtrlDesempDTO(); + $objUtlAdmTpCtrlDTO->setStrSinAtivo('S'); + $objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr(0, InfraDTO::$OPER_MAIOR); + #$objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr([43],InfraDTO::$OPER_IN); //teste - $objUtlAdmTpCtrlDTO->setStrSinAtivo('S'); - $objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr(0,InfraDTO::$OPER_MAIOR); - #$objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr([43],InfraDTO::$OPER_IN); //teste + $objUtlAdmTpCtrlDTO->retNumIdMdUtlAdmPrmGr(); + $objUtlAdmTpCtrlDTO->retNumCargaPadrao(); + $objUtlAdmTpCtrlDTO->retStrStaFrequencia(); - $objUtlAdmTpCtrlDTO->retNumIdMdUtlAdmPrmGr(); - $objUtlAdmTpCtrlDTO->retNumCargaPadrao(); - $objUtlAdmTpCtrlDTO->retStrStaFrequencia(); + $arrObjs = $objUtlAdmTpCtrlRN->listar($objUtlAdmTpCtrlDTO); - $arrObjs = $objUtlAdmTpCtrlRN->listar( $objUtlAdmTpCtrlDTO ); + // efetua loop em cada Tipo de Controle + foreach ($arrObjs as $objPrmGr) { - // efetua loop em cada Tipo de Controle - foreach ( $arrObjs as $objPrmGr ) { + // retorna dados da parametrizacao do usuario + alguns dados da parametrizacao do Tipo de Controle + $arrUsuarios = $objUtlAdmPrmGrUsuRN->getDadosUsuarioMembro($objPrmGr->getNumIdMdUtlAdmPrmGr()); - // retorna dados da parametrizacao do usuario + alguns dados da parametrizacao do Tipo de Controle - $arrUsuarios = $objUtlAdmPrmGrUsuRN->getDadosUsuarioMembro( $objPrmGr->getNumIdMdUtlAdmPrmGr() ); + $continua = $this->validarStaFrequencia($arrUsuarios[0]['frequencia']); - $continua = $this->validarStaFrequencia($arrUsuarios[0]['frequencia']); + if ($continua) { + foreach ($arrUsuarios as $usuario) { + // variavel a ser usado no final para qualquer insert ou update + $cargaHoraria = 0; + $strDatasAusenciasUtilizadas = null; - if ( $continua ) { - foreach ($arrUsuarios as $usuario) { - // variavel a ser usado no final para qualquer insert ou update - $cargaHoraria = 0; - $strDatasAusenciasUtilizadas = null; + $arrPeriodos = $this->trataTempoMembroComAusenciasEChefia($usuario, $cargaHoraria, $strDatasAusenciasUtilizadas, true, $dadosChefia); - $arrPeriodos = $this->trataTempoMembroComAusenciasEChefia($usuario, $cargaHoraria, $strDatasAusenciasUtilizadas, true , $dadosChefia); + $objMdUtlAdmPrmGrUsuCargaDTO = new MdUtlAdmPrmGrUsuCargaDTO(); - $objMdUtlAdmPrmGrUsuCargaDTO = new MdUtlAdmPrmGrUsuCargaDTO(); + $cargaHoraria = $cargaHoraria < 0 ? 0 : $cargaHoraria; - $objMdUtlAdmPrmGrUsuCargaDTO->setNumCargaHoraria($cargaHoraria); - $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoInicial($arrPeriodos['dtInicial']); - $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoFinal($arrPeriodos['dtFinal']); - $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGrUsu($usuario['idPrmGrUsu']); - $objMdUtlAdmPrmGrUsuCargaDTO->setStrDatasAusencias($strDatasAusenciasUtilizadas); - $objMdUtlAdmPrmGrUsuCargaDTO->setStrSinAtivo('S'); - $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGr($usuario['idPrmGr']); - $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdUsuario($usuario['idUsuario']); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumCargaHoraria($cargaHoraria); + $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoInicial($arrPeriodos['dtInicial']); + $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoFinal($arrPeriodos['dtFinal']); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGrUsu($usuario['idPrmGrUsu']); + $objMdUtlAdmPrmGrUsuCargaDTO->setStrDatasAusencias($strDatasAusenciasUtilizadas); + $objMdUtlAdmPrmGrUsuCargaDTO->setStrSinAtivo('S'); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGr($usuario['idPrmGr']); + $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdUsuario($usuario['idUsuario']); - $objMdUtlAdmPrmGrUsuCargaRN->cadastrar($objMdUtlAdmPrmGrUsuCargaDTO); + $objMdUtlAdmPrmGrUsuCargaRN->cadastrar($objMdUtlAdmPrmGrUsuCargaDTO); + } } } + + $numSeg = InfraUtil::verificarTempoProcessamento($numSeg); + InfraDebug::getInstance()->gravar('TEMPO TOTAL DE EXECUCAO: ' . $numSeg . ' s'); + InfraDebug::getInstance()->gravar('FIM'); + + LogSEI::getInstance()->gravar(InfraDebug::getInstance()->getStrDebug(), InfraLog::$INFORMACAO); + $this->limpaDadosDebug(); + + } catch ( Exception $e ) { + $exception = $this->trataException($e); + LogSEI::getInstance()->gravar( $exception , InfraLog::$INFORMACAO ); + $this->limpaDadosDebug(); + throw new InfraException('Falha no agendamento incluirPeriodo',$e); } } @@ -639,89 +661,122 @@ private function tratarInclusaoPeriodoChefia(&$cargaHoraria, $arrParams, $dadosC */ protected function listarChefiaImediataControlado(){ try { - // busca a integracao da Funcionalidade: listar chefia imediata - $arrObjIntegracao = (new MdUtlAdmIntegracaoRN())->obterConfigIntegracaoPorFuncionalidade(MdUtlAdmIntegracaoRN::$CHEFIA); + $this->initDadosDebug(); - if ( empty($arrObjIntegracao) ) return false; + $numSeg = InfraUtil::verificarTempoProcessamento(); + InfraDebug::getInstance()->gravar('ATUALIZANDO REGISTROS DE USUÁRIOS - CHEFIA IMEDIATA'); - if( $arrObjIntegracao['integracao']->getStrTipoIntegracao() != 'RE' ) return false; + // EXECUTA A FUNCAO DE ATUALIZACAO DOS USUARIOS - CHEFIA IMEDIATA + $this->executaAtualizacaoChefiaImediata(); - $arrParams = ['loginUsuario' => '']; - $arrParams = ['parametros' => MdUtlAdmIntegracaoINT::montaParametrosEntrada( $arrObjIntegracao, $arrParams )]; + $numSeg = InfraUtil::verificarTempoProcessamento($numSeg); + InfraDebug::getInstance()->gravar('TEMPO TOTAL DE EXECUCAO: ' . $numSeg . ' s'); + InfraDebug::getInstance()->gravar('FIM'); - $dadosChefia = MdUtlAdmIntegracaoINT::executarConsultaREST( $arrObjIntegracao , $arrParams['parametros'] ); + LogSEI::getInstance()->gravar(InfraDebug::getInstance()->getStrDebug(), InfraLog::$INFORMACAO); + $this->limpaDadosDebug(); - if ( empty($dadosChefia) ) return false; + } catch ( Exception $e ){ + $exception = $this->trataException($e); + LogSEI::getInstance()->gravar( $exception , InfraLog::$INFORMACAO ); + $this->limpaDadosDebug(); + throw new InfraException('Falha no agendamento listarChefiaImediata',$e); + } + } - $arrIdentificador = MdUtlAdmIntegracaoINT::montaParametrosSaida($arrObjIntegracao['parametros-integracao']); + private function executaAtualizacaoChefiaImediata(){ + $strDefMap = 'MdUtlAgendamentoAutomaticoRN::listarChefiaImediata => Mapeamento de Integração \'Chefia Imediata\''; - // retorna os tipos de controles com o ID da parametrizacao - $objUtlAdmTpCtrlDTO = new MdUtlAdmTpCtrlDesempDTO(); - $objUtlAdmTpCtrlRN = new MdUtlAdmTpCtrlDesempRN(); + // busca a integracao da Funcionalidade: listar chefia imediata + $arrObjIntegracao = (new MdUtlAdmIntegracaoRN())->obterConfigIntegracaoPorFuncionalidade(MdUtlAdmIntegracaoRN::$CHEFIA); - $objUtlAdmTpCtrlDTO->setStrSinAtivo('S'); - $objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr(0,InfraDTO::$OPER_MAIOR); - #$objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr([43],InfraDTO::$OPER_IN); //teste - $objUtlAdmTpCtrlDTO->retNumIdMdUtlAdmPrmGr(); + if ( empty($arrObjIntegracao) ) throw new Exception("$strDefMap não existe ou está inativa"); - $arrObjsTpCtrlDTO = $objUtlAdmTpCtrlRN->listar( $objUtlAdmTpCtrlDTO ); + if( $arrObjIntegracao['integracao']->getStrTipoIntegracao() != 'RE' ) throw new Exception("$strDefMap aceita somente o Tipo de Integração REST"); - if( empty( $arrObjsTpCtrlDTO ) ) throw new InfraException('Não encontrado Tipo de Controle Ativo.'); + $arrParams = ['loginUsuario' => '']; + $arrParams = ['parametros' => MdUtlAdmIntegracaoINT::montaParametrosEntrada( $arrObjIntegracao, $arrParams )]; - $objUtlAdmPrmGrUsuRN = new MdUtlAdmPrmGrUsuRN(); - $objUtlAdmPrmGrUsuCargaRN = new MdUtlAdmPrmGrUsuCargaRN(); + $dadosChefia = MdUtlAdmIntegracaoINT::executarConsultaREST( $arrObjIntegracao , $arrParams['parametros'] ); - foreach ( $arrObjsTpCtrlDTO as $objPrmGr ) { - // busca usuarios membros da parametrizacao atual - $arrUsuarios = $objUtlAdmPrmGrUsuRN->getDadosUsuarioMembro($objPrmGr->getNumIdMdUtlAdmPrmGr()); + if ( empty($dadosChefia) ) throw new Exception("Não foram encontrados registros relacionados a Chefia Imediata"); - foreach ($arrUsuarios as $usuario) { - // retorna dados da carga horaria e ausencias por default - $cargaHoraria = 0; - $strDatasAusenciasUtilizadas = null; - $arrPeriodos = $this->trataTempoMembroComAusenciasEChefia($usuario, $cargaHoraria, $strDatasAusenciasUtilizadas, true, $dadosChefia); + $arrIdentificador = MdUtlAdmIntegracaoINT::montaParametrosSaida($arrObjIntegracao['parametros-integracao']); - $params = [ - 'idPrmGrUsu' => $usuario['idPrmGrUsu'], - 'periodoIni' => $arrPeriodos['dtInicial'], - 'periodoFin' => $arrPeriodos['dtFinal'] - ]; + // retorna os tipos de controles com o ID da parametrizacao + $objUtlAdmTpCtrlDTO = new MdUtlAdmTpCtrlDesempDTO(); + $objUtlAdmTpCtrlRN = new MdUtlAdmTpCtrlDesempRN(); - // retorna o ultimo registro ativo da carga horaria do membro atual - $objMdUtlPrmGrUsuCarga = $objUtlAdmPrmGrUsuCargaRN->buscaPeriodoParaAvaliacao($params); + $objUtlAdmTpCtrlDTO->setStrSinAtivo('S'); + $objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr(0,InfraDTO::$OPER_MAIOR); + #$objUtlAdmTpCtrlDTO->setNumIdMdUtlAdmPrmGr([43],InfraDTO::$OPER_IN); //teste + $objUtlAdmTpCtrlDTO->retNumIdMdUtlAdmPrmGr(); - if ( !is_null($objMdUtlPrmGrUsuCarga)) { - $bolEncontrou = false; - foreach ($dadosChefia as $usuarioChefiaImediata) { - if ( $usuario['siglaUsuario'] == $usuarioChefiaImediata->{$arrIdentificador['loginUsuario']} ) { - $bolEncontrou = true; - break; - } + $arrObjsTpCtrlDTO = $objUtlAdmTpCtrlRN->listar( $objUtlAdmTpCtrlDTO ); + + if( empty( $arrObjsTpCtrlDTO ) ) throw new InfraException('Não foi encontrado nenhum Tipo de Controle de Desempenho Ativo.'); + + $objUtlAdmPrmGrUsuRN = new MdUtlAdmPrmGrUsuRN(); + $objUtlAdmPrmGrUsuCargaRN = new MdUtlAdmPrmGrUsuCargaRN(); + + foreach ( $arrObjsTpCtrlDTO as $objPrmGr ) { + // busca usuarios membros da parametrizacao atual + $arrUsuarios = $objUtlAdmPrmGrUsuRN->getDadosUsuarioMembro($objPrmGr->getNumIdMdUtlAdmPrmGr()); + + foreach ($arrUsuarios as $usuario) { + // retorna dados da carga horaria e ausencias por default + $cargaHoraria = 0; + $strDatasAusenciasUtilizadas = null; + $arrPeriodos = $this->trataTempoMembroComAusenciasEChefia($usuario, $cargaHoraria, $strDatasAusenciasUtilizadas, true, $dadosChefia); + + $params = [ + 'idPrmGrUsu' => $usuario['idPrmGrUsu'], + 'periodoIni' => $arrPeriodos['dtInicial'], + 'periodoFin' => $arrPeriodos['dtFinal'] + ]; + + // retorna o ultimo registro ativo da carga horaria do membro atual + $objMdUtlPrmGrUsuCarga = $objUtlAdmPrmGrUsuCargaRN->buscaPeriodoParaAvaliacao($params); + + if ( !is_null($objMdUtlPrmGrUsuCarga)) { + $bolEncontrou = false; + $objDadosUsuChefia = null; + foreach ($dadosChefia as $usuarioChefiaImediata) { + if ( $usuario['siglaUsuario'] == $usuarioChefiaImediata->{$arrIdentificador['loginUsuario']} ) { + $objDadosUsuChefia = $usuarioChefiaImediata; + $bolEncontrou = true; + break; } + } - if ($bolEncontrou) { - //atualiza registro da parametrizacao do usuario - $objUtlAdmPrmGrUsuRN->atualizarInfoChefiaImediata($usuarioChefiaImediata, $usuario); + if ($bolEncontrou) { + //atualiza registro da parametrizacao do usuario + $objUtlAdmPrmGrUsuRN->atualizarInfoChefiaImediata($objDadosUsuChefia, $usuario); - // se teve mudança para menos no tempo da carga cadastrada no periodo, desativa o atual e insere um novo - if ($cargaHoraria < $objMdUtlPrmGrUsuCarga->getNumCargaHoraria()) { - //desativa o registro atual - $objMdUtlPrmGrUsuCarga->setStrSinAtivo('N'); - $objUtlAdmPrmGrUsuCargaRN->alterar($objMdUtlPrmGrUsuCarga); + // se teve mudança para menos no tempo da carga cadastrada no periodo, desativa o atual e insere um novo + if ($cargaHoraria < $objMdUtlPrmGrUsuCarga->getNumCargaHoraria()) { + //desativa o registro atual + $objMdUtlPrmGrUsuCarga->setStrSinAtivo('N'); + $objUtlAdmPrmGrUsuCargaRN->alterar($objMdUtlPrmGrUsuCarga); - //cadastra um novo registro - $this->insertSimplesCargaMembro($objMdUtlPrmGrUsuCarga, $cargaHoraria, $strDatasAusenciasUtilizadas); - } - } else { - $isAtualizado = false; - $objUtlAdmPrmGrUsuRN->atualizarInfoChefiaImediata(null, $usuario, $isAtualizado); - if ( $isAtualizado ) $this->insertSimplesCargaMembro($objMdUtlPrmGrUsuCarga, $cargaHoraria, $strDatasAusenciasUtilizadas); + //cadastra um novo registro + $this->insertSimplesCargaMembro($objMdUtlPrmGrUsuCarga, $cargaHoraria, $strDatasAusenciasUtilizadas); + } + } else { + $isAtualizado = false; + $objUtlAdmPrmGrUsuRN->atualizarInfoChefiaImediata(null, $usuario, $isAtualizado); + if ( $isAtualizado ) { + + //desativa o registro atual + $objMdUtlPrmGrUsuCarga->setStrSinAtivo('N'); + $objUtlAdmPrmGrUsuCargaRN->alterar($objMdUtlPrmGrUsuCarga); + + //cadastra um novo registro + $this->insertSimplesCargaMembro($objMdUtlPrmGrUsuCarga, $cargaHoraria, $strDatasAusenciasUtilizadas); } } } } - }catch ( Exception $e ){ - throw new InfraException('Erro na execução do Agendamento da Chefia Imediata.',$e); } } @@ -740,54 +795,69 @@ private function insertSimplesCargaMembro($objMdUtlPrmGrUsuCarga,$carga,$ausenci * Funcao acionada pelo Agendamento */ protected function listarAusenciasRhControlado(){ + try { + $this->initDadosDebug(); - $REF_PARAMETRO = 'mesesPassado'; + $numSeg = InfraUtil::verificarTempoProcessamento(); + InfraDebug::getInstance()->gravar('ATUALIZANDO REGISTROS DE USUÁRIOS - AUSÊNCIAS'); + + $REF_PARAMETRO = 'mesesPassado'; - try { $objAgendamentoDTO = new InfraAgendamentoTarefaDTO(); $objAgendamentoDTO->setStrComando('MdUtlAgendamentoAutomaticoRN::listarAusenciasRh'); $objAgendamentoDTO->retTodos(); $objAgendamentoDTO = ( new InfraAgendamentoTarefaRN() )->consultar( $objAgendamentoDTO ); - if( empty( $objAgendamentoDTO->getStrParametro() ) ) throw new InfraException('Não foi cadastrado dados sobre o campo Parâmetros.'); + if( empty( $objAgendamentoDTO->getStrParametro() ) ) throw new Exception('Não foi cadastrado dados sobre o campo Parâmetros.'); $arrStrParametros = explode(',' , $objAgendamentoDTO->getStrParametro() ); - if( strpos( $arrStrParametros[0] , $REF_PARAMETRO.'=' ) === false ) throw new InfraException('Não foi encontrado o Parâmetro:'. $REF_PARAMETRO .'='); + if( strpos( $arrStrParametros[0] , $REF_PARAMETRO.'=' ) === false ) throw new Exception('Não foi encontrado o Parâmetro:'. $REF_PARAMETRO .'='); $arrParam = explode( '=' , $arrStrParametros[0] ); - if( !array_key_exists( 1 , $arrParam ) ) throw new InfraException('Não foi informado o valor do parâmetro: ' . $REF_PARAMETRO .'.' ); + if( !array_key_exists( 1 , $arrParam ) ) throw new Exception('Não foi informado o valor do parâmetro: ' . $REF_PARAMETRO .'.' ); - if( empty( $arrParam[1] ) ) throw new InfraException('O valor do parâmetro: "' . $REF_PARAMETRO .'" está vazio ou igual a Zero.'); + if( empty( $arrParam[1] ) ) throw new Exception('O valor do parâmetro: "' . $REF_PARAMETRO .'" está vazio ou igual a Zero.'); - if( !is_numeric( $arrParam[1] ) ) throw new InfraException('O valor do parâmetro: ' . $REF_PARAMETRO .' deve ser um valor numérico.'); + if( !is_numeric( $arrParam[1] ) ) throw new Exception('O valor do parâmetro: ' . $REF_PARAMETRO .' deve ser um valor numérico.'); - if( $arrParam[1] < 0 ) throw new InfraException('O valor do parâmetro: ' . $REF_PARAMETRO .' deve ser um valor maior que Zero.'); + if( $arrParam[1] < 0 ) throw new Exception('O valor do parâmetro: ' . $REF_PARAMETRO .' deve ser um valor maior que Zero.'); // apos validacoes anteriores, aciona o metodo que executara as atualizacoes das ausencias dos membros nos tipos de controle $this->executaAtualizacaoAusencias( $arrParam ); - } catch ( Exception $e){ - throw new InfraException('Erro na atualização das ausências dos membros nos Tipos de Controle.',$e); + $numSeg = InfraUtil::verificarTempoProcessamento($numSeg); + InfraDebug::getInstance()->gravar('TEMPO TOTAL DE EXECUCAO: ' . $numSeg . ' s'); + InfraDebug::getInstance()->gravar('FIM'); + + LogSEI::getInstance()->gravar(InfraDebug::getInstance()->getStrDebug(), InfraLog::$INFORMACAO); + $this->limpaDadosDebug(); + + } catch ( Exception $e ){ + $exception = $this->trataException($e); + LogSEI::getInstance()->gravar( $exception , InfraLog::$INFORMACAO ); + $this->limpaDadosDebug(); + throw new InfraException('Falha no agendamento listarAusenciasRh',$e); } } private function executaAtualizacaoAusencias( $arrParam ){ $dti = date('Y-m-d' , strtotime( "- {$arrParam[1]} months") ); $dtf = date('Y-m-d'); + $strDefMap = 'MdUtlAgendamentoAutomaticoRN::listarAusenciasRh => Mapeamento de Integração \'Ausências Servidores\''; $arrObjIntegracao = ( new MdUtlAdmIntegracaoRN() )->obterConfigIntegracaoPorFuncionalidade(MdUtlAdmIntegracaoRN::$AUSENCIA); - if( empty( $arrObjIntegracao) ) return false; + if( empty( $arrObjIntegracao) ) throw new Exception("$strDefMap não existe ou está inativa"); - if( $arrObjIntegracao['integracao']->getStrTipoIntegracao() != 'RE' ) return false; + if( $arrObjIntegracao['integracao']->getStrTipoIntegracao() != 'RE' ) throw new Exception("$strDefMap aceita somente o Tipo de Integração REST"); $arrParamsAus = ['dataInicial' => $dti , 'dataFinal' => $dtf]; $arrParamsAus = ['parametros' => MdUtlAdmIntegracaoINT::montaParametrosEntrada( $arrObjIntegracao, $arrParamsAus )]; $dadosAusencia = MdUtlAdmIntegracaoINT::executarConsultaREST( $arrObjIntegracao , $arrParamsAus['parametros'] ); - if ( empty( $dadosAusencia ) ) return false; + if ( empty( $dadosAusencia ) ) throw new Exception("Não foram encontrados registros relacionados à Ausência de Servidores"); $arrIdentificador = MdUtlAdmIntegracaoINT::montaParametrosSaida($arrObjIntegracao['parametros-integracao']); @@ -820,6 +890,9 @@ private function executaAtualizacaoAusencias( $arrParam ){ $objMdUtlAdmPrmGrUsuCargaDTO = new MdUtlAdmPrmGrUsuCargaDTO(); $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdUsuario($objUsuarioDTO->getNumIdUsuario()); $objMdUtlAdmPrmGrUsuCargaDTO->setNumIdMdUtlAdmPrmGrUsu($objUsuarioDTO->getNumIdMdUtlAdmPrmGrUsu()); + $objMdUtlAdmPrmGrUsuCargaDTO->setStrSinAtivo('S'); + $objMdUtlAdmPrmGrUsuCargaDTO->setDtaPeriodoFinal(date('d/m/Y',strtotime($dti)),InfraDTO::$OPER_MAIOR_IGUAL); + $objMdUtlAdmPrmGrUsuCargaDTO->retNumIdMdUtlAdmPrmGrUsu(); $objMdUtlAdmPrmGrUsuCargaDTO->retTodos(); @@ -828,14 +901,6 @@ private function executaAtualizacaoAusencias( $arrParam ){ if ( !empty($arrUsuCargaDTO) ) { foreach ($arrUsuCargaDTO as $item) { // loop em cada periodo cadastrado do usuario - $arrParams = [ - 'idPrmGrUsu' => $item->getNumIdMdUtlAdmPrmGrUsu(), - 'periodoIni' => $item->getDtaPeriodoInicial(), - 'periodoFin' => $item->getDtaPeriodoFinal(), - ]; - - // retorna dados de carga horaria e periodos de acordo com as datas informadas no array acima - $objUltRegPeriodo = $objMdUtlAdmPrmGrUsuCargaRN->buscaPeriodoParaAvaliacao( $arrParams ); // calculo de qtos dias uteis o usuario terá no intervalo de seu periodo inicial/final $qtdDiasUteis = ( new MdUtlPrazoRN() )->retornaQtdDiaUtil($item->getDtaPeriodoInicial(),$item->getDtaPeriodoFinal(),false,false); @@ -846,25 +911,18 @@ private function executaAtualizacaoAusencias( $arrParam ){ $cargaTotal = $objMdUtlAdmPrmGrUsuCargaRN->geraTempoCargaHoraria( $fatorPres, $qtdDiasUteis, $objUsuarioDTO->getNumCargaPadraoParametrizacao() ); - if ( !empty( $objUltRegPeriodo ) ) { - $difTempo = $cargaTotal - $objUltRegPeriodo->getNumCargaHoraria(); - $cargaTotal -= $difTempo; - } - // gera os dias ja utilizados/salvos no banco - $arrDiasAusenciasUtilizados = MdUtlAdmPrmGrUsuCargaINT::criaDiasAusenciasUtilizados($objUltRegPeriodo->getStrDatasAusencias()); + $arrDiasAusenciasUtilizados = MdUtlAdmPrmGrUsuCargaINT::criaDiasAusenciasUtilizados($item->getStrDatasAusencias()); $dtPerInicial = implode('-',array_reverse(explode('/',$item->getDtaPeriodoInicial()))); $dtPerFinal = implode('-',array_reverse(explode('/',$item->getDtaPeriodoFinal()))); - - // para cada dia de ausencia, faz o controle se esta dentro do periodo - $arrDatasDeAusenciaLoop = MdUtlAdmPrmGrUsuCargaINT::geraRangeDias($ausencia->{$arrIdentificador['dataInicial']},$ausencia->{$arrIdentificador['dataFinal']}); - - $isAlterarPeriodo = false; - - foreach($arrDatasDeAusenciaLoop as $dtAus){ - // dia referencia da ausencia a ser avaliada - $dtRefAusencia = $dtAus; - + $isAlterarPeriodo = false; + $arrDatasDeAusenciaLoop = MdUtlAdmPrmGrUsuCargaINT::geraRangeDias( + $ausencia->{$arrIdentificador['dataInicial']}, + $ausencia->{$arrIdentificador['dataFinal']} + ); + + // para cada dia de ausencia, faz o controle se esta dentro do periodo + foreach($arrDatasDeAusenciaLoop as $dtRefAusencia){ if (strtotime($dtRefAusencia) >= strtotime($dtPerInicial) && strtotime($dtRefAusencia) <= strtotime($dtPerFinal) && !in_array($dtRefAusencia, $arrDiasAusenciasUtilizados) ) { array_push($arrDiasAusenciasUtilizados, $dtRefAusencia); $tmpParcial = $objMdUtlAdmPrmGrUsuCargaRN->geraTempoCargaHoraria( $fatorPres, 1, $objUsuarioDTO->getNumCargaPadraoParametrizacao() ); @@ -876,34 +934,23 @@ private function executaAtualizacaoAusencias( $arrParam ){ if( $isAlterarPeriodo && - $item->getNumIdMdUtlAdmPrmGrUsuCarga() == $objUltRegPeriodo->getNumIdMdUtlAdmPrmGrUsuCarga() && + $item->getNumCargaHoraria() != 0 && $cargaTotal < $item->getNumCargaHoraria() ) { + $cargaTotal = $cargaTotal < 0 ? 0 : $cargaTotal; $strDatasAusenciasUtilizadas = MdUtlAdmPrmGrUsuCargaINT::montaDatasAusenciasBanco($arrDiasAusenciasUtilizados); - // Verificar se é o periodo atual, caso sim, desativa-lo e criar um novo registro do periodo com o novo - // tempo de carga - if ($item->getStrSinAtivo() == 'S'){ - // altera a flag ativo como 'N' - $item->setStrSinAtivo('N'); - $objMdUtlAdmPrmGrUsuCargaRN->alterar($item); - - // cadastra um novo periodo com os novos dados - $item->setNumIdMdUtlAdmPrmGrUsuCarga(null); - $item->setStrSinAtivo('S'); - $item->setNumCargaHoraria($cargaTotal); - $item->setStrDatasAusencias($strDatasAusenciasUtilizadas); - $objMdUtlAdmPrmGrUsuCargaRN->cadastrar($item); - - } else { - // altera a coluna com os novos registros das datas de ausencias - $item->setNumIdMdUtlAdmPrmGrUsuCarga(null); - $item->setNumCargaHoraria($cargaTotal); - $item->setStrSinAtivo('S'); - $item->setStrDatasAusencias($strDatasAusenciasUtilizadas); - $objMdUtlAdmPrmGrUsuCargaRN->cadastrar($item); - } + // altera a flag ativo como 'N' + $item->setStrSinAtivo('N'); + $objMdUtlAdmPrmGrUsuCargaRN->alterar($item); + + // cadastra um novo periodo com os novos dados + $item->setNumIdMdUtlAdmPrmGrUsuCarga(null); + $item->setStrSinAtivo('S'); + $item->setNumCargaHoraria($cargaTotal); + $item->setStrDatasAusencias($strDatasAusenciasUtilizadas); + $objMdUtlAdmPrmGrUsuCargaRN->cadastrar($item); } } } @@ -911,4 +958,27 @@ private function executaAtualizacaoAusencias( $arrParam ){ } } } + + private function trataException( $e ){ + $strErro = $e->getMessage() . "\n"; + $strErro .= "====================================================== \n\n"; + return $strErro; + } + + private function initDadosDebug(){ + ini_set('max_execution_time', '0'); + ini_set('memory_limit', '1024M'); + + InfraDebug::getInstance()->setBolLigado(true); + InfraDebug::getInstance()->setBolDebugInfra(false); + InfraDebug::getInstance()->setBolEcho(false); + InfraDebug::getInstance()->limpar(); + } + + private function limpaDadosDebug(){ + InfraDebug::getInstance()->setBolLigado(false); + InfraDebug::getInstance()->setBolDebugInfra(false); + InfraDebug::getInstance()->setBolEcho(false); + InfraDebug::getInstance()->limpar(); + } } diff --git a/sei/web/modulos/utilidades/rn/MdUtlControleDsmpRN.php b/sei/web/modulos/utilidades/rn/MdUtlControleDsmpRN.php index 0f16a36..bfa77f2 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlControleDsmpRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlControleDsmpRN.php @@ -1644,7 +1644,7 @@ public function buscarTempoExecucaoConectado($arrParams) foreach ($arrObjsDados as $obj) { if ($obj->getStrStaAtendimentoDsmp() == self::$EM_CORRECAO_ANALISE || $obj->getStrStaAtendimentoDsmp() == self::$RASCUNHO_CORRECAO_ANALISE) { if ($obj->getStrTipoAcao() != self::$STR_TIPO_ACAO_RETRIAGEM) { - if ($this->getTempoExecucaoAnalise($obj->getNumIdMdUtlAnalise(), $idUsuarioParticipante) > 0) { + if ($this->getTempoExecucaoAnalise($obj->getNumIdMdUtlAnalise(), $idUsuarioParticipante, $arrDatas) > 0) { $numUnidEsforco += 0; } else { $numUnidEsforco += $obj->getNumTempoExecucaoAtribuido(); @@ -1716,7 +1716,7 @@ public function buscarTempoExecucaoExecutadoConectado($arrParams) $numUnidEsforco += $tempoExecucao; break; case MdUtlControleDsmpRN::$STR_TIPO_ACAO_ANALISE: - $tempoExecucao = $this->getTempoExecucaoAnalise($objMdUtlControleDsmp->getNumIdMdUtlAnalise(), $idUsuarioParticipante); + $tempoExecucao = $this->getTempoExecucaoAnalise($objMdUtlControleDsmp->getNumIdMdUtlAnalise(), $idUsuarioParticipante, $arrDatas); $numUnidEsforco += $tempoExecucao; break; case MdUtlControleDsmpRN::$STR_TIPO_ACAO_REVISAO: @@ -1789,19 +1789,24 @@ protected function getTempoExecucaoTriagem($idTriagem, $idUsuarioParticipante) return !is_null($objMdUtlTriagem) ? $objMdUtlTriagem->getNumTempoExecucaoAtribuido() : 0; } - protected function getTempoExecucaoAnalise($idAnalise, $idUsuarioParticipante) + protected function getTempoExecucaoAnalise($idAnalise, $idUsuarioParticipante, $arrDatas) { $objMdUtlAnaliseRN = new MdUtlAnaliseRN(); $objMdUtlAnaliseDTO = new MdUtlAnaliseDTO(); $objMdUtlAnaliseDTO->setNumIdMdUtlAnalise($idAnalise); $objMdUtlAnaliseDTO->setNumIdUsuario($idUsuarioParticipante); $objMdUtlAnaliseDTO->retNumTempoExecucaoAtribuido(); + $objMdUtlAnaliseDTO->retDtaPeriodoInicio(); + $objMdUtlAnaliseDTO->retDtaPeriodoFim(); - $objMdUtlAnalise = $objMdUtlAnaliseRN->consultar($objMdUtlAnaliseDTO); + $objMdUtlAnaliseDTO = $objMdUtlAnaliseRN->consultar($objMdUtlAnaliseDTO); - $vlrUnidEsf = 0; - if (!is_null($objMdUtlAnalise)) { - $vlrUnidEsf = $objMdUtlAnalise->getNumTempoExecucaoAtribuido(); + $dtIni = explode(' ' , $arrDatas['DT_INICIAL'])[0]; + $dtFim = explode(' ' , $arrDatas['DT_FINAL'])[0]; + + $vlrUnidEsf = 0; + if ( !is_null($objMdUtlAnaliseDTO) && ( $dtIni == $objMdUtlAnaliseDTO->getDtaPeriodoInicio() && $dtFim == $objMdUtlAnaliseDTO->getDtaPeriodoFim() ) ) { + $vlrUnidEsf = $objMdUtlAnaliseDTO->getNumTempoExecucaoAtribuido(); } return $vlrUnidEsf; } diff --git a/sei/web/modulos/utilidades/rn/MdUtlHistControleDsmpRN.php b/sei/web/modulos/utilidades/rn/MdUtlHistControleDsmpRN.php index dd4cee8..ffcbf9b 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlHistControleDsmpRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlHistControleDsmpRN.php @@ -1114,7 +1114,7 @@ protected function buscarTempoExecucaoExecutadoHistConectado($arrParams){ $numUnidEsforcoHist += $tempoExecucao; break; case MdUtlControleDsmpRN::$STR_TIPO_ACAO_ANALISE: - $tempoExecucao = $this->getTempoExecucaoAnalise($objMdUtlHistControleDsmp->getNumIdMdUtlAnalise(),$idUsuarioParticipante); + $tempoExecucao = $this->getTempoExecucaoAnalise($objMdUtlHistControleDsmp->getNumIdMdUtlAnalise(),$idUsuarioParticipante, $arrDatas); $numUnidEsforcoHist += $tempoExecucao; break; case MdUtlControleDsmpRN::$STR_TIPO_ACAO_REVISAO: @@ -1205,11 +1205,17 @@ protected function getTempoNaoExecutado($arrParams){ $objMdUtlAnaliseDTO->setNumIdUsuario($idUsuarioParticipante); $objMdUtlAnaliseDTO->setBolExclusaoLogica(false); $objMdUtlAnaliseDTO->retNumTempoExecucaoAtribuido(); + $objMdUtlAnaliseDTO->retDtaPeriodoInicio(); + $objMdUtlAnaliseDTO->retDtaPeriodoFim(); - $objMdUtlAnalise = $objMdUtlAnaliseRN->consultar($objMdUtlAnaliseDTO); - $vlrUndEsf = !is_null( $objMdUtlAnalise ) ? $objMdUtlAnalise->getNumTempoExecucaoAtribuido() : 0; - $numTempoExecucaoNaoRealizadoHist += $vlrUndEsf; + $dtIni = explode(' ' , $arrDatas['DT_INICIAL'])[0]; + $dtFim = explode(' ' , $arrDatas['DT_FINAL'])[0]; + $objMdUtlAnaliseDTO = $objMdUtlAnaliseRN->consultar($objMdUtlAnaliseDTO); + + if ( !is_null( $objMdUtlAnaliseDTO ) && ( $dtIni == $objMdUtlAnaliseDTO->getDtaPeriodoInicio() && $dtFim == $objMdUtlAnaliseDTO->getDtaPeriodoFim() ) ) { + $numTempoExecucaoNaoRealizadoHist += $objMdUtlAnaliseDTO->getNumTempoExecucaoAtribuido(); + } } } } @@ -1230,17 +1236,31 @@ public function getTempoExecucaoTriagem($idTriagem, $idUsuarioParticipante){ } - public function getTempoExecucaoAnalise($idAnalise, $idUsuarioParticipante){ + public function getTempoExecucaoAnalise($idAnalise, $idUsuarioParticipante, $arrDatas = null){ $objMdUtlAnaliseRN = new MdUtlAnaliseRN(); $objMdUtlAnaliseDTO = new MdUtlAnaliseDTO(); $objMdUtlAnaliseDTO->setNumIdMdUtlAnalise($idAnalise); $objMdUtlAnaliseDTO->setNumIdUsuario($idUsuarioParticipante); $objMdUtlAnaliseDTO->setBolExclusaoLogica(false); + $objMdUtlAnaliseDTO->retNumTempoExecucaoAtribuido(); + $objMdUtlAnaliseDTO->retDtaPeriodoInicio(); + $objMdUtlAnaliseDTO->retDtaPeriodoFim(); $objMdUtlAnalise = $objMdUtlAnaliseRN->consultar($objMdUtlAnaliseDTO); - - return !is_null( $objMdUtlAnalise ) ? $objMdUtlAnalise->getNumTempoExecucaoAtribuido() : 0; + + if ( $objMdUtlAnalise ){ + $dtIni = $arrDatas ? explode(' ' , $arrDatas['DT_INICIAL'])[0] : $objMdUtlAnalise->getDtaPeriodoInicio(); + $dtFim = $arrDatas ? explode(' ' , $arrDatas['DT_FINAL'])[0] : $objMdUtlAnalise->getDtaPeriodoFim(); + + if ( $dtIni == $objMdUtlAnalise->getDtaPeriodoInicio() && $dtFim == $objMdUtlAnalise->getDtaPeriodoFim() ) { + return $objMdUtlAnalise->getNumTempoExecucaoAtribuido(); + } else { + return 0; + } + } else { + return 0; + } } public function getTempoExecucaoRevisao($idRevisao, $idUsuarioParticipante){ diff --git a/sei/web/modulos/utilidades/rn/MdUtlRelAnaliseProdutoRN.php b/sei/web/modulos/utilidades/rn/MdUtlRelAnaliseProdutoRN.php index 4b979c7..1f058f5 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlRelAnaliseProdutoRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlRelAnaliseProdutoRN.php @@ -160,4 +160,30 @@ protected function getArrObjPorIdsConectado($arrIds){ return $this->listar($objMdUtlRelAnaliseProdutoDTO); } + public function atualizaReferenciaRelTriagAtvRelAnaliseProdutoConectado( array $arrParams ) { + + $idRelTriagAtv = $arrParams['idRelTriagAtv'] ?? null; + $idAtividade = $arrParams['idAtividade'] ?? null; + $novoIdRelTriagAtv = $arrParams['novoIdRelTriagAtv'] ?? null; + + // verifica se tem registro na tabela md_utl_rel_analise_produto que referencia a md_utl_rel_triagem_atv passados no parametro + if ( !is_null( $idRelTriagAtv ) && !is_null( $idAtividade ) ) { + $objRelAnaliseProdDTO = new MdUtlRelAnaliseProdutoDTO(); + $objRelAnaliseProdDTO->setNumIdMdUtlAdmAtividade( $idAtividade ); + $objRelAnaliseProdDTO->setNumIdMdUtlRelTriagemAtv( $idRelTriagAtv ); + + $objRelAnaliseProdDTO->retNumIdMdUtlRelAnaliseProduto(); + $objRelAnaliseProdDTO->retNumIdMdUtlRelTriagemAtv(); + + $arrObjs = $this->listar($objRelAnaliseProdDTO); + + // se contem registros, atualiza a coluna Fk da tabela md_utl_rel_analise_produto que referencia a tabela md_utl_rel_triagem_atv + if ( is_array($arrObjs) && !empty($arrObjs) ) { + foreach ( $arrObjs as $k => $objRelAnaliseProd ) { + $objRelAnaliseProd->setNumIdMdUtlRelTriagemAtv( $novoIdRelTriagAtv ); + $this->alterar( $objRelAnaliseProd ); + } + } + } + } } \ No newline at end of file diff --git a/sei/web/modulos/utilidades/rn/MdUtlRelTriagemAtvRN.php b/sei/web/modulos/utilidades/rn/MdUtlRelTriagemAtvRN.php index efb9b3c..53f0b7a 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlRelTriagemAtvRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlRelTriagemAtvRN.php @@ -124,22 +124,50 @@ protected function contarConectado(MdUtlRelTriagemAtvDTO $objMdUtlRelTriagemAtvD protected function cadastrarObjsTriagemConectado($arrDados) { - $dados = array_key_exists('0', $arrDados) ? $arrDados[0] : null; - $objTriagem = array_key_exists('1', $arrDados) ? $arrDados[1] : null; + $dados = array_key_exists('0', $arrDados) ? $arrDados[0] : null; + $objTriagem = array_key_exists('1', $arrDados) ? $arrDados[1] : null; $arrAtividades = PaginaSEI::getInstance()->getArrItensTabelaDinamica($dados['hdnTbAtividade']); + $arrRetorno = array(); if (count($arrAtividades) > 0 && !is_null($objTriagem)) { foreach ($arrAtividades as $atividade) { + // retorna registro de Data de Execucao e o IdRelTriagAtv Atual, caso existem + $arrDadosExtras = array_key_exists(8,$atividade) ? explode('#',$atividade[8]) : ['_']; + $objRelTriagemAtivDTO = new MdUtlRelTriagemAtvDTO(); $objRelTriagemAtivDTO->setNumIdMdUtlRelTriagemAtv(null); $objRelTriagemAtivDTO->setNumIdMdUtlTriagem($objTriagem->getNumIdMdUtlTriagem()); $objRelTriagemAtivDTO->setNumIdMdUtlAdmAtividade($atividade[1]); $objRelTriagemAtivDTO->setNumTempoExecucao($atividade[6]); - $objRelTriagemAtivDTO->setNumTempoExecucaoAtribuido($atividade[6]); + $objRelTriagemAtivDTO->setNumTempoExecucaoAtribuido($atividade[7]); + $objRelTriagemAtivDTO->setDtaDataExecucao($arrDadosExtras[0] != '_' ? $arrDadosExtras[0] : null); + $isChefiaImediata = $dados['isChefiaImediata']; if ($isChefiaImediata) $objRelTriagemAtivDTO->setNumTempoExecucaoAtribuido(0); - $arrRetorno[] = $this->cadastrar($objRelTriagemAtivDTO); + $objCadastrado = $this->cadastrar($objRelTriagemAtivDTO); + $arrRetorno['objRetornoRelTriagem'][] = $objCadastrado; + + //case veio da Tela de Retriagem + if ( !isset( $dados['isOrigemTelaAnalise'] ) ) { + //verifica a referencia anterior da relTriagemAtv para atualizar na RelAnaliseProduto + if ( is_numeric( $arrDadosExtras[1] ) ) { + $objRelAnaliseProdRN = new MdUtlRelAnaliseProdutoRN(); + + $arrParametro = [ + 'idRelTriagAtv' => $arrDadosExtras[1], + 'idAtividade' => $atividade[1], + 'novoIdRelTriagAtv' => $objCadastrado->getNumIdMdUtlRelTriagemAtv() + ]; + + $objRelAnaliseProdRN->atualizaReferenciaRelTriagAtvRelAnaliseProduto($arrParametro); + } + } else { //veio da Tela de Analise + $arrRetorno['itensRelTriagemParaAtualizar'][] = [ + 'idRelTriagAtv' => $arrDadosExtras[1] , + 'novoIdRelTriagAtv' => $objCadastrado->getNumIdMdUtlRelTriagemAtv() + ]; + } } } return $arrRetorno; @@ -178,6 +206,8 @@ protected function listarComAnaliseControlado($idAnalise) $objMdUtlRelAnaliseProdutoRN = new MdUtlRelAnaliseProdutoRN(); $objMdUtlRelAnaliseProdutoDTO->setNumIdMdUtlAnalise($idAnalise); $objMdUtlRelAnaliseProdutoDTO->setStrSinAtivoAnalise('S'); + $objMdUtlRelAnaliseProdutoDTO->setOrd('IdMdUtlRelTriagemAtv',InfraDTO::$TIPO_ORDENACAO_ASC); + $objMdUtlRelAnaliseProdutoDTO->retStrNomeProduto(); $objMdUtlRelAnaliseProdutoDTO->retNumComplexidadeAtividade(); $objMdUtlRelAnaliseProdutoDTO->retStrNomeSerie(); @@ -199,6 +229,12 @@ protected function listarComAnaliseControlado($idAnalise) $objMdUtlRelAnaliseProdutoDTO->retStrObservacaoAnalise(); $objMdUtlRelAnaliseProdutoDTO->retStrSinAtvRevAmostragem(); + $objMdUtlRelAnaliseProdutoDTO->setOrd('DataExecucao',InfraDTO::$TIPO_ORDENACAO_ASC); + $objMdUtlRelAnaliseProdutoDTO->setOrd('IdMdUtlRelTriagemAtv',InfraDTO::$TIPO_ORDENACAO_ASC); + $objMdUtlRelAnaliseProdutoDTO->setOrd('NomeAtividade',InfraDTO::$TIPO_ORDENACAO_ASC); + $objMdUtlRelAnaliseProdutoDTO->setOrd('NomeProduto',InfraDTO::$TIPO_ORDENACAO_ASC); + $objMdUtlRelAnaliseProdutoDTO->setOrd('NomeSerie',InfraDTO::$TIPO_ORDENACAO_ASC); + $arrObjs = $objMdUtlRelAnaliseProdutoRN->listar($objMdUtlRelAnaliseProdutoDTO); return $arrObjs; } @@ -215,6 +251,7 @@ protected function getObjsPorIdTriagemConectado($idTriagem) $objRelTriagemAtvDTO->retNumVlTmpExecucaoRev(); $objRelTriagemAtvDTO->retStrSinAnalise(); $objRelTriagemAtvDTO->retStrSinNaoAplicarPercDsmpAtv(); + $objRelTriagemAtvDTO->retDtaDataExecucao(); return $objRelTriagemAtvRN->listar($objRelTriagemAtvDTO); } diff --git a/sei/web/modulos/utilidades/rn/MdUtlTriagemRN.php b/sei/web/modulos/utilidades/rn/MdUtlTriagemRN.php index 3e7682a..a3cc1b1 100644 --- a/sei/web/modulos/utilidades/rn/MdUtlTriagemRN.php +++ b/sei/web/modulos/utilidades/rn/MdUtlTriagemRN.php @@ -170,9 +170,8 @@ private function _retornaDetalheTriagem() protected function cadastrarDadosTriagemControlado($dados) { try { - $objMdUtlControleDsmpRN = new MdUtlControleDsmpRN(); - $objMdUtlControleDsmpDTO = new MdUtlControleDsmpDTO(); + //$objMdUtlControleDsmpDTO = new MdUtlControleDsmpDTO(); $objRelAtvTriagemRN = new MdUtlRelTriagemAtvRN(); $objMdUtlFilaPrmUsuRN = new MdUtlAdmFilaPrmGrUsuRN; $objHistoricoRN = new MdUtlHistControleDsmpRN(); @@ -203,11 +202,24 @@ protected function cadastrarDadosTriagemControlado($dados) $vlrUndEsf = empty($objControleDsmpDTO->getNumTempoExecucao()) ? null : $objControleDsmpDTO->getNumTempoExecucao(); } - $objTriagem = $this->_salvaObjTriagem($dados, $dados['hdnIsPossuiAnalise'], $isTpProcParametrizado, $vlrUndEsf); - $idTriagem = $objTriagem->getNumIdMdUtlTriagem(); - $arrObjs = $objRelAtvTriagemRN->cadastrarObjsTriagem(array($dados, $objTriagem)); - + $idTriagem = $objTriagem->getNumIdMdUtlTriagem(); + $arrObjs = $objRelAtvTriagemRN->cadastrarObjsTriagem(array($dados, $objTriagem)); + + // se veio da Tela de Analise e não foram todas as atividades analisadas, ocorre retriagem automatica, ocorrendo a necessidade + // de atualizar o idRelTriagem que esta no $_POST ( variavel $dados ) + if ( $isRetriagem && (isset($dados['isOrigemTelaAnalise']) && $dados['isOrigemTelaAnalise'] === true ) ) { + $arrItens = explode( ',' , $dados['hdnItensSelecionados'] ); + foreach ( $arrItens as $itemSelecionado ) { + foreach ( $arrObjs['itensRelTriagemParaAtualizar'] as $itemRelTriag ) { + if ( (int) $_POST['idRelTriagem_'.$itemSelecionado] == (int) $itemRelTriag['idRelTriagAtv'] ) { + $dados['idRelTriagem_'.$itemSelecionado] = $itemRelTriag['novoIdRelTriagAtv']; + $_POST['idRelTriagem_'.$itemSelecionado] = $itemRelTriag['novoIdRelTriagAtv']; + $_POST['txtDtAnaliseAtividade'.$itemRelTriag['novoIdRelTriagAtv']] = $_POST['txtDtAnaliseAtividade'.$itemRelTriag['idRelTriagAtv']]; + } + } + } + } $arrObjsAtuais = $objMdUtlControleDsmpRN->getObjsAtivosPorProcedimento(array($idProcedimento)); $tipoRevisao = $objMdUtlFilaPrmUsuRN->getPercentualTriagemAnalisePorFila($idFila); @@ -599,6 +611,12 @@ protected function getObjDTOAnaliseConectado($idTriagem) $objRelTriagemAtvDTO->retDtaDataExecucao(); $objRelTriagemAtvDTO->retStrSinAtvRevAmostragem(); + $objRelTriagemAtvDTO->setOrd('DataExecucao',InfraDTO::$TIPO_ORDENACAO_ASC); + $objRelTriagemAtvDTO->setOrd('IdMdUtlRelTriagemAtv',InfraDTO::$TIPO_ORDENACAO_ASC); + $objRelTriagemAtvDTO->setOrd('NomeAtividade',InfraDTO::$TIPO_ORDENACAO_ASC); + $objRelTriagemAtvDTO->setOrd('NomeProduto',InfraDTO::$TIPO_ORDENACAO_ASC); + $objRelTriagemAtvDTO->setOrd('NomeSerie',InfraDTO::$TIPO_ORDENACAO_ASC); + return $objRelTriagemAtvDTO; } @@ -708,7 +726,6 @@ protected function checarDadosTriagemControlado($idUsuario) public function cadastroRetriagem($objTriagemDTO, $objControleDsmpDTO) { - //Desativar Relacionamentos $this->desativar(array($objTriagemDTO)); @@ -720,8 +737,7 @@ public function cadastroRetriagem($objTriagemDTO, $objControleDsmpDTO) $objRevisaoRN->desativar(array($objRevisaoDTO)); } - $dados = $_POST; - $dados['isCorrecaoTriagem'] = true; - return $this->cadastrarDadosTriagem($dados); + $_POST['isCorrecaoTriagem'] = true; + return $this->cadastrarDadosTriagem($_POST); } } diff --git a/sip/scripts/sip_atualizar_versao_modulo_utilidades.php b/sip/scripts/sip_atualizar_versao_modulo_utilidades.php index 41aa11b..f10df45 100644 --- a/sip/scripts/sip_atualizar_versao_modulo_utilidades.php +++ b/sip/scripts/sip_atualizar_versao_modulo_utilidades.php @@ -78,8 +78,18 @@ protected function finalizar($strMsg = null, $bolErro = false) die; } + 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 SIP VERSÃO ' . SIP_VERSAO); @@ -91,12 +101,9 @@ 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) { - $this->finalizar('VERSÃO DO FRAMEWORK PHP INCOMPATÍVEL (VERSÃO ATUAL ' . VERSAO_INFRA . ', SENDO REQUERIDA VERSÃO IGUAL OU SUPERIOR A ' . $numVersaoInfraRequerida . ')', true); + $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); } //checando permissoes na base de dados