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 = '
-
'.$ctrlNmAtividade.'
-
+
'.$ctrlNmAtividade.'
+
Data:
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(= $tpCtrl?>);
-
- getCargaHrDistribuida(arrTpsCtrl,= $idUsuarioResp ?>);
+ 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 ='= MdUtlMensagemINT::getMensagem(MdUtlMensagemINT::$MSG_UTL_85)?>';
function inicializar() {
-
+
+ // veio da tela de detalhamento do processo
+ if ( document.querySelector('#hdnDetalhamento').value == 1 ) {
+ window.opener.parent.document.querySelector('#ifrArvore').src = '= $linkPosSubmitDetalhamento ?>';
+ 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 @@
-
Carga Horária Padrão no Período:
+
Carga Exigível no Período Atual:
/>
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 ? "= SessaoSEI::getInstance()->getNumIdUsuario() ?>" : idUsuario,
idTipoControle: idsTpCtrl
};
+
$.ajax({
url: "= $strUrlBuscarDadosCarga ?>",
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 @@
-
Carga Horária Padrão no Período:
+
Carga Exigível no Período Atual:
/>
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[] = '
C ancelar';
$tpAcaoAval = MdUtlControleDsmpRN::$EM_ANALISE;
+ $strTela = 'Análise';
$idObj = in_array(
$objControleDsmpDTO->getStrStaAtendimentoDsmp(),
@@ -197,6 +198,7 @@
$arrComandos[] = '
C ancelar';
$tpAcaoAval = MdUtlControleDsmpRN::$EM_TRIAGEM;
+ $strTela = 'Triagem(sem análise)';
$idObj = in_array(
$objControleDsmpDTO->getStrStaAtendimentoDsmp(),
@@ -251,6 +253,7 @@
$arrComandos[] = '
Fec har ';
$tpAcaoAval = MdUtlControleDsmpRN::$EM_ANALISE;
+ $strTela = 'Análise';
$numId = $objControleDsmpDTO->getStrStaAtendimentoDsmp() == MdUtlControleDsmpRN::$EM_CORRECAO_ANALISE
? $objControleDsmpDTO->getNumIdMdUtlControleDsmp()
@@ -279,6 +282,7 @@
$arrComandos[] = '
Fec har ';
$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(= $tpCtrl?>);
-
- getCargaHrDistribuida(arrTpsCtrl, = $idUsuarioResp ?>);
}
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
+
= MdUtlAdmPrmGrINT::convertToHoursMins($tmpExecutado)?>
@@ -37,11 +43,11 @@
-
Carga Horária Padrão no Período:
+
Carga Exigível no Período Atual:
/>
-
0min
+
= MdUtlAdmPrmGrINT::convertToHoursMins($cargaPadrao) . ' - '. $tpPeriodo ?>
@@ -50,6 +56,6 @@
/>
-
0min
+
= MdUtlAdmPrmGrINT::convertToHoursMins($tmpDistribuido) ?>
\ 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(= $tpCtrl?>);
-
- getCargaHrDistribuida(arrTpsCtrl , = $idUsuarioResp ?>);
}
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