Skip to content

Commit

Permalink
feat: tramite de bloco externo e recursos (#424)
Browse files Browse the repository at this point in the history
Criação do bloco externo e testes automatizados

Closes #245 #246 #247 #248 #249 #289 #290 #291 #292 #306 #433
---------

Co-authored-by: Marcelo Linhares Castro <[email protected]>
  • Loading branch information
2 people authored and caduvieira committed Mar 15, 2024
1 parent 0bc3cd7 commit 0059482
Show file tree
Hide file tree
Showing 106 changed files with 7,014 additions and 1,130 deletions.
5 changes: 3 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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)) ;


Expand Down Expand Up @@ -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'
5 changes: 5 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
"php": "7.3.12"
}
},
"autoload-dev": {
"psr-4": {
"Tests\\": "sei/"
}
},
"require-dev": {
"php": "7.3.12",
"phpunit/phpunit": "*",
Expand Down
37 changes: 31 additions & 6 deletions src/PENIntegracao.php
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?php

// Identificação da versão do módulo. Este deverá ser atualizado e sincronizado com constante VERSAO_MODULO
define("VERSAO_MODULO_PEN", "3.5.0");
define("VERSAO_MODULO_PEN", "3.6.0");

class PENIntegracao extends SeiIntegracao
{
Expand Down Expand Up @@ -68,11 +68,10 @@ public function montarBotaoControleProcessos() {
$objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
$objPenUnidadeRN = new PenUnidadeRN();

//Apresenta o botão de expedir processo
if ($numRegistros > 0 && $objPenUnidadeRN->contar($objPenUnidadeDTO) != 0) {
$numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior();
$strAcoesProcedimento .= '<a href="#" onclick="return acaoControleProcessos(\'' . $objSessaoSEI->assinarLink('controlador.php?acao=pen_expedir_lote&acao_origem=' . $_GET['acao'] . '&acao_retorno=' . $_GET['acao']) . '\', true, false);" tabindex="' . $numTabBotao . '" class="botaoSEI">';
$strAcoesProcedimento .= '<img class="infraCorBarraSistema" src="' . ProcessoEletronicoINT::getCaminhoIcone("/pen_expedir_procedimento.gif", $this->getDiretorioImagens()) . '" class="infraCorBarraSistema" alt="Envio Externo de Processo em Lote" title="Envio Externo de Processo em Lote" />';
$strAcoesProcedimento .= '<a href="#" onclick="return acaoControleProcessos(\'' . $objSessaoSEI->assinarLink('controlador.php?acao=pen_tramita_em_bloco_adicionar&acao_origem=' . $_GET['acao'] . '&acao_retorno=' . $_GET['acao']) . '\', true, false);" tabindex="' . $numTabBotao . '" class="botaoSEI">';
$strAcoesProcedimento .= '<img class="infraCorBarraSistema" src="' . ProcessoEletronicoINT::getCaminhoIcone("/pen_processo_bloco.svg", $this->getDiretorioImagens()) . '" class="infraCorBarraSistema" alt="Incluir Processos no Bloco de Trâmite" title="Incluir Processos no Bloco de Trâmite" />';
}
}

Expand Down Expand Up @@ -158,6 +157,11 @@ public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO)
$strAcoesProcedimento .= '</a>';
}

//Apresenta o botão de incluir processo no bloco de trâmite
$numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior();
$strAcoesProcedimento .= '<a href="' . $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink('controlador.php?acao=pen_incluir_processo_em_bloco_tramite&acao_origem=procedimento_visualizar&acao_retorno=arvore_visualizar&id_procedimento=' . $dblIdProcedimento . '&arvore=1')) . '" tabindex="' . $numTabBotao . '" class="botaoSEI"> <img src="'.ProcessoEletronicoINT::getCaminhoIcone("/pen_processo_bloco.svg", $this->getDiretorioImagens()) .'" title="Incluir Processo no Bloco de Trâmite" alt="Incluir Processo no Bloco de Trâmite"/></a>';


return array($strAcoesProcedimento);
}

Expand Down Expand Up @@ -643,6 +647,28 @@ public function processarControlador($strAcao)
require_once dirname(__FILE__) . '/pen_procedimento_expedir.php';
break;

case 'pen_tramite_bloco_listar':
case 'md_pen_tramita_em_bloco':
case 'md_pen_tramita_em_bloco_excluir':
case 'pen_tramite_em_bloco_cancelar':
require_once dirname(__FILE__) . '/pen_tramite_bloco_listar.php';
break;

case 'pen_tramite_em_bloco_cadastrar':
case 'pen_tramite_em_bloco_alterar':
require_once dirname(__FILE__) . '/pen_tramite_em_bloco_cadastrar.php';
break;

case 'pen_tramita_em_bloco_protocolo_excluir':
case 'pen_tramita_em_bloco_protocolo_listar':
require_once dirname(__FILE__) . '/pen_tramita_em_bloco_protocolo_listar.php';
break;

case 'pen_incluir_processo_em_bloco_tramite':
case 'pen_tramita_em_bloco_adicionar':
require_once dirname(__FILE__) . '/pen_tramite_processo_em_bloco_cadastrar.php';
break;

case 'pen_unidade_sel_expedir_procedimento':
require_once dirname(__FILE__) . '/pen_unidade_sel_expedir_procedimento.php';
break;
Expand Down Expand Up @@ -1031,5 +1057,4 @@ public function processarPendencias()
ProcessarPendenciasRN::getInstance()->processarPendencias();
}
}

class ModuloIncompativelException extends InfraException { }
class ModuloIncompativelException extends InfraException { }
14 changes: 14 additions & 0 deletions src/bd/TramitaEmBlocoProtocoloBD.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

require_once DIR_SEI_WEB.'/SEI.php';

/**
* Classe gererica de persistência com o banco de dados
*/
class TramitaEmBlocoProtocoloBD extends InfraBD {

public function __construct(InfraIBanco $objInfraIBanco) {
parent::__construct($objInfraIBanco);
}

}
13 changes: 13 additions & 0 deletions src/bd/TramiteEmBlocoBD.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

require_once DIR_SEI_WEB.'/SEI.php';

/**
* Classe gererica de persistência com o banco de dados
*/
class TramiteEmBlocoBD extends InfraBD {

public function __construct(InfraIBanco $objInfraIBanco) {
parent::__construct($objInfraIBanco);
}
}
57 changes: 57 additions & 0 deletions src/dto/TramitaEmBlocoProtocoloDTO.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<?php
require_once DIR_SEI_WEB . '/SEI.php';

/**
* Data Transfer Object de parâmetros do módulo PEN
*/
class TramitaEmBlocoProtocoloDTO extends InfraDTO {

public function getStrNomeTabela() {
return 'md_pen_tramita_bl_protocolo';
}

public function getStrNomeSequenciaNativa() {
return 'md_pen_seq_tr_bl_protocolo';
}

public function montar() {

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Id', 'id');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'IdProtocolo', 'id_protocolo');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTramitaEmBloco', 'id_tramita_em_bloco');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'Sequencia', 'sequencia');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'IdxRelBlocoProtocolo', 'idx_rel_bloco_protocolo');

$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_DBL, 'IdProtocoloProtocolo', 'p1.id_protocolo', 'protocolo p1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'ProtocoloFormatadoProtocolo', 'p1.protocolo', 'protocolo p1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaProtocoloProtocolo', 'p1.sta_protocolo', 'protocolo p1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaNivelAcessoGlobalProtocolo', 'p1.sta_nivel_acesso_global', 'protocolo p1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUnidadeBloco', 'tb1.id_unidade', 'md_pen_tramita_em_bloco tb1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'tb1.id_usuario', 'md_pen_tramita_em_bloco tb1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaTipoBloco', 'sta_tipo', 'md_pen_tramita_em_bloco tb1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoBloco', 'sta_estado', 'md_pen_tramita_em_bloco tb1');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdProcedimento', 'pe.id_procedimento', 'md_pen_processo_eletronico pe');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NumeroRegistro', 'pe.numero_registro', 'md_pen_processo_eletronico pe');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdTramite', 'pt.id_tramite', 'md_pen_tramite pt');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'StaEstadoProtocolo', 'p1.sta_estado', 'protocolo p1');

$this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'TramiteDTO');
$this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'AtividadeDTO');
$this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'ProtocoloDTO');
$this->adicionarAtributo(InfraDTO::$PREFIXO_OBJ,'PenLoteProcedimentoDTO');
$this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'PalavrasPesquisa');
$this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'SinAberto');
$this->adicionarAtributo(InfraDTO::$PREFIXO_NUM,'StaIdTarefa');
$this->adicionarAtributo(InfraDTO::$PREFIXO_STR,'SinObteveRecusa');

$this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA);
$this->configurarPK('IdProtocolo',InfraDTO::$TIPO_PK_INFORMADO);
$this->configurarPK('IdTramitaEmBloco',InfraDTO::$TIPO_PK_INFORMADO);

$this->configurarFK('IdProtocolo', 'protocolo p1', 'p1.id_protocolo');
$this->configurarFK('IdTramitaEmBloco', 'md_pen_tramita_em_bloco tb1', 'tb1.id');
$this->configurarFK('IdProtocolo', 'md_pen_processo_eletronico pe', 'pe.id_procedimento', InfraDTO::$TIPO_FK_OPCIONAL);
$this->configurarFK('NumeroRegistro', 'md_pen_tramite pt', 'pt.numero_registro', InfraDTO::$TIPO_FK_OPCIONAL);
}
}
?>
84 changes: 84 additions & 0 deletions src/dto/TramiteEmBlocoDTO.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
<?php

require_once DIR_SEI_WEB.'/SEI.php';

class TramiteEmBlocoDTO extends InfraDTO {

public function getStrNomeTabela() {
return 'md_pen_tramita_em_bloco';
}

public function getStrNomeSequenciaNativa(){
return 'md_pen_seq_tramita_em_bloco';
}

public function montar() {

$this->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');
}
}
?>
Binary file added src/imagens/em_processamento.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/imagens/falhou.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/imagens/nao_iniciado.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
25 changes: 25 additions & 0 deletions src/imagens/pen_processo_bloco.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
42 changes: 39 additions & 3 deletions src/pen_expedir_lote.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,29 @@
$strDiretorioModulo = PENIntegracao::getDiretorio();

$arrProtocolosOrigem = array();
$arrProtocolosOrigem = array_merge($objPaginaSEI->getArrStrItensSelecionados('Gerados'), $objPaginaSEI->getArrStrItensSelecionados('Recebidos'), $objPaginaSEI->getArrStrItensSelecionados('Detalhado'));
$tramiteEmBloco = isset($_GET['tramite_em_bloco']) ? $_GET['tramite_em_bloco'] : null;

if (isset($_GET['id_tramita_em_bloco'])) {
$objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO();
$objTramitaEmBlocoProtocoloDTO->setNumIdTramitaEmBloco($_GET['id_tramita_em_bloco']);
$objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo();
$objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco();
} else {
$arrIdRelBlocoProtocoloSelecionado = $objPaginaSEI->getArrStrItensSelecionados();
$objTramitaEmBlocoProtocoloDTO = new TramitaEmBlocoProtocoloDTO();
$objTramitaEmBlocoProtocoloDTO->setNumId($arrIdRelBlocoProtocoloSelecionado, InfraDTO::$OPER_IN);
$objTramitaEmBlocoProtocoloDTO->retDblIdProtocolo();
$objTramitaEmBlocoProtocoloDTO->retNumIdTramitaEmBloco();
}

$objTramitaEmBlocoProtocoloRN = new TramitaEmBlocoProtocoloRN();
$arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramitaEmBlocoProtocoloDTO);
$idTramiteEmBloco = $arrTramiteEmBlocoProtocolo[0]->getNumIdTramitaEmBloco();
$strParametros .= '&id_bloco=' . $idTramiteEmBloco;
foreach ($arrTramiteEmBlocoProtocolo as $i => $tramiteEmBlocoProtocolo) {
$arrProtocolosOrigem[] = $tramiteEmBlocoProtocolo->getDblIdProtocolo();
}


if (count($arrProtocolosOrigem)==0){
$arrProtocolosOrigem = explode(',', $_POST['hdnIdProcedimento']);
Expand All @@ -45,7 +67,7 @@
switch ($_GET['acao']) {

case 'pen_expedir_lote':
$strTitulo = 'Envio Externo de Processo em Lote';
$strTitulo = $tramiteEmBloco == 1 ? 'Envio Externo de Processos do Bloco de Trâmite' : 'Envio Externo de Processo em Lote';
$arrComandos[] = '<button type="button" accesskey="E" onclick="enviarForm(event)" value="Enviar" class="infraButton" style="width:8%;"><span class="infraTeclaAtalho">E</span>nviar</button>';
$arrComandos[] = '<button type="button" accesskey="C" name="btnCancelar" value="Cancelar" onclick="location.href=\'' . $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink('controlador.php?acao=' . $objPaginaSEI->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'] . '&acao_destino=' . $_GET['acao'] . $strParametros)) . '\';" class="infraButton"><span class="infraTeclaAtalho">C</span>ancelar</button>';

Expand Down Expand Up @@ -109,6 +131,19 @@
$ret = $objPenExpedirLoteRN->cadastrarLote($objPenExpedirLoteDTO);
$bolBotaoFecharCss = InfraUtil::compararVersoes(SEI_VERSAO, ">", "4.0.1");

// Atualiza estado do bloco em tramite para em processamento
if (isset($_POST['hdIdTramiteEmBloco']) && ($_POST['hdIdTramiteEmBloco'] != null && $_POST['hdIdTramiteEmBloco'] != '')) {
$strParametros .= '&id_bloco=' . $_POST['hdIdTramiteEmBloco'];
$strLinkProcedimento = $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink('controlador.php?acao=' . $objPaginaSEI->getAcaoRetorno() . '&acao_origem=' . $_GET['acao'] . '&acao_destino=' . $_GET['acao'] . $strParametros));

$objTramiteEmBlocoDTO = new TramiteEmBlocoDTO();
$objTramiteEmBlocoDTO->setNumId($_POST['hdIdTramiteEmBloco']);
$objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_DISPONIBILIZADO);

$objTramiteEmBlocoRN = new TramiteEmBlocoRN();
$objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO);
}

// Muda situação da barra de progresso para Concluído
echo "<script type='text/javascript'>sinalizarStatusConclusao('$strLinkProcedimento','$bolBotaoFecharCss');</script> ";
} catch(\Exception $e) {
Expand Down Expand Up @@ -402,10 +437,11 @@ function enviarForm(event){
<input type="hidden" id="hdnIdProcedimento" name="hdnIdProcedimento" value="<?=implode(',', $arrProtocolosOrigem) ?>" />
<input type="hidden" id="hdnErrosValidacao" name="hdnErrosValidacao" value="<?=$bolErrosValidacao ?>" />
<input type="hidden" id="hdnUnidadesAdministrativas" name="hdnUnidadesAdministrativas" value="" />
<input type="hidden" id="hdIdTramiteEmBloco" name="hdIdTramiteEmBloco" value="<?= $idTramiteEmBloco ?>"/>

</form>
<?php
$objPaginaSEI->montarAreaDebug();
$objPaginaSEI->fecharBody();
$objPaginaSEI->fecharHtml();
?>
?>
Loading

0 comments on commit 0059482

Please sign in to comment.