Skip to content

Commit

Permalink
Release da versão 3.5.0 (#419)
Browse files Browse the repository at this point in the history
* feat: implementação de mapeamento de tipos de processo
  • Loading branch information
mateussbh authored Jan 11, 2024
1 parent 1378ea7 commit 7e226f5
Show file tree
Hide file tree
Showing 69 changed files with 7,254 additions and 35 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/testes.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,4 +52,4 @@ jobs:
make tramitar-pendencias-silent &
- name: Testes funcionais
run: cd sei/src/sei/web/modulos/mod-sei-pen; make test-functional-parallel
run: cd sei/src/sei/web/modulos/mod-sei-pen; make test-functional
57 changes: 57 additions & 0 deletions docs/changelogs/CHANGELOG-3.5.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# NOTAS DE VERSÃO MOD-SEI-PEN (versão 3.5.0)

Este documento descreve as principais mudanças aplicadas nesta versão do módulo de integração do SEI com o TRAMITA.GOV.BR.

As melhorias entregues em cada uma das versões são cumulativas, ou seja, contêm todas as implementações realizadas em versões anteriores.

## Compatibilidade de versões
* O módulo é compatível com as seguintes versões do **SEI**:
* 3.1.0 até 3.1.7,
* 4.0.0 até 4.0.12

Para maiores informações sobre os procedimentos de instalação ou atualização, acesse os seguintes documentos localizados no pacote de distribuição mod-sei-pen-VERSAO.zip:
> Atenção: É impreterível seguir rigorosamente o disposto no README.md do Módulo para instalação ou atualização com sucesso.
* **INSTALACAO.md** - Procedimento de instalação e configuração do módulo
* **ATUALIZACAO.md** - Procedimento específicos para atualização de uma versão anterior

### Lista de melhorias e correções de problemas

Todas as atualizações podem incluir itens referentes à segurança, requisito em permanente monitoramento e evolução, motivo pelo qual a atualização com a maior brevidade possível é sempre recomendada.

#### Mapeamento de Tipos de Processos: Cadastro de Relacionamento entre Órgãos (#250)

Esta melhoria é parte do pacote referente à funcionalidade de Blocos de Migração.

### Atualização de Versão

Para obter informações detalhadas sobre cada um dos passos de atualização, vide arquivo **ATUALIZACAO.md**.

#### Instruções

1. Baixar a última versão do módulo de instalação do sistema (arquivo `mod-sei-pen-[VERSÃO].zip`) localizado na página de [Releases do projeto MOD-SEI-PEN](https://github.com/spbgovbr/mod-sei-pen/releases), seção **Assets**. _Somente usuários autorizados previamente pela Coordenação-Geral do Processo Eletrônico Nacional podem ter acesso às versões._

2. Fazer backup dos diretórios "sei", "sip" e "infra" do servidor web;

3. Descompactar o pacote de instalação `mod-sei-pen-[VERSÃO].zip`;

4. Copiar os diretórios descompactados "sei", "sip" para os servidores, sobrescrevendo os arquivos existentes;

5. Executar o script de instalação/atualização `sei_atualizar_versao_modulo_pen.php` do módulo para o SEI localizado no diretório `sei/scripts/mod-pen/`

```bash
php -c /etc/php.ini <DIRETÓRIO RAIZ DE INSTALAÇÃO DO SEI E SIP>/sei/scripts/mod-pen/sei_atualizar_versao_modulo_pen.php
```

6. Executar o script de instalação/atualização `sip_atualizar_versao_modulo_pen.php` do módulo para o SIP localizado no diretório `sip/scripts/mod-pen/`

```bash
php -c /etc/php.ini <DIRETÓRIO RAIZ DE INSTALAÇÃO DO SEI E SIP>/sip/scripts/mod-pen/sip_atualizar_versao_modulo_pen.php
```

7. Verificar a correta instalação e configuração do módulo

Para executar a verificação, execute o script ```verifica_instalacao_modulo_pen.php``` localizado no diretório de scripts do SEI ```<DIRETÓRIO RAIZ DE INSTALAÇÃO DO SEI E SIP>/sei/scripts/mod-pen/```.

```bash
$ php -c /etc/php.ini <DIRETÓRIO RAIZ DE INSTALAÇÃO DO SEI E SIP>/sei/scripts/mod-pen/verifica_instalacao_modulo_pen.php
```
113 changes: 110 additions & 3 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.4.0");
define("VERSAO_MODULO_PEN", "3.5.0");

class PENIntegracao extends SeiIntegracao
{
Expand Down Expand Up @@ -526,7 +526,53 @@ public function montarIconeDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrOb
}

/**
* Método responsável de criar listagem de item para XML
* @param array $arrObjTipoProcedimentoDTO
* @return void
*/
public function desativarTipoProcesso($arrObjTipoProcedimentoDTO)
{
$mensagem = "Prezado(a) usuário(a), você está tentando desativar um Tipo de Processo que se encontra mapeado para o(s) relacionamento(s) "
."\"%s\". Para continuar com essa ação é necessário remover do(s) mapeamentos "
."mencionados o Tipo de Processo: \"%s\".";

$objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN();
$objMapeamentoTipoProcedimentoRN->validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem);

$mensagem = 'Prezado(a) usuário(a), você está tentando desativar o Tipo de Processo "%s" '
. 'que se encontra mapeado para o Tipo de Processo Padrão. '
. 'Para continuar com essa ação é necessário alterar o Tipo de Processo Padrão. '
. 'O Tipo de Processo padrão se encontra disponível em: '
. 'Administração -> Processo Eletrônico Nacional -> Mapeamento de Tipos de Processo -> Relacionamento entre Unidades';

$objPenParametroRN = new PenParametroRN();
$objPenParametroRN->validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem);
}

/**
* @param array $arrObjTipoProcedimentoDTO
* @return void
*/
public function excluirTipoProcesso($arrObjTipoProcedimentoDTO)
{
$mensagem = "Prezado(a) usuário(a), você está tentando excluir um Tipo de Processo que se encontra mapeado para o(s) relacionamento(s) "
."\"%s\". Para continuar com essa ação é necessário remover do(s) mapeamentos "
."mencionados o Tipo de Processo: \"%s\".";

$objMapeamentoTipoProcedimentoRN = new PenMapTipoProcedimentoRN();
$objMapeamentoTipoProcedimentoRN->validarAcaoTipoProcesso($arrObjTipoProcedimentoDTO, $mensagem);

$mensagem = 'Prezado(a) usuário(a), você está tentando excluir o Tipo de Processo "%s" '
. 'que se encontra mapeado para o Tipo de Processo Padrão. '
. 'Para continuar com essa ação é necessário alterar o Tipo de Processo Padrão. '
. 'O Tipo de Processo padrão se encontra disponível em: '
. 'Administração -> Processo Eletrônico Nacional -> Mapeamento de Tipos de Processo -> Relacionamento entre Unidades';

$objPenParametroRN = new PenParametroRN();
$objPenParametroRN->validarAcaoTipoProcessoPadrao($arrObjTipoProcedimentoDTO, $mensagem);
}

/**
* Método responsável de criar listagem de item para XML
*/
public static function gerarXMLItensArrInfraDTOAutoCompletar(
$arr,
Expand Down Expand Up @@ -684,6 +730,41 @@ public function processarControlador($strAcao)
require_once dirname(__FILE__) . '/pen_map_unidade_cadastrar.php';
break;

case 'pen_map_orgaos_externos_salvar':
case 'pen_map_orgaos_externos_atualizar':
case 'pen_map_orgaos_externos_cadastrar':
case 'pen_map_orgaos_externos_visualizar':
require_once dirname(__FILE__) . '/pen_map_orgaos_externos_cadastrar.php';
break;

case 'pen_map_orgaos_externos_reativar':
case 'pen_map_orgaos_externos_desativar':
case 'pen_map_orgaos_externos_listar':
case 'pen_map_orgaos_externos_excluir':
case 'pen_map_orgaos_importar_tipos_processos':
require_once dirname(__FILE__) . '/pen_map_orgaos_externos_listar.php';
break;

case 'pen_map_tipo_processo_padrao':
case 'pen_map_tipo_processo_padrao_salvar':
require_once dirname(__FILE__) . '/pen_map_tipo_processo_padrao.php';
break;

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

case 'pen_map_orgaos_exportar_tipos_processos':
require_once dirname(__FILE__) . '/pen_tipo_procedimento_lista.php';
break;

case 'pen_map_orgaos_externos_mapeamento_desativar':
case 'pen_map_orgaos_externos_mapeamento':
case 'pen_map_orgaos_externos_mapeamento_gerenciar':
case 'pen_map_orgaos_externos_mapeamento_excluir':
require_once dirname(__FILE__) . '/pen_map_orgaos_mapeamento_tipo_listar.php';
break;

case 'pen_map_unidade_listar':
case 'pen_map_unidade_excluir':
require_once dirname(__FILE__) . '/pen_map_unidade_listar.php';
Expand Down Expand Up @@ -740,7 +821,33 @@ public function processarControladorAjax($strAcao) {
if (count($arrObjEstruturaDTO['itens']) > 0) {
$xml = self::gerarXMLItensArrInfraDTOAutoCompletar($arrObjEstruturaDTO, 'NumeroDeIdentificacaoDaEstrutura', 'Nome');
} else {
return '<itens><item grupo="vazio" id="0" descricao="Unidade não Encontrada."></item></itens>';
return '<itens><item id="0" descricao="Unidade não Encontrada."></item></itens>';
}
break;

case 'pen_unidade_auto_completar_mapeados':
// DTO de paginao
$objPenUnidadeDTOFiltro = new PenUnidadeDTO();
$objPenUnidadeDTOFiltro->retStrSiglaUnidadeRH();
$objPenUnidadeDTOFiltro->retStrNomeUnidadeRH();
$objPenUnidadeDTOFiltro->retNumIdUnidade();
$objPenUnidadeDTOFiltro->retNumIdUnidadeRH();

// Filtragem
if(!empty($_POST['palavras_pesquisa']) && $_POST['palavras_pesquisa'] !== 'null') {
$objPenUnidadeDTOFiltro->setStrNomeUnidadeRH('%'.$_POST['palavras_pesquisa'].'%', InfraDTO::$OPER_LIKE);
}

$objPenUnidadeRN = new PenUnidadeRN();
$objArrPenUnidadeDTO = (array) $objPenUnidadeRN->listar($objPenUnidadeDTOFiltro);
if (count($objArrPenUnidadeDTO) > 0) {
foreach ($objArrPenUnidadeDTO as $dto) {
$dto->setNumIdUnidadeMap($dto->getNumIdUnidadeRH());
$dto->setStrDescricaoMap($dto->getStrNomeUnidadeRH(). '-' . $dto->getStrSiglaUnidadeRH());
}
$xml = InfraAjax::gerarXMLItensArrInfraDTO($objArrPenUnidadeDTO, 'IdUnidadeMap', 'DescricaoMap');
} else {
return '<itens><item id="0" descricao="Unidade não Encontrada."></item></itens>';
}
break;

Expand Down
10 changes: 10 additions & 0 deletions src/bd/PenMapTipoProcedimentoBD.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

require_once DIR_SEI_WEB.'/SEI.php';

class PenMapTipoProcedimentoBD extends InfraBD {

public function __construct(InfraIBanco $objInfraIBanco) {
parent::__construct($objInfraIBanco);
}
}
10 changes: 10 additions & 0 deletions src/bd/PenOrgaoExternoBD.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

require_once DIR_SEI_WEB.'/SEI.php';

class PenOrgaoExternoBD extends InfraBD {

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

require_once DIR_SEI_WEB.'/SEI.php';

/**
* Classe reaponsável por manipulação
*/
class PenMapTipoProcedimentoDTO extends InfraDTO {

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

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

public function montar() {

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'id');

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdMapOrgao', 'id_map_orgao');
$this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA);

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTipoProcessoOrigem', 'id_tipo_processo_origem');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTipoProcessoDestino', 'id_tipo_processo_destino');

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeTipoProcesso', 'nome_tipo_processo');

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_criacao');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'Ativo', 'sin_ativo');

$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'OrgaoOrigem', 'str_orgao_origem', 'md_pen_orgao_externo');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'OrgaoDestino', 'str_orgao_destino', 'md_pen_orgao_externo');
$this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeTipoProcedimento', 'nome', 'tipo_procedimento');


$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade');
$this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA);
$this->configurarFK('IdUnidade', 'unidade', 'id_unidade');
$this->configurarFK('IdMapOrgao', 'md_pen_orgao_externo', 'id', InfraDTO::$TIPO_FK_OBRIGATORIA);
$this->configurarFK('IdTipoProcessoDestino', 'tipo_procedimento', 'id_tipo_procedimento', InfraDTO::$TIPO_FK_OPCIONAL);
}
}
39 changes: 39 additions & 0 deletions src/dto/PenOrgaoExternoDTO.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

require_once DIR_SEI_WEB.'/SEI.php';

/**
* Classe reaponsável por manipulação
*/
class PenOrgaoExternoDTO extends InfraDTO {

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

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

public function montar() {

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'Id');

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdOrgaoOrigem', 'id_orgao_origem');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'OrgaoOrigem', 'str_orgao_origem');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdEstrutaOrganizacionalOrigem', 'id_estrutura_origem');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'EstrutaOrganizacionalOrigem', 'str_estrutura_origem');

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdOrgaoDestino', 'id_orgao_destino');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'OrgaoDestino', 'str_orgao_destino');

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_criacao');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'Ativo', 'sin_ativo');

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade');

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

$this->configurarFK('IdUnidade', 'unidade', 'id_unidade');
}
}
15 changes: 9 additions & 6 deletions src/dto/PenUnidadeDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,16 @@ public function montar() {
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRH', 'id_unidade_rh');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRH', 'nome_unidade_rh');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'SiglaUnidadeRH', 'sigla_unidade_rh');
$this->configurarPK('IdUnidade', InfraDTO::$TIPO_PK_INFORMADO);
$this->configurarPK('IdUnidade', InfraDTO::$TIPO_PK_INFORMADO);

$this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdUnidadeMap');
$this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'DescricaoMap');

// Infelizmente não funciona com parent::getArrAtributos(), pois o arrAtributos
// esta na InfraDTO e ela confunde em função do extends, então tenho que
// criar uma nova instância
$objUnidadeDTO = new UnidadeDTO();
$objUnidadeDTO->retTodos();
// Infelizmente não funciona com parent::getArrAtributos(), pois o arrAtributos
// esta na InfraDTO e ela confunde em função do extends, então tenho que
// criar uma nova instância
$objUnidadeDTO = new UnidadeDTO();
$objUnidadeDTO->retTodos();

foreach($objUnidadeDTO->getArrAtributos() as $arrAtrib) {

Expand Down
25 changes: 25 additions & 0 deletions src/imagens/importar.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit 7e226f5

Please sign in to comment.