';
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[] = '
E xportar';
+ $arrComandosModal[] = '
F echar';
+ $arrComandosModalFinal = array();
+ $arrComandosModalFinal[] = '
E xportar';
+ $arrComandosModalFinal[] = '
F echar';
+
+ $strResultadoExportar = '';
+
+ $strResultadoExportar .= '
' . "\n";
+ $strResultadoExportar .= ' ';
+
+ $strResultadoExportar .= '';
+ $strResultadoExportar .= 'ID ' . "\n";
+ $strResultadoExportar .= 'Tipo de Processo ' . "\n";
+ $strResultadoExportar .= ' ' . "\n";
+ $strResultadoExportar .= '
';
+
+ $arrComandos = array();
+
+ $arrComandos[] = '
P esquisar';
+ $arrComandos[] = '
E xportar';
+
+ $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 .= '' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . ' ';
+ $strResultado .= '';
+ $strResultado .= '' . PaginaSEI::getInstance()->getThCheck() . ' ' . "\n";
+
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'ID', 'IdTipoProcedimento', $arrObjTipoProcedimentoDTO) . ' ' . "\n";
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'Nome', 'Nome', $arrObjTipoProcedimentoDTO) . ' ' . "\n";
+ $strResultado .= ' ' . "\n";
+ $strCssTr = '';
+ for ($i = 0; $i < $numRegistros; $i++) {
+ $idTipoProcedimento = $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento();
+
+ $strCssTr = ($strCssTr == '') ? ' ' : ' ';
+
+ $strResultado .= $strCssTr;
+
+ $strResultado .= '' . PaginaSEI::getInstance()->getTrCheck($i, $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento(), $arrObjTipoProcedimentoDTO[$i]->getStrNome()) . ' ';
+
+ $strResultado .= '' . $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento() . ' ';
+ $strResultado .= '' . PaginaSEI::tratarHTML($arrObjTipoProcedimentoDTO[$i]->getStrNome()) . ' ';
+ $strResultado .= ' ' . "\n";
+ }
+ $strResultado .= '
';
+ }
+ $arrComandos[] = '
F echar';
+
+ $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;}
+
+
+PaginaSEI::getInstance()->fecharStyle();
+PaginaSEI::getInstance()->montarJavaScript();
+?>
+
+
+PaginaSEI::getInstance()->fecharHead();
+PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"');
+?>
+
+
+
+
+PaginaSEI::getInstance()->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[] = 'S alvar ';
+ $arrComandos[] = 'C ancelar ';
+ } else {
+ $disabilitarVisualizar = " disabled='disabled' ";
+ $arrComandos[] = 'V oltar ';
+ }
+
+ //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();"');
+?>
+
+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 = 'P esquisar ';
+ $btnTipoProcessoPadrao = 'A tribuir Tipo de Processo Padrão ';
+ $btnNovo = 'N ovo ';
+ if (empty($_POST['txtEstado']) || is_null($_POST['txtEstado']) || $_POST['txtEstado'] == 'S') {
+ $btnDesativar = 'D esativar ';
+ $btnDesativarAdicionado = 'S';
+ }
+
+ if (!empty($_POST['txtEstado']) && $_POST['txtEstado'] == 'N') {
+ $btnReativar = 'R eativar ';
+ $btnReativarAdicionado = 'S';
+ }
+
+ $btnExcluir = 'E xcluir ';
+ $btnImprimir = 'I mprimir ';
+ $btnFechar = 'F echar ';
+ $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 .= '' . $objPagina->gerarCaptionTabela(PEN_PAGINA_TITULO, $numRegistros) . ' ';
+
+ $strResultado .= '';
+ $strResultado .= '' . $objPagina->getThCheck() . ' ' . "\n";
+ $strResultado .= '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'ID Origem ', 'IdOrgaoOrigem', $respObjPenOrgaoExternoDTO) . ' ' . "\n";
+ $strResultado .= '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'Órgão Origem', 'OrgaoOrigem', $respObjPenOrgaoExternoDTO) . ' ' . "\n";
+ $strResultado .= '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'ID Destino ', 'IdOrgaoDestino', $respObjPenOrgaoExternoDTO) . ' ' . "\n";
+ $strResultado .= '' . $objPagina->getThOrdenacao($objPenOrgaoExternoDTO, 'Órgão Destino', 'OrgaoDestino', $respObjPenOrgaoExternoDTO) . ' ' . "\n";
+ $strResultado .= 'Ações ' . "\n";
+ $strResultado .= ' ' . "\n";
+ $strCssTr = '';
+
+ $index = 0;
+ foreach ($respObjPenOrgaoExternoDTO as $objPenOrgaoExternoDTO) {
+ $strCssTr = ($strCssTr == 'infraTrClara') ? 'infraTrEscura' : 'infraTrClara';
+
+ $strResultado .= '';
+ $strResultado .= '' . $objPagina->getTrCheck($index, $objPenOrgaoExternoDTO->getDblId() . ';' . $objPenOrgaoExternoDTO->getStrAtivo(), '') . ' ';
+ $strResultado .= '' . $objPenOrgaoExternoDTO->getNumIdOrgaoOrigem() . ' ';
+ $strResultado .= '' . $objPenOrgaoExternoDTO->getStrOrgaoOrigem() . ' ';
+ $strResultado .= '' . $objPenOrgaoExternoDTO->getNumIdOrgaoDestino() . ' ';
+ $strResultado .= '' . $objPenOrgaoExternoDTO->getStrOrgaoDestino() . ' ';
+ $strResultado .= '';
+
+ $strResultado .= ' ';
+
+ if ($objSessao->verificarPermissao('pen_map_orgaos_externos_atualizar')) {
+ $strResultado .= ' ';
+ }
+
+ $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() . ')">'
+ . ' '
+ . ' ';
+ } else {
+ $strResultado .= ' ';
+ }
+
+ 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 .= ' ';
+ }
+
+ 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 .= ' ';
+ }
+
+ if ($objSessao->verificarPermissao('pen_map_orgaos_externos_excluir') && $arrPenOrgaoExternoDTO == null) {
+ $strResultado .= ''
+ . ' '
+ . ' ';
+ }
+ $strResultado .= ' ';
+ $strResultado .= ' ';
+
+ $index++;
+ }
+ $strResultado .= '
';
+
+ $strResultadoImportar = '';
+
+ $strResultadoImportar .= '' . "\n";
+ $strResultadoImportar .= ' ';
+
+ $strResultadoImportar .= '';
+ $strResultadoImportar .= 'ID ' . "\n";
+ $strResultadoImportar .= 'Tipo de Processo ' . "\n";
+ $strResultadoImportar .= ' ' . "\n";
+ $strResultadoImportar .= '
';
+ }
+
+ $btnImportar = 'I mportar ';
+ $btnFecharModal = 'F echar ';
+ $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();"');
+?>
+
+
+
+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[] = 'P esquisar ';
+
+ $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[] = 'assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&tipo_pesquisa=1&id_object=objInfraTableToTable&idMapOrgao=' . $idOrgaoExterno)
+ . "'," . $idOrgaoExterno . ')" '
+ . 'class="infraButton">I mportar ';
+
+ $arrComandosFinal[] = 'assinarLink('controlador.php?acao=pen_map_orgaos_externos_mapeamento&tipo_pesquisa=1&id_object=objInfraTableToTable&idMapOrgao=' . $idOrgaoExterno)
+ . "'," . $idOrgaoExterno . ')" '
+ . 'class="infraButton">I mportar ';
+
+ if ($numRegistros > 0) {
+
+ $arrComandos[] = 'S alvar ';
+ $arrComandos[] = 'Desativar ';
+ $arrComandos[] = 'E xcluir ';
+
+ $arrComandosFinal[] = 'S alvar ';
+ $arrComandosFinal[] = 'Desativar ';
+ $arrComandosFinal[] = 'E xcluir ';
+
+ $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 .= '';
+ }
+
+ $strResultadoImportar = '';
+
+ $strResultadoImportar .= '' . "\n";
+ $strResultadoImportar .= ' ';
+
+ $strResultadoImportar .= '';
+ $strResultadoImportar .= 'ID ' . "\n";
+ $strResultadoImportar .= 'Tipo de Processo ' . "\n";
+ $strResultadoImportar .= ' ' . "\n";
+ $strResultadoImportar .= '
';
+
+ $btnImportar = 'I mportar ';
+ $btnFecharModal = 'F echar ';
+ $btnImportarFinal = 'I mportar ';
+ $btnFecharModalFinal = 'F echar ';
+ $arrComandosModal = array($btnImportar, $btnFecharModal);
+ $arrComandosModalFinal = array($btnImportarFinal, $btnFecharModalFinal);
+
+ $arrComandos[] = 'F echar ';
+} 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'];
+?>
+
+
+
+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 @@
+
+try {
+
+ require_once DIR_SEI_WEB . '/SEI.php';
+
+ session_start();
+
+ //////////////////////////////////////////////////////////////////////////////
+ //InfraDebug::getInstance()->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[] = 'S alvar ';
+ $arrComandos[] = 'F echar ';
+
+ $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;}
+
+PaginaSEI::getInstance()->fecharStyle();
+PaginaSEI::getInstance()->montarJavaScript();
+?>
+
+
+PaginaSEI::getInstance()->fecharHead();
+PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"');
+$acao_origem = $_GET['acao_origem'];
+?>
+
+
+PaginaSEI::getInstance()->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[] = 'P esquisar ';
+
+ $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[] = 'Reativar ';
+
+ $arrComandosFinal[] = 'Reativar ';
+
+ $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 .= '' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . ' ';
+ $strResultado .= '';
+
+
+ $strResultado .= '' . $objPagina->getThCheck() . ' ' . "\n";
+
+ $strResultado .= 'Órgao Origem: ' . "\n";
+ $strResultado .= 'Órgao Destino: ' . "\n";
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'ID Tipo de Processo Origem', 'Id', $arrObjMapeamentoAssuntoDTO) . ' ' . "\n";
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objMapeamentoTipoProcedimentoDTO, 'Tipo de Processo Origem', 'NomeTipoProcesso', $arrObjMapeamentoAssuntoDTO) . ' ' . "\n";
+ $strResultado .= 'Tipo de Processo Destino ' . "\n";
+ $strResultado .= 'Ações ' . "\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 .= '' . $objPagina->getTrCheck($i, $arrObjMapeamentoAssuntoDTO[$i]->getDblId() . ';' . $arrObjMapeamentoAssuntoDTO[$i]->getStrAtivo(), '') . ' ';
+ $strResultado .= ''. $objPenOrgaoExternoDTO->getStrOrgaoOrigem() . '';
+ $strResultado .= ' '. $objPenOrgaoExternoDTO->getStrOrgaoDestino() . ' ';
+ $strResultado .= '' . $numIdAssuntoOrigem . ' ';
+ $strResultado .= '' . $arrObjMapeamentoAssuntoDTO[$i]->getStrNomeTipoProcesso() . ' ';
+
+ $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 .= '' . PaginaSEI::tratarHTML($descricaoTipoProcedimento) . ' ';
+
+ $strResultado .= '';
+
+ $strLinkReativar = $objSessao->assinarLink('controlador.php?acao=pen_map_tipo_processo_reativar&acao_origem=' . $acaoOrigem . '&id=' . $arrObjMapeamentoAssuntoDTO[$i]->getDblId());
+ $strId = $arrObjMapeamentoAssuntoDTO[$i]->getDblId();
+ $strResultado .= ' ';
+
+ $strResultado .= ' ';
+ $strResultado .= ' ' . "\n";
+ }
+
+ $strResultado .= '
';
+ }
+
+ $arrComandos[] = 'F echar ';
+ $arrComandosFinal[] = 'F echar ';
+} 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'];
+?>
+
+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') {
?>
= PaginaSEI::tratarHTML($parametro->getStrDescricao()); ?>: ';
- echo '
';
- echo InfraINT::montarSelectArrInfraDTO('null', ' ', $parametro->getStrValor(), $arrObjTipoProcedimentoDTO, 'IdTipoProcedimento', 'Nome');
- 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[] = '
E xportar';
+ $arrComandosModal[] = '
F echar';
+ $arrComandosModalFinal = array();
+ $arrComandosModalFinal[] = '
E xportar';
+ $arrComandosModalFinal[] = '
F echar';
+
+ $strResultadoExportar = '';
+
+ $strResultadoExportar .= '
' . "\n";
+ $strResultadoExportar .= ' ';
+
+ $strResultadoExportar .= '';
+ $strResultadoExportar .= 'ID ' . "\n";
+ $strResultadoExportar .= 'Tipo de Processo ' . "\n";
+ $strResultadoExportar .= ' ' . "\n";
+ $strResultadoExportar .= '
';
+
+ $arrComandos = array();
+
+ $arrComandos[] = '
P esquisar';
+ $arrComandos[] = '
E xportar';
+
+ $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 .= '' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . ' ';
+ $strResultado .= '';
+ $strResultado .= '' . PaginaSEI::getInstance()->getThCheck() . ' ' . "\n";
+
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'ID', 'IdTipoProcedimento', $arrObjTipoProcedimentoDTO) . ' ' . "\n";
+ $strResultado .= '' . PaginaSEI::getInstance()->getThOrdenacao($objTipoProcedimentoDTO, 'Nome', 'Nome', $arrObjTipoProcedimentoDTO) . ' ' . "\n";
+ $strResultado .= ' ' . "\n";
+ $strCssTr = '';
+ for ($i = 0; $i < $numRegistros; $i++) {
+ $idTipoProcedimento = $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento();
+
+ $strCssTr = ($strCssTr == '') ? ' ' : ' ';
+
+ $strResultado .= $strCssTr;
+
+ $strResultado .= '' . PaginaSEI::getInstance()->getTrCheck($i, $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento(), $arrObjTipoProcedimentoDTO[$i]->getStrNome()) . ' ';
+
+ $strResultado .= '' . $arrObjTipoProcedimentoDTO[$i]->getNumIdTipoProcedimento() . ' ';
+ $strResultado .= '' . PaginaSEI::tratarHTML($arrObjTipoProcedimentoDTO[$i]->getStrNome()) . ' ';
+ $strResultado .= ' ' . "\n";
+ }
+ $strResultado .= '
';
+ }
+ $arrComandos[] = '
F echar';
+
+ $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;}
+
+
+PaginaSEI::getInstance()->fecharStyle();
+PaginaSEI::getInstance()->montarJavaScript();
+?>
+
+
+PaginaSEI::getInstance()->fecharHead();
+PaginaSEI::getInstance()->abrirBody($strTitulo, 'onload="inicializar();"');
+?>
+
+
+
+
+PaginaSEI::getInstance()->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);