diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index bd324c286..bc13607ff 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -1,7 +1,7 @@ 0) { $xml = self::gerarXMLItensArrInfraDTOAutoCompletar($arrObjEstruturaDTO, 'NumeroDeIdentificacaoDaEstrutura', 'Nome'); } else { - return ''; + return ''; } break; diff --git a/src/bd/PenRestricaoEnvioComponentesDigitaisBD.php b/src/bd/PenRestricaoEnvioComponentesDigitaisBD.php new file mode 100755 index 000000000..7be430f30 --- /dev/null +++ b/src/bd/PenRestricaoEnvioComponentesDigitaisBD.php @@ -0,0 +1,10 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'id'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdEstrutura', 'id_estrutura'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'StrEstrutura', 'str_estrutura'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRh', 'id_unidade_rh'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'StrUnidadeRh', 'str_unidade_rh'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'id_usuario'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + + $this->configurarFK('IdUsuario', 'usuario', 'id_usuario'); + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); + } +} diff --git a/src/pen_map_restricao_envio_comp_digitais_cadastrar.php b/src/pen_map_restricao_envio_comp_digitais_cadastrar.php new file mode 100755 index 000000000..98e86d2d2 --- /dev/null +++ b/src/pen_map_restricao_envio_comp_digitais_cadastrar.php @@ -0,0 +1,501 @@ +setBolLigado(true); +//InfraDebug::getInstance()->setBolDebugInfra(true); +//InfraDebug::getInstance()->limpar(); +////////////////////////////////////////////////////////////////////////////// + +$objSessaoSEI = SessaoSEI::getInstance(); +$objPaginaSEI = PaginaSEI::getInstance(); +$objDebug = InfraDebug::getInstance(); +$objInfraException = new InfraException(); + +try { + $objSessaoSEI->validarLink(); + $objSessaoSEI->validarPermissao('pen_map_restricao_envio_comp_digitais_listar'); + + $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN(); + + $strLinkValidacao = $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink( + 'controlador.php?acao=pen_map_restricao_envio_comp_digitais_salvar&acao_=' + . $_GET['acao'] + . $strParametros + )); + + $disabilitarVisualizar = ""; + switch ($_GET['acao']) { + case 'pen_map_restricao_envio_comp_digitais_salvar': + $acao = !empty($id) ? + 'pen_map_restricao_envio_comp_digitais_atualizar' : + 'pen_map_restricao_envio_comp_digitais_cadastrar'; + + if (empty($_POST['selRepositorioEstruturas']) || empty($_POST['txtRepositorioEstruturas']) || $_POST['txtRepositorioEstruturas'] == "0") { + $objPaginaSEI->adicionarMensagem('O Repositório de Estruturas Organizacionais não foi selecionado', InfraPagina::$TIPO_MSG_AVISO); + header('Location: '.$objSessaoSEI->assinarLink('controlador.php?acao='.$acao.'&acao_='.$_GET['acao_'])); + exit(0); + } + if (empty($_POST['hdnIdUnidade']) || empty($_POST['txtUnidade']) || $_POST['txtUnidade'] == "0") { + $objPaginaSEI->adicionarMensagem('O Órgao não foi selecionado.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: '.$objSessaoSEI->assinarLink('controlador.php?acao='.$acao.'&acao_='.$_GET['acao_'])); + exit(0); + } + + $numIdUnidadeRh = $_POST['hdnIdUnidade']; + $strUnidadeRh = $_POST['txtUnidade']; + $numIdRepositorio = $_POST['selRepositorioEstruturas']; + $txtRepositorioEstruturas = $_POST['txtRepositorioEstruturas']; + + $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objDTO->setNumIdEstrutura($numIdRepositorio); + $objDTO->setNumIdUnidadeRh($numIdUnidadeRh); + if (!empty($id)) { + $objDTO->setDblId(array($id), InfraDTO::$OPER_NOT_IN); + } + $objDTO->setNumMaxRegistrosRetorno(1); + + $objDTO = $objPenRestricaoEnvioComponentesDigitaisRN->contar($objDTO); + if ($objDTO > 0) { + $objPaginaSEI->adicionarMensagem( + 'Cadastro de relacionamento entre órgãos já existente', InfraPagina::$TIPO_MSG_ERRO + ); + header('Location: ' + . $objSessaoSEI->assinarLink( + 'controlador.php?acao=pen_map_restricao_envio_comp_digitais_cadastrar&acao_='.$_GET['acao_'] + ) + ); + exit(0); + } + + $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objDTO->setNumIdUsuario($objSessaoSEI->getNumIdUsuario()); + $objDTO->setNumIdEstrutura($numIdRepositorio); + $objDTO->setStrStrEstrutura($txtRepositorioEstruturas); + $objDTO->setNumIdUnidadeRh($numIdUnidadeRh); + $objDTO->setStrStrUnidadeRh($strUnidadeRh); + + if (!is_null($id)) { + $objDTO->setDblId($id); + $objPenRestricaoEnvioComponentesDigitaisRN->alterar($objDTO); + $objPaginaSEI->adicionarMensagem( + 'Relacionamento atualizado com sucesso.', InfraPagina::$TIPO_MSG_INFORMACAO + ); + } else { + $objPenRestricaoEnvioComponentesDigitaisRN->cadastrar($objDTO); + $objPaginaSEI->adicionarMensagem( + 'Relacionamento cadastrado com sucesso.', InfraPagina::$TIPO_MSG_INFORMACAO + ); + } + header('Location: ' + . $objSessaoSEI->assinarLink( + 'controlador.php?acao=pen_map_restricao_envio_comp_digitais_listar&acao_='.$_GET['acao_'] + ) + ); + exit(0); + break; + case 'pen_map_restricao_envio_comp_digitais_visualizar': + case 'pen_map_restricao_envio_comp_digitais_atualizar': + case 'pen_map_restricao_envio_comp_digitais_cadastrar': + if (array_key_exists('Id', $_GET) && !empty($_GET['Id'])) { + $nomeTitle = 'Editar'; + if ($_GET['acao'] == 'pen_map_restricao_envio_comp_digitais_visualizar') { + $nomeTitle = 'Visualizar'; + } + $strTitulo = $nomeTitle . ' Mapeamento de Restrição de Envio de Componentes Digitais'; + } else { + $strTitulo = 'Novo Mapeamento de Restrição de Envio de Componentes Digitais'; + } + + //Monta os botões do topo + if ( + $_GET['acao'] != 'pen_map_restricao_envio_comp_digitais_visualizar' + && $objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_cadastrar') + && $objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_atualizar') + ) { + $arrComandos[] = ''; + $arrComandos[] = ''; + } else { + $disabilitarVisualizar = " disabled='disabled' "; + $arrComandos[] = ''; + } + + //Preparação dos dados para montagem da tela de expedição de processos + $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); + $repositorios = $objExpedirProcedimentosRN->listarRepositoriosDeEstruturas(); + + if (array_key_exists('Id', $_GET) && !empty($_GET['Id'])) { + $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retDblId(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdEstrutura(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrEstrutura(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidadeRh(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrUnidadeRh(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUsuario(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidade(); + $objPenRestricaoEnvioComponentesDigitaisDTO->setDblId($_GET['Id']); + + $objPenRestricaoEnvioComponentesDigitaisDTO = + $objPenRestricaoEnvioComponentesDigitaisRN->consultar($objPenRestricaoEnvioComponentesDigitaisDTO); + + if(!is_null($objPenRestricaoEnvioComponentesDigitaisDTO)) { + $numIdRepositorio = $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdEstrutura(); + $hdnIdUnidade = $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdUnidadeRh(); + $strNomeUnidade = $objPenRestricaoEnvioComponentesDigitaisDTO->getStrStrUnidadeRh(); + } + } + + $idRepositorioSelecionado = (isset($numIdRepositorio)) ? $numIdRepositorio : ''; + $strItensSelRepositorioEstruturas = InfraINT::montarSelectArray( + '', 'Selecione', $idRepositorioSelecionado, $repositorios + ); + + $strLinkAjaxProcedimentoApensado = $objSessaoSEI->assinarLink( + 'controlador_ajax.php?acao_ajax=pen_apensados_auto_completar_expedir_procedimento' + ); + $strLinkUnidadesAdministrativasSelecao = $objSessaoSEI->assinarLink( + 'controlador.php?acao=pen_unidades_administrativas_externas_selecionar_expedir_procedimento' + . '&tipo_pesquisa=1&id_object=objLupaUnidadesAdministrativas&idRepositorioEstrutura=1' + ); + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $strLinkAjaxUnidade = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_expedir_procedimento&acao=' . $_GET['acao']); +} catch (Exception $e) { + $objPaginaSEI->adicionarMensagem( + 'Falha no cadastro do relacionamento. Consulte o log do SEI para mais informações.', InfraPagina::$TIPO_MSG_ERRO + ); + throw new InfraException("Erro processando requisição de envio externo de processo", $e); +} + +$objPaginaSEI->montarDocType(); +$objPaginaSEI->abrirHtml(); +$objPaginaSEI->abrirHead(); +$objPaginaSEI->montarMeta(); +$objPaginaSEI->montarTitle(':: ' . $objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo . ' ::'); +$objPaginaSEI->montarStyle(); + +?> + +montarJavaScript(); +?> + +fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="infraEfeitoTabelas(); inicializar();"'); +?> +
+ montarBarraComandosSuperior($arrComandos); ?> + +
+ + + + class="infraText" value="" /> +
+ +
+ +
+ + placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" + value="" + tabindex="getProxTabDados() ?>" /> + + + Consultar organograma + +
+ + +
+ + + + +
+montarAreaDebug(); +$objPaginaSEI->fecharBody(); +$objPaginaSEI->fecharHtml(); +?> \ No newline at end of file diff --git a/src/pen_map_restricao_envio_comp_digitais_listar.php b/src/pen_map_restricao_envio_comp_digitais_listar.php new file mode 100755 index 000000000..b29060db9 --- /dev/null +++ b/src/pen_map_restricao_envio_comp_digitais_listar.php @@ -0,0 +1,357 @@ +setBolLigado(false); +InfraDebug::getInstance()->setBolDebugInfra(true); +InfraDebug::getInstance()->limpar(); + +$objPaginaSEI = PaginaSEI::getInstance(); +$objSessaoSEI = SessaoSEI::getInstance(); + +$strProprioLink = 'controlador.php?acao=' + . $_GET['acao'] + . '&acao_origem=' + . $_GET['acao_origem'] + . '&acao_retorno=' + . $_GET['acao_retorno']; + +try { + $objSessaoSEI->validarLink(); + $objSessaoSEI->validarPermissao('pen_map_restricao_envio_comp_digitais_listar'); + + $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN(); + + //-------------------------------------------------------------------------- + // Ações + if (array_key_exists('acao', $_GET)) { + $arrParam = array_merge($_GET, $_POST); + switch ($_GET['acao']) { + case 'pen_map_restricao_envio_comp_digitais_excluir': + if (array_key_exists('hdnInfraItensSelecionados', $arrParam) && !empty($arrParam['hdnInfraItensSelecionados'])) { + if (is_array($arrParam['hdnInfraItensSelecionados'])) { + $ids = explode(',', $arrParam['hdnInfraItensSelecionados']); + foreach ($ids as $key => $id) { + $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objDTO->setDblId($id); + $objPenRestricaoEnvioComponentesDigitaisRN->excluir($objDTO); + } + } else { + $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objDTO->setDblId($arrParam['hdnInfraItensSelecionados']); + $objPenRestricaoEnvioComponentesDigitaisRN->excluir($objDTO); + } + $objPaginaSEI->adicionarMensagem('Mapeamento excluído com sucesso.', InfraPagina::$TIPO_MSG_INFORMACAO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } else { + throw new InfraException('Nenhum Registro foi selecionado para executar esta ação'); + } + break; + + case 'pen_map_restricao_envio_comp_digitais_listar': + // Ação padrão desta tela + break; + + default: + throw new InfraException('Ação não permitida nesta tela'); + } + } + //-------------------------------------------------------------------------- + + $strTitulo = 'Lista dos Mapeamentos de Restrição de Envio de Componentes Digitais'; + + $strBotaoEspeciePadrao = ""; + if (SessaoSEI::getInstance()->verificarPermissao('pen_map_restricao_envio_comp_digitais_consultar')) { + $strBotaoEspeciePadrao = ''; + } + + if (SessaoSEI::getInstance()->verificarPermissao('pen_map_restricao_envio_comp_digitais_atribuir')) { + $bolPadraoNaoAtribuido = empty((new PenParametroRN())->getParametro("PEN_ESPECIE_DOCUMENTAL_PADRAO_ENVIO")); + $strClassePendencia = ($bolPadraoNaoAtribuido) ? "pendencia" : ""; + $strAltPendencia = ($bolPadraoNaoAtribuido) ? "Pendente atribuição de espécie documental padrão para envio de processos" : ""; + $strBotaoEspeciePadrao = ''; + } + + $arrComandos = array(); + $btnPesquisar = ''; + $btnNovo = ''; + $btnExcluir = ''; + $btnImprimir = ''; + + $arrComandos = array($btnPesquisar, $strBotaoEspeciePadrao, $btnNovo, $btnExcluir, $btnImprimir); + $arrComandosFinal = array($btnNovo, $btnExcluir, $btnImprimir); + + $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retTodos(true); + $objPenRestricaoEnvioComponentesDigitaisDTO->setOrdDblId(InfraDTO::$TIPO_ORDENACAO_ASC); + + if (array_key_exists('nome_estrutura', $_POST) && !empty($_POST['nome_estrutura'])) { + $objPenRestricaoEnvioComponentesDigitaisDTO->setStrStrEstrutura('%' . $_POST['nome_estrutura'] . '%', InfraDTO::$OPER_LIKE); + } + + if (array_key_exists('nome_unidade', $_POST) && !empty($_POST['nome_unidade'])) { + $objPenRestricaoEnvioComponentesDigitaisDTO->setStrStrUnidadeRh('%' . $_POST['nome_unidade'] . '%', InfraDTO::$OPER_LIKE); + } + + $objPaginaSEI->prepararOrdenacao( + $objPenRestricaoEnvioComponentesDigitaisDTO, + 'Id', + InfraDTO::$TIPO_ORDENACAO_ASC + ); + $objPaginaSEI->prepararPaginacao($objPenRestricaoEnvioComponentesDigitaisDTO); + + $arrObjPenRestricaoEnvioComponentesDigitaisDTO = $objPenRestricaoEnvioComponentesDigitaisRN->listar( + $objPenRestricaoEnvioComponentesDigitaisDTO + ); + + $objPaginaSEI->processarPaginacao($objPenRestricaoEnvioComponentesDigitaisDTO); + $numRegistros = count($arrObjPenRestricaoEnvioComponentesDigitaisDTO); + + if (!empty($arrObjPenRestricaoEnvioComponentesDigitaisDTO)) { + + $strResultado = ''; + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + + $index = 0; + foreach ($arrObjPenRestricaoEnvioComponentesDigitaisDTO as $objPenRestricaoEnvioComponentesDigitaisDTO) { + + $strCssTr = ($strCssTr == 'infraTrClara') ? 'infraTrEscura' : 'infraTrClara'; + + $strResultado .= ''; + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + + $index++; + } + $strResultado .= '
' + . $objPaginaSEI->gerarCaptionTabela('estados do processo', $numRegistros) + . '
' . $objPaginaSEI->getThCheck() . 'ID do RepositórioNome do RepositórioID da UnidadeNome da UnidadeAções
' + . $objPaginaSEI->getTrCheck( + $index, + $objPenRestricaoEnvioComponentesDigitaisDTO->getDblId(), + '' + ) . '' + . $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdEstrutura() + . '' + . $objPenRestricaoEnvioComponentesDigitaisDTO->getStrStrEstrutura() + . '' + . $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdUnidadeRh() + . '' + . $objPenRestricaoEnvioComponentesDigitaisDTO->getStrStrUnidadeRh() + . ''; + + if ($objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_visualizar')) { + $strResultado .= 'Consultar Mapeamento'; + } + if ($objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_atualizar')) { + $strResultado .= 'Alterar Mapeamento'; + } + if ($objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_excluir')) { + $strResultado .= 'Excluir Mapeamento'; + } + + $strResultado .= '
'; + } +} catch (InfraException $e) { + $objPaginaSEI->processarExcecao($e); +} + +$objPaginaSEI->montarDocType(); +$objPaginaSEI->abrirHtml(); +$objPaginaSEI->abrirHead(); +$objPaginaSEI->montarMeta(); +$objPaginaSEI->montarTitle(':: ' . $objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo . ' ::'); +$objPaginaSEI->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); +?> +
+ + montarBarraComandosSuperior($arrComandos); ?> + abrirAreaDados('5em'); ?> + + + + + + + + fecharAreaDados(); ?> + + 0) { ?> + montarAreaTabela($strResultado, $numRegistros); ?> + + + + montarBarraComandosSuperior($arrComandosFinal); ?> +
+fecharBody(); ?> +fecharHtml(); ?> \ No newline at end of file diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index 8153c3eeb..fea3e4200 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -506,6 +506,30 @@ private function construirCabecalho(ExpedirProcedimentoDTO $objExpedirProcedimen private function enviarApenasComponentesDigitaisPendentes($numIdRepositorioDestino, $numIdUnidadeDestino){ + if (InfraUtil::compararVersoes(VERSAO_MODULO_PEN, ">=", "3.3.3")) { + $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retDblId(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdEstrutura(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrEstrutura(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidadeRh(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrUnidadeRh(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUsuario(); + $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidade(); + $objPenRestricaoEnvioComponentesDigitaisDTO->setNumIdEstrutura($numIdRepositorioDestino); + $objPenRestricaoEnvioComponentesDigitaisDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + + $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN(); + $arrObjPenRestricaoEnvioComponentesDigitaisDTO = + $objPenRestricaoEnvioComponentesDigitaisRN->listar($objPenRestricaoEnvioComponentesDigitaisDTO); + if (!is_null($arrObjPenRestricaoEnvioComponentesDigitaisDTO) && count($arrObjPenRestricaoEnvioComponentesDigitaisDTO) > 0) { + $arrIdUnidadesParaEnvioPendentes = array(); + foreach ($arrObjPenRestricaoEnvioComponentesDigitaisDTO as $value) { + $arrIdUnidadesParaEnvioPendentes[] = $value->getNumIdUnidadeRh(); + } + + return in_array($numIdUnidadeDestino, $arrIdUnidadesParaEnvioPendentes); + } + } $bolResultado = false; $arrObjEnviarDocumentosPendentes = ConfiguracaoModPEN::getInstance()->getValor("PEN", "EnviarApenasComponentesDigitaisPendentes", false); $objParamEnviarDocumentosPendentes = !is_null($arrObjEnviarDocumentosPendentes) ? $arrObjEnviarDocumentosPendentes : false; diff --git a/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php new file mode 100755 index 000000000..3ea9f4409 --- /dev/null +++ b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php @@ -0,0 +1,146 @@ +validarAuditarPermissao( + 'pen_map_restricao_envio_comp_digitais_listar', + __METHOD__, + $objDTO + ); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->getObjInfraIBanco()); + return $objBD->listar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando Unidades.', $e); + } + } + + /** + * Método utilizado para consulta de dados. + * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO + * @return array + * @throws InfraException + */ + protected function consultarControlado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao( + 'pen_map_restricao_envio_comp_digitais_visualizar', + __METHOD__, + $objDTO + ); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + return $objBD->consultar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro consultar mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para alteração de dados. + * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO + * @return array + * @throws InfraException + */ + protected function alterarControlado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao( + 'pen_map_restricao_envio_comp_digitais_atualizar', + __METHOD__, + $objDTO + ); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + return $objBD->alterar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro alterando mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para cadastro de dados. + * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO + * @return array + * @throws InfraException + */ + protected function cadastrarConectado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao( + 'pen_map_restricao_envio_comp_digitais_salvar', + __METHOD__, + $objDTO + ); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + return $objBD->cadastrar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro cadastrando mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao( + 'pen_map_restricao_envio_comp_digitais_excluir', + __METHOD__, + $objDTO + ); + $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance()); + return $objBD->excluir($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro excluindo mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para contagem de unidades mapeadas + * @param PenRestricaoEnvioComponentesDigitaisDTO $objUnidadeDTO + * @return array + * @throws InfraException + */ + protected function contarConectado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO) + { + try { + //Valida Permissao + $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->getObjInfraIBanco()); + return $objBD->contar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro contando mapeamento de unidades.', $e); + } + } +} diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index 00a3d0cc2..7c4b27526 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -267,6 +267,8 @@ protected function atualizarVersaoConectado() $this->instalarV3031(); case '3.3.1': $this->instalarV3032(); + case '3.3.2': + $this->instalarV3033(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões @@ -2527,11 +2529,55 @@ protected function instalarV3030() { protected function instalarV3031() { $this->atualizarNumeroVersao("3.3.1"); + } + + + protected function instalarV3032() { + $this->atualizarNumeroVersao("3.3.2"); + } + + protected function instalarV3033() + { + $objInfraBanco = BancoSEI::getInstance(); + $objMetaBD = $this->objMeta; + + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_envio_comp_digitais', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'id_estrutura' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_estrutura' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO), + 'id_unidade_rh' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_unidade_rh' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO), + 'id_usuario' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO) + ), + 'pk' => array('cols' => array('id')), + 'uk' => array('id_estrutura', 'id_unidade_rh', 'id_unidade'), + 'fks' => array( + 'usuario' => array('id_usuario', 'id_usuario'), + 'unidade' => array('id_unidade', 'id_unidade'), + ) + )); + + # Criar sequencia para tramite em bloco + + $objInfraSequenciaRN = new InfraSequenciaRN(); + $objInfraSequenciaDTO = new InfraSequenciaDTO(); + + //Sequência: md_pen_seq_tramita_em_bloco + $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_envio_comp_digitais'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_envio_comp_digitais', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_envio_comp_digitais'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + $this->atualizarNumeroVersao("3.3.3"); } -protected function instalarV3032() { - $this->atualizarNumeroVersao("3.3.2"); -} } diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index 055aa3887..1dd480f16 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -286,7 +286,10 @@ protected function atualizarVersaoConectado() $this->instalarV3031(); case '3.3.1': $this->instalarV3032(); - + case '3.3.2': + $this->instalarV3033(); + + break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: $this->finalizar('VERSAO DO MÓDULO JÁ CONSTA COMO ATUALIZADA'); @@ -1825,6 +1828,54 @@ protected function instalarV3032() { $this->atualizarNumeroVersao("3.3.2"); } + + public function instalarV3033() + { + /* Corrige nome de menu de trâmite de documentos */ + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance()); + + $numIdSistema = $this->getNumIdSistema('SEI'); + $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); + + $objItemMenuDTO = new ItemMenuDTO(); + $objItemMenuDTO->setNumIdSistema($numIdSistema); + $objItemMenuDTO->setNumIdMenu($numIdMenu); + $objItemMenuDTO->setStrRotulo('Administração'); + $objItemMenuDTO->setNumMaxRegistrosRetorno(1); + $objItemMenuDTO->retNumIdItemMenu(); + + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + if (empty($objItemMenuDTO)) { + throw new InfraException('Menu "Administração" não foi localizado'); + } + + // Adicionar submenu + $this->logar('Atribuição de permissões do módulo ao perfil do SEI'); + + $numIdItemMenu = $this->criarMenu('Mapeamento de Envio Parcial', 40, $objItemMenuDTO->getNumIdItemMenu(), $numIdMenu, null, $numIdSistema); + $numIdRecurso = $this->criarRecurso('pen_map_restricao_envio_comp_digitais_listar', 'Listar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema); + $this->criarMenu('Restrição de Envio de Componentes Digitais', 20, $numIdItemMenu, $numIdMenu, $numIdRecurso, $numIdSistema); + + + $this->criarRecurso('pen_map_restricao_envio_comp_digitais_salvar', 'Salvar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema); + $this->criarRecurso('pen_map_restricao_envio_comp_digitais_excluir', 'Excluir Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema); + $this->criarRecurso('pen_map_restricao_envio_comp_digitais_cadastrar', 'Cadastro de Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema); + $this->criarRecurso('pen_map_restricao_envio_comp_digitais_atualizar', 'Atualizar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema); + $this->criarRecurso('pen_map_restricao_envio_comp_digitais_visualizar', 'Visualizar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema); + + $numIdSistemaSei = $this->getNumIdSistema('SEI'); + $numIdPerfilSeiBasico = ScriptSip::obterIdPerfil($numIdSistemaSei, "Básico"); + ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_salvar'); + ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_cadastrar'); + ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_atualizar'); + ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_visualizar'); + ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_excluir'); + + // Nova versão + $this->atualizarNumeroVersao("3.3.3"); + } } diff --git a/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php b/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php new file mode 100644 index 000000000..e94a83b9f --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php @@ -0,0 +1,97 @@ +selectRepositorio('RE CGPRO'); + $this->selectUnidade('Fabrica-org1'); + $this->salvar(); + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @return string + */ + private function selectRepositorio($siglaRepositorio) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade'); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade')->value(); + if(!empty($hierarquia)){ + $nomeUnidade .= ' - ' . $hierarquia; + } + + try{ + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + }catch(Exception $e){} + + $testCase->byPartialLinkText($nomeUnidade)->click(); + return true; + }, PEN_WAIT_TIMEOUT); + + return $this->unidadeInput->value(); + } + + /** + * Description + * @return void + */ + public function novoMap() + { + $this->test->byId("btnNovo")->click(); + } + + /** + * Description + * @return void + */ + private function salvar() + { + $this->test->byId("btnSalvar")->click(); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php index 82cf70203..1304ec818 100755 --- a/tests_super/funcional/tests/CenarioBaseTestCase.php +++ b/tests_super/funcional/tests/CenarioBaseTestCase.php @@ -38,6 +38,7 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaAnexarProcesso = null; protected $paginaCancelarDocumento = null; protected $paginaTramitarProcessoEmLote = null; + protected $paginaCadastroMapEnvioCompDigitais = null; public function setUpPage(): void { @@ -56,6 +57,7 @@ public function setUpPage(): void $this->paginaCancelarDocumento = new PaginaCancelarDocumento($this); $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); + $this->paginaCadastroMapEnvioCompDigitais = new PaginaCadastroMapEnvioCompDigitais($this); $this->currentWindow()->maximize(); } @@ -221,6 +223,18 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha) $this->url($url); PaginaLogin::executarAutenticacao($this, $login, $senha); PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade); + $this->url($url); + } + + protected function navegarPara($acao) + { + $this->frame(null); + $acao = "acao={$acao}"; + $xpath = "//a[contains(@href, '$acao')]"; + $link = $this->byXPath($xpath); + $url = $link->attribute('href'); + + $this->url($url); } protected function selecionarUnidadeInterna($unidadeDestino) diff --git a/tests_super/funcional/tests/MapeamentoRestricaoEnvioComponentesDigitaisTest.php b/tests_super/funcional/tests/MapeamentoRestricaoEnvioComponentesDigitaisTest.php new file mode 100644 index 000000000..ef961b71c --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoRestricaoEnvioComponentesDigitaisTest.php @@ -0,0 +1,42 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->navegarPara('pen_map_restricao_envio_comp_digitais_listar'); + $this->paginaCadastroMapEnvioCompDigitais->novoMap(); + sleep(5); + $this->paginaCadastroMapEnvioCompDigitais->novo(); + sleep(5); + + $this->assertTrue(true); + } +} \ No newline at end of file