From 00fc19719f580869671d03b2fa14704063802a62 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Fri, 26 Jan 2024 10:40:20 -0300 Subject: [PATCH 01/43] feat: tramite de bloco externo e recursos --- Makefile | 5 +- composer.json | 5 + src/PENIntegracao.php | 31 +- src/bd/TramitaEmBlocoProtocoloBD.php | 14 + src/bd/TramiteEmBlocoBD.php | 13 + src/dto/TramitaEmBlocoProtocoloDTO.php | 58 ++ 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 | 26 + src/pen_expedir_lote.php | 46 +- src/pen_tramita_em_bloco_protocolo_listar.php | 416 +++++++++++++++ src/pen_tramite_bloco_listar.php | 503 ++++++++++++++++++ src/pen_tramite_em_bloco_cadastrar.php | 187 +++++++ ...en_tramite_processo_em_bloco_cadastrar.php | 163 ++++++ src/rn/ExpedirProcedimentoRN.php | 23 + src/rn/TramitaEmBlocoProtocoloRN.php | 217 ++++++++ src/rn/TramiteEmBlocoRN.php | 364 +++++++++++++ .../sei_atualizar_versao_modulo_pen.php | 74 ++- .../sip_atualizar_versao_modulo_pen.php | 154 +++++- tests_super/funcional/bootstrap.php | 10 + tests_super/funcional/composer.json | 9 +- tests_super/funcional/docker-compose.yml | 20 +- tests_super/funcional/phpunit.xml | 12 +- .../src/fixtures/AssinaturaFixture.php | 55 ++ .../src/fixtures/AtividadeFixture.php | 42 ++ .../src/fixtures/AtributoAndamentoFixture.php | 32 ++ .../src/fixtures/BlocoDeTramiteFixture.php | 43 ++ .../BlocoDeTramiteProtocoloFixture.php | 32 ++ .../src/fixtures/DocumentoConteudoFixture.php | 32 ++ .../src/fixtures/DocumentoFixture.php | 102 ++++ .../funcional/src/fixtures/FixtureBase.php | 42 ++ .../ImportacaoTiposProcessoFixture.php | 2 +- .../src/fixtures/ParticipanteFixture.php | 37 ++ .../src/fixtures/ProcedimentoFixture.php | 38 ++ .../src/fixtures/ProtocoloFixture.php | 72 +++ .../src/fixtures/RelBlocoProtocoloFixture.php | 30 ++ .../src/fixtures/RelBlocoUnidadeFixture.php | 38 ++ .../fixtures/RelProtocoloAssuntoFixture.php | 26 + .../fixtures/RelProtocoloProtocoloFixture.php | 28 + .../src/fixtures/SecaoDocumentoFixture.php | 182 +++++++ .../PaginaCadastrarProcessoEmBloco.php | 229 ++++++++ .../funcional/tests/CenarioBaseTestCase.php | 2 + .../tests/TramiteBlocoExternoCadastroTest.php | 78 +++ .../tests/TramiteBlocoExternoLimiteTest.php | 104 ++++ .../tests/TramiteBlocoExternoTest.php | 103 ++++ 47 files changed, 3759 insertions(+), 24 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_super/funcional/src/fixtures/AssinaturaFixture.php create mode 100644 tests_super/funcional/src/fixtures/AtividadeFixture.php create mode 100644 tests_super/funcional/src/fixtures/AtributoAndamentoFixture.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/DocumentoConteudoFixture.php create mode 100644 tests_super/funcional/src/fixtures/DocumentoFixture.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/ProcedimentoFixture.php create mode 100644 tests_super/funcional/src/fixtures/ProtocoloFixture.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/RelProtocoloAssuntoFixture.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/tests/TramiteBlocoExternoCadastroTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php create mode 100644 tests_super/funcional/tests/TramiteBlocoExternoTest.php diff --git a/Makefile b/Makefile index ea8a42130..ac4f1941d 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..1c78d5a95 100755 --- a/src/PENIntegracao.php +++ b/src/PENIntegracao.php @@ -1,7 +1,7 @@ '; } + //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 +648,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': + case 'pen_tramita_em_bloco_protocolo_cancelar': + require_once dirname(__FILE__) . '/pen_tramita_em_bloco_protocolo_listar.php'; + break; + + case 'pen_incluir_processo_em_bloco_tramite': + 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; @@ -1032,4 +1059,4 @@ public function 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_STR, 'Anotacao', 'anotacao'); + $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 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 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..9ab5e6991 100755 --- a/src/pen_expedir_lote.php +++ b/src/pen_expedir_lote.php @@ -18,7 +18,33 @@ $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 ($tramiteEmBloco == 1) { + 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(); + } + } else { + $idTramiteEmBloco = null; + $arrProtocolosOrigem = array_merge($objPaginaSEI->getArrStrItensSelecionados('Gerados'), $objPaginaSEI->getArrStrItensSelecionados('Recebidos'), $objPaginaSEI->getArrStrItensSelecionados('Detalhado')); + } + if (count($arrProtocolosOrigem)==0){ $arrProtocolosOrigem = explode(',', $_POST['hdnIdProcedimento']); @@ -45,7 +71,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 +135,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 +441,11 @@ function enviarForm(event){ + montarAreaDebug(); $objPaginaSEI->fecharBody(); $objPaginaSEI->fecharHtml(); -?> +?> \ No newline at end of file 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..a1092d6f7 --- /dev/null +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -0,0 +1,416 @@ +validarLink(); + $objSessaoSEI->validarPermissao($_GET['acao']); + + $objPaginaSEI->salvarCamposPost(array('txtProcedimentoFormatado', 'txtNomeUsuario', 'txtUnidadeDestino', 'selAndamento')); + + 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]); + $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); + 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; + case 'pen_tramita_em_bloco_protocolo_cancelar': { + try{ + $arrStrIds = PaginaSEI::getInstance()->getArrStrItensSelecionados(); + $arrObjTramiteBlocoProtocoloDTO = array(); + var_dump($arrStrIds); + if (count($arrStrIds) > 0) { + foreach ($arrStrIds as $arrStrId) { + $arrStrIdComposto = explode('-', $arrStrId); + $expedirProcedimentoRN = new ExpedirProcedimentoRN(); + $expedirProcedimentoRN->cancelarTramite($arrStrIdComposto[1]); + } + } elseif (isset($_GET['hdnInfraItensSelecionados'])) { + $arrStrIdComposto = explode('-', $_GET['hdnInfraItensSelecionados']); + $expedirProcedimentoRN = new ExpedirProcedimentoRN(); + $expedirProcedimentoRN->cancelarTramite($arrStrIdComposto[1]); + } + 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; + } + 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) { + $objPenLoteProcedimentoDTO = new PenLoteProcedimentoDTO(); + // $arrComandos[] = ''; + $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"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + foreach ($arrTramitaEmBlocoProtocoloDTO as $i => $objDTO) { + $strCssTr = ($strCssTr == '') ? '' : ''; + $strResultado .= $strCssTr; + + $id = $objDTO->getNumId().'-'.$objDTO->getDblIdProtocolo().'-'.$_GET['id_bloco']; + $strResultado .= ''; + $strResultado .= ''; + + $strResultado .= ''; + + // $strResultado .= ''; + + $objTramiteDTO = $objDTO->getObjTramiteDTO(); + + // print_r($objTramiteDTO); die('aki'); + + if ($objTramiteDTO) { + $dataEnvio = $objTramiteDTO->getDthRegistro(); + $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 .= '
' . $objPaginaSEI->getThOrdenacao($objTramitaEmBlocoProtocoloDTO, 'Anotações', 'Anotacoes', $arrTramitaEmBlocoProtocoloDTO) . 'UsuárioData do EnvioUnidade DestinoSituaçãoAções
' . $objPaginaSEI->getTrCheck($i, $id, $id) . '' . ($i + 1) . ''; + $strResultado .= '' . $objDTO->getStrIdxRelBlocoProtocolo() . ''; + $strResultado .= '' . nl2br(InfraString::formatarXML($objDTO->getStrAnotacao())) . '' . PaginaSEI::tratarHTML($objTramiteDTO->getStrNomeUsuario()) . '' . PaginaSEI::tratarHTML($dataEnvio) . '' . ($dataEnvio ? PaginaSEI::tratarHTML($objTramiteDTO->getNumIdEstruturaDestino()) : '') . '' . "\n"; + + if (!$objTramiteDTO) { + $strResultado .= 'Um trâmite para esse processo foi recusado'; + } else { + + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $tramites = $objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, null, null, null, null); + $tramite = $tramites ? $tramites[0] : null; + + + switch ($tramite->situacaoAtual) { + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO: + $strResultado .= 'Em aberto'; + break; + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO: + $strResultado .= ''; + break; + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE: + $strResultado .= ''; + break; + default: + $strResultado .= ''; + break; + } + + } + $strResultado .= '' . "\n"; + // $objDTO->getStrStaEstado() != TramiteEmBlocoRN::$TE_DISPONIBILIZADO && + if ($objDTO->getNumIdUnidadeBloco() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()) { + $strId = $objDTO->getDblIdProtocolo() . '-' . $objDTO->getNumId(); + $strProtocoloId = $objDTO->getDblIdProtocolo(); + $strDescricao = PaginaSEI::getInstance()->formatarParametrosJavaScript($objDTO->getStrIdxRelBlocoProtocolo()); + + if ($objDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_NORMAL) { + $strResultado .= 'Excluir processo '; + } + + // $strResultado .= $objDTO->getNumStaIdTarefa() == $PROCESSO_EXPEDIDO_ID ? 'getDiretorioImagens()) . '">getDiretorioImagens()) . '" title="Cancelar Tramite" alt="Cancelar Tramite" class="infraImg iconTramita" /> ' : ''; + } + $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..33023b278 --- /dev/null +++ b/src/pen_tramite_bloco_listar.php @@ -0,0 +1,503 @@ +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); + $objTramiteEmBlocoRN->excluir($arrTramiteEmBloco); + 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'])); + die; + 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); + + // Verificar no DTO sobre funções de agragação para clausula DISTINCT + if (get_parent_class(BancoSEI::getInstance()) != 'InfraMySqli') { + $objFiltroDTO->retDthConclusaoAtividade(); + } + + $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 .= ''; + // $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']).''.PaginaSEI::getInstance()->getTrCheck($i,$idBlocoTramite,$idBlocoTramite).' {$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" /> '; + } + + // Cancelar tramite + // if ($linha['estado'] == $objTramiteEmBloco->retornarEstadoDescricao(TramiteEmBlocoRN::$TE_DISPONIBILIZADO)) { + // $strResultado .= 'getDiretorioImagens()) . '" title="Cancelar Tramite do Bloco" alt="Cancelar Tramite do Bloco" 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..31e732c83 --- /dev/null +++ b/src/pen_tramite_em_bloco_cadastrar.php @@ -0,0 +1,187 @@ +setBolLigado(false); + // InfraDebug::getInstance()->setBolDebugInfra(true); + // InfraDebug::getInstance()->limpar(); + ////////////////////////////////////////////////////////////////////////////// + $objSessaoSEI = SessaoSEI::getInstance(); + $objPaginaSEI = PaginaSEI::getInstance(); + $objDebug = InfraDebug::getInstance(); + $objInfraException = new InfraException(); + + $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($_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(); +} + +function validarCadastroRI1284() { + return true; +} + +function OnSubmitForm() { + return validarCadastroRI1284(); +} + + +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..091c9f1ae --- /dev/null +++ b/src/pen_tramite_processo_em_bloco_cadastrar.php @@ -0,0 +1,163 @@ +validarLink(); + $objSessaoSEI->validarPermissao($_GET['acao']); + + ////////////////////////////////////////////////////////////////////////////// + // InfraDebug::getInstance()->setBolLigado(false); + // InfraDebug::getInstance()->setBolDebugInfra(true); + // InfraDebug::getInstance()->limpar(); + ////////////////////////////////////////////////////////////////////////////// + + $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($_GET['id_documento'])) { + $strParametros .= "&id_documento=".$_GET['id_documento']; + } + + $arrComandos = array(); + switch($_GET['acao']) { + case 'pen_incluir_processo_em_bloco_tramite': + + $strTitulo = 'Incluir Processo no Bloco de Trâmite'; + $arrComandos[] = ''; + $arrComandos[] = ''; + + $objProcedimentoDTO = new ProcedimentoDTO(); + $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado(); + $objProcedimentoDTO->setDblIdProcedimento($_GET['id_procedimento']); + + $objProcedimentoRN = new ProcedimentoRN(); + $procedimento = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); + + $objTramiteEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + + $objTramiteEmBlocoProtocoloDTO->setNumId(null); + $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($_GET['id_procedimento']); + $objTramiteEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($_POST['id_tramita_bloco']); + $objTramiteEmBlocoProtocoloDTO->setStrIdxRelBlocoProtocolo($procedimento->getStrProtocoloProcedimentoFormatado()); + + if (isset($_POST['sbmCadastrarProcessoEmBloco'])) { + try{ + $objTramiteEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $validar = $objTramiteEmBlocoProtocoloRN->validarBlocoDeTramite($objTramiteEmBlocoProtocoloDTO); + + 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; + + 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(); + + $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('id_tramita_bloco').focus(); +} else { + document.getElementById('divIdentificacao').style.display = 'block'; + document.getElementById('btnCancelar').focus(); +} +} + +fecharJavaScript(); +$objPaginaSEI->fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); +?> + +
+ + montarBarraComandosSuperior($arrComandos); + $objPaginaSEI->montarAreaValidacao(); + $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..102bac62f 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -290,6 +290,29 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe $this->gravarLogDebug('Concluído envio dos componentes do processo', 2); $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE); $objLoteProcedimentoRN->alterarLoteProcedimento($objPenLoteProcedimentoDTO); + + // Atualizar Bloco para concluido + $objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $objTramitaEmBlocoProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); + + if ($objTramitaEmBlocoProtocoloDTO != null) { + + $objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo(); + $objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $objTramitaEmBlocoProtocoloDTO->setNumMaxRegistrosRetorno(1); + + $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); + $arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramitaEmBlocoProtocoloDTO); + $idTramiteEmBloco = $arrTramiteEmBlocoProtocolo[0]->getNumIdTramitaEmBloco(); + + $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $objTramiteEmBlocoDTO->setNumId($idTramiteEmBloco); + $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO); + + $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); + $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); + + } } $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Concluído envio dos componentes do processo', 'S')); diff --git a/src/rn/TramitaEmBlocoProtocoloRN.php b/src/rn/TramitaEmBlocoProtocoloRN.php new file mode 100644 index 000000000..fd56d06ad --- /dev/null +++ b/src/rn/TramitaEmBlocoProtocoloRN.php @@ -0,0 +1,217 @@ +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'); + } + + $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($objTramiteDTO); + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($dto->getDblIdProtocolo()); + $objAtividadeDTO->setNumIdTarefa([ + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO) + ], 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); + } + } + + /** + * 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()); + $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(); + $objInfraException = new InfraException(); + $objTramitaEmBlocoProtocoloBD = new TramiteEmBlocoBD($this->getObjInfraIBanco()); + + $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(TramitaEmBlocoProtocoloDTO $objTramitaEmBlocoProtocoloDTO) { + + if (empty($objTramitaEmBlocoProtocoloDTO->getNumIdTramitaEmBloco())) { + return 'Nenhum bloco foi selecionado! Por favor, selecione um bloco.'; + } + + $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $tramitaEmBlocoProtocoloDTO->retNumId(); + $tramitaEmBlocoProtocoloDTO->setDblIdProtocolo($objTramitaEmBlocoProtocoloDTO->getDblIdProtocolo()); + $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + + $arrTramitaEmBloco = $this->listar($tramitaEmBlocoProtocoloDTO); + + if ($arrTramitaEmBloco!= null) { + return "O processo atual já consta no bloco {$arrTramitaEmBloco[0]->getNumIdTramitaEmBloco()}"; + } + + $tramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO(); + $tramitaEmBlocoProtocoloDTO->retNumId(); + $tramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco(); + $tramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($objTramitaEmBlocoProtocoloDTO->getNumIdTramitaEmBloco()); + + $arrTramitaEmBloco = $this->listar($tramitaEmBlocoProtocoloDTO); + + $numMaximoDeProcessos = 100; + $numRegistro = count($arrTramitaEmBloco); + if (!empty($numRegistro) && $numRegistro >= $numMaximoDeProcessos) { + return "O Bloco já contém o número máximo de {$numMaximoDeProcessos} processos."; + } + + return false; + } +} \ No newline at end of file diff --git a/src/rn/TramiteEmBlocoRN.php b/src/rn/TramiteEmBlocoRN.php new file mode 100644 index 000000000..e0b944ebe --- /dev/null +++ b/src/rn/TramiteEmBlocoRN.php @@ -0,0 +1,364 @@ +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 6f2980002..a43f67299 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -274,6 +274,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: @@ -2626,8 +2628,78 @@ 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_em_bloco_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), + 'anotacao' => array($objMetaBD->tipoTextoVariavel(500), PenMetaBD::SNULLO), + '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_em_bloco_protocolo_protocolo', 'cols' => array('id_protocolo', 'id_protocolo')), + //'md_pen_tramita_em_bloco' => array('nome' => 'fk_tramita_em_bloco_protocolo', 'cols' => array('id', 'id_tramita_em_bloco')), + ) + )); + + //Sequência: md_pen_tramita_em_bloco_protocolo + $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_tramita_em_bloco_protocolo'); + $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0; + + BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_tramita_em_bloco_protocolo', $numMaxId + 1); + $objInfraSequenciaDTO->setStrNome('md_pen_tramita_em_bloco_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 9b182bf85..3e1ea0928 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: @@ -460,6 +462,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 * @@ -633,13 +655,36 @@ private function instalarV100() $numIdSistema = $this->getNumIdSistema('SEI'); $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); + //---------------------------------------------------------------------- + // Tramita.GOV.BR + //---------------------------------------------------------------------- + $objItemMenuDTO = new ItemMenuDTO(); + $objItemMenuDTO->setNumIdSistema($numIdSistema); + $objItemMenuDTO->setNumIdMenu($numIdMenu); + $objItemMenuDTO->setStrRotulo('Tramita.GOV.BR'); + $objItemMenuDTO->setNumMaxRegistrosRetorno(1); + $objItemMenuDTO->retNumIdItemMenu(); + + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance()); + + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + //---------------------------------------------------------------------- + // Tramita.GOV.BR + //---------------------------------------------------------------------- + $numIdRecurso = $this->criarRecurso('pen_procedimento_expedido_listar', 'Tramita.GOV.BR', $numIdSistema); + $this->criarMenu('Tramita.GOV.BR', 55, null, $numIdMenu, $numIdRecurso, $numIdSistema); + + //Atribui as permissões aos recursos e menus + $this->atribuirPerfil($numIdSistema); + //---------------------------------------------------------------------- // Expedir procedimento //---------------------------------------------------------------------- $this->criarRecurso('pen_procedimento_expedir', 'Expedir Procedimento', $numIdSistema); $this->criarRecurso('apensados_selecionar_expedir_procedimento', 'Processos Apensados', $numIdSistema); - $numIdRecurso = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos Trâmitados Externamente', $numIdSistema); - $this->criarMenu('Processos Trâmitados Externamente', 55, null, $numIdMenu, $numIdRecurso, $numIdSistema); + // $numIdRecurso = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos Trâmitados Externamente', $numIdSistema); + // $this->criarMenu('Processos Trâmitados Externamente', 55, null, $numIdMenu, $numIdRecurso, $numIdSistema); //---------------------------------------------------------------------- // Mapeamento de documentos enviados //---------------------------------------------------------------------- @@ -1219,6 +1264,56 @@ private function instalarV119() */ private function instalarV1110() { + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance()); + + $numIdSistema = $this->getNumIdSistema('SEI'); + $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); + + //Menu Tramita.GOV.BR + $objItemMenuDTO = new ItemMenuDTO(); + $objItemMenuDTO->setNumIdSistema($numIdSistema); + $objItemMenuDTO->setNumIdMenu($numIdMenu); + $objItemMenuDTO->setStrRotulo('Tramita.GOV.BR'); + $objItemMenuDTO->setNumMaxRegistrosRetorno(1); + $objItemMenuDTO->retNumIdItemMenu(); + + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + if (empty($objItemMenuDTO)) { + throw new InfraException('Menu "Tramita.GOV.BR" não foi localizado'); + } + + // ---------- antigo método (instalarV006R004S001US043) ---------- // + $objBD = new ItemMenuBD(BancoSip::getInstance()); + + $numIdSistema = $this->getNumIdSistema('SEI'); + $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); + + $objDTO = new ItemMenuDTO(); + $objDTO->setNumIdSistema($numIdSistema); + $objDTO->setNumIdMenu($numIdMenu); + $objDTO->setStrRotulo('Tramita.GOV.BR'); + $objDTO->setNumMaxRegistrosRetorno(1); + $objDTO->retNumIdItemMenu(); + + $objDTO = $objBD->consultar($objDTO); + if (empty($objDTO)) { + throw new InfraException('Menu "Tramita.GOV.BR" não foi localizado'); + } + + $numIdItemMenuPai = $objDTO->getNumIdItemMenu(); + + $numIdRecurso = $this->criarRecurso('md_pen_tramita_em_bloco', 'Blocos de Trâmite Externo', $numIdSistema); + $this->criarMenu('Blocos de Trâmite Externo', 57, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema); + + $numIdRecurso = $this->criarRecurso('pen_procedimento_expedido_listar', 'Processos Tramitados Externamente', $numIdSistema); + $this->criarMenu('Processos Tramitados Externamente', 55, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema); + + $numIdRecurso = $this->criarRecurso('pen_expedir_lote_listar', 'Processos Tramitados em Lote', $numIdSistema); + $this->criarMenu('Processos Tramitados em Lote', 56, $numIdItemMenuPai, $numIdMenu, $numIdRecurso, $numIdSistema); + + $this->atribuirPerfil($numIdSistema); + $this->atualizarNumeroVersao('1.1.10'); } @@ -1644,8 +1739,8 @@ protected function instalarV3010() $this->criarRecurso('pen_expedir_lote', 'Expedir Procedimento em Lote', $numIdSistema); ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiAdministrador, 'pen_expedir_lote'); - $numIdRecurso = $this->criarRecurso('pen_expedir_lote_listar', 'Listar Processos Tramitados em Lote', $numIdSistema); - ScriptSip::adicionarItemMenu($numIdSistema, $numIdPerfilSeiAdministrador, $numIdMenu, null, $numIdRecurso, "Processos Tramitados em Lote", 55); + // $numIdRecurso = $this->criarRecurso('pen_expedir_lote_listar', 'Listar Processos Tramitados em Lote', $numIdSistema); + // ScriptSip::adicionarItemMenu($numIdSistema, $numIdPerfilSeiAdministrador, $numIdMenu, null, $numIdRecurso, "Processos Tramitados em Lote", 55); $this->atualizarNumeroVersao("3.1.0"); } @@ -1919,6 +2014,55 @@ protected function instalarV3050() $this->atualizarNumeroVersao("3.5.0"); } + protected function instalarV3060() + { + /* Corrige nome de menu de trâmite de documentos */ + $numIdSistema = $this->getNumIdSistema('SEI'); + $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema); + + $objItemMenuDTO = new ItemMenuDTO(); + $objItemMenuDTO->setNumIdItemMenuPai(null); + $objItemMenuDTO->setNumIdSistema($numIdSistema); + $objItemMenuDTO->setNumIdRecurso($numIdRecurso); + $objItemMenuDTO->setStrRotulo('Blocos de Trâmite Externo'); + $objItemMenuDTO->retNumIdMenu(); + $objItemMenuDTO->retNumIdItemMenu(); + $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance()); + $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO); + + if (isset($objItemMenuDTO)) { + $objItemMenuDTO->setStrDescricao('Blocos de Trâmite Externo'); + $objItemMenuDTO->setStrRotulo('Blocos de Trâmite Externo'); + $objItemMenuBD->alterar($objItemMenuDTO); + } + + $this->logar('Atribuição de permissões do módulo ao perfil do SEI'); + + // adicionar permissão + $numIdPerfilSeiBasico = ScriptSip::obterIdPerfil($numIdSistema, "Básico"); + $this->criarRecurso('md_pen_tramita_em_bloco', 'Blocos de Trâmite Externo', $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, $numIdPerfilSeiBasico, 'md_pen_tramita_em_bloco'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'md_pen_tramita_em_bloco_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_tramite_em_bloco_cadastrar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_tramite_em_bloco_alterar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_tramite_em_bloco_consultar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_tramite_em_bloco_cancelar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_tramita_em_bloco_protocolo_listar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_tramita_em_bloco_protocolo_excluir'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_tramita_em_bloco_protocolo_cancelar'); + ScriptSip::adicionarRecursoPerfil($numIdSistema, $numIdPerfilSeiBasico, 'pen_incluir_processo_em_bloco_tramite'); + + $this->atualizarNumeroVersao("3.6.0"); + } + /** * Cadastrar item do menu em um perfil expecifico * 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..117650542 100755 --- a/tests_super/funcional/docker-compose.yml +++ b/tests_super/funcional/docker-compose.yml @@ -44,8 +44,8 @@ services: php-test-functional: image: processoeletronico/vagrant_super4_httpd:${ENVIRONMENT_VERSION} depends_on: - - org1-database - org2-database + - org1-database - selenium volumes: - ${SEI_PATH}/sei:/opt/sei @@ -53,6 +53,11 @@ services: - ${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/bd:/tests/sei/modpen/bd + - ../../src/dto:/tests/sei/modpen/dto + - ../../src/rn:/tests/sei/modpen/rn - /tmp:/tmp environment: - XDEBUG_CONFIG=client_host=host.docker.internal client_port=9003 start_with_request=0 @@ -66,11 +71,20 @@ services: - ORG1_CERTIFICADO_SENHA=${ORG1_CERTIFICADO_SENHA} - ORG2_CERTIFICADO=${ORG2_CERTIFICADO} - ORG2_CERTIFICADO_SENHA=${ORG2_CERTIFICADO_SENHA} + - 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: - - org1-database:${ORG1_DATABASE_HOST} - - org2-database:${ORG2_DATABASE_HOST} + - org2-database:${ORG1_DATABASE_HOST} + - org1-database:${ORG2_DATABASE_HOST} - selenium:selenium command: "true" diff --git a/tests_super/funcional/phpunit.xml b/tests_super/funcional/phpunit.xml index 204461a74..966a08c2b 100644 --- a/tests_super/funcional/phpunit.xml +++ b/tests_super/funcional/phpunit.xml @@ -33,12 +33,12 @@ + value="151105" /> + value="Fabrica-org1" /> + value="Fabrica-org1" /> @@ -75,12 +75,12 @@ + value="151106" /> + value="Fabrica-org2" /> + value="Fabrica-org2" /> diff --git a/tests_super/funcional/src/fixtures/AssinaturaFixture.php b/tests_super/funcional/src/fixtures/AssinaturaFixture.php new file mode 100644 index 000000000..d3c46baac --- /dev/null +++ b/tests_super/funcional/src/fixtures/AssinaturaFixture.php @@ -0,0 +1,55 @@ +getObjInfraIBanco()->getValorSequencia('seq_assinatura'); + + $objAssinaturaDTO = new \AssinaturaDTO(); + // $objAssinaturaDTO->setNumIdAssinatura($dados['IdAssinatura'] ?: null); + $objAssinaturaDTO->setDblIdDocumento($dados['IdDocumento'] ?: 4); + $objAssinaturaDTO->setNumIdAtividade($dados['IdAtividade'] ?: null); + $objAssinaturaDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); + $objAssinaturaDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objAssinaturaDTO->setNumIdTarjaAssinatura($dados['IdTarjaAssinatura'] ?: self::ID_TARJA_ASSINATURA); + $objAssinaturaDTO->setStrAgrupador($dados['Agrupador'] ?: null); + $objAssinaturaDTO->setStrStaFormaAutenticacao($dados['StaFormaAutenticacao'] ?: 'S'); + $objAssinaturaDTO->setStrNome($dados['Nome'] ?: 'Usuário de Testes'); + $objAssinaturaDTO->setStrTratamento($dados['Tratamento'] ?: self::TRATAMENTO); + $objAssinaturaDTO->setDblCpf($dados['Cpf'] ?: null); + $objAssinaturaDTO->setStrP7sBase64($dados['P7sBase64'] ?: null); + $objAssinaturaDTO->setStrNumeroSerieCertificado($dados['NumeroSerieCertificado'] ?: null); + $objAssinaturaDTO->setStrSinAtivo($dados['SinAtivo'] ?: 'S'); + $objAssinaturaDTO->setStrModuloOrigem($dados['ModuloOrigem'] ?: null); + $objAssinaturaDTO->setOrdDthAberturaAtividade(InfraDTO::$TIPO_ORDENACAO_ASC); + + $objAssinaturaDB = new \AssinaturaBD(\BancoSEI::getInstance()); + $objAssinaturaDB->cadastrar($objAssinaturaDTO); + + $objAtividadeFixture = new \AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->cadastrar( + [ + 'IdProtocolo' => $dados['IdProtocolo'], + 'IdTarefa' => TarefaRN::$TI_ASSINATURA_DOCUMENTO, + ] + ); + + + return $objAssinaturaDTO; + } +} diff --git a/tests_super/funcional/src/fixtures/AtividadeFixture.php b/tests_super/funcional/src/fixtures/AtividadeFixture.php new file mode 100644 index 000000000..8d2d02dd7 --- /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'] ?: 1); + $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/AtributoAndamentoFixture.php b/tests_super/funcional/src/fixtures/AtributoAndamentoFixture.php new file mode 100644 index 000000000..9eee1bf69 --- /dev/null +++ b/tests_super/funcional/src/fixtures/AtributoAndamentoFixture.php @@ -0,0 +1,32 @@ +objAtributoAndamentoDTO = new \AtributoAndamentoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + $this->objAtributoAndamentoDTO->setNumIdAtividade($dados['IdAtividade']); + $this->objAtributoAndamentoDTO->setStrNome($dados['Nome'] ?: 'NIVEL_ACESSO'); + $this->objAtributoAndamentoDTO->setStrValor($dados['Valor'] ?: null); + $this->objAtributoAndamentoDTO->setStrIdOrigem($dados['IdOrigem'] ?: 0); + + $objAtributoAndamentoDB = new \AtributoAndamentoBD(\BancoSEI::getInstance()); + $objAtributoAndamentoDB->cadastrar($this->objAtributoAndamentoDTO); + + return $this->objAtributoAndamentoDTO; + } +} 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..4bd1148ef --- /dev/null +++ b/tests_super/funcional/src/fixtures/BlocoDeTramiteProtocoloFixture.php @@ -0,0 +1,32 @@ +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->setStrAnotacao($dados['Anotacao'] ?: 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/DocumentoConteudoFixture.php b/tests_super/funcional/src/fixtures/DocumentoConteudoFixture.php new file mode 100644 index 000000000..da5e1ff52 --- /dev/null +++ b/tests_super/funcional/src/fixtures/DocumentoConteudoFixture.php @@ -0,0 +1,32 @@ +objDocumentoConteudoDTO = new \DocumentoConteudoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + $this->objDocumentoConteudoDTO->setDblIdDocumento($dados['IdDocumento'] ?: null); + $this->objDocumentoConteudoDTO->setStrConteudo($dados['Conteudo'] ?: 'Conteudo'); + $this->objDocumentoConteudoDTO->setStrConteudoAssinatura($dados['ConteudoAssinatura'] ?: null); + $this->objDocumentoConteudoDTO->setStrCrcAssinatura($dados['CrcAssinatura'] ?: null); + $this->objDocumentoConteudoDTO->setStrQrCodeAssinatura($dados['QrCodeAssinatura'] ?: null); + + $objProtocoloConteudoDB = new \DocumentoConteudoBD(\BancoSEI::getInstance()); + $objProtocoloConteudoDB->cadastrar($this->objDocumentoConteudoDTO); + + return $this->objDocumentoConteudoDTO; + } +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/DocumentoFixture.php b/tests_super/funcional/src/fixtures/DocumentoFixture.php new file mode 100644 index 000000000..565b00735 --- /dev/null +++ b/tests_super/funcional/src/fixtures/DocumentoFixture.php @@ -0,0 +1,102 @@ +objDocumentoDTO = new \DocumentoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + // $dados['IdProtocolo'] = $this->getObjInfraIBanco()->getValorSequencia('seq_protocolo'); + // $dados['IdDocumento'] = $this->getObjInfraIBanco()->getValorSequencia('seq_documento'); + + $protocoloFixture = new \ProtocoloFixture(); + $protocoloDTO = $protocoloFixture->cadastrar( + [ + 'StaProtocolo' => \ProtocoloRN::$TP_DOCUMENTO_GERADO, + 'documento' => true, + ] + ); + + $this->objDocumentoDTO->setDblIdDocumento($protocoloDTO->getDblIdProtocolo()); + $this->objDocumentoDTO->setDblIdDocumentoEdoc($dados['IdDocumentoEdoc'] ?: null); + $this->objDocumentoDTO->setDblIdProcedimento($dados['IdProcedimento']); + $this->objDocumentoDTO->setNumIdSerie($dados['IdSerie'] ?: 8); + $this->objDocumentoDTO->setNumIdUnidadeResponsavel($dados['IdUnidadeResponsavel'] ?: 110000001); + $this->objDocumentoDTO->setNumIdConjuntoEstilos($dados['IdConjuntoEstilos'] ?: 81); + $this->objDocumentoDTO->setNumIdTipoConferencia($dados['IdTipoConferencia'] ?: null); + $this->objDocumentoDTO->setStrSinArquivamento($dados['SinArquivamento'] ?: 'N'); + $this->objDocumentoDTO->setStrNumero($dados['Numero'] ?: 1); + $this->objDocumentoDTO->setStrSinBloqueado($dados['SinBloqueado'] ?: 'N'); + $this->objDocumentoDTO->setStrStaDocumento($dados['StaDocumento'] ?: DocumentoRN::$TD_EDITOR_INTERNO); + $this->objDocumentoDTO->setStrNomeArvore($dados['SinBloqueado'] ?? 'teste'); + + $objDocumentoDB = new \DocumentoBD(\BancoSEI::getInstance()); + $objDocumentoDB->cadastrar($this->objDocumentoDTO); + + $objAtividadeFixture = new \AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->cadastrar( + [ + 'IdProtocolo' => $protocoloDTO->getDblIdProtocolo(), + 'IdTarefa' => TarefaRN::$TI_GERACAO_DOCUMENTO, + ] + ); + + $objParticipanteFixture = new \ParticipanteFixture(); + $objParticipanteFixture->carregar([ + 'IdProtocolo' => $protocoloDTO->getDblIdProtocolo(), + ]); + + $objAtributoAndamentoFixture = new \AtributoAndamentoFixture(); + $objAtributoAndamentoFixture->carregarVariados([ + [ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), + 'Nome' => 'DOCUMENTO', + 'Valor' => $protocoloDTO->getStrProtocoloFormatado(), + 'IdOrigem' => $dados['IdProtocolo'], + ], + [ + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade() + ] + ]); + + $objDocumentoConteudoFixture = new \DocumentoConteudoFixture(); + $objDocumentoConteudoFixture->cadastrar( + [ + 'IdDocumento' => $this->objDocumentoDTO->getDblIdDocumento(), + ] + ); + + $objProtocoloAssuntoFixture = new \RelProtocoloAssuntoFixture(); + $objProtocoloAssuntoFixture->carregar([ + 'IdProtocolo' => $protocoloDTO->getDblIdProtocolo(), + 'IdAssunto' => 2 + ]); + + $ObjProtocoloProtocoloFixture = new \RelProtocoloProtocoloFixture(); + $ObjProtocoloProtocoloFixture->cadastrar( + [ + 'IdProtocolo' => $dados['IdProtocolo'], + 'IdDocumento' => $this->objDocumentoDTO->getDblIdDocumento(), + ] + ); + + $secaoDocumentoFixture = new \SecaoDocumentoFixture(); + $listaSecao = $secaoDocumentoFixture->conteudoEstatico($this->objDocumentoDTO->getDblIdDocumento()); + + $secaoDocumentoFixture->carregarVariados($listaSecao); + + return $this->objDocumentoDTO; + } +} \ 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..9d4501dd5 --- /dev/null +++ b/tests_super/funcional/src/fixtures/FixtureBase.php @@ -0,0 +1,42 @@ +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; + } +} diff --git a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php index bbd5c017f..b9c1ebb68 100644 --- a/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php +++ b/tests_super/funcional/src/fixtures/ImportacaoTiposProcessoFixture.php @@ -62,4 +62,4 @@ public function getTiposProcessos(int $idMapeamento, string $sinAtivo = 'S') return $tiposProcessos; } -} +} \ 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/ProcedimentoFixture.php b/tests_super/funcional/src/fixtures/ProcedimentoFixture.php new file mode 100644 index 000000000..e4caba963 --- /dev/null +++ b/tests_super/funcional/src/fixtures/ProcedimentoFixture.php @@ -0,0 +1,38 @@ +objProcedimentoDTO = new \ProcedimentoDTO(); + } + + protected function inicializarObjInfraIBanco() + { + return \BancoSEI::getInstance(); + } + + protected function cadastrar($dados = []) + { + $this->objProcedimentoDTO->setDblIdProcedimento($dados["IdProtocolo"] ?: null); + $this->objProcedimentoDTO->setNumIdTipoProcedimento($dados["IdTipoProcedimento"] ?: self::TIPO_PROCEDIMENTO_PADRAO); + $this->objProcedimentoDTO->setStrStaOuvidoria($dados["StaOuvidoria"] ?: '-'); + $this->objProcedimentoDTO->setStrSinCiencia($dados["SinCiencia"] ?: 'N'); + + $objProcedimentoDB = new \ProcedimentoBD(\BancoSEI::getInstance()); + $objProcedimentoDB->cadastrar($this->objProcedimentoDTO); + + return $this->objProcedimentoDTO; + } + +} \ No newline at end of file diff --git a/tests_super/funcional/src/fixtures/ProtocoloFixture.php b/tests_super/funcional/src/fixtures/ProtocoloFixture.php new file mode 100644 index 000000000..cdf14a9a0 --- /dev/null +++ b/tests_super/funcional/src/fixtures/ProtocoloFixture.php @@ -0,0 +1,72 @@ +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'); + + $strProtocoloFormatado = $this->getProtocoloTeste($dados['IdProtocolo'], $documento); + $strProtocoloSemFormato = preg_replace("/[^0-9]/", "", $strProtocoloFormatado); + + $this->objProtocoloDTO->setDblIdProtocolo($dados['IdProtocolo']); + $this->objProtocoloDTO->setStrIdProtocoloFederacao($dados["IdProtocoloFederacao"] ?: null); + $this->objProtocoloDTO->setDblIdProtocoloAgrupador($dados["IdProtocolo"] ?: 2); + $this->objProtocoloDTO->setStrProtocoloFormatado($dados["ProtocoloFormatado"] ?: $strProtocoloFormatado); + $this->objProtocoloDTO->setStrProtocoloFormatadoPesquisa($strProtocoloSemFormato); + $this->objProtocoloDTO->setStrProtocoloFormatadoPesqInv(strrev($strProtocoloSemFormato)); + $this->objProtocoloDTO->setStrDescricao($dados["Descricao"] ?: "teste"); + $this->objProtocoloDTO->setStrStaProtocolo($dados["StaProtocolo"] ?: $this->objProtocoloRN::$TP_PROCEDIMENTO); + $this->objProtocoloDTO->setStrStaEstado($dados["StaEstado"] ?: $this->objProtocoloRN::$TE_NORMAL); + $this->objProtocoloDTO->setStrStaNivelAcessoGlobal($dados["StaNivelAcessoGlobal"] ?: $this->objProtocoloRN::$NA_PUBLICO); + $this->objProtocoloDTO->setStrStaNivelAcessoLocal($dados["StaNivelAcessoLocal"] ?: $this->objProtocoloRN::$NA_PUBLICO); + $this->objProtocoloDTO->setStrStaNivelAcessoOriginal($dados["StaNivelAcessoOriginal"] ?: null); + $this->objProtocoloDTO->setNumIdUnidadeGeradora($dados["IdUnidadeGeradora"] ?: "110000001"); + $this->objProtocoloDTO->setNumIdUsuarioGerador($dados["IdUsuarioGerador"] ?: "100000001"); + $this->objProtocoloDTO->setDtaGeracao($dados["Geracao"] ?: InfraData::getStrDataAtual()); + $this->objProtocoloDTO->setDtaInclusao($dados["Inclusao"] ?: InfraData::getStrDataAtual()); + $this->objProtocoloDTO->setStrCodigoBarras($dados["CodigoBarras"] ?: "XXXXXXXXXXXXXXXXXXXXXXXX"); + $this->objProtocoloDTO->setNumIdHipoteseLegal($dados["IdHipoteseLegal"] ?: null); + $this->objProtocoloDTO->setStrStaGrauSigilo($dados["StaGrauSigilo"] ?: null); + + $objProtocoloDB = new \ProtocoloBD(\BancoSEI::getInstance()); + $objProtocoloDB->cadastrar($this->objProtocoloDTO); + + return $this->objProtocoloDTO; + } + + protected function cadastrarVariados($dados = []) + { + foreach ($dados as $dado) { + $this->cadastrar($dado); + } + } + + private function getProtocoloTeste($protocolo, $documento = false) + { + $numSequencial = str_pad($protocolo, 6, 0, STR_PAD_LEFT); + if ($documento == true) { + return $numSequencial; + } + + $anoAtual = date('Y'); + + return "99990.{$numSequencial}/{$anoAtual}-00"; + } +} 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/RelProtocoloAssuntoFixture.php b/tests_super/funcional/src/fixtures/RelProtocoloAssuntoFixture.php new file mode 100644 index 000000000..9f91f0644 --- /dev/null +++ b/tests_super/funcional/src/fixtures/RelProtocoloAssuntoFixture.php @@ -0,0 +1,26 @@ +setDblIdProtocolo($dados['IdProtocolo']); + $objRelProtocoloAssuntoDTO->setNumIdAssuntoProxy($dados['IdAssunto'] ?: 2); + $objRelProtocoloAssuntoDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); + $objRelProtocoloAssuntoDTO->setNumSequencia($dados['Sequencia'] ?: 0); + + $objRelProtocoloAssuntoDB = new \RelProtocoloAssuntoBD(\BancoSEI::getInstance()); + $objRelProtocoloAssuntoDB->cadastrar($objRelProtocoloAssuntoDTO); + + return $objRelProtocoloAssuntoDTO; + } +} 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..bfa76e256 --- /dev/null +++ b/tests_super/funcional/src/paginas/PaginaCadastrarProcessoEmBloco.php @@ -0,0 +1,229 @@ +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(); + } + + /** + * Seleciona botão novo da página + * + * @return void + */ + public function novoBlocoDeTramite() + { + $this->test->byId("bntNovo")->click(); + } + + /** + * @return void + */ + public function criarNovoBloco() + { + $this->test->byId('txtDescricao')->value('Bloco para teste automatizado'); + } + + /** + * Seleciona botão editar da primeira linha de tabela + * + * @return void + */ + 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); + } + } + + /** + * Selecionar primeira checkbox de exclusão + * Seleciona botão excluir + * Seleciona botão de confirmação + * + * @return void + */ + public function selecionarExcluirBloco() + { + $this->test->byXPath("(//label[@for='chkInfraItem0'])[1]")->click(); + $this->test->byId("btnExcluir")->click(); + $this->test->acceptAlert(); + } + + /** + * 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() : ""; + } + + /** + * Tramitar Bloco Externamente + * + */ + 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 bntTramitarBloco() + { + $this->test->byXPath("(//img[@title='Tramitar Bloco'])[1]")->click(); + } + + /** + * Selecionar Botão de salvar + * @return void + */ + public function btnSalvar() + { + $buttonElement = $this->test->byXPath("//button[@type='submit' and @value='Salvar']"); + $buttonElement->click(); + } + + /** + * Selecionar Botão de enviar + * @return void + */ + 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/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php index 580060e64..8105b9713 100755 --- a/tests_super/funcional/tests/CenarioBaseTestCase.php +++ b/tests_super/funcional/tests/CenarioBaseTestCase.php @@ -44,6 +44,7 @@ class CenarioBaseTestCase extends Selenium2TestCase protected $paginaExportarTiposProcesso = null; protected $paginaTipoProcessoReativar = null; protected $paginaCadastroOrgaoExterno = null; + protected $paginaCadastrarProcessoEmBloco = null; public function setUpPage(): void { @@ -67,6 +68,7 @@ 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->currentWindow()->maximize(); } diff --git a/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php b/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php new file mode 100644 index 000000000..051b606be --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoCadastroTest.php @@ -0,0 +1,78 @@ +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->cadastrar(); + + $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 + ); + } + + /** + * 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 + ); + } + + public static function tearDownAfterClass(): void + { + // $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + // $objBlocoDeTramiteFixture->excluir(1); + } +} \ 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..7fc70c3be --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoLimiteTest.php @@ -0,0 +1,104 @@ +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->cadastrar(); + + $objBlocoDeTramiteFixture = new \BlocoDeTramiteFixture(); + $objBlocoDeTramiteDTO = $objBlocoDeTramiteFixture->carregar(); + + for ($i = 0; $i < self::$strQtyProcessos; $i++) { + $objProtocoloFixture = new \ProtocoloFixture(); + $objProtocoloFixtureDTO = $objProtocoloFixture->carregar(); + + $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(), + ]); + + $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(), + 'IdAtividade' => $objAtividadeDTO->getNumIdAtividade(), + ]); + + $objBlocoDeTramiteProtocoloFixture = new \BlocoDeTramiteProtocoloFixture(); + $objBlocoDeTramiteProtocoloFixtureDTO = $objBlocoDeTramiteProtocoloFixture->carregar([ + 'IdProtocolo' => $objProtocoloFixtureDTO->getDblIdProtocolo(), + 'IdTramitaEmBloco' => $objBlocoDeTramiteDTO->getNumId(), + 'IdxRelBlocoProtocolo' => $objProtocoloFixtureDTO->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); + } +} \ 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..39a00f29c --- /dev/null +++ b/tests_super/funcional/tests/TramiteBlocoExternoTest.php @@ -0,0 +1,103 @@ +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->cadastrar(); + + $parametros = []; + $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); + } +} \ No newline at end of file From 10c52b3307db3e88424f4a998ccb59af70e42242 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Fri, 26 Jan 2024 15:52:25 -0300 Subject: [PATCH 02/43] Chore: adicionar icone de aberto como default --- src/pen_tramita_em_bloco_protocolo_listar.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php index a1092d6f7..a8660a1d8 100644 --- a/src/pen_tramita_em_bloco_protocolo_listar.php +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -174,7 +174,7 @@ $strResultado .= '' . "\n"; if (!$objTramiteDTO) { - $strResultado .= 'Um trâmite para esse processo foi recusado'; + $strResultado .= 'Um trâmite para esse processo foi recusado'; } else { $objProcessoEletronicoRN = new ProcessoEletronicoRN(); From 7238cbfd29f71d8fda864b54026429f0d7c787c5 Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Fri, 26 Jan 2024 18:35:33 -0300 Subject: [PATCH 03/43] Chore: Corrigir titulo do icone em aberto --- src/pen_tramita_em_bloco_protocolo_listar.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php index a8660a1d8..a767da6d7 100644 --- a/src/pen_tramita_em_bloco_protocolo_listar.php +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -174,14 +174,13 @@ $strResultado .= '' . "\n"; if (!$objTramiteDTO) { - $strResultado .= 'Um trâmite para esse processo foi recusado'; + $strResultado .= ''; } else { $objProcessoEletronicoRN = new ProcessoEletronicoRN(); $tramites = $objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, null, null, null, null); $tramite = $tramites ? $tramites[0] : null; - switch ($tramite->situacaoAtual) { case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO: $strResultado .= 'Em aberto'; From 98c9a2946b0071b58439f773389b5dca8863167a Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Mon, 29 Jan 2024 02:06:37 -0300 Subject: [PATCH 04/43] fix: Adicionar Id do registro de atividade correto na tabela de atividade --- .../src/fixtures/AssinaturaFixture.php | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/tests_super/funcional/src/fixtures/AssinaturaFixture.php b/tests_super/funcional/src/fixtures/AssinaturaFixture.php index d3c46baac..99b766a35 100644 --- a/tests_super/funcional/src/fixtures/AssinaturaFixture.php +++ b/tests_super/funcional/src/fixtures/AssinaturaFixture.php @@ -18,12 +18,22 @@ protected function inicializarObjInfraIBanco() protected function cadastrar($dados = []) { + + $objAtividadeFixture = new \AtividadeFixture(); + $objAtividadeDTO = $objAtividadeFixture->cadastrar( + [ + 'IdProtocolo' => $dados['IdProtocolo'], + 'IdTarefa' => TarefaRN::$TI_ASSINATURA_DOCUMENTO, + ] + ); + + $dados['IdAssinatura'] = $this->getObjInfraIBanco()->getValorSequencia('seq_assinatura'); $objAssinaturaDTO = new \AssinaturaDTO(); - // $objAssinaturaDTO->setNumIdAssinatura($dados['IdAssinatura'] ?: null); + $objAssinaturaDTO->setNumIdAssinatura($dados['IdAssinatura'] ?: null); $objAssinaturaDTO->setDblIdDocumento($dados['IdDocumento'] ?: 4); - $objAssinaturaDTO->setNumIdAtividade($dados['IdAtividade'] ?: null); + $objAssinaturaDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade()); $objAssinaturaDTO->setNumIdUsuario($dados['IdUsuario'] ?: 100000001); $objAssinaturaDTO->setNumIdUnidade($dados['IdUnidade'] ?: 110000001); $objAssinaturaDTO->setNumIdTarjaAssinatura($dados['IdTarjaAssinatura'] ?: self::ID_TARJA_ASSINATURA); @@ -40,14 +50,6 @@ protected function cadastrar($dados = []) $objAssinaturaDB = new \AssinaturaBD(\BancoSEI::getInstance()); $objAssinaturaDB->cadastrar($objAssinaturaDTO); - - $objAtividadeFixture = new \AtividadeFixture(); - $objAtividadeDTO = $objAtividadeFixture->cadastrar( - [ - 'IdProtocolo' => $dados['IdProtocolo'], - 'IdTarefa' => TarefaRN::$TI_ASSINATURA_DOCUMENTO, - ] - ); return $objAssinaturaDTO; From da113408615282c8f48649f646700024b1c3cf0b Mon Sep 17 00:00:00 2001 From: Glaydson Rodrigues Date: Tue, 30 Jan 2024 09:51:28 -0300 Subject: [PATCH 05/43] fix: corrigir exclusao do bloco e adicionar mensagem --- src/pen_tramita_em_bloco_protocolo_listar.php | 12 ++++------ src/pen_tramite_bloco_listar.php | 23 +++++++++++++++++-- src/pen_tramite_em_bloco_cadastrar.php | 2 +- .../sip_atualizar_versao_modulo_pen.php | 10 ++++---- .../src/fixtures/AssinaturaFixture.php | 2 -- 5 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php index a767da6d7..31ccba657 100644 --- a/src/pen_tramita_em_bloco_protocolo_listar.php +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -156,12 +156,8 @@ $strResultado .= '' . $objDTO->getStrIdxRelBlocoProtocolo() . ''; $strResultado .= ''; - // $strResultado .= '' . nl2br(InfraString::formatarXML($objDTO->getStrAnotacao())) . ''; - $objTramiteDTO = $objDTO->getObjTramiteDTO(); - // print_r($objTramiteDTO); die('aki'); - if ($objTramiteDTO) { $dataEnvio = $objTramiteDTO->getDthRegistro(); $strResultado .= '' . PaginaSEI::tratarHTML($objTramiteDTO->getStrNomeUsuario()) . ''; @@ -173,10 +169,7 @@ $strResultado .= '' . "\n"; - if (!$objTramiteDTO) { - $strResultado .= ''; - } else { - + if ($objTramiteDTO) { $objProcessoEletronicoRN = new ProcessoEletronicoRN(); $tramites = $objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, null, null, null, null); $tramite = $tramites ? $tramites[0] : null; @@ -200,6 +193,9 @@ break; } + + } else { + $strResultado .= ''; } $strResultado .= '' . "\n"; diff --git a/src/pen_tramite_bloco_listar.php b/src/pen_tramite_bloco_listar.php index 33023b278..99660fb33 100644 --- a/src/pen_tramite_bloco_listar.php +++ b/src/pen_tramite_bloco_listar.php @@ -38,13 +38,32 @@ $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); - PaginaSEI::getInstance()->setStrMensagem('Operação realizada com sucesso.'); + + $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'])); - die; + exit(0); case 'md_pen_tramita_em_bloco': $arrEstadosSelecionados = []; $checkboxesEstados = [ diff --git a/src/pen_tramite_em_bloco_cadastrar.php b/src/pen_tramite_em_bloco_cadastrar.php index 31e732c83..f6e9c7739 100644 --- a/src/pen_tramite_em_bloco_cadastrar.php +++ b/src/pen_tramite_em_bloco_cadastrar.php @@ -165,7 +165,7 @@ function OnSubmitForm() { montarBarraComandosSuperior($arrComandos); ?> -

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

+

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

diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php index 3e1ea0928..f07b99029 100755 --- a/src/scripts/sip_atualizar_versao_modulo_pen.php +++ b/src/scripts/sip_atualizar_versao_modulo_pen.php @@ -1587,11 +1587,11 @@ private function instalarV2000_beta1() $numIdMenuSei = ScriptSip::obterIdMenu($numIdSistemaSei, 'Principal'); // Remove item de menu e adiciona-o novamente para criá-lo seguindo o padrão definido na rotina adicionarItemMenu - ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_procedimento_expedir'); - $objRecursoDTO = ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_procedimento_expedido_listar'); - $numIdMenuProcessoTramitados = ScriptSip::obterIdItemMenu($numIdSistemaSei, $numIdMenuSei, $strNomeMenuProcessosTramitados); - ScriptSip::removerItemMenu($numIdSistemaSei, $numIdMenuSei, $numIdMenuProcessoTramitados); - ScriptSip::adicionarItemMenu($numIdSistemaSei, $numIdPerfilSeiBasico, $numIdMenuSei, null, $objRecursoDTO->getNumIdRecurso(), $strNomeMenuProcessosTramitados, 55); + // ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_procedimento_expedir'); + // $objRecursoDTO = ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_procedimento_expedido_listar'); + // $numIdMenuProcessoTramitados = ScriptSip::obterIdItemMenu($numIdSistemaSei, $numIdMenuSei, $strNomeMenuProcessosTramitados); + // ScriptSip::removerItemMenu($numIdSistemaSei, $numIdMenuSei, $numIdMenuProcessoTramitados); + // ScriptSip::adicionarItemMenu($numIdSistemaSei, $numIdPerfilSeiBasico, $numIdMenuSei, null, $objRecursoDTO->getNumIdRecurso(), $strNomeMenuProcessosTramitados, 55); $this->atualizarNumeroVersao("2.0.0-beta1"); } diff --git a/tests_super/funcional/src/fixtures/AssinaturaFixture.php b/tests_super/funcional/src/fixtures/AssinaturaFixture.php index 99b766a35..34467094a 100644 --- a/tests_super/funcional/src/fixtures/AssinaturaFixture.php +++ b/tests_super/funcional/src/fixtures/AssinaturaFixture.php @@ -1,7 +1,5 @@ Date: Thu, 1 Feb 2024 15:55:56 -0300 Subject: [PATCH 06/43] fix: atualizar bloco de envio conforme id_tarefa --- src/pen_tramita_em_bloco_protocolo_listar.php | 58 +++++++++---------- src/rn/ExpedirProcedimentoRN.php | 27 +-------- src/rn/ReceberReciboTramiteRN.php | 37 ++++++++++++ src/rn/TramitaEmBlocoProtocoloRN.php | 20 ++++++- 4 files changed, 85 insertions(+), 57 deletions(-) diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php index 31ccba657..8a652b0ac 100644 --- a/src/pen_tramita_em_bloco_protocolo_listar.php +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -95,6 +95,7 @@ $objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN(); $arrTramitaEmBlocoProtocoloDTO = $objTramitaEmBlocoProtocoloRN->listarProtocolosBloco($objTramitaEmBlocoProtocoloDTO); + $arrComandos = array(); $arrComandos[] = ''; @@ -157,7 +158,7 @@ $strResultado .= ''; $objTramiteDTO = $objDTO->getObjTramiteDTO(); - + if ($objTramiteDTO) { $dataEnvio = $objTramiteDTO->getDthRegistro(); $strResultado .= '' . PaginaSEI::tratarHTML($objTramiteDTO->getStrNomeUsuario()) . ''; @@ -169,33 +170,33 @@ $strResultado .= '' . "\n"; - if ($objTramiteDTO) { - $objProcessoEletronicoRN = new ProcessoEletronicoRN(); - $tramites = $objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, null, null, null, null); - $tramite = $tramites ? $tramites[0] : null; - - switch ($tramite->situacaoAtual) { - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO: - $strResultado .= 'Em aberto'; - break; - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO: - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE: - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO: - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO: - $strResultado .= ''; - break; - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO: - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE: - $strResultado .= ''; - break; - default: - $strResultado .= ''; - break; - } - - + if ($objDTO->getStrSinObteveRecusa() == 'S') { + $strResultado .= 'Um trâmite para esse processo foi recusado'; } else { - $strResultado .= ''; + + $PROCESSO_CONCLUIDO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO); // 1002 + $PROCESSO_CONCLUIDO_AVULSO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO); // 1007 + $PROCESSO_TRAMITE_EXPEDIDO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO); // 1005 + $PROCESSO_TRAMITE_CANCELADO_ID = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO); // 1004 + $PROCESSO_TRAMITE_PROCESSAMENTO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); // 1001 + $PROCESSO_TRAMITE_ABERTO = ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); + + switch ($objDTO->getNumStaIdTarefa()) { + case $PROCESSO_TRAMITE_PROCESSAMENTO: + $strResultado .= ''; + break; + case $PROCESSO_CONCLUIDO_AVULSO: + case $PROCESSO_CONCLUIDO: + case $PROCESSO_TRAMITE_EXPEDIDO: + $strResultado .= ''; + break; + case $PROCESSO_TRAMITE_CANCELADO_ID: + $strResultado .= ''; + break; + default: + $strResultado .= 'Em aberto'; + break; + } } $strResultado .= '' . "\n"; @@ -268,9 +269,6 @@