Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/mapeamento tipos de processo relacionamento entre orgaos #406

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
58 changes: 58 additions & 0 deletions docs/changelogs/CHANGELOG-3.5.0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# NOTAS DE VERSÃO MOD-SEI-PEN (versão 3.5.0)

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

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

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

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

* **INSTALACAO.md** - Procedimento de instalação e configuração do módulo
* **ATUALIZACAO.md** - Procedimento específicos para atualização de uma versão anterior

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

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

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

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

### Atualização de Versão

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

#### Instruções

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

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

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

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

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

```bash
php -c /etc/php.ini <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
```
111 changes: 109 additions & 2 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 @@ -525,6 +525,52 @@ public function montarIconeDocumento(ProcedimentoAPI $objProcedimentoAPI, $arrOb
return $arrIcones;
}

/**
* @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 inativar o Tipo de Processo "%s" '
. 'que se encontra mapeado para o Tipo de Processo Padrão. '
. 'Para continuar com essa ação é necessário alterar o Tipo de Processo Padrão. '
. 'O Tipo de Processo padrão se encontra disponível em: '
. 'Administração -> Processo Eletrônico Nacional -> Mapeamento de Tipos de Processo -> Relacionamento entre Órgãos';

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

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

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

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

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

/**
* Método responsável de criar listagem de item para XML
*/
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);
}
}
38 changes: 38 additions & 0 deletions src/dto/PenMapTipoProcedimentoDTO.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?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->configurarFK('IdMapOrgao', 'mapeamento_orgao', 'id_map_orgao');

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

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

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

$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade');
$this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA);
$this->configurarFK('IdUnidade', 'unidade', 'id_unidade');
}
}
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');
}
}
3 changes: 3 additions & 0 deletions src/dto/PenUnidadeDTO.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ public function montar() {
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NomeUnidadeRH', 'nome_unidade_rh');
$this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'SiglaUnidadeRH', 'sigla_unidade_rh');
$this->configurarPK('IdUnidade', InfraDTO::$TIPO_PK_INFORMADO);

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

// Infelizmente não funciona com parent::getArrAtributos(), pois o arrAtributos
// esta na InfraDTO e ela confunde em função do extends, então tenho que
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
Loading