From 005948219da50708033c1c09fa84fcd0fe043fab Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Fri, 15 Mar 2024 15:46:05 -0300 Subject: [PATCH] feat: tramite de bloco externo e recursos (#424) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Criação do bloco externo e testes automatizados Closes #245 #246 #247 #248 #249 #289 #290 #291 #292 #306 #433 --------- Co-authored-by: Marcelo Linhares Castro --- Makefile | 5 +- composer.json | 5 + src/PENIntegracao.php | 37 +- src/bd/TramitaEmBlocoProtocoloBD.php | 14 + src/bd/TramiteEmBlocoBD.php | 13 + src/dto/TramitaEmBlocoProtocoloDTO.php | 57 ++ src/dto/TramiteEmBlocoDTO.php | 84 +++ src/imagens/em_processamento.png | Bin 0 -> 11135 bytes src/imagens/falhou.png | Bin 0 -> 14762 bytes src/imagens/nao_iniciado.png | Bin 0 -> 14835 bytes src/imagens/pen_processo_bloco.svg | 25 + src/pen_expedir_lote.php | 42 +- src/pen_procedimento_cancelar_expedir.php | 33 +- src/pen_tramita_em_bloco_protocolo_listar.php | 428 +++++++++++++++ src/pen_tramite_bloco_listar.php | 510 ++++++++++++++++++ src/pen_tramite_em_bloco_cadastrar.php | 171 ++++++ ...en_tramite_processo_em_bloco_cadastrar.php | 225 ++++++++ src/rn/ExpedirProcedimentoRN.php | 4 +- src/rn/PenLoteProcedimentoRN.php | 15 + src/rn/ReceberProcedimentoRN.php | 14 + src/rn/ReceberReciboTramiteRN.php | 69 ++- src/rn/TramitaEmBlocoProtocoloRN.php | 342 ++++++++++++ src/rn/TramiteEmBlocoRN.php | 360 +++++++++++++ .../sei_atualizar_versao_modulo_pen.php | 72 ++- .../sip_atualizar_versao_modulo_pen.php | 111 +++- .../PaginaCadastrarProcessoEmBloco.php | 238 ++++++++ .../src/paginas/PaginaTramiteEmBloco.php | 80 +++ .../funcional/tests/CenarioBaseTestCase.php | 11 +- .../tests/TramiteBlocoExternoCadastroTest.php | 76 +++ ...coExternoProcessoJaIncluidoEmBlocoTest.php | 144 +++++ .../tests/TramiteBlocoExternoTest.php | 113 ++++ ...amiteProcessoEmLoteComCancelamentoTest.php | 107 ---- .../tests/TramiteProcessoEmLoteTest.php | 102 ---- tests_sei4/funcional/assets/cron.d/sei | 0 tests_sei4/funcional/assets/cron.d/sip | 0 tests_sei4/funcional/bootstrap.php | 12 +- tests_sei4/funcional/composer.json | 9 +- tests_sei4/funcional/docker-compose.yml | 21 +- tests_sei4/funcional/env_mysql | 4 +- tests_sei4/funcional/env_oracle | 4 +- tests_sei4/funcional/env_sqlserver | 4 +- .../src/fixtures/AnexoProcessoFixture.php | 49 ++ .../funcional/src/fixtures/Anexofixture.php | 74 +++ .../src/fixtures/AtividadeFixture.php | 42 ++ .../src/fixtures/BlocoDeTramiteFixture.php | 43 ++ .../BlocoDeTramiteProtocoloFixture.php | 31 ++ .../funcional/src/fixtures/ContatoFixture.php | 44 ++ .../funcional/src/fixtures/FixtureBase.php | 78 +++ .../ImportacaoTiposProcessoFixture.php | 93 ++-- .../src/fixtures/PenMapUnidadesFixture.php | 101 +--- .../src/fixtures/PenOrgaoExternoFixture.php | 70 ++- .../src/fixtures/RelBlocoProtocoloFixture.php | 30 ++ .../src/fixtures/RelBlocoUnidadeFixture.php | 38 ++ .../PaginaCadastrarProcessoEmBloco.php | 230 ++++++++ .../src/paginas/PaginaTramiteEmBloco.php | 78 +++ .../funcional/tests/CenarioBaseTestCase.php | 24 +- ...mentoTipoProcessoDesativarReativarTest.php | 51 +- .../MapeamentoTipoProcessoExcluirTest.php | 36 +- .../MapeamentoTipoProcessoExportarTest.php | 6 +- .../MapeamentoTipoProcessoReativarTest.php | 79 ++- ...ocessoRelacionamentoOrgaosCadastroTest.php | 15 +- ...cionamentoOrgaosListagemImportacaoTest.php | 36 +- .../tests/TramiteBlocoExternoCadastroTest.php | 81 +++ .../TramiteBlocoExternoLimiteAnexoTest.php | 173 ++++++ .../tests/TramiteBlocoExternoLimiteTest.php | 166 ++++++ ...coExternoProcessoJaIncluidoEmBlocoTest.php | 158 ++++++ .../tests/TramiteBlocoExternoTest.php | 102 ++++ ...amiteProcessoEmLoteComCancelamentoTest.php | 107 ---- .../tests/TramiteProcessoEmLoteTest.php | 102 ---- tests_super/funcional/bootstrap.php | 10 + tests_super/funcional/composer.json | 9 +- tests_super/funcional/docker-compose.yml | 27 +- tests_super/funcional/env_mysql | 4 +- tests_super/funcional/env_oracle | 4 +- tests_super/funcional/env_sqlserver | 4 +- .../src/fixtures/AnexoProcessoFixture.php | 49 ++ .../funcional/src/fixtures/Anexofixture.php | 74 +++ .../src/fixtures/AtividadeFixture.php | 42 ++ .../src/fixtures/BlocoDeTramiteFixture.php | 43 ++ .../BlocoDeTramiteProtocoloFixture.php | 31 ++ .../funcional/src/fixtures/ContatoFixture.php | 44 ++ .../funcional/src/fixtures/FixtureBase.php | 78 +++ .../ImportacaoTiposProcessoFixture.php | 93 ++-- .../src/fixtures/ParticipanteFixture.php | 37 ++ .../src/fixtures/PenMapUnidadesFixture.php | 101 +--- .../src/fixtures/PenOrgaoExternoFixture.php | 70 ++- .../src/fixtures/RelBlocoProtocoloFixture.php | 30 ++ .../src/fixtures/RelBlocoUnidadeFixture.php | 38 ++ .../fixtures/RelProtocoloProtocoloFixture.php | 28 + .../src/fixtures/SecaoDocumentoFixture.php | 182 +++++++ .../PaginaCadastrarProcessoEmBloco.php | 230 ++++++++ .../src/paginas/PaginaTramiteEmBloco.php | 78 +++ .../funcional/tests/CenarioBaseTestCase.php | 32 +- ...mentoTipoProcessoDesativarReativarTest.php | 47 +- .../MapeamentoTipoProcessoExcluirTest.php | 33 +- .../MapeamentoTipoProcessoExportarTest.php | 6 +- .../MapeamentoTipoProcessoReativarTest.php | 77 ++- ...ocessoRelacionamentoOrgaosCadastroTest.php | 15 +- ...cionamentoOrgaosListagemImportacaoTest.php | 36 +- .../tests/TramiteBlocoExternoCadastroTest.php | 74 +++ .../TramiteBlocoExternoLimiteAnexoTest.php | 179 ++++++ .../tests/TramiteBlocoExternoLimiteTest.php | 172 ++++++ ...coExternoProcessoJaIncluidoEmBlocoTest.php | 158 ++++++ .../tests/TramiteBlocoExternoTest.php | 102 ++++ ...amiteProcessoEmLoteComCancelamentoTest.php | 107 ---- .../tests/TramiteProcessoEmLoteTest.php | 102 ---- 106 files changed, 7014 insertions(+), 1130 deletions(-) create mode 100644 src/bd/TramitaEmBlocoProtocoloBD.php create mode 100644 src/bd/TramiteEmBlocoBD.php create mode 100644 src/dto/TramitaEmBlocoProtocoloDTO.php create mode 100644 src/dto/TramiteEmBlocoDTO.php create mode 100644 src/imagens/em_processamento.png create mode 100644 src/imagens/falhou.png create mode 100644 src/imagens/nao_iniciado.png create mode 100644 src/imagens/pen_processo_bloco.svg create mode 100644 src/pen_tramita_em_bloco_protocolo_listar.php create mode 100644 src/pen_tramite_bloco_listar.php create mode 100644 src/pen_tramite_em_bloco_cadastrar.php create mode 100644 src/pen_tramite_processo_em_bloco_cadastrar.php create mode 100644 src/rn/TramitaEmBlocoProtocoloRN.php create mode 100644 src/rn/TramiteEmBlocoRN.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php create mode 100644 tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php create mode 100644 tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php create mode 100644 tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php create mode 100644 tests_sei3/funcional/tests/TramiteBlocoExternoTest.php delete mode 100755 tests_sei3/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php delete mode 100755 tests_sei3/funcional/tests/TramiteProcessoEmLoteTest.php mode change 100755 => 100644 tests_sei4/funcional/assets/cron.d/sei mode change 100755 => 100644 tests_sei4/funcional/assets/cron.d/sip create mode 100644 tests_sei4/funcional/src/fixtures/AnexoProcessoFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/Anexofixture.php create mode 100644 tests_sei4/funcional/src/fixtures/AtividadeFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/ContatoFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/FixtureBase.php create mode 100644 tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php create mode 100644 tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php create mode 100644 tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php create mode 100644 tests_sei4/funcional/tests/TramiteBlocoExternoTest.php delete mode 100755 tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php delete mode 100755 tests_sei4/funcional/tests/TramiteProcessoEmLoteTest.php create mode 100644 tests_super/funcional/src/fixtures/AnexoProcessoFixture.php create mode 100644 tests_super/funcional/src/fixtures/Anexofixture.php create mode 100644 tests_super/funcional/src/fixtures/AtividadeFixture.php create mode 100644 tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php create mode 100644 tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php create mode 100644 tests_super/funcional/src/fixtures/ContatoFixture.php create mode 100644 tests_super/funcional/src/fixtures/FixtureBase.php create mode 100644 tests_super/funcional/src/fixtures/ParticipanteFixture.php create mode 100644 tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php create mode 100644 tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php create mode 100644 tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php create mode 100644 tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php create mode 100644 tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php create mode 100644 tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoTest.php delete mode 100755 tests_super/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php delete mode 100755 tests_super/funcional/tests/TramiteProcessoEmLoteTest.php diff --git a/Makefile b/Makefile index a5552fed0..3f1ded518 100755 --- a/Makefile +++ b/Makefile @@ -173,7 +173,7 @@ down: .env # make teste=TramiteProcessoComDevolucaoTest test-functional -test-functional: .env $(FILE_VENDOR_FUNCIONAL) up +test-functional: .env $(FILE_VENDOR_FUNCIONAL) up vendor $(CMD_COMPOSE_FUNC) run --rm php-test-functional /tests/vendor/bin/phpunit -c /tests/phpunit.xml /tests/tests/$(addsuffix .php,$(teste)) ; @@ -238,4 +238,5 @@ tramitar-pendencias-silent: stop-test-container: docker stop $$(docker ps -a -q --filter="name=php-test") - +vendor: composer.json + $(CMD_COMPOSE_FUNC) run -w /tests php-test-functional bash -c './composer.phar install' diff --git a/composer.json b/composer.json index 6bf33bc8f..dd34e0a4b 100755 --- a/composer.json +++ b/composer.json @@ -5,6 +5,11 @@ "php": "7.3.12" } }, + "autoload-dev": { + "psr-4": { + "Tests\\": "sei/" + } + }, "require-dev": { "php": "7.3.12", "phpunit/phpunit": "*", diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php index 11fdf87c8..4099f88ca 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -1,7 +1,7 @@ setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objPenUnidadeRN = new PenUnidadeRN(); - //Apresenta o botão de expedir processo if ($numRegistros > 0 && $objPenUnidadeRN->contar($objPenUnidadeDTO) != 0) { $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); - $strAcoesProcedimento .= ''; - $strAcoesProcedimento .= 'getDiretorioImagens()) . '" class="infraCorBarraSistema" alt="Envio Externo de Processo em Lote" title="Envio Externo de Processo em Lote" />'; + $strAcoesProcedimento .= ''; + $strAcoesProcedimento .= 'getDiretorioImagens()) . '" class="infraCorBarraSistema" alt="Incluir Processos no Bloco de Trâmite" title="Incluir Processos no Bloco de Trâmite" />'; } } @@ -158,6 +157,11 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) $strAcoesProcedimento .= ''; } + //Apresenta o botão de incluir processo no bloco de trâmite + $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); + $strAcoesProcedimento .= ' getDiretorioImagens()) .'" title="Incluir Processo no Bloco de Trâmite" alt="Incluir Processo no Bloco de Trâmite"/>'; + + return array($strAcoesProcedimento); } @@ -643,6 +647,28 @@ public function processarControlador($strAcao) require_once dirname(__FILE__) . '/pen_procedimento_expedir.php'; break; + case 'pen_tramite_bloco_listar': + case 'md_pen_tramita_em_bloco': + case 'md_pen_tramita_em_bloco_excluir': + case 'pen_tramite_em_bloco_cancelar': + require_once dirname(__FILE__) . '/pen_tramite_bloco_listar.php'; + break; + + case 'pen_tramite_em_bloco_cadastrar': + case 'pen_tramite_em_bloco_alterar': + require_once dirname(__FILE__) . '/pen_tramite_em_bloco_cadastrar.php'; + break; + + case 'pen_tramita_em_bloco_protocolo_excluir': + case 'pen_tramita_em_bloco_protocolo_listar': + require_once dirname(__FILE__) . '/pen_tramita_em_bloco_protocolo_listar.php'; + break; + + case 'pen_incluir_processo_em_bloco_tramite': + case 'pen_tramita_em_bloco_adicionar': + require_once dirname(__FILE__) . '/pen_tramite_processo_em_bloco_cadastrar.php'; + break; + case 'pen_unidade_sel_expedir_procedimento': require_once dirname(__FILE__) . '/pen_unidade_sel_expedir_procedimento.php'; break; @@ -1031,5 +1057,4 @@ public function processarPendencias() ProcessarPendenciasRN::getInstance()->processarPendencias(); } } - -class ModuloIncompativelException extends InfraException { } +class ModuloIncompativelException extends InfraException { } \ No newline at end of file diff --git a/src/bd/TramitaEmBlocoProtocoloBD.php b/src/bd/TramitaEmBlocoProtocoloBD.php new file mode 100644 index 000000000..8095e9e58 --- /dev/null +++ b/src/bd/TramitaEmBlocoProtocoloBD.php @@ -0,0 +1,14 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Id', 'id'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'IdProtocolo', 'id_protocolo'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTramitaEmBloco', 'id_tramita_em_bloco'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Sequencia', 'sequencia'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'IdxRelBlocoProtocolo', 'idx_rel_bloco_protocolo'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_DBL, 'IdProtocoloProtocolo', 'p1.id_protocolo', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'ProtocoloFormatadoProtocolo', 'p1.protocolo', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaProtocoloProtocolo', 'p1.sta_protocolo', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaNivelAcessoGlobalProtocolo', 'p1.sta_nivel_acesso_global', 'protocolo p1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUnidadeBloco', 'tb1.id_unidade', 'md_pen_tramita_em_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'tb1.id_usuario', 'md_pen_tramita_em_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaTipoBloco', 'sta_tipo', 'md_pen_tramita_em_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoBloco', 'sta_estado', 'md_pen_tramita_em_bloco tb1'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdProcedimento', 'pe.id_procedimento', 'md_pen_processo_eletronico pe'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NumeroRegistro', 'pe.numero_registro', 'md_pen_processo_eletronico pe'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdTramite', 'pt.id_tramite', 'md_pen_tramite pt'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoProtocolo', 'p1.sta_estado', 'protocolo p1'); + + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'TramiteDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'AtividadeDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'ProtocoloDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'PenLoteProcedimentoDTO'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'PalavrasPesquisa'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'SinAberto'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM,'StaIdTarefa'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'SinObteveRecusa'); + + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA); + $this->configurarPK('IdProtocolo',InfraDTO::$TIPO_PK_INFORMADO); + $this->configurarPK('IdTramitaEmBloco',InfraDTO::$TIPO_PK_INFORMADO); + + $this->configurarFK('IdProtocolo', 'protocolo p1', 'p1.id_protocolo'); + $this->configurarFK('IdTramitaEmBloco', 'md_pen_tramita_em_bloco tb1', 'tb1.id'); + $this->configurarFK('IdProtocolo', 'md_pen_processo_eletronico pe', 'pe.id_procedimento', InfraDTO::$TIPO_FK_OPCIONAL); + $this->configurarFK('NumeroRegistro', 'md_pen_tramite pt', 'pt.numero_registro', InfraDTO::$TIPO_FK_OPCIONAL); + } +} +?> \ No newline at end of file diff --git a/src/dto/TramiteEmBlocoDTO.php b/src/dto/TramiteEmBlocoDTO.php new file mode 100644 index 000000000..49c56bd49 --- /dev/null +++ b/src/dto/TramiteEmBlocoDTO.php @@ -0,0 +1,84 @@ +adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, + 'Id', + 'id'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, + 'IdUnidade', + 'id_unidade'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, + 'IdUsuario', + 'id_usuario'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, + 'Descricao', + 'descricao'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, + 'IdxBloco', + 'idx_bloco'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, + 'StaTipo', + 'sta_tipo'); + + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, + 'StaEstado', + 'sta_estado'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, + 'SiglaUnidade', + 'uc.sigla', + 'unidade uc'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, + 'DescricaoUnidade', + 'uc.descricao', + 'unidade uc'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, + 'SiglaUnidadeRelBlocoUnidade', + 'ud.sigla', + 'unidade ud'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, + 'DescricaoUnidadeRelBlocoUnidade', + 'ud.descricao', + 'unidade ud'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, + 'SiglaUsuario', + 'sigla', + 'usuario'); + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, + 'NomeUsuario', + 'nome', + 'usuario'); + + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'TipoDescricao'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'PalavrasPesquisa'); + + $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA ); + + $this->configurarFK('IdUsuario', 'usuario', 'id_usuario'); + $this->configurarFK('IdUnidade', 'unidade uc', 'uc.id_unidade'); + } +} +?> \ No newline at end of file diff --git a/src/imagens/em_processamento.png b/src/imagens/em_processamento.png new file mode 100644 index 0000000000000000000000000000000000000000..6e26c5b167007682f4ca98071f92e531aae6d8d4 GIT binary patch literal 11135 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 R?1BIQ002ovPDHLkV1fbVf6xE` literal 0 HcmV?d00001 diff --git a/src/imagens/falhou.png b/src/imagens/falhou.png new file mode 100644 index 0000000000000000000000000000000000000000..36c1c3530162df8a7c8826012629342cf6842646 GIT binary patch literal 14762 zcmV;bIaS7qP)f6Xi@@54ZTQ_E-Enz5K6$1 z03tR-RB%L5k){YTDBysjLy@r}iiH7DvFijGMAUI`6dRUFWUU$Bym{}eS9UO(Z2>7`&z9wUXbV-Il z#&6`Y8GKGQ04S2&F6MJnWNa;Ck|;8QE#r9r;7G||@X{|>%+C|c55>;RS}qbKr-&IQ zTvLXPlM{>K&(BTgi^a?^4mXV>;xX8n8Ce|RasXz}{8imI52H3ZN4bf ze_i~WlJ|C&UW9+{8AKoW!}eExnGFE2re(F+`iE_46#!l90Z_aBhs|Iw0E)7{bq;-T z9=d#9QpDmcXDh4R++0fmpKB>E=%LdZt9g z$j;($`3&Zthxi`{{&gM}5&R^+h%b~yM9Zd3AWW9ETgVfL1(`yIK=_}U_z%PWq}jQa ziQ4!P(3V&Nr6C$XejWfQDiI(Fdt@un?|lo#M+5oIi_w{wo%_#%{(V=tO#a9gB!7-$ zM?^BX5>d|Vn*3S!?g~$*UQipUP zL&zMmg;!4Do9IA%up=Rh?=qPj=x&RGBx1dpI68aT- z2O}^EromdU5o`ssU{5#*j)WJ%$?!5bA1;Eoz?EiTr=n?cd`V|I)p<|3O zju?MT93~aB0<#&j8`F+Cg&D?-VWzQItUA^l>xvDRIYI4MQ`g1<+DyrL=EogS06Xii({|v`U^zjmmKqDIK93(F5q| z^fLNk`gQs{RV`IdRle#b)i%{Ds;|}NsClUI)k@Ub)kf6bsWa4l)YH_rsduU0(?DsM zX@qO!YV6TCtMPOWZH~(v?wpc2hv(eZgf-1HBQ#fN?$aF5oYvCT^3%%Fs?s{6^;Da# z?V+8jy+iwi_M{F~$4y6|vqR^k&SQoO!;_KDsATjprgSxR{dFa}^}2()GkV5)QF?`X z?Rxk03HmJkB>f%wz4}uIItC#I1qQ7Kw+-=zEW;GTU55RJuZ@h2VvIHzbs0S}Rx=JT z&Npr~zH34@aW`3J(qMAU6l2OVO*7qXdf5y%vo}jIt1%lghs_<#1?IcWhb_<+P8LFo z28$a^64R5J!)#@aTGB0pEekEXET35!SjAgyv+B3{Xl-wuZrx~o$A)4PXj5p@WAm%6 znJw40#`fA=@?77!tLJvleQsxN$G6*KchjC~A7a13zSsVPgQJ7Uq0M2^(ZDg$vDWbh zi^d9LZDyT!LOXdmt#&%*^w!zIS?qk+`4<X~g?%562@eae34a)26HyS+zks@6 z$%2*zuOhu7%OdYYnM6sVdZQJi6QY}=U&naIl*dS8tzuWkUW(I*6U24LW8oFzvR(TOpMEs5_rp_~TJ^wNN(wM(bC zZ0;`Z6P^ce2XB(^$}i_nB)KM)Cp}7bP2Qe7nc|*Ok@8f)7E}wKr~0SXrM^xJP1~RL zDLp2=Jp-4Km~m7{5vB?IGPN`FGKaIwvx>8%%bb_(Ts9>N5;bK**^9Ef#WdN^)PTf9 zvR*Qp{o-l7TcBI8wqSIn=gRt3(5j`Y zdRObOE?Pal#&6AmwS={4Ykw%TE-Wv6xh`g1Pmxy9nxe7we(PI{6^cd0H#WFzsN0Cz zDA+i-Y3`<~O&?2mB^OJrODjs>Z{}{k_?699m0x|@lC)*8%%N=0R?Jr6*6Z8cw;d=~ zF3&F?+a9vLa|dHb$&Qyhm+ZVyVOLSNi?B>BD~E ze(8aT1AWbo&CM;EEoH56tE6@EV8X%6-*|u1-NtOIZ>P7H9s-9XhaP{M`0e$>L5F*f zu#U8SXZT%h2eqT56Y5;vIn|ZYCGC#u9zGg)w718lr{jCe@An_mJyvsE<#^c%!il02 zpHAkVoIaIx>gnm^(__6$dheWxJ#(!uyl?Pq(Ao3ne9xWf_v}A;-u3*k3(gmgUSwVD zy5w-FbHIL};|Kd6ItCpEJBJ*Hx-UCj?irppeBz4xmD5+fub#UWaP88_{E^}7QP*$Y zNVp-r$-DXJR{E{yw{vdK+*xxMeYfPE(!GlNn)e%iH2tw%>L5Kn>ODH}V8MesW8ASP zKV|>)e!S=*`C-L`&P4Mg+egPHeJ3wJUif(YN!F8@r^P=j|6Kdbc>FRj6+1Ql zT=e|YubW?}zu5oM?q%33w}4 zmFMp*?cOa}-Xy)}XW3aH(;v`1Y#r8+hJkKKNJ3|WY(RI1z3KU88VDpE(hUp=>&FrZ zOPZkx&`fs^Ap{17!q@i!Z z>!-iHwB_mV9Q~c6+dTc9r7cZcN?}Th(=Ai@tisuZ%nK8n8*JiuW_-DN-?TpDt#$)y zNmHH2!=aGpA})C@B2X_RurH#A&u?w^w5u=RdmH_a8|~!a6I}oCGkf5>PkHEHYcpe+ z#PBkG?i2LbqfC*1BP;CD>}KINiKU69^1tEHPy>1cNs`1DVuQny!k*7Ke-456+@==) z`D`DahG09Z4*J|@Gi+R968+KKA}Q&_@Z)s%-j8Rvuc}Vh^84kFHd^k#5nE zhd$js(9eCoE1ASDBRAzaZ0|R5Ipifp?N89n&2$3a+}_0U`^zhNiWqA=-*ewAbdJR1ksCJvGB%I(cq>l0nsgLr}Ok(KUNPbL@uAPL?c68Ai>Icl-6|(k zchHlyqJziZ8{qsZ`qNkK_SB#{80UY(f`PZE<3nGQ^ZCCc*JrHSjj~g91N~y}KvMF0 z-y?B;Evx4DQWTb#Wws;d)!V#WUyaepl{|Z!#QYxb zZZNVs@^jAL;PLscp^opDcM63&duGNbs?``fRrAo#_YZgbJj(5KaBgH3wCvRBW7(Y? z+uYe^*?f*|=XYq!vs__^6>LiF0PX-k;Pt7uA)jB}ntTD~^Hl86;Wxe6=kZ*hi4WhK zQ#RkTnY|XSulB1DVnn(G>{W z)M|$Ls9(?-YG&b33u_I8>^}iGJI}*C4`vcWU(3nax7U)(Qxni*U@6r`W9o!FVWqX*|t;i(O0*#Y;j|SEoCm)Nn_5YcEgfof$R6=mc)iN6 zQ?cP2yQW9JYtv3`mn)&4l8%R(V!n@ZCcW8?{lR(y^aZkXu%=c8e4G6N>M({_OCZRa z33l6K>9jBMm05^R7@SB4g_u9UeJYZawe+13R-Ip8VGFc%lIzpg+F_IH!+YqW_HXI< z@Tb;i3hzEHk8jzqQ(NUa=ok712Ag93Z_(X9D0g3lJ=o{gmo3N6Ltg)xh)64ej=`jA z3N8scrfTOD+6$*5%7ks5+%}O@0KW=4?$|nm&8)vIOz@YTi-!x`t*tTX*>kbvYkQ~1 zCd=KSopKfQbXk14*Xz5VmDyQU$UT???6g@4H6rwfjvp+b-|MQM=&*>ckm_CqSZ`~m zI%u}Ky{UH0m$x>APWB~wJ+^SDnZ?_?Y;b${v-}eOWhS1yIy^P@{W5oEn_O{3)#ywt z`5w9~zMqwu+m4Xq)Jj@+K&P1CheyfB4XdEnZpsb@s5|&|_qkfJbNbx^niD-PvZ7ON(lp z+N|J-19HIbNG!X`LOxGtQ;WKxQw;dAA(~T4xIWI(l@cBQM035ICPZsekZIV@Ebu3j;M z7e0HMu7+^^&=)8roFL;%3+j6YI=jod3KIA?4D=5kI~f_eyqa@%t9HbxgLAyO#rGiH zJ>Tj+&}o~X1Cq^~GaSfQ=_9|lySd%zJQddpJxqiuyP8_nj_))X3^RjrEA(6ccK#HL z(MbbiVfm`a`AgcH*uQ6@$6j8oeEq6Gzu0?x$nW$2fbJf*v;(s4GXmBfmc5t!Qyi?L z3i}}uwC&VkMO128g+E;~^#YyZQ`BF=>j%R<vkQEmmG>h*W;`>m#;8jPwy3+MUA0a&jy~3x2>uR&zk}dU?*##JC47F2X8(5X zlGL=;XE@Mgl0?bI<% zbVPLrcpB0X!H>==!nCt=1)Za<*sqLZFq)ZTJ=^W{J9mkXJTuiO#Tl1=Jl{Y3(w>=- z-&$|Hm?{SSeE-0OKFRkmeN%DZ>9RV#=gyRpkKC7I1bdi#)`r9d_YWQ32>pKOFO`ah zA)f~mX_Ap%i|!8Z@p+UVq!Y;(L{5+W-dd~0R1xUm!~1-GOBTK$%WNz?M;)onlCMSQ zEYaS@yq<V9C8i`g z4*g6bkqG*N0AARKM{N1Y)NIMn8lp0)e;KmuUpAyCa#_$Pg1?V`R57cM(B>11(`pCT zil2{)Y(9_YhneW{i^GeP)8#a~lpKW~arowz;6rqGK=i$v^aBIrnUT$x>6tO|^W%kxni63_gLH{`FcXbFKfJiOT1JzL$}v(f(%KtKB5_PO z4!^dw$wtz%MK7u7HucjFi@}z98%cGg=r_i14I?v3?xvA3!Vx>Yl4d)Ff;y5ber)*D zm0-sMzmlX^IyG|Z2=sfoG@qxtFA{z4N_Ip2QRN~Lc*Nad-4SPQsIqDy=r8O^sK=;S z*ch3u$o)Cq5fuiXUj4FxSn|_!_m(o7t1CyKNAeimTrc{*rOkEq@>p!ZDMXjr;jVrg zCq6VJD!7txcQ6?RxjaTfCm4YU7$^%@A|by!y_zN4ERW>g`FUaVPz1cA?MUbem<_ci0&92KaBKZTBQY7hpZd_ z+H8F2nSE2Er)+4hD%+r+jmMh;-Vi#jLK8rcG=@%VvC+To<~B>dVMCP>1_CkheKcj< z7lW&VRA-Fd3W>9>0At^plm`FUuBnH%K_B43k21k2ep@>^HjAiNx0q9m$thyu&uWQzK16rkT6RO3P0**~$v@*PxAf$0sRA?kC< z9TGg&uS~~=u8mBO-fy*SmZ4wl9qje^JRcEx4x&+`eoF`ZR} z!b@XCV!7zmW8lfD>3n*?YdQ+x>jAIHN$`;$h1qUKS9e5okk2EOQo>o6pEsdY`?Xfu zWC{9oBKa!Lq}PhP2jw}8>M-Ik3|XFpP+G-+*Hq8o7Xx0CW8m+N++x)hqY3CI$pw0v zKSBPz(DA=!F*bO=mHPO?l#NPKARJ46ROCJBjkVq3XagPZjEeT;P0I}Mn(7gJGr((d z3Ve*B!>Ijk;k0huO=N5Wd_;XjTw4$K-2E#_`k`nxrZDuK{mHk{&5+sGV?~e2B7S_d zsf~3tw~IEzlth5nR8QcG0I$g@@R5^`{u*NVdM++1EFgI;+9JRLXXg#{CI5=<-6PT# zA?VeWK)n2KMcxCqreH7tg;ILQM2DqK$_ntB&VYZ-jZE3tu(@TGkrm)IIR$=Out_b& zg34)nLL~-NW)O07C3f3vJbr)Q)KtpsTZEt|;O}4p3lSq#7zIJ~go{`*+~Y{cwH)9z zso?+P7i$vya)8(56!@{Wh`NTCo_~+gd3Xgw5uur-9RU`4Ki%GH_6???$K-C0&wqp2 z*CUU*m|GL4FK_=+F!lhisTRSv19(kNfDiv3`StMc^>VJ3)Z(%0VrdGT-7*(Te%NeD zaMREe@b43OJ?2sxO(|h(gF%_Ax5vKQ_CqeflVNd z-0zbl9Qd2fyx0`P>G!Fx%H=esVd{^!ml#fxDt}6Jw=bYYKYKC0KdWNfM`4Qig+2z3MVAWv_H` zmV$4%&N1LMxfy&Xf!Aa^_jmV`X+NqppT1(5dxGJ|7@>L&+DGdcl1E;DFEL zxx(xxBh^4#(D$JHl1DA_Z>Ln??|7fB`!tdp!LJ1Hn(PK2#t+Gb3p(>`3wuR+kHaf4 zDYEugXQId6Q>q$rN$9;E>Fs7-r)kQ-PlK?ei=EM$N&>IRP2g7&cujVLk7y3u9KCrJ zh}&aMg+NVw9}5I9(d2K6y{IV6li|UR)@IL5WgU5%<>wa{4|v0mZ!kg5T^CKddz zeu1rBcT?5CuLkg%>;xaF#i*wPm-wLI_ROp2gkA@m<0Kjba3r0FSu@a2uHeB1sdAj^~+fY($F@ZA8sCcD7rd)3oU>g3+T+GAPN zW1Z&L&!%7I&4lkgvMlSyQw*VhOaI_Y=;nmk51KO=T81zXWry4ZyrxQm?a}Od&A@AN5_~rUugMPZu@JiODP!I_L*59wz!|z~ItB1qhNNHIiZ$cm^C)CvB zyOM4{d+-T;_l7H1?j{VBmQjoq>MdvK#eK?t90hDS3%&d8W$(*r*$I9v0WY7NV5?VL z!{qt0s&f$ZZR%*OUfmoFVu>W8afz9OJ`+6_XTiX8&FUUs~FYn~~t@R3i1Nf)Z z)zqe&nt&4lg@1$Q`Fh^T$WZ%<^yrHAz**4ymEa|0n1--=C%gycy)4GfluF%q!^#Xna_`^aTeG9oc zdVNN$9N#bE;z%mjhoRqH9BuGYv!TirgPeIZRG@cVwrU;xz^h-?0Ny~b_Il7`wiQaf zn=KBd9H_T?=3S}21E_h0g2*8H)L)CTYqlWg^>>na93 z)DdiElT5#|2aGOiWttHdW=3Iy=-lKe{yqb}%%$g<{pnG7(`YFLOz5qKY7PAMfBhzt zl7qDaJS_a|Ttz<@9s^dB%;pa#p@~2bd3^ro(aqV=bAsON4%Q5;yif9|p{8o7mcW;W zO&5u)s;ULNrgriivg<2{9$z(Ju!z9-mvQGQ=yxA9rS+Wt2cm)1UK^^Gz<0Z<4LpRZ zXmdKyBNqqNkj+jmQTFkzLcf<)Y0C5+tk7vf0Rp<%$i_A6x%jOuR5x3YhJIW30d z=G$x<6xLVk%e!!`*9Q3Jh!J1N_f{uYNAaBSazz?28@VyE^hOPGvyL+OwFW%o_vm{Pxgy?& zo@A~Jco|oE&88C@S$d-exm`yQ{8|JaGBT`2Od3g2Sg)5eZhCpYyuorhK9A}38eFHN z1b(do4;d}afNWo+x|=NluQ1kyJ((^vskiVgWWL6rJ9QMmuVvt&VvNBU`%OYmMm{14 zy@92#ap<9X2EW#UhrC6gR-tDmU2Lw{1HGpPCPJ7|J%V2kz(XD`84gexc_8}Qwe+S_ zBNd%eYfvqPD@&=Kz^@nJRdG(7aouu%MqC;w1n5lWm)zCZNTJ5HoR=olb8F>^|pf}a+Ee5vGN7k57>qRhUyQ-2?X{M|gF05D6GK5>~ z*!TcFhO|msd(I7e&w^)K%}6c8gt{~}0zBk>)-zb^{a<8j*WSpKP5pvgwJOEHyqcZ$ zx2HUy$5bd&E{;vT=bF$N;A=1(s}_{1L-1t-&IJ3E+koD5Lb8#q7wkQ|UbPIorg{Y5 z$hZn#h;y2yHzf>00e7n&fY(${;LD0^7(MiejT5Ps-gK!bTEPp zTWhK(;5D5AzX~gx+bKO`t4T2TD@)KT8M;6u&Ai$u{~=$fedy~Ecumz<+1zdwGpt^b zEMJ9X2zstx7FKWP24~bxja&M923}LGgKq>q+edz(uF366LpG-?SQMc_5nBKU^$vjwNB%3PTvOV20FqH1(jA$p3aj@b&b)z(o4UQ?}s zZ&dX_bg3sv<`Z5?mQON|xr2|hs#v9|T7bR*{8OqK@QYN|3kotP^TJ7QULo>Lz5$bO z1LW6l>2zGPJKL-yRGp=F%&GzWVbuco@FMimUm(#Ms@V;B!rMDPzL1I~F(bWYAI7L| zy&Kd3zO>v7zEK@|xYK4!e?WAt0Oz|^i|LQwaI?_+^=B7uQAa~$ZO=-n0lay+75sIb zwPc|t!J@&$_-}B#2fgyB*;svZk#(i8&~0ahRtq0Gg2|fz58m&&RF4Qd`zRS0&GtetC`ze>$^=5Y9_j=X%XjW(G zla;NFsz6^$z@x&#>J`_pz*Vnhp?ANd+RZ7cYJm>}YBUj56nfH6wL52^&nr7W^_eY# zx%Z*j^~2CFQ$s~cC)=S~1YVwBVA+p$;EoJs#0PDJJK1p#RL=smI?E zOD@peZZkVU%E8?F^5LCRPkWiHeYmMrs8Lo`tH5h&fUhsiiCxwi1cf?+&4M}fY^r;4 zY*d?Ycn130$UIYL_941^otYiAQbz(My7gvFW#|m81oX8Iyru^DhqaR3Gz?W*2#Y_2 z%meL@v%)O&84uD4WD0tmX<_>C`HhuBPpJ*2lfmO)-THa~UQ+}7vz69~4njUU-faQX zg|=03S$S~(-)BLeW7&rTECkbSiq_61edtjKC$+K0dRjY#8fRAZ2E3*Q_`5>b+sL(1 zt-RP|rTkh}{$Y6E17|_sH#LU`>qA}QabQ^^$cIOC$tZESiqbLc6AGdH%kShL_zaWU09@S2V^ z_==)JucwgLXCdE)ee>W$hoH|X?12DhM3%V>w63N$Hbc9eE8>t{BzCh6$4d>*&{xGP>8c)aa+-Oj0bhp zfY)>s!Jk_@90rGQ@=wCSFmz&x>`B}ZK9qi=N;RB8VhS{|xmMFv8qeS!O z?H^R{yAga9cr1D20PvdJ4E`D5CnhcL0~1B`yalK|5Mm*N8GA)q_0RpMPwQ6iGc>=l zEZ^&qJm#QhyP>41m9*{%?ZWyhofMsAr5w8z{4>DM%{%^CZUkQi{;KQB0v?)PF|IBN zc0{Exey`DUh7^8!cH;YQi6!w(j+^-q2EUrXYpN#r zwgJy}jiFJ^q*iNIesy(|e?C&=1x2BcFHL6B@!|W3RSSGK0I#VU;M)m2k`nbs^EJiWi=k^Eh2481J$g7HY@bT@EDMF5yS-lDUoewN zXt4H)jtCn`>o4AmOIcemWJ?BSrNMU-@R}+KzMa5Br?*UL+(8XS`sb=n=Ojm85>cLVJGGiB1-=`B*Hj7c?FN2rYm+T* z>gU*CUD$*bE6>>1kx@|UMdo6N{D~=#000jSNklwg240hs;M)y6W<}}s`!r$9$3p5#Ue2*Q%)HPP^x^4~k7W|W zU#Gj*m~8FzHqpc>@a2<}Y8=|lz-w{>e7k{%PA{j}mcb$m zD81d^W+5)GC|~WGA009CTGOLNbQXO;@~bY6>G$-vht;Gry{tKuU!GiAWP=fVvM?dL z!Ivi{)dMci>i19FC_BM-0{G?ZhI*wp(m+R4O*s)%E-x2MS$W7bz+LkrBk9EOmpNlM znSGB$jfe04`_zo?^JzLE+UW;~*jO^eF7Q?0udFTLHQ52a6To9e)WnkU6%%taTE#<@ zIOt#KnK^mV?8}An0+d|-z1;7;lJ1(GzJfSwH+>nSvwMhhR@XQlH>ea4l%%-=8a9wF$Fo1BgheUNj0m&p4P?OkdlN6(K# zLfU9*j$P0bw{;@9Rq*QpcuiKocLI3m^h(MwZ5Y!+2E#p;j=#c`+k0k4g);qwGr*Q+ z#_tZtlDE*^L9_2c;in{hsmB(kbfY;K$Qq}P?Qo>e))fjx!LKLaHHm=l6!2-f%FnMG zj~5}K%vvN*d2(TT{F7aR?-GW7NS3$L@!@w7oBu5Gz9xTA9br3dkWGiQQlu%AJK^M@ z&VWx14&3y5!`Ia#@S4nk?-cMzCY#VnIoH%euC0~)8c3G;J1&rA;dP%Z<@!dZM!u6t z3=#DFH6rgr2orhJnXLZI8dw9YU}$$01r_`c?B>nsfnU$SYbpl5Q^0TSAzES9g)>!)K(hf9jeZ`L30ASx#_Qw)3~LfbYfB+;-D%qAz!%vxjAOPP42*oEE+x z=H1%8xPuY+M*(@yo&eREl>Cq!q*K9`Cm5yE`2$oqmmKY`!No+L}4*RjQ^Fp{2S z=MeaIr7CFBz?V}gw*9T|94X*60eoe1gYEpUAKMOmL6+6ysyAO+6GGTlU0CAfq3HD3 zmyBE{Gb#&ubve%HvDdR;;Mer0P;UfQe4w*icV4Z!Z-Nt-$6<%S&wf(q0#$d~y7x=A z?-QxQ0Di+@-B$?ZVvbu4Rwyi`?Bs7KHbKOU%3dcYym)FVl}Nr>Vv_F6^I}5oJ?i32 zuPy05j~M=wbeSCL>ZKpc-K&uwb*U~*YP#qm+ReTI8w&SY4NEHumv7RmV~(O_hlYwsE#S4xrdQL3CAA?` z8Ac(1GJuzh8 zcKoh#;_*gu1bW0#M9JeNjmI0wvGwecjX9G@ye7zkKc_#3t?VPx z+^Xi`AZf`chXX=}=5OauseOX>P$Qmirx1=rmZVYHz5PO2$2c-3%LD%LjrE<&tz=J{ zm1EFDs2V%pf8tWF$NLEV3~?*_z-a6RJqb3No-I1?f%+*=(raL8ke=MI`ejPB?kj3% zwODip@*w&~2FHeFR42C;}S*vY-LZ*H<= z-I{XcIP_3tYW#`C-sH&)npvzZqGoqCbXW*OB1Am5wp7xUf#A--m~`1u#e#sB zS>a_pGZVine`n@YG3cSl%;+!3;=hP2{`Z+hR|f*T7j!37tAvA9>M$XuyhIx;Q>;Bq z?otDO2$jYb$Zy9=F?oY31qX$C@tDLND0A_=J zAtV;>=u(r=;Om#N`ZzJ*?`LSktSpp{Yd)d_TgZr9*jQ14H!7fdP_XW}TJ~T}#GZcA zBz*WvxitG#ap)oV`1AcIF7`>@2N`GQma{K_3#$)nHM_c0)YpgbY-SIBxJfvO9Y|X~ z0v+D$&bA6Ve0JG{8>6XXF9*KdrBV0kaYSh<(P`CFRiK9u)tN~oo)=_6R8_DvfTc-Y z45BTpMr$y~w$u>0Ce-4=h6&23t_2^}rpvZ#1b-bT_##<$Gtrp+LS0Ej!8+_6`}pz3 z`p#uehb4=tYS2T7-Fn`s~YIAIN+VgE)(_?o!m0BR8szVR${SddM6UqO}nDkZQ ze0)980YoRalYoWAn<0N+1b#?60Wh5rE)Y&8L@!zbLDobkfz4J>NJtM@&uy_atg=m4 zHqr04UmmjT=-c$#4?DC(9@aHo(<2W$kvwKau7F+>(vnk&p+6#GzfCw@XvtZS5u4qs{GQOyeu6M+-YUmqq6$#+=x>Rk;d!sO$9TlZ(B*&z8I`A0v2fv~9-( zBHR>g7-mPvF0;92$qj%I{lKjMgERkuJ7B^FtLY<{kOu^7ijzUw+we-v6qCuHgO%wQ-n_H}Gg@}MCa{af96gsMg;GT6gx3Xwc8w)r&GOaMIp8dw~ z)QC{6(@M&f&}%}Kg-rC=&so6#B{E4bv3vixq+Gn>2ai`l4;+l8wPtT|je zHUG%rJ_rgip)QRbWjdUctD%QbSBK!dWU()K3zOJ~Z0Y3c2&oB}xPlFHaJ5JXI*CrW z7)}Y(^iU%RMU^mvsX`H_CGyq&Iyy6cpBthxrQ~|(p}imSbLsAZf1_(NiZQ<0$x}xJKy2=4sp67mY!51{VlKYH;GRGr?A=`FAeOjC~9Pi`8z771bp4&~bSj3mAQnT%Ip6zZWG(u4h&JKDZ(v<++Y? z_E7@izQRu7w&>jWoTc@=U80(WUelh-b5klY^bZnaw-J7?W1@wo8Y(9EZU0!<*}2_q zgG^Rc^U!O;pcdU+Gv7aam)FB?qfQ={26By0P=hLv2lfC{^0$YlPd;Al#@MO4fnHP3 z%*b!)=8DDM<3k>={~hEmzk&X?cS)1_);je!zL+l*?h#p#xRz9R&})kB&dB+znMC4! zK^Ay3xjk40^mw(~@Z#ijwHs7T9ZBf-t8Z!)lan#J`w{a0BLO9FDd+s<^!KH- z*}HssWrY>&z9%c}!L5zl_v1^G#wDPSn2tR3`?cr)e+?V;0i?g^8GM?@%b!bE0JuQU zrERFXEi{xu|BWaLgWK}+Jl%d~ZtSr=m#(1$YCvzGJzyT)+tl?p=VGy_Ukd#Pdg3Ck zunRe77g2ZMe0r*qrIObP@FxiHN4dg(qe$%0oRWRCZ)z%aR{Ja1pjuM{dI9Zq`hKvt zozZ;%aJNq>49XtQ0B6bob&LBr<6(jmb*sDRB?yXy$R7LYIV9~MR{_60W||;^vPF+0 zi68SA>1v}8z&xWcB}326DvVD^vOK;mZI2&>yCHG?e>=F&-ws#Z`Tzg`07*qoM6N<$ Ef-f;$W&i*H literal 0 HcmV?d00001 diff --git a/src/imagens/nao_iniciado.png b/src/imagens/nao_iniciado.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c725be01dd0ba56113eb0ee35cd17efabeaeb4 GIT binary patch literal 14835 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 Z{D0Nab2h#l@t^ + + + + + + + + + + + + + + + diff --git a/src/pen_expedir_lote.php b/src/pen_expedir_lote.php index a25c7b303..84037c4ab 100755 --- a/src/pen_expedir_lote.php +++ b/src/pen_expedir_lote.php @@ -18,7 +18,29 @@ $strDiretorioModulo = PENIntegracao::getDiretorio(); $arrProtocolosOrigem = array(); - $arrProtocolosOrigem = array_merge($objPaginaSEI->getArrStrItensSelecionados('Gerados'), $objPaginaSEI->getArrStrItensSelecionados('Recebidos'), $objPaginaSEI->getArrStrItensSelecionados('Detalhado')); + $tramiteEmBloco = isset($_GET['tramite_em_bloco']) ? $_GET['tramite_em_bloco'] : null; + + if (isset($_GET['id_tramita_em_bloco'])) { + $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($_GET['id_tramita_em_bloco']); + $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + } else { + $arrIdRelBlocoProtocoloSelecionado = $objPaginaSEI->getArrStrItensSelecionados(); + $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramitaEmBlocoProtocoloDTO->setNumId($arrIdRelBlocoProtocoloSelecionado, InfraDTO::$OPER_IN); + $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + } + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramitaEmBlocoProtocoloDTO); + $idTramiteEmBloco = $arrTramiteEmBlocoProtocolo[0]->getNumIdTramitaEmBloco(); + $strParametros .= '&id_bloco=' . $idTramiteEmBloco; + foreach ($arrTramiteEmBlocoProtocolo as $i => $tramiteEmBlocoProtocolo) { + $arrProtocolosOrigem[] = $tramiteEmBlocoProtocolo->getDblIdProtocolo(); + } + if (count($arrProtocolosOrigem)==0){ $arrProtocolosOrigem = explode(',', $_POST['hdnIdProcedimento']); @@ -45,7 +67,7 @@ switch ($_GET['acao']) { case 'pen_expedir_lote': - $strTitulo = 'Envio Externo de Processo em Lote'; + $strTitulo = $tramiteEmBloco == 1 ? 'Envio Externo de Processos do Bloco de Trâmite' : 'Envio Externo de Processo em Lote'; $arrComandos[] = ''; $arrComandos[] = ''; @@ -109,6 +131,19 @@ $ret = $objPenExpedirLoteRN->cadastrarLote($objPenExpedirLoteDTO); $bolBotaoFecharCss = InfraUtil::compararVersoes(SEI_VERSAO, ">", "4.0.1"); + // Atualiza estado do bloco em tramite para em processamento + if (isset($_POST['hdIdTramiteEmBloco']) && ($_POST['hdIdTramiteEmBloco'] != null && $_POST['hdIdTramiteEmBloco'] != '')) { + $strParametros .= '&id_bloco=' . $_POST['hdIdTramiteEmBloco']; + $strLinkProcedimento = $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink('controlador.php?acao=' . $objPaginaSEI->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'] . '&acao_destino=' . $_GET['acao'] . $strParametros)); + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($_POST['hdIdTramiteEmBloco']); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_DISPONIBILIZADO); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + } + // Muda situação da barra de progresso para Concluído echo " "; } catch(\Exception $e) { @@ -402,10 +437,11 @@ function enviarForm(event){ + montarAreaDebug(); $objPaginaSEI->fecharBody(); $objPaginaSEI->fecharHtml(); -?> +?> \ No newline at end of file diff --git a/src/pen_procedimento_cancelar_expedir.php b/src/pen_procedimento_cancelar_expedir.php index dfd01ae9c..c67bf234d 100755 --- a/src/pen_procedimento_cancelar_expedir.php +++ b/src/pen_procedimento_cancelar_expedir.php @@ -17,20 +17,39 @@ $objPaginaSEI = PaginaSEI::getInstance(); $strParametros = ''; - if (isset($_GET['arvore'])) { - $objPaginaSEI->setBolArvore($_GET['arvore']); - $strParametros .= '&arvore=' . $_GET['arvore']; - } + if (isset($_GET['arvore'])) { + $objPaginaSEI->setBolArvore($_GET['arvore']); + $strParametros .= '&arvore=' . $_GET['arvore']; + } - if (isset($_GET['id_procedimento'])) { - $strParametros .= '&id_procedimento=' . $_GET['id_procedimento']; - } + if (isset($_GET['id_procedimento'])) { + $strParametros .= '&id_procedimento=' . $_GET['id_procedimento']; + } $idProcedimento = filter_var( $_GET['id_procedimento'], FILTER_SANITIZE_NUMBER_INT); + + // verificar se o processo está em algum bloco + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($idProcedimento); + $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $tramiteEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloRN->consultar($objTramiteEmBlocoProtocoloDTO); + + if ($tramiteEmBlocoProtocoloDTO != null) { + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + } $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); $objExpedirProcedimentosRN->cancelarTramite($idProcedimento); + } catch(InfraException $e){ $strMensagem = $e->getStrDescricao(); diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php new file mode 100644 index 000000000..cf32491b5 --- /dev/null +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -0,0 +1,428 @@ +validarLink(); + $objSessaoSEI->validarPermissao($_GET['acao']); + + $objPaginaSEI->salvarCamposPost(array('txtProcedimentoFormatado')); + + switch ($_GET['acao']) { + case 'pen_tramita_em_bloco_protocolo_excluir': + try { + + $arrStrIds = PaginaSEI::getInstance()->getArrStrItensSelecionados(); + $arrObjTramiteBlocoProtocoloDTO = array(); + if (count($arrStrIds) > 0) { + for ($i = 0; $i < count($arrStrIds); $i++) { + $arrStrIdComposto = explode('-', $arrStrIds[$i]); + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO->setNumId($arrStrIdComposto[0]); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($arrStrIdComposto[1]); + $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($arrStrIdComposto[2]); + $objTramiteEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); + $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $arrObjTramiteBlocoProtocoloDTO[] = $objTramiteEmBlocoProtocoloDTO; + } + } elseif (isset($_GET['hdnInfraItensSelecionados'])) { + $arrStrIdComposto = explode('-', $_GET['hdnInfraItensSelecionados']); + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO->setNumId($arrStrIdComposto[0]); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($arrStrIdComposto[1]); + $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($arrStrIdComposto[2]); + $arrObjTramiteBlocoProtocoloDTO[] = $objTramiteEmBlocoProtocoloDTO; + } + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $objTramitaEmBlocoProtocoloRN->excluir($arrObjTramiteBlocoProtocoloDTO); + + $dblIdBloco = $arrObjTramiteBlocoProtocoloDTO[0]->getNumIdTramitaEmBloco(); + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($dblIdBloco); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retStrStaEstado(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + + if ($blocoResultado != null) { + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($dblIdBloco); + $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $objTramiteEmBlocoProtocoloDTO->setNumMaxRegistrosRetorno(1); + $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); + + $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $tramiteEmBlocoProtocoloDTO = $tramitaEmBlocoProtocoloRN->consultar($objTramiteEmBlocoProtocoloDTO); + + if ($tramiteEmBlocoProtocoloDTO == null) { + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($dblIdBloco); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + } else { + $tramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($tramiteEmBlocoProtocoloDTO, TramiteEmBlocoRN::$TE_CONCLUIDO); + } + } + + PaginaSEI::getInstance()->setStrMensagem('Operação realizada com sucesso.'); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'].'&id_bloco='.$_GET['id_bloco'])); + die; + case 'pen_tramita_em_bloco_protocolo_listar': + $strTitulo = 'Processos do Bloco: ' . $_GET['id_bloco']; + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + $arrComandos = array(); + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramitaEmBlocoProtocoloDTO->retNumId(); + $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramitaEmBlocoProtocoloDTO->retNumSequencia(); + $objTramitaEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); + $objTramitaEmBlocoProtocoloDTO->retNumIdUsuario(); + $objTramitaEmBlocoProtocoloDTO->retNumIdUnidadeBloco(); + $objTramitaEmBlocoProtocoloDTO->retStrStaEstadoProtocolo(); + $objTramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($_GET['id_bloco']); + + $strPalavrasPesquisa = PaginaSEI::getInstance()->recuperarCampo('txtProcedimentoFormatado'); + if ($strPalavrasPesquisa!=''){ + $objTramitaEmBlocoProtocoloDTO->setStrPalavrasPesquisa($strPalavrasPesquisa); + } + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $arrTramitaEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloRN->listarProtocolosBloco($objTramitaEmBlocoProtocoloDTO); + + + $arrComandos = array(); + + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objPaginaSEI->prepararPaginacao($objTramitaEmBlocoProtocoloDTO); + $objPaginaSEI->processarPaginacao($objTramitaEmBlocoProtocoloDTO); + $objPaginaSEI->prepararOrdenacao($objTramitaEmBlocoProtocoloDTO, 'IdxRelBlocoProtocolo', InfraDTO::$TIPO_ORDENACAO_DESC); + + $numRegistros = count($arrTramitaEmBlocoProtocoloDTO); + if ($numRegistros > 0) { + + $arrComandos[] = ''; + + $strResultado = ''; + $strSumarioTabela = 'Tabela de Processo em Lote.'; + $strCaptionTabela = 'Processo em Lote'; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + foreach ($arrTramitaEmBlocoProtocoloDTO as $i => $objTramitaEmBlocoProtocoloDTO) { + + $strCssTr = ($strCssTr == '') ? '' : ''; + $strResultado .= $strCssTr; + + $numIdBlocoProtocolo = $objTramitaEmBlocoProtocoloDTO->getNumId().'-'.$objTramitaEmBlocoProtocoloDTO->getDblIdProtocolo().'-'.$_GET['id_bloco']; + $strResultado .= ''; + $strResultado .= ''; + + $strResultado .= ''; + + $objPenLoteProcedimento = $objTramitaEmBlocoProtocoloDTO->getObjPenLoteProcedimentoDTO(); + + if ($objPenLoteProcedimento && $objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() != TramiteEmBlocoRN::$TE_ABERTO) { + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= ''; + + } else { + $strResultado .= str_repeat('' . "\n", 3); + } + + $strResultado .= '' . "\n"; + + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + } + $strResultado .= '
' . $objPaginaSEI->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPaginaSEI->getThCheck() . ''; + + $strResultado .= '
'; + $strResultado .= '
Seq
'; + $strResultado .= '
Ordenar Processo Ascendente
'; + $strResultado .= '
Ordenar Processo Descendente
'; + $strResultado .= '
'; + + $strResultado .= '
'; + + $strResultado .= '
'; + $strResultado .= '
Processo
'; + $strResultado .= '
Ordenar Processo Ascendente
'; + $strResultado .= '
Ordenar Processo Descendente
'; + $strResultado .= '
'; + + $strResultado .= '
UsuárioData do EnvioUnidade DestinoSituaçãoAções
' . $objPaginaSEI->getTrCheck($i, $numIdBlocoProtocolo, $numIdBlocoProtocolo) . '' . ($i + 1) . ''; + $strResultado .= '' . $objTramitaEmBlocoProtocoloDTO->getStrIdxRelBlocoProtocolo() . ''; + $strResultado .= '' . PaginaSEI::tratarHTML($objPenLoteProcedimento->getStrNomeUsuario()) . '' . PaginaSEI::tratarHTML($objPenLoteProcedimento->getDthRegistro()) . '' . PaginaSEI::tratarHTML($objPenLoteProcedimento->getStrUnidadeDestino()) . '' . "\n"; + + if ($objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() == TramiteEmBlocoRN::$TE_ABERTO) { + $strResultado .= 'Em aberto'; + } elseif ($objTramitaEmBlocoProtocoloDTO->getStrSinObteveRecusa() == 'S') { + $strResultado .= 'Um trâmite para esse processo foi recusado'; + } else { + + $PROCESSO_CONCLUIDO_RECEBIDO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO); + $PROCESSO_CONCLUIDO_AVULSO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO); + $PROCESSO_TRAMITE_EXPEDIDO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO); + $PROCESSO_TRAMITE_CANCELADO_ID = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO); + $PROCESSO_TRAMITE_PROCESSAMENTO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); + $PROCESSO_TRAMITE_ABERTO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); + + switch ($objTramitaEmBlocoProtocoloDTO->getNumStaIdTarefa()) { + case $PROCESSO_CONCLUIDO_AVULSO: + case $PROCESSO_TRAMITE_EXPEDIDO: + case $PROCESSO_CONCLUIDO_RECEBIDO: + $strResultado .= ''; + break; + case $PROCESSO_TRAMITE_PROCESSAMENTO: + if ($objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() == TramiteEmBlocoRN::$TE_CONCLUIDO) { + $strResultado .= ''; + } else { + $strResultado .= ''; + } + break; + case $PROCESSO_TRAMITE_CANCELADO_ID: + $strResultado .= ''; + break; + default: + $strResultado .= 'Em aberto'; + break; + } + } + $strResultado .= '' . "\n"; + + if ($objTramitaEmBlocoProtocoloDTO->getNumIdUnidadeBloco() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()) { + $strId = $objTramitaEmBlocoProtocoloDTO->getDblIdProtocolo() . '-' . $objTramitaEmBlocoProtocoloDTO->getNumId(); + $strProtocoloId = $objTramitaEmBlocoProtocoloDTO->getDblIdProtocolo(); + $strDescricao = PaginaSEI::getInstance()->formatarParametrosJavaScript($objTramitaEmBlocoProtocoloDTO->getStrIdxRelBlocoProtocolo()); + + if ($objTramitaEmBlocoProtocoloDTO->getNumStaIdTarefa() != $PROCESSO_TRAMITE_EXPEDIDO && + $objTramitaEmBlocoProtocoloDTO->getStrSinObteveRecusa() == 'S' || + $objTramitaEmBlocoProtocoloDTO->getStrStaEstadoBloco() == TramiteEmBlocoRN::$TE_ABERTO + ) { + $strResultado .= 'Excluir processo '; + } + } + $strResultado .= '
'; + } + + $arrComandos[] = ''; +} catch (Exception $e) { + $objPaginaSEI->processarExcecao($e); +} + +$objPaginaSEI->montarDocType(); +$objPaginaSEI->abrirHtml(); +$objPaginaSEI->abrirHead(); +$objPaginaSEI->montarMeta(); +$objPaginaSEI->montarTitle($objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo); +$objPaginaSEI->montarStyle(); ?> + + +montarJavaScript(); ?> + + +fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); +?> +
+ montarBarraComandosSuperior($arrComandos); + $objPaginaSEI->abrirAreaDados('4.5em'); + ?> + + + +fecharAreaDados(); + $objPaginaSEI->montarAreaTabela($strResultado, $numRegistros); + $objPaginaSEI->montarAreaDebug(); + $objPaginaSEI->montarBarraComandosInferior($arrComandos); + ?> +
+fecharBody(); +$objPaginaSEI->fecharHtml(); +?> \ No newline at end of file diff --git a/src/pen_tramite_bloco_listar.php b/src/pen_tramite_bloco_listar.php new file mode 100644 index 000000000..4bc348864 --- /dev/null +++ b/src/pen_tramite_bloco_listar.php @@ -0,0 +1,510 @@ +validarLink(); + + $strActionPadrao = SessaoSEI::getInstance()->assinarLink('controlador.php?acao='.$_GET['acao'].'&acao_origem='.$_GET['acao'].'&id_documento='.$_GET['id_documento']); + PaginaSEI::getInstance()->salvarCamposPost(array('txtPalavrasPesquisaBloco', 'chakSinEstadoGerado', 'selUnidadeGeradora', 'hdnMeusBlocos')); + + + $strTitulo = 'Blocos de Trâmite Externo'; + + switch ($_GET['acao']) { + case 'md_pen_tramita_em_bloco_excluir': + try { + $arrStrIds = PaginaSEI::getInstance()->getArrStrItensSelecionados(); + $arrObjTramiteEmBlocoDTO = array(); + $arrIds = array(); + + if (count($arrStrIds) > 0) { + for ($i = 0; $i < count($arrStrIds); $i++) { + $arrIds[] = $arrStrIds[$i]; + } + } elseif (isset($_GET['hdnInfraItensSelecionados'])) { + $arrIds[] = intval($_GET['hdnInfraItensSelecionados']); + } + $dto = new TramiteEmBlocoDTO(); + $dto->setNumId($arrIds, InfraDTO::$OPER_IN); + $dto->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + $dto->retNumId(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $arrTramiteEmBloco = $objTramiteEmBlocoRN->listar($dto); + + if ($arrTramiteEmBloco == null) { + $objPaginaSEI->adicionarMensagem('Blocos que não estão no estado "aberto" não podem ser excluídos.', InfraPagina::$TIPO_MSG_ERRO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + exit(0); + } + + $objTramiteEmBlocoRN->excluir($arrTramiteEmBloco); + + $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $tramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($arrIds, InfraDTO::$OPER_IN); + $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $tramitaEmBlocoProtocoloDTO->retNumId(); + $tramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); + + $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $arrtramitaEmBlocoProtocoloRN = $tramitaEmBlocoProtocoloRN->listar($tramitaEmBlocoProtocoloDTO); + $tramitaEmBlocoProtocoloRN->excluir($arrtramitaEmBlocoProtocoloRN); + + $objPaginaSEI->adicionarMensagem('Bloco excluído com sucesso!', 5); + + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + exit(0); + case 'md_pen_tramita_em_bloco': + $arrEstadosSelecionados = []; + $checkboxesEstados = [ + 'chkSinEstadoGerado' => TramiteEmBlocoRN::$TE_ABERTO, + 'chkSinEstadoDisponibilizado' => TramiteEmBlocoRN::$TE_DISPONIBILIZADO, + 'chkSinEstadoConcluidoParcialmente' => TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE, + 'chkSinEstadoConcluido' => TramiteEmBlocoRN::$TE_CONCLUIDO + ]; + + foreach ($checkboxesEstados as $checkbox => $strEstado) { + if (isset($_POST[$checkbox])) { + $arrEstadosSelecionados[] = $strEstado; + } + } + $strPalavrasPesquisa = PaginaSEI::getInstance()->recuperarCampo('txtPalavrasPesquisa'); + $setStrPalavrasPesquisa = $strPalavrasPesquisa != '' ? $objBlocoDTOPesquisa->setStrPalavrasPesquisa($strPalavrasPesquisa) : ''; + + break; + case 'pen_tramite_em_bloco_cancelar': + $arrEstadosSelecionados = []; + $arrStrIds = isset($_GET['id_tramita_em_bloco']) ? [$_GET['id_tramita_em_bloco']] : PaginaSEI::getInstance()->getArrStrItensSelecionados(); + if (count($arrStrIds) > 0) { + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->cancelar($arrStrIds); + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($_GET['id_tramita_em_bloco']); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + } + + PaginaSEI::getInstance()->setStrMensagem('Operação realizada com sucesso.'); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + + break; + default: + throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida."); + } + + + $objFiltroDTO = new TramiteEmBlocoDTO(); + $objFiltroDTO->retNumId(); + $objFiltroDTO->retStrStaEstado(); + $objFiltroDTO->retStrDescricao(); + $objFiltroDTO->setStrPalavrasPesquisa($setStrPalavrasPesquisa); + + + if (count($arrEstadosSelecionados)) { + $objFiltroDTO->setStrStaEstado($arrEstadosSelecionados, InfraDTO::$OPER_IN); + } + + PaginaSEI::getInstance()->prepararOrdenacao($objFiltroDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_DESC); + + $objTramiteEmBloco = new TramiteEmBlocoRN(); + $arrObjBlocosListar = $objTramiteEmBloco->listar($objFiltroDTO); + + // Cabeçalho da tabela + $colunas = [ + 'id' => 'Número', + 'estado' => 'Estado', + 'descricao' => 'Descrição', + ]; + + // Corpo da tabela + $tabelaLinhas = []; + foreach ($arrObjBlocosListar as $objFiltro) { + $tabelaLinhas[] = [ + 'id' => $objFiltro->getNumId(), + 'estado' => $objTramiteEmBloco->retornarEstadoDescricao($objFiltro->getStrStaEstado()), + 'descricao' => $objFiltro->getStrDescricao(), + ]; + } + + $numRegistros = count($arrObjBlocosListar); + + $arrComandos = []; + $arrComandos[] = ''; + $arrComandos[] = ''; + $arrComandos[] = ''; + if ($numRegistros > 0) { + $arrComandos[] = ''; + } + + // Início da tabela + $strSumarioTabela = 'Tabela de Blocos Tramitados.'; + $strCaptionTabela = 'Blocos'; + + $strResultado = "" . "\n"; + $strResultado .= ''; + $strResultado .= ""; + $strResultado .= '' . "\n"; + + // Adicionar colunas dinamicamente + foreach ($colunas as $coluna) { + $strResultado .= '' . "\n"; + } + // Adicionar coluna ações + $strResultado .= '' . "\n"; + $strResultado .= ""; + + foreach ($tabelaLinhas as $cont => $linha) { + $strResultado .= ""; + $strResultado .= ''; + $idBlocoTramite = ''; + foreach ($colunas as $key => $coluna) { + $idBlocoTramite = $linha['id']; + + if ($linha[$key]) { + $strResultado .= ""; + } + } + + $strResultado .= ""; + $strResultado .= ""; + } + + // Fim da tabela + $strResultado .= "
' . PaginaSEI::getInstance()->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . PaginaSEI::getInstance()->getThCheck() . ''; + + $strResultado .= '
'; + $strResultado .= "
{$coluna}
"; + $strResultado .= '
Ordenar Processo Ascendente
'; + $strResultado .= '
Ordenar Processo Descendente
'; + $strResultado .= '
'; + + $strResultado .= '
'; + $strResultado .= "
Ações
"; + $strResultado .= '
'.PaginaSEI::getInstance()->getTrCheck($cont, $linha['id'], $linha['id']).' {$linha[$key]} "; + // visualizar + $strResultado .= 'Visualizar Processos '; + // alterar + $strResultado .= 'Alterar Bloco '; + if ($linha['estado'] == $objTramiteEmBloco->retornarEstadoDescricao(TramiteEmBlocoRN::$TE_ABERTO)) { + // Excluir + $strResultado .= 'Excluir Bloco '; + } + // Tramitar bloco + $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($idBlocoTramite); + $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramitaEmBlocoProtocoloDTO); + + if (!empty($arrTramiteEmBlocoProtocolo) && $linha['estado'] == $objTramiteEmBloco->retornarEstadoDescricao(TramiteEmBlocoRN::$TE_ABERTO)) { + $strResultado .= 'getDiretorioImagens()) . '" title="Tramitar Bloco" alt="Bloco-' .$cont.'" class="infraImg iconTramita" /> '; + } + + $strResultado .= "
"; +} catch (Exception $e) { + $objPaginaSEI->processarExcecao($e); +} + +$objPaginaSEI->montarDocType(); +$objPaginaSEI->abrirHtml(); +$objPaginaSEI->abrirHead(); +$objPaginaSEI->montarMeta(); +$objPaginaSEI->montarTitle(':: ' . $objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo . ' ::'); +$objPaginaSEI->montarStyle(); +?> + + +montarJavaScript(); ?> + + + +fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); +?> +
+ montarBarraComandosSuperior($arrComandos); + ?> +
+
+ + +
+
+
+
+ Estado + +
+ id="chkSinEstadoGerado" name="chkSinEstadoGerado" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoGerado) ?> tabindex="getProxTabDados() ?>" /> + +
+ +
+ id="chkSinEstadoDisponibilizado" name="chkSinEstadoDisponibilizado" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoDisponibilizado) ?> tabindex="getProxTabDados() ?>" /> + +
+ +
+ name="chkSinEstadoConcluidoParcialmente" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoConcluidoParcialmente) ?> tabindex="getProxTabDados() ?>" /> + +
+ +
+ name="chkSinEstadoConcluido" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoConcluido) ?> tabindex="getProxTabDados() ?>" /> + +
+ +
+
+
+
+ + + + montarAreaTabela($strResultado, $numRegistros, true); + $objPaginaSEI->montarAreaDebug(); + $objPaginaSEI->montarBarraComandosInferior($arrComandos); + ?> +
+fecharBody(); +$objPaginaSEI->fecharHtml(); +?> \ No newline at end of file diff --git a/src/pen_tramite_em_bloco_cadastrar.php b/src/pen_tramite_em_bloco_cadastrar.php new file mode 100644 index 000000000..8915cee29 --- /dev/null +++ b/src/pen_tramite_em_bloco_cadastrar.php @@ -0,0 +1,171 @@ +setBolArvore($_GET['arvore']); + $strParametros .= '&arvore='.$_GET['arvore']; + } + + if (isset($_GET['id_procedimento'])) { + $strParametros .= "&id_procedimento=".$_GET['id_procedimento']; + } + + if (isset($_GET['id_documento'])) { + $strParametros .= "&id_documento=".$_GET['id_documento']; + } + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + + $strDesabilitar = ''; + + $arrComandos = array(); + $bolCadastroOk = false; + + switch($_GET['acao']) { + case 'pen_tramite_em_bloco_cadastrar': + + $strTitulo = 'Novo Trâmite em Bloco'; + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objTramiteEmBlocoDTO->setNumId(null); + $objTramiteEmBlocoDTO->setStrStaTipo(TramiteEmBlocoRN::$TB_INTERNO); + $objTramiteEmBlocoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objTramiteEmBlocoDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $objTramiteEmBlocoDTO->setStrDescricao($_POST['txtDescricao']); + $objTramiteEmBlocoDTO->setStrIdxBloco(null); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + if (isset($_POST['sbmCadastrarTramiteEmBloco'])) { + try{ + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoDTO = $objTramiteEmBlocoRN->cadastrar($objTramiteEmBlocoDTO); + $objPaginaSEI->adicionarMensagem('Bloco de Trâmite externo criado com sucesso!', 5); + }catch(Exception $e){ + PaginaSEI::getInstance()->processarExcecao($e); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=md_pen_tramita_em_bloco&acao_origem=' . $_GET['acao'] . '&id_bloco=' . $objTramiteEmBlocoDTO->getNumId() . $strParametros . PaginaSEI::getInstance()->montarAncora($objTramiteEmBlocoDTO->getNumId()))); + exit(0); + } + break; + + case 'pen_tramite_em_bloco_alterar': + + $strTitulo = 'Alterar Trâmite em Bloco'; + $arrComandos[] = ''; + $strDesabilitar = 'disabled="disabled"'; + + if (isset($_GET['id_bloco'])){ + $objTramiteEmBlocoDTO->setNumId($_GET['id_bloco']); + $objTramiteEmBlocoDTO->retTodos(); + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoDTO = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + if ($objTramiteEmBlocoDTO==null){ + throw new InfraException("Registro não encontrado."); + } + } else { + $objTramiteEmBlocoDTO->setNumId($_POST['hdnIdBloco']); + $objTramiteEmBlocoDTO->setStrDescricao($_POST['txtDescricao']); + } + + $arrComandos[] = ''; + + if (isset($_POST['sbmAlterarBloco'])) { + try { + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + PaginaSEI::getInstance()->setStrMensagem('Trâmite em Bloco "'.$objTramiteEmBlocoDTO->getNumId().'" alterado com sucesso.'); + $objPaginaSEI->adicionarMensagem('Bloco de trâmite externo alterado com sucesso!', 5); + } catch (Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + header('Location: '.SessaoSEI::getInstance()->assinarLink('controlador.php?acao='.PaginaSEI::getInstance()->getAcaoRetorno().'&acao_origem='.$_GET['acao'].PaginaSEI::getInstance()->montarAncora($objTramiteEmBlocoDTO->getNumId()))); + exit(0); + } + 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(); +?> +#divIdentificacao {display:none;} +#lblIdBloco {position:absolute;left:0%;top:0%;width:25%;} +#txtIdBloco {position:absolute;left:0%;top:40%;width:25%;} + +#lblDescricao {position:absolute;left:0%;top:0%;width:95%;} +#txtDescricao {position:absolute;left:0%;top:18%;width:95%;} + +fecharStyle(); +PaginaSEI::getInstance()->montarJavaScript(); +PaginaSEI::getInstance()->abrirJavaScript(); +?> + +function inicializar(){ + + if (''=='pen_tramite_em_bloco_consultar') { + document.getElementById('divIdentificacao').style.display = 'block'; + infraDesabilitarCamposAreaDados(); + document.getElementById('btnFechar').focus(); + return; + } else if (''=='pen_tramite_em_bloco_cadastrar') { + document.getElementById('divIdentificacao').style.display = 'none'; + document.getElementById('txtDescricao').focus(); + } else { + document.getElementById('divIdentificacao').style.display = 'block'; + document.getElementById('btnCancelar').focus(); + } + + infraEfeitoTabelas(); +} + +fecharJavaScript(); +PaginaSEI::getInstance()->fecharHead(); +PaginaSEI::getInstance()->abrirBody($strTitulo,'onload="inicializar();"'); +?> +
+montarBarraComandosSuperior($arrComandos); +?> +

Atenção!! Cada bloco permite incluir e tramitar no máximo 100 processos.

+

+ + +
+
+ + +
+ + +montarAreaDebug(); +?> +
+fecharBody(); +PaginaSEI::getInstance()->fecharHtml(); +?> \ No newline at end of file diff --git a/src/pen_tramite_processo_em_bloco_cadastrar.php b/src/pen_tramite_processo_em_bloco_cadastrar.php new file mode 100644 index 000000000..3ece0f050 --- /dev/null +++ b/src/pen_tramite_processo_em_bloco_cadastrar.php @@ -0,0 +1,225 @@ +validarLink(); + + $objPaginaSEI->salvarCamposPost(array('hdnIdProtocolo', 'selBlocos')); + $strIdItensSelecionados = $objPaginaSEI->recuperarCampo('hdnIdProtocolo'); + $idBlocoExterno = $objPaginaSEI->recuperarCampo('selBlocos'); + + $strParametros = ''; + if(isset($_GET['arvore'])) { + PaginaSEI::getInstance()->setBolArvore($_GET['arvore']); + $strParametros .= '&arvore='.$_GET['arvore']; + } + + if (isset($_GET['id_procedimento'])) { + $strParametros .= "&id_procedimento=".$_GET['id_procedimento']; + } + + if (isset($strIdItensSelecionados)) { + $strParametros .= "&processos=".$strIdItensSelecionados; + } + + if (isset($_GET['processos']) && !empty($_GET['processos'])) { + $strParametros .= "&processos=".$_GET['processos']; + } + + $arrComandos = []; + $arrComandos[] = ''; + $arrComandos[] = ''; + switch($_GET['acao']) { + case 'pen_incluir_processo_em_bloco_tramite': + $objSessaoSEI->validarPermissao($_GET['acao']); + + $strTitulo = 'Incluir Processo no Bloco de Trâmite'; + + $objProcedimentoDTO = new ProcedimentoDTO(); + $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado(); + $objProcedimentoDTO->setDblIdProcedimento($_GET['id_procedimento']); + + $objProcedimentoRN = new ProcedimentoRN(); + $procedimento = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); + + if (isset($_POST['sbmCadastrarProcessoEmBloco'])) { + try{ + if ($_POST['selBlocos'] == null) { + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + exit(0); + } + + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + + $objTramiteEmBlocoProtocoloDTO->setNumId(null); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($_GET['id_procedimento']); + $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($_POST['selBlocos']); + $objTramiteEmBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($procedimento->getStrProtocoloProcedimentoFormatado()); + + $objTramiteEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $validar = $objTramiteEmBlocoProtocoloRN->validarBlocoDeTramite($_GET['id_procedimento']); + + if ($validar) { + $objPaginaSEI->adicionarMensagem($validar, InfraPagina::$TIPO_MSG_AVISO); + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + exit(0); + } + + $objTramiteEmBlocoProtocoloDTO = $objTramiteEmBlocoProtocoloRN->cadastrar($objTramiteEmBlocoProtocoloDTO); + $objPaginaSEI->adicionarMensagem('Processo "' . $procedimento->getStrProtocoloProcedimentoFormatado() . '" adicionado ao bloco', InfraPagina::$TIPO_MSG_AVISO); + + }catch(Exception $e){ + PaginaSEI::getInstance()->processarExcecao($e); + } + header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . PaginaSEI::getInstance()->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'])); + exit(0); + } + break; + case 'pen_tramita_em_bloco_adicionar': + $arrProtocolosOrigem = array_merge($objPaginaSEI->getArrStrItensSelecionados('Gerados'), $objPaginaSEI->getArrStrItensSelecionados('Recebidos')); + $strIdItensSelecionados = $strIdItensSelecionados ?: $_GET['processos']; + $strTitulo = 'Incluir Processo(s) no Bloco de Trâmite'; + + if (isset($_POST['sbmCadastrarProcessoEmBloco'])) { + + try{ + $erros = []; + $sucesso = false; + $arrProtocolosOrigemProtocolo = explode(',', $strIdItensSelecionados); + + foreach ($arrProtocolosOrigemProtocolo as $idItensSelecionados) { + + $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $tramitaEmBlocoProtocoloDTO->setDblIdProtocolo($idItensSelecionados); + $tramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($idBlocoExterno); + $tramitaEmBlocoProtocoloDTO->retNumId(); + $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $tramitaEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); + + $tramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $validar = $tramitaEmBlocoProtocoloRN->validarBlocoDeTramite($idItensSelecionados); + + if ($validar == false) { + $sucesso = true; + $objProcedimentoDTO = new ProcedimentoDTO(); + $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado(); + $objProcedimentoDTO->setDblIdProcedimento($idItensSelecionados); + + $objProcedimentoRN = new ProcedimentoRN(); + $procedimento = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); + + $tramitaEmBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($procedimento->getStrProtocoloProcedimentoFormatado()); + $objTramiteEmBlocoProtocoloDTO = $tramitaEmBlocoProtocoloRN->cadastrar($tramitaEmBlocoProtocoloDTO); + } else { + $erros = true; + $objPaginaSEI->adicionarMensagem($validar, InfraPagina::$TIPO_MSG_ERRO); + } + } + + if ($sucesso) { + $mensagemSucesso = "Processo(s) incluído(s) com sucesso no bloco {$idBlocoExterno}"; + } + + if ($sucesso && $erros) { + $mensagemSucesso = "Os demais processos selecionados foram incluídos com sucesso no bloco {$idBlocoExterno}"; + } + + $objPaginaSEI->adicionarMensagem($mensagemSucesso, 5); + + }catch(Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); + } + } + break; + default: + throw new InfraException("Ação '".$_GET['acao']."' não reconhecida."); + } + + //Monta o select dos blocos + $arrMapIdBloco = array(); + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retNumIdUnidade(); + $objTramiteEmBlocoDTO->retStrDescricao(); + PaginaSEI::getInstance()->prepararOrdenacao($objTramiteEmBlocoDTO, 'Id', InfraDTO::$TIPO_ORDENACAO_DESC); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + foreach ($objTramiteEmBlocoRN->listar($objTramiteEmBlocoDTO) as $dados) { + $arrMapIdBloco[$dados->getNumId()] = "{$dados->getNumId()} - {$dados->getStrDescricao()}"; + } + +} catch(Exception $e) { + PaginaSEI::getInstance()->processarExcecao($e); +} + // View + ob_clean(); + + $objPaginaSEI->montarDocType(); + $objPaginaSEI->abrirHtml(); + $objPaginaSEI->abrirHead(); + $objPaginaSEI->montarMeta(); + $objPaginaSEI->montarTitle($objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo); + $objPaginaSEI->montarStyle(); + $objPaginaSEI->abrirStyle(); + +?> + #divIdentificacao {display:none;} + #lblBlocos{position:absolute;left:0%;top:0%;width:60%;min-width:250px;} + #selBlocos{position:absolute;left:0%;top:13%;width:60%;min-width:250px;} + +fecharStyle(); +$objPaginaSEI->montarJavaScript(); +$objPaginaSEI->abrirJavaScript(); +?> + +function inicializar(){ + +if (''=='pen_incluir_processo_em_bloco_tramite') { + document.getElementById('divIdentificacao').style.display = 'none'; + document.getElementById('selBlocos').focus(); +} else { + document.getElementById('divIdentificacao').style.display = 'block'; + document.getElementById('btnCancelar').focus(); +} +} + +fecharJavaScript(); +$objPaginaSEI->fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); +?> + +
+ + montarBarraComandosSuperior($arrComandos); + $objPaginaSEI->abrirAreaDados('15em'); + ?> + + + + + + + + fecharAreaDados(); + $objPaginaSEI->montarBarraComandosInferior($arrComandos); + ?> + +
+ +fecharBody(); +$objPaginaSEI->fecharHtml(); +?> \ No newline at end of file diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index ac88a25d9..1ebb38188 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -1248,8 +1248,8 @@ public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objComponenteD $objComponenteDigital->assinaturaDigital = array(); foreach ($resAssinatura as $keyOrder => $assinatura) { $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setNumIdAtividade($assinatura->getNumIdAtividade()); - $objAtividadeDTO->setNumIdTarefa(array(TarefaRN::$TI_ASSINATURA_DOCUMENTO, TarefaRN::$TI_AUTENTICACAO_DOCUMENTO), InfraDTO::$OPER_IN); + $objAtividadeDTO->setNumIdAtividade($assinatura->getNumIdAtividade()); //7 + $objAtividadeDTO->setNumIdTarefa(array(TarefaRN::$TI_ASSINATURA_DOCUMENTO, TarefaRN::$TI_AUTENTICACAO_DOCUMENTO), InfraDTO::$OPER_IN); // 5, 115 $objAtividadeDTO->retDthAbertura(); $objAtividadeDTO->retNumIdAtividade(); $objAtividadeRN = new AtividadeRN(); diff --git a/src/rn/PenLoteProcedimentoRN.php b/src/rn/PenLoteProcedimentoRN.php index 7dc4f5561..6346c5b72 100755 --- a/src/rn/PenLoteProcedimentoRN.php +++ b/src/rn/PenLoteProcedimentoRN.php @@ -136,6 +136,21 @@ protected function desbloquearProcessoLoteControlado($dblIdProcedimento) $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); $objPenLoteProcedimentoRN->alterarLoteProcedimento($objPenExpedirLoteDTO); + + + // Atualizar Bloco para concluido parcialmente + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); + $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $tramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); + + if ($tramiteEmBlocoProtocolo != null) { + $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBlocoConcluidoParcialmente($tramiteEmBlocoProtocolo); + } } //Desbloqueia o processo diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 9ee6dc423..35b9357af 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -525,6 +525,20 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) $objPenProtocolo->setStrSinObteveRecusa('S'); $objPenProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); $objPenProtocoloBD->alterar($objPenProtocolo); + + // Atualizar Bloco para concluido parcialmente + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); + $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $tramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); + + if ($tramiteEmBlocoProtocolo != null) { + $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBlocoConcluidoParcialmente($tramiteEmBlocoProtocolo); + } } $this->gravarLogDebug("Notificando serviços do PEN sobre ciência da recusa do trâmite " . $numIdTramite, 2); diff --git a/src/rn/ReceberReciboTramiteRN.php b/src/rn/ReceberReciboTramiteRN.php index a5ffeb04b..5972a091a 100755 --- a/src/rn/ReceberReciboTramiteRN.php +++ b/src/rn/ReceberReciboTramiteRN.php @@ -25,39 +25,39 @@ protected function inicializarObjInfraIBanco() public function receberReciboDeTramite($parNumIdTramite) { - try{ - if (!isset($parNumIdTramite)) { - throw new InfraException('Parâmetro $parNumIdTramite não informado.'); - } + try{ + if (!isset($parNumIdTramite)) { + throw new InfraException('Parâmetro $parNumIdTramite não informado.'); + } - $this->objPenDebug->gravar("Solicitando recibo de conclusão do trâmite $parNumIdTramite"); - $objReciboTramite = $this->objProcessoEletronicoRN->receberReciboDeTramite($parNumIdTramite); + $this->objPenDebug->gravar("Solicitando recibo de conclusão do trâmite $parNumIdTramite"); + $objReciboTramite = $this->objProcessoEletronicoRN->receberReciboDeTramite($parNumIdTramite); - if (!$objReciboTramite) { - throw new InfraException("Não foi possível obter recibo de conclusão do trâmite '$parNumIdTramite'"); - } + if (!$objReciboTramite) { + throw new InfraException("Não foi possível obter recibo de conclusão do trâmite '$parNumIdTramite'"); + } - $objReciboTramite = $objReciboTramite->conteudoDoReciboDeTramite; + $objReciboTramite = $objReciboTramite->conteudoDoReciboDeTramite; - // Inicialização do recebimento do processo, abrindo nova transação e controle de concorrência, - // evitando processamento simultâneo de cadastramento do mesmo processo - $arrChavesSincronizacao = array( - "NumeroRegistro" => $objReciboTramite->recibo->NRE, - "IdTramite" => $objReciboTramite->recibo->IDT, - "IdTarefa" => ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO) - ); + // Inicialização do recebimento do processo, abrindo nova transação e controle de concorrência, + // evitando processamento simultâneo de cadastramento do mesmo processo + $arrChavesSincronizacao = array( + "NumeroRegistro" => $objReciboTramite->recibo->NRE, + "IdTramite" => $objReciboTramite->recibo->IDT, + "IdTarefa" => ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO) + ); - if($this->objProcedimentoAndamentoRN->sinalizarInicioRecebimento($arrChavesSincronizacao)){ - $this->receberReciboDeTramiteInterno($objReciboTramite); - } + if($this->objProcedimentoAndamentoRN->sinalizarInicioRecebimento($arrChavesSincronizacao)){ + $this->receberReciboDeTramiteInterno($objReciboTramite); + } - } catch(Exception $e) { - $mensagemErro = InfraException::inspecionar($e); - $this->objPenDebug->gravar($mensagemErro); - LogSEI::getInstance()->gravar($mensagemErro); - throw $e; + } catch(Exception $e) { + $mensagemErro = InfraException::inspecionar($e); + $this->objPenDebug->gravar($mensagemErro); + LogSEI::getInstance()->gravar($mensagemErro); + throw $e; + } } - } protected function receberReciboDeTramiteInternoControlado($objReciboTramite) @@ -65,6 +65,8 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) //SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $this->objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO')); ModPenUtilsRN::simularLoginUnidadeRecebimento(); + $this->objPenDebug->gravar("Recebimento ORG1"); + $strNumeroRegistro = $objReciboTramite->recibo->NRE; $numIdTramite = $objReciboTramite->recibo->IDT; $numIdTarefa = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); @@ -139,6 +141,21 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO); + // atualizar bloco de tramite externo + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($objProtocoloDTO->getDblIdProtocolo()); + $objTramiteEmBlocoProtocoloDTO->setOrdNumId(InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteEmBlocoProtocoloDTO->setNumMaxRegistrosRetorno(1); + $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramiteEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $tramiteEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloRN->consultar($objTramiteEmBlocoProtocoloDTO); + + if ($tramiteEmBlocoProtocoloDTO != null) { + $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($tramiteEmBlocoProtocoloDTO, TramiteEmBlocoRN::$TE_CONCLUIDO); + } + $this->objProcedimentoAndamentoRN->setOpts($objTramiteDTO->getStrNumeroRegistro(), $numIdTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), $objProcessoEletronicoDTO->getDblIdProcedimento()); $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento(sprintf('Trâmite do processo %s foi concluído', $objProtocoloDTO->getStrProtocoloFormatado()), 'S')); // Registra o recbimento do recibo no histórico e realiza a conclusão do processo diff --git a/src/rn/TramitaEmBlocoProtocoloRN.php b/src/rn/TramitaEmBlocoProtocoloRN.php new file mode 100644 index 000000000..e62a13043 --- /dev/null +++ b/src/rn/TramitaEmBlocoProtocoloRN.php @@ -0,0 +1,342 @@ +validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $parObjTramitaEmBlocoProtocoloDTO); + + $parObjRelBlocoProtocoloDTO = InfraString::prepararPesquisaDTO($parObjTramitaEmBlocoProtocoloDTO, "PalavrasPesquisa", "IdxRelBlocoProtocolo"); + $parObjRelBlocoProtocoloDTO->setStrStaNivelAcessoGlobalProtocolo(ProtocoloRN::$NA_SIGILOSO, InfraDTO::$OPER_DIFERENTE); + $arrObjRelProtocoloBlocoDTO = $this->listar($parObjRelBlocoProtocoloDTO); + + foreach ($arrObjRelProtocoloBlocoDTO as $dto) { + + $objPenProtocoloDTO = new PenProtocoloDTO(); + $objPenProtocoloDTO->setDblIdProtocolo($dto->getDblIdProtocolo()); + $objPenProtocoloDTO->retStrSinObteveRecusa(); + $objPenProtocoloDTO->setNumMaxRegistrosRetorno(1); + + $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); + $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); + + if (!empty($objPenProtocoloDTO)) { + $dto->setStrSinObteveRecusa($objPenProtocoloDTO->getStrSinObteveRecusa()); + } else { + $dto->setStrSinObteveRecusa('N'); + } + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($parObjTramitaEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); + $objTramiteEmBlocoDTO->retNumId(); + $objTramiteEmBlocoDTO->retStrStaEstado(); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $blocoResultado = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); + + if (!empty($blocoResultado)) { + $dto->setStrStaEstadoBloco($blocoResultado->getStrStaEstado()); + } else { + $dto->setStrStaEstadoBloco('A'); + } + + $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(true); + $objPenLoteProcedimentoDTO->setDblIdProcedimento($dto->getDblIdProtocolo()); + $objPenLoteProcedimentoDTO->setNumMaxRegistrosRetorno(1); + + $objPenLoteProcedimentoDTO->retNumIdLote(); + $objPenLoteProcedimentoDTO->retDblIdProcedimento(); + $objPenLoteProcedimentoDTO->retStrProcedimentoFormatado(); + $objPenLoteProcedimentoDTO->retNumIdAndamento(); + $objPenLoteProcedimentoDTO->retStrUnidadeDestino(); + $objPenLoteProcedimentoDTO->retStrNomeUsuario(); + $objPenLoteProcedimentoDTO->retDthRegistro(); + $objPenLoteProcedimentoDTO->setOrdNumIdLote(InfraDTO::$TIPO_ORDENACAO_DESC); + + $objPenLoteProcedimentoRN = new PenLoteProcedimentoRN(); + // $objPenLoteProcedimentoRN = $objPenLoteProcedimentoRN->consultarLoteProcedimento($objPenLoteProcedimentoDTO); + $objPenLoteProcedimentoRN = $objPenLoteProcedimentoRN->consultarLoteProcedimento($objPenLoteProcedimentoDTO); + + $dto->setObjPenLoteProcedimentoDTO($objPenLoteProcedimentoRN); + + // $objTramiteDTO = new TramiteDTO(); + // $objTramiteDTO->setNumIdProcedimento($dto->getDblIdProtocolo()); + // $objTramiteDTO->setOrd('IdTramite', InfraDTO::$TIPO_ORDENACAO_DESC); + // $objTramiteDTO->setNumMaxRegistrosRetorno(1); + // $objTramiteDTO->retNumIdTramite(); + // $objTramiteDTO->retDthRegistro(); + // $objTramiteDTO->retNumIdEstruturaDestino(); + // $objTramiteDTO->retStrNomeUsuario(); + + // $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + // $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); + + // $dto->setObjTramiteDTO($arrObjPenLoteProcedimentoRN); + + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($dto->getDblIdProtocolo()); + $objAtividadeDTO->setNumIdTarefa([ + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO) + ], InfraDTO::$OPER_IN); + $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); + $objAtividadeDTO->setNumMaxRegistrosRetorno(1); + $objAtividadeDTO->retNumIdAtividade(); + $objAtividadeDTO->retNumIdTarefa(); + $objAtividadeDTO->retDblIdProcedimentoProtocolo(); + $objAtividadeRN = new AtividadeRN(); + $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO); + + if (!empty($arrObjAtividadeDTO) && $arrObjAtividadeDTO[0]->getNumIdTarefa() != null) { + $dto->setNumStaIdTarefa($arrObjAtividadeDTO[0]->getNumIdTarefa()); + } else { + $dto->setNumStaIdTarefa(0); + } + + $ret[] = $dto; + } + + return $ret; + } catch (Exception $e) { + throw new InfraException('Erro listando protocolos do bloco.', $e); + } + } + + + + protected function consultarConectado(TramitaEmBlocoProtocoloDTO $objDTO) + { + try { + $objTramitaEmBlocoProtocoloBD = new TramitaEmBlocoProtocoloBD($this->getObjInfraIBanco()); + return $objTramitaEmBlocoProtocoloBD->consultar($objDTO); + } catch (Exception $e) { + throw new InfraException('Erro consutando blocos.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param TramitaEmBlocoProtocoloDTO $objDTO + * @return array + * @throws InfraException + */ + protected function listarControlado(TramitaEmBlocoProtocoloDTO $objDTO) + { + try { + //Valida Permissão + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_listar', __METHOD__, $objDTO); + + $objTramitaEmBlocoProtocoloBD = new TramitaEmBlocoProtocoloBD($this->getObjInfraIBanco()); + $arrTramitaEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloBD->listar($objDTO); + + return $arrTramitaEmBlocoProtocoloDTO; + } catch (\Exception $e) { + throw new InfraException('Falha na listagem de pendências de trâmite de processos em lote.', $e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param array $arrayObjDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(array $arrayObjDTO) + { + try { + //Valida Permissão + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramita_em_bloco_protocolo_excluir', __METHOD__, $arrayObjDTO); + + $arrayExcluido = array(); + + foreach ($arrayObjDTO as $objDTO) { + $objBD = new TramitaEmBlocoProtocoloBD(BancoSEI::getInstance()); + + $objPenProtocoloDTO = new PenProtocoloDTO(); + $objPenProtocoloDTO->setDblIdProtocolo($objDTO->getDblIdProtocolo()); + $objPenProtocoloDTO->retStrSinObteveRecusa(); + // $objPenProtocoloDTO->setNumMaxRegistrosRetorno(1); + + $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); + $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); + + if (!empty($objPenProtocoloDTO) && $objPenProtocoloDTO->getStrSinObteveRecusa() != 'S') { + $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumId($objDTO->getNumIdTramitaEmBloco()); + $tramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_ABERTO); + $tramiteEmBlocoDTO->retStrStaEstado(); + $tramiteEmBlocoDTO->retNumId(); + + $tramiteEmBlocoRN = new TramiteEmBlocoRN(); + $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); + + if ($tramiteEmBloco != null) { + $arrayExcluido[] = $objBD->excluir($objDTO); + } else { + return null; + } + } else { + $arrayExcluido[] = $objBD->excluir($objDTO); + } + } + return $arrayExcluido; + } catch (Exception $e) { + throw new InfraException('Erro excluindo Bloco.', $e); + } + } + + protected function montarIndexacaoControlado(TramitaEmBlocoProtocoloDTO $objTramitaEmBlocoProtocoloDTO) + { + try{ + + $dto = new TramitaEmBlocoProtocoloDTO(); + $dto->retNumId(); + + if (is_array($objTramitaEmBlocoProtocoloDTO->getNumId())) { + $dto->setNumId($objTramitaEmBlocoProtocoloDTO->getNumId(), InfraDTO::$OPER_IN); + } else { + $dto->setNumId($objTramitaEmBlocoProtocoloDTO->getNumId()); + } + + $objTramitaEmBlocoProtocoloDTOIdx = new TramitaEmBlocoProtocoloDTO(); + + $arrObjTramitaEmBlocoProtocoloDTO = $this->listar($dto); + + foreach($arrObjTramitaEmBlocoProtocoloDTO as $dto) { + + $objTramitaEmBlocoProtocoloDTOIdx->setNumId($dto->getNumId()); + $objTramitaEmBlocoProtocoloDTOIdx->setStrIdxRelBlocoProtocolo(InfraString::prepararIndexacao($dto->getNumId())); + } + + } catch(Exception $e) { + throw new InfraException('Erro montando indexação de processos em bloco.',$e); + } + } + + protected function cadastrarControlado(TramitaEmBlocoProtocoloDTO $objTramitaEmBlocoProtocoloDTO) + { + try { + + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramite_em_bloco_cadastrar', __METHOD__, $objTramitaEmBlocoProtocoloDTO); + + //Regras de Negocio + $objInfraException = new InfraException(); + + $objTramiteEmBlocoBD = new TramitaEmBlocoProtocoloBD($this->getObjInfraIBanco()); + $ret = $objTramiteEmBlocoBD->cadastrar($objTramitaEmBlocoProtocoloDTO); + + $this->montarIndexacao($ret); + + return $ret; + + } catch (Exception $e) { + throw new InfraException('Erro cadastrando Processo em Bloco.',$e); + } + } + + protected function validarBlocoDeTramiteControlado($IdProtocolo) + { + $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $tramitaEmBlocoProtocoloDTO->retNumId(); + $tramitaEmBlocoProtocoloDTO->setDblIdProtocolo($IdProtocolo); + $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $tramitaEmBlocoProtocoloDTO->retStrIdxRelBlocoProtocolo(); + + $arrTramitaEmBloco = $this->listar($tramitaEmBlocoProtocoloDTO); + + foreach ($arrTramitaEmBloco as $tramitaEmBloco) { + $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumId($tramitaEmBloco->getNumIdTramitaEmBloco()); + $tramiteEmBlocoDTO->setStrStaEstado([ + TramiteEmBlocoRN::$TE_ABERTO, + TramiteEmBlocoRN::$TE_DISPONIBILIZADO, + ], InfraDTO::$OPER_IN); + $tramiteEmBlocoDTO->retStrStaEstado(); + $tramiteEmBlocoDTO->retNumId(); + + $tramiteEmBlocoRN = new TramiteEmBlocoRN(); + $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); + + if (!empty($tramiteEmBloco)) { + return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrIdxRelBlocoProtocolo()} encontra-se inserido no bloco de número {$tramiteEmBloco->getNumId()}. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; + } + } + + return false; + } + + /** + * Atualizar Bloco de tramite externo para concluído + */ + public function atualizarEstadoDoBloco(TramitaEmBlocoProtocoloDTO $tramiteEmBlocoProtocoloDTO, $novoEstadoDoBloco) + { + // Verificar se tem existe processo recusado dentro de um bloco + $objTramiteEmBlocoProtocoloDTO2 = new TramitaEmBlocoProtocoloDTO(); + $objTramiteEmBlocoProtocoloDTO2->setNumIdTramitaEmBloco($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); + $objTramiteEmBlocoProtocoloDTO2->retNumIdTramitaEmBloco(); + $objTramiteEmBlocoProtocoloDTO2->retDblIdProtocolo(); + + $objTramiteEmBlocoProtocoloDTORN = new TramitaEmBlocoProtocoloRN($objTramiteEmBlocoProtocoloDTO2); + + $arrTramiteEmBlocoProtocolo = $objTramiteEmBlocoProtocoloDTORN->listar($objTramiteEmBlocoProtocoloDTO2); + + $objPenProtocolo = new PenProtocoloDTO(); + $objPenProtocolo->setDblIdProtocolo(InfraArray::converterArrInfraDTO($arrTramiteEmBlocoProtocolo,'IdProtocolo'), InfraDTO::$OPER_IN); + $objPenProtocolo->setStrSinObteveRecusa('S'); + $objPenProtocolo->setNumMaxRegistrosRetorno(1); + $objPenProtocolo->retDblIdProtocolo(); + + $objPenProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); + $ObjPenProtocoloDTO = $objPenProtocoloBD->consultar($objPenProtocolo); + + if ($ObjPenProtocoloDTO != null) { + return null; + } + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); + $objTramiteEmBlocoDTO->setStrStaEstado($novoEstadoDoBloco); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + + } + + /** + * Atualizar Bloco de tramite externo para concluído parcialmente + */ + public function atualizarEstadoDoBlocoConcluidoParcialmente($arrTramiteEmBlocoProtocoloDTO) + { + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($arrTramiteEmBlocoProtocoloDTO[0]->getNumIdTramitaEmBloco()); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + } +} \ No newline at end of file diff --git a/src/rn/TramiteEmBlocoRN.php b/src/rn/TramiteEmBlocoRN.php new file mode 100644 index 000000000..75c98c08e --- /dev/null +++ b/src/rn/TramiteEmBlocoRN.php @@ -0,0 +1,360 @@ +getStrStaTipo())){ + $objInfraException->adicionarValidacao('Tipo não informado.'); + }else{ + if (!in_array($objTramiteEmBlocoDTO->getStrStaTipo(), InfraArray::converterArrInfraDTO($this->listarValoresTipo(),'StaTipo'))){ + $objInfraException->adicionarValidacao('Tipo inválido.'); + } + } + } + + private function validarNumIdUsuario(TramiteEmBlocoDTO $objTramiteEmBlocoDTO, InfraException $objInfraException) { + if (InfraString::isBolVazia($objTramiteEmBlocoDTO->getNumIdUsuario())){ + $objInfraException->adicionarValidacao('Usuário não informado.'); + } + } + + private function validarStrDescricao(TramiteEmBlocoDTO $objTramiteEmBlocoDTO, InfraException $objInfraException){ + if (InfraString::isBolVazia($objTramiteEmBlocoDTO->getStrDescricao())) { + $objTramiteEmBlocoDTO->setStrDescricao(null); + } else { + $objTramiteEmBlocoDTO->setStrDescricao(trim($objTramiteEmBlocoDTO->getStrDescricao())); + $objTramiteEmBlocoDTO->setStrDescricao(InfraUtil::filtrarISO88591($objTramiteEmBlocoDTO->getStrDescricao())); + if (strlen($objTramiteEmBlocoDTO->getStrDescricao()) > $this->getNumMaxTamanhoDescricao()){ + $objInfraException->adicionarValidacao('Descrição possui tamanho superior a ' .$this->getNumMaxTamanhoDescricao(). ' caracteres.'); + } + + } + } + + private function validarStrIdxBloco(TramiteEmBlocoDTO $objTramiteEmBlocoDTO, InfraException $objInfraException){ + if (InfraString::isBolVazia($objTramiteEmBlocoDTO->getStrIdxBloco())){ + $objTramiteEmBlocoDTO->setStrIdxBloco(null); + }else{ + $objTramiteEmBlocoDTO->setStrIdxBloco(trim($objTramiteEmBlocoDTO->getStrIdxBloco())); + if (strlen($objTramiteEmBlocoDTO->getStrIdxBloco()) > 500){ + $objInfraException->adicionarValidacao('Indexação possui tamanho superior a 500 caracteres.'); + } + + } + } + + private function validarStrStaEstado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO, InfraException $objInfraException){ + if (InfraString::isBolVazia($objTramiteEmBlocoDTO->getStrStaEstado())) { + $objInfraException->adicionarValidacao('Estado não informado.'); + } else { + + if (!in_array($objTramiteEmBlocoDTO->getStrStaEstado(), InfraArray::converterArrInfraDTO($this->listarValoresEstado(), 'StaEstado'))){ + $objInfraException->adicionarValidacao('Estado inválido.'); + } + + } + } + + public function listarValoresTipo(){ + try { + + $arrObjTipoDTO = array(); + + $objTipoDTO = new TipoDTO(); + $objTipoDTO->setStrStaTipo(self::$TB_INTERNO); + $objTipoDTO->setStrDescricao('Interno'); + $arrObjTipoDTO[] = $objTipoDTO; + + + return $arrObjTipoDTO; + + }catch(Exception $e){ + throw new InfraException('Erro listando valores de Tipo.', $e); + } + } + + public function listarValoresEstado() { + try { + $arrEstadoBlocoDescricao = $this->retornarEstadoDescricao(); + $objArrEstadoBlocoDTO = array(); + foreach ($arrEstadoBlocoDescricao as $TE_Estado => $estadoDescricao) { + $objEstadoBlocoDTO = new EstadoBlocoDTO(); + $objEstadoBlocoDTO->setStrStaEstado($TE_Estado); + $objEstadoBlocoDTO->setStrDescricao($estadoDescricao); + $objArrEstadoBlocoDTO[] = $objEstadoBlocoDTO; + } + + return $objArrEstadoBlocoDTO; + + } catch(Exception $e) { + throw new InfraException('Erro listando valores de Estado.',$e); + } + } + + public function retornarEstadoDescricao($estado = null) { + try { + $arrEstadoBloco = [ + self::$TE_ABERTO => 'Aberto', + self::$TE_DISPONIBILIZADO => 'Em processamento', + self::$TE_CONCLUIDO => 'Concluído', + self::$TE_CONCLUIDO_PARCIALMENTE => 'Concluído Parcialmente', + self::$TE_RETORNADO => 'Retornado', + ]; + + return $estado ? $arrEstadoBloco[$estado] : $arrEstadoBloco; + + } catch(Exception $e) { + throw new InfraException('Estado nâo encontrado.',$e); + } + } + + protected function listarConectado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO) { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('md_pen_tramita_em_bloco',__METHOD__,$objTramiteEmBlocoDTO); + + + if ($objTramiteEmBlocoDTO->isRetStrTipoDescricao()) { + $objTramiteEmBlocoDTO->retStrStaTipo(); + } + + $objTramiteEmBlocoBD = new TramiteEmBlocoBD($this->getObjInfraIBanco()); + $ret = $objTramiteEmBlocoBD->listar($objTramiteEmBlocoDTO); + + if ($objTramiteEmBlocoDTO->isRetStrTipoDescricao()) { + $arrObjTipoDTO = $this->listarValoresTipo(); + foreach ($ret as $dto) { + foreach ($arrObjTipoDTO as $objTipoDTO) { + if ($dto->getStrStaTipo() == $objTipoDTO->getStrStaTipo()){ + $dto->setStrTipoDescricao($objTipoDTO->getStrDescricao()); + break; + } + } + } + } + return $ret; + + } catch(Exception $e) { + throw new InfraException('Erro listando Tramite em Blocos.',$e); + } + } + + protected function montarIndexacaoControlado(TramiteEmBlocoDTO $obTramiteEmBlocoDTO){ + try{ + + $dto = new TramiteEmBlocoDTO(); + $dto->retNumId(); + $dto->retStrDescricao(); + + if (is_array($obTramiteEmBlocoDTO->getNumId())) { + $dto->setNumId($obTramiteEmBlocoDTO->getNumId(), InfraDTO::$OPER_IN); + } else { + $dto->setNumId($obTramiteEmBlocoDTO->getNumId()); + } + + $objTramiteEmBlocoDTOIdx = new TramiteEmBlocoDTO(); + $objInfraException = new InfraException(); + $objTramiteEmBlocoBD = new TramiteEmBlocoBD($this->getObjInfraIBanco()); + + $arrObjTramiteEmBlocoDTO = $this->listar($dto); + + foreach($arrObjTramiteEmBlocoDTO as $dto) { + + $objTramiteEmBlocoDTOIdx->setNumId($dto->getNumId()); + $objTramiteEmBlocoDTOIdx->setStrIdxBloco(InfraString::prepararIndexacao($dto->getNumId().' '.$dto->getStrDescricao())); + + $this->validarStrIdxBloco($objTramiteEmBlocoDTOIdx, $objInfraException); + $objInfraException->lancarValidacoes(); + + $objTramiteEmBlocoBD->alterar($objTramiteEmBlocoDTOIdx); + } + + } catch(Exception $e) { + throw new InfraException('Erro montando indexação de bloco.',$e); + } + } + + protected function cadastrarControlado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO) { + try { + + //Valida Permissao +// / SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramite_em_bloco_cadastrar',__METHOD__,$objTramiteEmBlocoDTO); + + //Regras de Negocio + $objInfraException = new InfraException(); + + + $this->validarStrStaTipo($objTramiteEmBlocoDTO, $objInfraException); + $this->validarNumIdUsuario($objTramiteEmBlocoDTO, $objInfraException); + $this->validarStrDescricao($objTramiteEmBlocoDTO, $objInfraException); + $this->validarStrIdxBloco($objTramiteEmBlocoDTO, $objInfraException); + $this->validarStrStaEstado($objTramiteEmBlocoDTO, $objInfraException); + + + $objInfraException->lancarValidacoes(); + + $objTramiteEmBlocoBD = new TramiteEmBlocoBD($this->getObjInfraIBanco()); + $ret = $objTramiteEmBlocoBD->cadastrar($objTramiteEmBlocoDTO); + + $this->montarIndexacao($ret); + + return $ret; + + } catch (Exception $e) { + throw new InfraException('Erro cadastrando Bloco.',$e); + } + } + + protected function consultarConectado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO){ + try { + + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramite_em_bloco_consultar',__METHOD__,$objTramiteEmBlocoDTO); + + if ($objTramiteEmBlocoDTO->isRetStrTipoDescricao()) { + $objTramiteEmBlocoDTO->retStrStaTipo(); + } + + $objTramiteEmBlocoBD = new TramiteEmBlocoBD($this->getObjInfraIBanco()); + $ret = $objTramiteEmBlocoBD->consultar($objTramiteEmBlocoDTO); + + if ($ret != null){ + if ($objTramiteEmBlocoDTO->isRetStrTipoDescricao()) { + $arrObjTipoDTO = $this->listarValoresTipo(); + foreach ($arrObjTipoDTO as $objTipoDTO) { + if ($ret->getStrStaTipo() == $objTipoDTO->getStrStaTipo()){ + $ret->setStrTipoDescricao($objTipoDTO->getStrDescricao()); + break; + } + } + } + } + //Auditoria + + return $ret; + } catch (Exception $e) { + throw new InfraException('Erro consultando Bloco.',$e); + } + } + + protected function alterarControlado(TramiteEmBlocoDTO $objTramiteEmBlocoDTO){ + try { + + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('pen_tramite_em_bloco_alterar',__METHOD__,$objTramiteEmBlocoDTO); + + //Regras de Negocio + $objInfraException = new InfraException(); + + $dto = new TramiteEmBlocoDTO(); + $dto->retStrStaTipo(); + $dto->setNumId($objTramiteEmBlocoDTO->getNumId()); + + $dto = $this->consultar($dto); + + if ($objTramiteEmBlocoDTO->isSetStrStaTipo() && $objTramiteEmBlocoDTO->getStrStaTipo()!=$dto->getStrStaTipo()){ + $objInfraException->lancarValidacao('Não é possível alterar o tipo do bloco.'); + } + + $objTramiteEmBlocoDTO->setStrStaTipo($dto->getStrStaTipo()); + + if ($objTramiteEmBlocoDTO->isSetStrStaTipo()){ + $this->validarStrStaTipo($objTramiteEmBlocoDTO, $objInfraException); + } + if ($objTramiteEmBlocoDTO->isSetNumIdUsuario()){ + $this->validarNumIdUsuario($objTramiteEmBlocoDTO, $objInfraException); + } + if ($objTramiteEmBlocoDTO->isSetStrDescricao()){ + $this->validarStrDescricao($objTramiteEmBlocoDTO, $objInfraException); + } + if ($objTramiteEmBlocoDTO->isSetStrIdxBloco()){ + $this->validarStrIdxBloco($objTramiteEmBlocoDTO, $objInfraException); + } + if ($objTramiteEmBlocoDTO->isSetStrStaEstado()){ + $this->validarStrStaEstado($objTramiteEmBlocoDTO, $objInfraException); + } + + $objInfraException->lancarValidacoes(); + + $objTramiteEmBlocoBD = new TramiteEmBlocoBD($this->getObjInfraIBanco()); + $objTramiteEmBlocoBD->alterar($objTramiteEmBlocoDTO); + + $this->montarIndexacao($objTramiteEmBlocoDTO); + + //Auditoria + + } catch (Exception $e){ + throw new InfraException('Erro alterando Bloco.',$e); + } + } + + /** + * Método utilizado para exclusão de dados. + * @param array $arrayObjDTO + * @return array + * @throws InfraException + */ + protected function excluirControlado(array $arrayObjDTO) + { + try { + //Valida Permissao + SessaoSEI::getInstance()->validarAuditarPermissao('md_pen_tramita_em_bloco_excluir',__METHOD__,$arrayObjDTO); + + $arrayExcluido = array(); + foreach ($arrayObjDTO as $objDTO) { + $objBD = new TramiteEmBlocoBD(BancoSEI::getInstance()); + $arrayExcluido[] = $objBD->excluir($objDTO); + } + return $arrayExcluido; + } catch (Exception $e) { + throw new InfraException('Erro excluindo Bloco.', $e); + } + } + + protected function cancelarControlado(array $blocoIds) + { + try { + $objBloco = new TramitaEmBlocoProtocoloDTO(); + foreach ($blocoIds as $blocoId) { + $objBloco->setNumIdTramitaEmBloco($blocoId); + $objBloco->retDblIdProtocolo(); + $tramiteEmBlocoProtocoloRn = new TramitaEmBlocoProtocoloRN(); + $protocoloIds = $tramiteEmBlocoProtocoloRn->listar($objBloco); + $protocoloRn = new ExpedirProcedimentoRN(); + foreach ($protocoloIds as $protocoloId) { + $protocoloRn->cancelarTramite($protocoloId->getDblIdProtocolo()); + } + } + } catch (Exception $e) { + throw new InfraException('Erro cancelando Bloco.', $e); + } + } + +} \ No newline at end of file diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index 1fbd5fa3e..114e992d2 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -275,6 +275,8 @@ protected function atualizarVersaoConectado() $this->instalarV3040(); case '3.4.0': $this->instalarV3050(); + case '3.5.0': + $this->instalarV3060(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -2637,8 +2639,76 @@ protected function instalarV3050() $this->atualizarNumeroVersao("3.5.0"); } -} + // novo tramite em bloco + protected function instalarV3060() { + $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); + + $objMetaBD = $this->objMeta; + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_tramita_em_bloco', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'id_usuario' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'descricao' => array($objMetaBD->tipoTextoVariavel(255), PenMetaBD::SNULLO), + 'idx_bloco' => array($objMetaBD->tipoTextoVariavel(500), PenMetaBD::SNULLO), + 'sta_tipo' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::SNULLO), + 'sta_estado' => array($objMetaBD->tipoTextoFixo(1), PenMetaBD::SNULLO), + ), + 'pk' => array('cols' => array('id')), + 'uk' => array(), + 'fks' => array( + 'unidade' => array('nome' => 'fk_tramite_bloco_unidade', 'cols' => array('id_unidade', 'id_unidade')), + 'usuario' => array('nome' => 'fk_tramite_bloco_usuario', 'cols' => array('id_usuario', 'id_usuario')), + ) + )); + + # 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_tramita_em_bloco'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_tramita_em_bloco', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_tramita_em_bloco'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + $objMetaBD->criarTabela(array( + 'tabela' => 'md_pen_tramita_bl_protocolo', + 'cols' => array( + 'id' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'id_protocolo' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), + 'id_tramita_em_bloco' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO), + 'sequencia' => array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'idx_rel_bloco_protocolo' => array($objMetaBD->tipoTextoVariavel(4000), PenMetaBD::SNULLO), + ), + 'pk' => array('cols' => array('id')), + 'uk' => array('id_protocolo', 'id_tramita_em_bloco', 'sequencia'), + 'fks' => array( + 'protocolo' => array('nome' => 'fk_tramita_bl_protocolo', 'cols' => array('id_protocolo', 'id_protocolo')), + ) + )); + + //Sequência: md_pen_tramita_bl_protocolo + $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_tramita_bl_protocolo'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_tr_bl_protocolo', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_tramita_bl_protocolo'); + $objInfraSequenciaDTO->retStrNome(); + $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO); + $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO); + + $this->atualizarNumeroVersao("3.6.0"); + } + +} try { session_start(); diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index de30e0de8..5b34cbead 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -1,7 +1,7 @@ instalarV3040(); case '3.4.0': $this->instalarV3050(); + case '3.5.0': + $this->instalarV3060(); break; // Ausência de [break;] proposital para realizar a atualização incremental de versões default: @@ -461,6 +463,26 @@ protected function consultarRecurso($numIdSistema, $strNomeRecurso) return $objRecursoDTO->getNumIdRecurso(); } + protected function consultarItemMenu($numIdSistema, $strNomeRecurso) + { + $numIdRecurso = $this->consultarRecurso($numIdSistema, $strNomeRecurso); + + $objItemMenuDTO = new ItemMenuDTO(); + $objItemMenuDTO->setBolExclusaoLogica(false); + $objItemMenuDTO->setNumIdSistema($numIdSistema); + $objItemMenuDTO->setNumIdRecurso($numIdRecurso); + $objItemMenuDTO->retNumIdMenu(); + $objItemMenuDTO->retNumIdItemMenu(); + + $objItemMenuRN = new ItemMenuRN(); + $objItemMenuDTO = $objItemMenuRN->consultar($objItemMenuDTO); + + if ($objItemMenuDTO == null){ + throw new InfraException("Item de menu não pode ser localizado."); + } + + return array($objItemMenuDTO->getNumIdItemMenu(), $objItemMenuDTO->getNumIdMenu(), $numIdRecurso); + } /** * Cria um novo menu lateral para o sistema SEI * @@ -1920,6 +1942,93 @@ protected function instalarV3050() $this->atualizarNumeroVersao("3.5.0"); } + protected function instalarV3060() + { + + $numIdSistema = $this->getNumIdSistema('SEI'); + $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); + // adicionar permissão + $idPerfilAdm = ScriptSip::obterIdPerfil($numIdSistema, "Administrador"); + $idPerfilBasico = ScriptSip::obterIdPerfil($numIdSistema, "Básico"); + + // Adicionar menu + $this->logar('Atribuição de permissões do módulo ao perfil do SEI'); + + try { + // Remove item de menu anterior e seus submenus configurados de forma errada + $numIdItemMenuMapTipDoc = ScriptSip::obterIdItemMenu($numIdSistema, $numIdMenu, 'Processos Tramitados Externamente'); + ScriptSip::removerItemMenu($numIdSistema, $numIdMenu, $numIdItemMenuMapTipDoc); + + $numIdItemMenuMapTipDoc = ScriptSip::obterIdItemMenu($numIdSistema, $numIdMenu, 'Processos Tramitados em Lote'); + ScriptSip::removerItemMenu($numIdSistema, $numIdMenu, $numIdItemMenuMapTipDoc); + } catch (\Exception $e) { + $this->logar("Item de menu de mapeamento de tipos de documentos não pode ser localizado"); + } + + //---------------------------------------------------------------------- + // Tramita.GOV.BR + //---------------------------------------------------------------------- + $numIdRecurso1 = $this->criarRecurso('pen_procedimento_expedido_listar', 'Tramita.GOV.BR', $numIdSistema); + $numIdRecurso2 = $this->criarRecurso('md_pen_tramita_em_bloco', 'Blocos de Trâmite Externo', $numIdSistema); + $numIdRecurso3 = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos Tramitados Externamente', $numIdSistema); + $numIdRecurso4 = $this->criarRecurso('pen_expedir_lote_listar', 'Processos Tramitados em Lote', $numIdSistema); + + $this->criarRecurso('md_pen_tramita_em_bloco_cadastrar', 'Cadastrar Bloco de Tramite Externo', $numIdSistema); + $this->criarRecurso('md_pen_tramita_em_bloco_alterar', 'Alterar Descrição do bloco de Tramite Externo', $numIdSistema); + $this->criarRecurso('md_pen_tramita_em_bloco_excluir', 'Excluir processos do bloco de Tramite Externo', $numIdSistema); + $this->criarRecurso('pen_tramite_em_bloco_consultar', 'Alterar Descrição do bloco de Tramite Externo', $numIdSistema); + $this->criarRecurso('pen_tramita_em_bloco_protocolo_listar', 'Listar Processos do bloco de Tramite Externo', $numIdSistema); + $this->criarRecurso('pen_tramita_em_bloco_protocolo_excluir', 'Excluir processos do bloco de Tramite Externo', $numIdSistema); + $this->criarRecurso('pen_tramita_em_bloco_protocolo_cancelar', 'Cancelar processos do bloco de Tramite Externo', $numIdSistema); + + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilAdm, 'pen_procedimento_expedido_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilAdm, 'md_pen_tramita_em_bloco'); + + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilAdm, 'pen_expedir_lote_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'md_pen_tramita_em_bloco'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'md_pen_tramita_em_bloco_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_tramite_em_bloco_cadastrar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_tramite_em_bloco_alterar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_tramite_em_bloco_consultar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_tramite_em_bloco_cancelar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_tramita_em_bloco_protocolo_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_tramita_em_bloco_protocolo_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_tramita_em_bloco_protocolo_cancelar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $idPerfilBasico, 'pen_incluir_processo_em_bloco_tramite'); + + $idMenuTramita = $this->criarMenu('Tramita.GOV.BR', 55, null, $numIdMenu, $numIdRecurso1, $numIdSistema); + $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso1, $numIdMenu, $idMenuTramita); + + $idMenuBlocoTramiteExterno = $this->criarMenu('Blocos de Trâmite Externo', 56, $idMenuTramita, $numIdMenu, $numIdRecurso2, $numIdSistema); + $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso2, $numIdMenu, $idMenuBlocoTramiteExterno); + + $idMenuProcessoTramitadosExterno = $this->criarMenu('Processos Tramitados Externamente', 57, $idMenuTramita, $numIdMenu, $numIdRecurso3, $numIdSistema); + $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso3, $numIdMenu, $idMenuProcessoTramitadosExterno); + + $idMenuProcessoTramitadosLote = $this->criarMenu('Processos Tramitados em Lote', 58, $idMenuTramita, $numIdMenu, $numIdRecurso4, $numIdSistema); + $this->cadastrarRelPergilItemMenu($idPerfilAdm, $numIdRecurso4, $numIdMenu, $idMenuProcessoTramitadosLote); + + if (InfraUtil::compararVersoes(SIP_VERSAO, ">=", "3.0.0")) { + $objItemMenuDTO = new ItemMenuDTO(); + $objItemMenuDTO->setNumIdItemMenu($idMenuTramita); + $objItemMenuDTO->setNumIdSistema($numIdSistema); + $objItemMenuDTO->setStrRotulo('Tramita.GOV.BR'); + $objItemMenuDTO->retNumIdMenu(); + $objItemMenuDTO->retNumIdItemMenu(); + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance()); + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + if (isset($objItemMenuDTO)) { + $objItemMenuDTO->setStrIcone('pen_tramite_externo_lote.svg'); + $objItemMenuDTO->setStrDescricao('Blocos de Trâmite Externo'); + $objItemMenuBD->alterar($objItemMenuDTO); + } + + } + + $this->atualizarNumeroVersao("3.6.0"); + } + /** * Cadastrar item do menu em um perfil expecifico * diff --git a/tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php new file mode 100644 index 000000000..1f980863f --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -0,0 +1,238 @@ +test->frame(null); + $xpath = "//a[contains(@href, 'acao=md_pen_tramita_em_bloco')]"; + $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) + { + $this->selectRepositorio($estrutura); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @return string + */ + private function selectRepositorio($siglaRepositorio) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade'); + $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')->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(); + } + + public function novoBlocoDeTramite() + { + $this->test->byId("bntNovo")->click(); + } + + + public function criarNovoBloco() + { + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } + + public function editarBlocoDeTramite($descricao = null) + { + $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); + + if ($descricao != null) { + $this->test->byId('txtDescricao')->clear(); + $this->test->byId('txtDescricao')->value($descricao); + } + } + + public function selecionarExcluirBloco() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) + { + // Preencher parâmetros do trâmite + $this->selectRepositorio($repositorio); + $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); + $this->btnEnviar(); + + if ($callbackEnvio == null) { + $mensagemAlerta = null; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if ($mensagemAlerta) { + throw new Exception($mensagemAlerta); + } + } + + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + + if (isset($mensagemAlerta)) { + throw new Exception($mensagemAlerta); + } + + $callbackEnvio = $callbackEnvio ?: function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + }; + + try { + $this->test->waitUntil($callbackEnvio, $timeout); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + sleep(1); + } + + public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) + { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + + $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + print_r(count($listaDocumentos)); + + sleep(5); + + die('aki'); + } + + public function retornarTextoColunaDaTabelaDeBlocos() + { + $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); + $terceiraColuna = $tabela->byXPath('./td[3]'); + + return $terceiraColuna->text(); + } + + public function retornarQuantidadeDeProcessosNoBloco() + { + // Localiza todas as linhas da tabela com o XPath + $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + // Obtém o número de linhas + return count($linhasDaTabela); + } + + + public function bntTramitarBloco() + { + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } + + public function bntVisualizarProcessos() + { + $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); + } + + public function btnSalvar() + { + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } + + public function btnEnviar() + { + $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); + $buttonElement->click(); + } + +} \ No newline at end of file diff --git a/tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php new file mode 100644 index 000000000..588d53113 --- /dev/null +++ b/tests_sei3/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -0,0 +1,80 @@ +test->byCssSelector('input[title="' . $numProtocolo . '"]'); + $checkbox->click(); + } + } + + /** + * Selecionar tramite em bloco + * @return void + */ + public function selecionarTramiteEmBloco() + { + $btnTramiteEmBloco = $this->test->byXPath( + "//img[@alt='". utf8_encode("Incluir Processos no Bloco de Trâmite") ."']" + ); + $btnTramiteEmBloco->click(); + } + + /** + * Selecionar bloco + * @param string $selAndamento + * @return void + */ + public function selecionarBloco() + { + $select = $this->test->select($this->test->byId('selBlocos')); + $select->selectOptionByValue(); + } + + /** + * Clicar em salvar + * @return void + */ + public function clicarSalvar() + { + $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); + $btnSalvar->click(); + } + + /** + * 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; + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/tests/CenarioBaseTestCase.php b/tests_sei3/funcional/tests/CenarioBaseTestCase.php index 235f37a86..13bc481d8 100755 --- a/tests_sei3/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei3/funcional/tests/CenarioBaseTestCase.php @@ -44,6 +44,8 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaTramiteMapeamentoOrgaoExterno = null; protected $paginaExportarTiposProcesso = null; protected $paginaTipoProcessoReativar = null; + protected $paginaCadastrarProcessoEmBloco = null; + protected $paginaTramiteEmBloco = null; public function setUpPage(): void { @@ -66,6 +68,8 @@ public function setUpPage(): void $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); + $this->paginaCadastrarProcessoEmBloco = new PaginaCadastrarProcessoEmBloco($this); + $this->paginaTramiteEmBloco = new PaginaTramiteEmBloco($this); $this->currentWindow()->maximize(); } @@ -527,8 +531,11 @@ protected function validarDadosDocumento($nomeDocArvore, $dadosDocumento, $desti protected function validarProcessosTramitados($protocolo, $deveExistir) { $this->frame(null); - $this->byXPath("//img[contains(@title, 'Controle de Processos')]")->click(); - $this->byLinkText("Processos Tramitados Externamente")->click(); + $this->paginaBase->navegarParaControleProcesso(); + $xpath = "//a[contains(@href, 'acao=pen_procedimento_expedido_listar')]"; + $link = $this->byXPath($xpath); + $url = $link->attribute('href'); + $this->url($url); $this->assertEquals($deveExistir, $this->paginaProcessosTramitadosExternamente->contemProcesso($protocolo)); } diff --git a/tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php new file mode 100644 index 000000000..99b723389 --- /dev/null +++ b/tests_sei3/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -0,0 +1,76 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $penMapUnidadesFixture = new PenMapUnidadesFixture(CONTEXTO_ORGAO_A, [ + 'id' => self::$remetente['ID_ESTRUTURA'], + 'sigla' => self::$remetente['SIGLA_ESTRUTURA'], + 'nome' => self::$remetente['NOME_UNIDADE'] + ]); + $penMapUnidadesFixture->gravar(); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Bloco de Trâmite externo criado com sucesso!'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } + + /** + * Teste para editar bloco de trâmite externo já criado + * + * @return void + */ + public function test_editar_bloco_de_tramite() + { + 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->editarBlocoDeTramite('Bloco editado para teste automatizado'); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Bloco de trâmite externo alterado com sucesso!'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php b/tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php new file mode 100644 index 000000000..aab957f59 --- /dev/null +++ b/tests_sei3/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php @@ -0,0 +1,144 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + } + + /** + * Teste de inclusão de processo em bloco + * @return void + */ + public function teste_incluir_processo_em_bloco() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->cadastrarBlocoDeTramite(); + $this->paginaBase->navegarParaControleProcesso(); + $this->cadastrarProcessos(); + + $this->paginaBase->navegarParaControleProcesso(); + // $this->paginaTramiteEmBloco->selecionarProcessos([self::$protocoloTeste]); + $this->paginaTramiteEmBloco->selecionarProcessos(self::$protocoloTeste); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Processo(s) incluído(s) com sucesso no bloco'), + $mensagem + ); + + // $this->paginaBase->sairSistema(); + } + + /** + * Teste de inclusão do mesmo processo em bloco + * @return void + */ + public function teste_mesmo_processo_em_bloco() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + // $this->paginaTramiteEmBloco->selecionarProcessos([self::$protocoloTeste]); + $this->paginaTramiteEmBloco->selecionarProcessos(self::$protocoloTeste); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Prezado(a) usuário(a), o processo ' . self::$protocoloTeste + . ' encontra-se inserido no bloco de número '), + $mensagem + ); + + $this->paginaBase->sairSistema(); + + // $this->paginaBase->navegarParaControleProcesso(); + // $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + // $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + // $this->paginaTramiteEmBloco->clicarSalvar(); + // sleep(2); + // $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + // $this->assertStringContainsString( + // utf8_encode( + // 'Prezado(a) usuário(a), o processo ' . $this->objProtocoloDTO->getStrProtocoloFormatado() + // . ' encontra-se inserido no bloco de número ' . $this->objBlocoDeTramiteDTO->getNumId() . '.' + // . ' Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + // ), + // $mensagem + // ); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarBlocoDeTramite() + { + + // Configuração do dados para teste do cenário + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Bloco de Trâmite externo criado com sucesso!'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarProcessos() + { + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$documentoTeste = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/tests/TramiteBlocoExternoTest.php b/tests_sei3/funcional/tests/TramiteBlocoExternoTest.php new file mode 100644 index 000000000..37722e40b --- /dev/null +++ b/tests_sei3/funcional/tests/TramiteBlocoExternoTest.php @@ -0,0 +1,113 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + } + + public function teste_incluir_processo_em_bloco() + { + self::$remetente = $this->definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->cadastrarBlocoDeTramite(); + $this->paginaBase->navegarParaControleProcesso(); + $this->cadastrarProcessos(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaBase->navegarParaControleProcesso(); + // $this->paginaTramiteEmBloco->selecionarProcessos([self::$protocoloTeste]); + $this->paginaTramiteEmBloco->selecionarProcessos(self::$protocoloTeste); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->clicarSalvar(); + + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + + $this->assertStringContainsString( + utf8_encode('Processo(s) incluído(s) com sucesso no bloco'), + $mensagem + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + + // $this->paginaBase->sairSistema(); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarBlocoDeTramite() + { + + // Configuração do dados para teste do cenário + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagemRetornoAlert = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); + $menssagemValidacao = utf8_encode('Bloco de Trâmite externo criado com sucesso!'); + + $this->assertStringContainsString( + $menssagemValidacao, + $mensagemRetornoAlert + ); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarProcessos() + { + self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); + self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); + + self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); + // self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); + + // $documentos = array(self::$documentoTeste1, self::$documentoTeste2); + + $documentosTeste = array_key_exists('TIPO', self::$documentoTeste1) ? array(self::$documentoTeste1) : self::$documentoTeste1; + foreach ($documentosTeste as $doc) { + if ($doc['TIPO'] == 'G') { + $this->cadastrarDocumentoInterno($doc); + $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); + } else if ($doc['TIPO'] == 'R') { + $this->cadastrarDocumentoExterno($doc); + } + } + } +} \ No newline at end of file diff --git a/tests_sei3/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php b/tests_sei3/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php deleted file mode 100755 index b78f0954c..000000000 --- a/tests_sei3/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php +++ /dev/null @@ -1,107 +0,0 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Seleciona todos os processos para tramitação em lote - $this->selecionarProcessos(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false); - - } - - /** - * Teste de cancelamento de trâmite com processo contendo documento externo - * - * @group envio - * @large - * - * @depends test_cancelamento_tramite_contendo_documento_interno - * - * @return void - */ - public function test_cancelamento_tramite_contendo_documento_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->abrirProcesso(self::$protocoloTeste); - - $this->paginaProcesso->cancelarTramitacaoExterna(); - $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); - $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); - $this->assertFalse($this->paginaProcesso->processoBloqueado()); - $this->assertTrue($this->paginaProcesso->processoAberto()); - - } - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_cancelamento_tramite_contendo_documento_externo - * - * @return void - */ - public function test_verificar_cancelamento_processo_lote() - { - - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $this->navegarProcessoEmLote(7, self::$protocoloTeste); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $this->assertStringContainsString(self::$protocoloTeste, $paginaTramitarProcessoEmLote->informacaoLote()); - return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); - - } - -} diff --git a/tests_sei3/funcional/tests/TramiteProcessoEmLoteTest.php b/tests_sei3/funcional/tests/TramiteProcessoEmLoteTest.php deleted file mode 100755 index ab1316cb5..000000000 --- a/tests_sei3/funcional/tests/TramiteProcessoEmLoteTest.php +++ /dev/null @@ -1,102 +0,0 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste1); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); - - // Seleciona todos os processos para tramitação em lote - $this->selecionarProcessos(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false); - - } - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_tramitar_processo_em_lote - * - * @return void - */ - public function test_verificar_envio_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - $this->navegarProcessoEmLote(0); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); - return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); - - sleep(5); - } - - /** - * Teste de verificação do correto recebimento do processo no destino - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_envio_processo - * - * @return void - */ - public function test_verificar_recebimento_processo_destino() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); - } - -} diff --git a/tests_sei4/funcional/assets/cron.d/sei b/tests_sei4/funcional/assets/cron.d/sei old mode 100755 new mode 100644 diff --git a/tests_sei4/funcional/assets/cron.d/sip b/tests_sei4/funcional/assets/cron.d/sip old mode 100755 new mode 100644 diff --git a/tests_sei4/funcional/bootstrap.php b/tests_sei4/funcional/bootstrap.php index 8fb3da6b3..57ab2bdc8 100755 --- a/tests_sei4/funcional/bootstrap.php +++ b/tests_sei4/funcional/bootstrap.php @@ -1,7 +1,17 @@ cadastrar( + [ + 'IdProtocolo' => $dados['IdProtocolo'], + 'IdTarefa' => \TarefaRN::$TI_ANEXADO_PROCESSO,//101 + ] + ); + $objAtividadeFixture->cadastrar( + [ + 'IdProtocolo' => $dados['IdDocumento'], + 'IdTarefa' => \TarefaRN::$TI_ANEXADO_AO_PROCESSO,//102 + 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, + 'Conclusao' => InfraData::getStrDataHoraAtual(), + + ] + ); + $objAtividadeFixture->cadastrar( + [ + 'IdProtocolo' => $dados['IdDocumento'], + 'IdTarefa' => \TarefaRN::$TI_CONCLUSAO_AUTOMATICA_UNIDADE,//41 + 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, + 'Conclusao' => InfraData::getStrDataHoraAtual(), + ] + ); + + $parametros = [ + 'IdProtocolo' => $dados['IdProtocolo'], // idprotocolo1 + 'IdDocumento' => $dados['IdDocumento'], // idprotocolo2 + 'Associacao' => 2, + ]; + $objRelProtocoloProtocoloFixture = new RelProtocoloProtocoloFixture(); + $objRelProtocoloProtocoloFixtureDTO = $objRelProtocoloProtocoloFixture->carregar($parametros); + return $objRelProtocoloProtocoloFixtureDTO; + + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/Anexofixture.php b/tests_sei4/funcional/src/fixtures/Anexofixture.php new file mode 100644 index 000000000..746d98dc6 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/Anexofixture.php @@ -0,0 +1,74 @@ +setNumIdUnidade($dados['IdUnidade'] ?: '110000001'); + $objAnexoDTO->setDblIdProtocolo($dados['IdProtocolo']); + $objAnexoDTO->setNumTamanho($dados['Tamanho'] ?: 16); + $objAnexoDTO->setNumIdBaseConhecimento($dados['IdBaseConhecimento'] ?: null); + $objAnexoDTO->setStrNome($dados['Nome']); + $objAnexoDTO->setDthInclusao($dados['Inclusao'] ?: \InfraData::getStrDataHoraAtual()); + $objAnexoDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objAnexoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); + $objAnexoDTO->setStrHash($dados['Hash'] ?: 'e307098a01b40de6183583f3163ac6ed'); + + $objAnexoBD = new \AnexoBD(\BancoSEI::getInstance()); + $objAnexoDTO = $objAnexoBD->cadastrar($objAnexoDTO); + $this->realizarUpload($dados['Nome'],$objAnexoDTO->getNumIdAnexo()); + + return $objAnexoDTO; + } + + public function realizarUpload($caminhoOrigem, $nomeDestino) + { + + // Obtém a orgão atual + $org = getenv('DATABASE_HOST'); + + // Obtém a data atual + $dataAtual = date('Y/m/d'); + + // Define os caminhos de destino baseado na data atual e no orgão que será feito o upload + $caminhoDestinoBase = "/var/sei/arquivos/{$org}/{$dataAtual}/"; + $caminhoOrigemBase = '/tmp/'; + + // Cria o diretório de destino se não existir + if (!file_exists($caminhoDestinoBase)) { + mkdir($caminhoDestinoBase, 0777, true); // Cria diretórios recursivamente com permissão 0777 + } + + // Cria o caminho completo de destino + $caminhoDestinoCompleto = $caminhoDestinoBase.$nomeDestino; + + // Cria o caminho completo de origem + $caminhoOrigemCompleto = $caminhoOrigemBase.$caminhoOrigem; + + try { + // Verifica se o arquivo de origem existe + if (!file_exists($caminhoOrigemCompleto)) { + throw new \Exception("O arquivo de origem não existe.\nArquivo=".$caminhoOrigemCompleto); + } + + // Copia o arquivo para o destino + if (!copy($caminhoOrigemCompleto, $caminhoDestinoCompleto)) { + throw new \Exception("Falha ao copiar o arquivo para o destino.\nArquivo=".$caminhoOrigemCompleto."\nDestino=".$caminhoDestinoCompleto); + } + + } catch (\Exception $e) { + echo "\nErro: " . $e->getMessage(); + } + } + +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/AtividadeFixture.php b/tests_sei4/funcional/src/fixtures/AtividadeFixture.php new file mode 100644 index 000000000..ff8b553a5 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/AtividadeFixture.php @@ -0,0 +1,42 @@ +objAtividadeDTO = new \AtividadeDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + // $this->objAtividadeDTO->setNumIdAtividade($dados['setNumIdAtividade'] ?: null); + $this->objAtividadeDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objAtividadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objAtividadeDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: 110000001); + $this->objAtividadeDTO->setNumIdUsuario($dados['IdUsuario'] ?: null); + $this->objAtividadeDTO->setNumIdUsuarioOrigem($dados['IdUsuarioOrigem'] ?: 100000001); + $this->objAtividadeDTO->setDthAbertura($dados['Abertura'] ?: InfraData::getStrDataHoraAtual()); + $this->objAtividadeDTO->setDthConclusao($dados['Conclusao'] ?: null); + $this->objAtividadeDTO->setNumIdTarefa($dados['IdTarefa'] ?: null); + $this->objAtividadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); + $this->objAtividadeDTO->setNumIdUsuarioConclusao($dados['IdUsuarioConclusao'] ?: null); + $this->objAtividadeDTO->setStrSinInicial($dados['SinInicial'] ?: 'S'); + $this->objAtividadeDTO->setNumIdUsuarioVisualizacao($dados['IdUsuarioVisualizacao'] ?: null); + $this->objAtividadeDTO->setNumTipoVisualizacao($dados['TipoVisualizacao'] ?: 0); + $this->objAtividadeDTO->setDtaPrazo($dados['Prazo'] ?: null); + + $objProtocoloDB = new \AtividadeBD(\BancoSEI::getInstance()); + $objProtocoloDB->cadastrar($this->objAtividadeDTO); + + return $this->objAtividadeDTO; + } +} diff --git a/tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php new file mode 100644 index 000000000..1ee8e3ae6 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteFixture.php @@ -0,0 +1,43 @@ +setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objBlocoDeTramiteDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objBlocoDeTramiteDTO->setStrDescricao($dados['Descricao'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrIdxBloco($dados['IdxBloco'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrStaTipo($dados['IdxBloco'] ?: 'I'); + $objBlocoDeTramiteDTO->setStrStaEstado($dados['IdxBloco'] ?: 'A'); + + $objBlocoDeTramiteDB = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); + $objBlocoDeTramiteDB->cadastrar($objBlocoDeTramiteDTO); + + return $objBlocoDeTramiteDTO; + } + + public function excluir($id) + { + $dto = new \TramiteEmBlocoDTO(); + $dto->setNumId($id); + $dto->retNumId(); + + $objBD = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); + $objBD->excluir($dto); + } +} diff --git a/tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php new file mode 100644 index 000000000..42ca5c465 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php @@ -0,0 +1,31 @@ +objBlocoDeTramiteProtocoloDTO = new \TramitaEmBlocoProtocoloDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdTramitaEmBloco($dados['IdTramitaEmBloco'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setStrIdxRelBlocoProtocolo($dados['IdxRelBlocoProtocolo'] ?: null); + + + $objBlocoDeTramiteProtocoloBD = new \TramitaEmBlocoProtocoloBD(\BancoSEI::getInstance()); + $objBlocoDeTramiteProtocoloBD->cadastrar($this->objBlocoDeTramiteProtocoloDTO); + + return $this->objBlocoDeTramiteProtocoloDTO; + } +} diff --git a/tests_sei4/funcional/src/fixtures/ContatoFixture.php b/tests_sei4/funcional/src/fixtures/ContatoFixture.php new file mode 100644 index 000000000..f80e6d891 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/ContatoFixture.php @@ -0,0 +1,44 @@ +objContatoDTO = new \ContatoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + + $dados['IdContato'] = $this->getObjInfraIBanco()->getValorSequencia('seq_contato'); + $dados['Nome'] = $dados['Nome'] ?: 'teste'; + + $this->objContatoDTO->setNumIdContato($dados['IdContato']); + $this->objContatoDTO->setNumIdContatoAssociado($dados['IdContatoAssociado'] ?: $dados['IdContato']); + $this->objContatoDTO->setStrNome($dados['Nome']); + $this->objContatoDTO->setStrNomeRegistroCivil($dados['NomeRegistroCivil'] ?: $dados['Nome']); + // $this->objContatoDTO->setNumIdCargo($dados['IdCargo'] ?: 0); + // $this->objContatoDTO->setNumIdCategoria($dados['IdCategoria'] ?: 110000001); + $this->objContatoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); + $this->objContatoDTO->setStrIdxContato($dados['IdxContato'] ?: strtolower($dados['Nome'])); + $this->objContatoDTO->setNumIdUnidadeCadastro($dados['IdUnidadeCadastro'] ?: 110000001); + $this->objContatoDTO->setNumIdUsuarioCadastro($dados['IdUsuarioCadastro'] ?: 100000001); + $this->objContatoDTO->setDthCadastro($dados['Cadastro'] ?: \InfraData::getStrDataHoraAtual()); + $this->objContatoDTO->setNumIdTipoContato($dados['IdTipoContato'] ?: 4); + $this->objContatoDTO->setStrStaNatureza($dados['StaNatureza'] ?: 'F'); + $this->objContatoDTO->setStrSinEnderecoAssociado($dados['SinEnderecoAssociado'] ?: 'N'); + + $objContatoBD = new \ContatoBD(\BancoSEI::getInstance()); + $objContatoBD->cadastrar($this->objContatoDTO); + + return $this->objContatoDTO; + } + +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/FixtureBase.php b/tests_sei4/funcional/src/fixtures/FixtureBase.php new file mode 100644 index 000000000..103c93b23 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/FixtureBase.php @@ -0,0 +1,78 @@ +cadastrar($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function carregar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->cadastrarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + public function carregarVarios($dados = null, $quantidade = 1){ + $resultado = []; + for ($i=0; $i < $quantidade; $i++) { + $resultado[] = $this->carregar($dados); + } + + return $resultado; + } + + public function carregarVariados($dados){ + $resultado = []; + foreach ($dados as $dado) { + $resultado[] = $this->carregar($dado); + } + + return $resultado; + } + + protected function listarInternoControlado($parametros){ + $dto = $this->listar($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function buscar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->listarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + protected function removerInternoControlado($parametros){ + $dto = $this->excluir($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function remover($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->removerInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } +} diff --git a/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php index bbd5c017f..8f3dd04b5 100644 --- a/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php +++ b/tests_sei4/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -1,12 +1,14 @@ objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $this->dthRegistro = \InfraData::getStrDataAtual(); } protected function inicializarObjInfraIBanco() @@ -16,50 +18,61 @@ protected function inicializarObjInfraIBanco() public function cadastrar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $tiposProcessos = $this->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] - ) - ); + $objPenMapTipoProcedimentoDTO = $this->consultar($dados); + if ($objPenMapTipoProcedimentoDTO) { + return $objPenMapTipoProcedimentoDTO; } - - return $tiposProcessos; + + $this->objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setStrNomeTipoProcesso($dados['NomeProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); + $this->objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); + $this->objPenMapTipoProcedimentoDTO->setDthRegistro(\InfraData::getStrDataAtual()); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->cadastrar($this->objPenMapTipoProcedimentoDTO); } - - public function deletar($dados = []): void + + public function consultar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); + $objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); + } - foreach ($tiposProcessos as $tipoProcesso) { - $bancoOrgaoA->execute( - "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", - array($tipoProcesso[0]) - ); + public function listar($dados = [] ) + { + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + if ($dados['IdProcedimento']) { + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); } + if ($dados['IdUnidade']) { + $objPenMapTipoProcedimentoDTO->setNumIdUnidade($dados['IdUnidade']); + } + if ($dados['SimAtivo']) { + $objPenMapTipoProcedimentoDTO->setStrAtivo($dados['SimAtivo']); + } + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); } - public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + public function excluir($dados = []) { - $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')]; + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($dados['Id']); - return $tiposProcessos; + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php index 1300aae12..308a8f525 100644 --- a/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php +++ b/tests_sei4/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -3,89 +3,46 @@ /** * Responsável por cadastrar novo mapeamento de unidades caso não exista */ -class PenMapUnidadesFixture +class PenMapUnidadesFixture extends \FixtureBase { - private static $bancoOrgaoA; - private static $dados; + protected $objPenUnidadeDTO; - /** - * @param string $contexto - * @param array $dados - */ - public function __construct(string $contexto, array $dados) + public function __construct() { - self::$bancoOrgaoA = new DatabaseUtils($contexto); - self::$dados = $dados; + $this->objPenUnidadeDTO = new \PenUnidadeDTO(); } - /** - * Consulta mapeamento de unidade - * Se existe atualiza sigla e nome - * Se não existe cadastra um novo - * - * @return void - */ - public function gravar(): void + protected function inicializarObjInfraIBanco() { - $penUnidade = $this->consultar(); - if (!empty($penUnidade)) { - $this->atualizar(); - } else { - $this->cadastrar(); - } + return \BancoSEI::getInstance(); } - /** - * Consultar mapeamento de unidade - * - * @return array|null - */ - public function consultar() + public function cadastrar($dados = []) { - 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']) - ); - } + $objPenUnidadeDTO = $this->consultar($dados); + if ($objPenUnidadeDTO) { + return $objPenUnidadeDTO; + } - /** - * 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']) - ); - } + $this->objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $this->objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $this->objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $this->objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); - /** - * 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']) - ); + $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); + return $objPenUnidadeBD->cadastrar($this->objPenUnidadeDTO); } - - /** - * Deletear mapeamento de unidade - * - * @return void - */ - public function deletar(): void + + public function consultar($dados = []) { - self::$bancoOrgaoA->execute( - "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", - array(110000001, self::$dados['id']) - ); + $objPenUnidadeDTO = new \PenUnidadeDTO(); + $objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); + $objPenUnidadeDTO->retTodos(); + + $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); + return $objPenUnidadeBD->consultar($objPenUnidadeDTO); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php index 5191cb637..38a8395f0 100644 --- a/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php +++ b/tests_sei4/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -1,12 +1,12 @@ objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); } protected function inicializarObjInfraIBanco() @@ -16,28 +16,48 @@ protected function inicializarObjInfraIBanco() public function cadastrar($dados = []) { - $penMapUnidadesFixture = new PenMapUnidadesFixture(self::$contexto, $dados); - $penMapUnidadesFixture->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; + $this->objPenOrgaoExternoDTO = $this->consultar($dados); + if ($this->objPenOrgaoExternoDTO) { + return $this->objPenOrgaoExternoDTO; + } + + $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $this->objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $this->objPenOrgaoExternoDTO->setStrOrgaoOrigem($dados['NomeOrigem']); + $this->objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($dados['IdRepositorio']); + $this->objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($dados['RepositorioEstruturas']); + + $this->objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $this->objPenOrgaoExternoDTO->setStrOrgaoDestino($dados['Nome']); + + $this->objPenOrgaoExternoDTO->setDthRegistro($dados['DataRegistro'] ?? \InfraData::getStrDataAtual()); + $this->objPenOrgaoExternoDTO->setStrAtivo($dados['SinAtivo'] ?? 'S'); + $this->objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); + $this->objPenOrgaoExternoDTO = $objPenOrgaoExternoBD->cadastrar($this->objPenOrgaoExternoDTO); + + return $this->objPenOrgaoExternoDTO; } - public function deletar(int $id): void + public function consultar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $objPenOrgaoExternoDTO->retTodos(); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); + return $objPenOrgaoExternoBD->consultar($objPenOrgaoExternoDTO); + } + + public function excluir($dados = []) + { + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($dados['Id']); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); + return $objPenOrgaoExternoBD->excluir($objPenOrgaoExternoDTO); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php b/tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php new file mode 100644 index 000000000..3fb417727 --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/RelBlocoProtocoloFixture.php @@ -0,0 +1,30 @@ +getObjInfraIBanco()->getValorSequencia('seq_protocolo'); + // $dados['IdDocumento'] = $this->getObjInfraIBanco()->getValorSequencia('seq_documento'); + + $objRelBlocoProtocoloDTO = new \RelBlocoProtocoloDTO(); + // $objBlocoDTO->setNumIdBloco(); + $objRelBlocoProtocoloDTO->setDblIdProtocolo($IdProtocolo ?: null); + $objRelBlocoProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: null); + $objRelBlocoProtocoloDTO->setStrAnotacao($dados['Anotacao'] ?: null); + $objRelBlocoProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: 1); + $objRelBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($IdProtocolo); + + $objRelBlocoProtocoloDB = new \RelBlocoProtocoloBD(\BancoSEI::getInstance()); + $objRelBlocoProtocoloDB->cadastrar($objRelBlocoProtocoloDTO); + + return $objRelBlocoProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php b/tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php new file mode 100644 index 000000000..a6bf9719f --- /dev/null +++ b/tests_sei4/funcional/src/fixtures/RelBlocoUnidadeFixture.php @@ -0,0 +1,38 @@ +setNumIdBloco(); + $objRelBlocoUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objRelBlocoUnidadeDTO->setNumIdBloco($dados['IdBloco'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdGrupoBloco($dados['IdGrupoBloco'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioRevisao($dados['IdUsuarioRevisao'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioPrioridade($dados['IdUsuarioPrioridade'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioComentario($dados['IdUsuarioComentario'] ?: null); + $objRelBlocoUnidadeDTO->setStrSinRetornado($dados['SinRetornado'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrSinRevisao($dados['SinRevisao'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrSinPrioridade($dados['SinPrioridade'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrSinComentario($dados['SinComentario'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrTextoComentario($dados['TextoComentario'] ?: null); + $objRelBlocoUnidadeDTO->setDthRevisao($dados['Revisao'] ?: null); + $objRelBlocoUnidadeDTO->setDthPrioridade($dados['Prioridade'] ?: null); + $objRelBlocoUnidadeDTO->setDthComentario($dados['Comentario'] ?: null); + + $objBlocoUnidadeDB = new \RelBlocoUnidadeBD(\BancoSEI::getInstance()); + $objBlocoUnidadeDB->cadastrar($objRelBlocoUnidadeDTO); + + return $objRelBlocoUnidadeDTO; + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php new file mode 100644 index 000000000..370651c83 --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -0,0 +1,230 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Blocos de Trâmite Externo')); + $this->test->byXPath("//a[@link='md_pen_tramita_em_bloco']")->click(); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem) + { + $this->selectRepositorio($estrutura); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @return string + */ + private function selectRepositorio($siglaRepositorio) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade'); + $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')->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(); + } + + public function novoBlocoDeTramite() + { + $this->test->byId("bntNovo")->click(); + } + + + public function criarNovoBloco() + { + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } + + public function editarBlocoDeTramite($descricao = null) + { + $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); + + if ($descricao != null) { + $this->test->byId('txtDescricao')->clear(); + $this->test->byId('txtDescricao')->value($descricao); + } + } + + public function selecionarExcluirBloco() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) + { + // Preencher parâmetros do trâmite + $this->selectRepositorio($repositorio); + $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); + $this->btnEnviar(); + + if ($callbackEnvio == null) { + $mensagemAlerta = null; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if ($mensagemAlerta) { + throw new Exception($mensagemAlerta); + } + } + + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + + if (isset($mensagemAlerta)) { + throw new Exception($mensagemAlerta); + } + + $callbackEnvio = $callbackEnvio ?: function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + }; + + try { + $this->test->waitUntil($callbackEnvio, $timeout); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + sleep(1); + } + + public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) + { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + + $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + } + + public function retornarTextoColunaDaTabelaDeBlocos() + { + $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); + $terceiraColuna = $tabela->byXPath('./td[3]'); + + return $terceiraColuna->text(); + } + + public function retornarQuantidadeDeProcessosNoBloco() + { + // Localiza todas as linhas da tabela com o XPath + $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + // Obtém o número de linhas + return count($linhasDaTabela); + } + + + public function bntTramitarBloco() + { + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } + + public function bntVisualizarProcessos() + { + $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); + } + + public function btnSalvar() + { + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } + + public function btnEnviar() + { + $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); + $buttonElement->click(); + } + +} \ No newline at end of file diff --git a/tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php new file mode 100644 index 000000000..a925799ff --- /dev/null +++ b/tests_sei4/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -0,0 +1,78 @@ +test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); + } + } + + /** + * Selecionar tramite em bloco + * @return void + */ + public function selecionarTramiteEmBloco() + { + $btnTramiteEmBloco = $this->test->byXPath( + "//img[@alt='". utf8_encode("Incluir Processos no Bloco de Trâmite") ."']" + ); + $btnTramiteEmBloco->click(); + } + + /** + * Selecionar bloco + * @param string $selAndamento + * @return void + */ + public function selecionarBloco($selAndamento) + { + $select = $this->test->select($this->test->byId('selBlocos')); + $select->selectOptionByValue($selAndamento); + } + + /** + * Clicar em salvar + * @return void + */ + public function clicarSalvar() + { + $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); + $btnSalvar->click(); + } + + /** + * 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() : ""; + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/CenarioBaseTestCase.php b/tests_sei4/funcional/tests/CenarioBaseTestCase.php index 325500cca..e0bea3a77 100755 --- a/tests_sei4/funcional/tests/CenarioBaseTestCase.php +++ b/tests_sei4/funcional/tests/CenarioBaseTestCase.php @@ -43,6 +43,8 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaCadastroMapEnvioCompDigitais = null; protected $paginaExportarTiposProcesso = null; protected $paginaTipoProcessoReativar = null; + protected $paginaCadastrarProcessoEmBloco = null; + protected $paginaTramiteEmBloco = null; public function setUpPage(): void { @@ -65,6 +67,8 @@ public function setUpPage(): void $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); + $this->paginaCadastrarProcessoEmBloco = new PaginaCadastrarProcessoEmBloco($this); + $this->paginaTramiteEmBloco = new PaginaTramiteEmBloco($this); $this->currentWindow()->maximize(); } @@ -82,7 +86,12 @@ public static function setUpBeforeClass(): void $bancoOrgaoA->execute("update unidade set sin_envio_processo=? where sigla=?", array('S', 'TESTE_1_2')); // Configuração do mapeamento de unidades - $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000001', CONTEXTO_ORGAO_A_ID_ESTRUTURA)); + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $penMapUnidadesFixture->carregar([ + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, + 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, + ]); $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); // Configuração do prefíxo de processos $bancoOrgaoA->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_A_NUMERO_SEI, CONTEXTO_ORGAO_A_SIGLA_ORGAO)); @@ -114,7 +123,14 @@ public static function setUpBeforeClass(): void $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); $bancoOrgaoB->execute("update unidade set sin_envio_processo=? where sigla=?", array('S', 'TESTE_1_2')); - $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000001', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA)); + $bancoOrgaoB->execute( + "insert into md_pen_unidade(id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) values ('110000001', ?, ?, ?)", + array( + CONTEXTO_ORGAO_B_ID_ESTRUTURA, + CONTEXTO_ORGAO_B_SIGLA_ESTRUTURA, + CONTEXTO_ORGAO_B_NOME_UNIDADE + ) + ); $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000002', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)); $bancoOrgaoB->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_B_NUMERO_SEI, CONTEXTO_ORGAO_B_SIGLA_ORGAO)); @@ -530,7 +546,8 @@ protected function validarDadosDocumento($nomeDocArvore, $dadosDocumento, $desti protected function validarProcessosTramitados($protocolo, $deveExistir) { $this->frame(null); - $this->byXPath("//img[contains(@title, 'Controle de Processos')]")->click(); + $this->paginaBase->navegarParaControleProcesso(); + $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados Externamente')); $this->byLinkText("Processos Tramitados Externamente")->click(); $this->assertEquals($deveExistir, $this->paginaProcessosTramitadosExternamente->contemProcesso($protocolo)); } @@ -778,6 +795,7 @@ protected function selecionarProcessos($numProtocolo=null) protected function visualizarProcessoTramitadosEmLote($test) { $this->paginaBase->navegarParaControleProcesso(); + $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados em Lote')); $test->byLinkText("Processos Tramitados em Lote")->click(); } diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php index 6aac207c1..0489546e1 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -23,16 +23,18 @@ function setUp(): void self::$remetente = $this->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'] + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -60,6 +62,8 @@ public function test_desativacao_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -87,6 +91,8 @@ public function test_reativacao_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -114,6 +120,8 @@ public function test_desativacao_checkbox_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -141,5 +149,28 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); + } + + public static function tearDownAfterClass(): void + { + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->buscar([ + 'IdMapeamento' => self::$penOrgaoExternoId + ]); + + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $importacaoTiposProcessoFixture->remover([ + 'Id' => $objPenMapTipoProcedimentoDTO->getDblId() + ]); + } + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); + + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php index ddbcf101e..b93b63f4b 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -22,17 +22,19 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -53,8 +55,9 @@ public function test_excluir_mapeamento_orgao_externo() self::$remetente['LOGIN'], self::$remetente['SENHA'] ); - $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + $this->paginaTramiteMapeamentoOrgaoExterno->navegarRelacionamentoEntreOrgaos(); + sleep(5); $this->paginaCadastroOrgaoExterno->selecionarExcluirMapOrgao(self::$penOrgaoExternoId); sleep(1); $mensagem = $this->paginaCadastroOrgaoExterno->buscarMensagemAlerta(); @@ -62,13 +65,12 @@ public function test_excluir_mapeamento_orgao_externo() utf8_encode('Relacionamento entre unidades foi excluído com sucesso.'), $mensagem ); + + $this->sairSistema(); } - function tearDown(): void + public static function tearDownAfterClass(): void { - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); - - parent::tearDown(); + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php index cdc81f23a..7ccfc62a7 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -41,6 +41,8 @@ public function test_exportar_tipos_de_processo() ); $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); $this->paginaExportarTiposProcesso->btnExportar(); + + $this->sairSistema(); } /** @@ -62,5 +64,7 @@ public function test_pesquisar_tipos_de_processos() $this->paginaExportarTiposProcesso->selecionarPesquisa(); sleep(1); $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + + $this->sairSistema(); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php index 1ff853313..74749a272 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -12,6 +12,7 @@ class MapeamentoTipoProcessoReativarTest extends CenarioBaseTestCase public static $remetente; public static $destinatario; public static $penOrgaoExternoId; + public static $arrImportacaoTiposProcessoId; /** * @inheritdoc @@ -22,23 +23,27 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); - $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); - $importacaoTiposProcessoFixture->cadastrar([ - 'idMapeamento' => self::$penOrgaoExternoId, - 'sinAtivo' => 'N' - ]); + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $tiposProcessos = $this->getTiposProcessos($objPenOrgaoExternoDTO->getDblId(), 'N'); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->carregarVariados($tiposProcessos); + + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + self::$arrImportacaoTiposProcessoId[] = $objPenMapTipoProcedimentoDTO->getDblId(); + } } /** @@ -58,7 +63,6 @@ public function test_reativacao_mapeamento_orgao_externo() ); $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); - $this->paginaTipoProcessoReativar->reativarMapeamento(); $this->waitUntil(function ($testCase) { $testCase->frame(null); @@ -66,6 +70,8 @@ public function test_reativacao_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -85,7 +91,6 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() ); $this->paginaTipoProcessoReativar->navegarTipoProcessoReativar(); - $this->paginaTipoProcessoReativar->reativarMapeamentoCheckbox(); $this->waitUntil(function ($testCase) { $testCase->frame(null); @@ -93,16 +98,46 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } public static function tearDownAfterClass(): void { - $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); - $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->buscar([ + 'IdMapeamento' => self::$penOrgaoExternoId + ]); - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $importacaoTiposProcessoFixture->remover([ + 'Id' => $objPenMapTipoProcedimentoDTO->getDblId() + ]); + } + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); + parent::tearDownAfterClass(); } -} + + private function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + return array( + array( + 'IdMapeamento' => $idMapeamento, + 'IdProcedimento' => 100000348, + 'NomeProcedimento' => utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), + 'SimAtivo' => $sinAtivo + ), + array( + 'IdMapeamento' => $idMapeamento, + 'IdProcedimento' => 100000425, + 'NomeProcedimento' => utf8_encode('mauro teste'), + 'SimAtivo' => $sinAtivo + ) + ); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php index c307a93ea..1e31a79b0 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -20,13 +20,6 @@ function setUp(): void { parent::setUp(); self::$remetente = $this->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(); } /** @@ -65,6 +58,8 @@ public function test_cadastrar_novo_mapeamento_orgao_externo() utf8_encode('Relacionamento entre Unidades cadastrado com sucesso.'), $mensagem ); + + $this->sairSistema(); } /** @@ -99,6 +94,8 @@ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() utf8_encode('Cadastro de relacionamento entre unidades já existente.'), $mensagem ); + + $this->sairSistema(); } /** @@ -139,10 +136,12 @@ public function test_editar_mapeamento_orgao_externo() utf8_encode('Relacionamento entre Unidades atualizado com sucesso.'), $mensagem ); + + $this->sairSistema(); } public static function tearDownAfterClass(): void { parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php index 00dd0b47c..6bcf6dbc0 100644 --- a/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php +++ b/tests_sei4/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -23,17 +23,19 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -63,13 +65,17 @@ public function test_pesquisar_mapeamento_orgao_externo() $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']); $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); $this->assertNotNull($nomeRepositorioCadastrado); + + $this->sairSistema(); } - function tearDown(): void + public static function tearDownAfterClass(): void { - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); - parent::tearDown(); + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php new file mode 100644 index 000000000..02db33b4c --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -0,0 +1,81 @@ +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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Bloco de Trâmite externo criado com sucesso!'), + $mensagem + ); + + $this->sairSistema(); + } + + /** + * Teste para editar bloco de trâmite externo já criado + * + * @return void + */ + public function test_editar_bloco_de_tramite() + { + 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->editarBlocoDeTramite('Bloco editado para teste automatizado'); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Bloco de trâmite externo alterado com sucesso!'), + $mensagem + ); + + $this->sairSistema(); + } + + public static function tearDownAfterClass(): void + { + // $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + // $objBlocoDeTramiteFixture->excluir(1); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php new file mode 100644 index 000000000..af260e5bb --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php @@ -0,0 +1,173 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + } + + /** + * Teste inicial de trâmite de um processo contendo outro anexado + * + * @group envio + * @large + * + * @return void + */ + public function test_tramitar_processo_anexado_da_origem() + { + // Definição de dados de teste do processo principal + self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); + self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ + 'Descricao' => 'teste' + ]); + + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdContato' => 100000006, + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + //Incluir novos documentos relacionados + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + 'Descricao' => self::$documentoTeste1['DESCRICAO'], + 'StaProtocolo' => ProtocoloRN::$TP_DOCUMENTO_RECEBIDO, + 'StaDocumento' => DocumentoRN::$TD_EXTERNO, + 'IdConjuntoEstilos' => NULL, + ]); + + //Adicionar anexo ao documento + $objAnexoFixture = new AnexoFixture(); + $objAnexoFixture->carregar([ + 'IdProtocolo' => $objDocumentoDTO->getDblIdDocumento(), + 'Nome' => basename(self::$documentoTeste1['ARQUIVO']), + ]); + + // $objAssinaturaFixture = new AssinaturaFixture(); + // $objAssinaturaFixture->carregar([ + // 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + // 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + // 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), + // ]); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + ]); + + self::$protocoloTestePrincipal['PROTOCOLO'] = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); + } + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + if (self::$tramitar == true) { + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + sleep(10); + } else { + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtyProcessos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtyProcessos, self::$numQtyProcessos); + } + + $this->sairSistema(); + } + + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->visualizarProcessoTramitadosEmLote($this); + $this->navegarProcessoEmLote(0); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); + $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + return true; + }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + + sleep(5); + } + + public function test_verificar_envio_tramite_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->assertNotEquals('Aberto', $novoStatus); + } else { + $this->assertEquals('Aberto', $novoStatus); + } + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php new file mode 100644 index 000000000..2f75a6124 --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoLimiteTest.php @@ -0,0 +1,166 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + public function teste_tramite_bloco_externo() + { + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ + 'Descricao' => 'teste' + ]); + + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdContato' => 100000006, + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + ]); + + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + ]); + + self::$protocoloTestePrincipal = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); + } + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + if (self::$tramitar == true) { + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + sleep(5); + + } else { + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtyProcessos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtyProcessos, self::$numQtyProcessos); + } + + $this->sairSistema(); + } + + /** + * Verificar se o bloco foi enviado + * + * + * @return void + */ + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->visualizarProcessoTramitadosEmLote($this); + $this->navegarProcessoEmLote(0); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); + $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + return true; + }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + + sleep(5); + + $this->sairSistema(); + } + + /** + * Verificar atualização do bloco + * + * + * @return void + */ + public function test_verificar_envio_tramite_em_bloco() + { + + 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->assertNotEquals('Aberto', $novoStatus); + } else { + $this->assertEquals('Aberto', $novoStatus); + } + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php new file mode 100644 index 000000000..f3ac2dc5a --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php @@ -0,0 +1,158 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->cadastrarBlocoDeTramite(); + $this->cadastrarProcessos(); + } + + /** + * Teste de inclusão de processo em bloco + * @return void + */ + public function teste_incluir_processo_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Processo(s) incluído(s) com sucesso no bloco ' . $this->objBlocoDeTramiteDTO->getNumId()), + $mensagem + ); + + $this->paginaBase->sairSistema(); + } + + /** + * Teste de inclusão do mesmo processo em bloco + * @return void + */ + public function teste_mesmo_processo_em_bloco() + { + $objBlocoDeTramiteProtocoloFixture = new BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $this->objProtocoloDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $this->objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $this->objProtocoloDTO->getStrProtocoloFormatado() + ]); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode( + 'Prezado(a) usuário(a), o processo ' . $this->objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco de número ' . $this->objBlocoDeTramiteDTO->getNumId() . '.' + . ' Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + ), + $mensagem + ); + + $this->paginaBase->sairSistema(); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarBlocoDeTramite() + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $this->objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarProcessos() + { + $parametros = []; + $objProtocoloFixture = new ProtocoloFixture(); + $this->objProtocoloDTO = $objProtocoloFixture->carregar( + $parametros, + function($objProtocoloDTO) { + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdContato' => 100000006, + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + ]); + + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + } + ); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteBlocoExternoTest.php b/tests_sei4/funcional/tests/TramiteBlocoExternoTest.php new file mode 100644 index 000000000..59f493e1e --- /dev/null +++ b/tests_sei4/funcional/tests/TramiteBlocoExternoTest.php @@ -0,0 +1,102 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $parametros = [ + 'Descricao' => 'teste' + ]; + $this->objProtocoloFixture = new ProtocoloFixture(); + $this->objProtocoloFixture->carregar($parametros, function($objProtocoloDTO) { + + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdContato' => 100000006, + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + ]); + + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $objProtocoloDTO->getStrProtocoloFormatado() + ]); + + }); + + } + + public function teste_tramite_bloco_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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + sleep(10); + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php b/tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php deleted file mode 100755 index b78f0954c..000000000 --- a/tests_sei4/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php +++ /dev/null @@ -1,107 +0,0 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Seleciona todos os processos para tramitação em lote - $this->selecionarProcessos(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false); - - } - - /** - * Teste de cancelamento de trâmite com processo contendo documento externo - * - * @group envio - * @large - * - * @depends test_cancelamento_tramite_contendo_documento_interno - * - * @return void - */ - public function test_cancelamento_tramite_contendo_documento_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->abrirProcesso(self::$protocoloTeste); - - $this->paginaProcesso->cancelarTramitacaoExterna(); - $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); - $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); - $this->assertFalse($this->paginaProcesso->processoBloqueado()); - $this->assertTrue($this->paginaProcesso->processoAberto()); - - } - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_cancelamento_tramite_contendo_documento_externo - * - * @return void - */ - public function test_verificar_cancelamento_processo_lote() - { - - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $this->navegarProcessoEmLote(7, self::$protocoloTeste); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $this->assertStringContainsString(self::$protocoloTeste, $paginaTramitarProcessoEmLote->informacaoLote()); - return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); - - } - -} diff --git a/tests_sei4/funcional/tests/TramiteProcessoEmLoteTest.php b/tests_sei4/funcional/tests/TramiteProcessoEmLoteTest.php deleted file mode 100755 index ab1316cb5..000000000 --- a/tests_sei4/funcional/tests/TramiteProcessoEmLoteTest.php +++ /dev/null @@ -1,102 +0,0 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste1); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); - - // Seleciona todos os processos para tramitação em lote - $this->selecionarProcessos(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false); - - } - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_tramitar_processo_em_lote - * - * @return void - */ - public function test_verificar_envio_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - $this->navegarProcessoEmLote(0); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); - return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); - - sleep(5); - } - - /** - * Teste de verificação do correto recebimento do processo no destino - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_envio_processo - * - * @return void - */ - public function test_verificar_recebimento_processo_destino() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); - } - -} diff --git a/tests_super/funcional/bootstrap.php b/tests_super/funcional/bootstrap.php index 8fb3da6b3..641c255a5 100755 --- a/tests_super/funcional/bootstrap.php +++ b/tests_super/funcional/bootstrap.php @@ -2,6 +2,16 @@ require_once __DIR__ . '/vendor/autoload.php'; +require_once __DIR__ . '/sei/src/sei/web/SEI.php'; + +define("DIR_SEI_WEB", __DIR__ . '/sei/src/sei/web/'); +define("DIR_TEST", __DIR__ ); +define("DIR_PROJECT", __DIR__ . '/..' ); +define("DIR_INFRA", __DIR__ . '/../src/infra/infra_php' ); + +error_reporting(E_ERROR); +restore_error_handler(); + //Classes utilitárias para manipulação dos dados do SEI require_once __DIR__ . '/src/utils/DatabaseUtils.php'; require_once __DIR__ . '/src/utils/ParameterUtils.php'; diff --git a/tests_super/funcional/composer.json b/tests_super/funcional/composer.json index ee2f2e658..43ad659c7 100755 --- a/tests_super/funcional/composer.json +++ b/tests_super/funcional/composer.json @@ -7,10 +7,17 @@ "autoload": { "classmap": [ - "src/" + "src/", + "sei/modpen/" ] }, + "autoload-dev": { + "psr-4": { + "Tests\\": "sei/" + } + }, + "require-dev": { "phpunit/phpunit": "8.*", "phpunit/php-code-coverage": "*", diff --git a/tests_super/funcional/docker-compose.yml b/tests_super/funcional/docker-compose.yml index 275413621..bec71d25a 100755 --- a/tests_super/funcional/docker-compose.yml +++ b/tests_super/funcional/docker-compose.yml @@ -51,9 +51,16 @@ services: - ${SEI_PATH}/sei:/opt/sei - ${SEI_PATH}/sip:/opt/sip - ${SEI_PATH}/infra:/opt/infra - - ./assets/config:/opt/sei/config/mod-pen - .:/tests + - ${SEI_PATH}/../tests:/tests/sei + - ${SEI_PATH}/../src:/tests/sei/src + - ./src/fixtures:/tests/sei/modpen/fixtures + - ../../src/dto:/tests/sei/modpen/dto + - ../../src/bd:/tests/sei/modpen/bd + - ./assets/config:/opt/sei/config/mod-pen - /tmp:/tmp + - /tmp/sei_arquivos_1:/var/sei/arquivos/${ORG1_DATABASE_HOST} + - /tmp/sei_arquivos_2:/var/sei/arquivos/${ORG2_DATABASE_HOST} environment: - XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003 start_with_request=0 - XDEBUG_SESSION=default @@ -66,6 +73,16 @@ services: - ORG1_CERTIFICADO_SENHA=${ORG1_CERTIFICADO_SENHA} - ORG2_CERTIFICADO=${ORG2_CERTIFICADO} - ORG2_CERTIFICADO_SENHA=${ORG2_CERTIFICADO_SENHA} + - DATABASE_IMAGE=${ORG1_DATABASE_IMAGE} + - DATABASE_TYPE=${ORG1_DATABASE_TYPE} + - DATABASE_HOST=${ORG1_DATABASE_HOST} + - DATABASE_PORT=${ORG1_DATABASE_GUEST_PORT} + - SEI_CHAVE_ACESSO=${ORG1_APP_SEI_CHAVE_ACESSO} + - SEI_DATABASE_NAME=${SEI_DATABASE_NAME} + - SIP_CHAVE_ACESSO=${ORG1_APP_SIP_CHAVE_ACESSO} + - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} + - SIP_DATABASE_USER=${SIP_DATABASE_USER} + - SIP_DATABASE_PASSWORD=${SIP_DATABASE_PASSWORD} extra_hosts: - "host.docker.internal:host-gateway" links: @@ -128,6 +145,7 @@ services: - ../../src/scripts:/opt/sip/scripts/mod-pen - ../../src/bin:/opt/sei/bin/mod-pen - ../../src:/opt/sei/web/modulos/pen + - /tmp/sei_arquivos_1:/var/sei/arquivos environment: - LANG=pt_BR.ISO-8859-1 - HOST_URL=http://${ORG1_HOSTNAME}:${ORG1_PORT} @@ -142,12 +160,10 @@ services: - DATABASE_HOST=${ORG1_DATABASE_HOST} - DATABASE_PORT=${ORG1_DATABASE_GUEST_PORT} - CONTEXTO_ORGAO_A_DB_SEI_DSN=${CONTEXTO_ORGAO_A_DB_SEI_DSN} - - SEI_CHAVE_ACESSO=${ORG1_APP_SEI_CHAVE_ACESSO} - SEI_DATABASE_NAME=${SEI_DATABASE_NAME} - SEI_DATABASE_USER=${SEI_DATABASE_USER} - SEI_DATABASE_PASSWORD=${SEI_DATABASE_PASSWORD} - - SIP_CHAVE_ACESSO=${ORG1_APP_SIP_CHAVE_ACESSO} - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} - SIP_DATABASE_USER=${SIP_DATABASE_USER} @@ -186,6 +202,7 @@ services: - ../../src:/opt/sei/web/modulos/pen - ./assets/config/ConfiguracaoSEI.php:/opt/sei/config/ConfiguracaoSEI.php:ro - ./assets/config/ConfiguracaoSip.php:/opt/sip/config/ConfiguracaoSip.php:ro + - /tmp/sei_arquivos_2:/var/sei/arquivos environment: - LANG=pt_BR.ISO-8859-1 - HOST_URL=http://${ORG2_HOSTNAME}:${ORG2_PORT} @@ -200,12 +217,10 @@ services: - DATABASE_HOST=${ORG2_DATABASE_HOST} - DATABASE_PORT=${ORG2_DATABASE_GUEST_PORT} - CONTEXTO_ORGAO_B_DB_SEI_DSN=${CONTEXTO_ORGAO_B_DB_SEI_DSN} - - SEI_CHAVE_ACESSO=${ORG2_APP_SEI_CHAVE_ACESSO} - SEI_DATABASE_NAME=${SEI_DATABASE_NAME} - SEI_DATABASE_USER=${SEI_DATABASE_USER} - SEI_DATABASE_PASSWORD=${SEI_DATABASE_PASSWORD} - - SIP_CHAVE_ACESSO=${ORG2_APP_SIP_CHAVE_ACESSO} - SIP_DATABASE_NAME=${SIP_DATABASE_NAME} - SIP_DATABASE_USER=${SIP_DATABASE_USER} @@ -215,4 +230,4 @@ services: links: - org2-memcached:memcached - smtp:smtp - - org2-database:${ORG2_DATABASE_HOST} + - org2-database:${ORG2_DATABASE_HOST} \ No newline at end of file diff --git a/tests_super/funcional/env_mysql b/tests_super/funcional/env_mysql index 0c97d00e3..8f3512637 100755 --- a/tests_super/funcional/env_mysql +++ b/tests_super/funcional/env_mysql @@ -26,7 +26,7 @@ ORG1_CERTIFICADO_SENHA=XXXXXXXXXXXXXX ##### BANCO DE DADOS DO ÓRGÃO 1 ##### # Configurações do banco de dados MYSQL do ÓRGÃO 1 ORG1_DATABASE_IMAGE=processoeletronico/vagrant_super4_mysql -ORG1_DATABASE_HOST=mysql +ORG1_DATABASE_HOST=org1-database ORG1_DATABASE_TYPE=MySql ORG1_DATABASE_GUEST_PORT=3306 ORG1_DATABASE_HOST_PORT=33061 @@ -46,7 +46,7 @@ ORG2_CERTIFICADO_SENHA=XXXXXXXXXXXXXX # Configurações do banco de dados MYSQL do ÓRGÃO 2 ORG2_DATABASE_IMAGE=processoeletronico/vagrant_super4_mysql -ORG2_DATABASE_HOST=mysql +ORG2_DATABASE_HOST=org2-database ORG2_DATABASE_TYPE=MySql ORG2_DATABASE_GUEST_PORT=3306 ORG2_DATABASE_HOST_PORT=33062 diff --git a/tests_super/funcional/env_oracle b/tests_super/funcional/env_oracle index c9a8b4ca6..9a22e12df 100755 --- a/tests_super/funcional/env_oracle +++ b/tests_super/funcional/env_oracle @@ -24,7 +24,7 @@ ORG1_CERTIFICADO_SENHA=XXXXXXXXXXXXXX ##### BANCO DE DADOS DO ÓRGÃO 1 ##### # Configurações do banco de dados ORACLE do ÓRGÃO 1 ORG1_DATABASE_IMAGE=processoeletronico/vagrant_sei4_oracle -ORG1_DATABASE_HOST=oracle +ORG1_DATABASE_HOST=org1-database ORG1_DATABASE_TYPE=Oracle ORG1_DATABASE_GUEST_PORT=1521 ORG1_DATABASE_HOST_PORT=15211 @@ -46,7 +46,7 @@ ORG2_CERTIFICADO_SENHA=XXXXXXXXXXXXXX # Configurações do banco de dados ORACLE do ÓRGÃO 2 ORG2_DATABASE_IMAGE=processoeletronico/vagrant_sei4_oracle -ORG2_DATABASE_HOST=oracle +ORG2_DATABASE_HOST=org2-database ORG2_DATABASE_TYPE=Oracle ORG2_DATABASE_GUEST_PORT=1521 ORG2_DATABASE_HOST_PORT=15212 diff --git a/tests_super/funcional/env_sqlserver b/tests_super/funcional/env_sqlserver index ba272c8a0..50cef936d 100755 --- a/tests_super/funcional/env_sqlserver +++ b/tests_super/funcional/env_sqlserver @@ -24,7 +24,7 @@ ORG1_CERTIFICADO_SENHA=XXXXXXXXXXXXXX ##### BANCO DE DADOS DO ÓRGÃO 1 ##### # Configurações do banco de dados SQL SERVER do ÓRGÃO 1 ORG1_DATABASE_IMAGE=processoeletronico/vagrant_sei4_sqlserver -ORG1_DATABASE_HOST=sqlserver +ORG1_DATABASE_HOST=org1-database ORG1_DATABASE_TYPE=SqlServer ORG1_DATABASE_GUEST_PORT=1433 ORG1_DATABASE_HOST_PORT=14331 @@ -47,7 +47,7 @@ ORG2_CERTIFICADO_SENHA=XXXXXXXXXXXXXX # Configurações do banco de dados SQL SERVER do ÓRGÃO 2 ORG2_DATABASE_IMAGE=processoeletronico/vagrant_sei4_sqlserver -ORG2_DATABASE_HOST=sqlserver +ORG2_DATABASE_HOST=org2-database ORG2_DATABASE_TYPE=SqlServer ORG2_DATABASE_GUEST_PORT=1433 ORG2_DATABASE_HOST_PORT=14332 diff --git a/tests_super/funcional/src/fixtures/AnexoProcessoFixture.php b/tests_super/funcional/src/fixtures/AnexoProcessoFixture.php new file mode 100644 index 000000000..a7ebfb91d --- /dev/null +++ b/tests_super/funcional/src/fixtures/AnexoProcessoFixture.php @@ -0,0 +1,49 @@ +cadastrar( + [ + 'IdProtocolo' => $dados['IdProtocolo'], + 'IdTarefa' => \TarefaRN::$TI_ANEXADO_PROCESSO,//101 + ] + ); + $objAtividadeFixture->cadastrar( + [ + 'IdProtocolo' => $dados['IdDocumento'], + 'IdTarefa' => \TarefaRN::$TI_ANEXADO_AO_PROCESSO,//102 + 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, + 'Conclusao' => InfraData::getStrDataHoraAtual(), + + ] + ); + $objAtividadeFixture->cadastrar( + [ + 'IdProtocolo' => $dados['IdDocumento'], + 'IdTarefa' => \TarefaRN::$TI_CONCLUSAO_AUTOMATICA_UNIDADE,//41 + 'IdUsuarioConclusao' => $dados['IdUsuarioConclusao'] ?: 100000001, + 'Conclusao' => InfraData::getStrDataHoraAtual(), + ] + ); + + $parametros = [ + 'IdProtocolo' => $dados['IdProtocolo'], // idprotocolo1 + 'IdDocumento' => $dados['IdDocumento'], // idprotocolo2 + 'Associacao' => 2, + ]; + $objRelProtocoloProtocoloFixture = new RelProtocoloProtocoloFixture(); + $objRelProtocoloProtocoloFixtureDTO = $objRelProtocoloProtocoloFixture->carregar($parametros); + return $objRelProtocoloProtocoloFixtureDTO; + + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/Anexofixture.php b/tests_super/funcional/src/fixtures/Anexofixture.php new file mode 100644 index 000000000..746d98dc6 --- /dev/null +++ b/tests_super/funcional/src/fixtures/Anexofixture.php @@ -0,0 +1,74 @@ +setNumIdUnidade($dados['IdUnidade'] ?: '110000001'); + $objAnexoDTO->setDblIdProtocolo($dados['IdProtocolo']); + $objAnexoDTO->setNumTamanho($dados['Tamanho'] ?: 16); + $objAnexoDTO->setNumIdBaseConhecimento($dados['IdBaseConhecimento'] ?: null); + $objAnexoDTO->setStrNome($dados['Nome']); + $objAnexoDTO->setDthInclusao($dados['Inclusao'] ?: \InfraData::getStrDataHoraAtual()); + $objAnexoDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objAnexoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); + $objAnexoDTO->setStrHash($dados['Hash'] ?: 'e307098a01b40de6183583f3163ac6ed'); + + $objAnexoBD = new \AnexoBD(\BancoSEI::getInstance()); + $objAnexoDTO = $objAnexoBD->cadastrar($objAnexoDTO); + $this->realizarUpload($dados['Nome'],$objAnexoDTO->getNumIdAnexo()); + + return $objAnexoDTO; + } + + public function realizarUpload($caminhoOrigem, $nomeDestino) + { + + // Obtém a orgão atual + $org = getenv('DATABASE_HOST'); + + // Obtém a data atual + $dataAtual = date('Y/m/d'); + + // Define os caminhos de destino baseado na data atual e no orgão que será feito o upload + $caminhoDestinoBase = "/var/sei/arquivos/{$org}/{$dataAtual}/"; + $caminhoOrigemBase = '/tmp/'; + + // Cria o diretório de destino se não existir + if (!file_exists($caminhoDestinoBase)) { + mkdir($caminhoDestinoBase, 0777, true); // Cria diretórios recursivamente com permissão 0777 + } + + // Cria o caminho completo de destino + $caminhoDestinoCompleto = $caminhoDestinoBase.$nomeDestino; + + // Cria o caminho completo de origem + $caminhoOrigemCompleto = $caminhoOrigemBase.$caminhoOrigem; + + try { + // Verifica se o arquivo de origem existe + if (!file_exists($caminhoOrigemCompleto)) { + throw new \Exception("O arquivo de origem não existe.\nArquivo=".$caminhoOrigemCompleto); + } + + // Copia o arquivo para o destino + if (!copy($caminhoOrigemCompleto, $caminhoDestinoCompleto)) { + throw new \Exception("Falha ao copiar o arquivo para o destino.\nArquivo=".$caminhoOrigemCompleto."\nDestino=".$caminhoDestinoCompleto); + } + + } catch (\Exception $e) { + echo "\nErro: " . $e->getMessage(); + } + } + +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/AtividadeFixture.php b/tests_super/funcional/src/fixtures/AtividadeFixture.php new file mode 100644 index 000000000..ff8b553a5 --- /dev/null +++ b/tests_super/funcional/src/fixtures/AtividadeFixture.php @@ -0,0 +1,42 @@ +objAtividadeDTO = new \AtividadeDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + // $this->objAtividadeDTO->setNumIdAtividade($dados['setNumIdAtividade'] ?: null); + $this->objAtividadeDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objAtividadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objAtividadeDTO->setNumIdUnidadeOrigem($dados['IdUnidadeOrigem'] ?: 110000001); + $this->objAtividadeDTO->setNumIdUsuario($dados['IdUsuario'] ?: null); + $this->objAtividadeDTO->setNumIdUsuarioOrigem($dados['IdUsuarioOrigem'] ?: 100000001); + $this->objAtividadeDTO->setDthAbertura($dados['Abertura'] ?: InfraData::getStrDataHoraAtual()); + $this->objAtividadeDTO->setDthConclusao($dados['Conclusao'] ?: null); + $this->objAtividadeDTO->setNumIdTarefa($dados['IdTarefa'] ?: null); + $this->objAtividadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); + $this->objAtividadeDTO->setNumIdUsuarioConclusao($dados['IdUsuarioConclusao'] ?: null); + $this->objAtividadeDTO->setStrSinInicial($dados['SinInicial'] ?: 'S'); + $this->objAtividadeDTO->setNumIdUsuarioVisualizacao($dados['IdUsuarioVisualizacao'] ?: null); + $this->objAtividadeDTO->setNumTipoVisualizacao($dados['TipoVisualizacao'] ?: 0); + $this->objAtividadeDTO->setDtaPrazo($dados['Prazo'] ?: null); + + $objProtocoloDB = new \AtividadeBD(\BancoSEI::getInstance()); + $objProtocoloDB->cadastrar($this->objAtividadeDTO); + + return $this->objAtividadeDTO; + } +} diff --git a/tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php b/tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php new file mode 100644 index 000000000..1ee8e3ae6 --- /dev/null +++ b/tests_super/funcional/src/fixtures/BlocoDeTramiteFixture.php @@ -0,0 +1,43 @@ +setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objBlocoDeTramiteDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objBlocoDeTramiteDTO->setStrDescricao($dados['Descricao'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrIdxBloco($dados['IdxBloco'] ?: 'Bloco para envio'); + $objBlocoDeTramiteDTO->setStrStaTipo($dados['IdxBloco'] ?: 'I'); + $objBlocoDeTramiteDTO->setStrStaEstado($dados['IdxBloco'] ?: 'A'); + + $objBlocoDeTramiteDB = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); + $objBlocoDeTramiteDB->cadastrar($objBlocoDeTramiteDTO); + + return $objBlocoDeTramiteDTO; + } + + public function excluir($id) + { + $dto = new \TramiteEmBlocoDTO(); + $dto->setNumId($id); + $dto->retNumId(); + + $objBD = new \TramiteEmBlocoBD(\BancoSEI::getInstance()); + $objBD->excluir($dto); + } +} diff --git a/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php b/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php new file mode 100644 index 000000000..42ca5c465 --- /dev/null +++ b/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php @@ -0,0 +1,31 @@ +objBlocoDeTramiteProtocoloDTO = new \TramitaEmBlocoProtocoloDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + + $this->objBlocoDeTramiteProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumIdTramitaEmBloco($dados['IdTramitaEmBloco'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: null); + $this->objBlocoDeTramiteProtocoloDTO->setStrIdxRelBlocoProtocolo($dados['IdxRelBlocoProtocolo'] ?: null); + + + $objBlocoDeTramiteProtocoloBD = new \TramitaEmBlocoProtocoloBD(\BancoSEI::getInstance()); + $objBlocoDeTramiteProtocoloBD->cadastrar($this->objBlocoDeTramiteProtocoloDTO); + + return $this->objBlocoDeTramiteProtocoloDTO; + } +} diff --git a/tests_super/funcional/src/fixtures/ContatoFixture.php b/tests_super/funcional/src/fixtures/ContatoFixture.php new file mode 100644 index 000000000..f80e6d891 --- /dev/null +++ b/tests_super/funcional/src/fixtures/ContatoFixture.php @@ -0,0 +1,44 @@ +objContatoDTO = new \ContatoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + + $dados['IdContato'] = $this->getObjInfraIBanco()->getValorSequencia('seq_contato'); + $dados['Nome'] = $dados['Nome'] ?: 'teste'; + + $this->objContatoDTO->setNumIdContato($dados['IdContato']); + $this->objContatoDTO->setNumIdContatoAssociado($dados['IdContatoAssociado'] ?: $dados['IdContato']); + $this->objContatoDTO->setStrNome($dados['Nome']); + $this->objContatoDTO->setStrNomeRegistroCivil($dados['NomeRegistroCivil'] ?: $dados['Nome']); + // $this->objContatoDTO->setNumIdCargo($dados['IdCargo'] ?: 0); + // $this->objContatoDTO->setNumIdCategoria($dados['IdCategoria'] ?: 110000001); + $this->objContatoDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); + $this->objContatoDTO->setStrIdxContato($dados['IdxContato'] ?: strtolower($dados['Nome'])); + $this->objContatoDTO->setNumIdUnidadeCadastro($dados['IdUnidadeCadastro'] ?: 110000001); + $this->objContatoDTO->setNumIdUsuarioCadastro($dados['IdUsuarioCadastro'] ?: 100000001); + $this->objContatoDTO->setDthCadastro($dados['Cadastro'] ?: \InfraData::getStrDataHoraAtual()); + $this->objContatoDTO->setNumIdTipoContato($dados['IdTipoContato'] ?: 4); + $this->objContatoDTO->setStrStaNatureza($dados['StaNatureza'] ?: 'F'); + $this->objContatoDTO->setStrSinEnderecoAssociado($dados['SinEnderecoAssociado'] ?: 'N'); + + $objContatoBD = new \ContatoBD(\BancoSEI::getInstance()); + $objContatoBD->cadastrar($this->objContatoDTO); + + return $this->objContatoDTO; + } + +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/FixtureBase.php b/tests_super/funcional/src/fixtures/FixtureBase.php new file mode 100644 index 000000000..103c93b23 --- /dev/null +++ b/tests_super/funcional/src/fixtures/FixtureBase.php @@ -0,0 +1,78 @@ +cadastrar($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function carregar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->cadastrarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + public function carregarVarios($dados = null, $quantidade = 1){ + $resultado = []; + for ($i=0; $i < $quantidade; $i++) { + $resultado[] = $this->carregar($dados); + } + + return $resultado; + } + + public function carregarVariados($dados){ + $resultado = []; + foreach ($dados as $dado) { + $resultado[] = $this->carregar($dado); + } + + return $resultado; + } + + protected function listarInternoControlado($parametros){ + $dto = $this->listar($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function buscar($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->listarInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } + + protected function removerInternoControlado($parametros){ + $dto = $this->excluir($parametros["dados"]); + + if (isset($parametros["callback"])) { + $parametros["callback"]($dto); + } + + return $dto; + } + + public function remover($dados = null, $callback = null){ + $dados = $dados ?: []; + return $this->removerInterno([ + 'dados' => $dados, + 'callback' => $callback + ]); + } +} diff --git a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php index bbd5c017f..8f3dd04b5 100644 --- a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php +++ b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -1,12 +1,14 @@ objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $this->dthRegistro = \InfraData::getStrDataAtual(); } protected function inicializarObjInfraIBanco() @@ -16,50 +18,61 @@ protected function inicializarObjInfraIBanco() public function cadastrar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $tiposProcessos = $this->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] - ) - ); + $objPenMapTipoProcedimentoDTO = $this->consultar($dados); + if ($objPenMapTipoProcedimentoDTO) { + return $objPenMapTipoProcedimentoDTO; } - - return $tiposProcessos; + + $this->objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setStrNomeTipoProcesso($dados['NomeProcedimento']); + $this->objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); + $this->objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); + $this->objPenMapTipoProcedimentoDTO->setDthRegistro(\InfraData::getStrDataAtual()); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->cadastrar($this->objPenMapTipoProcedimentoDTO); } - - public function deletar($dados = []): void + + public function consultar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $tiposProcessos = $this->getTiposProcessos($dados['idMapeamento']); + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); + $objPenMapTipoProcedimentoDTO->setNumIdUnidade(($dados['IdUnidade'] ?? 110000001)); + $objPenMapTipoProcedimentoDTO->setStrAtivo(($dados['SimAtivo'] ?? 'S')); + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->consultar($objPenMapTipoProcedimentoDTO); + } - foreach ($tiposProcessos as $tipoProcesso) { - $bancoOrgaoA->execute( - "DELETE FROM md_pen_map_tipo_processo WHERE id = ?", - array($tipoProcesso[0]) - ); + public function listar($dados = [] ) + { + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setNumIdMapOrgao($dados['IdMapeamento']); + if ($dados['IdProcedimento']) { + $objPenMapTipoProcedimentoDTO->setNumIdTipoProcessoOrigem($dados['IdProcedimento']); } + if ($dados['IdUnidade']) { + $objPenMapTipoProcedimentoDTO->setNumIdUnidade($dados['IdUnidade']); + } + if ($dados['SimAtivo']) { + $objPenMapTipoProcedimentoDTO->setStrAtivo($dados['SimAtivo']); + } + $objPenMapTipoProcedimentoDTO->retTodos(); + + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->listar($objPenMapTipoProcedimentoDTO); } - public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + public function excluir($dados = []) { - $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')]; + $objPenMapTipoProcedimentoDTO = new \PenMapTipoProcedimentoDTO(); + $objPenMapTipoProcedimentoDTO->setDblId($dados['Id']); - return $tiposProcessos; + $objPenMapTipoProcedimentoBD = new \PenMapTipoProcedimentoBD(\BancoSEI::getInstance()); + return $objPenMapTipoProcedimentoBD->excluir($objPenMapTipoProcedimentoDTO); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/ParticipanteFixture.php b/tests_super/funcional/src/fixtures/ParticipanteFixture.php new file mode 100644 index 000000000..cdc1611d7 --- /dev/null +++ b/tests_super/funcional/src/fixtures/ParticipanteFixture.php @@ -0,0 +1,37 @@ +objParticipanteDTO = new \ParticipanteDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + + $this->objParticipanteDTO->setDblIdProtocolo($dados['IdProtocolo'] ?: null); + $this->objParticipanteDTO->setStrStaParticipacao($dados['StaParticipacao'] ?: self::INTERESSADO); + $this->objParticipanteDTO->setNumIdContato($dados['IdContato'] ?: 100000006); + $this->objParticipanteDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $this->objParticipanteDTO->setNumSequencia($dados['Sequencia'] ?: 0); + + + $objParticipanteDB = new \ParticipanteBD(\BancoSEI::getInstance()); + $objParticipanteDB->cadastrar($this->objParticipanteDTO); + + return $this->objParticipanteDTO; + } +} diff --git a/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php index 1300aae12..308a8f525 100644 --- a/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php +++ b/tests_super/funcional/src/fixtures/PenMapUnidadesFixture.php @@ -3,89 +3,46 @@ /** * Responsável por cadastrar novo mapeamento de unidades caso não exista */ -class PenMapUnidadesFixture +class PenMapUnidadesFixture extends \FixtureBase { - private static $bancoOrgaoA; - private static $dados; + protected $objPenUnidadeDTO; - /** - * @param string $contexto - * @param array $dados - */ - public function __construct(string $contexto, array $dados) + public function __construct() { - self::$bancoOrgaoA = new DatabaseUtils($contexto); - self::$dados = $dados; + $this->objPenUnidadeDTO = new \PenUnidadeDTO(); } - /** - * Consulta mapeamento de unidade - * Se existe atualiza sigla e nome - * Se não existe cadastra um novo - * - * @return void - */ - public function gravar(): void + protected function inicializarObjInfraIBanco() { - $penUnidade = $this->consultar(); - if (!empty($penUnidade)) { - $this->atualizar(); - } else { - $this->cadastrar(); - } + return \BancoSEI::getInstance(); } - /** - * Consultar mapeamento de unidade - * - * @return array|null - */ - public function consultar() + public function cadastrar($dados = []) { - 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']) - ); - } + $objPenUnidadeDTO = $this->consultar($dados); + if ($objPenUnidadeDTO) { + return $objPenUnidadeDTO; + } - /** - * 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']) - ); - } + $this->objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $this->objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $this->objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $this->objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); - /** - * 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']) - ); + $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); + return $objPenUnidadeBD->cadastrar($this->objPenUnidadeDTO); } - - /** - * Deletear mapeamento de unidade - * - * @return void - */ - public function deletar(): void + + public function consultar($dados = []) { - self::$bancoOrgaoA->execute( - "DELETE FROM md_pen_unidade WHERE id_unidade = ? and id_unidade_rh = ?", - array(110000001, self::$dados['id']) - ); + $objPenUnidadeDTO = new \PenUnidadeDTO(); + $objPenUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $objPenUnidadeDTO->setNumIdUnidadeRH($dados['Id']); + $objPenUnidadeDTO->setStrNomeUnidadeRH($dados['Nome']); + $objPenUnidadeDTO->setStrSiglaUnidadeRH($dados['Sigla']); + $objPenUnidadeDTO->retTodos(); + + $objPenUnidadeBD = new \PenUnidadeBD(\BancoSEI::getInstance()); + return $objPenUnidadeBD->consultar($objPenUnidadeDTO); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php index 5191cb637..38a8395f0 100644 --- a/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php +++ b/tests_super/funcional/src/fixtures/PenOrgaoExternoFixture.php @@ -1,12 +1,12 @@ objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); } protected function inicializarObjInfraIBanco() @@ -16,28 +16,48 @@ protected function inicializarObjInfraIBanco() public function cadastrar($dados = []) { - $penMapUnidadesFixture = new PenMapUnidadesFixture(self::$contexto, $dados); - $penMapUnidadesFixture->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; + $this->objPenOrgaoExternoDTO = $this->consultar($dados); + if ($this->objPenOrgaoExternoDTO) { + return $this->objPenOrgaoExternoDTO; + } + + $this->objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $this->objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $this->objPenOrgaoExternoDTO->setStrOrgaoOrigem($dados['NomeOrigem']); + $this->objPenOrgaoExternoDTO->setNumIdEstrutaOrganizacionalOrigem($dados['IdRepositorio']); + $this->objPenOrgaoExternoDTO->setStrEstrutaOrganizacionalOrigem($dados['RepositorioEstruturas']); + + $this->objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $this->objPenOrgaoExternoDTO->setStrOrgaoDestino($dados['Nome']); + + $this->objPenOrgaoExternoDTO->setDthRegistro($dados['DataRegistro'] ?? \InfraData::getStrDataAtual()); + $this->objPenOrgaoExternoDTO->setStrAtivo($dados['SinAtivo'] ?? 'S'); + $this->objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); + $this->objPenOrgaoExternoDTO = $objPenOrgaoExternoBD->cadastrar($this->objPenOrgaoExternoDTO); + + return $this->objPenOrgaoExternoDTO; } - public function deletar(int $id): void + public function consultar($dados = []) { - $bancoOrgaoA = new DatabaseUtils(self::$contexto); - $bancoOrgaoA->execute("delete from md_pen_orgao_externo where id = ?", array($id)); + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setNumIdOrgaoOrigem($dados['IdOrigem']); + $objPenOrgaoExternoDTO->setNumIdOrgaoDestino($dados['Id']); + $objPenOrgaoExternoDTO->setNumIdUnidade($dados['IdUnidade'] ?? 110000001); + $objPenOrgaoExternoDTO->retTodos(); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); + return $objPenOrgaoExternoBD->consultar($objPenOrgaoExternoDTO); + } + + public function excluir($dados = []) + { + $objPenOrgaoExternoDTO = new \PenOrgaoExternoDTO(); + $objPenOrgaoExternoDTO->setDblId($dados['Id']); + + $objPenOrgaoExternoBD = new \PenOrgaoExternoBD(\BancoSEI::getInstance()); + return $objPenOrgaoExternoBD->excluir($objPenOrgaoExternoDTO); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php b/tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php new file mode 100644 index 000000000..3fb417727 --- /dev/null +++ b/tests_super/funcional/src/fixtures/RelBlocoProtocoloFixture.php @@ -0,0 +1,30 @@ +getObjInfraIBanco()->getValorSequencia('seq_protocolo'); + // $dados['IdDocumento'] = $this->getObjInfraIBanco()->getValorSequencia('seq_documento'); + + $objRelBlocoProtocoloDTO = new \RelBlocoProtocoloDTO(); + // $objBlocoDTO->setNumIdBloco(); + $objRelBlocoProtocoloDTO->setDblIdProtocolo($IdProtocolo ?: null); + $objRelBlocoProtocoloDTO->setNumIdBloco($dados['IdBloco'] ?: null); + $objRelBlocoProtocoloDTO->setStrAnotacao($dados['Anotacao'] ?: null); + $objRelBlocoProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: 1); + $objRelBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($IdProtocolo); + + $objRelBlocoProtocoloDB = new \RelBlocoProtocoloBD(\BancoSEI::getInstance()); + $objRelBlocoProtocoloDB->cadastrar($objRelBlocoProtocoloDTO); + + return $objRelBlocoProtocoloDTO; + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php b/tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php new file mode 100644 index 000000000..a6bf9719f --- /dev/null +++ b/tests_super/funcional/src/fixtures/RelBlocoUnidadeFixture.php @@ -0,0 +1,38 @@ +setNumIdBloco(); + $objRelBlocoUnidadeDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objRelBlocoUnidadeDTO->setNumIdBloco($dados['IdBloco'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdGrupoBloco($dados['IdGrupoBloco'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioRevisao($dados['IdUsuarioRevisao'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioPrioridade($dados['IdUsuarioPrioridade'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioAtribuicao($dados['IdUsuarioAtribuicao'] ?: null); + $objRelBlocoUnidadeDTO->setNumIdUsuarioComentario($dados['IdUsuarioComentario'] ?: null); + $objRelBlocoUnidadeDTO->setStrSinRetornado($dados['SinRetornado'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrSinRevisao($dados['SinRevisao'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrSinPrioridade($dados['SinPrioridade'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrSinComentario($dados['SinComentario'] ?: 'N'); + $objRelBlocoUnidadeDTO->setStrTextoComentario($dados['TextoComentario'] ?: null); + $objRelBlocoUnidadeDTO->setDthRevisao($dados['Revisao'] ?: null); + $objRelBlocoUnidadeDTO->setDthPrioridade($dados['Prioridade'] ?: null); + $objRelBlocoUnidadeDTO->setDthComentario($dados['Comentario'] ?: null); + + $objBlocoUnidadeDB = new \RelBlocoUnidadeBD(\BancoSEI::getInstance()); + $objBlocoUnidadeDB->cadastrar($objRelBlocoUnidadeDTO); + + return $objRelBlocoUnidadeDTO; + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php b/tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php new file mode 100644 index 000000000..41fd2d8e3 --- /dev/null +++ b/tests_super/funcional/src/fixtures/RelProtocoloProtocoloFixture.php @@ -0,0 +1,28 @@ +setDblIdProtocolo1($dados['IdProtocolo']); + $objRelProtocoloProtocoloDTO->setDblIdProtocolo2($dados['IdDocumento']); + $objRelProtocoloProtocoloDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objRelProtocoloProtocoloDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objRelProtocoloProtocoloDTO->setStrSinCiencia($dados['Ciencia'] ?: 'N'); + $objRelProtocoloProtocoloDTO->setNumSequencia($dados['Sequencia'] ?: 0); + $objRelProtocoloProtocoloDTO->setStrStaAssociacao($dados['Associacao'] ?: 1); + $objRelProtocoloProtocoloDTO->setDthAssociacao(InfraData::getStrDataHoraAtual()); + + $objRelProtocoloAssuntoDB = new \RelProtocoloProtocoloBD(\BancoSEI::getInstance()); + $objRelProtocoloAssuntoDB->cadastrar($objRelProtocoloProtocoloDTO); + + return $objRelProtocoloProtocoloDTO; + } +} diff --git a/tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php b/tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php new file mode 100644 index 000000000..7bf2db754 --- /dev/null +++ b/tests_super/funcional/src/fixtures/SecaoDocumentoFixture.php @@ -0,0 +1,182 @@ +objProtocoloRN = new \ProtocoloRN(); + $this->objProtocoloDTO = new \ProtocoloDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + $documento = $dados['documento'] ?: false; + + $dados['IdProtocolo'] = $this->getObjInfraIBanco()->getValorSequencia('seq_protocolo'); + + $objSecaoDocumentoDTO = new SecaoDocumentoDTO(); + + // $objSecaoDocumentoDTO->setNumIdSecaoDocumento(); + + $objSecaoDocumentoDTO->setNumOrdem($dados['Ordem'] ?: 0); + $objSecaoDocumentoDTO->setStrSinSomenteLeitura($dados['SomenteLeitura'] ?: null); + $objSecaoDocumentoDTO->setStrSinAssinatura($dados['Assinatura'] ?: null); + $objSecaoDocumentoDTO->setStrSinPrincipal($dados['Principal'] ?: null); + $objSecaoDocumentoDTO->setStrSinDinamica($dados['Dinamica'] ?: null); + $objSecaoDocumentoDTO->setStrSinCabecalho($dados['Cabecalho'] ?: null); + $objSecaoDocumentoDTO->setStrSinRodape($dados['Rodape'] ?: null); + $objSecaoDocumentoDTO->setStrSinHtml($dados['Html'] ?: null); + $objSecaoDocumentoDTO->setNumIdSecaoModelo($dados['IdSecaoModelo'] ?: null); + $objSecaoDocumentoDTO->setDblIdDocumento($dados['IdDocumento'] ?: null); + $objSecaoDocumentoDTO->setNumIdBaseConhecimento($dados['IdBaseConhecimento'] ?: null); + $objSecaoDocumentoDTO->setStrConteudo($dados['Conteudo'] ?: null); + + + $objProtocoloDB = new \SecaoDocumentoBD(\BancoSEI::getInstance()); + $objProtocoloDB->cadastrar($objSecaoDocumentoDTO); + + return $objSecaoDocumentoDTO; + } + + public function conteudoEstatico($IdDocumento) + { + return [ + [ + 'IdSecaoModelo' => 323, + 'IdDocumento' => $IdDocumento, + 'Ordem' => 0, + 'SomenteLeitura' => 'S', + 'Assinatura' => 'N', + 'Principal' => 'N', + 'Dinamica' => 'S', + 'Cabecalho' => 'S', + 'Rodape' => 'N', + 'Conteudo' => '

  

+

@descricao_orgao_maiusculas@

+

  

', + 'Html' => 'S' + ], + [ + 'IdSecaoModelo' => 252, + 'IdDocumento' => $IdDocumento, + 'Ordem' => 10, + 'SomenteLeitura' => 'S', + 'Assinatura' => 'N', + 'Principal' => 'N', + 'Dinamica' => 'S', + 'Cabecalho' => 'N', + 'Rodape' => 'N', + 'Conteudo' => '@serie@ nº @numeracao_serie@/@ano@', + 'Html' => 'N' + ], + [ + 'IdSecaoModelo' => 253, + 'IdDocumento' => $IdDocumento, + 'Ordem' => 20, + 'SomenteLeitura' => 'S', + 'Assinatura' => 'N', + 'Principal' => 'N', + 'Dinamica' => 'S', + 'Cabecalho' => 'N', + 'Rodape' => 'N', + 'Conteudo' => 'Processo nº @processo@', + 'Html' => 'N' + ], + [ + 'IdSecaoModelo' => 254, + 'IdDocumento' => $IdDocumento, + 'Ordem' => 30, + 'SomenteLeitura' => 'S', + 'Assinatura' => 'N', + 'Principal' => 'N', + 'Dinamica' => 'S', + 'Cabecalho' => 'N', + 'Rodape' => 'N', + 'Conteudo' => 'Recorrente/Interessado: @interessados_virgula_espaco_maiusculas@', + 'Html' => 'N' + + ], + [ + 'IdSecaoModelo' => 257, + 'IdDocumento' => $IdDocumento, + 'Ordem' => 40, + 'SomenteLeitura' => 'N', + 'Assinatura' => 'N', + 'Principal' => 'S', + 'Dinamica' => 'N', + 'Cabecalho' => 'N', + 'Rodape' => 'N', + 'Conteudo' => '

CNPJ/MF Nº XX.XXX.XXX/XXXX-DV

+

Conselheiro Relator: [Digite aqui o Nome Completo]

+

Fórum Deliberativo: Reunião nº [indique o número], de DD de mmmmmm de aaaaa

+

EMENTA

+

DIGITE O TEXTO EM CAIXA ALTA

+

Clique aqui para digitar o texto.

+

Clique aqui para digitar o texto.

+

Clique aqui para digitar o texto.

+

ACÓRDÃO

+

Vistos, relatados e discutidos os presentes autos, acordam os membros do Conselho Diretor, por unanimidade, nos termos da Análise nº XX/AAAA-GCxx, de dd de mmmmmm de aaaaa, integrante deste Acórdão:

+

Clique aqui para digitar o texto.

+

Clique aqui para digitar o texto.

+

Clique aqui para digitar o texto.

+

Participaram da deliberação o Presidente [nome completo] e os Conselheiros [nome completo de cada Conselheiro participante].

+

Ausente, justificadamente, o Conselheiro [nome completo], por motivo de [indicar o motivo].

+ ', + 'Html' => 'S' + ], + [ + 'IdSecaoModelo' => 255, + 'IdDocumento' => $IdDocumento, + 'Ordem' => 50, + 'SomenteLeitura' => 'N', + 'Assinatura' => 'S', + 'Principal' => 'N', + 'Dinamica' => 'N', + 'Cabecalho' => 'N', + 'Rodape' => 'N', + 'Conteudo' => null, + 'Html' => 'N' + ], + [ + 'IdSecaoModelo' => 324, + 'IdDocumento' => $IdDocumento, + 'Ordem' => 1000, + 'SomenteLeitura' => 'S', + 'Assinatura' => 'N', + 'Principal' => 'N', + 'Dinamica' => 'S', + 'Cabecalho' => 'N', + 'Rodape' => 'S', + 'Conteudo' => '
+ + + + + +
Referência: Processo nº @processo@SEI nº @documento@
', + 'Html' => 'S' + ] + ]; + } + + // protected function cadastrarVariados($dados = []) + // { + // foreach ($dados as $dado) { + // $this->cadastrar($dado); + // } + // } +} diff --git a/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php b/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php new file mode 100644 index 000000000..370651c83 --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -0,0 +1,230 @@ +test->byId("txtInfraPesquisarMenu")->value(utf8_encode('Blocos de Trâmite Externo')); + $this->test->byXPath("//a[@link='md_pen_tramita_em_bloco']")->click(); + } + + /** + * Setar parametro para novo mapeamento de orgãos externos + * + * @return void + */ + public function setarParametros($estrutura, $origem) + { + $this->selectRepositorio($estrutura); + $this->selectUnidade($origem, 'Origem'); // Seleciona Orgão de Origem + } + + /** + * Seleciona repositório por sigla + * + * @param string $siglaRepositorio + * @return string + */ + private function selectRepositorio($siglaRepositorio) + { + $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas')); + + if(isset($siglaRepositorio)){ + $this->repositorioSelect->selectOptionByLabel($siglaRepositorio); + } + + return $this->test->byId('selRepositorioEstruturas')->value(); + } + + /** + * Seleciona unidade por nome + * + * @param string $nomeUnidade + * @param string $origemDestino + * @param ?string $hierarquia + * @return string + */ + private function selectUnidade($nomeUnidade, $origemDestino, $hierarquia = null) + { + $this->unidadeInput = $this->test->byId('txtUnidade'); + $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')->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(); + } + + public function novoBlocoDeTramite() + { + $this->test->byId("bntNovo")->click(); + } + + + public function criarNovoBloco() + { + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } + + public function editarBlocoDeTramite($descricao = null) + { + $this->test->byXPath("(//img[@title='Alterar Bloco'])[1]")->click(); + + if ($descricao != null) { + $this->test->byId('txtDescricao')->clear(); + $this->test->byId('txtDescricao')->value($descricao); + } + } + + public function selecionarExcluirBloco() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + public function buscarMensagemAlerta() + { + $alerta = $this->test->byXPath("(//div[@id='divInfraMsg0'])[1]"); + return !empty($alerta->text()) ? $alerta->text() : ""; + } + + public function tramitarProcessoExternamente($repositorio, $unidadeDestino, $unidadeDestinoHierarquia, $urgente = false, $callbackEnvio = null, $timeout = PEN_WAIT_TIMEOUT) + { + // Preencher parâmetros do trâmite + $this->selectRepositorio($repositorio); + $this->selectUnidade($unidadeDestino, 'origem', $unidadeDestinoHierarquia); + $this->btnEnviar(); + + if ($callbackEnvio == null) { + $mensagemAlerta = null; + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + if ($mensagemAlerta) { + throw new Exception($mensagemAlerta); + } + } + + try { + $mensagemAlerta = $this->alertTextAndClose(true); + } catch (Exception $e) { + } + + if (isset($mensagemAlerta)) { + throw new Exception($mensagemAlerta); + } + + $callbackEnvio = $callbackEnvio ?: function ($testCase) { + try { + $testCase->frame('ifrEnvioProcesso'); + $mensagemSucesso = utf8_encode('Trâmite externo do processo finalizado com sucesso!'); + $testCase->assertStringContainsString($mensagemSucesso, $testCase->byCssSelector('body')->text()); + $btnFechar = $testCase->byXPath("//input[@id='btnFechar']"); + $btnFechar->click(); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + return true; + }; + + try { + $this->test->waitUntil($callbackEnvio, $timeout); + } finally { + try { + $this->test->frame(null); + $this->test->frame("ifrVisualizacao"); + } catch (Exception $e) { + } + } + + sleep(1); + } + + public function realizarValidacaoRecebimentoProcessoNoDestinatario($processoTeste) + { + $strProtocoloTeste = $processoTeste['PROTOCOLO']; + + $this->test->waitUntil(function ($testCase) use ($strProtocoloTeste) { + sleep(5); + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaControleProcesso->abrirProcesso($strProtocoloTeste); + return true; + }, PEN_WAIT_TIMEOUT); + + $listaDocumentos = $this->paginaProcesso->listarDocumentos(); + } + + public function retornarTextoColunaDaTabelaDeBlocos() + { + $tabela = $this->test->byXPath('//tr[@class="infraTrClara odd"]'); + $terceiraColuna = $tabela->byXPath('./td[3]'); + + return $terceiraColuna->text(); + } + + public function retornarQuantidadeDeProcessosNoBloco() + { + // Localiza todas as linhas da tabela com o XPath + $linhasDaTabela = $this->test->elements($this->test->using('xpath')->value('//table[@id="tblBlocos"]/tbody/tr')); + + // Obtém o número de linhas + return count($linhasDaTabela); + } + + + public function bntTramitarBloco() + { + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } + + public function bntVisualizarProcessos() + { + $this->test->byXPath("(//img[@title='Visualizar Processos'])[1]")->click(); + } + + public function btnSalvar() + { + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } + + public function btnEnviar() + { + $buttonElement = $this->test->byXPath("//button[@type='button' and @value='Enviar']"); + $buttonElement->click(); + } + +} \ No newline at end of file diff --git a/tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php b/tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php new file mode 100644 index 000000000..a925799ff --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaTramiteEmBloco.php @@ -0,0 +1,78 @@ +test->byXPath('//tr[contains(.,"'.$numProtocolo.'")]/td/div/label'); + $chkProtocolo->click(); + } + } + + /** + * Selecionar tramite em bloco + * @return void + */ + public function selecionarTramiteEmBloco() + { + $btnTramiteEmBloco = $this->test->byXPath( + "//img[@alt='". utf8_encode("Incluir Processos no Bloco de Trâmite") ."']" + ); + $btnTramiteEmBloco->click(); + } + + /** + * Selecionar bloco + * @param string $selAndamento + * @return void + */ + public function selecionarBloco($selAndamento) + { + $select = $this->test->select($this->test->byId('selBlocos')); + $select->selectOptionByValue($selAndamento); + } + + /** + * Clicar em salvar + * @return void + */ + public function clicarSalvar() + { + $btnSalvar = $this->test->byXPath("//button[@name='sbmCadastrarProcessoEmBloco']"); + $btnSalvar->click(); + } + + /** + * 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() : ""; + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php index e1c64c24a..7376f8f21 100755 --- a/tests_super/funcional/tests/CenarioBaseTestCase.php +++ b/tests_super/funcional/tests/CenarioBaseTestCase.php @@ -44,6 +44,8 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaExportarTiposProcesso = null; protected $paginaTipoProcessoReativar = null; protected $paginaCadastroOrgaoExterno = null; + protected $paginaCadastrarProcessoEmBloco = null; + protected $paginaTramiteEmBloco = null; public function setUpPage(): void { @@ -67,6 +69,8 @@ public function setUpPage(): void $this->paginaExportarTiposProcesso = new PaginaExportarTiposProcesso($this); $this->paginaTipoProcessoReativar = new PaginaTipoProcessoReativar($this); $this->paginaCadastroOrgaoExterno = new PaginaCadastroOrgaoExterno($this); + $this->paginaCadastrarProcessoEmBloco = new PaginaCadastrarProcessoEmBloco($this); + $this->paginaTramiteEmBloco = new PaginaTramiteEmBloco($this); $this->currentWindow()->maximize(); } @@ -84,7 +88,13 @@ public static function setUpBeforeClass(): void $bancoOrgaoA->execute("update unidade set sin_envio_processo=? where sigla=?", array('S', 'TESTE_1_2')); // Configuração do mapeamento de unidades - $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000001', CONTEXTO_ORGAO_A_ID_ESTRUTURA)); + $penMapUnidadesFixture = new \PenMapUnidadesFixture(); + $penMapUnidadesFixture->carregar([ + 'Id' => CONTEXTO_ORGAO_A_ID_ESTRUTURA, + 'Sigla' => CONTEXTO_ORGAO_A_SIGLA_ESTRUTURA, + 'Nome' => CONTEXTO_ORGAO_A_NOME_UNIDADE, + ]); + $bancoOrgaoA->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values (?, ?)", array('110000002', CONTEXTO_ORGAO_A_ID_ESTRUTURA_SECUNDARIA)); // Configuração do prefíxo de processos $bancoOrgaoA->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_A_NUMERO_SEI, CONTEXTO_ORGAO_A_SIGLA_ORGAO)); @@ -116,7 +126,14 @@ public static function setUpBeforeClass(): void $bancoOrgaoB = new DatabaseUtils(CONTEXTO_ORGAO_B); $bancoOrgaoB->execute("update unidade set sin_envio_processo=? where sigla=?", array('S', 'TESTE_1_2')); - $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000001', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA)); + $bancoOrgaoB->execute( + "insert into md_pen_unidade(id_unidade, id_unidade_rh, sigla_unidade_rh, nome_unidade_rh) values ('110000001', ?, ?, ?)", + array( + CONTEXTO_ORGAO_B_ID_ESTRUTURA, + CONTEXTO_ORGAO_B_SIGLA_UNIDADE, + CONTEXTO_ORGAO_B_NOME_UNIDADE + ) + ); $bancoOrgaoB->execute("insert into md_pen_unidade(id_unidade, id_unidade_rh) values ('110000002', ?)", array(CONTEXTO_ORGAO_B_ID_ESTRUTURA_SECUNDARIA)); $bancoOrgaoB->execute("update orgao set codigo_sei=? where sigla=?", array(CONTEXTO_ORGAO_B_NUMERO_SEI, CONTEXTO_ORGAO_B_SIGLA_ORGAO)); @@ -376,9 +393,6 @@ protected function tramitarProcessoExternamente($protocolo, $repositorio, $unida protected function tramitarProcessoExternamenteGestorNaoResponsavelUnidade ($repositorio, $unidadeDestino, $unidadeDestinoHierarquia) { - $bancoOrgaoA = new DatabaseUtils(CONTEXTO_ORGAO_A); - $bancoOrgaoA->execute("update md_pen_unidade set id_unidade_rh=? where id_unidade=?", array('151105', '110000001')); - // Acessar funcionalidade de trâmite externo try { $this->paginaTramitarProcessoEmLote->navegarControleProcessos(); @@ -418,8 +432,6 @@ protected function tramitarProcessoExternamenteGestorNaoResponsavelUnidade ($rep } catch (Exception $e) { } } - - $bancoOrgaoA->execute("update md_pen_unidade set id_unidade_rh=? where id_unidade=?", array(CONTEXTO_ORGAO_A_ID_ESTRUTURA, '110000001')); } protected function tramitarProcessoInternamente($unidadeDestino) @@ -580,7 +592,8 @@ protected function validarDadosDocumento($nomeDocArvore, $dadosDocumento, $desti protected function validarProcessosTramitados($protocolo, $deveExistir) { $this->frame(null); - $this->byXPath("//img[contains(@title, 'Controle de Processos')]")->click(); + $this->paginaBase->navegarParaControleProcesso(); + $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados Externamente')); $this->byLinkText("Processos Tramitados Externamente")->click(); $this->assertEquals($deveExistir, $this->paginaProcessosTramitadosExternamente->contemProcesso($protocolo)); } @@ -828,7 +841,8 @@ protected function selecionarProcessos($numProtocolo=null) protected function visualizarProcessoTramitadosEmLote($test) { $this->paginaBase->navegarParaControleProcesso(); - $test->byLinkText("Processos Tramitados em Lote")->click(); + $this->byId("txtInfraPesquisarMenu")->value(utf8_encode('Processos Tramitados em Lote')); + $this->byLinkText("Processos Tramitados em Lote")->click(); } protected function navegarProcessoEmLote($selAndamento, $numProtocolo=null) diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php index c2b78e3d4..0489546e1 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoDesativarReativarTest.php @@ -23,16 +23,18 @@ function setUp(): void self::$remetente = $this->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'] + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -60,6 +62,8 @@ public function test_desativacao_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -87,6 +91,8 @@ public function test_reativacao_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -114,6 +120,8 @@ public function test_desativacao_checkbox_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -141,13 +149,28 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } public static function tearDownAfterClass(): void { - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->buscar([ + 'IdMapeamento' => self::$penOrgaoExternoId + ]); + + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $importacaoTiposProcessoFixture->remover([ + 'Id' => $objPenMapTipoProcedimentoDTO->getDblId() + ]); + } + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php index 2d18af510..b93b63f4b 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExcluirTest.php @@ -22,17 +22,19 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -63,13 +65,12 @@ public function test_excluir_mapeamento_orgao_externo() utf8_encode('Relacionamento entre unidades foi excluído com sucesso.'), $mensagem ); + + $this->sairSistema(); } - function tearDown(): void + public static function tearDownAfterClass(): void { - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); - - parent::tearDown(); + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php index cdc81f23a..7ccfc62a7 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoExportarTest.php @@ -41,6 +41,8 @@ public function test_exportar_tipos_de_processo() ); $this->paginaExportarTiposProcesso->verificarQuantidadeDeLinhasSelecionadas(); $this->paginaExportarTiposProcesso->btnExportar(); + + $this->sairSistema(); } /** @@ -62,5 +64,7 @@ public function test_pesquisar_tipos_de_processos() $this->paginaExportarTiposProcesso->selecionarPesquisa(); sleep(1); $this->assertTrue($this->paginaExportarTiposProcesso->buscarPesquisa()); + + $this->sairSistema(); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php index f37ec6d8e..74749a272 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoReativarTest.php @@ -12,6 +12,7 @@ class MapeamentoTipoProcessoReativarTest extends CenarioBaseTestCase public static $remetente; public static $destinatario; public static $penOrgaoExternoId; + public static $arrImportacaoTiposProcessoId; /** * @inheritdoc @@ -22,23 +23,27 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); - $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); - $importacaoTiposProcessoFixture->cadastrar([ - 'idMapeamento' => self::$penOrgaoExternoId, - 'sinAtivo' => 'N' - ]); + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $tiposProcessos = $this->getTiposProcessos($objPenOrgaoExternoDTO->getDblId(), 'N'); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->carregarVariados($tiposProcessos); + + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + self::$arrImportacaoTiposProcessoId[] = $objPenMapTipoProcedimentoDTO->getDblId(); + } } /** @@ -65,6 +70,8 @@ public function test_reativacao_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } /** @@ -91,16 +98,46 @@ public function test_reativar_checkbox_mapeamento_orgao_externo() $this->assertStringContainsString($menssagemValidacao, $testCase->byId('divInfraMsg0')->text()); return true; }, PEN_WAIT_TIMEOUT); + + $this->sairSistema(); } public static function tearDownAfterClass(): void { - $importacaoTiposProcessoFixture = new ImportacaoTiposProcessoFixture(CONTEXTO_ORGAO_A); - $importacaoTiposProcessoFixture->deletar(['idMapeamento' => self::$penOrgaoExternoId]); + $importacaoTiposProcessoFixture = new \ImportacaoTiposProcessoFixture(); + $arrObjPenMapTipoProcedimentoDTO = $importacaoTiposProcessoFixture->buscar([ + 'IdMapeamento' => self::$penOrgaoExternoId + ]); - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + foreach ($arrObjPenMapTipoProcedimentoDTO as $objPenMapTipoProcedimentoDTO) { + $importacaoTiposProcessoFixture->remover([ + 'Id' => $objPenMapTipoProcedimentoDTO->getDblId() + ]); + } + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); + parent::tearDownAfterClass(); } -} + + private function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') + { + return array( + array( + 'IdMapeamento' => $idMapeamento, + 'IdProcedimento' => 100000348, + 'NomeProcedimento' => utf8_encode('Acompanhamento Legislativo: Congresso Nacional'), + 'SimAtivo' => $sinAtivo + ), + array( + 'IdMapeamento' => $idMapeamento, + 'IdProcedimento' => 100000425, + 'NomeProcedimento' => utf8_encode('mauro teste'), + 'SimAtivo' => $sinAtivo + ) + ); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php index af3cfc4fc..1e31a79b0 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosCadastroTest.php @@ -20,13 +20,6 @@ function setUp(): void { parent::setUp(); self::$remetente = $this->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(); } /** @@ -65,6 +58,8 @@ public function test_cadastrar_novo_mapeamento_orgao_externo() utf8_encode('Relacionamento entre Unidades cadastrado com sucesso.'), $mensagem ); + + $this->sairSistema(); } /** @@ -99,6 +94,8 @@ public function test_cadastrar_mapeamento_orgao_externo_ja_cadastrado() utf8_encode('Cadastro de relacionamento entre unidades já existente.'), $mensagem ); + + $this->sairSistema(); } /** @@ -139,10 +136,12 @@ public function test_editar_mapeamento_orgao_externo() utf8_encode('Relacionamento entre Unidades atualizado com sucesso.'), $mensagem ); + + $this->sairSistema(); } public static function tearDownAfterClass(): void { parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php index 00dd0b47c..6bcf6dbc0 100644 --- a/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php +++ b/tests_super/funcional/tests/MapeamentoTipoProcessoRelacionamentoOrgaosListagemImportacaoTest.php @@ -23,17 +23,19 @@ function setUp(): void parent::setUp(); self::$remetente = $this->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'] + + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $objPenOrgaoExternoDTO = $penOrgaoExternoFixture->carregar([ + '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'] ]); + + self::$penOrgaoExternoId = $objPenOrgaoExternoDTO->getDblId(); } /** @@ -63,13 +65,17 @@ public function test_pesquisar_mapeamento_orgao_externo() $this->paginaCadastroOrgaoExterno->selecionarPesquisa(self::$destinatario['NOME_UNIDADE']); $nomeRepositorioCadastrado = $this->paginaCadastroOrgaoExterno->buscarNome(self::$destinatario['NOME_UNIDADE']); $this->assertNotNull($nomeRepositorioCadastrado); + + $this->sairSistema(); } - function tearDown(): void + public static function tearDownAfterClass(): void { - $penOrgaoExternoFixture = new PenOrgaoExternoFixture(CONTEXTO_ORGAO_A); - $penOrgaoExternoFixture->deletar(self::$penOrgaoExternoId); + $penOrgaoExternoFixture = new \PenOrgaoExternoFixture(); + $penOrgaoExternoFixture->remover([ + 'Id' => self::$penOrgaoExternoId, + ]); - parent::tearDown(); + parent::tearDownAfterClass(); } -} +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php new file mode 100644 index 000000000..94ce78458 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -0,0 +1,74 @@ +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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->novoBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->criarNovoBloco(); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Bloco de Trâmite externo criado com sucesso!'), + $mensagem + ); + + $this->sairSistema(); + } + + /** + * Teste para editar bloco de trâmite externo já criado + * + * @return void + */ + public function test_editar_bloco_de_tramite() + { + 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->editarBlocoDeTramite('Bloco editado para teste automatizado'); + $this->paginaCadastrarProcessoEmBloco->btnSalvar(); + + sleep(1); + $mensagem = $this->paginaCadastrarProcessoEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Bloco de trâmite externo alterado com sucesso!'), + $mensagem + ); + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php b/tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php new file mode 100644 index 000000000..12031ac39 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoLimiteAnexoTest.php @@ -0,0 +1,179 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + } + + /** + * Teste inicial de trâmite de um processo contendo outro anexado + * + * @group envio + * @large + * + * @return void + */ + public function test_tramitar_processo_anexado_da_origem() + { + // Definição de dados de teste do processo principal + self::$documentoTeste1 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); + self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente, 'arquivo_pequeno_A.pdf'); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ + 'Descricao' => 'teste' + ]); + + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdContato' => 100000006, + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + //Incluir novos documentos relacionados + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + 'Descricao' => self::$documentoTeste1['DESCRICAO'], + 'StaProtocolo' => ProtocoloRN::$TP_DOCUMENTO_RECEBIDO, + 'StaDocumento' => DocumentoRN::$TD_EXTERNO, + 'IdConjuntoEstilos' => NULL, + ]); + + //Adicionar anexo ao documento + $objAnexoFixture = new AnexoFixture(); + $objAnexoFixture->carregar([ + 'IdProtocolo' => $objDocumentoDTO->getDblIdDocumento(), + 'Nome' => basename(self::$documentoTeste1['ARQUIVO']), + ]); + + // $objAssinaturaFixture = new AssinaturaFixture(); + // $objAssinaturaFixture->carregar([ + // 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + // 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + // 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), + // ]); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + ]); + + self::$protocoloTestePrincipal['PROTOCOLO'] = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); + } + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + if (self::$tramitar == true) { + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + sleep(10); + } else { + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtyProcessos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtyProcessos, self::$numQtyProcessos); + } + + $this->sairSistema(); + } + + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->visualizarProcessoTramitadosEmLote($this); + $this->navegarProcessoEmLote(0); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); + $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + return true; + }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + + sleep(5); + } + + public function test_verificar_envio_tramite_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->assertNotEquals('Aberto', $novoStatus); + } else { + $this->assertEquals('Aberto', $novoStatus); + } + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php b/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php new file mode 100644 index 000000000..78e7d1c64 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php @@ -0,0 +1,172 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + } + + public function teste_tramite_bloco_externo() + { + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + for ($i = 0; $i < self::$numQtyProcessos; $i++) { + $objProtocoloFixture = new ProtocoloFixture(); + $objProtocoloFixtureDTO = $objProtocoloFixture->carregar([ + 'Descricao' => 'teste' + ]); + + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTarefa' => TarefaRN::$TI_GERACAO_PROCEDIMENTO, + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdContato' => 100000006, + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + ]); + + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->getStrProtocoloFormatado() + ]); + + self::$protocoloTestePrincipal = $objProtocoloFixtureDTO->getStrProtocoloFormatado(); + } + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + + if (self::$tramitar == true) { + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + sleep(5); + + } else { + $this->paginaCadastrarProcessoEmBloco->bntVisualizarProcessos(); + $qtyProcessos = $this->paginaCadastrarProcessoEmBloco->retornarQuantidadeDeProcessosNoBloco(); + + $this->assertEquals($qtyProcessos, self::$numQtyProcessos); + } + + $this->sairSistema(); + } + + /** + * Verificar se o bloco foi enviado + * + * + * @return void + */ + public function test_verificar_envio_processo() + { + $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; + + $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); + $this->visualizarProcessoTramitadosEmLote($this); + $this->navegarProcessoEmLote(0); + + $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { + sleep(5); + $testCase->refresh(); + $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); + $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); + return true; + }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); + + sleep(5); + + $this->sairSistema(); + } + + /** + * Verificar atualização do bloco + * + * + * @return void + */ + public function test_verificar_envio_tramite_em_bloco() + { + + 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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $novoStatus = $this->paginaCadastrarProcessoEmBloco->retornarTextoColunaDaTabelaDeBlocos(); + + if (self::$tramitar == true) { + $this->assertNotEquals('Aberto', $novoStatus); + } else { + $this->assertEquals('Aberto', $novoStatus); + } + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php b/tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php new file mode 100644 index 000000000..81def6ea9 --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoProcessoJaIncluidoEmBlocoTest.php @@ -0,0 +1,158 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + + $this->cadastrarBlocoDeTramite(); + $this->cadastrarProcessos(); + } + + /** + * Teste de inclusão de processo em bloco + * @return void + */ + public function teste_incluir_processo_em_bloco() + { + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode('Processo(s) incluído(s) com sucesso no bloco ' . $this->objBlocoDeTramiteDTO->getNumId()), + $mensagem + ); + + $this->paginaBase->sairSistema(); + } + + /** + * Teste de inclusão do mesmo processo em bloco + * @return void + */ + public function teste_mesmo_processo_em_bloco() + { + $objBlocoDeTramiteProtocoloFixture = new BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $this->objProtocoloDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $this->objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $this->objProtocoloDTO->getStrProtocoloFormatado() + ]); + + $this->acessarSistema( + self::$remetente['URL'], + self::$remetente['SIGLA_UNIDADE'], + self::$remetente['LOGIN'], + self::$remetente['SENHA'] + ); + + $this->paginaBase->navegarParaControleProcesso(); + $this->paginaTramiteEmBloco->selecionarProcessos([$this->objProtocoloDTO->getStrProtocoloFormatado()]); + $this->paginaTramiteEmBloco->selecionarTramiteEmBloco(); + $this->paginaTramiteEmBloco->selecionarBloco($this->objBlocoDeTramiteDTO->getNumId()); + $this->paginaTramiteEmBloco->clicarSalvar(); + sleep(2); + $mensagem = $this->paginaTramiteEmBloco->buscarMensagemAlerta(); + $this->assertStringContainsString( + utf8_encode( + 'Prezado(a) usuário(a), o processo ' . $this->objProtocoloDTO->getStrProtocoloFormatado() + . ' encontra-se inserido no bloco de número ' . $this->objBlocoDeTramiteDTO->getNumId() . '.' + . ' Para continuar com essa ação é necessário que o processo seja removido do bloco em questão.' + ), + $mensagem + ); + + $this->paginaBase->sairSistema(); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarBlocoDeTramite() + { + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $this->objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + } + + /** + * Cadastra o bloco de tramite + * @return void + */ + private function cadastrarProcessos() + { + $parametros = []; + $objProtocoloFixture = new ProtocoloFixture(); + $this->objProtocoloDTO = $objProtocoloFixture->carregar( + $parametros, + function($objProtocoloDTO) { + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdContato' => 100000006, + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + ]); + + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + ]); + } + ); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteBlocoExternoTest.php b/tests_super/funcional/tests/TramiteBlocoExternoTest.php new file mode 100644 index 000000000..17fdeb68e --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoTest.php @@ -0,0 +1,102 @@ +definirContextoTeste(CONTEXTO_ORGAO_A); + self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); + + $parametros = [ + 'Descricao' => 'teste' + ]; + $this->objProtocoloFixture = new ProtocoloFixture(); + $this->objProtocoloFixture->carregar($parametros, function($objProtocoloDTO) { + + $objProcedimentoFixture = new ProcedimentoFixture(); + $objProcedimentoDTO = $objProcedimentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtividadeFixture = new AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $objParticipanteFixture = new ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + ]); + + $objProtocoloAssuntoFixture = new RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objAtributoAndamentoFixture = new AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregar([ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ]); + + $objDocumentoFixture = new DocumentoFixture(); + $objDocumentoDTO = $objDocumentoFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdProcedimento' => $objProcedimentoDTO->getDblIdProcedimento(), + ]); + + $objAssinaturaFixture = new AssinaturaFixture(); + $objAssinaturaFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdDocumento' => $objDocumentoDTO->getDblIdDocumento(), + 'IdAtividade' => $objProtocoloDTO->getDblIdProtocolo() + ]); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $objProtocoloDTO->getStrProtocoloFormatado() + ]); + + }); + + } + + public function teste_tramite_bloco_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->paginaCadastrarProcessoEmBloco->navegarListagemBlocoDeTramite(); + $this->paginaCadastrarProcessoEmBloco->bntTramitarBloco(); + $this->paginaCadastrarProcessoEmBloco->tramitarProcessoExternamente( + self::$destinatario['REP_ESTRUTURAS'], self::$destinatario['NOME_UNIDADE'], + self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], false + ); + sleep(10); + + $this->sairSistema(); + } +} \ No newline at end of file diff --git a/tests_super/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php b/tests_super/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php deleted file mode 100755 index b78f0954c..000000000 --- a/tests_super/funcional/tests/TramiteProcessoEmLoteComCancelamentoTest.php +++ /dev/null @@ -1,107 +0,0 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - // Seleciona todos os processos para tramitação em lote - $this->selecionarProcessos(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false); - - } - - /** - * Teste de cancelamento de trâmite com processo contendo documento externo - * - * @group envio - * @large - * - * @depends test_cancelamento_tramite_contendo_documento_interno - * - * @return void - */ - public function test_cancelamento_tramite_contendo_documento_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->abrirProcesso(self::$protocoloTeste); - - $this->paginaProcesso->cancelarTramitacaoExterna(); - $mensagemAlerta = $this->paginaTramitar->alertTextAndClose(true); - $mensagemEsperada = utf8_encode("O trâmite externo do processo foi cancelado com sucesso!"); - $this->assertStringContainsString($mensagemEsperada, $mensagemAlerta); - $this->assertFalse($this->paginaProcesso->processoBloqueado()); - $this->assertTrue($this->paginaProcesso->processoAberto()); - - } - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_cancelamento_tramite_contendo_documento_externo - * - * @return void - */ - public function test_verificar_cancelamento_processo_lote() - { - - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $this->navegarProcessoEmLote(7, self::$protocoloTeste); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $this->assertStringContainsString(self::$protocoloTeste, $paginaTramitarProcessoEmLote->informacaoLote()); - return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); - - } - -} diff --git a/tests_super/funcional/tests/TramiteProcessoEmLoteTest.php b/tests_super/funcional/tests/TramiteProcessoEmLoteTest.php deleted file mode 100755 index ab1316cb5..000000000 --- a/tests_super/funcional/tests/TramiteProcessoEmLoteTest.php +++ /dev/null @@ -1,102 +0,0 @@ -definirContextoTeste(CONTEXTO_ORGAO_A); - self::$destinatario = $this->definirContextoTeste(CONTEXTO_ORGAO_B); - - self::$processoTeste = $this->gerarDadosProcessoTeste(self::$remetente); - self::$documentoTeste1 = $this->gerarDadosDocumentoInternoTeste(self::$remetente); - self::$documentoTeste2 = $this->gerarDadosDocumentoExternoTeste(self::$remetente); - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - self::$protocoloTeste = $this->cadastrarProcesso(self::$processoTeste); - $this->cadastrarDocumentoInterno(self::$documentoTeste1); - $this->assinarDocumento(self::$remetente['ORGAO'], self::$remetente['CARGO_ASSINATURA'], self::$remetente['SENHA']); - - $this->cadastrarDocumentoExterno(self::$documentoTeste2); - - // Seleciona todos os processos para tramitação em lote - $this->selecionarProcessos(self::$protocoloTeste); - - // Trâmitar Externamento processo para órgão/unidade destinatária - $this->tramitarProcessoExternamente( - self::$protocoloTeste, - self::$destinatario['REP_ESTRUTURAS'], - self::$destinatario['NOME_UNIDADE'], - self::$destinatario['SIGLA_UNIDADE_HIERARQUIA'], - false); - - } - - /** - * Teste de verificação do correto envio do processo no sistema remetente - * - * @group verificacao_envio - * - * @depends test_tramitar_processo_em_lote - * - * @return void - */ - public function test_verificar_envio_processo() - { - $orgaosDiferentes = self::$remetente['URL'] != self::$destinatario['URL']; - - $this->acessarSistema(self::$remetente['URL'], self::$remetente['SIGLA_UNIDADE'], self::$remetente['LOGIN'], self::$remetente['SENHA']); - $this->visualizarProcessoTramitadosEmLote($this); - $this->navegarProcessoEmLote(0); - - $this->waitUntil(function ($testCase) use (&$orgaosDiferentes) { - sleep(5); - $testCase->refresh(); - $paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($testCase); - $testCase->assertStringContainsString(utf8_encode("Nenhum registro encontrado."), $paginaTramitarProcessoEmLote->informacaoLote()); - return true; - }, PEN_WAIT_TIMEOUT_PROCESSAMENTO_EM_LOTE); - - sleep(5); - } - - /** - * Teste de verificação do correto recebimento do processo no destino - * - * @group verificacao_recebimento - * @large - * - * @depends test_verificar_envio_processo - * - * @return void - */ - public function test_verificar_recebimento_processo_destino() - { - $documentos = array(self::$documentoTeste1, self::$documentoTeste2); - $this->realizarValidacaoRecebimentoProcessoNoDestinatario(self::$processoTeste, $documentos, self::$destinatario); - } - -}