From 2a79f6bcc3db52f8a9005dd3b5d722dfe68c3139 Mon Sep 17 00:00:00 2001 From: caduvieira <3831408+caduvieira@users.noreply.github.com> Date: Mon, 4 Dec 2023 17:52:24 -0300 Subject: [PATCH 1/4] chore: adiciona badge do codesniffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat: mapeamento de tipos de processo e relacionamento entre orgãos feat: mapeamento de tipos de processo e relacionamento entre orgãos feat: correções de teste funcionais feat: melhoria de fixture para cadastro de mapeamento de unidades feat: implementação de teste sei3 e sei4 feat: correções de teste para fixture --- src/PENIntegracao.php | 107 ++- src/bd/PenMapTipoProcedimentoBD.php | 10 + src/bd/PenOrgaoExternoBD.php | 10 + src/dto/PenMapTipoProcedimentoDTO.php | 38 + src/dto/PenOrgaoExternoDTO.php | 39 + src/dto/PenUnidadeDTO.php | 3 + src/imagens/importar.svg | 25 + src/pen_map_orgaos_externos_cadastrar.php | 506 ++++++++++++ src/pen_map_orgaos_externos_listar.php | 727 ++++++++++++++++++ src/pen_map_orgaos_mapeamento_tipo_listar.php | 616 +++++++++++++++ src/pen_map_tipo_processo_padrao.php | 154 ++++ src/pen_map_tipo_processo_reativar.php | 301 ++++++++ src/pen_map_unidade_listar.php | 2 +- src/pen_parametros_configuracao.php | 17 +- src/pen_tipo_procedimento_lista.php | 305 ++++++++ src/rn/PenMapTipoProcedimentoRN.php | 151 ++++ src/rn/PenOrgaoExternoRN.php | 127 +++ src/rn/PenParametroRN.php | 28 + src/rn/PenUnidadeRN.php | 16 + src/rn/ReceberProcedimentoRN.php | 79 +- .../sei_atualizar_versao_modulo_pen.php | 77 +- .../sip_atualizar_versao_modulo_pen.php | 105 ++- tests_sei3/funcional/phpunit.xml | 19 + .../ImportacaoTiposProcessoFixture.php | 65 ++ .../src/fixtures/PenMapUnidadesFixture.php | 91 +++ .../src/fixtures/PenOrgaoExternoFixture.php | 43 ++ .../paginas/PaginaCadastroOrgaoExterno.php | 264 +++++++ .../paginas/PaginaExportarTiposProcesso.php | 92 +++ .../paginas/PaginaTipoProcessoReativar.php | 49 ++ .../PaginaTramiteMapeamentoOrgaoExterno.php | 70 ++ .../funcional/tests/CenarioBaseTestCase.php | 16 + ...mentoTipoProcessoDesativarReativarTest.php | 137 ++++ .../MapeamentoTipoProcessoExcluirTest.php | 66 ++ .../MapeamentoTipoProcessoExportarTest.php | 63 ++ .../MapeamentoTipoProcessoReativarTest.php | 103 +++ ...ocessoRelacionamentoOrgaosCadastroTest.php | 143 ++++ ...cionamentoOrgaosListagemImportacaoTest.php | 61 ++ tests_sei4/funcional/phpunit.xml | 19 + .../ImportacaoTiposProcessoFixture.php | 65 ++ .../src/fixtures/PenMapUnidadesFixture.php | 91 +++ .../src/fixtures/PenOrgaoExternoFixture.php | 43 ++ .../paginas/PaginaCadastroOrgaoExterno.php | 259 +++++++ .../paginas/PaginaExportarTiposProcesso.php | 91 +++ .../paginas/PaginaTipoProcessoReativar.php | 34 + .../PaginaTramiteMapeamentoOrgaoExterno.php | 54 ++ .../funcional/tests/CenarioBaseTestCase.php | 15 + ...mentoTipoProcessoDesativarReativarTest.php | 140 ++++ .../MapeamentoTipoProcessoExcluirTest.php | 64 ++ .../MapeamentoTipoProcessoExportarTest.php | 63 ++ .../MapeamentoTipoProcessoReativarTest.php | 103 +++ ...ocessoRelacionamentoOrgaosCadastroTest.php | 143 ++++ ...cionamentoOrgaosListagemImportacaoTest.php | 61 ++ tests_super/funcional/phpunit.xml | 20 +- .../ImportacaoTiposProcessoFixture.php | 65 ++ .../src/fixtures/PenMapUnidadesFixture.php | 91 +++ .../src/fixtures/PenOrgaoExternoFixture.php | 43 ++ .../paginas/PaginaCadastroOrgaoExterno.php | 259 +++++++ .../paginas/PaginaExportarTiposProcesso.php | 91 +++ .../paginas/PaginaTipoProcessoReativar.php | 33 + .../PaginaTramiteMapeamentoOrgaoExterno.php | 54 ++ .../funcional/tests/CenarioBaseTestCase.php | 17 + ...mentoTipoProcessoDesativarReativarTest.php | 148 ++++ .../MapeamentoTipoProcessoExcluirTest.php | 64 ++ .../MapeamentoTipoProcessoExportarTest.php | 63 ++ .../MapeamentoTipoProcessoReativarTest.php | 101 +++ ...ocessoRelacionamentoOrgaosCadastroTest.php | 143 ++++ ...cionamentoOrgaosListagemImportacaoTest.php | 70 ++ 67 files changed, 7208 insertions(+), 24 deletions(-) create mode 100644 src/bd/PenMapTipoProcedimentoBD.php create mode 100644 src/bd/PenOrgaoExternoBD.php create mode 100644 src/dto/PenMapTipoProcedimentoDTO.php create mode 100644 src/dto/PenOrgaoExternoDTO.php create mode 100644 src/imagens/importar.svg create mode 100644 src/pen_map_orgaos_externos_cadastrar.php create mode 100644 src/pen_map_orgaos_externos_listar.php create mode 100644 src/pen_map_orgaos_mapeamento_tipo_listar.php create mode 100644 src/pen_map_tipo_processo_padrao.php create mode 100644 src/pen_map_tipo_processo_reativar.php create mode 100644 src/pen_tipo_procedimento_lista.php create mode 100644 src/rn/PenMapTipoProcedimentoRN.php create mode 100644 src/rn/PenOrgaoExternoRN.php create mode 100644 tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php create mode 100644 tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php create mode 100644 tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php create mode 100644 tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php create mode 100644 tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php create mode 100644 tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php create mode 100644 tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php create mode 100644 tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php create mode 100644 tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php create mode 100644 tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php create mode 100644 tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index e59549992..362b9eb99 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -1,7 +1,7 @@ validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem); + + $mensagem = "Prezado(a) usuário(a), você está tentando excluir um Tipo de Processo que se encontra mapeado para o Tipo de Processo Padrão " + ."\"%s\". Para continuar com essa ação é necessário remover o mapeamento " + ."mencionado."; + + $objPenParametroRN = new PenParametroRN(); + $objPenParametroRN->validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem); + } + + /** + * @param array $arrObjTipoProcedimentoDTO + * @return void + */ + public function excluirTipoProcesso($arrObjTipoProcedimentoDTO) + { + $mensagem = "Prezado(a) usuário(a), você está tentando excluir um Tipo de Processo que se encontra mapeado para o(s) relacionamento(s) " + ."\"%s\". Para continuar com essa ação é necessário remover do(s) mapeamentos " + ."mencionados o Tipo de Processo: \"%s\"."; + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objMapeamentoTipoProcedimentoRN->validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem); + + $mensagem = "Prezado(a) usuário(a), você está tentando excluir um Tipo de Processo que se encontra mapeado para o Tipo de Processo Padrão " + ."\"%s\". Para continuar com essa ação é necessário remover o mapeamento " + ."mencionado."; + + $objPenParametroRN = new PenParametroRN(); + $objPenParametroRN->validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem); + } + /** * Método responsável de criar listagem de item para XML */ @@ -684,6 +726,41 @@ public function processarControlador($strAcao) require_once dirname(__FILE__) . '/pen_map_unidade_cadastrar.php'; break; + case 'pen_map_orgaos_externos_salvar': + case 'pen_map_orgaos_externos_atualizar': + case 'pen_map_orgaos_externos_cadastrar': + case 'pen_map_orgaos_externos_visualizar': + require_once dirname(__FILE__) . '/pen_map_orgaos_externos_cadastrar.php'; + break; + + case 'pen_map_orgaos_externos_reativar': + case 'pen_map_orgaos_externos_desativar': + case 'pen_map_orgaos_externos_listar': + case 'pen_map_orgaos_externos_excluir': + case 'pen_map_orgaos_importar_tipos_processos': + require_once dirname(__FILE__) . '/pen_map_orgaos_externos_listar.php'; + break; + + case 'pen_map_tipo_processo_padrao': + case 'pen_map_tipo_processo_padrao_salvar': + require_once dirname(__FILE__) . '/pen_map_tipo_processo_padrao.php'; + break; + + case 'pen_map_tipo_processo_reativar': + require_once dirname(__FILE__) . '/pen_map_tipo_processo_reativar.php'; + break; + + case 'pen_map_orgaos_exportar_tipos_processos': + require_once dirname(__FILE__) . '/pen_tipo_procedimento_lista.php'; + break; + + case 'pen_map_orgaos_externos_mapeamento_desativar': + case 'pen_map_orgaos_externos_mapeamento': + case 'pen_map_orgaos_externos_mapeamento_gerenciar': + case 'pen_map_orgaos_externos_mapeamento_excluir': + require_once dirname(__FILE__) . '/pen_map_orgaos_mapeamento_tipo_listar.php'; + break; + case 'pen_map_unidade_listar': case 'pen_map_unidade_excluir': require_once dirname(__FILE__) . '/pen_map_unidade_listar.php'; @@ -740,7 +817,33 @@ public function processarControladorAjax($strAcao) { if (count($arrObjEstruturaDTO['itens']) > 0) { $xml = self::gerarXMLItensArrInfraDTOAutoCompletar($arrObjEstruturaDTO, 'NumeroDeIdentificacaoDaEstrutura', 'Nome'); } else { - return ''; + return ''; + } + break; + + case 'pen_unidade_auto_completar_mapeados': + // DTO de paginao + $objPenUnidadeDTOFiltro = new PenUnidadeDTO(); + $objPenUnidadeDTOFiltro->retStrSiglaUnidadeRH(); + $objPenUnidadeDTOFiltro->retStrNomeUnidadeRH(); + $objPenUnidadeDTOFiltro->retNumIdUnidade(); + $objPenUnidadeDTOFiltro->retNumIdUnidadeRH(); + + // Filtragem + if(!empty($_POST['palavras_pesquisa']) && $_POST['palavras_pesquisa'] !== 'null') { + $objPenUnidadeDTOFiltro->setStrNomeUnidadeRH('%'.$_POST['palavras_pesquisa'].'%', InfraDTO::$OPER_LIKE); + } + + $objPenUnidadeRN = new PenUnidadeRN(); + $objArrPenUnidadeDTO = (array) $objPenUnidadeRN->listar($objPenUnidadeDTOFiltro); + if (count($objArrPenUnidadeDTO) > 0) { + foreach ($objArrPenUnidadeDTO as $dto) { + $dto->setNumIdUnidadeMap($dto->getNumIdUnidadeRH()); + $dto->setStrDescricaoMap($dto->getStrNomeUnidadeRH(). '-' . $dto->getStrSiglaUnidadeRH()); + } + $xml = InfraAjax::gerarXMLItensArrInfraDTO($objArrPenUnidadeDTO, 'IdUnidadeMap', 'DescricaoMap'); + } else { + return ''; } break; diff --git a/src/bd/PenMapTipoProcedimentoBD.php b/src/bd/PenMapTipoProcedimentoBD.php new file mode 100644 index 000000000..8fb4d704e --- /dev/null +++ b/src/bd/PenMapTipoProcedimentoBD.php @@ -0,0 +1,10 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'id'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdMapOrgao', 'id_map_orgao'); + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + $this->configurarFK('IdMapOrgao', 'mapeamento_orgao', 'id_map_orgao'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTipoProcessoOrigem', 'id_tipo_processo_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTipoProcessoDestino', 'id_tipo_processo_destino'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeTipoProcesso', 'nome_tipo_processo'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_criacao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'Ativo', 'sin_ativo'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); + } +} diff --git a/src/dto/PenOrgaoExternoDTO.php b/src/dto/PenOrgaoExternoDTO.php new file mode 100644 index 000000000..590a59bca --- /dev/null +++ b/src/dto/PenOrgaoExternoDTO.php @@ -0,0 +1,39 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'Id'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdOrgaoOrigem', 'id_orgao_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'OrgaoOrigem', 'str_orgao_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdEstrutaOrganizacionalOrigem', 'id_estrutura_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'EstrutaOrganizacionalOrigem', 'str_estrutura_origem'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdOrgaoDestino', 'id_orgao_destino'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'OrgaoDestino', 'str_orgao_destino'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_criacao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'Ativo', 'sin_ativo'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); + } +} diff --git a/src/dto/PenUnidadeDTO.php b/src/dto/PenUnidadeDTO.php index 784ac8d6c..c404aecfb 100755 --- a/src/dto/PenUnidadeDTO.php +++ b/src/dto/PenUnidadeDTO.php @@ -27,6 +27,9 @@ public function montar() { $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRH', 'nome_unidade_rh'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'SiglaUnidadeRH', 'sigla_unidade_rh'); $this->configurarPK('IdUnidade', InfraDTO::$TIPO_PK_INFORMADO); + + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdUnidadeMap'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'DescricaoMap'); // Infelizmente não funciona com parent::getArrAtributos(), pois o arrAtributos // esta na InfraDTO e ela confunde em função do extends, então tenho que diff --git a/src/imagens/importar.svg b/src/imagens/importar.svg new file mode 100644 index 000000000..43532929f --- /dev/null +++ b/src/imagens/importar.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/src/pen_map_orgaos_externos_cadastrar.php b/src/pen_map_orgaos_externos_cadastrar.php new file mode 100644 index 000000000..ce59b0491 --- /dev/null +++ b/src/pen_map_orgaos_externos_cadastrar.php @@ -0,0 +1,506 @@ +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($_GET['acao']); + + $strParametros = ''; + $bolErrosValidacao = false; + $strDiretorioModulo = PENIntegracao::getDiretorio(); + + if (isset($_GET['arvore'])) { + $objPaginaSEI->setBolArvore($_GET['arvore']); + $strParametros .= '&arvore=' . $_GET['arvore']; + } + + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->retNumIdUnidadeRH(); + $objUnidadeDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + + $numIdUnidadeOrigem = $objSessaoSEI->getNumIdUnidadeAtual(); + + // Órgão de origem + $numIdOrgaoOrigem = $_POST['hdnIdUnidadeOrigem']; + $strNomeOrgaoOrigem = $_POST['txtUnidadeOrigem']; + $numIdRepositorioOrigem = $_POST['selRepositorioEstruturasOrigem']; + $txtRepositorioEstruturasOrigem = $_POST['txtRepositorioEstruturasOrigem']; + // Órgão de destino + $numIdOrgaoDestino = $_POST['hdnIdUnidadeDestino']; + $strNomeOrgaoDestino = $_POST['txtUnidadeDestino']; + + $strLinkAjaxUnidade = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_expedir_procedimento&acao=' . $_GET['acao']); + $strLinkAjaxUnidadeDestino = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_mapeados&acao=' . $_GET['acao']); + + $id = isset($_GET['id']) ? $_GET['id'] : null; + if (!is_null($id)) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoDTO->retDblId(); + $objPenOrgaoExternoDTO->retNumIdOrgaoOrigem(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + $objPenOrgaoExternoDTO->retNumIdOrgaoDestino(); + $objPenOrgaoExternoDTO->retNumIdEstrutaOrganizacionalOrigem(); + $objPenOrgaoExternoDTO->retStrEstrutaOrganizacionalOrigem(); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrAtivo(); + + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $respObjPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + if (!is_null($respObjPenOrgaoExternoDTO)) { + // Órgão de origem + $numIdOrgaoOrigem = $respObjPenOrgaoExternoDTO->getNumIdOrgaoOrigem(); + $strNomeOrgaoOrigem = $respObjPenOrgaoExternoDTO->getStrOrgaoOrigem(); + $numIdRepositorioOrigem = $respObjPenOrgaoExternoDTO->getNumIdEstrutaOrganizacionalOrigem(); + $txtRepositorioEstruturasOrigem = $respObjPenOrgaoExternoDTO->getStrEstrutaOrganizacionalOrigem(); + // Órgão de destino + $numIdOrgaoDestino = $respObjPenOrgaoExternoDTO->getNumIdOrgaoDestino(); + $strNomeOrgaoDestino = $respObjPenOrgaoExternoDTO->getStrOrgaoDestino(); + } + $strParametros .= '&id=' . $id; + } + + $strLinkValidacao = $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink('controlador.php?acao=pen_map_orgaos_externos_salvar&acao_origem=' . $_GET['acao'] . $strParametros)); + + $disabilitarVisualizar = ""; + switch ($_GET['acao']) { + case 'pen_map_orgaos_externos_salvar': + $acao = !is_null($id) ? 'pen_map_orgaos_externos_atualizar' : 'pen_map_orgaos_externos_cadastrar'; + if (empty($_POST['selRepositorioEstruturasOrigem']) || empty($_POST['txtRepositorioEstruturasOrigem'])) { + $objPaginaSEI->adicionarMensagem('Selecione um repositório de origem.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + if (empty($_POST['hdnIdUnidadeOrigem']) || empty($_POST['txtUnidadeOrigem'])) { + $objPaginaSEI->adicionarMensagem('O Órgão Origem não foi informado.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + if (empty($_POST['hdnIdUnidadeDestino']) || empty($_POST['txtUnidadeDestino'])) { + $objPaginaSEI->adicionarMensagem('O Órgão Destino não foi informado.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $numIdOrgaoOrigem = $_POST['hdnIdUnidadeOrigem']; + $strNomeOrgaoOrigem = $_POST['txtUnidadeOrigem']; + $numIdRepositorioOrigem = $_POST['selRepositorioEstruturasOrigem']; + $txtRepositorioEstruturasOrigem = $_POST['txtRepositorioEstruturasOrigem']; + $numIdOrgaoDestino = $_POST['hdnIdUnidadeDestino']; + $strNomeOrgaoDestino = $_POST['txtUnidadeDestino']; + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($numIdOrgaoOrigem); + $objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($numIdRepositorioOrigem); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($numIdOrgaoDestino); + if (!is_null($id)) { + $objPenOrgaoExternoDTO->setDblId(array($id), InfraDTO::$OPER_NOT_IN); + } + $objPenOrgaoExternoDTO->setNumMaxRegistrosRetorno(1); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $respObjPenOrgaoExternoDTO = $objPenOrgaoExternoRN->contar($objPenOrgaoExternoDTO); + if ($respObjPenOrgaoExternoDTO > 0) { + $objPaginaSEI->adicionarMensagem('Cadastro de relacionamento entre órgãos já existente.', InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=pen_map_orgaos_externos_cadastrar&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objPenOrgaoExternoDTO->setDthRegistro(date('d/m/Y H:i:s')); + // Órgão de origem + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($numIdOrgaoOrigem); + $objPenOrgaoExternoDTO->setStrOrgaoOrigem($strNomeOrgaoOrigem); + $objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($numIdRepositorioOrigem); + $objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($txtRepositorioEstruturasOrigem); + // Órgão de destino + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($numIdOrgaoDestino); + $objPenOrgaoExternoDTO->setStrOrgaoDestino($strNomeOrgaoDestino); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $numId = ''; + if (!is_null($id)) { + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + $numId = $id; + $objPaginaSEI->adicionarMensagem('Relacionamento entre Órgãos atualizado com sucesso.', 5); + } else { + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->cadastrar($objPenOrgaoExternoDTO); + $numId = $objPenOrgaoExternoDTO->getDblId(); + $objPaginaSEI->adicionarMensagem('Relacionamento entre Órgãos cadastrado com sucesso.', 5); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink( + 'controlador.php?acao=pen_map_orgaos_externos_listar&acao_origem=' . $_GET['acao_origem'] + .'&id='.$numId.PaginaSEI::getInstance()->montarAncora($numId.';S') + )); + exit(0); + break; + case 'pen_map_orgaos_externos_visualizar': + case 'pen_map_orgaos_externos_atualizar': + case 'pen_map_orgaos_externos_cadastrar': + $strTitulo = 'Cadastro de Relacionamento entre Órgãos'; + + //Monta os botões do topo + if ( + $_GET['acao'] != 'pen_map_orgaos_externos_visualizar' + && $objSessaoSEI->verificarPermissao('pen_map_orgaos_externos_cadastrar') + && $objSessaoSEI->verificarPermissao('pen_map_orgaos_externos_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(); + + //Obter dados do repositório em que o SEI está registrado (Repositório de Origem) + $objPenParametroRN = new PenParametroRN(); + $idRepositorioSelecionado = (isset($numIdRepositorioOrigem)) ? $numIdRepositorioOrigem : ''; + $strItensSelRepositorioEstruturasOrigem = 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&idRepositorioEstruturaOrigem=1'); + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } +} 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(); +echo "\n"; + +$objPaginaSEI->abrirStyle(); +?> + +div.conteiner{ +width: 100%; +padding: 15px; +} + +div.infraAreaDados { +margin-bottom: 10px; +} + +#lblProtocoloExibir {position:absolute;left:0%;top:0%;} +#txtProtocoloExibir {position:absolute;left:0%;top:38%;width:50%;} + +#lblRepositorioEstruturasOrigem {position:absolute;left:0%;top:0%;} +#selRepositorioEstruturasOrigem {position:absolute;left:0%;top:38%;} + +#lblUnidadesOrigem {position:absolute;left:0%;top:0%;} +#txtUnidadeOrigem {left:0%;top:38%;width:100%;border:.1em solid #666;} +#imgLupaUnidadesOrigem {position:absolute;left:52%;top:48%;} + +#lblUnidadesDestino {position:absolute;left:0%;top:0%;} +#txtUnidadeDestino {left:0%;top:38%;width:100%;border:.1em solid #666;} +#imgLupaUnidadesDestino {position:absolute;left:52%;top:48%;} + +.alinhamentoBotaoImput{position:absolute;left:0%;top:48%;width:85%;}; + +#btnIdUnidadeOrigem {float: left;} +#btnIdUnidadeDestino {float: left;} +#imgPesquisaAvancada { +vertical-align: middle; +margin-left: 10px; +width: 20px; +height: 20px; +} + +.panelOrgao { +color: #fff; +width: 45%; +height: 22em; +float: left; +padding: 1em 0em 5em 2em; +border: 2px solid #999; +margin: 10px; +border-radius: 12px; +} + +.panelOrgao > h4 { +position: relative; +background: #155f9b; +width: 42%; +border-radius: 12px; +text-align: center; +padding: 6px; +top: -33px; +} + +fecharStyle(); +$objPaginaSEI->montarJavaScript(); +?> + +fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="infraEfeitoTabelas(); inicializarOrigem(); inicializarDestino();"'); +?> +
+ + abrirAreaDados('5em'); ?> + montarBarraComandosSuperior($arrComandos); + ?> + fecharAreaDados(); ?> +
+

Órgão Origem

+ +
+ + + + class="infraText" value="" /> +
+ +
+ +
+ placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" value="" tabindex="getProxTabDados() ?>" /> +
+
+ + + Consultar organograma + +
+ + +
+
+ +
+

Órgão Destino

+ +
+ +
+ class="infraText infraReadOnly" placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" value="" tabindex="getProxTabDados() ?>" /> +

+ + + +
+ + +
+
+ + + +
+montarAreaDebug(); +$objPaginaSEI->fecharBody(); +$objPaginaSEI->fecharHtml(); +?> diff --git a/src/pen_map_orgaos_externos_listar.php b/src/pen_map_orgaos_externos_listar.php new file mode 100644 index 000000000..67aa20853 --- /dev/null +++ b/src/pen_map_orgaos_externos_listar.php @@ -0,0 +1,727 @@ +setBolLigado(false); + $objDebug->setBolDebugInfra(true); + $objDebug->limpar(); + + $objSessao->validarLink(); + $objSessao->validarPermissao(PEN_RECURSO_ATUAL); + + + //-------------------------------------------------------------------------- + // Ações + if (array_key_exists('acao', $_GET)) { + + $arrParam = array_merge($_GET, $_POST); + + switch ($_GET['acao']) { + + case 'pen_map_orgaos_externos_excluir': + if (array_key_exists('hdnInfraItensSelecionados', $arrParam) && !empty($arrParam['hdnInfraItensSelecionados'])) { + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + + $arrParam['hdnInfraItensSelecionados'] = explode(',', $arrParam['hdnInfraItensSelecionados']); + + if (is_array($arrParam['hdnInfraItensSelecionados'])) { + foreach ($arrParam['hdnInfraItensSelecionados'] as $arr) { + $dblId = explode(";", $arr)[0]; + + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($dblId); + if ($objMapeamentoTipoProcedimentoRN->contar($objMapeamentoTipoProcedimentoDTO)) { + $mensagem = "Relacionamento entre órgãos possuí tipos de processo mapeados. Remova os tipos de processo para realizar a exclusão do relacionamento."; + $objPagina->adicionarMensagem($mensagem, InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' + . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $objPenOrgaoExternoDTO->setDblId($dblId); + $objPenOrgaoExternoRN->excluir($objPenOrgaoExternoDTO); + } + } else { + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($arrParam['hdnInfraItensSelecionados']); + if ($objMapeamentoTipoProcedimentoRN->contar($objMapeamentoTipoProcedimentoDTO)) { + $mensagem = "Relacionamento entre órgãos possuí tipos de processo mapeados. Remova os tipos de processo para realizar a exclusão do relacionamento."; + $objPagina->adicionarMensagem($mensagem, InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' + . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $objPenOrgaoExternoDTO->setDblId($arrParam['hdnInfraItensSelecionados']); + $objPenOrgaoExternoRN->excluir($objPenOrgaoExternoDTO); + } + + $objPagina->adicionarMensagem('Relacionamento entre órgãos foi excluído com sucesso.', 5); + + 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_orgaos_externos_listar': + // Ação padrão desta tela + break; + case 'pen_map_orgaos_importar_tipos_processos': + try { + $penMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrProcedimentoDTO = []; + $tipoDeProcedimentos = array(); + $procedimentos = explode(',', $_POST['dados']); + for ($i = 0; $i < count($procedimentos); $i += 2) { + $key = trim($procedimentos[$i]); + $value = trim($procedimentos[$i + 1], '"'); + $tipoDeProcedimentos[$key] = $value; + } + + foreach ($tipoDeProcedimentos as $idProcedimento => $nomeProcedimento) { + $procedimentoDTO = new PenMapTipoProcedimentoDTO(); + $procedimentoDTO->setNumIdMapOrgao($_POST['mapId']); + $procedimentoDTO->setNumIdTipoProcessoOrigem($idProcedimento); + $procedimentoDTO->setStrNomeTipoProcesso($nomeProcedimento); + $procedimentoDTO->setNumIdUnidade($_GET['infra_unidade_atual']); + if ($penMapTipoProcedimentoRN->contar($procedimentoDTO)) { + continue; + } + $procedimentoDTO->setDthRegistro(date('d/m/Y H:i:s')); + $penMapTipoProcedimentoRN->cadastrar($procedimentoDTO); + } + $objPagina->adicionarMensagem('Importação realizada com sucesso.', 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } catch (Exception $e) { + throw new InfraException($e->getMessage()); + } + break; + + case 'pen_map_orgaos_externos_reativar': + if ((isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) && isset($_POST['hdnAcaoReativar'])) { + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + } + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', PEN_PAGINA_TITULO), 5); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', PEN_PAGINA_TITULO), 5); + } + break; + + case 'pen_map_orgaos_externos_desativar': + if ((isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) && isset($_POST['hdnAcaoDesativar'])) { + $btnDesativar = null; + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoDTO->setStrAtivo('N'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + } + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), InfraPagina::$TIPO_MSG_AVISO); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenOrgaoExternoDTO->setStrAtivo('N'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), 5); + } + break; + + default: + throw new InfraException('Ação não permitida nesta tela'); + } + } + //-------------------------------------------------------------------------- + + $acao = $_GET['acao']; + $acaoOrigem = $_GET['acao_origem']; + $acaoRetorno = $_GET['acao_retorno']; + + // DTO de paginao + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + // $objPenOrgaoExternoDTO->setNumIdUnidade($objSessao->getNumIdUnidadeAtual()); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + $objPenOrgaoExternoDTO->retDblId(); + $objPenOrgaoExternoDTO->retNumIdOrgaoOrigem(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + $objPenOrgaoExternoDTO->retNumIdOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrAtivo(); + + //-------------------------------------------------------------------------- + // Filtragem + if (array_key_exists('txtSiglaOrigem', $_POST) && ((!empty($_POST['txtSiglaOrigem']) && $_POST['txtSiglaOrigem'] !== 'null') || $_POST['txtSiglaOrigem'] == "0")) { + $objPenOrgaoExternoDTO->setStrOrgaoOrigem('%' . $_POST['txtSiglaOrigem'] . '%', InfraDTO::$OPER_LIKE); + } + + if (array_key_exists('txtSiglaDestino', $_POST) && ((!empty($_POST['txtSiglaDestino']) && $_POST['txtSiglaDestino'] !== 'null') || $_POST['txtSiglaDestino'] == "0")) { + $objPenOrgaoExternoDTO->setStrOrgaoDestino('%' . $_POST['txtSiglaDestino'] . '%', InfraDTO::$OPER_LIKE); + } + + if (array_key_exists('txtEstado', $_POST) && (!empty($_POST['txtEstado']) && $_POST['txtEstado'] !== 'null')) { + $objPenOrgaoExternoDTO->setStrAtivo($_POST['txtEstado']); + } + + //-------------------------------------------------------------------------- + + $btnReativarAdicionado = 'N'; + $btnDesativarAdicionado = 'N'; + $btnReativar = ''; + $btnDesativar = null; + $btnPesquisar = ''; + $btnTipoProcessoPadrao = ''; + $btnNovo = ''; + if (empty($_POST['txtEstado']) || is_null($_POST['txtEstado']) || $_POST['txtEstado'] == 'S') { + $btnDesativar = ''; + $btnDesativarAdicionado = 'S'; + } + + if (!empty($_POST['txtEstado']) && $_POST['txtEstado'] == 'N') { + $btnReativar = ''; + $btnReativarAdicionado = 'S'; + } + + $btnExcluir = ''; + $btnImprimir = ''; + $btnFechar = ''; + $btnDesativarReativar = null; + + if ($btnDesativarAdicionado == 'S') { + $btnDesativarReativar = $btnDesativar; + } elseif ($btnReativarAdicionado == 'S') { + $btnDesativarReativar = $btnReativar; + } + $arrComandos = array($btnPesquisar, $btnTipoProcessoPadrao, $btnNovo, $btnDesativarReativar, $btnExcluir, $btnImprimir, $btnFechar); + $arrComandosFinal = array($btnNovo, $btnDesativarReativar, $btnExcluir, $btnImprimir, $btnFechar); + + //-------------------------------------------------------------------------- + + $objPagina->prepararOrdenacao($objPenOrgaoExternoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_ASC); + $objPagina->prepararPaginacao($objPenOrgaoExternoDTO); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $respObjPenOrgaoExternoDTO = $objPenOrgaoExternoRN->listar($objPenOrgaoExternoDTO); + + $objPagina->processarPaginacao($objPenOrgaoExternoDTO); + + $numRegistros = count($respObjPenOrgaoExternoDTO); + if (!empty($respObjPenOrgaoExternoDTO)) { + + $strResultado = ''; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + + $index = 0; + foreach ($respObjPenOrgaoExternoDTO as $objPenOrgaoExternoDTO) { + $strCssTr = ($strCssTr == 'infraTrClara') ? 'infraTrEscura' : 'infraTrClara'; + + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + + $index++; + } + $strResultado .= '
' . $objPagina->gerarCaptionTabela(PEN_PAGINA_TITULO, $numRegistros) . '
' . $objPagina->getThCheck() . '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'ID
Origem', 'IdOrgaoOrigem', $respObjPenOrgaoExternoDTO) . '
' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'Órgão Origem', 'OrgaoOrigem', $respObjPenOrgaoExternoDTO) . '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'ID
Destino', 'IdOrgaoDestino', $respObjPenOrgaoExternoDTO) . '
' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'Órgão Destino', 'OrgaoDestino', $respObjPenOrgaoExternoDTO) . 'Ações
' . $objPagina->getTrCheck($index, $objPenOrgaoExternoDTO->getDblId() . ';' . $objPenOrgaoExternoDTO->getStrAtivo(), '') . '' . $objPenOrgaoExternoDTO->getNumIdOrgaoOrigem() . '' . $objPenOrgaoExternoDTO->getStrOrgaoOrigem() . '' . $objPenOrgaoExternoDTO->getNumIdOrgaoDestino() . '' . $objPenOrgaoExternoDTO->getStrOrgaoDestino() . ''; + + $strResultado .= 'Consultar Mapeamento Entre Órgãos'; + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_atualizar')) { + $strResultado .= 'Alterar Relacionamento Entre Órgãos'; + } + + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($objPenOrgaoExternoDTO->getDblId()); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->retStrAtivo(); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrPenOrgaoExternoDTO = $objMapeamentoTipoProcedimentoRN->listar($objMapeamentoTipoProcedimentoDTO); + + $strResultado .= ' '; + + if ($arrPenOrgaoExternoDTO == null) { + $strResultado .= 'assinarLink('controlador.php?acao=pen_map_orgaos_externos_tipo_processo_listar&tipo_pesquisa=1&id_object=objInfraTableToTable&idMapOrgao=' . $objPenOrgaoExternoDTO->getDblId()) + . "'," . $objPenOrgaoExternoDTO->getDblId() . ')">' + . 'Importar CSV' + . ''; + } else { + $strResultado .= 'Mapear tipos de processos'; + } + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_reativar') && $objPenOrgaoExternoDTO->getStrAtivo() == 'N') { + $strLinkReativar = $objSessao->assinarLink('controlador.php?acao=pen_map_orgaos_externos_reativar&acao_origem=' . $_GET['acao_origem'] . '&acao_retorno=' . $_GET['acao'] . '&' . PEN_PAGINA_GET_ID . '=' . $objPenOrgaoExternoDTO->getDblId()); + $strId = $objPenOrgaoExternoDTO->getDblId(); + $strResultado .= 'Reativar Relacionamento entre Órgãos'; + } + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_desativar') && $objPenOrgaoExternoDTO->getStrAtivo() == 'S') { + $strLinkDesativar = $objSessao->assinarLink('controlador.php?acao=pen_map_orgaos_externos_desativar&acao_origem=' . $_GET['acao_origem'] . '&acao_retorno=' . $_GET['acao'] . '&' . PEN_PAGINA_GET_ID . '=' . $objPenOrgaoExternoDTO->getDblId()); + $strId = $objPenOrgaoExternoDTO->getDblId(); + $strResultado .= 'Desativar Relacionamento entre Órgãos'; + } + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_excluir') && $arrPenOrgaoExternoDTO == null) { + $strResultado .= '' + . 'Excluir Mapeamento' + . ''; + } + $strResultado .= '
'; + + $strResultadoImportar = ''; + + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= ''; + + $strResultadoImportar .= ''; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '
IDTipo de Processo
'; + } + + $btnImportar = ''; + $btnFecharModal = ''; + $arrComandosModal = array($btnImportar, $btnFecharModal); + $arrComandosModalFinal = array($btnImportar, $btnFecharModal); +} catch (InfraException $e) { + $objPagina->processarExcecao($e); +} + + +$objPagina->montarDocType(); +$objPagina->abrirHtml(); +$objPagina->abrirHead(); +$objPagina->montarMeta(); +$objPagina->montarTitle(':: ' . $objPagina->getStrNomeSistema() . ' - ' . PEN_PAGINA_TITULO . ' ::'); +$objPagina->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +$objPagina->abrirBody(PEN_PAGINA_TITULO, 'onload="inicializar();"'); +?> + +
+ montarBarraComandosSuperior($arrComandos); ?> + abrirAreaDados('5em'); ?> + + + + + + + + + + + + + + fecharAreaDados(); ?> + 0) { ?> + montarAreaTabela($strResultado, $numRegistros); ?> + montarBarraComandosInferior($arrComandosFinal, true); ?> + +
+ +fecharBody(); ?> +fecharHtml(); ?> diff --git a/src/pen_map_orgaos_mapeamento_tipo_listar.php b/src/pen_map_orgaos_mapeamento_tipo_listar.php new file mode 100644 index 000000000..b0a6b9c72 --- /dev/null +++ b/src/pen_map_orgaos_mapeamento_tipo_listar.php @@ -0,0 +1,616 @@ +salvarCamposPost(array('txtPalavrasPesquisaMapeamento')); +$palavrasPesquisa = PaginaSEI::getInstance()->recuperarCampo('txtPalavrasPesquisaMapeamento'); + +try { + + $objDebug->setBolLigado(false); + $objDebug->setBolDebugInfra(true); + $objDebug->limpar(); + + $objSessao->validarLink(); + // $objSessao->validarPermissao(PEN_RECURSO_ATUAL); + + $idOrgaoExterno = $_GET['id']; + + $arrParam = array_merge($_GET, $_POST); + $strParametros .= '&id=' . $idOrgaoExterno; + + switch ($_GET['acao']) { + case 'pen_map_orgaos_externos_mapeamento_desativar': + if ((isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) && isset($_POST['hdnAcaoDesativar'])) { + $btnDesativar = null; + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($id); + $objPenMapTipoProcedimentoDTO->setStrAtivo('N'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + } + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenMapTipoProcedimentoDTO->setStrAtivo('N'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + break; + case 'pen_map_orgaos_externos_mapeamento_gerenciar': + try { + + $arrTiposProcessos = $_POST; + foreach (array_keys($arrTiposProcessos) as $strKeyPost) { + if (substr($strKeyPost, 0, 10) == 'txtAssunto') { + $objConsultaTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objConsultaTipoProcedimentoDTO->setNumIdMapOrgao($_POST['idOrgaoExterno']); + $objConsultaTipoProcedimentoDTO->setNumIdTipoProcessoOrigem(substr($strKeyPost, 10)); + $objConsultaTipoProcedimentoDTO->retDblId(); + $objConsultaTipoProcedimentoDTO->retNumIdTipoProcessoOrigem(); + + $objConsultaTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objConsultaTipoProcedimentoDTO = $objConsultaTipoProcedimentoRN->consultar($objConsultaTipoProcedimentoDTO); + + $objMapeamentoAssuntoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoAssuntoDTO->setDblId($objConsultaTipoProcedimentoDTO->getDblId()); + $objMapeamentoAssuntoDTO->setNumIdTipoProcessoOrigem(substr($strKeyPost, 10)); + $objMapeamentoAssuntoDTO->setNumIdTipoProcessoDestino($_POST['hdnIdAssunto' . substr($strKeyPost, 10)]); + + $objAlterTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objAlterTipoProcedimentoRN->alterar($objMapeamentoAssuntoDTO); + } + } + + $objPagina->adicionarMensagem(sprintf('Inclusão de %s realizada com sucesso.', PEN_PAGINA_TITULO), 5); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao_origem'] . '&acao_origem=' . $_GET['acao'] . '&id=' . $_POST['idOrgaoExterno'])); + die; + case 'pen_map_orgaos_externos_mapeamento': + $strTitulo = 'Mapeamento de Tipo de Processo'; + if (!is_null($_POST['mapId']) && !empty($_POST['mapId'])) { + try { + $penMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrProcedimentoDTO = []; + $tipoDeProcedimentos = array(); + $procedimentos = explode(',', $_POST['dados']); + for ($i = 0; $i < count($procedimentos); $i += 2) { + $key = trim($procedimentos[$i]); + $value = trim($procedimentos[$i + 1], '"'); + $tipoDeProcedimentos[$key] = $value; + } + $contador = 0; + foreach ($tipoDeProcedimentos as $idProcedimento => $nomeProcedimento) { + $procedimentoDTO = new PenMapTipoProcedimentoDTO(); + $procedimentoDTO->setNumIdMapOrgao($_POST['mapId']); + $procedimentoDTO->setNumIdTipoProcessoOrigem($idProcedimento); + $procedimentoDTO->setStrNomeTipoProcesso($nomeProcedimento); + $procedimentoDTO->setNumIdUnidade($_GET['infra_unidade_atual']); + if ($penMapTipoProcedimentoRN->contar($procedimentoDTO)) { + continue; + } + $procedimentoDTO->setDthRegistro(date('d/m/Y H:i:s')); + $penMapTipoProcedimentoRN->cadastrar($procedimentoDTO); + $contador += 1; + } + $mensagem = "Importação realizada com sucesso. Importado(s) %s tipo(s) de processo(s).\n" + . "Obs.: Se algum tipo de processo não foi importado, verifique se ele já está presente na tabela e/ou se foi desativado."; + $objPagina->adicionarMensagem(sprintf($mensagem, $contador), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . '&id=' . $_POST['mapId'])); + exit(0); + } catch (Exception $e) { + throw new InfraException($e->getMessage()); + } + } + break; + case 'pen_map_orgaos_externos_mapeamento_excluir': + if (array_key_exists('hdnInfraItensSelecionados', $arrParam) && !empty($arrParam['hdnInfraItensSelecionados'])) { + + $objExclusaoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objExclusaoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + + $arrParam['hdnInfraItensSelecionados'] = explode(',', $arrParam['hdnInfraItensSelecionados']); + + if (is_array($arrParam['hdnInfraItensSelecionados'])) { + foreach ($arrParam['hdnInfraItensSelecionados'] as $arr) { + $dblId = explode(";", $arr)[0]; + $objExclusaoTipoProcedimentoDTO->setDblId($dblId); + $objExclusaoTipoProcedimentoRN->excluir($objExclusaoTipoProcedimentoDTO); + } + } else { + $objExclusaoTipoProcedimentoDTO->setDblId($arrParam['hdnInfraItensSelecionados']); + $objExclusaoTipoProcedimentoRN->excluir($objExclusaoTipoProcedimentoDTO); + } + + $objPagina->adicionarMensagem('Mapeamento de tipos de processo foi excluído com sucesso.', 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . '&id=' . $idOrgaoExterno)); + exit(0); + } else { + $objPagina->adicionarMensagem('Não existe nenum registro de mapeamento para tipos de processo.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . '&id=' . $idOrgaoExterno)); + exit(0); + } + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $arrComandos = array(); + $arrComandosFinal = array(); + + $arrComandos[] = ''; + + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($idOrgaoExterno); + $objMapeamentoTipoProcedimentoDTO->setStrAtivo('S'); + $objMapeamentoTipoProcedimentoDTO->retDblId(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoOrigem(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino(); + $objMapeamentoTipoProcedimentoDTO->retStrNomeTipoProcesso(); + $objMapeamentoTipoProcedimentoDTO->retStrAtivo(); + + if (isset($_POST['chkSinAssuntosNaoMapeados'])) { + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoDestino(null); + } + + $filtro = (int) $palavrasPesquisa; + if (!empty($filtro) && $filtro != null || $filtro != 0) { + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($palavrasPesquisa, InfraDTO::$OPER_IGUAL); + } else { + $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso('%' . trim($palavrasPesquisa . '%'), InfraDTO::$OPER_LIKE); + } + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($idOrgaoExterno); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + + PaginaSEI::getInstance()->prepararPaginacao($objMapeamentoTipoProcedimentoDTO, 100); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrObjMapeamentoAssuntoDTO = $objMapeamentoTipoProcedimentoRN->listar($objMapeamentoTipoProcedimentoDTO); + + PaginaSEI::getInstance()->processarPaginacao($objMapeamentoTipoProcedimentoDTO); + + + $numRegistros = InfraArray::contar($arrObjMapeamentoAssuntoDTO); + + $arrComandos[] = ''; + + $arrComandosFinal[] = ''; + + if ($numRegistros > 0) { + + $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; + + $arrComandosFinal[] = ''; + $arrComandosFinal[] = ''; + $arrComandosFinal[] = ''; + + $strLinkGerenciar = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento_gerenciar&acao_origem=' . $_GET['acao'] . '&acao_retorno=' . $_GET['acao'] . $strParametros); + + $bolAcaoExcluir = SessaoSEI::getInstance()->verificarPermissao('mapeamento_assunto_excluir'); + + $strResultado = ''; + $strAjaxVariaveis = ''; + $strAjaxInicializar = ''; + + $strSumarioTabela = 'Tabela de mapeamento de tipo de processo.'; + $strCaptionTabela = 'tipos de processos para mapeamento'; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + + + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strCssTr = ''; + for ($i = 0; $i < $numRegistros; $i++) { + + $numIdAssuntoOrigem = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoOrigem(); + $numIdAssuntoDestino = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoDestino(); + + if ($arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo() == 'S') { + $strCssTr = ($strCssTr == '') ? '' : ''; + } else { + $strCssTr = ''; + } + + $strResultado .= $strCssTr; + + $strResultado .= ''; + + $strResultado .= ''; + + $descricaoTipoProcedimento = ''; + if ($numIdAssuntoDestino != null) { + $tipoProcedimentoDTO = new TipoProcedimentoDTO(); + $tipoProcedimentoDTO->retNumIdTipoProcedimento(); + $tipoProcedimentoDTO->retStrNome(); + $tipoProcedimentoDTO->setNumIdTipoProcedimento($numIdAssuntoDestino); + + $tipoProcedimentoRN = new TipoProcedimentoRN(); + $objTipoProcedimentoDTO = $tipoProcedimentoRN->consultarRN0267($tipoProcedimentoDTO); + $descricaoTipoProcedimento = $numIdAssuntoDestino . ' - ' . $objTipoProcedimentoDTO->getStrNome(); + } + + $strResultado .= ''; + + $strResultado .= ''; + + $strResultado .= '' . "\n"; + + $strAjaxVariaveis .= 'var objAutoCompletarAssunto' . $numIdAssuntoOrigem . ';' . "\n"; + + $strAjaxInicializar .= ' objAutoCompletarAssunto' . $numIdAssuntoOrigem . ' = new infraAjaxAutoCompletar(\'hdnIdAssunto' . $numIdAssuntoOrigem . '\',\'txtAssunto' . $numIdAssuntoOrigem . '\', linkAutoCompletar);' . "\n" . + ' objAutoCompletarAssunto' . $numIdAssuntoOrigem . '.prepararExecucao = function(){' . "\n" . + ' return \'id_tabela_assuntos=' . '1' . '&palavras_pesquisa=\'+document.getElementById(\'txtAssunto' . $numIdAssuntoOrigem . '\').value;' . "\n" . + ' }' . "\n" . + ' objAutoCompletarAssunto' . $numIdAssuntoOrigem . '.processarResultado = function(){' . "\n" . + ' bolAlteracao = true;' . "\n" . + ' }' . "\n\n"; + } + + $strResultado .= '
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPagina->getThCheck() . '' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'Tipo de Processo Origem', 'id', $arrObjMapeamentoAssuntoDTO) . 'Tipo de Processo DestinoAções
' . $objPagina->getTrCheck($i, $arrObjMapeamentoAssuntoDTO[$i]->getDblId() . ';' . $arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo(), '') . '' . PaginaSEI::tratarHTML(AssuntoINT::formatarCodigoDescricaoRI0568($numIdAssuntoOrigem, $arrObjMapeamentoAssuntoDTO[$i]->getStrNomeTipoProcesso())) . ' + '; + + if ($arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo() == 'S') { + $strId = $arrObjMapeamentoAssuntoDTO[$i]->getDblId(); + $strLinkDesativar = $objSessao->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento_desativar&acao_origem=' + . $_GET['acao_origem'] . '&acao_retorno=' . $_GET['acao'] . $strParametros); + $strResultado .= 'Desativar Mapeamento de Tipos de Processo'; + } + + $strResultado .= '' + . 'Excluir Mapeamento' + . ''; + + $strResultado .= '
'; + } + + $strResultadoImportar = ''; + + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= ''; + + $strResultadoImportar .= ''; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '
IDTipo de Processo
'; + + $btnImportar = ''; + $btnFecharModal = ''; + $btnImportarFinal = ''; + $btnFecharModalFinal = ''; + $arrComandosModal = array($btnImportar, $btnFecharModal); + $arrComandosModalFinal = array($btnImportarFinal, $btnFecharModalFinal); + + $arrComandos[] = ''; +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +$acao = $_GET['acao']; +?> + +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('17em'); + ?> + +
+ + + + + + + + + +
+ + name="chkSinAssuntosNaoMapeados" class="infraCheckbox" tabindex="getProxTabDados() ?>" /> + +
+
+ + + fecharAreaDados(); + PaginaSEI::getInstance()->montarAreaTabela($strResultado, $numRegistros); + //PaginaSEI::getInstance()->montarAreaDebug(); + PaginaSEI::getInstance()->montarBarraComandosInferior($arrComandosFinal, true); + ?> +
+ +fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/pen_map_tipo_processo_padrao.php b/src/pen_map_tipo_processo_padrao.php new file mode 100644 index 000000000..09b41a5b0 --- /dev/null +++ b/src/pen_map_tipo_processo_padrao.php @@ -0,0 +1,154 @@ +setBolLigado(false); + //InfraDebug::getInstance()->setBolDebugInfra(true); + //InfraDebug::getInstance()->limpar(); + ////////////////////////////////////////////////////////////////////////////// + + SessaoSEI::getInstance()->validarLink(); + SessaoSEI::getInstance()->validarPermissao($_GET['acao']); + PaginaSEI::getInstance()->salvarCamposPost(array('selTipoDocumentoPadrao')); + + $strParametros = ''; + + $arrComandos = array(); + $objPenParametroDTO = new PenParametroDTO(); + $objPenParametroRN = new PenParametroRN(); + + switch ($_GET['acao']) { + case 'pen_map_tipo_processo_padrao_salvar': + try { + if (!empty($_POST['PEN_TIPO_PROCESSO_EXTERNO'])) { + $objPenParametroDTO = new PenParametroDTO(); + $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO'); + $objPenParametroDTO->retStrNome(); + + if($objPenParametroRN->contar($objPenParametroDTO) > 0) { + $objPenParametroDTO->setStrValor($_POST['PEN_TIPO_PROCESSO_EXTERNO']); + $objPenParametroRN->alterar($objPenParametroDTO); + } + } + + PaginaSEI::getInstance()->adicionarMensagem('Atribuição de Tipo de Processo Padrão realizada com sucesso.', 5); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_tipo_processo_padrao&acao_origem=' . $_GET['acao'])); + die; + break; + case 'pen_map_tipo_processo_padrao': + $strTitulo = 'Atribuir Tipo de Processo Padrão'; + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objPenParametroDTO->retTodos(); + $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO'); + + $parametro = $objPenParametroRN->consultar($objPenParametroDTO); + + $objRelTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objRelTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objRelTipoProcedimentoDTO->retStrNome(); + $objRelTipoProcedimentoDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); + + $objRelTipoProcedimentoRN = new TipoProcedimentoRN(); + $arrTipoProcedimento = InfraArray::converterArrInfraDTO($objRelTipoProcedimentoRN->listarRN0244($objRelTipoProcedimentoDTO), "IdTipoProcedimento"); + + $objRelTipoProcedimentoDTO->setNumIdTipoProcedimento($arrTipoProcedimento, InfraDTO::$OPER_IN); + $arrObjTipoProcedimentoDTO = $objRelTipoProcedimentoRN->listarRN0244($objRelTipoProcedimentoDTO); + + $objPenRelTipoDocMapRecebidoRN = new PenRelTipoDocMapRecebidoRN(); + $numTipoDocumentoPadrao = $objPenRelTipoDocMapRecebidoRN->consultarTipoDocumentoPadrao(); + + break; + + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +PaginaSEI::getInstance()->abrirStyle(); +?> +.infraFieldset{with:80%; height: auto; margin-bottom: 11px;} +.infraFieldset p{font-size: 1.2em;} +#lblTipoDocumentoPadrao {width:40%;} +#selTipoDocumentoPadrao {width:40%;} +.infraFieldset {padding: 20px 20px 0px 20px;} +fecharStyle(); +PaginaSEI::getInstance()->montarJavaScript(); +?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +$acao_origem = $_GET['acao_origem']; +?> +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('30em'); + ?> + +
+   Orientações Gerais   +

+ A configuração de Tipo de Processo Padrão define qual será o comportamento do sistema ao receber processos que contenham Tipos de Processo + não mapeadas previamente pelo Administrador. Na hipótese desta situação, o Tipo de Processo configurado abaixo será aplicado automaticamente, evitando que o trâmite + seja cancelado pela falta de configuração. +

+
+ + + + + + + fecharAreaDados(); + ?> +
+montarAreaDebug(); +PaginaSEI::getInstance()->fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/pen_map_tipo_processo_reativar.php b/src/pen_map_tipo_processo_reativar.php new file mode 100644 index 000000000..266f83a1b --- /dev/null +++ b/src/pen_map_tipo_processo_reativar.php @@ -0,0 +1,301 @@ +salvarCamposPost(array('txtTipoOrigem')); +$txtTipoOrigem = PaginaSEI::getInstance()->recuperarCampo('txtTipoOrigem'); + +try { + + $objDebug->setBolLigado(false); + $objDebug->setBolDebugInfra(true); + $objDebug->limpar(); + + $objSessao->validarLink(); + // $objSessao->validarPermissao(PEN_RECURSO_ATUAL); + + $idOrgaoExterno = $_GET['id']; + + $arrParam = array_merge($_GET, $_POST); + $strParametros .= '&id=' . $idOrgaoExterno; + + switch ($_GET['acao']) { + case 'pen_map_tipo_processo_reativar': + $strTitulo = 'Reativar de Mapeamento de Tipo de Processo'; + if (isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) { + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($id); + $objPenMapTipoProcedimentoDTO->setStrAtivo('S'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + } + isset($_POST['hdnInfraItensSelecionados']); + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', 'Mapeamento de Tipo de Processo'), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_tipo_processo_reativar&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenMapTipoProcedimentoDTO->setStrAtivo('S'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', 'Mapeamento de Tipo de Processo'), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_tipo_processo_reativar&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $arrComandos = array(); + $arrComandosFinal = array(); + + $arrComandos[] = ''; + + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setStrAtivo('N'); + $objMapeamentoTipoProcedimentoDTO->retDblId(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoOrigem(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino(); + $objMapeamentoTipoProcedimentoDTO->retStrNomeTipoProcesso(); + $objMapeamentoTipoProcedimentoDTO->retStrAtivo(); + + + if (isset($_POST['chkSinAssuntosNaoMapeados'])) { + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoDestino(null); + } + + $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso('%' . trim($txtTipoOrigem . '%'), InfraDTO::$OPER_LIKE); + + PaginaSEI::getInstance()->prepararOrdenacao($objMapeamentoTipoProcedimentoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_ASC); + PaginaSEI::getInstance()->prepararPaginacao($objMapeamentoTipoProcedimentoDTO, 50); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrObjMapeamentoAssuntoDTO = $objMapeamentoTipoProcedimentoRN->listar($objMapeamentoTipoProcedimentoDTO); + + PaginaSEI::getInstance()->processarPaginacao($objMapeamentoTipoProcedimentoDTO); + + + $numRegistros = InfraArray::contar($arrObjMapeamentoAssuntoDTO); + + $strAjaxVariaveis = ''; + if ($numRegistros > 0) { + + $arrComandos[] = ''; + + $arrComandosFinal[] = ''; + + $strLinkGerenciar = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento_gerenciar&acao_origem=' . $_GET['acao'] . '&acao_retorno=' . $_GET['acao'] . $strParametros); + + $strResultado = ''; + $strAjaxInicializar = ''; + + $strSumarioTabela = 'Tabela de mapeamento de tipo de processo.'; + $strCaptionTabela = 'tipos de processos para mapeamento'; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + + + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strCssTr = ''; + for ($i = 0; $i < $numRegistros; $i++) { + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($arrObjMapeamentoAssuntoDTO[$i]->getNumIdMapOrgao()); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + $numIdAssuntoOrigem = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoOrigem(); + $numIdAssuntoDestino = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoDestino(); + + $strResultado .= ($strCssTr == '') ? '' : ''; + + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + + $descricaoTipoProcedimento = ''; + if ($numIdAssuntoDestino != null) { + $tipoProcedimentoDTO = new TipoProcedimentoDTO(); + $tipoProcedimentoDTO->retNumIdTipoProcedimento(); + $tipoProcedimentoDTO->retStrNome(); + $tipoProcedimentoDTO->setNumIdTipoProcedimento($numIdAssuntoDestino); + + $tipoProcedimentoRN = new TipoProcedimentoRN(); + $objTipoProcedimentoDTO = $tipoProcedimentoRN->consultarRN0267($tipoProcedimentoDTO); + $descricaoTipoProcedimento = $numIdAssuntoDestino . ' - ' . $objTipoProcedimentoDTO->getStrNome(); + } + + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= '' . "\n"; + } + + $strResultado .= '
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPagina->getThCheck() . 'Órgao Origem:Órgao Destino:' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'ID Tipo de Processo Origem', 'Id', $arrObjMapeamentoAssuntoDTO) . '' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'Tipo de Processo Origem', 'NomeTipoProcesso', $arrObjMapeamentoAssuntoDTO) . 'Tipo de Processo DestinoAções
' . $objPagina->getTrCheck($i, $arrObjMapeamentoAssuntoDTO[$i]->getDblId() . ';' . $arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo(), '') . ''. $objPenOrgaoExternoDTO->getStrOrgaoOrigem() . ''; + $strResultado .= ''. $objPenOrgaoExternoDTO->getStrOrgaoDestino() . '' . $numIdAssuntoOrigem . '' . $arrObjMapeamentoAssuntoDTO[$i]->getStrNomeTipoProcesso() . '' . PaginaSEI::tratarHTML($descricaoTipoProcedimento) . ''; + + $strLinkReativar = $objSessao->assinarLink('controlador.php?acao=pen_map_tipo_processo_reativar&acao_origem=' . $acaoOrigem . '&id=' . $arrObjMapeamentoAssuntoDTO[$i]->getDblId()); + $strId = $arrObjMapeamentoAssuntoDTO[$i]->getDblId(); + $strResultado .= 'Reativar Mapeamento de Tipo de Processo'; + + $strResultado .= '
'; + } + + $arrComandos[] = ''; + $arrComandosFinal[] = ''; +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +$acao = $_GET['acao']; +?> +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('5em'); + ?> + + + fecharAreaDados(); + PaginaSEI::getInstance()->montarAreaTabela($strResultado, $numRegistros); + //PaginaSEI::getInstance()->montarAreaDebug(); + PaginaSEI::getInstance()->montarBarraComandosInferior($arrComandosFinal, true); + ?> +
+fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/pen_map_unidade_listar.php b/src/pen_map_unidade_listar.php index 56e466d08..21e402e0f 100755 --- a/src/pen_map_unidade_listar.php +++ b/src/pen_map_unidade_listar.php @@ -174,7 +174,7 @@ $strCssTr = ($strCssTr == 'infraTrClara') ? 'infraTrEscura' : 'infraTrClara'; $strResultado .= ''; - $strResultado .= ''.$objPagina->getTrCheck($index, $objPenUnidadeDTO->getNumIdUnidade(), '').''; + $strResultado .= ''.$objPagina->getTrCheck($index, $objPenUnidadeDTO->getNumIdUnidade(), '').''; $strResultado .= ''.$objPenUnidadeDTO->getNumIdUnidade().''; $strResultado .= ''.$objPenUnidadeDTO->getStrSigla().''; $strResultado .= ''.$objPenUnidadeDTO->getStrDescricao().''; diff --git a/src/pen_parametros_configuracao.php b/src/pen_parametros_configuracao.php index dfbe8e84b..8e8532241 100755 --- a/src/pen_parametros_configuracao.php +++ b/src/pen_parametros_configuracao.php @@ -21,6 +21,7 @@ $objPenParametroDTO = new PenParametroDTO(); $objPenParametroDTO->retTodos(); + $objPenParametroDTO->setStrNome(array('PEN_TIPO_PROCESSO_EXTERNO'), InfraDTO::$OPER_NOT_IN); $objPenParametroDTO->setNumSequencia(null, InfraDTO::$OPER_DIFERENTE); $objPenParametroDTO->setOrdNumSequencia(InfraDTO::$TIPO_ORDENACAO_ASC); @@ -82,7 +83,7 @@ } } - + PaginaSEI::getInstance()->adicionarMensagem('Parâmetros de Configuração gravados com sucesso.', 5); } catch (Exception $e) { $objPagina->processarExcecao($e); } @@ -158,7 +159,6 @@ function OnSubmitForm() { var camposValidacao = [ {'id': 'PEN_ID_REPOSITORIO_ORIGEM', 'mensagem': 'Selecione um Repositório de Estruturas de Origem.'}, - {'id': 'PEN_TIPO_PROCESSO_EXTERNO', 'mensagem': 'Selecione um Tipo de Processo Externo.'}, {'id': 'PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO', 'mensagem': 'Selecione uma Unidade Geradora de Processo e Documento Recebido.'}, {'id': 'PEN_ENVIA_EMAIL_NOTIFICACAO_RECEBIMENTO', 'mensagem': 'Selecione uma opção para Envio de E-mail de Notificação de Recebimento.'}, ]; @@ -191,7 +191,7 @@ function validarPreenchimentoCampo(campoValidacao){ //echo '
'; //Esse parâmetro não aparece, por já existencia de uma tela só para alteração do próprio. - if ($parametro->getStrNome() != 'HIPOTESE_LEGAL_PADRAO') { + if ($parametro->getStrNome() != 'HIPOTESE_LEGAL_PADRAO' && $parametro->getStrNome() != 'PEN_TIPO_PROCESSO_EXTERNO') { ?> '; - echo ''; - echo ""; - echo '
'; - break; - case 'PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO': $textoAjuda="Selecionar a unidade que representa os órgãos externos"; echo '
'; diff --git a/src/pen_tipo_procedimento_lista.php b/src/pen_tipo_procedimento_lista.php new file mode 100644 index 000000000..2f3f40cbe --- /dev/null +++ b/src/pen_tipo_procedimento_lista.php @@ -0,0 +1,305 @@ +setBolLigado(false); + //InfraDebug::getInstance()->setBolDebugInfra(true); + //InfraDebug::getInstance()->limpar(); + ////////////////////////////////////////////////////////////////////////////// + + SessaoSEI::getInstance()->validarLink(); + + SessaoSEI::getInstance()->validarPermissao($_GET['acao']); + + switch ($_GET['acao']) { + case 'pen_map_orgaos_exportar_tipos_processos': + $strTitulo = 'Exportação de Tipos de Processo'; + if ($_POST['dadosInput']) { + try { + $arrStrIds = explode(',', $_POST['dadosInput']); + $qtdSelecao = count($arrStrIds); + + $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objTipoProcedimentoDTO->retStrNome(); + $objTipoProcedimentoDTO->setNumIdTipoProcedimento($arrStrIds, InfraDTO::$OPER_IN); + PaginaSEI::getInstance()->prepararOrdenacao($objTipoProcedimentoDTO, 'Nome', InfraDTO::$TIPO_ORDENACAO_ASC); + + $objTipoProcedimentoRN = new TipoProcedimentoRN(); + if (InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0")) { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->pesquisar($objTipoProcedimentoDTO); + } else { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->listarRN0244($objTipoProcedimentoDTO); + } + + $dados = array(); + $dados[] = ['ID', 'Nome']; + + foreach ($arrObjTipoProcedimentoDTO as $key => $value) { + $dados[] = array( + $value->getNumIdTipoProcedimento(), + $value->getStrNome(), + ); + } + + $nomeArquivo = 'tipos_processos.csv'; + header('Content-Type: text/csv'); + header('Content-Disposition: attachment; filename="' . $nomeArquivo . '";'); + $fp = fopen('php://output', 'w'); + + foreach ($dados as $linha) { + fputcsv($fp, $linha, ';'); + } + fclose($fp); + exit(0); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + } + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $arrComandosModal = array(); + $arrComandosModal[] = ''; + $arrComandosModal[] = ''; + $arrComandosModalFinal = array(); + $arrComandosModalFinal[] = ''; + $arrComandosModalFinal[] = ''; + + $strResultadoExportar = ''; + + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= ''; + + $strResultadoExportar .= ''; + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= '
IDTipo de Processo
'; + + $arrComandos = array(); + + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objTipoProcedimentoDTO->retStrNome(); + //$objTipoProcedimentoDTO->retStrDescricao(); + + if ($_GET['acao'] == 'tipo_procedimento_reativar') { + //Lista somente inativos + $objTipoProcedimentoDTO->setBolExclusaoLogica(false); + $objTipoProcedimentoDTO->setStrSinAtivo('N'); + } + + $strNomeTipoProcessoPesquisa = !empty($_POST['txtNomeTipoProcessoPesquisa']) && !is_null($_POST['txtNomeTipoProcessoPesquisa']) + ? $_POST['txtNomeTipoProcessoPesquisa'] + : ""; + if (trim($strNomeTipoProcessoPesquisa) != '') { + $objTipoProcedimentoDTO->setStrNome('%' . trim($strNomeTipoProcessoPesquisa) . '%', InfraDTO::$OPER_LIKE); + } + + $strIdAssunto = !empty($_POST['hdnIdAssuntoTipoProcesso']) && !is_null($_POST['hdnIdAssuntoTipoProcesso']) + ? $_POST['hdnIdAssuntoTipoProcesso'] + : ""; + if (!InfraString::isBolVazia($strIdAssunto)) { + $objTipoProcedimentoDTO->setNumIdAssunto($strIdAssunto); + } + + PaginaSEI::getInstance()->prepararOrdenacao($objTipoProcedimentoDTO, 'Nome', InfraDTO::$TIPO_ORDENACAO_ASC); + + $objTipoProcedimentoRN = new TipoProcedimentoRN(); + if (InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0")) { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->pesquisar($objTipoProcedimentoDTO); + } else { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->listarRN0244($objTipoProcedimentoDTO); + } + $numRegistros = count($arrObjTipoProcedimentoDTO); + + if ($numRegistros > 0) { + + $strResultado = ''; + + if ($_GET['acao'] != 'tipo_procedimento_reativar') { + $strSumarioTabela = 'Tabela de Tipos de Processo.'; + $strCaptionTabela = 'Tipos de Processo'; + } else { + $strSumarioTabela = 'Tabela de Tipos de Processo Inativos.'; + $strCaptionTabela = 'Tipos de Processo Inativos'; + } + + $strResultado .= '' . "\n"; //70 + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + for ($i = 0; $i < $numRegistros; $i++) { + $idTipoProcedimento = $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento(); + + $strCssTr = ($strCssTr == '') ? '' : ''; + + $strResultado .= $strCssTr; + + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + } + $strResultado .= '
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . PaginaSEI::getInstance()->getThCheck() . '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'ID', 'IdTipoProcedimento', $arrObjTipoProcedimentoDTO) . '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'Nome', 'Nome', $arrObjTipoProcedimentoDTO) . '
' . PaginaSEI::getInstance()->getTrCheck($i, $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento(), $arrObjTipoProcedimentoDTO[$i]->getStrNome()) . '' . $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento() . '' . PaginaSEI::tratarHTML($arrObjTipoProcedimentoDTO[$i]->getStrNome()) . '
'; + } + $arrComandos[] = ''; + + $strLinkAjaxAssuntoRI1223 = SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=assunto_auto_completar_RI1223'); +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +PaginaSEI::getInstance()->abrirStyle(); +?> + +.no-close .ui-dialog-titlebar-close {display: none;} +.ui-dialog .ui-dialog-title {margin: 0.4em 0;} +.ui-widget-header {background: #1351b4;border: 0;color: #fff;font-weight: normal;padding: 2px;} + +#lblNomeTipoProcessoPesquisa {position:absolute;left:0%;top:0%;} +#txtNomeTipoProcessoPesquisa {position:absolute;left:0%;top:40%;width:25%;} + +#lblAssuntoTipoProcesso {position:absolute;left:26%;top:0%;} +#txtAssuntoTipoProcesso {position:absolute;left:26%;top:40%;width:25%;} + +.ui-dialog {z-index: 1001 !important;} + +fecharStyle(); +PaginaSEI::getInstance()->montarJavaScript(); +?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +?> + +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('10em'); + ?> + + + + + =", "4.0.0")) { ?> + + + + + + fecharAreaDados(); + PaginaSEI::getInstance()->montarAreaTabela($strResultado, $numRegistros); + //PaginaSEI::getInstance()->montarAreaDebug(); + PaginaSEI::getInstance()->montarBarraComandosInferior($arrComandos); + ?> +
+ +fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/rn/PenMapTipoProcedimentoRN.php b/src/rn/PenMapTipoProcedimentoRN.php new file mode 100644 index 000000000..333aa9e86 --- /dev/null +++ b/src/rn/PenMapTipoProcedimentoRN.php @@ -0,0 +1,151 @@ +getObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando mapeamento externos.', $e); + } + } + + /** + * Método utilizado para listagem de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function consultarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD($this->getObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando mapeamento externos.', $e); + } + } + + /** + * Método utilizado para alteração de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function alterarControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->alterar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro alterando mapeamento de procedimento.', $e); + } + } + + /** + * Método utilizado para cadastro de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function cadastrarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->cadastrar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro cadastrando mapeamento de procedimento.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro excluindo mapeamento de procedimento.', $e); + } + } + + /** + * Método utilizado para contagem de procedimento mapeadas + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function contarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->contar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro contando mapeamento de procedimento.', $e); + } + } + + /** + * @param array $arrObjTipoProcedimentoDTO + * @param string $mensagem + * @return void + */ + public function validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem) + { + $arrTipoProcedimento = array(); + $mapeamentos = array(); + foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) { + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoDestino($objTipoProcedimentoDTO->getIdTipoProcedimento()); + + if ($this->contarConectado($objMapeamentoTipoProcedimentoDTO)) { + $arrObjMapeamentoTipoProcedimentoDTO = $this->listarConectado($objMapeamentoTipoProcedimentoDTO); + + foreach ($arrObjMapeamentoTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->setDblId($objPenMapTipoProcedimentoDTO->getNumIdMapOrgao()); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + $mapeamentos[$objPenOrgaoExternoDTO->getStrOrgaoDestino()] = $objPenOrgaoExternoDTO->getStrOrgaoDestino(); + $arrTipoProcedimento[$objTipoProcedimentoDTO->getNome()] = $objTipoProcedimentoDTO->getNome(); + } + } + } + if (count($arrTipoProcedimento) > 0) { + $mensagem = sprintf($mensagem, implode('", "', $mapeamentos), implode('", "', $arrTipoProcedimento)); + LogSEI::getInstance()->gravar($mensagem, LogSEI::$AVISO); + throw new InfraException($mensagem); + } + } +} diff --git a/src/rn/PenOrgaoExternoRN.php b/src/rn/PenOrgaoExternoRN.php new file mode 100644 index 000000000..43ec3be1f --- /dev/null +++ b/src/rn/PenOrgaoExternoRN.php @@ -0,0 +1,127 @@ +validarAuditarPermissao('pen_map_orgaos_externos_listar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD($this->getObjInfraIBanco()); + return $objBD->listar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando orgãos externos.', $e); + } + } + + /** + * Método utilizado para consulta de dados. + * @param PenOrgaoExternoDTO $objDTO + * @return PenOrgaoExternoDTO + * @throws InfraException + */ + protected function consultarConectado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_visualizar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance()); + return $objBD->consultar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro consultando mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para alteração de dados. + * @param PenOrgaoExternoDTO $objDTO + * @return PenOrgaoExternoDTO + * @throws InfraException + */ + protected function alterarControlado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(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 PenOrgaoExternoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function cadastrarConectado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(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 PenOrgaoExternoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_excluir', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(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 PenOrgaoExternoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function contarConectado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_listar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD($this->getObjInfraIBanco()); + return $objBD->contar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro contando mapeamento de unidades.', $e); + } + } +} diff --git a/src/rn/PenParametroRN.php b/src/rn/PenParametroRN.php index 0ec23ab94..4e81db5b9 100755 --- a/src/rn/PenParametroRN.php +++ b/src/rn/PenParametroRN.php @@ -189,4 +189,32 @@ private function validarUnidadeRecebimento(PenParametroDTO $objPenParametroDTO, } } + /** + * @param array $arrObjTipoProcedimentoDTO + * @param string $mensagem + * @return void + * @throws InfraException + */ + public function validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem) + { + $mapeamentos = array(); + foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) { + $objPenParametroDTO = new PenParametroDTO(); + $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO'); + $objPenParametroDTO->setStrValor($objTipoProcedimentoDTO->getIdTipoProcedimento()); + $objPenParametroDTO->retStrNome(); + $objPenParametroDTO->retStrValor(); + + if ($this->contarConectado($objPenParametroDTO) > 0) { + $mapeamentos[$objTipoProcedimentoDTO->getIdTipoProcedimento()] = + $objTipoProcedimentoDTO->getIdTipoProcedimento() . '-' . $objTipoProcedimentoDTO->getNome(); + } + } + + if (count($mapeamentos) > 0) { + $mensagem = sprintf($mensagem, implode('", "', $mapeamentos)); + LogSEI::getInstance()->gravar($mensagem, LogSEI::$AVISO); + throw new InfraException($mensagem); + } + } } diff --git a/src/rn/PenUnidadeRN.php b/src/rn/PenUnidadeRN.php index c7a968fd6..20a921561 100755 --- a/src/rn/PenUnidadeRN.php +++ b/src/rn/PenUnidadeRN.php @@ -123,4 +123,20 @@ protected function contarConectado(PenUnidadeDTO $objPenUnidadeDTO) { } } + /** + * Método utilizado para consultar dados. + * @param UnidadeDTO $objDTO + * @return PenUnidadeDTO + * @throws InfraException + */ + protected function consultarConectado(PenUnidadeDTO $objDTO){ + try { + $objBD = new PenUnidadeBD(BancoSEI::getInstance()); + return $objBD->consultar($objDTO); + } + catch (Exception $e) { + throw new InfraException('Erro consultar mapeamento de unidades.', $e); + } + } + } diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 6ce4ad23f..5e330e55f 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -1062,7 +1062,15 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objProcedimentoDTO->setArrObjDocumentoDTO(array()); $numIdTipoProcedimento = $this->objPenParametroRN->getParametro('PEN_TIPO_PROCESSO_EXTERNO'); - $this->atribuirTipoProcedimento($objProcedimentoDTO, $numIdTipoProcedimento, $strProcessoNegocio); + $remetente = $objMetadadosProcedimento->metadados->remetente; + $destinatario = $objMetadadosProcedimento->metadados->destinatario; + $this->atribuirTipoProcedimento( + $objProcedimentoDTO, + $remetente, + $destinatario, + $numIdTipoProcedimento, + $strProcessoNegocio + ); // Obtém código da unidade através de mapeamento entre SEI e Barramento $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario); @@ -1429,18 +1437,39 @@ private function obterTipoProcessoPeloNomeOrgaoUnidade($strNomeTipoProcesso, $nu return $objTipoProcedimentoDTO; } - private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $numIdTipoProcedimento, $strProcessoNegocio) - { + /** + * Atribuir tipo de procedimento + * Procura tipo de procedimento + * Procura tipo de procedimento no mapeamento entre orgão + * Procura tipo de procedimento padrão + * + * @param ProcedimentoDTO $objProcedimentoDTO + * @param \stdClass $remetente + * @param \stdClass $destinatario + * @param string|int $numIdTipoProcedimento + * @param string|int $strProcessoNegocio + * @return ProcedimentoDTO + * @throws InfraException + */ + private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $remetente, $destinatario, $numIdTipoProcedimento, $strProcessoNegocio) + { if(!empty(trim($strProcessoNegocio))){ + // Verifica se existe relacionamento entre orgãos + $objTipoProcedimentoDTO = $this->obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio); + + if(is_null($objTipoProcedimentoDTO)){ + // Verifica se existe tipo de processo igual cadastrado $objTipoProcedimentoDTO = $this->obterTipoProcessoPeloNomeOrgaoUnidade( $strProcessoNegocio, SessaoSEI::getInstance()->getNumIdOrgaoUnidadeAtual(), SessaoSEI::getInstance()->getNumIdUnidadeAtual() ); + } } if(is_null($objTipoProcedimentoDTO)){ - $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento); + // Verifica tipo de processo padrão cadastrado + $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento); } if (is_null($objTipoProcedimentoDTO)){ @@ -1470,6 +1499,48 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $ $objProcedimentoDTO->getObjProtocoloDTO()->setArrObjRelProtocoloAssuntoDTO($arrObjAssuntoDTO); } + /** + * Verificar se tem mapeamento entre orgão + * + * @param \stdClass $remetente + * @param \stdClass $destinatario + * @param string|int $strProcessoNegocio + * @return TipoProcedimentoDTO + */ + public function obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio) + { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($remetente->numeroDeIdentificacaoDaEstrutura); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($destinatario->numeroDeIdentificacaoDaEstrutura); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + + $objPenOrgaoExternoDTO->retDblId(); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + if (!is_null($objPenOrgaoExternoDTO)) { + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($objPenOrgaoExternoDTO->getDblId()); + $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso('%'.$strProcessoNegocio.'%', InfraDTO::$OPER_LIKE); + $objMapeamentoTipoProcedimentoDTO->setStrAtivo('S'); + + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino(); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objMapeamentoTipoProcedimentoDTO = $objMapeamentoTipoProcedimentoRN->consultar($objMapeamentoTipoProcedimentoDTO); + + if (!is_null($objMapeamentoTipoProcedimentoDTO) && !is_null($objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino())) { + $idTipoProcessoDestino = $objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino(); + + return $this->obterTipoProcessoPadrao($idTipoProcessoDestino); + } + } + + return null; + } + private function atribuirDadosUnidade(ProcedimentoDTO $objProcedimentoDTO, $objDestinatario) { diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index e5a42c4cc..c56d3ae75 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -272,7 +272,8 @@ protected function atualizarVersaoConectado() $this->instalarV3032(); case '3.3.2': $this->instalarV3040(); - + case '3.4.0': + $this->instalarV3050(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -2551,6 +2552,80 @@ protected function instalarV3040() { $objInfraMetaBD->adicionarColuna('md_pen_unidade', 'nome_unidade_rh', $objInfraMetaBD->tipoTextoVariavel(250), 'null'); $this->atualizarNumeroVersao("3.4.0"); } + + protected function instalarV3050() + { + $objMetaBD = $this->objMeta; + + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_orgao_externo', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_orgao_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_orgao_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), + 'id_estrutura_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_estrutura_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), + 'id_orgao_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_orgao_destino' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), + 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), + 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO) + ), + 'pk' => array('cols' => array('id')), + 'fks' => array( + 'unidade' => array('nome' => 'fk_md_pen_mapeamento_orgao_externo', 'cols' => 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_orgao_externo'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_orgao_externo', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_orgao_externo'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_map_tipo_processo', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_map_orgao' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_tipo_processo_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_tipo_processo_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'nome_tipo_processo' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::SNULLO), + 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), + 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO) + ), + 'pk' => array('cols' => array('id')), + 'fks' => array( + 'unidade' => array('nome' => 'fk_md_pen_mapeamento_tipo_processo', 'cols' => array('id_unidade', 'id_unidade')), + 'md_pen_orgao_externo' => array('nome' => 'fk_md_pen_mapeamento_orgao', 'cols' => array('id', 'id_map_orgao')), + ) + )); + + # Criar sequencia + $objInfraSequenciaRN = new InfraSequenciaRN(); + $objInfraSequenciaDTO = new InfraSequenciaDTO(); + + //Sequência + $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_orgao_externo'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_map_tipo_procedimento', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_map_tipo_processo'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + $this->atualizarNumeroVersao("3.5.0"); + } } diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index 0a0f180ee..cad2e7643 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -1,7 +1,7 @@ instalarV3031(); case '3.3.1': $this->instalarV3032(); + case '3.3.2': + $this->instalarV3050(); + break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -1832,6 +1835,106 @@ protected function instalarV3032() { $this->atualizarNumeroVersao("3.3.2"); } + + protected function instalarV3050() + { + /* 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('Processo Eletrônico Nacional'); + $objItemMenuDTO->setNumMaxRegistrosRetorno(1); + $objItemMenuDTO->retNumIdItemMenu(); + + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + if (empty($objItemMenuDTO)) { + throw new InfraException('Menu "Processo Eletrônico Nacional" não foi localizado'); + } + + // Adicionar submenu + $this->logar('Atribuição de permissões do módulo ao perfil do SEI'); + + $this->criarRecurso('pen_map_orgaos_externos_salvar', 'Salvar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_excluir', 'Excluir relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_cadastrar', 'Cadastro de relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_desativar', 'Desativar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_reativar', 'Reativar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_mapeamento', 'Mapeamento de tipo de processo', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_mapeamento_excluir', 'Excluir apeamento de tipo de processo', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_atualizar', 'Atualizar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_visualizar', 'Visualizar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_importar_tipos_processos', 'Importar tipos de processo', $numIdSistema); + $this->criarRecurso('pen_map_tipo_processo_padrao', 'Importar tipos de processo', $numIdSistema); + $this->criarRecurso('pen_map_tipo_processo_padrao_salvar', 'Importar tipos de processo', $numIdSistema); + + $numIdRecursoListar = $this->criarRecurso('pen_map_orgaos_externos_listar', 'Listagem de relacionamento entre órgãos', $numIdSistema); + $numIdRecursoExportar = $this->criarRecurso('pen_map_orgaos_exportar_tipos_processos', 'Listagem de relacionamento entre órgãos', $numIdSistema); + $numIdRecursoReativar = $this->criarRecurso('pen_map_tipo_processo_reativar', 'Reativar mapeamento de tipo de processo', $numIdSistema); + + $numIdPerfilSeiAdministrador = ScriptSip::obterIdPerfil($numIdSistema, "Administrador"); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_salvar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_cadastrar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_atualizar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_visualizar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_desativar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_reativar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_importar_tipos_processos'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_exportar_tipos_processos'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_mapeamento'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_mapeamento_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_padrao'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_padrao_salvar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_reativar'); + + // Administrao > Processo Eletrônico Nacional > Mapeamento de Tipos de Processo + $numIdItemMenu = $this->criarMenu('Mapeamento de Tipos de Processo', 40, $objItemMenuDTO->getNumIdItemMenu(), $numIdMenu, null, $numIdSistema); + + // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Listar + $numIdItemMenuRecuso = $this->criarMenu('Relacionamento entre Órgãos', 20, $numIdItemMenu, $numIdMenu, $numIdRecursoListar, $numIdSistema); + $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoListar, $numIdMenu, $numIdItemMenuRecuso); + + // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Exportar Tipo de Processo + $numIdItemMenuRecuso = $this->criarMenu('Exportação de Tipos de Processo', 21, $numIdItemMenu, $numIdMenu, $numIdRecursoExportar, $numIdSistema); + $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoExportar, $numIdMenu, $numIdItemMenuRecuso); + + // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Reativar Tipo de Processo + $numIdItemMenuRecuso = $this->criarMenu('Reativar de Tipos de Processo', 22, $numIdItemMenu, $numIdMenu, $numIdRecursoReativar, $numIdSistema); + $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoReativar, $numIdMenu, $numIdItemMenuRecuso); + + // Nova versão + $this->atualizarNumeroVersao("3.5.0"); + } + + /** + * Cadastrar item do menu em um perfil expecifico + * + * @return void + */ + private function cadastrarRelPergilItemMenu($numIdPerfil, $numIdRecurso, $numIdMenu, $numIdItemMenuRecuso) + { + $numIdSistema = $this->getNumIdSistema('SEI'); + + $objDTO = new RelPerfilItemMenuDTO(); + $objBD = new RelPerfilItemMenuBD(BancoSip::getInstance()); + + $objDTO->setNumIdPerfil($numIdPerfil); + $objDTO->setNumIdSistema($numIdSistema); + $objDTO->setNumIdRecurso($numIdRecurso); + $objDTO->setNumIdMenu($numIdMenu); + $objDTO->setNumIdItemMenu($numIdItemMenuRecuso); + + if ($objBD->contar($objDTO) == 0) { + $objBD->cadastrar($objDTO); + } + } } diff --git a/tests_sei3/funcional/phpunit.xml b/tests_sei3/funcional/phpunit.xml index 3c07c70d1..548511bb4 100755 --- a/tests_sei3/funcional/phpunit.xml +++ b/tests_sei3/funcional/phpunit.xml @@ -29,6 +29,15 @@ + + + + + + + + + @@ -69,6 +78,16 @@ + + + + + + + + + + diff --git a/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php new file mode 100644 index 000000000..02a20ced4 --- /dev/null +++ b/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -0,0 +1,65 @@ +getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ". + "VALUES(?,?,?,?,?,?,?)", + array( + $tipoProcesso[0], + $tipoProcesso[1], + $tipoProcesso[2], + $tipoProcesso[3], + $tipoProcesso[4], + $tipoProcesso[5], + $tipoProcesso[6] + ) + ); + } + + return $tiposProcessos; + } + + public function deletar($dados = []): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", + array($tipoProcesso[0]) + ); + } + + } + + public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + $tiposProcessos = array(); + + $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + + return $tiposProcessos; + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php new file mode 100644 index 000000000..f4695d727 --- /dev/null +++ b/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -0,0 +1,91 @@ +consultar(); + if (!empty($penUnidade)) { + $this->atualizar(); + } else { + $this->cadastrar(); + } + } + + /** + * Consultar mapeamento de unidade + * + * @return array|null + */ + public function consultar() + { + return self::$bancoOrgaoA->query( + 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?', + array(110000001, self::$dados['id']) + ); + } + + /** + * Cadastrar mapeamento de unidade + * + * @return void + */ + public function cadastrar(): void + { + self::$bancoOrgaoA->execute( + "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ". + "VALUES(?, ?, ?, ?)", + array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome']) + ); + } + + /** + * Atualizar mapeamento de unidade + * + * @return void + */ + public function atualizar(): void + { + self::$bancoOrgaoA->execute( + "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ". + "WHERE id_unidade = ? AND id_unidade_rh = ?", + array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id']) + ); + } + + /** + * Deletear mapeamento de unidade + * + * @return void + */ + public function deletar(): void + { + self::$bancoOrgaoA->execute( + "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", + array(110000001, self::$dados['id']) + ); + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php new file mode 100644 index 000000000..9d7715b5c --- /dev/null +++ b/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -0,0 +1,43 @@ +cadastrar(); + + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute( + "insert into md_pen_orgao_externo ". + "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ". + "values (?,?,?,?,?,?,?,?,?,?) ", + array( + 999999, + $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'], + $dados['id'], $dados['nome'], + 'S', 110000001, date('Y-m-d H:i:s') + ) + ); + + return 999999; + } + + public function deletar(int $id): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php new file mode 100644 index 000000000..142f3e132 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -0,0 +1,264 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_externos_listar')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem, $destino) + { + $this->selectRepositorio($estrutura, 'Origem'); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @param string $origemDestino + * @return string + */ + private function selectRepositorio($siglaRepositorio, $origemDestino) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino)); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona botão novo da página + * + * @return void + */ + public function novoMapOrgao() + { + $this->test->byId("btnNovo")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function editarMapOrgao() + { + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } + + /** + * Selecionar primeira checkbox de exclusão + * Seleciona botão excluir + * Seleciona botão de confirmação + * + * @return void + */ + public function selecionarExcluirMapOrgao() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + + // return $this->alertTextAndClose(); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function abrirSelecaoDeArquivoParaImportacao() + { + $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click(); + sleep(2); + $fileChooser = $this->test->byId('importArquivoCsv'); + $this->test->waitUntil(function ($testCase) use ($fileChooser) { + $fileChooser + ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv') + ->keys(Keys::CLEAR); + },PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function($testCase) { + return true; + }); + } + + /** + * Buscar orgão de origem por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoOrigem($origem) + { + try { + $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text(); + return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ? + $orgaoOrigem : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar orgão de destino por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoDestino($destino) + { + try { + $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text(); + return !empty($orgaoDestino) && !is_null($orgaoDestino) ? + $orgaoDestino : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $bolExisteAlerta; + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function selecionarPesquisa($textoPesquisa) + { + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Buscar item de tabela por nome + * + * @param string $nome + * @return string|null + */ + public function buscarNome($nome) + { + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; + } + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php new file mode 100644 index 000000000..64d01ac84 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -0,0 +1,92 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_exportar_tipos_processos')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarParaExportar() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem2'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem3'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem5'])")->click(); + $this->test->byId("btnExportar")->click(); + } + + public function verificarExisteBotao(string $nomeBtn) + { + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; + } + } + + public function verificarQuantidadeDeLinhasSelecionadas() + { + $this->test->waitUntil(function($testCase) { + $trs = $this->test->byId('tableExportar') + ->elements($this->test->using('css selector')->value('tr')); + $testCase->assertEquals(count($trs), 5); + return true; + }); + } + + public function btnExportar() + { + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * + * @return void + */ + public function selecionarPesquisa() + { + $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); + $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); + $this->test->byId("sbmPesquisar")->click(); + } + + /** + * Buscar se foi pesquisado + * + * @return void + */ + public function buscarPesquisa() + { + try { + $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); + return !empty($elementos) && !is_null($elementos); + } catch (Exception $e) { + return false; + } + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php new file mode 100644 index 000000000..794a2f834 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -0,0 +1,49 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_tipo_processo_reativar')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + public function reativarMapeamento() + { + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem1'])")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $bolExisteAlerta; + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php new file mode 100644 index 000000000..ce646c79c --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -0,0 +1,70 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_externos_listar')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + public function reativarMapeamento() + { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo"); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function desativarMapeamento() + { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo"); + $this->test->byXPath("//a[contains(@class, 'desativar')]")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function desativarMapeamentoCheckbox() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnDesativar")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function selectEstado($estado) + { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } + + public function mensagemValidacao($status) + { + return utf8_encode("Relacionamento entre Órgãos foi {$status} com sucesso."); + } +} diff --git a/tests_sei3/funcional/tests/CenarioBaseTestCase.php b/tests_sei3/funcional/tests/CenarioBaseTestCase.php index cf14d36da..6e7b3d14d 100755 --- a/tests_sei3/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei3/funcional/tests/CenarioBaseTestCase.php @@ -38,6 +38,12 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaAnexarProcesso = null; protected $paginaCancelarDocumento = null; protected $paginaTramitarProcessoEmLote = null; + protected $paginaMoverDocumento = null; + protected $paginaCadastroOrgaoExterno = null; + protected $paginaCadastroMapEnvioCompDigitais = null; + protected $paginaTramiteMapeamentoOrgaoExterno = null; + protected $paginaExportarTiposProcesso = null; + protected $paginaTipoProcessoReativar = null; public function setUpPage(): void { @@ -56,6 +62,10 @@ public function setUpPage(): void $this->paginaCancelarDocumento = new PaginaCancelarDocumento($this); $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); + $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this); + $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); + $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); + $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); $this->currentWindow()->maximize(); } @@ -192,6 +202,11 @@ protected function definirContextoTeste($nomeContexto) 'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'), 'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'), 'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'), + 'ID_UNIDADE_ESTRUTURA' => constant($nomeContexto . '_ID_UNIDADE_ESTRUTURAS'), + 'SIGLA_UNIDADE_ESTRUTURAS' => constant($nomeContexto . '_SIGLA_UNIDADE_ESTRUTURAS'), + 'NOME_UNIDADE_ESTRUTURA' => constant($nomeContexto . '_NOME_UNIDADE_ESTRUTURAS'), + 'ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM' => constant($nomeContexto . '_ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'), + 'NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM' => constant($nomeContexto . '_NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'), 'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'), 'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'), 'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'), @@ -221,6 +236,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha) $this->url($url); PaginaLogin::executarAutenticacao($this, $login, $senha); PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade); + $this->url($url); } protected function selecionarUnidadeInterna($unidadeDestino) diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php new file mode 100644 index 000000000..5fb2ed10d --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -0,0 +1,137 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_desativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Ativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('desativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Inativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('reativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_desativacao_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Ativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('desativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Inativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('reativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + } + + public static function tearDownAfterClass(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php new file mode 100644 index 000000000..41c74a1f6 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -0,0 +1,66 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + } + + /** + * Teste para excluir de mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_excluir_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php new file mode 100644 index 000000000..4c237b093 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -0,0 +1,63 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + + $this->paginaExportarTiposProcesso->selecionarParaExportar(); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'), + 'Exportar' + ); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'), + 'Fechar' + ); + $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); + $this->paginaExportarTiposProcesso->btnExportar(); + } + + /** + * Teste para pesquisar tipos de processos + * + * @return void + */ + public function test_pesquisar_tipos_de_processos() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + $this->paginaExportarTiposProcesso->selecionarPesquisa(); + sleep(1); + $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php new file mode 100644 index 000000000..626c17a7a --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -0,0 +1,103 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->cadastrar([ + 'idMapeamento' => self::$penOrgaoExternoId, + 'sinAtivo' => 'N' + ]); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php new file mode 100644 index 000000000..45c1ed731 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -0,0 +1,143 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ]); + $penMapUnidadesFixture->gravar(); + } + + /** + * Teste de cadastro de novo mapeamento entre ogrãos + * + * @return void + */ + public function test_cadastrar_novo_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'), + $mensagem + ); + } + + /** + * Teste para cadastro de mapeamento de orgão exteno já existente + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'], + self::$remetente['NOME_UNIDADE_ORGAO_DESTINO'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Cadastro de relacionamento entre órgãos já existente.'), + $mensagem + ); + } + + /** + * Teste para editar mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_editar_mapeamento_orgao_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$remetenteB = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + $this->paginaCadastroOrgaoExterno->editarMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$remetenteB['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'), + $mensagem + ); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php new file mode 100644 index 000000000..63ab38da5 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -0,0 +1,61 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorioOrigem' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturasOrigem' => self::$remetente['REP_ESTRUTURAS'], + 'idOrgaoOrigem' => self::$remetente['ID_ESTRUTURA'], + 'nomeOrgaoOrigem' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrgaoDestino' => 110000001, + 'nomeOrgaoDestino' => 'TESTE-Unidade de Teste 1', + ]); + } + + /** + * Teste para pesquisar mapeamento entre orgãos + * + * @Depends test_desativacao_mapeamento_orgao_externo + * + * @return void + */ + public function test_pesquisar_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + // Buscar pesquisa vazia + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$remetente['NOME_UNIDADE_ESTRUTURA'] . 'B'); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + $this->assertNull($nomeRepositorioCadastrado); + + // Buscar pesquisa com sucesso + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + $this->assertNotNull($nomeRepositorioCadastrado); + } +} diff --git a/tests_sei4/funcional/phpunit.xml b/tests_sei4/funcional/phpunit.xml index 5db7c46c4..fa74fb58f 100755 --- a/tests_sei4/funcional/phpunit.xml +++ b/tests_sei4/funcional/phpunit.xml @@ -31,6 +31,15 @@ + + + + + + + + + @@ -71,6 +80,16 @@ + + + + + + + + + + diff --git a/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php new file mode 100644 index 000000000..02a20ced4 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -0,0 +1,65 @@ +getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ". + "VALUES(?,?,?,?,?,?,?)", + array( + $tipoProcesso[0], + $tipoProcesso[1], + $tipoProcesso[2], + $tipoProcesso[3], + $tipoProcesso[4], + $tipoProcesso[5], + $tipoProcesso[6] + ) + ); + } + + return $tiposProcessos; + } + + public function deletar($dados = []): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", + array($tipoProcesso[0]) + ); + } + + } + + public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + $tiposProcessos = array(); + + $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + + return $tiposProcessos; + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php new file mode 100644 index 000000000..f4695d727 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -0,0 +1,91 @@ +consultar(); + if (!empty($penUnidade)) { + $this->atualizar(); + } else { + $this->cadastrar(); + } + } + + /** + * Consultar mapeamento de unidade + * + * @return array|null + */ + public function consultar() + { + return self::$bancoOrgaoA->query( + 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?', + array(110000001, self::$dados['id']) + ); + } + + /** + * Cadastrar mapeamento de unidade + * + * @return void + */ + public function cadastrar(): void + { + self::$bancoOrgaoA->execute( + "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ". + "VALUES(?, ?, ?, ?)", + array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome']) + ); + } + + /** + * Atualizar mapeamento de unidade + * + * @return void + */ + public function atualizar(): void + { + self::$bancoOrgaoA->execute( + "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ". + "WHERE id_unidade = ? AND id_unidade_rh = ?", + array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id']) + ); + } + + /** + * Deletear mapeamento de unidade + * + * @return void + */ + public function deletar(): void + { + self::$bancoOrgaoA->execute( + "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", + array(110000001, self::$dados['id']) + ); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php new file mode 100644 index 000000000..5191cb637 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -0,0 +1,43 @@ +gravar(); + + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute( + "insert into md_pen_orgao_externo ". + "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ". + "values (?,?,?,?,?,?,?,?,?,?) ", + array( + 999999, + $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'], + $dados['id'], $dados['nome'], + 'S', 110000001, date('Y-m-d H:i:s') + ) + ); + + return 999999; + } + + public function deletar(int $id): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php new file mode 100644 index 000000000..ffb9dee02 --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -0,0 +1,259 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + + $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem, $destino) + { + $this->selectRepositorio($estrutura, 'Origem'); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @param string $origemDestino + * @return string + */ + private function selectRepositorio($siglaRepositorio, $origemDestino) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino)); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona botão novo da página + * + * @return void + */ + public function novoMapOrgao() + { + $this->test->byId("btnNovo")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function editarMapOrgao() + { + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } + + /** + * Selecionar primeira checkbox de exclusão + * Seleciona botão excluir + * Seleciona botão de confirmação + * + * @return void + */ + public function selecionarExcluirMapOrgao() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function abrirSelecaoDeArquivoParaImportacao() + { + $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click(); + sleep(2); + $fileChooser = $this->test->byId('importArquivoCsv'); + $this->test->waitUntil(function ($testCase) use ($fileChooser) { + $fileChooser + ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv') + ->keys(Keys::CLEAR); + },PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function($testCase) { + return true; + }); + } + + /** + * Buscar orgão de origem por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoOrigem($origem) + { + try { + $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text(); + return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ? + $orgaoOrigem : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar orgão de destino por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoDestino($destino) + { + try { + $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text(); + return !empty($orgaoDestino) && !is_null($orgaoDestino) ? + $orgaoDestino : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function selecionarPesquisa($textoPesquisa) + { + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Buscar item de tabela por nome + * + * @param string $nome + * @return string|null + */ + public function buscarNome($nome) + { + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; + } + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php new file mode 100644 index 000000000..8cfdd614a --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -0,0 +1,91 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo')); + + $this->test->byLinkText(utf8_encode('Exportação de Tipos de Processo'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarParaExportar() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem2'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem3'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem5'])[1]")->click(); + $this->test->byId("btnExportar")->click(); + } + + public function verificarExisteBotao(string $nomeBtn) + { + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; + } + } + + public function verificarQuantidadeDeLinhasSelecionadas() + { + $this->test->waitUntil(function($testCase) { + $trs = $this->test->byId('tableExportar') + ->elements($this->test->using('css selector')->value('tr')); + $testCase->assertEquals(count($trs), 5); + return true; + }); + } + + public function btnExportar() + { + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * + * @return void + */ + public function selecionarPesquisa() + { + $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); + $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); + $this->test->byId("sbmPesquisar")->click(); + } + + /** + * Buscar se foi pesquisado + * + * @return void + */ + public function buscarPesquisa() + { + try { + $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); + return !empty($elementos) && !is_null($elementos); + } catch (Exception $e) { + return false; + } + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php new file mode 100644 index 000000000..e5780d410 --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -0,0 +1,34 @@ +test->byId("txtInfraPesquisarMenu")->value("Mapeamento de Tipos de Processo"); + + $this->test->byLinkText("Mapeamento de Tipos de Processo")->click(); + $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); + } + + public function reativarMapeamento() + { + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php new file mode 100644 index 000000000..90fbb578d --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -0,0 +1,54 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + + $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + public function reativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo"); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function desativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo"); + $this->test->byXPath("//a[contains(@class, 'desativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function desativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnDesativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function selectEstado($estado) { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } +} diff --git a/tests_sei4/funcional/tests/CenarioBaseTestCase.php b/tests_sei4/funcional/tests/CenarioBaseTestCase.php index cf14d36da..075ac8c7a 100755 --- a/tests_sei4/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei4/funcional/tests/CenarioBaseTestCase.php @@ -38,6 +38,11 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaAnexarProcesso = null; protected $paginaCancelarDocumento = null; protected $paginaTramitarProcessoEmLote = null; + protected $paginaMoverDocumento = null; + protected $paginaCadastroOrgaoExterno = null; + protected $paginaCadastroMapEnvioCompDigitais = null; + protected $paginaExportarTiposProcesso = null; + protected $paginaTipoProcessoReativar = null; public function setUpPage(): void { @@ -56,6 +61,10 @@ public function setUpPage(): void $this->paginaCancelarDocumento = new PaginaCancelarDocumento($this); $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); + $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this); + $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); + $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); + $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); $this->currentWindow()->maximize(); } @@ -192,6 +201,11 @@ protected function definirContextoTeste($nomeContexto) 'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'), 'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'), 'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'), + 'ID_UNIDADE_ESTRUTURA' => constant($nomeContexto . '_ID_UNIDADE_ESTRUTURAS'), + 'SIGLA_UNIDADE_ESTRUTURAS' => constant($nomeContexto . '_SIGLA_UNIDADE_ESTRUTURAS'), + 'NOME_UNIDADE_ESTRUTURA' => constant($nomeContexto . '_NOME_UNIDADE_ESTRUTURAS'), + 'ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM' => constant($nomeContexto . '_ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'), + 'NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM' => constant($nomeContexto . '_NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'), 'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'), 'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'), 'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'), @@ -221,6 +235,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha) $this->url($url); PaginaLogin::executarAutenticacao($this, $login, $senha); PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade); + $this->url($url); } protected function selecionarUnidadeInterna($unidadeDestino) diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php new file mode 100644 index 000000000..ff63e3d11 --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -0,0 +1,140 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_desativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_desativacao_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php new file mode 100644 index 000000000..9bd76307e --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -0,0 +1,64 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + } + + /** + * Teste para excluir de mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_excluir_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'), + $mensagem + ); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php new file mode 100644 index 000000000..4c237b093 --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -0,0 +1,63 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + + $this->paginaExportarTiposProcesso->selecionarParaExportar(); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'), + 'Exportar' + ); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'), + 'Fechar' + ); + $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); + $this->paginaExportarTiposProcesso->btnExportar(); + } + + /** + * Teste para pesquisar tipos de processos + * + * @return void + */ + public function test_pesquisar_tipos_de_processos() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + $this->paginaExportarTiposProcesso->selecionarPesquisa(); + sleep(1); + $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php new file mode 100644 index 000000000..626c17a7a --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -0,0 +1,103 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->cadastrar([ + 'idMapeamento' => self::$penOrgaoExternoId, + 'sinAtivo' => 'N' + ]); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php new file mode 100644 index 000000000..2adc33f36 --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -0,0 +1,143 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ]); + $penMapUnidadesFixture->gravar(); + } + + /** + * Teste de cadastro de novo mapeamento entre ogrãos + * + * @return void + */ + public function test_cadastrar_novo_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'), + $mensagem + ); + } + + /** + * Teste para cadastro de mapeamento de orgão exteno já existente + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Cadastro de relacionamento entre órgãos já existente.'), + $mensagem + ); + } + + /** + * Teste para editar mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_editar_mapeamento_orgao_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$remetenteB = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + $this->paginaCadastroOrgaoExterno->editarMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$remetenteB['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'), + $mensagem + ); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php new file mode 100644 index 000000000..63ab38da5 --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -0,0 +1,61 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorioOrigem' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturasOrigem' => self::$remetente['REP_ESTRUTURAS'], + 'idOrgaoOrigem' => self::$remetente['ID_ESTRUTURA'], + 'nomeOrgaoOrigem' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrgaoDestino' => 110000001, + 'nomeOrgaoDestino' => 'TESTE-Unidade de Teste 1', + ]); + } + + /** + * Teste para pesquisar mapeamento entre orgãos + * + * @Depends test_desativacao_mapeamento_orgao_externo + * + * @return void + */ + public function test_pesquisar_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + // Buscar pesquisa vazia + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$remetente['NOME_UNIDADE_ESTRUTURA'] . 'B'); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + $this->assertNull($nomeRepositorioCadastrado); + + // Buscar pesquisa com sucesso + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + $this->assertNotNull($nomeRepositorioCadastrado); + } +} diff --git a/tests_super/funcional/phpunit.xml b/tests_super/funcional/phpunit.xml index d2d5f939e..6010b80c8 100644 --- a/tests_super/funcional/phpunit.xml +++ b/tests_super/funcional/phpunit.xml @@ -31,6 +31,15 @@ + + + + + + + + + @@ -64,13 +73,22 @@ - + + + + + + + + + + diff --git a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php new file mode 100644 index 000000000..02a20ced4 --- /dev/null +++ b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -0,0 +1,65 @@ +getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ". + "VALUES(?,?,?,?,?,?,?)", + array( + $tipoProcesso[0], + $tipoProcesso[1], + $tipoProcesso[2], + $tipoProcesso[3], + $tipoProcesso[4], + $tipoProcesso[5], + $tipoProcesso[6] + ) + ); + } + + return $tiposProcessos; + } + + public function deletar($dados = []): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", + array($tipoProcesso[0]) + ); + } + + } + + public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + $tiposProcessos = array(); + + $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + + return $tiposProcessos; + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php new file mode 100644 index 000000000..f4695d727 --- /dev/null +++ b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -0,0 +1,91 @@ +consultar(); + if (!empty($penUnidade)) { + $this->atualizar(); + } else { + $this->cadastrar(); + } + } + + /** + * Consultar mapeamento de unidade + * + * @return array|null + */ + public function consultar() + { + return self::$bancoOrgaoA->query( + 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?', + array(110000001, self::$dados['id']) + ); + } + + /** + * Cadastrar mapeamento de unidade + * + * @return void + */ + public function cadastrar(): void + { + self::$bancoOrgaoA->execute( + "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ". + "VALUES(?, ?, ?, ?)", + array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome']) + ); + } + + /** + * Atualizar mapeamento de unidade + * + * @return void + */ + public function atualizar(): void + { + self::$bancoOrgaoA->execute( + "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ". + "WHERE id_unidade = ? AND id_unidade_rh = ?", + array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id']) + ); + } + + /** + * Deletear mapeamento de unidade + * + * @return void + */ + public function deletar(): void + { + self::$bancoOrgaoA->execute( + "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", + array(110000001, self::$dados['id']) + ); + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php new file mode 100644 index 000000000..25aebcda3 --- /dev/null +++ b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -0,0 +1,43 @@ +gravar(); + + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute( + "insert into md_pen_orgao_externo ". + "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ". + "values (?,?,?,?,?,?,?,?,?,?) ", + array( + 999999, + $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'], + $dados['id'], $dados['nome'], + 'S', 110000001, date('Y-m-d H:i:s') + ) + ); + + return 999999; + } + + public function deletar(int $id): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php new file mode 100644 index 000000000..ffb9dee02 --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -0,0 +1,259 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + + $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem, $destino) + { + $this->selectRepositorio($estrutura, 'Origem'); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @param string $origemDestino + * @return string + */ + private function selectRepositorio($siglaRepositorio, $origemDestino) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino)); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona botão novo da página + * + * @return void + */ + public function novoMapOrgao() + { + $this->test->byId("btnNovo")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function editarMapOrgao() + { + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } + + /** + * Selecionar primeira checkbox de exclusão + * Seleciona botão excluir + * Seleciona botão de confirmação + * + * @return void + */ + public function selecionarExcluirMapOrgao() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function abrirSelecaoDeArquivoParaImportacao() + { + $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click(); + sleep(2); + $fileChooser = $this->test->byId('importArquivoCsv'); + $this->test->waitUntil(function ($testCase) use ($fileChooser) { + $fileChooser + ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv') + ->keys(Keys::CLEAR); + },PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function($testCase) { + return true; + }); + } + + /** + * Buscar orgão de origem por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoOrigem($origem) + { + try { + $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text(); + return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ? + $orgaoOrigem : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar orgão de destino por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoDestino($destino) + { + try { + $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text(); + return !empty($orgaoDestino) && !is_null($orgaoDestino) ? + $orgaoDestino : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function selecionarPesquisa($textoPesquisa) + { + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Buscar item de tabela por nome + * + * @param string $nome + * @return string|null + */ + public function buscarNome($nome) + { + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; + } + } +} diff --git a/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php new file mode 100644 index 000000000..8cfdd614a --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -0,0 +1,91 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo')); + + $this->test->byLinkText(utf8_encode('Exportação de Tipos de Processo'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarParaExportar() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem2'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem3'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem5'])[1]")->click(); + $this->test->byId("btnExportar")->click(); + } + + public function verificarExisteBotao(string $nomeBtn) + { + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; + } + } + + public function verificarQuantidadeDeLinhasSelecionadas() + { + $this->test->waitUntil(function($testCase) { + $trs = $this->test->byId('tableExportar') + ->elements($this->test->using('css selector')->value('tr')); + $testCase->assertEquals(count($trs), 5); + return true; + }); + } + + public function btnExportar() + { + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * + * @return void + */ + public function selecionarPesquisa() + { + $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); + $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); + $this->test->byId("sbmPesquisar")->click(); + } + + /** + * Buscar se foi pesquisado + * + * @return void + */ + public function buscarPesquisa() + { + try { + $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); + return !empty($elementos) && !is_null($elementos); + } catch (Exception $e) { + return false; + } + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php new file mode 100644 index 000000000..ed5cf67cd --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -0,0 +1,33 @@ +test->byId("txtInfraPesquisarMenu")->value("Mapeamento de Tipos de Processo"); + $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); + } + + public function reativarMapeamento() + { + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("(//div[contains(@class, 'infraCheckboxDiv')])[1]")->click(); + $this->test->byXPath("(//div[contains(@class, 'infraCheckboxDiv')])[2]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php new file mode 100644 index 000000000..90fbb578d --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -0,0 +1,54 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + + $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + public function reativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo"); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function desativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo"); + $this->test->byXPath("//a[contains(@class, 'desativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function desativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnDesativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function selectEstado($estado) { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } +} diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php index 0d31d324f..7c4d45e7b 100755 --- a/tests_super/funcional/tests/CenarioBaseTestCase.php +++ b/tests_super/funcional/tests/CenarioBaseTestCase.php @@ -39,6 +39,11 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaCancelarDocumento = null; protected $paginaTramitarProcessoEmLote = null; protected $paginaMapeamentoUnidade = null; + protected $paginaMoverDocumento = null; + protected $paginaTramiteMapeamentoOrgaoExterno = null; + protected $paginaExportarTiposProcesso = null; + protected $paginaTipoProcessoReativar = null; + protected $paginaCadastroOrgaoExterno = null; public function setUpPage(): void { @@ -58,6 +63,10 @@ public function setUpPage(): void $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); $this->paginaMapeamentoUnidade = new PaginaMapeamentoUnidade($this); + $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this); + $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); + $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); + $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); $this->currentWindow()->maximize(); } @@ -194,6 +203,13 @@ protected function definirContextoTeste($nomeContexto) 'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'), 'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'), 'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'), + + 'ID_UNIDADE_ESTRUTURA' => constant($nomeContexto . '_ID_UNIDADE_ESTRUTURAS'), + 'SIGLA_UNIDADE_ESTRUTURAS' => constant($nomeContexto . '_SIGLA_UNIDADE_ESTRUTURAS'), + 'NOME_UNIDADE_ESTRUTURA' => constant($nomeContexto . '_NOME_UNIDADE_ESTRUTURAS'), + 'ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM' => constant($nomeContexto . '_ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'), + 'NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM' => constant($nomeContexto . '_NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'), + 'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'), 'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'), 'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'), @@ -223,6 +239,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha) $this->url($url); PaginaLogin::executarAutenticacao($this, $login, $senha); PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade); + $this->url($url); } protected function selecionarUnidadeInterna($unidadeDestino) diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php new file mode 100644 index 000000000..da9426c23 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -0,0 +1,148 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_desativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_desativacao_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php new file mode 100644 index 000000000..dee195b56 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -0,0 +1,64 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + } + + /** + * Teste para excluir de mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_excluir_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + sleep(5); + $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'), + $mensagem + ); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php new file mode 100644 index 000000000..4c237b093 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -0,0 +1,63 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + + $this->paginaExportarTiposProcesso->selecionarParaExportar(); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'), + 'Exportar' + ); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'), + 'Fechar' + ); + $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); + $this->paginaExportarTiposProcesso->btnExportar(); + } + + /** + * Teste para pesquisar tipos de processos + * + * @return void + */ + public function test_pesquisar_tipos_de_processos() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + $this->paginaExportarTiposProcesso->selecionarPesquisa(); + sleep(1); + $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php new file mode 100644 index 000000000..f3c8baeb7 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -0,0 +1,101 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->cadastrar([ + 'idMapeamento' => self::$penOrgaoExternoId, + 'sinAtivo' => 'N' + ]); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + $this->paginaTipoProcessoReativar->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php new file mode 100644 index 000000000..aa55413fb --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -0,0 +1,143 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ]); + $penMapUnidadesFixture->cadastrar(); + } + + /** + * Teste de cadastro de novo mapeamento entre ogrãos + * + * @return void + */ + public function test_cadastrar_novo_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'), + $mensagem + ); + } + + /** + * Teste para cadastro de mapeamento de orgão exteno já existente + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Cadastro de relacionamento entre órgãos já existente.'), + $mensagem + ); + } + + /** + * Teste para editar mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_editar_mapeamento_orgao_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$remetenteB = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + $this->paginaCadastroOrgaoExterno->editarMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$remetente['REP_ESTRUTURAS'], + self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + self::$remetente['NOME_UNIDADE_ESTRUTURA'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$remetenteB['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE_ESTRUTURA']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'), + $mensagem + ); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php new file mode 100644 index 000000000..0b58bc06c --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -0,0 +1,70 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_UNIDADE_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_UNIDADE_ESTRUTURAS'], + 'nome' => self::$remetente['NOME_UNIDADE_ESTRUTURA'], + 'idOrigem' => self::$remetente['ID_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'], + 'nomeOrigem' => self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] + ]); + } + + /** + * Teste para pesquisar mapeamento entre orgãos + * + * @Depends test_desativacao_mapeamento_orgao_externo + * + * @return void + */ + public function test_pesquisar_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + // Buscar pesquisa vazia + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM'] . 'B'); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $this->assertNull($nomeRepositorioCadastrado); + + // Buscar pesquisa com sucesso + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$remetente['NOME_UNIDADE_MAPEAMENTO_ORGAO_ORIGEM']); + $this->assertNotNull($nomeRepositorioCadastrado); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} From 955b97e5926eb0def972d17fe5e8a45a60bb130c Mon Sep 17 00:00:00 2001 From: higocavalcante Date: Tue, 19 Dec 2023 20:26:31 -0300 Subject: [PATCH 2/4] =?UTF-8?q?chore:=20Inclus=C3=A3o=20do=20changelog?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/testes.yml | 2 +- docs/changelogs/CHANGELOG-3.5.0.md | 58 ++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 docs/changelogs/CHANGELOG-3.5.0.md diff --git a/.github/workflows/testes.yml b/.github/workflows/testes.yml index 059291bf7..50b2d6788 100644 --- a/.github/workflows/testes.yml +++ b/.github/workflows/testes.yml @@ -52,4 +52,4 @@ jobs: make tramitar-pendencias-silent & - name: Testes funcionais - run: cd sei/src/sei/web/modulos/mod-sei-pen; make test-functional-parallel + run: cd sei/src/sei/web/modulos/mod-sei-pen; make test-functional diff --git a/docs/changelogs/CHANGELOG-3.5.0.md b/docs/changelogs/CHANGELOG-3.5.0.md new file mode 100644 index 000000000..72e06e2a2 --- /dev/null +++ b/docs/changelogs/CHANGELOG-3.5.0.md @@ -0,0 +1,58 @@ +# NOTAS DE VERSÃO MOD-SEI-PEN (versão 3.5.0) + +Este documento descreve as principais mudanças aplicadas nesta versão do módulo de integração do SEI com o TRAMITA.GOV.BR. + +As melhorias entregues em cada uma das versões são cumulativas, ou seja, contêm todas as implementações realizadas em versões anteriores. + +## Compatibilidade de versões +* O módulo é compatível com as seguintes versões do **SEI**: + * 3.1.0 até 3.1.7, + * 4.0.0 até 4.0.12 + +Para maiores informações sobre os procedimentos de instalação ou atualização, acesse os seguintes documentos localizados no pacote de distribuição mod-sei-pen-VERSAO.zip: +> Atenção: É impreterível seguir rigorosamente o disposto no README.md do Módulo para instalação ou atualização com sucesso. + +* **INSTALACAO.md** - Procedimento de instalação e configuração do módulo +* **ATUALIZACAO.md** - Procedimento específicos para atualização de uma versão anterior + +### Lista de melhorias e correções de problemas + +Todas as atualizações podem incluir itens referentes à segurança, requisito em permanente monitoramento e evolução, motivo pelo qual a atualização com a maior brevidade possível é sempre recomendada. + +#### Mapeamento de Tipos de Processos: Cadastro de Relacionamento entre Órgãos (#250) + +Esta melhoria é parte do pacote referente à funcionalidade de Blocos de Migração. + +### Atualização de Versão + +Para obter informações detalhadas sobre cada um dos passos de atualização, vide arquivo **ATUALIZACAO.md**. + +#### Instruções + +1. Baixar a última versão do módulo de instalação do sistema (arquivo `mod-sei-pen-[VERSÃO].zip`) localizado na página de [Releases do projeto MOD-SEI-PEN](https://github.com/spbgovbr/mod-sei-pen/releases), seção **Assets**. _Somente usuários autorizados previamente pela Coordenação-Geral do Processo Eletrônico Nacional podem ter acesso às versões._ + +2. Fazer backup dos diretórios "sei", "sip" e "infra" do servidor web; + +3. Descompactar o pacote de instalação `mod-sei-pen-[VERSÃO].zip`; + +4. Copiar os diretórios descompactados "sei", "sip" para os servidores, sobrescrevendo os arquivos existentes; + +5. Executar o script de instalação/atualização `sei_atualizar_versao_modulo_pen.php` do módulo para o SEI localizado no diretório `sei/scripts/mod-pen/` + +```bash +php -c /etc/php.ini /sei/scripts/mod-pen/sei_atualizar_versao_modulo_pen.php +``` + +6. Executar o script de instalação/atualização `sip_atualizar_versao_modulo_pen.php` do módulo para o SIP localizado no diretório `sip/scripts/mod-pen/` + +```bash +php -c /etc/php.ini /sip/scripts/mod-pen/sip_atualizar_versao_modulo_pen.php +``` + +7. Verificar a correta instalação e configuração do módulo + +Para executar a verificação, execute o script ```verifica_instalacao_modulo_pen.php``` localizado no diretório de scripts do SEI ```/sei/scripts/mod-pen/```. + +```bash +$ php -c /etc/php.ini /sei/scripts/mod-pen/verifica_instalacao_modulo_pen.php +``` From c32ed085492be96797ce4aecdc9ae115eafd65eb Mon Sep 17 00:00:00 2001 From: caduvieira <3831408+caduvieira@users.noreply.github.com> Date: Mon, 4 Dec 2023 17:52:24 -0300 Subject: [PATCH 3/4] chore: adiciona badge do codesniffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat: mapeamento de tipos de processo e relacionamento entre orgãos feat: mapeamento de tipos de processo e relacionamento entre orgãos feat: correções de teste funcionais feat: melhoria de fixture para cadastro de mapeamento de unidades feat: implementação de teste sei3 e sei4 feat: correções de teste para fixture feat: correções de testes funcionais sei3 feat: atualização de redundancia para sei3 feat: atualização de testes funcionais sei e sei4 feat: atualização de redundancia para sei3 feat: alteração de mensagem de tipo de processo padrão com restrição feat: correção de consulta de mapeamento de tipos de processo feat: correções de testes e inclusão de sublinhado feat: correção de cadastro com duplicidade para relacionamento inativo feat: correção de reativar de tipos de processos para reativar tipos de processos feat: correção de redirecionar do botão fechar para exportar tipos de processo --- README.md | 2 +- src/PENIntegracao.php | 111 ++- src/bd/PenMapTipoProcedimentoBD.php | 10 + src/bd/PenOrgaoExternoBD.php | 10 + src/dto/PenMapTipoProcedimentoDTO.php | 38 + src/dto/PenOrgaoExternoDTO.php | 39 + src/dto/PenUnidadeDTO.php | 3 + src/imagens/importar.svg | 25 + src/pen_map_orgaos_externos_cadastrar.php | 505 ++++++++++++ src/pen_map_orgaos_externos_listar.php | 727 ++++++++++++++++++ src/pen_map_orgaos_mapeamento_tipo_listar.php | 616 +++++++++++++++ src/pen_map_tipo_processo_padrao.php | 154 ++++ src/pen_map_tipo_processo_reativar.php | 301 ++++++++ src/pen_map_unidade_listar.php | 2 +- src/pen_parametros_configuracao.php | 17 +- src/pen_tipo_procedimento_lista.php | 305 ++++++++ src/rn/PenMapTipoProcedimentoRN.php | 151 ++++ src/rn/PenOrgaoExternoRN.php | 127 +++ src/rn/PenParametroRN.php | 28 + src/rn/PenUnidadeRN.php | 16 + src/rn/ReceberProcedimentoRN.php | 79 +- .../sei_atualizar_versao_modulo_pen.php | 77 +- .../sip_atualizar_versao_modulo_pen.php | 105 ++- tests_sei3/funcional/phpunit.xml | 4 + .../ImportacaoTiposProcessoFixture.php | 65 ++ .../src/fixtures/PenMapUnidadesFixture.php | 91 +++ .../src/fixtures/PenOrgaoExternoFixture.php | 43 ++ .../paginas/PaginaCadastroOrgaoExterno.php | 264 +++++++ .../paginas/PaginaExportarTiposProcesso.php | 92 +++ .../paginas/PaginaTipoProcessoReativar.php | 49 ++ .../PaginaTramiteMapeamentoOrgaoExterno.php | 70 ++ .../funcional/tests/CenarioBaseTestCase.php | 12 + ...mentoTipoProcessoDesativarReativarTest.php | 139 ++++ .../MapeamentoTipoProcessoExcluirTest.php | 74 ++ .../MapeamentoTipoProcessoExportarTest.php | 63 ++ .../MapeamentoTipoProcessoReativarTest.php | 107 +++ ...ocessoRelacionamentoOrgaosCadastroTest.php | 135 ++++ ...cionamentoOrgaosListagemImportacaoTest.php | 72 ++ tests_sei4/funcional/phpunit.xml | 4 + .../ImportacaoTiposProcessoFixture.php | 65 ++ .../src/fixtures/PenMapUnidadesFixture.php | 91 +++ .../src/fixtures/PenOrgaoExternoFixture.php | 43 ++ .../paginas/PaginaCadastroOrgaoExterno.php | 257 +++++++ .../paginas/PaginaExportarTiposProcesso.php | 89 +++ .../paginas/PaginaTipoProcessoReativar.php | 32 + .../PaginaTramiteMapeamentoOrgaoExterno.php | 54 ++ .../funcional/tests/CenarioBaseTestCase.php | 11 + ...mentoTipoProcessoDesativarReativarTest.php | 142 ++++ .../MapeamentoTipoProcessoExcluirTest.php | 71 ++ .../MapeamentoTipoProcessoExportarTest.php | 63 ++ .../MapeamentoTipoProcessoReativarTest.php | 105 +++ ...ocessoRelacionamentoOrgaosCadastroTest.php | 145 ++++ ...cionamentoOrgaosListagemImportacaoTest.php | 72 ++ tests_super/funcional/phpunit.xml | 6 +- .../ImportacaoTiposProcessoFixture.php | 65 ++ .../src/fixtures/PenMapUnidadesFixture.php | 91 +++ .../src/fixtures/PenOrgaoExternoFixture.php | 43 ++ .../paginas/PaginaCadastroOrgaoExterno.php | 257 +++++++ .../paginas/PaginaExportarTiposProcesso.php | 89 +++ .../paginas/PaginaTipoProcessoReativar.php | 33 + .../PaginaTramiteMapeamentoOrgaoExterno.php | 54 ++ .../funcional/tests/CenarioBaseTestCase.php | 11 + ...mentoTipoProcessoDesativarReativarTest.php | 150 ++++ .../MapeamentoTipoProcessoExcluirTest.php | 72 ++ .../MapeamentoTipoProcessoExportarTest.php | 63 ++ .../MapeamentoTipoProcessoReativarTest.php | 103 +++ ...ocessoRelacionamentoOrgaosCadastroTest.php | 145 ++++ ...cionamentoOrgaosListagemImportacaoTest.php | 72 ++ 68 files changed, 7201 insertions(+), 25 deletions(-) create mode 100644 src/bd/PenMapTipoProcedimentoBD.php create mode 100644 src/bd/PenOrgaoExternoBD.php create mode 100644 src/dto/PenMapTipoProcedimentoDTO.php create mode 100644 src/dto/PenOrgaoExternoDTO.php create mode 100644 src/imagens/importar.svg create mode 100644 src/pen_map_orgaos_externos_cadastrar.php create mode 100644 src/pen_map_orgaos_externos_listar.php create mode 100644 src/pen_map_orgaos_mapeamento_tipo_listar.php create mode 100644 src/pen_map_tipo_processo_padrao.php create mode 100644 src/pen_map_tipo_processo_reativar.php create mode 100644 src/pen_tipo_procedimento_lista.php create mode 100644 src/rn/PenMapTipoProcedimentoRN.php create mode 100644 src/rn/PenOrgaoExternoRN.php create mode 100644 tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php create mode 100644 tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php create mode 100644 tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php create mode 100644 tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php create mode 100644 tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php create mode 100644 tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php create mode 100644 tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php create mode 100644 tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php create mode 100644 tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php create mode 100644 tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php create mode 100644 tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php create mode 100644 tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php create mode 100644 tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php create mode 100644 tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php diff --git a/README.md b/README.md index 99cc27716..6e0f3e294 100755 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Módulo de Integração do SEI ao Tramita.GOV.BR +# Módulo de Integração do SEI ao Tramita.GOV.BR [![PHP_CodeSniffer](https://github.com/pengovbr/mod-sei-pen/actions/workflows/phpcs.yml/badge.svg)](https://github.com/pengovbr/mod-sei-pen/actions/workflows/phpcs.yml) O módulo **PEN** é o responsável por integrar o Sistema Eletrônico de Informações - SEI ao Tramita.GOV.BR. Este projeto tem como objetivo interligar todos os sistema de processo eletrônico do Poder Executivo Federal a fim de proporcionar a troca de documentos oficiais de forma rápida, simples e segura. diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index e59549992..5a34a13a6 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -1,7 +1,7 @@ validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem); + + $mensagem = 'Prezado(a) usuário(a), você está tentando inativar o Tipo de Processo "%s" ' + . 'que se encontra mapeado para o Tipo de Processo Padrão. ' + . 'Para continuar com essa ação é necessário alterar o Tipo de Processo Padrão. ' + . 'O Tipo de Processo padrão se encontra disponível em: ' + . 'Administração -> Processo Eletrônico Nacional -> Mapeamento de Tipos de Processo -> Relacionamento entre Órgãos'; + + $objPenParametroRN = new PenParametroRN(); + $objPenParametroRN->validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem); + } + + /** + * @param array $arrObjTipoProcedimentoDTO + * @return void + */ + public function excluirTipoProcesso($arrObjTipoProcedimentoDTO) + { + $mensagem = "Prezado(a) usuário(a), você está tentando excluir um Tipo de Processo que se encontra mapeado para o(s) relacionamento(s) " + ."\"%s\". Para continuar com essa ação é necessário remover do(s) mapeamentos " + ."mencionados o Tipo de Processo: \"%s\"."; + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objMapeamentoTipoProcedimentoRN->validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem); + + $mensagem = 'Prezado(a) usuário(a), você está tentando excluir o Tipo de Processo "%s" ' + . 'que se encontra mapeado para o Tipo de Processo Padrão. ' + . 'Para continuar com essa ação é necessário alterar o Tipo de Processo Padrão. ' + . 'O Tipo de Processo padrão se encontra disponível em: ' + . 'Administração -> Processo Eletrônico Nacional -> Mapeamento de Tipos de Processo -> Relacionamento entre Órgãos'; + + $objPenParametroRN = new PenParametroRN(); + $objPenParametroRN->validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem); + } + /** * Método responsável de criar listagem de item para XML */ @@ -684,6 +730,41 @@ public function processarControlador($strAcao) require_once dirname(__FILE__) . '/pen_map_unidade_cadastrar.php'; break; + case 'pen_map_orgaos_externos_salvar': + case 'pen_map_orgaos_externos_atualizar': + case 'pen_map_orgaos_externos_cadastrar': + case 'pen_map_orgaos_externos_visualizar': + require_once dirname(__FILE__) . '/pen_map_orgaos_externos_cadastrar.php'; + break; + + case 'pen_map_orgaos_externos_reativar': + case 'pen_map_orgaos_externos_desativar': + case 'pen_map_orgaos_externos_listar': + case 'pen_map_orgaos_externos_excluir': + case 'pen_map_orgaos_importar_tipos_processos': + require_once dirname(__FILE__) . '/pen_map_orgaos_externos_listar.php'; + break; + + case 'pen_map_tipo_processo_padrao': + case 'pen_map_tipo_processo_padrao_salvar': + require_once dirname(__FILE__) . '/pen_map_tipo_processo_padrao.php'; + break; + + case 'pen_map_tipo_processo_reativar': + require_once dirname(__FILE__) . '/pen_map_tipo_processo_reativar.php'; + break; + + case 'pen_map_orgaos_exportar_tipos_processos': + require_once dirname(__FILE__) . '/pen_tipo_procedimento_lista.php'; + break; + + case 'pen_map_orgaos_externos_mapeamento_desativar': + case 'pen_map_orgaos_externos_mapeamento': + case 'pen_map_orgaos_externos_mapeamento_gerenciar': + case 'pen_map_orgaos_externos_mapeamento_excluir': + require_once dirname(__FILE__) . '/pen_map_orgaos_mapeamento_tipo_listar.php'; + break; + case 'pen_map_unidade_listar': case 'pen_map_unidade_excluir': require_once dirname(__FILE__) . '/pen_map_unidade_listar.php'; @@ -740,7 +821,33 @@ public function processarControladorAjax($strAcao) { if (count($arrObjEstruturaDTO['itens']) > 0) { $xml = self::gerarXMLItensArrInfraDTOAutoCompletar($arrObjEstruturaDTO, 'NumeroDeIdentificacaoDaEstrutura', 'Nome'); } else { - return ''; + return ''; + } + break; + + case 'pen_unidade_auto_completar_mapeados': + // DTO de paginao + $objPenUnidadeDTOFiltro = new PenUnidadeDTO(); + $objPenUnidadeDTOFiltro->retStrSiglaUnidadeRH(); + $objPenUnidadeDTOFiltro->retStrNomeUnidadeRH(); + $objPenUnidadeDTOFiltro->retNumIdUnidade(); + $objPenUnidadeDTOFiltro->retNumIdUnidadeRH(); + + // Filtragem + if(!empty($_POST['palavras_pesquisa']) && $_POST['palavras_pesquisa'] !== 'null') { + $objPenUnidadeDTOFiltro->setStrNomeUnidadeRH('%'.$_POST['palavras_pesquisa'].'%', InfraDTO::$OPER_LIKE); + } + + $objPenUnidadeRN = new PenUnidadeRN(); + $objArrPenUnidadeDTO = (array) $objPenUnidadeRN->listar($objPenUnidadeDTOFiltro); + if (count($objArrPenUnidadeDTO) > 0) { + foreach ($objArrPenUnidadeDTO as $dto) { + $dto->setNumIdUnidadeMap($dto->getNumIdUnidadeRH()); + $dto->setStrDescricaoMap($dto->getStrNomeUnidadeRH(). '-' . $dto->getStrSiglaUnidadeRH()); + } + $xml = InfraAjax::gerarXMLItensArrInfraDTO($objArrPenUnidadeDTO, 'IdUnidadeMap', 'DescricaoMap'); + } else { + return ''; } break; diff --git a/src/bd/PenMapTipoProcedimentoBD.php b/src/bd/PenMapTipoProcedimentoBD.php new file mode 100644 index 000000000..8fb4d704e --- /dev/null +++ b/src/bd/PenMapTipoProcedimentoBD.php @@ -0,0 +1,10 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'id'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdMapOrgao', 'id_map_orgao'); + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + $this->configurarFK('IdMapOrgao', 'mapeamento_orgao', 'id_map_orgao'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTipoProcessoOrigem', 'id_tipo_processo_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTipoProcessoDestino', 'id_tipo_processo_destino'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeTipoProcesso', 'nome_tipo_processo'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_criacao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'Ativo', 'sin_ativo'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); + } +} diff --git a/src/dto/PenOrgaoExternoDTO.php b/src/dto/PenOrgaoExternoDTO.php new file mode 100644 index 000000000..590a59bca --- /dev/null +++ b/src/dto/PenOrgaoExternoDTO.php @@ -0,0 +1,39 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'Id'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdOrgaoOrigem', 'id_orgao_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'OrgaoOrigem', 'str_orgao_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdEstrutaOrganizacionalOrigem', 'id_estrutura_origem'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'EstrutaOrganizacionalOrigem', 'str_estrutura_origem'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdOrgaoDestino', 'id_orgao_destino'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'OrgaoDestino', 'str_orgao_destino'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_criacao'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'Ativo', 'sin_ativo'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); + + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + + $this->configurarFK('IdUnidade', 'unidade', 'id_unidade'); + } +} diff --git a/src/dto/PenUnidadeDTO.php b/src/dto/PenUnidadeDTO.php index 784ac8d6c..c404aecfb 100755 --- a/src/dto/PenUnidadeDTO.php +++ b/src/dto/PenUnidadeDTO.php @@ -27,6 +27,9 @@ public function montar() { $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRH', 'nome_unidade_rh'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'SiglaUnidadeRH', 'sigla_unidade_rh'); $this->configurarPK('IdUnidade', InfraDTO::$TIPO_PK_INFORMADO); + + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdUnidadeMap'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'DescricaoMap'); // Infelizmente não funciona com parent::getArrAtributos(), pois o arrAtributos // esta na InfraDTO e ela confunde em função do extends, então tenho que diff --git a/src/imagens/importar.svg b/src/imagens/importar.svg new file mode 100644 index 000000000..43532929f --- /dev/null +++ b/src/imagens/importar.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + diff --git a/src/pen_map_orgaos_externos_cadastrar.php b/src/pen_map_orgaos_externos_cadastrar.php new file mode 100644 index 000000000..ea9b15118 --- /dev/null +++ b/src/pen_map_orgaos_externos_cadastrar.php @@ -0,0 +1,505 @@ +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($_GET['acao']); + + $strParametros = ''; + $bolErrosValidacao = false; + $strDiretorioModulo = PENIntegracao::getDiretorio(); + + if (isset($_GET['arvore'])) { + $objPaginaSEI->setBolArvore($_GET['arvore']); + $strParametros .= '&arvore=' . $_GET['arvore']; + } + + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->retNumIdUnidadeRH(); + $objUnidadeDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + + $numIdUnidadeOrigem = $objSessaoSEI->getNumIdUnidadeAtual(); + + // Órgão de origem + $numIdOrgaoOrigem = $_POST['hdnIdUnidadeOrigem']; + $strNomeOrgaoOrigem = $_POST['txtUnidadeOrigem']; + $numIdRepositorioOrigem = $_POST['selRepositorioEstruturasOrigem']; + $txtRepositorioEstruturasOrigem = $_POST['txtRepositorioEstruturasOrigem']; + // Órgão de destino + $numIdOrgaoDestino = $_POST['hdnIdUnidadeDestino']; + $strNomeOrgaoDestino = $_POST['txtUnidadeDestino']; + + $strLinkAjaxUnidade = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_expedir_procedimento&acao=' . $_GET['acao']); + $strLinkAjaxUnidadeDestino = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_mapeados&acao=' . $_GET['acao']); + + $id = isset($_GET['id']) ? $_GET['id'] : null; + if (!is_null($id)) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoDTO->retDblId(); + $objPenOrgaoExternoDTO->retNumIdOrgaoOrigem(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + $objPenOrgaoExternoDTO->retNumIdOrgaoDestino(); + $objPenOrgaoExternoDTO->retNumIdEstrutaOrganizacionalOrigem(); + $objPenOrgaoExternoDTO->retStrEstrutaOrganizacionalOrigem(); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrAtivo(); + + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $respObjPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + if (!is_null($respObjPenOrgaoExternoDTO)) { + // Órgão de origem + $numIdOrgaoOrigem = $respObjPenOrgaoExternoDTO->getNumIdOrgaoOrigem(); + $strNomeOrgaoOrigem = $respObjPenOrgaoExternoDTO->getStrOrgaoOrigem(); + $numIdRepositorioOrigem = $respObjPenOrgaoExternoDTO->getNumIdEstrutaOrganizacionalOrigem(); + $txtRepositorioEstruturasOrigem = $respObjPenOrgaoExternoDTO->getStrEstrutaOrganizacionalOrigem(); + // Órgão de destino + $numIdOrgaoDestino = $respObjPenOrgaoExternoDTO->getNumIdOrgaoDestino(); + $strNomeOrgaoDestino = $respObjPenOrgaoExternoDTO->getStrOrgaoDestino(); + } + $strParametros .= '&id=' . $id; + } + + $strLinkValidacao = $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink('controlador.php?acao=pen_map_orgaos_externos_salvar&acao_origem=' . $_GET['acao'] . $strParametros)); + + $disabilitarVisualizar = ""; + switch ($_GET['acao']) { + case 'pen_map_orgaos_externos_salvar': + $acao = !is_null($id) ? 'pen_map_orgaos_externos_atualizar' : 'pen_map_orgaos_externos_cadastrar'; + if (empty($_POST['selRepositorioEstruturasOrigem']) || empty($_POST['txtRepositorioEstruturasOrigem'])) { + $objPaginaSEI->adicionarMensagem('Selecione um repositório de origem.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + if (empty($_POST['hdnIdUnidadeOrigem']) || empty($_POST['txtUnidadeOrigem'])) { + $objPaginaSEI->adicionarMensagem('O Órgão Origem não foi informado.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + if (empty($_POST['hdnIdUnidadeDestino']) || empty($_POST['txtUnidadeDestino'])) { + $objPaginaSEI->adicionarMensagem('O Órgão Destino não foi informado.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=' . $acao . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $numIdOrgaoOrigem = $_POST['hdnIdUnidadeOrigem']; + $strNomeOrgaoOrigem = $_POST['txtUnidadeOrigem']; + $numIdRepositorioOrigem = $_POST['selRepositorioEstruturasOrigem']; + $txtRepositorioEstruturasOrigem = $_POST['txtRepositorioEstruturasOrigem']; + $numIdOrgaoDestino = $_POST['hdnIdUnidadeDestino']; + $strNomeOrgaoDestino = $_POST['txtUnidadeDestino']; + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($numIdOrgaoOrigem); + $objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($numIdRepositorioOrigem); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($numIdOrgaoDestino); + if (!is_null($id)) { + $objPenOrgaoExternoDTO->setDblId(array($id), InfraDTO::$OPER_NOT_IN); + } + $objPenOrgaoExternoDTO->setNumMaxRegistrosRetorno(1); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $respObjPenOrgaoExternoDTO = $objPenOrgaoExternoRN->contar($objPenOrgaoExternoDTO); + if ($respObjPenOrgaoExternoDTO > 0) { + $objPaginaSEI->adicionarMensagem('Cadastro de relacionamento entre órgãos já existente.', InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . $objSessaoSEI->assinarLink('controlador.php?acao=pen_map_orgaos_externos_cadastrar&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); + $objPenOrgaoExternoDTO->setDthRegistro(date('d/m/Y H:i:s')); + // Órgão de origem + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($numIdOrgaoOrigem); + $objPenOrgaoExternoDTO->setStrOrgaoOrigem($strNomeOrgaoOrigem); + $objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($numIdRepositorioOrigem); + $objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($txtRepositorioEstruturasOrigem); + // Órgão de destino + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($numIdOrgaoDestino); + $objPenOrgaoExternoDTO->setStrOrgaoDestino($strNomeOrgaoDestino); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $numId = ''; + if (!is_null($id)) { + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + $numId = $id; + $objPaginaSEI->adicionarMensagem('Relacionamento entre Órgãos atualizado com sucesso.', 5); + } else { + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->cadastrar($objPenOrgaoExternoDTO); + $numId = $objPenOrgaoExternoDTO->getDblId(); + $objPaginaSEI->adicionarMensagem('Relacionamento entre Órgãos cadastrado com sucesso.', 5); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink( + 'controlador.php?acao=pen_map_orgaos_externos_listar&acao_origem=' . $_GET['acao_origem'] + .'&id='.$numId.PaginaSEI::getInstance()->montarAncora($numId.';S') + )); + exit(0); + break; + case 'pen_map_orgaos_externos_visualizar': + case 'pen_map_orgaos_externos_atualizar': + case 'pen_map_orgaos_externos_cadastrar': + $strTitulo = 'Cadastro de Relacionamento entre Órgãos'; + + //Monta os botões do topo + if ( + $_GET['acao'] != 'pen_map_orgaos_externos_visualizar' + && $objSessaoSEI->verificarPermissao('pen_map_orgaos_externos_cadastrar') + && $objSessaoSEI->verificarPermissao('pen_map_orgaos_externos_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(); + + //Obter dados do repositório em que o SEI está registrado (Repositório de Origem) + $objPenParametroRN = new PenParametroRN(); + $idRepositorioSelecionado = (isset($numIdRepositorioOrigem)) ? $numIdRepositorioOrigem : ''; + $strItensSelRepositorioEstruturasOrigem = 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&idRepositorioEstruturaOrigem=1'); + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } +} 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(); +echo "\n"; + +$objPaginaSEI->abrirStyle(); +?> + +div.conteiner{ +width: 100%; +padding: 15px; +} + +div.infraAreaDados { +margin-bottom: 10px; +} + +#lblProtocoloExibir {position:absolute;left:0%;top:0%;} +#txtProtocoloExibir {position:absolute;left:0%;top:38%;width:50%;} + +#lblRepositorioEstruturasOrigem {position:absolute;left:0%;top:0%;} +#selRepositorioEstruturasOrigem {position:absolute;left:0%;top:38%;} + +#lblUnidadesOrigem {position:absolute;left:0%;top:0%;} +#txtUnidadeOrigem {left:0%;top:38%;width:100%;border:.1em solid #666;} +#imgLupaUnidadesOrigem {position:absolute;left:52%;top:48%;} + +#lblUnidadesDestino {position:absolute;left:0%;top:0%;} +#txtUnidadeDestino {left:0%;top:38%;width:100%;border:.1em solid #666;} +#imgLupaUnidadesDestino {position:absolute;left:52%;top:48%;} + +.alinhamentoBotaoImput{position:absolute;left:0%;top:48%;width:85%;}; + +#btnIdUnidadeOrigem {float: left;} +#btnIdUnidadeDestino {float: left;} +#imgPesquisaAvancada { +vertical-align: middle; +margin-left: 10px; +width: 20px; +height: 20px; +} + +.panelOrgao { +color: #fff; +width: 45%; +height: 22em; +float: left; +padding: 1em 0em 5em 2em; +border: 2px solid #999; +margin: 10px; +border-radius: 12px; +} + +.panelOrgao > h4 { +position: relative; +background: #155f9b; +width: 42%; +border-radius: 12px; +text-align: center; +padding: 6px; +top: -33px; +} + +fecharStyle(); +$objPaginaSEI->montarJavaScript(); +?> + +fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="infraEfeitoTabelas(); inicializarOrigem(); inicializarDestino();"'); +?> +
+ + abrirAreaDados('8em'); ?> + montarBarraComandosSuperior($arrComandos); + ?> + fecharAreaDados(); ?> +
+

Órgão Origem

+ +
+ + + + class="infraText" value="" /> +
+ +
+ +
+ placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" value="" tabindex="getProxTabDados() ?>" /> +
+
+ + + Consultar organograma + +
+ + +
+
+ +
+

Órgão Destino

+ +
+ +
+ class="infraText infraReadOnly" placeholder="Digite o nome/sigla da unidade e pressione ENTER para iniciar a pesquisa rápida" value="" tabindex="getProxTabDados() ?>" /> +

+ + + +
+ + +
+
+ + + +
+montarAreaDebug(); +$objPaginaSEI->fecharBody(); +$objPaginaSEI->fecharHtml(); +?> diff --git a/src/pen_map_orgaos_externos_listar.php b/src/pen_map_orgaos_externos_listar.php new file mode 100644 index 000000000..20ffc6878 --- /dev/null +++ b/src/pen_map_orgaos_externos_listar.php @@ -0,0 +1,727 @@ +setBolLigado(false); + $objDebug->setBolDebugInfra(true); + $objDebug->limpar(); + + $objSessao->validarLink(); + $objSessao->validarPermissao(PEN_RECURSO_ATUAL); + + + //-------------------------------------------------------------------------- + // Ações + if (array_key_exists('acao', $_GET)) { + + $arrParam = array_merge($_GET, $_POST); + + switch ($_GET['acao']) { + + case 'pen_map_orgaos_externos_excluir': + if (array_key_exists('hdnInfraItensSelecionados', $arrParam) && !empty($arrParam['hdnInfraItensSelecionados'])) { + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + + $arrParam['hdnInfraItensSelecionados'] = explode(',', $arrParam['hdnInfraItensSelecionados']); + + if (is_array($arrParam['hdnInfraItensSelecionados'])) { + foreach ($arrParam['hdnInfraItensSelecionados'] as $arr) { + $dblId = explode(";", $arr)[0]; + + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($dblId); + if ($objMapeamentoTipoProcedimentoRN->contar($objMapeamentoTipoProcedimentoDTO)) { + $mensagem = "Relacionamento entre órgãos possuí tipos de processo mapeados. Remova os tipos de processo para realizar a exclusão do relacionamento."; + $objPagina->adicionarMensagem($mensagem, InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' + . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $objPenOrgaoExternoDTO->setDblId($dblId); + $objPenOrgaoExternoRN->excluir($objPenOrgaoExternoDTO); + } + } else { + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($arrParam['hdnInfraItensSelecionados']); + if ($objMapeamentoTipoProcedimentoRN->contar($objMapeamentoTipoProcedimentoDTO)) { + $mensagem = "Relacionamento entre órgãos possuí tipos de processo mapeados. Remova os tipos de processo para realizar a exclusão do relacionamento."; + $objPagina->adicionarMensagem($mensagem, InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' + . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } + + $objPenOrgaoExternoDTO->setDblId($arrParam['hdnInfraItensSelecionados']); + $objPenOrgaoExternoRN->excluir($objPenOrgaoExternoDTO); + } + + $objPagina->adicionarMensagem('Relacionamento entre órgãos foi excluído com sucesso.', 5); + + 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_orgaos_externos_listar': + // Ação padrão desta tela + break; + case 'pen_map_orgaos_importar_tipos_processos': + try { + $penMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrProcedimentoDTO = []; + $tipoDeProcedimentos = array(); + $procedimentos = explode(',', $_POST['dados']); + for ($i = 0; $i < count($procedimentos); $i += 2) { + $key = trim($procedimentos[$i]); + $value = trim($procedimentos[$i + 1], '"'); + $tipoDeProcedimentos[$key] = $value; + } + + foreach ($tipoDeProcedimentos as $idProcedimento => $nomeProcedimento) { + $procedimentoDTO = new PenMapTipoProcedimentoDTO(); + $procedimentoDTO->setNumIdMapOrgao($_POST['mapId']); + $procedimentoDTO->setNumIdTipoProcessoOrigem($idProcedimento); + $procedimentoDTO->setStrNomeTipoProcesso($nomeProcedimento); + $procedimentoDTO->setNumIdUnidade($_GET['infra_unidade_atual']); + if ($penMapTipoProcedimentoRN->contar($procedimentoDTO)) { + continue; + } + $procedimentoDTO->setDthRegistro(date('d/m/Y H:i:s')); + $penMapTipoProcedimentoRN->cadastrar($procedimentoDTO); + } + $objPagina->adicionarMensagem('Importação realizada com sucesso.', 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem'])); + exit(0); + } catch (Exception $e) { + throw new InfraException($e->getMessage()); + } + break; + + case 'pen_map_orgaos_externos_reativar': + if ((isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) && isset($_POST['hdnAcaoReativar'])) { + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + } + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', PEN_PAGINA_TITULO), 5); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', PEN_PAGINA_TITULO), 5); + } + break; + + case 'pen_map_orgaos_externos_desativar': + if ((isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) && isset($_POST['hdnAcaoDesativar'])) { + $btnDesativar = null; + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($id); + $objPenOrgaoExternoDTO->setStrAtivo('N'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + } + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), InfraPagina::$TIPO_MSG_AVISO); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenOrgaoExternoDTO->setStrAtivo('N'); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoRN->alterar($objPenOrgaoExternoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), 5); + } + break; + + default: + throw new InfraException('Ação não permitida nesta tela'); + } + } + //-------------------------------------------------------------------------- + + $acao = $_GET['acao']; + $acaoOrigem = $_GET['acao_origem']; + $acaoRetorno = $_GET['acao_retorno']; + + // DTO de paginao + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + // $objPenOrgaoExternoDTO->setNumIdUnidade($objSessao->getNumIdUnidadeAtual()); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + $objPenOrgaoExternoDTO->retDblId(); + $objPenOrgaoExternoDTO->retNumIdOrgaoOrigem(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + $objPenOrgaoExternoDTO->retNumIdOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrAtivo(); + + //-------------------------------------------------------------------------- + // Filtragem + if (array_key_exists('txtSiglaOrigem', $_POST) && ((!empty($_POST['txtSiglaOrigem']) && $_POST['txtSiglaOrigem'] !== 'null') || $_POST['txtSiglaOrigem'] == "0")) { + $objPenOrgaoExternoDTO->setStrOrgaoOrigem('%' . $_POST['txtSiglaOrigem'] . '%', InfraDTO::$OPER_LIKE); + } + + if (array_key_exists('txtSiglaDestino', $_POST) && ((!empty($_POST['txtSiglaDestino']) && $_POST['txtSiglaDestino'] !== 'null') || $_POST['txtSiglaDestino'] == "0")) { + $objPenOrgaoExternoDTO->setStrOrgaoDestino('%' . $_POST['txtSiglaDestino'] . '%', InfraDTO::$OPER_LIKE); + } + + if (array_key_exists('txtEstado', $_POST) && (!empty($_POST['txtEstado']) && $_POST['txtEstado'] !== 'null')) { + $objPenOrgaoExternoDTO->setStrAtivo($_POST['txtEstado']); + } + + //-------------------------------------------------------------------------- + + $btnReativarAdicionado = 'N'; + $btnDesativarAdicionado = 'N'; + $btnReativar = ''; + $btnDesativar = null; + $btnPesquisar = ''; + $btnTipoProcessoPadrao = ''; + $btnNovo = ''; + if (empty($_POST['txtEstado']) || is_null($_POST['txtEstado']) || $_POST['txtEstado'] == 'S') { + $btnDesativar = ''; + $btnDesativarAdicionado = 'S'; + } + + if (!empty($_POST['txtEstado']) && $_POST['txtEstado'] == 'N') { + $btnReativar = ''; + $btnReativarAdicionado = 'S'; + } + + $btnExcluir = ''; + $btnImprimir = ''; + $btnFechar = ''; + $btnDesativarReativar = null; + + if ($btnDesativarAdicionado == 'S') { + $btnDesativarReativar = $btnDesativar; + } elseif ($btnReativarAdicionado == 'S') { + $btnDesativarReativar = $btnReativar; + } + $arrComandos = array($btnPesquisar, $btnTipoProcessoPadrao, $btnNovo, $btnDesativarReativar, $btnExcluir, $btnImprimir, $btnFechar); + $arrComandosFinal = array($btnNovo, $btnDesativarReativar, $btnExcluir, $btnImprimir, $btnFechar); + + //-------------------------------------------------------------------------- + + $objPagina->prepararOrdenacao($objPenOrgaoExternoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_ASC); + $objPagina->prepararPaginacao($objPenOrgaoExternoDTO); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $respObjPenOrgaoExternoDTO = $objPenOrgaoExternoRN->listar($objPenOrgaoExternoDTO); + + $objPagina->processarPaginacao($objPenOrgaoExternoDTO); + + $numRegistros = count($respObjPenOrgaoExternoDTO); + if (!empty($respObjPenOrgaoExternoDTO)) { + + $strResultado = ''; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + + $index = 0; + foreach ($respObjPenOrgaoExternoDTO as $objPenOrgaoExternoDTO) { + $strCssTr = ($strCssTr == 'infraTrClara') ? 'infraTrEscura' : 'infraTrClara'; + + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + + $index++; + } + $strResultado .= '
' . $objPagina->gerarCaptionTabela(PEN_PAGINA_TITULO, $numRegistros) . '
' . $objPagina->getThCheck() . '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'ID
Origem', 'IdOrgaoOrigem', $respObjPenOrgaoExternoDTO) . '
' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'Órgão Origem', 'OrgaoOrigem', $respObjPenOrgaoExternoDTO) . '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'ID
Destino', 'IdOrgaoDestino', $respObjPenOrgaoExternoDTO) . '
' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'Órgão Destino', 'OrgaoDestino', $respObjPenOrgaoExternoDTO) . 'Ações
' . $objPagina->getTrCheck($index, $objPenOrgaoExternoDTO->getDblId() . ';' . $objPenOrgaoExternoDTO->getStrAtivo(), '') . '' . $objPenOrgaoExternoDTO->getNumIdOrgaoOrigem() . '' . $objPenOrgaoExternoDTO->getStrOrgaoOrigem() . '' . $objPenOrgaoExternoDTO->getNumIdOrgaoDestino() . '' . $objPenOrgaoExternoDTO->getStrOrgaoDestino() . ''; + + $strResultado .= 'Consultar Mapeamento Entre Órgãos'; + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_atualizar')) { + $strResultado .= 'Alterar Relacionamento Entre Órgãos'; + } + + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($objPenOrgaoExternoDTO->getDblId()); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->retStrAtivo(); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrPenOrgaoExternoDTO = $objMapeamentoTipoProcedimentoRN->listar($objMapeamentoTipoProcedimentoDTO); + + $strResultado .= ' '; + + if ($arrPenOrgaoExternoDTO == null) { + $strResultado .= 'assinarLink('controlador.php?acao=pen_map_orgaos_externos_tipo_processo_listar&tipo_pesquisa=1&id_object=objInfraTableToTable&idMapOrgao=' . $objPenOrgaoExternoDTO->getDblId()) + . "'," . $objPenOrgaoExternoDTO->getDblId() . ')">' + . 'Importar CSV' + . ''; + } else { + $strResultado .= 'Mapear tipos de processos'; + } + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_reativar') && $objPenOrgaoExternoDTO->getStrAtivo() == 'N') { + $strLinkReativar = $objSessao->assinarLink('controlador.php?acao=pen_map_orgaos_externos_reativar&acao_origem=' . $_GET['acao_origem'] . '&acao_retorno=' . $_GET['acao'] . '&' . PEN_PAGINA_GET_ID . '=' . $objPenOrgaoExternoDTO->getDblId()); + $strId = $objPenOrgaoExternoDTO->getDblId(); + $strResultado .= 'Reativar Relacionamento entre Órgãos'; + } + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_desativar') && $objPenOrgaoExternoDTO->getStrAtivo() == 'S') { + $strLinkDesativar = $objSessao->assinarLink('controlador.php?acao=pen_map_orgaos_externos_desativar&acao_origem=' . $_GET['acao_origem'] . '&acao_retorno=' . $_GET['acao'] . '&' . PEN_PAGINA_GET_ID . '=' . $objPenOrgaoExternoDTO->getDblId()); + $strId = $objPenOrgaoExternoDTO->getDblId(); + $strResultado .= 'Desativar Relacionamento entre Órgãos'; + } + + if ($objSessao->verificarPermissao('pen_map_orgaos_externos_excluir') && $arrPenOrgaoExternoDTO == null) { + $strResultado .= '' + . 'Excluir Mapeamento' + . ''; + } + $strResultado .= '
'; + + $strResultadoImportar = ''; + + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= ''; + + $strResultadoImportar .= ''; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '
IDTipo de Processo
'; + } + + $btnImportar = ''; + $btnFecharModal = ''; + $arrComandosModal = array($btnImportar, $btnFecharModal); + $arrComandosModalFinal = array($btnImportar, $btnFecharModal); +} catch (InfraException $e) { + $objPagina->processarExcecao($e); +} + + +$objPagina->montarDocType(); +$objPagina->abrirHtml(); +$objPagina->abrirHead(); +$objPagina->montarMeta(); +$objPagina->montarTitle(':: ' . $objPagina->getStrNomeSistema() . ' - ' . PEN_PAGINA_TITULO . ' ::'); +$objPagina->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +$objPagina->abrirBody(PEN_PAGINA_TITULO, 'onload="inicializar();"'); +?> + +
+ montarBarraComandosSuperior($arrComandos); ?> + abrirAreaDados('8em'); ?> + + + + + + + + + + + + + + fecharAreaDados(); ?> + 0) { ?> + montarAreaTabela($strResultado, $numRegistros); ?> + montarBarraComandosInferior($arrComandosFinal, true); ?> + +
+ +fecharBody(); ?> +fecharHtml(); ?> diff --git a/src/pen_map_orgaos_mapeamento_tipo_listar.php b/src/pen_map_orgaos_mapeamento_tipo_listar.php new file mode 100644 index 000000000..b0a6b9c72 --- /dev/null +++ b/src/pen_map_orgaos_mapeamento_tipo_listar.php @@ -0,0 +1,616 @@ +salvarCamposPost(array('txtPalavrasPesquisaMapeamento')); +$palavrasPesquisa = PaginaSEI::getInstance()->recuperarCampo('txtPalavrasPesquisaMapeamento'); + +try { + + $objDebug->setBolLigado(false); + $objDebug->setBolDebugInfra(true); + $objDebug->limpar(); + + $objSessao->validarLink(); + // $objSessao->validarPermissao(PEN_RECURSO_ATUAL); + + $idOrgaoExterno = $_GET['id']; + + $arrParam = array_merge($_GET, $_POST); + $strParametros .= '&id=' . $idOrgaoExterno; + + switch ($_GET['acao']) { + case 'pen_map_orgaos_externos_mapeamento_desativar': + if ((isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) && isset($_POST['hdnAcaoDesativar'])) { + $btnDesativar = null; + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($id); + $objPenMapTipoProcedimentoDTO->setStrAtivo('N'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + } + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenMapTipoProcedimentoDTO->setStrAtivo('N'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi desativado com sucesso.', PEN_PAGINA_TITULO), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + break; + case 'pen_map_orgaos_externos_mapeamento_gerenciar': + try { + + $arrTiposProcessos = $_POST; + foreach (array_keys($arrTiposProcessos) as $strKeyPost) { + if (substr($strKeyPost, 0, 10) == 'txtAssunto') { + $objConsultaTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objConsultaTipoProcedimentoDTO->setNumIdMapOrgao($_POST['idOrgaoExterno']); + $objConsultaTipoProcedimentoDTO->setNumIdTipoProcessoOrigem(substr($strKeyPost, 10)); + $objConsultaTipoProcedimentoDTO->retDblId(); + $objConsultaTipoProcedimentoDTO->retNumIdTipoProcessoOrigem(); + + $objConsultaTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objConsultaTipoProcedimentoDTO = $objConsultaTipoProcedimentoRN->consultar($objConsultaTipoProcedimentoDTO); + + $objMapeamentoAssuntoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoAssuntoDTO->setDblId($objConsultaTipoProcedimentoDTO->getDblId()); + $objMapeamentoAssuntoDTO->setNumIdTipoProcessoOrigem(substr($strKeyPost, 10)); + $objMapeamentoAssuntoDTO->setNumIdTipoProcessoDestino($_POST['hdnIdAssunto' . substr($strKeyPost, 10)]); + + $objAlterTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objAlterTipoProcedimentoRN->alterar($objMapeamentoAssuntoDTO); + } + } + + $objPagina->adicionarMensagem(sprintf('Inclusão de %s realizada com sucesso.', PEN_PAGINA_TITULO), 5); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao_origem'] . '&acao_origem=' . $_GET['acao'] . '&id=' . $_POST['idOrgaoExterno'])); + die; + case 'pen_map_orgaos_externos_mapeamento': + $strTitulo = 'Mapeamento de Tipo de Processo'; + if (!is_null($_POST['mapId']) && !empty($_POST['mapId'])) { + try { + $penMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrProcedimentoDTO = []; + $tipoDeProcedimentos = array(); + $procedimentos = explode(',', $_POST['dados']); + for ($i = 0; $i < count($procedimentos); $i += 2) { + $key = trim($procedimentos[$i]); + $value = trim($procedimentos[$i + 1], '"'); + $tipoDeProcedimentos[$key] = $value; + } + $contador = 0; + foreach ($tipoDeProcedimentos as $idProcedimento => $nomeProcedimento) { + $procedimentoDTO = new PenMapTipoProcedimentoDTO(); + $procedimentoDTO->setNumIdMapOrgao($_POST['mapId']); + $procedimentoDTO->setNumIdTipoProcessoOrigem($idProcedimento); + $procedimentoDTO->setStrNomeTipoProcesso($nomeProcedimento); + $procedimentoDTO->setNumIdUnidade($_GET['infra_unidade_atual']); + if ($penMapTipoProcedimentoRN->contar($procedimentoDTO)) { + continue; + } + $procedimentoDTO->setDthRegistro(date('d/m/Y H:i:s')); + $penMapTipoProcedimentoRN->cadastrar($procedimentoDTO); + $contador += 1; + } + $mensagem = "Importação realizada com sucesso. Importado(s) %s tipo(s) de processo(s).\n" + . "Obs.: Se algum tipo de processo não foi importado, verifique se ele já está presente na tabela e/ou se foi desativado."; + $objPagina->adicionarMensagem(sprintf($mensagem, $contador), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . '&id=' . $_POST['mapId'])); + exit(0); + } catch (Exception $e) { + throw new InfraException($e->getMessage()); + } + } + break; + case 'pen_map_orgaos_externos_mapeamento_excluir': + if (array_key_exists('hdnInfraItensSelecionados', $arrParam) && !empty($arrParam['hdnInfraItensSelecionados'])) { + + $objExclusaoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objExclusaoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + + $arrParam['hdnInfraItensSelecionados'] = explode(',', $arrParam['hdnInfraItensSelecionados']); + + if (is_array($arrParam['hdnInfraItensSelecionados'])) { + foreach ($arrParam['hdnInfraItensSelecionados'] as $arr) { + $dblId = explode(";", $arr)[0]; + $objExclusaoTipoProcedimentoDTO->setDblId($dblId); + $objExclusaoTipoProcedimentoRN->excluir($objExclusaoTipoProcedimentoDTO); + } + } else { + $objExclusaoTipoProcedimentoDTO->setDblId($arrParam['hdnInfraItensSelecionados']); + $objExclusaoTipoProcedimentoRN->excluir($objExclusaoTipoProcedimentoDTO); + } + + $objPagina->adicionarMensagem('Mapeamento de tipos de processo foi excluído com sucesso.', 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . '&id=' . $idOrgaoExterno)); + exit(0); + } else { + $objPagina->adicionarMensagem('Não existe nenum registro de mapeamento para tipos de processo.', InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&acao_origem=' . $_GET['acao'] . '&id=' . $idOrgaoExterno)); + exit(0); + } + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $arrComandos = array(); + $arrComandosFinal = array(); + + $arrComandos[] = ''; + + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($idOrgaoExterno); + $objMapeamentoTipoProcedimentoDTO->setStrAtivo('S'); + $objMapeamentoTipoProcedimentoDTO->retDblId(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoOrigem(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino(); + $objMapeamentoTipoProcedimentoDTO->retStrNomeTipoProcesso(); + $objMapeamentoTipoProcedimentoDTO->retStrAtivo(); + + if (isset($_POST['chkSinAssuntosNaoMapeados'])) { + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoDestino(null); + } + + $filtro = (int) $palavrasPesquisa; + if (!empty($filtro) && $filtro != null || $filtro != 0) { + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($palavrasPesquisa, InfraDTO::$OPER_IGUAL); + } else { + $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso('%' . trim($palavrasPesquisa . '%'), InfraDTO::$OPER_LIKE); + } + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($idOrgaoExterno); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + + PaginaSEI::getInstance()->prepararPaginacao($objMapeamentoTipoProcedimentoDTO, 100); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrObjMapeamentoAssuntoDTO = $objMapeamentoTipoProcedimentoRN->listar($objMapeamentoTipoProcedimentoDTO); + + PaginaSEI::getInstance()->processarPaginacao($objMapeamentoTipoProcedimentoDTO); + + + $numRegistros = InfraArray::contar($arrObjMapeamentoAssuntoDTO); + + $arrComandos[] = ''; + + $arrComandosFinal[] = ''; + + if ($numRegistros > 0) { + + $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; + + $arrComandosFinal[] = ''; + $arrComandosFinal[] = ''; + $arrComandosFinal[] = ''; + + $strLinkGerenciar = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento_gerenciar&acao_origem=' . $_GET['acao'] . '&acao_retorno=' . $_GET['acao'] . $strParametros); + + $bolAcaoExcluir = SessaoSEI::getInstance()->verificarPermissao('mapeamento_assunto_excluir'); + + $strResultado = ''; + $strAjaxVariaveis = ''; + $strAjaxInicializar = ''; + + $strSumarioTabela = 'Tabela de mapeamento de tipo de processo.'; + $strCaptionTabela = 'tipos de processos para mapeamento'; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + + + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strCssTr = ''; + for ($i = 0; $i < $numRegistros; $i++) { + + $numIdAssuntoOrigem = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoOrigem(); + $numIdAssuntoDestino = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoDestino(); + + if ($arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo() == 'S') { + $strCssTr = ($strCssTr == '') ? '' : ''; + } else { + $strCssTr = ''; + } + + $strResultado .= $strCssTr; + + $strResultado .= ''; + + $strResultado .= ''; + + $descricaoTipoProcedimento = ''; + if ($numIdAssuntoDestino != null) { + $tipoProcedimentoDTO = new TipoProcedimentoDTO(); + $tipoProcedimentoDTO->retNumIdTipoProcedimento(); + $tipoProcedimentoDTO->retStrNome(); + $tipoProcedimentoDTO->setNumIdTipoProcedimento($numIdAssuntoDestino); + + $tipoProcedimentoRN = new TipoProcedimentoRN(); + $objTipoProcedimentoDTO = $tipoProcedimentoRN->consultarRN0267($tipoProcedimentoDTO); + $descricaoTipoProcedimento = $numIdAssuntoDestino . ' - ' . $objTipoProcedimentoDTO->getStrNome(); + } + + $strResultado .= ''; + + $strResultado .= ''; + + $strResultado .= '' . "\n"; + + $strAjaxVariaveis .= 'var objAutoCompletarAssunto' . $numIdAssuntoOrigem . ';' . "\n"; + + $strAjaxInicializar .= ' objAutoCompletarAssunto' . $numIdAssuntoOrigem . ' = new infraAjaxAutoCompletar(\'hdnIdAssunto' . $numIdAssuntoOrigem . '\',\'txtAssunto' . $numIdAssuntoOrigem . '\', linkAutoCompletar);' . "\n" . + ' objAutoCompletarAssunto' . $numIdAssuntoOrigem . '.prepararExecucao = function(){' . "\n" . + ' return \'id_tabela_assuntos=' . '1' . '&palavras_pesquisa=\'+document.getElementById(\'txtAssunto' . $numIdAssuntoOrigem . '\').value;' . "\n" . + ' }' . "\n" . + ' objAutoCompletarAssunto' . $numIdAssuntoOrigem . '.processarResultado = function(){' . "\n" . + ' bolAlteracao = true;' . "\n" . + ' }' . "\n\n"; + } + + $strResultado .= '
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPagina->getThCheck() . '' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'Tipo de Processo Origem', 'id', $arrObjMapeamentoAssuntoDTO) . 'Tipo de Processo DestinoAções
' . $objPagina->getTrCheck($i, $arrObjMapeamentoAssuntoDTO[$i]->getDblId() . ';' . $arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo(), '') . '' . PaginaSEI::tratarHTML(AssuntoINT::formatarCodigoDescricaoRI0568($numIdAssuntoOrigem, $arrObjMapeamentoAssuntoDTO[$i]->getStrNomeTipoProcesso())) . ' + '; + + if ($arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo() == 'S') { + $strId = $arrObjMapeamentoAssuntoDTO[$i]->getDblId(); + $strLinkDesativar = $objSessao->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento_desativar&acao_origem=' + . $_GET['acao_origem'] . '&acao_retorno=' . $_GET['acao'] . $strParametros); + $strResultado .= 'Desativar Mapeamento de Tipos de Processo'; + } + + $strResultado .= '' + . 'Excluir Mapeamento' + . ''; + + $strResultado .= '
'; + } + + $strResultadoImportar = ''; + + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= ''; + + $strResultadoImportar .= ''; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '' . "\n"; + $strResultadoImportar .= '
IDTipo de Processo
'; + + $btnImportar = ''; + $btnFecharModal = ''; + $btnImportarFinal = ''; + $btnFecharModalFinal = ''; + $arrComandosModal = array($btnImportar, $btnFecharModal); + $arrComandosModalFinal = array($btnImportarFinal, $btnFecharModalFinal); + + $arrComandos[] = ''; +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +$acao = $_GET['acao']; +?> + +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('17em'); + ?> + +
+ + + + + + + + + +
+ + name="chkSinAssuntosNaoMapeados" class="infraCheckbox" tabindex="getProxTabDados() ?>" /> + +
+
+ + + fecharAreaDados(); + PaginaSEI::getInstance()->montarAreaTabela($strResultado, $numRegistros); + //PaginaSEI::getInstance()->montarAreaDebug(); + PaginaSEI::getInstance()->montarBarraComandosInferior($arrComandosFinal, true); + ?> +
+ +fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/pen_map_tipo_processo_padrao.php b/src/pen_map_tipo_processo_padrao.php new file mode 100644 index 000000000..09b41a5b0 --- /dev/null +++ b/src/pen_map_tipo_processo_padrao.php @@ -0,0 +1,154 @@ +setBolLigado(false); + //InfraDebug::getInstance()->setBolDebugInfra(true); + //InfraDebug::getInstance()->limpar(); + ////////////////////////////////////////////////////////////////////////////// + + SessaoSEI::getInstance()->validarLink(); + SessaoSEI::getInstance()->validarPermissao($_GET['acao']); + PaginaSEI::getInstance()->salvarCamposPost(array('selTipoDocumentoPadrao')); + + $strParametros = ''; + + $arrComandos = array(); + $objPenParametroDTO = new PenParametroDTO(); + $objPenParametroRN = new PenParametroRN(); + + switch ($_GET['acao']) { + case 'pen_map_tipo_processo_padrao_salvar': + try { + if (!empty($_POST['PEN_TIPO_PROCESSO_EXTERNO'])) { + $objPenParametroDTO = new PenParametroDTO(); + $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO'); + $objPenParametroDTO->retStrNome(); + + if($objPenParametroRN->contar($objPenParametroDTO) > 0) { + $objPenParametroDTO->setStrValor($_POST['PEN_TIPO_PROCESSO_EXTERNO']); + $objPenParametroRN->alterar($objPenParametroDTO); + } + } + + PaginaSEI::getInstance()->adicionarMensagem('Atribuição de Tipo de Processo Padrão realizada com sucesso.', 5); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_tipo_processo_padrao&acao_origem=' . $_GET['acao'])); + die; + break; + case 'pen_map_tipo_processo_padrao': + $strTitulo = 'Atribuir Tipo de Processo Padrão'; + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objPenParametroDTO->retTodos(); + $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO'); + + $parametro = $objPenParametroRN->consultar($objPenParametroDTO); + + $objRelTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objRelTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objRelTipoProcedimentoDTO->retStrNome(); + $objRelTipoProcedimentoDTO->setOrdStrNome(InfraDTO::$TIPO_ORDENACAO_ASC); + + $objRelTipoProcedimentoRN = new TipoProcedimentoRN(); + $arrTipoProcedimento = InfraArray::converterArrInfraDTO($objRelTipoProcedimentoRN->listarRN0244($objRelTipoProcedimentoDTO), "IdTipoProcedimento"); + + $objRelTipoProcedimentoDTO->setNumIdTipoProcedimento($arrTipoProcedimento, InfraDTO::$OPER_IN); + $arrObjTipoProcedimentoDTO = $objRelTipoProcedimentoRN->listarRN0244($objRelTipoProcedimentoDTO); + + $objPenRelTipoDocMapRecebidoRN = new PenRelTipoDocMapRecebidoRN(); + $numTipoDocumentoPadrao = $objPenRelTipoDocMapRecebidoRN->consultarTipoDocumentoPadrao(); + + break; + + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +PaginaSEI::getInstance()->abrirStyle(); +?> +.infraFieldset{with:80%; height: auto; margin-bottom: 11px;} +.infraFieldset p{font-size: 1.2em;} +#lblTipoDocumentoPadrao {width:40%;} +#selTipoDocumentoPadrao {width:40%;} +.infraFieldset {padding: 20px 20px 0px 20px;} +fecharStyle(); +PaginaSEI::getInstance()->montarJavaScript(); +?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +$acao_origem = $_GET['acao_origem']; +?> +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('30em'); + ?> + +
+   Orientações Gerais   +

+ A configuração de Tipo de Processo Padrão define qual será o comportamento do sistema ao receber processos que contenham Tipos de Processo + não mapeadas previamente pelo Administrador. Na hipótese desta situação, o Tipo de Processo configurado abaixo será aplicado automaticamente, evitando que o trâmite + seja cancelado pela falta de configuração. +

+
+ + + + + + + fecharAreaDados(); + ?> +
+montarAreaDebug(); +PaginaSEI::getInstance()->fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/pen_map_tipo_processo_reativar.php b/src/pen_map_tipo_processo_reativar.php new file mode 100644 index 000000000..266f83a1b --- /dev/null +++ b/src/pen_map_tipo_processo_reativar.php @@ -0,0 +1,301 @@ +salvarCamposPost(array('txtTipoOrigem')); +$txtTipoOrigem = PaginaSEI::getInstance()->recuperarCampo('txtTipoOrigem'); + +try { + + $objDebug->setBolLigado(false); + $objDebug->setBolDebugInfra(true); + $objDebug->limpar(); + + $objSessao->validarLink(); + // $objSessao->validarPermissao(PEN_RECURSO_ATUAL); + + $idOrgaoExterno = $_GET['id']; + + $arrParam = array_merge($_GET, $_POST); + $strParametros .= '&id=' . $idOrgaoExterno; + + switch ($_GET['acao']) { + case 'pen_map_tipo_processo_reativar': + $strTitulo = 'Reativar de Mapeamento de Tipo de Processo'; + if (isset($_POST['hdnInfraItensSelecionados']) && !empty($_POST['hdnInfraItensSelecionados'])) { + $arrHdnInInfraItensSelecionados = explode(",", $_POST['hdnInfraItensSelecionados']); + foreach ($arrHdnInInfraItensSelecionados as $arr) { + $id = explode(";", $arr)[0]; + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($id); + $objPenMapTipoProcedimentoDTO->setStrAtivo('S'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + } + isset($_POST['hdnInfraItensSelecionados']); + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', 'Mapeamento de Tipo de Processo'), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_tipo_processo_reativar&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + + if (isset($_POST['hdnInfraItemId']) && is_numeric($_POST['hdnInfraItemId'])) { + $objPenMapTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($_POST['hdnInfraItemId']); + $objPenMapTipoProcedimentoDTO->setStrAtivo('S'); + + $objPenMapTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objPenMapTipoProcedimentoRN->alterar($objPenMapTipoProcedimentoDTO); + $objPagina->adicionarMensagem(sprintf('%s foi reativado com sucesso.', 'Mapeamento de Tipo de Processo'), 5); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_tipo_processo_reativar&acao_origem=' . $_GET['acao'] . $strParametros)); + exit(0); + } + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $arrComandos = array(); + $arrComandosFinal = array(); + + $arrComandos[] = ''; + + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setStrAtivo('N'); + $objMapeamentoTipoProcedimentoDTO->retDblId(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoOrigem(); + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino(); + $objMapeamentoTipoProcedimentoDTO->retStrNomeTipoProcesso(); + $objMapeamentoTipoProcedimentoDTO->retStrAtivo(); + + + if (isset($_POST['chkSinAssuntosNaoMapeados'])) { + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoDestino(null); + } + + $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso('%' . trim($txtTipoOrigem . '%'), InfraDTO::$OPER_LIKE); + + PaginaSEI::getInstance()->prepararOrdenacao($objMapeamentoTipoProcedimentoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_ASC); + PaginaSEI::getInstance()->prepararPaginacao($objMapeamentoTipoProcedimentoDTO, 50); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $arrObjMapeamentoAssuntoDTO = $objMapeamentoTipoProcedimentoRN->listar($objMapeamentoTipoProcedimentoDTO); + + PaginaSEI::getInstance()->processarPaginacao($objMapeamentoTipoProcedimentoDTO); + + + $numRegistros = InfraArray::contar($arrObjMapeamentoAssuntoDTO); + + $strAjaxVariaveis = ''; + if ($numRegistros > 0) { + + $arrComandos[] = ''; + + $arrComandosFinal[] = ''; + + $strLinkGerenciar = SessaoSEI::getInstance()->assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento_gerenciar&acao_origem=' . $_GET['acao'] . '&acao_retorno=' . $_GET['acao'] . $strParametros); + + $strResultado = ''; + $strAjaxInicializar = ''; + + $strSumarioTabela = 'Tabela de mapeamento de tipo de processo.'; + $strCaptionTabela = 'tipos de processos para mapeamento'; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + + + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strCssTr = ''; + for ($i = 0; $i < $numRegistros; $i++) { + + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($arrObjMapeamentoAssuntoDTO[$i]->getNumIdMapOrgao()); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->retStrOrgaoOrigem(); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + $numIdAssuntoOrigem = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoOrigem(); + $numIdAssuntoDestino = $arrObjMapeamentoAssuntoDTO[$i]->getNumIdTipoProcessoDestino(); + + $strResultado .= ($strCssTr == '') ? '' : ''; + + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + + $descricaoTipoProcedimento = ''; + if ($numIdAssuntoDestino != null) { + $tipoProcedimentoDTO = new TipoProcedimentoDTO(); + $tipoProcedimentoDTO->retNumIdTipoProcedimento(); + $tipoProcedimentoDTO->retStrNome(); + $tipoProcedimentoDTO->setNumIdTipoProcedimento($numIdAssuntoDestino); + + $tipoProcedimentoRN = new TipoProcedimentoRN(); + $objTipoProcedimentoDTO = $tipoProcedimentoRN->consultarRN0267($tipoProcedimentoDTO); + $descricaoTipoProcedimento = $numIdAssuntoDestino . ' - ' . $objTipoProcedimentoDTO->getStrNome(); + } + + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= '' . "\n"; + } + + $strResultado .= '
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPagina->getThCheck() . 'Órgao Origem:Órgao Destino:' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'ID Tipo de Processo Origem', 'Id', $arrObjMapeamentoAssuntoDTO) . '' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'Tipo de Processo Origem', 'NomeTipoProcesso', $arrObjMapeamentoAssuntoDTO) . 'Tipo de Processo DestinoAções
' . $objPagina->getTrCheck($i, $arrObjMapeamentoAssuntoDTO[$i]->getDblId() . ';' . $arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo(), '') . ''. $objPenOrgaoExternoDTO->getStrOrgaoOrigem() . ''; + $strResultado .= ''. $objPenOrgaoExternoDTO->getStrOrgaoDestino() . '' . $numIdAssuntoOrigem . '' . $arrObjMapeamentoAssuntoDTO[$i]->getStrNomeTipoProcesso() . '' . PaginaSEI::tratarHTML($descricaoTipoProcedimento) . ''; + + $strLinkReativar = $objSessao->assinarLink('controlador.php?acao=pen_map_tipo_processo_reativar&acao_origem=' . $acaoOrigem . '&id=' . $arrObjMapeamentoAssuntoDTO[$i]->getDblId()); + $strId = $arrObjMapeamentoAssuntoDTO[$i]->getDblId(); + $strResultado .= 'Reativar Mapeamento de Tipo de Processo'; + + $strResultado .= '
'; + } + + $arrComandos[] = ''; + $arrComandosFinal[] = ''; +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +$acao = $_GET['acao']; +?> +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('5em'); + ?> + + + fecharAreaDados(); + PaginaSEI::getInstance()->montarAreaTabela($strResultado, $numRegistros); + //PaginaSEI::getInstance()->montarAreaDebug(); + PaginaSEI::getInstance()->montarBarraComandosInferior($arrComandosFinal, true); + ?> +
+fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/pen_map_unidade_listar.php b/src/pen_map_unidade_listar.php index 56e466d08..21e402e0f 100755 --- a/src/pen_map_unidade_listar.php +++ b/src/pen_map_unidade_listar.php @@ -174,7 +174,7 @@ $strCssTr = ($strCssTr == 'infraTrClara') ? 'infraTrEscura' : 'infraTrClara'; $strResultado .= ''; - $strResultado .= ''.$objPagina->getTrCheck($index, $objPenUnidadeDTO->getNumIdUnidade(), '').''; + $strResultado .= ''.$objPagina->getTrCheck($index, $objPenUnidadeDTO->getNumIdUnidade(), '').''; $strResultado .= ''.$objPenUnidadeDTO->getNumIdUnidade().''; $strResultado .= ''.$objPenUnidadeDTO->getStrSigla().''; $strResultado .= ''.$objPenUnidadeDTO->getStrDescricao().''; diff --git a/src/pen_parametros_configuracao.php b/src/pen_parametros_configuracao.php index dfbe8e84b..8e8532241 100755 --- a/src/pen_parametros_configuracao.php +++ b/src/pen_parametros_configuracao.php @@ -21,6 +21,7 @@ $objPenParametroDTO = new PenParametroDTO(); $objPenParametroDTO->retTodos(); + $objPenParametroDTO->setStrNome(array('PEN_TIPO_PROCESSO_EXTERNO'), InfraDTO::$OPER_NOT_IN); $objPenParametroDTO->setNumSequencia(null, InfraDTO::$OPER_DIFERENTE); $objPenParametroDTO->setOrdNumSequencia(InfraDTO::$TIPO_ORDENACAO_ASC); @@ -82,7 +83,7 @@ } } - + PaginaSEI::getInstance()->adicionarMensagem('Parâmetros de Configuração gravados com sucesso.', 5); } catch (Exception $e) { $objPagina->processarExcecao($e); } @@ -158,7 +159,6 @@ function OnSubmitForm() { var camposValidacao = [ {'id': 'PEN_ID_REPOSITORIO_ORIGEM', 'mensagem': 'Selecione um Repositório de Estruturas de Origem.'}, - {'id': 'PEN_TIPO_PROCESSO_EXTERNO', 'mensagem': 'Selecione um Tipo de Processo Externo.'}, {'id': 'PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO', 'mensagem': 'Selecione uma Unidade Geradora de Processo e Documento Recebido.'}, {'id': 'PEN_ENVIA_EMAIL_NOTIFICACAO_RECEBIMENTO', 'mensagem': 'Selecione uma opção para Envio de E-mail de Notificação de Recebimento.'}, ]; @@ -191,7 +191,7 @@ function validarPreenchimentoCampo(campoValidacao){ //echo '
'; //Esse parâmetro não aparece, por já existencia de uma tela só para alteração do próprio. - if ($parametro->getStrNome() != 'HIPOTESE_LEGAL_PADRAO') { + if ($parametro->getStrNome() != 'HIPOTESE_LEGAL_PADRAO' && $parametro->getStrNome() != 'PEN_TIPO_PROCESSO_EXTERNO') { ?> '; - echo ''; - echo ""; - echo '
'; - break; - case 'PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO': $textoAjuda="Selecionar a unidade que representa os órgãos externos"; echo '
'; diff --git a/src/pen_tipo_procedimento_lista.php b/src/pen_tipo_procedimento_lista.php new file mode 100644 index 000000000..6cf1780c0 --- /dev/null +++ b/src/pen_tipo_procedimento_lista.php @@ -0,0 +1,305 @@ +setBolLigado(false); + //InfraDebug::getInstance()->setBolDebugInfra(true); + //InfraDebug::getInstance()->limpar(); + ////////////////////////////////////////////////////////////////////////////// + + SessaoSEI::getInstance()->validarLink(); + + SessaoSEI::getInstance()->validarPermissao($_GET['acao']); + + switch ($_GET['acao']) { + case 'pen_map_orgaos_exportar_tipos_processos': + $strTitulo = 'Exportação de Tipos de Processo'; + if ($_POST['dadosInput']) { + try { + $arrStrIds = explode(',', $_POST['dadosInput']); + $qtdSelecao = count($arrStrIds); + + $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objTipoProcedimentoDTO->retStrNome(); + $objTipoProcedimentoDTO->setNumIdTipoProcedimento($arrStrIds, InfraDTO::$OPER_IN); + PaginaSEI::getInstance()->prepararOrdenacao($objTipoProcedimentoDTO, 'Nome', InfraDTO::$TIPO_ORDENACAO_ASC); + + $objTipoProcedimentoRN = new TipoProcedimentoRN(); + if (InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0")) { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->pesquisar($objTipoProcedimentoDTO); + } else { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->listarRN0244($objTipoProcedimentoDTO); + } + + $dados = array(); + $dados[] = ['ID', 'Nome']; + + foreach ($arrObjTipoProcedimentoDTO as $key => $value) { + $dados[] = array( + $value->getNumIdTipoProcedimento(), + $value->getStrNome(), + ); + } + + $nomeArquivo = 'tipos_processos.csv'; + header('Content-Type: text/csv'); + header('Content-Disposition: attachment; filename="' . $nomeArquivo . '";'); + $fp = fopen('php://output', 'w'); + + foreach ($dados as $linha) { + fputcsv($fp, $linha, ';'); + } + fclose($fp); + exit(0); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + } + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $arrComandosModal = array(); + $arrComandosModal[] = ''; + $arrComandosModal[] = ''; + $arrComandosModalFinal = array(); + $arrComandosModalFinal[] = ''; + $arrComandosModalFinal[] = ''; + + $strResultadoExportar = ''; + + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= ''; + + $strResultadoExportar .= ''; + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= '' . "\n"; + $strResultadoExportar .= '
IDTipo de Processo
'; + + $arrComandos = array(); + + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objTipoProcedimentoDTO->retStrNome(); + //$objTipoProcedimentoDTO->retStrDescricao(); + + if ($_GET['acao'] == 'tipo_procedimento_reativar') { + //Lista somente inativos + $objTipoProcedimentoDTO->setBolExclusaoLogica(false); + $objTipoProcedimentoDTO->setStrSinAtivo('N'); + } + + $strNomeTipoProcessoPesquisa = !empty($_POST['txtNomeTipoProcessoPesquisa']) && !is_null($_POST['txtNomeTipoProcessoPesquisa']) + ? $_POST['txtNomeTipoProcessoPesquisa'] + : ""; + if (trim($strNomeTipoProcessoPesquisa) != '') { + $objTipoProcedimentoDTO->setStrNome('%' . trim($strNomeTipoProcessoPesquisa) . '%', InfraDTO::$OPER_LIKE); + } + + $strIdAssunto = !empty($_POST['hdnIdAssuntoTipoProcesso']) && !is_null($_POST['hdnIdAssuntoTipoProcesso']) + ? $_POST['hdnIdAssuntoTipoProcesso'] + : ""; + if (!InfraString::isBolVazia($strIdAssunto)) { + $objTipoProcedimentoDTO->setNumIdAssunto($strIdAssunto); + } + + PaginaSEI::getInstance()->prepararOrdenacao($objTipoProcedimentoDTO, 'Nome', InfraDTO::$TIPO_ORDENACAO_ASC); + + $objTipoProcedimentoRN = new TipoProcedimentoRN(); + if (InfraUtil::compararVersoes(SEI_VERSAO, ">=", "4.0.0")) { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->pesquisar($objTipoProcedimentoDTO); + } else { + $arrObjTipoProcedimentoDTO = $objTipoProcedimentoRN->listarRN0244($objTipoProcedimentoDTO); + } + $numRegistros = count($arrObjTipoProcedimentoDTO); + + if ($numRegistros > 0) { + + $strResultado = ''; + + if ($_GET['acao'] != 'tipo_procedimento_reativar') { + $strSumarioTabela = 'Tabela de Tipos de Processo.'; + $strCaptionTabela = 'Tipos de Processo'; + } else { + $strSumarioTabela = 'Tabela de Tipos de Processo Inativos.'; + $strCaptionTabela = 'Tipos de Processo Inativos'; + } + + $strResultado .= '' . "\n"; //70 + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + for ($i = 0; $i < $numRegistros; $i++) { + $idTipoProcedimento = $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento(); + + $strCssTr = ($strCssTr == '') ? '' : ''; + + $strResultado .= $strCssTr; + + $strResultado .= ''; + + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + } + $strResultado .= '
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . PaginaSEI::getInstance()->getThCheck() . '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'ID', 'IdTipoProcedimento', $arrObjTipoProcedimentoDTO) . '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'Nome', 'Nome', $arrObjTipoProcedimentoDTO) . '
' . PaginaSEI::getInstance()->getTrCheck($i, $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento(), $arrObjTipoProcedimentoDTO[$i]->getStrNome()) . '' . $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento() . '' . PaginaSEI::tratarHTML($arrObjTipoProcedimentoDTO[$i]->getStrNome()) . '
'; + } + $arrComandos[] = ''; + + $strLinkAjaxAssuntoRI1223 = SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=assunto_auto_completar_RI1223'); +} catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + +PaginaSEI::getInstance()->montarDocType(); +PaginaSEI::getInstance()->abrirHtml(); +PaginaSEI::getInstance()->abrirHead(); +PaginaSEI::getInstance()->montarMeta(); +PaginaSEI::getInstance()->montarTitle(PaginaSEI::getInstance()->getStrNomeSistema() . ' - ' . $strTitulo); +PaginaSEI::getInstance()->montarStyle(); +PaginaSEI::getInstance()->abrirStyle(); +?> + +.no-close .ui-dialog-titlebar-close {display: none;} +.ui-dialog .ui-dialog-title {margin: 0.4em 0;} +.ui-widget-header {background: #1351b4;border: 0;color: #fff;font-weight: normal;padding: 2px;} + +#lblNomeTipoProcessoPesquisa {position:absolute;left:0%;top:0%;} +#txtNomeTipoProcessoPesquisa {position:absolute;left:0%;top:40%;width:25%;} + +#lblAssuntoTipoProcesso {position:absolute;left:26%;top:0%;} +#txtAssuntoTipoProcesso {position:absolute;left:26%;top:40%;width:25%;} + +.ui-dialog {z-index: 1001 !important;} + +fecharStyle(); +PaginaSEI::getInstance()->montarJavaScript(); +?> + +fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"'); +?> + +
+ montarBarraComandosSuperior($arrComandos); + PaginaSEI::getInstance()->abrirAreaDados('10em'); + ?> + + + + + =", "4.0.0")) { ?> + + + + + + fecharAreaDados(); + PaginaSEI::getInstance()->montarAreaTabela($strResultado, $numRegistros); + //PaginaSEI::getInstance()->montarAreaDebug(); + PaginaSEI::getInstance()->montarBarraComandosInferior($arrComandos); + ?> +
+ +fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> diff --git a/src/rn/PenMapTipoProcedimentoRN.php b/src/rn/PenMapTipoProcedimentoRN.php new file mode 100644 index 000000000..333aa9e86 --- /dev/null +++ b/src/rn/PenMapTipoProcedimentoRN.php @@ -0,0 +1,151 @@ +getObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando mapeamento externos.', $e); + } + } + + /** + * Método utilizado para listagem de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function consultarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD($this->getObjInfraIBanco()); + return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando mapeamento externos.', $e); + } + } + + /** + * Método utilizado para alteração de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function alterarControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->alterar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro alterando mapeamento de procedimento.', $e); + } + } + + /** + * Método utilizado para cadastro de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function cadastrarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->cadastrar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro cadastrando mapeamento de procedimento.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro excluindo mapeamento de procedimento.', $e); + } + } + + /** + * Método utilizado para contagem de procedimento mapeadas + * @param PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO + * @return array + * @throws InfraException + */ + protected function contarConectado(PenMapTipoProcedimentoDTO $objPenMapTipoProcedimentoDTO) + { + try { + $objPenMapTipoProcedimentoBD = new PenMapTipoProcedimentoBD(BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->contar($objPenMapTipoProcedimentoDTO); + } catch (Exception $e) { + throw new InfraException('Erro contando mapeamento de procedimento.', $e); + } + } + + /** + * @param array $arrObjTipoProcedimentoDTO + * @param string $mensagem + * @return void + */ + public function validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem) + { + $arrTipoProcedimento = array(); + $mapeamentos = array(); + foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) { + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->retNumIdMapOrgao(); + $objMapeamentoTipoProcedimentoDTO->setNumIdTipoProcessoDestino($objTipoProcedimentoDTO->getIdTipoProcedimento()); + + if ($this->contarConectado($objMapeamentoTipoProcedimentoDTO)) { + $arrObjMapeamentoTipoProcedimentoDTO = $this->listarConectado($objMapeamentoTipoProcedimentoDTO); + + foreach ($arrObjMapeamentoTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->retStrOrgaoDestino(); + $objPenOrgaoExternoDTO->setDblId($objPenMapTipoProcedimentoDTO->getNumIdMapOrgao()); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + $mapeamentos[$objPenOrgaoExternoDTO->getStrOrgaoDestino()] = $objPenOrgaoExternoDTO->getStrOrgaoDestino(); + $arrTipoProcedimento[$objTipoProcedimentoDTO->getNome()] = $objTipoProcedimentoDTO->getNome(); + } + } + } + if (count($arrTipoProcedimento) > 0) { + $mensagem = sprintf($mensagem, implode('", "', $mapeamentos), implode('", "', $arrTipoProcedimento)); + LogSEI::getInstance()->gravar($mensagem, LogSEI::$AVISO); + throw new InfraException($mensagem); + } + } +} diff --git a/src/rn/PenOrgaoExternoRN.php b/src/rn/PenOrgaoExternoRN.php new file mode 100644 index 000000000..43ec3be1f --- /dev/null +++ b/src/rn/PenOrgaoExternoRN.php @@ -0,0 +1,127 @@ +validarAuditarPermissao('pen_map_orgaos_externos_listar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD($this->getObjInfraIBanco()); + return $objBD->listar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro listando orgãos externos.', $e); + } + } + + /** + * Método utilizado para consulta de dados. + * @param PenOrgaoExternoDTO $objDTO + * @return PenOrgaoExternoDTO + * @throws InfraException + */ + protected function consultarConectado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_visualizar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(BancoSEI::getInstance()); + return $objBD->consultar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro consultando mapeamento de unidades.', $e); + } + } + + /** + * Método utilizado para alteração de dados. + * @param PenOrgaoExternoDTO $objDTO + * @return PenOrgaoExternoDTO + * @throws InfraException + */ + protected function alterarControlado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(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 PenOrgaoExternoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function cadastrarConectado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_salvar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(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 PenOrgaoExternoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_excluir', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD(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 PenOrgaoExternoDTO $objDTO + * @return array + * @throws InfraException + */ + protected function contarConectado(PenOrgaoExternoDTO $objDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_map_orgaos_externos_listar', __METHOD__, $objDTO); + $objBD = new PenOrgaoExternoBD($this->getObjInfraIBanco()); + return $objBD->contar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro contando mapeamento de unidades.', $e); + } + } +} diff --git a/src/rn/PenParametroRN.php b/src/rn/PenParametroRN.php index 0ec23ab94..4e81db5b9 100755 --- a/src/rn/PenParametroRN.php +++ b/src/rn/PenParametroRN.php @@ -189,4 +189,32 @@ private function validarUnidadeRecebimento(PenParametroDTO $objPenParametroDTO, } } + /** + * @param array $arrObjTipoProcedimentoDTO + * @param string $mensagem + * @return void + * @throws InfraException + */ + public function validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem) + { + $mapeamentos = array(); + foreach ($arrObjTipoProcedimentoDTO as $objTipoProcedimentoDTO) { + $objPenParametroDTO = new PenParametroDTO(); + $objPenParametroDTO->setStrNome('PEN_TIPO_PROCESSO_EXTERNO'); + $objPenParametroDTO->setStrValor($objTipoProcedimentoDTO->getIdTipoProcedimento()); + $objPenParametroDTO->retStrNome(); + $objPenParametroDTO->retStrValor(); + + if ($this->contarConectado($objPenParametroDTO) > 0) { + $mapeamentos[$objTipoProcedimentoDTO->getIdTipoProcedimento()] = + $objTipoProcedimentoDTO->getIdTipoProcedimento() . '-' . $objTipoProcedimentoDTO->getNome(); + } + } + + if (count($mapeamentos) > 0) { + $mensagem = sprintf($mensagem, implode('", "', $mapeamentos)); + LogSEI::getInstance()->gravar($mensagem, LogSEI::$AVISO); + throw new InfraException($mensagem); + } + } } diff --git a/src/rn/PenUnidadeRN.php b/src/rn/PenUnidadeRN.php index c7a968fd6..20a921561 100755 --- a/src/rn/PenUnidadeRN.php +++ b/src/rn/PenUnidadeRN.php @@ -123,4 +123,20 @@ protected function contarConectado(PenUnidadeDTO $objPenUnidadeDTO) { } } + /** + * Método utilizado para consultar dados. + * @param UnidadeDTO $objDTO + * @return PenUnidadeDTO + * @throws InfraException + */ + protected function consultarConectado(PenUnidadeDTO $objDTO){ + try { + $objBD = new PenUnidadeBD(BancoSEI::getInstance()); + return $objBD->consultar($objDTO); + } + catch (Exception $e) { + throw new InfraException('Erro consultar mapeamento de unidades.', $e); + } + } + } diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 6ce4ad23f..045b36c25 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -1062,7 +1062,15 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objProcedimentoDTO->setArrObjDocumentoDTO(array()); $numIdTipoProcedimento = $this->objPenParametroRN->getParametro('PEN_TIPO_PROCESSO_EXTERNO'); - $this->atribuirTipoProcedimento($objProcedimentoDTO, $numIdTipoProcedimento, $strProcessoNegocio); + $remetente = $objMetadadosProcedimento->metadados->remetente; + $destinatario = $objMetadadosProcedimento->metadados->destinatario; + $this->atribuirTipoProcedimento( + $objProcedimentoDTO, + $remetente, + $destinatario, + $numIdTipoProcedimento, + $strProcessoNegocio + ); // Obtém código da unidade através de mapeamento entre SEI e Barramento $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario); @@ -1429,18 +1437,39 @@ private function obterTipoProcessoPeloNomeOrgaoUnidade($strNomeTipoProcesso, $nu return $objTipoProcedimentoDTO; } - private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $numIdTipoProcedimento, $strProcessoNegocio) - { + /** + * Atribuir tipo de procedimento + * Procura tipo de procedimento + * Procura tipo de procedimento no mapeamento entre orgão + * Procura tipo de procedimento padrão + * + * @param ProcedimentoDTO $objProcedimentoDTO + * @param \stdClass $remetente + * @param \stdClass $destinatario + * @param string|int $numIdTipoProcedimento + * @param string|int $strProcessoNegocio + * @return ProcedimentoDTO + * @throws InfraException + */ + private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $remetente, $destinatario, $numIdTipoProcedimento, $strProcessoNegocio) + { if(!empty(trim($strProcessoNegocio))){ + // Verifica se existe relacionamento entre orgãos + $objTipoProcedimentoDTO = $this->obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio); + + if(is_null($objTipoProcedimentoDTO)){ + // Verifica se existe tipo de processo igual cadastrado $objTipoProcedimentoDTO = $this->obterTipoProcessoPeloNomeOrgaoUnidade( $strProcessoNegocio, SessaoSEI::getInstance()->getNumIdOrgaoUnidadeAtual(), SessaoSEI::getInstance()->getNumIdUnidadeAtual() ); + } } if(is_null($objTipoProcedimentoDTO)){ - $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento); + // Verifica tipo de processo padrão cadastrado + $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento); } if (is_null($objTipoProcedimentoDTO)){ @@ -1470,6 +1499,48 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $ $objProcedimentoDTO->getObjProtocoloDTO()->setArrObjRelProtocoloAssuntoDTO($arrObjAssuntoDTO); } + /** + * Verificar se tem mapeamento entre orgão + * + * @param \stdClass $remetente + * @param \stdClass $destinatario + * @param string|int $strProcessoNegocio + * @return TipoProcedimentoDTO + */ + public function obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio) + { + $objPenOrgaoExternoDTO = new PenOrgaoExternoDTO(); + + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($remetente->numeroDeIdentificacaoDaEstrutura); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($destinatario->numeroDeIdentificacaoDaEstrutura); + $objPenOrgaoExternoDTO->setStrAtivo('S'); + + $objPenOrgaoExternoDTO->retDblId(); + + $objPenOrgaoExternoRN = new PenOrgaoExternoRN(); + $objPenOrgaoExternoDTO = $objPenOrgaoExternoRN->consultar($objPenOrgaoExternoDTO); + + if (!is_null($objPenOrgaoExternoDTO)) { + $objMapeamentoTipoProcedimentoDTO = new PenMapTipoProcedimentoDTO(); + $objMapeamentoTipoProcedimentoDTO->setNumIdMapOrgao($objPenOrgaoExternoDTO->getDblId()); + $objMapeamentoTipoProcedimentoDTO->setStrNomeTipoProcesso($strProcessoNegocio); + $objMapeamentoTipoProcedimentoDTO->setStrAtivo('S'); + + $objMapeamentoTipoProcedimentoDTO->retNumIdTipoProcessoDestino(); + + $objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN(); + $objMapeamentoTipoProcedimentoDTO = $objMapeamentoTipoProcedimentoRN->consultar($objMapeamentoTipoProcedimentoDTO); + + if (!is_null($objMapeamentoTipoProcedimentoDTO) && !is_null($objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino())) { + $idTipoProcessoDestino = $objMapeamentoTipoProcedimentoDTO->getNumIdTipoProcessoDestino(); + + return $this->obterTipoProcessoPadrao($idTipoProcessoDestino); + } + } + + return null; + } + private function atribuirDadosUnidade(ProcedimentoDTO $objProcedimentoDTO, $objDestinatario) { diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index e5a42c4cc..c56d3ae75 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -272,7 +272,8 @@ protected function atualizarVersaoConectado() $this->instalarV3032(); case '3.3.2': $this->instalarV3040(); - + case '3.4.0': + $this->instalarV3050(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -2551,6 +2552,80 @@ protected function instalarV3040() { $objInfraMetaBD->adicionarColuna('md_pen_unidade', 'nome_unidade_rh', $objInfraMetaBD->tipoTextoVariavel(250), 'null'); $this->atualizarNumeroVersao("3.4.0"); } + + protected function instalarV3050() + { + $objMetaBD = $this->objMeta; + + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_orgao_externo', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_orgao_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_orgao_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), + 'id_estrutura_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_estrutura_origem' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), + 'id_orgao_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'str_orgao_destino' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::NNULLO), + 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), + 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO) + ), + 'pk' => array('cols' => array('id')), + 'fks' => array( + 'unidade' => array('nome' => 'fk_md_pen_mapeamento_orgao_externo', 'cols' => 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_orgao_externo'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_orgao_externo', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_orgao_externo'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_map_tipo_processo', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_map_orgao' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_tipo_processo_origem' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_tipo_processo_destino' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'nome_tipo_processo' => array($objMetaBD->tipoTextoVariavel(250), PenMetaBD::SNULLO), + 'sin_ativo' => array($objMetaBD->tipoTextoFixo(1), 'S'), + 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'dth_criacao' => array($objMetaBD->tipoDataHora(), PenMetaBD::NNULLO) + ), + 'pk' => array('cols' => array('id')), + 'fks' => array( + 'unidade' => array('nome' => 'fk_md_pen_mapeamento_tipo_processo', 'cols' => array('id_unidade', 'id_unidade')), + 'md_pen_orgao_externo' => array('nome' => 'fk_md_pen_mapeamento_orgao', 'cols' => array('id', 'id_map_orgao')), + ) + )); + + # Criar sequencia + $objInfraSequenciaRN = new InfraSequenciaRN(); + $objInfraSequenciaDTO = new InfraSequenciaDTO(); + + //Sequência + $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_orgao_externo'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_map_tipo_procedimento', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_map_tipo_processo'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + $this->atualizarNumeroVersao("3.5.0"); + } } diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index 0a0f180ee..67e4d2852 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -1,7 +1,7 @@ instalarV3031(); case '3.3.1': $this->instalarV3032(); + case '3.3.2': + $this->instalarV3050(); + break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -1832,6 +1835,106 @@ protected function instalarV3032() { $this->atualizarNumeroVersao("3.3.2"); } + + protected function instalarV3050() + { + /* 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('Processo Eletrônico Nacional'); + $objItemMenuDTO->setNumMaxRegistrosRetorno(1); + $objItemMenuDTO->retNumIdItemMenu(); + + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + if (empty($objItemMenuDTO)) { + throw new InfraException('Menu "Processo Eletrônico Nacional" não foi localizado'); + } + + // Adicionar submenu + $this->logar('Atribuição de permissões do módulo ao perfil do SEI'); + + $this->criarRecurso('pen_map_orgaos_externos_salvar', 'Salvar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_excluir', 'Excluir relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_cadastrar', 'Cadastro de relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_desativar', 'Desativar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_reativar', 'Reativar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_mapeamento', 'Mapeamento de tipo de processo', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_mapeamento_excluir', 'Excluir apeamento de tipo de processo', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_atualizar', 'Atualizar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_externos_visualizar', 'Visualizar relacionamento entre órgãos', $numIdSistema); + $this->criarRecurso('pen_map_orgaos_importar_tipos_processos', 'Importar tipos de processo', $numIdSistema); + $this->criarRecurso('pen_map_tipo_processo_padrao', 'Importar tipos de processo', $numIdSistema); + $this->criarRecurso('pen_map_tipo_processo_padrao_salvar', 'Importar tipos de processo', $numIdSistema); + + $numIdRecursoListar = $this->criarRecurso('pen_map_orgaos_externos_listar', 'Listagem de relacionamento entre órgãos', $numIdSistema); + $numIdRecursoExportar = $this->criarRecurso('pen_map_orgaos_exportar_tipos_processos', 'Listagem de relacionamento entre órgãos', $numIdSistema); + $numIdRecursoReativar = $this->criarRecurso('pen_map_tipo_processo_reativar', 'Reativar mapeamento de tipo de processo', $numIdSistema); + + $numIdPerfilSeiAdministrador = ScriptSip::obterIdPerfil($numIdSistema, "Administrador"); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_salvar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_cadastrar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_atualizar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_visualizar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_desativar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_reativar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_importar_tipos_processos'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_exportar_tipos_processos'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_mapeamento'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_orgaos_externos_mapeamento_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_padrao'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_padrao_salvar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_map_tipo_processo_reativar'); + + // Administrao > Processo Eletrônico Nacional > Mapeamento de Tipos de Processo + $numIdItemMenu = $this->criarMenu('Mapeamento de Tipos de Processo', 40, $objItemMenuDTO->getNumIdItemMenu(), $numIdMenu, null, $numIdSistema); + + // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Listar + $numIdItemMenuRecuso = $this->criarMenu('Relacionamento entre Órgãos', 20, $numIdItemMenu, $numIdMenu, $numIdRecursoListar, $numIdSistema); + $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoListar, $numIdMenu, $numIdItemMenuRecuso); + + // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Exportar Tipo de Processo + $numIdItemMenuRecuso = $this->criarMenu('Exportação de Tipos de Processo', 21, $numIdItemMenu, $numIdMenu, $numIdRecursoExportar, $numIdSistema); + $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoExportar, $numIdMenu, $numIdItemMenuRecuso); + + // Administrao > Processo Eletrônico Nacional > Órgãos Externos > Reativar Tipo de Processo + $numIdItemMenuRecuso = $this->criarMenu('Reativar Tipos de Processo', 22, $numIdItemMenu, $numIdMenu, $numIdRecursoReativar, $numIdSistema); + $this->cadastrarRelPergilItemMenu($numIdPerfilSeiAdministrador, $numIdRecursoReativar, $numIdMenu, $numIdItemMenuRecuso); + + // Nova versão + $this->atualizarNumeroVersao("3.5.0"); + } + + /** + * Cadastrar item do menu em um perfil expecifico + * + * @return void + */ + private function cadastrarRelPergilItemMenu($numIdPerfil, $numIdRecurso, $numIdMenu, $numIdItemMenuRecuso) + { + $numIdSistema = $this->getNumIdSistema('SEI'); + + $objDTO = new RelPerfilItemMenuDTO(); + $objBD = new RelPerfilItemMenuBD(BancoSip::getInstance()); + + $objDTO->setNumIdPerfil($numIdPerfil); + $objDTO->setNumIdSistema($numIdSistema); + $objDTO->setNumIdRecurso($numIdRecurso); + $objDTO->setNumIdMenu($numIdMenu); + $objDTO->setNumIdItemMenu($numIdItemMenuRecuso); + + if ($objBD->contar($objDTO) == 0) { + $objBD->cadastrar($objDTO); + } + } } diff --git a/tests_sei3/funcional/phpunit.xml b/tests_sei3/funcional/phpunit.xml index 3c07c70d1..fc1d4cd30 100755 --- a/tests_sei3/funcional/phpunit.xml +++ b/tests_sei3/funcional/phpunit.xml @@ -32,6 +32,8 @@ + @@ -72,6 +74,8 @@ + diff --git a/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php new file mode 100644 index 000000000..02a20ced4 --- /dev/null +++ b/tests_sei3/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -0,0 +1,65 @@ +getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ". + "VALUES(?,?,?,?,?,?,?)", + array( + $tipoProcesso[0], + $tipoProcesso[1], + $tipoProcesso[2], + $tipoProcesso[3], + $tipoProcesso[4], + $tipoProcesso[5], + $tipoProcesso[6] + ) + ); + } + + return $tiposProcessos; + } + + public function deletar($dados = []): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", + array($tipoProcesso[0]) + ); + } + + } + + public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + $tiposProcessos = array(); + + $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + + return $tiposProcessos; + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php new file mode 100644 index 000000000..f4695d727 --- /dev/null +++ b/tests_sei3/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -0,0 +1,91 @@ +consultar(); + if (!empty($penUnidade)) { + $this->atualizar(); + } else { + $this->cadastrar(); + } + } + + /** + * Consultar mapeamento de unidade + * + * @return array|null + */ + public function consultar() + { + return self::$bancoOrgaoA->query( + 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?', + array(110000001, self::$dados['id']) + ); + } + + /** + * Cadastrar mapeamento de unidade + * + * @return void + */ + public function cadastrar(): void + { + self::$bancoOrgaoA->execute( + "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ". + "VALUES(?, ?, ?, ?)", + array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome']) + ); + } + + /** + * Atualizar mapeamento de unidade + * + * @return void + */ + public function atualizar(): void + { + self::$bancoOrgaoA->execute( + "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ". + "WHERE id_unidade = ? AND id_unidade_rh = ?", + array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id']) + ); + } + + /** + * Deletear mapeamento de unidade + * + * @return void + */ + public function deletar(): void + { + self::$bancoOrgaoA->execute( + "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", + array(110000001, self::$dados['id']) + ); + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php new file mode 100644 index 000000000..b1c2d304f --- /dev/null +++ b/tests_sei3/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -0,0 +1,43 @@ +gravar(); + + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute( + "insert into md_pen_orgao_externo ". + "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ". + "values (?,?,?,?,?,?,?,?,?,?) ", + array( + 999999, + $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'], + $dados['id'], $dados['nome'], + 'S', 110000001, date('Y-m-d H:i:s') + ) + ); + + return 999999; + } + + public function deletar(int $id): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php new file mode 100644 index 000000000..142f3e132 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -0,0 +1,264 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_externos_listar')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem, $destino) + { + $this->selectRepositorio($estrutura, 'Origem'); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @param string $origemDestino + * @return string + */ + private function selectRepositorio($siglaRepositorio, $origemDestino) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino)); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona botão novo da página + * + * @return void + */ + public function novoMapOrgao() + { + $this->test->byId("btnNovo")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function editarMapOrgao() + { + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } + + /** + * Selecionar primeira checkbox de exclusão + * Seleciona botão excluir + * Seleciona botão de confirmação + * + * @return void + */ + public function selecionarExcluirMapOrgao() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + + // return $this->alertTextAndClose(); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function abrirSelecaoDeArquivoParaImportacao() + { + $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click(); + sleep(2); + $fileChooser = $this->test->byId('importArquivoCsv'); + $this->test->waitUntil(function ($testCase) use ($fileChooser) { + $fileChooser + ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv') + ->keys(Keys::CLEAR); + },PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function($testCase) { + return true; + }); + } + + /** + * Buscar orgão de origem por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoOrigem($origem) + { + try { + $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text(); + return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ? + $orgaoOrigem : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar orgão de destino por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoDestino($destino) + { + try { + $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text(); + return !empty($orgaoDestino) && !is_null($orgaoDestino) ? + $orgaoDestino : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $bolExisteAlerta; + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function selecionarPesquisa($textoPesquisa) + { + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Buscar item de tabela por nome + * + * @param string $nome + * @return string|null + */ + public function buscarNome($nome) + { + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; + } + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php new file mode 100644 index 000000000..64d01ac84 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -0,0 +1,92 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_exportar_tipos_processos')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarParaExportar() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem2'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem3'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem5'])")->click(); + $this->test->byId("btnExportar")->click(); + } + + public function verificarExisteBotao(string $nomeBtn) + { + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; + } + } + + public function verificarQuantidadeDeLinhasSelecionadas() + { + $this->test->waitUntil(function($testCase) { + $trs = $this->test->byId('tableExportar') + ->elements($this->test->using('css selector')->value('tr')); + $testCase->assertEquals(count($trs), 5); + return true; + }); + } + + public function btnExportar() + { + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * + * @return void + */ + public function selecionarPesquisa() + { + $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); + $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); + $this->test->byId("sbmPesquisar")->click(); + } + + /** + * Buscar se foi pesquisado + * + * @return void + */ + public function buscarPesquisa() + { + try { + $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); + return !empty($elementos) && !is_null($elementos); + } catch (Exception $e) { + return false; + } + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php new file mode 100644 index 000000000..794a2f834 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -0,0 +1,49 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_tipo_processo_reativar')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + public function reativarMapeamento() + { + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])")->click(); + $this->test->byXPath("(//input[@id='chkInfraItem1'])")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $bolExisteAlerta; + } +} diff --git a/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php new file mode 100644 index 000000000..ce646c79c --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -0,0 +1,70 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=pen_map_orgaos_externos_listar')]"; + $link = $this->test->byXPath($xpath); + $url = $link->attribute('href'); + $this->test->url($url); + } + + public function reativarMapeamento() + { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo"); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function desativarMapeamento() + { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo"); + $this->test->byXPath("//a[contains(@class, 'desativar')]")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function desativarMapeamentoCheckbox() + { + $this->test->byXPath("(//input[@id='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnDesativar")->click(); + $bolExisteAlerta = $this->alertTextAndClose(); + $bolExisteAlerta != null ? $this->test->keys(Keys::ENTER) : null; + + return $this->alertTextAndClose(); + } + + public function selectEstado($estado) + { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } + + public function mensagemValidacao($status) + { + return utf8_encode("Relacionamento entre Órgãos foi {$status} com sucesso."); + } +} diff --git a/tests_sei3/funcional/tests/CenarioBaseTestCase.php b/tests_sei3/funcional/tests/CenarioBaseTestCase.php index cf14d36da..235f37a86 100755 --- a/tests_sei3/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei3/funcional/tests/CenarioBaseTestCase.php @@ -38,6 +38,12 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaAnexarProcesso = null; protected $paginaCancelarDocumento = null; protected $paginaTramitarProcessoEmLote = null; + protected $paginaMoverDocumento = null; + protected $paginaCadastroOrgaoExterno = null; + protected $paginaCadastroMapEnvioCompDigitais = null; + protected $paginaTramiteMapeamentoOrgaoExterno = null; + protected $paginaExportarTiposProcesso = null; + protected $paginaTipoProcessoReativar = null; public function setUpPage(): void { @@ -56,6 +62,10 @@ public function setUpPage(): void $this->paginaCancelarDocumento = new PaginaCancelarDocumento($this); $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); + $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this); + $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); + $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); + $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); $this->currentWindow()->maximize(); } @@ -192,6 +202,7 @@ protected function definirContextoTeste($nomeContexto) 'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'), 'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'), 'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'), + 'SIGLA_ESTRUTURA' => constant($nomeContexto . '_SIGLA_ESTRUTURA'), 'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'), 'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'), 'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'), @@ -221,6 +232,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha) $this->url($url); PaginaLogin::executarAutenticacao($this, $login, $senha); PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade); + $this->url($url); } protected function selecionarUnidadeInterna($unidadeDestino) diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php new file mode 100644 index 000000000..221f2a982 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -0,0 +1,139 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_desativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Ativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('desativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Inativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('reativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_desativacao_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Ativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('desativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado('Inativo'); + $mensagemRetornoAlert = $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); + + $menssagemValidacao = $this->paginaTramiteMapeamentoOrgaoExterno->mensagemValidacao('reativado'); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + } + + public static function tearDownAfterClass(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php new file mode 100644 index 000000000..7f8ae3e74 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -0,0 +1,74 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste para excluir de mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_excluir_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php new file mode 100644 index 000000000..4c237b093 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -0,0 +1,63 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + + $this->paginaExportarTiposProcesso->selecionarParaExportar(); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'), + 'Exportar' + ); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'), + 'Fechar' + ); + $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); + $this->paginaExportarTiposProcesso->btnExportar(); + } + + /** + * Teste para pesquisar tipos de processos + * + * @return void + */ + public function test_pesquisar_tipos_de_processos() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + $this->paginaExportarTiposProcesso->selecionarPesquisa(); + sleep(1); + $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php new file mode 100644 index 000000000..61e47e501 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -0,0 +1,107 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->cadastrar([ + 'idMapeamento' => self::$penOrgaoExternoId, + 'sinAtivo' => 'N' + ]); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString($menssagemValidacao, $mensagemRetornoAlert); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php new file mode 100644 index 000000000..b537d57f2 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -0,0 +1,135 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'] + ]); + $penMapUnidadesFixture->gravar(); + } + + /** + * Teste de cadastro de novo mapeamento entre ogrãos + * + * @return void + */ + public function test_cadastrar_novo_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'), + $mensagem + ); + } + + /** + * Teste para cadastro de mapeamento de orgão exteno já existente + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Cadastro de relacionamento entre órgãos já existente.'), + $mensagem + ); + } + + /** + * Teste para editar mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_editar_mapeamento_orgao_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + $this->paginaCadastroOrgaoExterno->editarMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'), + $mensagem + ); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php new file mode 100644 index 000000000..8b5be9979 --- /dev/null +++ b/tests_sei3/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -0,0 +1,72 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste para pesquisar mapeamento entre orgãos + * + * @Depends test_desativacao_mapeamento_orgao_externo + * + * @return void + */ + public function test_pesquisar_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + // Buscar pesquisa vazia + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE'] . 'B'); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); + $this->assertNull($nomeRepositorioCadastrado); + + // Buscar pesquisa com sucesso + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); + $this->assertNotNull($nomeRepositorioCadastrado); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_sei4/funcional/phpunit.xml b/tests_sei4/funcional/phpunit.xml index 5db7c46c4..c3abae0d7 100755 --- a/tests_sei4/funcional/phpunit.xml +++ b/tests_sei4/funcional/phpunit.xml @@ -34,6 +34,8 @@ + @@ -74,6 +76,8 @@ + diff --git a/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php new file mode 100644 index 000000000..02a20ced4 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -0,0 +1,65 @@ +getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ". + "VALUES(?,?,?,?,?,?,?)", + array( + $tipoProcesso[0], + $tipoProcesso[1], + $tipoProcesso[2], + $tipoProcesso[3], + $tipoProcesso[4], + $tipoProcesso[5], + $tipoProcesso[6] + ) + ); + } + + return $tiposProcessos; + } + + public function deletar($dados = []): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", + array($tipoProcesso[0]) + ); + } + + } + + public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + $tiposProcessos = array(); + + $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + + return $tiposProcessos; + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php new file mode 100644 index 000000000..f4695d727 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -0,0 +1,91 @@ +consultar(); + if (!empty($penUnidade)) { + $this->atualizar(); + } else { + $this->cadastrar(); + } + } + + /** + * Consultar mapeamento de unidade + * + * @return array|null + */ + public function consultar() + { + return self::$bancoOrgaoA->query( + 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?', + array(110000001, self::$dados['id']) + ); + } + + /** + * Cadastrar mapeamento de unidade + * + * @return void + */ + public function cadastrar(): void + { + self::$bancoOrgaoA->execute( + "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ". + "VALUES(?, ?, ?, ?)", + array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome']) + ); + } + + /** + * Atualizar mapeamento de unidade + * + * @return void + */ + public function atualizar(): void + { + self::$bancoOrgaoA->execute( + "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ". + "WHERE id_unidade = ? AND id_unidade_rh = ?", + array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id']) + ); + } + + /** + * Deletear mapeamento de unidade + * + * @return void + */ + public function deletar(): void + { + self::$bancoOrgaoA->execute( + "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", + array(110000001, self::$dados['id']) + ); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php new file mode 100644 index 000000000..5191cb637 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -0,0 +1,43 @@ +gravar(); + + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute( + "insert into md_pen_orgao_externo ". + "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ". + "values (?,?,?,?,?,?,?,?,?,?) ", + array( + 999999, + $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'], + $dados['id'], $dados['nome'], + 'S', 110000001, date('Y-m-d H:i:s') + ) + ); + + return 999999; + } + + public function deletar(int $id): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php new file mode 100644 index 000000000..d13d5d4fb --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -0,0 +1,257 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem, $destino) + { + $this->selectRepositorio($estrutura, 'Origem'); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @param string $origemDestino + * @return string + */ + private function selectRepositorio($siglaRepositorio, $origemDestino) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino)); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona botão novo da página + * + * @return void + */ + public function novoMapOrgao() + { + $this->test->byId("btnNovo")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function editarMapOrgao() + { + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } + + /** + * Selecionar primeira checkbox de exclusão + * Seleciona botão excluir + * Seleciona botão de confirmação + * + * @return void + */ + public function selecionarExcluirMapOrgao() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function abrirSelecaoDeArquivoParaImportacao() + { + $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click(); + sleep(2); + $fileChooser = $this->test->byId('importArquivoCsv'); + $this->test->waitUntil(function ($testCase) use ($fileChooser) { + $fileChooser + ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv') + ->keys(Keys::CLEAR); + },PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function($testCase) { + return true; + }); + } + + /** + * Buscar orgão de origem por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoOrigem($origem) + { + try { + $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text(); + return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ? + $orgaoOrigem : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar orgão de destino por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoDestino($destino) + { + try { + $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text(); + return !empty($orgaoDestino) && !is_null($orgaoDestino) ? + $orgaoDestino : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function selecionarPesquisa($textoPesquisa) + { + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Buscar item de tabela por nome + * + * @param string $nome + * @return string|null + */ + public function buscarNome($nome) + { + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; + } + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php new file mode 100644 index 000000000..e9b4f2f31 --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -0,0 +1,89 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo')); + $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarParaExportar() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem2'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem3'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem5'])[1]")->click(); + $this->test->byId("btnExportar")->click(); + } + + public function verificarExisteBotao(string $nomeBtn) + { + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; + } + } + + public function verificarQuantidadeDeLinhasSelecionadas() + { + $this->test->waitUntil(function($testCase) { + $trs = $this->test->byId('tableExportar') + ->elements($this->test->using('css selector')->value('tr')); + $testCase->assertEquals(count($trs), 5); + return true; + }); + } + + public function btnExportar() + { + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * + * @return void + */ + public function selecionarPesquisa() + { + $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); + $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); + $this->test->byId("sbmPesquisar")->click(); + } + + /** + * Buscar se foi pesquisado + * + * @return void + */ + public function buscarPesquisa() + { + try { + $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); + return !empty($elementos) && !is_null($elementos); + } catch (Exception $e) { + return false; + } + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php new file mode 100644 index 000000000..0db1c2bbe --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -0,0 +1,32 @@ +test->byId("txtInfraPesquisarMenu")->value("Reativar Tipos de Processo"); + $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); + } + + public function reativarMapeamento() + { + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } +} diff --git a/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php new file mode 100644 index 000000000..90fbb578d --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -0,0 +1,54 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + + $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + public function reativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo"); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function desativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo"); + $this->test->byXPath("//a[contains(@class, 'desativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function desativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnDesativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function selectEstado($estado) { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } +} diff --git a/tests_sei4/funcional/tests/CenarioBaseTestCase.php b/tests_sei4/funcional/tests/CenarioBaseTestCase.php index cf14d36da..9521cd56b 100755 --- a/tests_sei4/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei4/funcional/tests/CenarioBaseTestCase.php @@ -38,6 +38,11 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaAnexarProcesso = null; protected $paginaCancelarDocumento = null; protected $paginaTramitarProcessoEmLote = null; + protected $paginaMoverDocumento = null; + protected $paginaCadastroOrgaoExterno = null; + protected $paginaCadastroMapEnvioCompDigitais = null; + protected $paginaExportarTiposProcesso = null; + protected $paginaTipoProcessoReativar = null; public function setUpPage(): void { @@ -56,6 +61,10 @@ public function setUpPage(): void $this->paginaCancelarDocumento = new PaginaCancelarDocumento($this); $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); + $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this); + $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); + $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); + $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); $this->currentWindow()->maximize(); } @@ -192,6 +201,7 @@ protected function definirContextoTeste($nomeContexto) 'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'), 'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'), 'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'), + 'SIGLA_ESTRUTURA' => constant($nomeContexto . '_SIGLA_ESTRUTURA'), 'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'), 'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'), 'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'), @@ -221,6 +231,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha) $this->url($url); PaginaLogin::executarAutenticacao($this, $login, $senha); PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade); + $this->url($url); } protected function selecionarUnidadeInterna($unidadeDestino) diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php new file mode 100644 index 000000000..f053a0790 --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -0,0 +1,142 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_desativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_desativacao_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php new file mode 100644 index 000000000..e0712b15f --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -0,0 +1,71 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste para excluir de mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_excluir_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'), + $mensagem + ); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php new file mode 100644 index 000000000..4c237b093 --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -0,0 +1,63 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + + $this->paginaExportarTiposProcesso->selecionarParaExportar(); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'), + 'Exportar' + ); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'), + 'Fechar' + ); + $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); + $this->paginaExportarTiposProcesso->btnExportar(); + } + + /** + * Teste para pesquisar tipos de processos + * + * @return void + */ + public function test_pesquisar_tipos_de_processos() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + $this->paginaExportarTiposProcesso->selecionarPesquisa(); + sleep(1); + $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php new file mode 100644 index 000000000..9543d181c --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -0,0 +1,105 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->cadastrar([ + 'idMapeamento' => self::$penOrgaoExternoId, + 'sinAtivo' => 'N' + ]); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + + $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php new file mode 100644 index 000000000..1675b805e --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -0,0 +1,145 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'] + ]); + $penMapUnidadesFixture->gravar(); + } + + /** + * Teste de cadastro de novo mapeamento entre ogrãos + * + * @return void + */ + public function test_cadastrar_novo_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'), + $mensagem + ); + } + + /** + * Teste para cadastro de mapeamento de orgão exteno já existente + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Cadastro de relacionamento entre órgãos já existente.'), + $mensagem + ); + } + + /** + * Teste para editar mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_editar_mapeamento_orgao_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + $this->paginaCadastroOrgaoExterno->editarMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'), + $mensagem + ); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } +} diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php new file mode 100644 index 000000000..8b5be9979 --- /dev/null +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -0,0 +1,72 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste para pesquisar mapeamento entre orgãos + * + * @Depends test_desativacao_mapeamento_orgao_externo + * + * @return void + */ + public function test_pesquisar_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + // Buscar pesquisa vazia + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE'] . 'B'); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); + $this->assertNull($nomeRepositorioCadastrado); + + // Buscar pesquisa com sucesso + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); + $this->assertNotNull($nomeRepositorioCadastrado); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_super/funcional/phpunit.xml b/tests_super/funcional/phpunit.xml index d2d5f939e..bb6075a27 100644 --- a/tests_super/funcional/phpunit.xml +++ b/tests_super/funcional/phpunit.xml @@ -34,6 +34,8 @@ + @@ -64,7 +66,7 @@ - + @@ -74,6 +76,8 @@ + diff --git a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php new file mode 100644 index 000000000..02a20ced4 --- /dev/null +++ b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -0,0 +1,65 @@ +getTiposProcessos($dados['idMapeamento'], $dados['sinAtivo']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "INSERT INTO md_pen_map_tipo_processo (id, id_map_orgao, id_tipo_processo_origem, nome_tipo_processo, sin_ativo, id_unidade, dth_criacao) ". + "VALUES(?,?,?,?,?,?,?)", + array( + $tipoProcesso[0], + $tipoProcesso[1], + $tipoProcesso[2], + $tipoProcesso[3], + $tipoProcesso[4], + $tipoProcesso[5], + $tipoProcesso[6] + ) + ); + } + + return $tiposProcessos; + } + + public function deletar($dados = []): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + + foreach ($tiposProcessos as $tipoProcesso) { + $bancoOrgaoA->execute( + "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", + array($tipoProcesso[0]) + ); + } + + } + + public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + $tiposProcessos = array(); + + $tiposProcessos[] = [9997, $idMapeamento, 100000347, utf8_encode('Acompanhamento Legislativo: Câmara dos Deputados'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9998, $idMapeamento, 100000348, utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + $tiposProcessos[] = [9999, $idMapeamento, 100000425, utf8_encode('mauro teste'), $sinAtivo, 110000001, date('Y-m-d H:i:s')]; + + return $tiposProcessos; + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php new file mode 100644 index 000000000..f4695d727 --- /dev/null +++ b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -0,0 +1,91 @@ +consultar(); + if (!empty($penUnidade)) { + $this->atualizar(); + } else { + $this->cadastrar(); + } + } + + /** + * Consultar mapeamento de unidade + * + * @return array|null + */ + public function consultar() + { + return self::$bancoOrgaoA->query( + 'select id_unidade, id_unidade_rh from md_pen_unidade where id_unidade = ? and id_unidade_rh = ?', + array(110000001, self::$dados['id']) + ); + } + + /** + * Cadastrar mapeamento de unidade + * + * @return void + */ + public function cadastrar(): void + { + self::$bancoOrgaoA->execute( + "INSERT INTO md_pen_unidade (id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) ". + "VALUES(?, ?, ?, ?)", + array(110000001, self::$dados['id'], self::$dados['sigla'], self::$dados['nome']) + ); + } + + /** + * Atualizar mapeamento de unidade + * + * @return void + */ + public function atualizar(): void + { + self::$bancoOrgaoA->execute( + "UPDATE md_pen_unidade SET sigla_unidade_rh = ?, nome_unidade_rh = ? ". + "WHERE id_unidade = ? AND id_unidade_rh = ?", + array(self::$dados['sigla'], self::$dados['nome'], 110000001, self::$dados['id']) + ); + } + + /** + * Deletear mapeamento de unidade + * + * @return void + */ + public function deletar(): void + { + self::$bancoOrgaoA->execute( + "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", + array(110000001, self::$dados['id']) + ); + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php new file mode 100644 index 000000000..25aebcda3 --- /dev/null +++ b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -0,0 +1,43 @@ +gravar(); + + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute( + "insert into md_pen_orgao_externo ". + "(id,id_orgao_origem,str_orgao_origem,id_estrutura_origem,str_estrutura_origem,id_orgao_destino,str_orgao_destino,sin_ativo,id_unidade,dth_criacao) ". + "values (?,?,?,?,?,?,?,?,?,?) ", + array( + 999999, + $dados['idOrigem'], $dados['nomeOrigem'], $dados['idRepositorio'], $dados['repositorioEstruturas'], + $dados['id'], $dados['nome'], + 'S', 110000001, date('Y-m-d H:i:s') + ) + ); + + return 999999; + } + + public function deletar(int $id): void + { + $bancoOrgaoA = new DatabaseUtils(self::$contexto); + $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php new file mode 100644 index 000000000..d13d5d4fb --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaCadastroOrgaoExterno.php @@ -0,0 +1,257 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem, $destino) + { + $this->selectRepositorio($estrutura, 'Origem'); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + $this->selectUnidadeDestino($destino, 'Destino'); // Seleciona Orgão de Destino + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @param string $origemDestino + * @return string + */ + private function selectRepositorio($siglaRepositorio, $origemDestino) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas' . $origemDestino)); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas' . $origemDestino)->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidadeDestino($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade' . $origemDestino); + $this->unidadeInput->clear(); + $this->unidadeInput->value($nomeUnidade); + $this->test->keys(Keys::ENTER); + $this->test->waitUntil(function($testCase) use($origemDestino, $hierarquia) { + $bolExisteAlerta=null; + $nomeUnidade = $testCase->byId('txtUnidade' . $origemDestino)->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(); + } + + /** + * Seleciona botão novo da página + * + * @return void + */ + public function novoMapOrgao() + { + $this->test->byId("btnNovo")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function editarMapOrgao() + { + $this->test->byXPath("(//img[@title='Alterar Relacionamento'])[1]")->click(); + } + + /** + * Selecionar primeira checkbox de exclusão + * Seleciona botão excluir + * Seleciona botão de confirmação + * + * @return void + */ + public function selecionarExcluirMapOrgao() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + /** + * Selcionar botão salvar da página + * + * @return void + */ + public function salvar() + { + $this->test->byId("btnSalvar")->click(); + } + + public function abrirSelecaoDeArquivoParaImportacao() + { + $this->test->byXPath("(//img[@title='Importar CSV'])[1]")->click(); + sleep(2); + $fileChooser = $this->test->byId('importArquivoCsv'); + $this->test->waitUntil(function ($testCase) use ($fileChooser) { + $fileChooser + ->sendKeys('/opt/sei/web/modulos/mod-sei-pen/tests_super/funcional/assets/arquivos/tipos_processos.csv') + ->keys(Keys::CLEAR); + },PEN_WAIT_TIMEOUT); + $this->test->waitUntil(function($testCase) { + return true; + }); + } + + /** + * Buscar orgão de origem por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoOrigem($origem) + { + try { + $orgaoOrigem = $this->test->byXPath("//td[contains(.,'" . $origem . "')]")->text(); + return !empty($orgaoOrigem) && !is_null($orgaoOrigem) ? + $orgaoOrigem : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar orgão de destino por nome + * + * @param string $origem + * @return string|null + */ + public function buscarOrgaoDestino($destino) + { + try { + $orgaoDestino = $this->test->byXPath("//td[contains(.,'" . $destino . "')]")->text(); + return !empty($orgaoDestino) && !is_null($orgaoDestino) ? + $orgaoDestino : + null; + } catch (Exception $ex) { + return null; + } + } + + /** + * Buscar mensagem de alerta da página + * + * @return string + */ + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * Clicar no bot?o pesquisar + * + * @param string $textoPesquisa + * @return void + */ + public function selecionarPesquisa($textoPesquisa) + { + $this->test->byId('txtSiglaOrigem')->clear(); + $this->test->byId('txtSiglaOrigem')->value($textoPesquisa); + $this->test->byId("btnPesquisar")->click(); + } + + /** + * Buscar item de tabela por nome + * + * @param string $nome + * @return string|null + */ + public function buscarNome($nome) + { + try { + $nomeSelecionado = $this->test->byXPath("//td[contains(.,'" . $nome . "')]")->text(); + return !empty($nomeSelecionado) && !is_null($nomeSelecionado) ? + $nomeSelecionado : + null; + } catch (Exception $ex) { + return null; + } + } +} diff --git a/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php new file mode 100644 index 000000000..e9b4f2f31 --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaExportarTiposProcesso.php @@ -0,0 +1,89 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Exportação de Tipos de Processo')); + $this->test->byXPath("//a[@link='pen_map_orgaos_exportar_tipos_processos']")->click(); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + public function selecionarParaExportar() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem2'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem3'])[1]")->click(); + $this->test->byXPath("(//label[@for='chkInfraItem5'])[1]")->click(); + $this->test->byId("btnExportar")->click(); + } + + public function verificarExisteBotao(string $nomeBtn) + { + try { + return $this->test->byXPath("(//button[@id='".$nomeBtn."'])")->text(); + } catch (Exception $e) { + return null; + } + } + + public function verificarQuantidadeDeLinhasSelecionadas() + { + $this->test->waitUntil(function($testCase) { + $trs = $this->test->byId('tableExportar') + ->elements($this->test->using('css selector')->value('tr')); + $testCase->assertEquals(count($trs), 5); + return true; + }); + } + + public function btnExportar() + { + $this->test->byId("btnExportarModal")->click(); + sleep(5); + } + + /** + * Lispar campo de pesquisa + * Colocar texto para pesquisa + * + * @return void + */ + public function selecionarPesquisa() + { + $this->test->byId('txtNomeTipoProcessoPesquisa')->clear(); + $this->test->byId('txtNomeTipoProcessoPesquisa')->value('Ouvidoria'); + $this->test->byId("sbmPesquisar")->click(); + } + + /** + * Buscar se foi pesquisado + * + * @return void + */ + public function buscarPesquisa() + { + try { + $elementos = $this->test->byXPath("//td[contains(.,'Ouvidoria:')]")->text(); + return !empty($elementos) && !is_null($elementos); + } catch (Exception $e) { + return false; + } + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php new file mode 100644 index 000000000..f8c8aa451 --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaTipoProcessoReativar.php @@ -0,0 +1,33 @@ +test->byId("txtInfraPesquisarMenu")->value("Reativar Tipos de Processo"); + $this->test->byXPath("//a[@link='pen_map_tipo_processo_reativar']")->click(); + } + + public function reativarMapeamento() + { + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() + { + $this->test->byXPath("(//div[contains(@class, 'infraCheckboxDiv')])[1]")->click(); + $this->test->byXPath("(//div[contains(@class, 'infraCheckboxDiv')])[2]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } +} diff --git a/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php new file mode 100644 index 000000000..90fbb578d --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaTramiteMapeamentoOrgaoExterno.php @@ -0,0 +1,54 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Relacionamento entre Órgãos')); + + $this->test->byLinkText(utf8_encode('Relacionamento entre Órgãos'))->click(); + $this->test->byXPath("//a[@link='pen_map_orgaos_externos_listar']")->click(); + } + + public function reativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Inativo"); + $this->test->byXPath("//a[contains(@class, 'reativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function reativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnReativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function desativarMapeamento () { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel("Ativo"); + $this->test->byXPath("//a[contains(@class, 'desativar')]")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + public function desativarMapeamentoCheckbox() { + $this->test->byXPath("//div[contains(@class, 'infraCheckboxDiv')]")->click(); + $this->test->byId("btnDesativar")->click(); + $bolExisteAlerta=$this->alertTextAndClose(); + if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER); + } + + + public function selectEstado($estado) { + $this->test->select($this->test->byId('txtEstadoSelect'))->selectOptionByLabel($estado); + } +} diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php index 0d31d324f..580060e64 100755 --- a/tests_super/funcional/tests/CenarioBaseTestCase.php +++ b/tests_super/funcional/tests/CenarioBaseTestCase.php @@ -39,6 +39,11 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaCancelarDocumento = null; protected $paginaTramitarProcessoEmLote = null; protected $paginaMapeamentoUnidade = null; + protected $paginaMoverDocumento = null; + protected $paginaTramiteMapeamentoOrgaoExterno = null; + protected $paginaExportarTiposProcesso = null; + protected $paginaTipoProcessoReativar = null; + protected $paginaCadastroOrgaoExterno = null; public function setUpPage(): void { @@ -58,6 +63,10 @@ public function setUpPage(): void $this->paginaMoverDocumento = new PaginaMoverDocumento($this); $this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this); $this->paginaMapeamentoUnidade = new PaginaMapeamentoUnidade($this); + $this->paginaTramiteMapeamentoOrgaoExterno = new PaginaTramiteMapeamentoOrgaoExterno($this); + $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); + $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); + $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); $this->currentWindow()->maximize(); } @@ -194,6 +203,7 @@ protected function definirContextoTeste($nomeContexto) 'HIPOTESE_RESTRICAO_PADRAO' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_PADRAO'), 'ID_REP_ESTRUTURAS' => constant($nomeContexto . '_ID_REP_ESTRUTURAS'), 'ID_ESTRUTURA' => constant($nomeContexto . '_ID_ESTRUTURA'), + 'SIGLA_ESTRUTURA' => constant($nomeContexto . '_SIGLA_ESTRUTURA'), 'HIPOTESE_RESTRICAO_INATIVA' => constant($nomeContexto . '_HIPOTESE_RESTRICAO_INATIVA'), 'TIPO_PROCESSO_SIGILOSO' => constant($nomeContexto . '_TIPO_PROCESSO_SIGILOSO'), 'HIPOTESE_SIGILOSO' => constant($nomeContexto . '_HIPOTESE_SIGILOSO'), @@ -223,6 +233,7 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha) $this->url($url); PaginaLogin::executarAutenticacao($this, $login, $senha); PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade); + $this->url($url); } protected function selecionarUnidadeInterna($unidadeDestino) diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php new file mode 100644 index 000000000..3e4dcfa18 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -0,0 +1,150 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_desativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_desativacao_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Ativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->desativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi desativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + + $this->paginaTramiteMapeamentoOrgaoExterno->selectEstado("Inativo"); + $this->paginaTramiteMapeamentoOrgaoExterno->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Relacionamento entre Órgãos foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php new file mode 100644 index 000000000..bcf21d309 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -0,0 +1,72 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste para excluir de mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_excluir_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + sleep(5); + $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre órgãos foi excluído com sucesso.'), + $mensagem + ); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php new file mode 100644 index 000000000..4c237b093 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -0,0 +1,63 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + + $this->paginaExportarTiposProcesso->selecionarParaExportar(); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnExportarModal'), + 'Exportar' + ); + $this->assertEquals( + $this->paginaExportarTiposProcesso->verificarExisteBotao('btnFecharModal'), + 'Fechar' + ); + $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); + $this->paginaExportarTiposProcesso->btnExportar(); + } + + /** + * Teste para pesquisar tipos de processos + * + * @return void + */ + public function test_pesquisar_tipos_de_processos() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaExportarTiposProcesso->navegarExportarTiposProcessos(); + $this->paginaExportarTiposProcesso->selecionarPesquisa(); + sleep(1); + $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php new file mode 100644 index 000000000..ef5a761ef --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -0,0 +1,103 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->cadastrar([ + 'idMapeamento' => self::$penOrgaoExternoId, + 'sinAtivo' => 'N' + ]); + } + + /** + * Teste de reativação de um Relacionamento entre Órgãos + * + * @large + * + * @return void + */ + public function test_reativacao_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + $this->paginaTipoProcessoReativar->reativarMapeamento(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + /** + * Teste de desativação de um Relacionamento entre Órgãos via checkbox + * + * @large + * + * @return void + */ + public function test_reativar_checkbox_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); + $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); + $this->waitUntil(function ($testCase) { + $testCase->frame(null); + $menssagemValidacao = utf8_encode('Mapeamento de Tipo de Processo foi reativado com sucesso.'); + $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); + return true; + }, PEN_WAIT_TIMEOUT); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); + $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDownAfterClass(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php new file mode 100644 index 000000000..c1c1ee282 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -0,0 +1,145 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'] + ]); + $penMapUnidadesFixture->cadastrar(); + } + + /** + * Teste de cadastro de novo mapeamento entre ogrãos + * + * @return void + */ + public function test_cadastrar_novo_mapeamento_orgao_externo() + { + // Configuração do dados para teste do cenário + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos cadastrado com sucesso.'), + $mensagem + ); + } + + /** + * Teste para cadastro de mapeamento de orgão exteno já existente + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + $this->paginaCadastroOrgaoExterno->novoMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Cadastro de relacionamento entre órgãos já existente.'), + $mensagem + ); + } + + /** + * Teste para editar mapeamento de orgão exteno + * + * @group MapeamentoOrgaoExterno + * + * @return void + */ + public function test_editar_mapeamento_orgao_externo() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + $this->paginaCadastroOrgaoExterno->editarMapOrgao(); + $this->paginaCadastroOrgaoExterno->setarParametros( + self::$destinatario['REP_ESTRUTURAS'], + self::$destinatario['NOME_UNIDADE'], + self::$remetente['NOME_UNIDADE'] + ); + $this->paginaCadastroOrgaoExterno->salvar(); + + $orgaoOrigem = $this->paginaCadastroOrgaoExterno->buscarOrgaoOrigem(self::$destinatario['NOME_UNIDADE']); + $orgaoDestino = $this->paginaCadastroOrgaoExterno->buscarOrgaoDestino(self::$remetente['NOME_UNIDADE']); + + $this->assertNotNull($orgaoOrigem); + $this->assertNotNull($orgaoDestino); + sleep(1); + $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Relacionamento entre Órgãos atualizado com sucesso.'), + $mensagem + ); + } + + public static function tearDownAfterClass(): void + { + parent::tearDownAfterClass(); + } +} diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php new file mode 100644 index 000000000..8b5be9979 --- /dev/null +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -0,0 +1,72 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + self::$penOrgaoExternoId = $penOrgaoExternoFixture->cadastrar([ + 'idRepositorio' => self::$remetente['ID_REP_ESTRUTURAS'], + 'repositorioEstruturas' => self::$remetente['REP_ESTRUTURAS'], + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'], + 'idOrigem' => self::$destinatario['ID_ESTRUTURA'], + 'nomeOrigem' => self::$destinatario['NOME_UNIDADE'] + ]); + } + + /** + * Teste para pesquisar mapeamento entre orgãos + * + * @Depends test_desativacao_mapeamento_orgao_externo + * + * @return void + */ + public function test_pesquisar_mapeamento_orgao_externo() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastroOrgaoExterno->navegarCadastroOrgaoExterno(); + + // Buscar pesquisa vazia + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE'] . 'B'); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); + $this->assertNull($nomeRepositorioCadastrado); + + // Buscar pesquisa com sucesso + $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']); + $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); + $this->assertNotNull($nomeRepositorioCadastrado); + } + + function tearDown(): void + { + $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); + $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + + parent::tearDown(); + } +} From ee2f31ce04636881252c3d47f70717edd374734b Mon Sep 17 00:00:00 2001 From: Mauro Costa Date: Thu, 28 Dec 2023 11:28:22 -0300 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20corre=C3=A7=C3=B5es=20para=20cria?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20tabelas=20oracle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/dto/PenMapTipoProcedimentoDTO.php | 2 +- src/scripts/sei_atualizar_versao_modulo_pen.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dto/PenMapTipoProcedimentoDTO.php b/src/dto/PenMapTipoProcedimentoDTO.php index 41007676e..d0ba4b68d 100644 --- a/src/dto/PenMapTipoProcedimentoDTO.php +++ b/src/dto/PenMapTipoProcedimentoDTO.php @@ -12,7 +12,7 @@ public function getStrNomeTabela() { } public function getStrNomeSequenciaNativa() { - return 'md_pen_seq_map_tipo_procedimento'; + return 'md_pen_seq_map_tp_procedimento'; } public function montar() { diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index c56d3ae75..6f2980002 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -2573,7 +2573,7 @@ protected function instalarV3050() ), 'pk' => array('cols' => array('id')), 'fks' => array( - 'unidade' => array('nome' => 'fk_md_pen_mapeamento_orgao_externo', 'cols' => array('id_unidade', 'id_unidade')), + 'unidade' => array('nome' => 'fk_md_pen_orgao_externo', 'cols' => array('id_unidade', 'id_unidade')), ) )); @@ -2605,7 +2605,7 @@ protected function instalarV3050() ), 'pk' => array('cols' => array('id')), 'fks' => array( - 'unidade' => array('nome' => 'fk_md_pen_mapeamento_tipo_processo', 'cols' => array('id_unidade', 'id_unidade')), + 'unidade' => array('nome' => 'fk_md_pen_map_tipo_processo', 'cols' => array('id_unidade', 'id_unidade')), 'md_pen_orgao_externo' => array('nome' => 'fk_md_pen_mapeamento_orgao', 'cols' => array('id', 'id_map_orgao')), ) )); @@ -2618,7 +2618,7 @@ protected function instalarV3050() $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_orgao_externo'); $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; - BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_map_tipo_procedimento', $numMaxId + 1); + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_map_tp_procedimento', $numMaxId + 1); $objInfraSequenciaDTO->setStrNome('md_pen_map_tipo_processo'); $objInfraSequenciaDTO->retStrNome(); $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO);