Commit a7dc4fc28a64c7dc0582c1427b6385ef933dfe51
1 parent
22361c95
Exists in
master
and in
19 other branches
[Fixed #51] Incompatibilidade do módulo com a versão SEI 3.1
Showing
5 changed files
with
85 additions
and
19 deletions
Show diff stats
PENIntegracao.php
@@ -2,7 +2,7 @@ | @@ -2,7 +2,7 @@ | ||
2 | 2 | ||
3 | class PENIntegracao extends SeiIntegracao { | 3 | class PENIntegracao extends SeiIntegracao { |
4 | 4 | ||
5 | - const COMPATIBILIDADE_MODULO_SEI = array('3.0.5', '3.0.6', '3.0.7', '3.0.8', '3.0.9', '3.0.11', '3.0.12', '3.0.13', '3.0.14', '3.0.15'); | 5 | + const COMPATIBILIDADE_MODULO_SEI = array('3.0.5', '3.0.6', '3.0.7', '3.0.8', '3.0.9', '3.0.11', '3.0.12', '3.0.13', '3.0.14', '3.0.15', '3.1.0'); |
6 | 6 | ||
7 | private static $strDiretorio; | 7 | private static $strDiretorio; |
8 | 8 | ||
@@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao { | @@ -11,7 +11,7 @@ class PENIntegracao extends SeiIntegracao { | ||
11 | } | 11 | } |
12 | 12 | ||
13 | public function getVersao() { | 13 | public function getVersao() { |
14 | - return '1.1.17'; | 14 | + return '1.2.0'; |
15 | } | 15 | } |
16 | 16 | ||
17 | public function getInstituicao() { | 17 | public function getInstituicao() { |
@@ -353,7 +353,8 @@ class PENIntegracao extends SeiIntegracao { | @@ -353,7 +353,8 @@ class PENIntegracao extends SeiIntegracao { | ||
353 | return $xml; | 353 | return $xml; |
354 | } | 354 | } |
355 | 355 | ||
356 | - public static function validarCompatibilidadeModulo($bolGerarExcecao = true, $strVersaoSEI = SEI_VERSAO) { | 356 | + public static function validarCompatibilidadeModulo($bolGerarExcecao = true, $strVersaoSEI = SEI_VERSAO) |
357 | + { | ||
357 | $objPENIntegracao = new PENIntegracao(); | 358 | $objPENIntegracao = new PENIntegracao(); |
358 | if(!in_array($strVersaoSEI, self::COMPATIBILIDADE_MODULO_SEI)) { | 359 | if(!in_array($strVersaoSEI, self::COMPATIBILIDADE_MODULO_SEI)) { |
359 | throw new InfraException(sprintf("Módulo %s (versão %s) não é compatível com a versão %s do SEI.", $objPENIntegracao->getNome(), $objPENIntegracao->getVersao(), $strVersaoSEI)); | 360 | throw new InfraException(sprintf("Módulo %s (versão %s) não é compatível com a versão %s do SEI.", $objPENIntegracao->getNome(), $objPENIntegracao->getVersao(), $strVersaoSEI)); |
bd/PenMetaBD.php
@@ -326,10 +326,10 @@ class PenMetaBD extends InfraMetaBD { | @@ -326,10 +326,10 @@ class PenMetaBD extends InfraMetaBD { | ||
326 | return $this; | 326 | return $this; |
327 | } | 327 | } |
328 | 328 | ||
329 | - public function adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem) { | 329 | + public function adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem, $bolCriarIndice = true) { |
330 | 330 | ||
331 | if(!$this->isChaveExiste($strTabela, $strNomeFK)) { | 331 | if(!$this->isChaveExiste($strTabela, $strNomeFK)) { |
332 | - parent::adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem); | 332 | + parent::adicionarChaveEstrangeira($strNomeFK, $strTabela, $arrCampos, $strTabelaOrigem, $arrCamposOrigem, $bolCriarIndice); |
333 | } | 333 | } |
334 | return $this; | 334 | return $this; |
335 | } | 335 | } |
rn/ExpedirProcedimentoRN.php
@@ -1209,8 +1209,16 @@ class ExpedirProcedimentoRN extends InfraRN { | @@ -1209,8 +1209,16 @@ class ExpedirProcedimentoRN extends InfraRN { | ||
1209 | $objEditorDTO->setStrSinProcessarLinks('S'); | 1209 | $objEditorDTO->setStrSinProcessarLinks('S'); |
1210 | } | 1210 | } |
1211 | 1211 | ||
1212 | - $numVersaoAtual = intval(str_replace('.', '', SEI_VERSAO)); | ||
1213 | - $numVersaoCarimboObrigatorio = intval(str_replace('.', '', self::VERSAO_CARIMBO_PUBLICACAO_OBRIGATORIO)); | 1212 | + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.0.15 -> 030015) |
1213 | + $numVersaoAtual = explode('.', SEI_VERSAO); | ||
1214 | + $numVersaoAtual = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoAtual); | ||
1215 | + $numVersaoAtual = intval(join($numVersaoAtual)); | ||
1216 | + | ||
1217 | + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.0.7 -> 030007) | ||
1218 | + $numVersaoCarimboObrigatorio = explode('.', self::VERSAO_CARIMBO_PUBLICACAO_OBRIGATORIO); | ||
1219 | + $numVersaoCarimboObrigatorio = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoCarimboObrigatorio); | ||
1220 | + $numVersaoCarimboObrigatorio = intval(join($numVersaoCarimboObrigatorio)); | ||
1221 | + | ||
1214 | if ($numVersaoAtual >= $numVersaoCarimboObrigatorio) { | 1222 | if ($numVersaoAtual >= $numVersaoCarimboObrigatorio) { |
1215 | $objEditorDTO->setStrSinCarimboPublicacao('N'); | 1223 | $objEditorDTO->setStrSinCarimboPublicacao('N'); |
1216 | } | 1224 | } |
rn/PenAtualizarSeiRN.php
@@ -27,22 +27,24 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | @@ -27,22 +27,24 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | ||
27 | !(BancoSEI::getInstance() instanceof InfraOracle)) { | 27 | !(BancoSEI::getInstance() instanceof InfraOracle)) { |
28 | 28 | ||
29 | $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSEI::getInstance()), true); | 29 | $this->finalizar('BANCO DE DADOS NAO SUPORTADO: ' . get_parent_class(BancoSEI::getInstance()), true); |
30 | - } | 30 | + } |
31 | + | ||
32 | + PENIntegracao::validarCompatibilidadeModulo(); | ||
31 | 33 | ||
32 | //testando permissoes de criações de tabelas | 34 | //testando permissoes de criações de tabelas |
33 | - $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); | 35 | + $objInfraMetaBD = new InfraMetaBD(BancoSEI::getInstance()); |
34 | 36 | ||
35 | - if (count($objInfraMetaBD->obterTabelas('pen_sei_teste')) == 0) { | ||
36 | - BancoSEI::getInstance()->executarSql('CREATE TABLE pen_sei_teste (id ' . $objInfraMetaBD->tipoNumero() . ' null)'); | ||
37 | - } | ||
38 | - BancoSEI::getInstance()->executarSql('DROP TABLE pen_sei_teste'); | 37 | + if (count($objInfraMetaBD->obterTabelas('pen_sei_teste')) == 0) { |
38 | + BancoSEI::getInstance()->executarSql('CREATE TABLE pen_sei_teste (id ' . $objInfraMetaBD->tipoNumero() . ' null)'); | ||
39 | + } | ||
40 | + BancoSEI::getInstance()->executarSql('DROP TABLE pen_sei_teste'); | ||
39 | 41 | ||
40 | - $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); | 42 | + $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); |
41 | 43 | ||
42 | // Aplicação de scripts de atualização de forma incremental | 44 | // Aplicação de scripts de atualização de forma incremental |
43 | // Ausência de [break;] proposital para realizar a atualização incremental de versões | 45 | // Ausência de [break;] proposital para realizar a atualização incremental de versões |
44 | - $strVersaoModuloPen = $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO, false) ?: $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO_ANTIGO, false); | ||
45 | - switch ($strVersaoModuloPen) { | 46 | + $strVersaoModuloPen = $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO, false) ?: $objInfraParametro->getValor(self::PARAMETRO_VERSAO_MODULO_ANTIGO, false); |
47 | + switch ($strVersaoModuloPen) { | ||
46 | case '': $this->instalarV100(); // Nenhuma versão instalada | 48 | case '': $this->instalarV100(); // Nenhuma versão instalada |
47 | case '1.0.0': $this->instalarV101(); | 49 | case '1.0.0': $this->instalarV101(); |
48 | case '1.0.1': $this->instalarV110(); | 50 | case '1.0.1': $this->instalarV110(); |
@@ -63,6 +65,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | @@ -63,6 +65,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | ||
63 | case '1.1.14': $this->instalarV1115(); | 65 | case '1.1.14': $this->instalarV1115(); |
64 | case '1.1.15': $this->instalarV1116(); | 66 | case '1.1.15': $this->instalarV1116(); |
65 | case '1.1.16': $this->instalarV1117(); | 67 | case '1.1.16': $this->instalarV1117(); |
68 | + case '1.1.17': $this->instalarV1200(); | ||
66 | 69 | ||
67 | break; | 70 | break; |
68 | default: | 71 | default: |
@@ -1482,8 +1485,32 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | @@ -1482,8 +1485,32 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | ||
1482 | $fnCadastrar(++$numMaxId, 'PEN_EXPEDICAO_PROCESSO_ABORTADA'); | 1485 | $fnCadastrar(++$numMaxId, 'PEN_EXPEDICAO_PROCESSO_ABORTADA'); |
1483 | 1486 | ||
1484 | InfraDebug::getInstance()->gravar('Atualizando sequência das tabelas do sistema'); | 1487 | InfraDebug::getInstance()->gravar('Atualizando sequência das tabelas do sistema'); |
1485 | - $objVersaoRN = new VersaoRN(); | ||
1486 | - $objVersaoRN->atualizarSequencias(); | 1488 | + |
1489 | + | ||
1490 | + //Na versão 3.1.0 do SEI, houve uma mudança na rotina de atualização das sequences do banco de dados, | ||
1491 | + //deixando de se utilizar a classe VersaoRN para utilizar a nova classe ScriptRN. | ||
1492 | + //Devido a esta mudança, é necessário avaliar qual a atual versão do SEI executar a rotina correta | ||
1493 | + | ||
1494 | + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.1.0 -> 030100) | ||
1495 | + $numVersaoAtualSEI = explode('.', SEI_VERSAO); | ||
1496 | + $numVersaoAtualSEI = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoAtualSEI); | ||
1497 | + $numVersaoAtualSEI = intval(join($numVersaoAtualSEI)); | ||
1498 | + | ||
1499 | + //Normaliza o formato de número de versão considerando dois caracteres para cada item (3.1.0 -> 030100) | ||
1500 | + $numVersaoMudancaAtualizarSequencias = explode('.', '3.1.0'); | ||
1501 | + $numVersaoMudancaAtualizarSequencias = array_map(function($item){ return str_pad($item, 2, '0', STR_PAD_LEFT); }, $numVersaoMudancaAtualizarSequencias); | ||
1502 | + $numVersaoMudancaAtualizarSequencias = intval(join($numVersaoMudancaAtualizarSequencias)); | ||
1503 | + | ||
1504 | + if($numVersaoMudancaAtualizarSequencias >= $numVersaoAtualSEI){ | ||
1505 | + //Procedimento de atualização de sequências compatível com SEI 3.1.X | ||
1506 | + $objScriptRN = new ScriptRN(); | ||
1507 | + $objScriptRN->atualizarSequencias(); | ||
1508 | + } else { | ||
1509 | + //Procedimento de atualização de sequências compatível com SEI 3.0.X | ||
1510 | + $objVersaoRN = new VersaoRN(); | ||
1511 | + $objVersaoRN->atualizarSequencias(); | ||
1512 | + } | ||
1513 | + | ||
1487 | 1514 | ||
1488 | //Altera o parâmetro da versão de banco | 1515 | //Altera o parâmetro da versão de banco |
1489 | $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance()); | 1516 | $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance()); |
@@ -1492,4 +1519,16 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | @@ -1492,4 +1519,16 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { | ||
1492 | $objInfraParametroDTO->setStrValor('1.1.17'); | 1519 | $objInfraParametroDTO->setStrValor('1.1.17'); |
1493 | $objInfraParametroBD->alterar($objInfraParametroDTO); | 1520 | $objInfraParametroBD->alterar($objInfraParametroDTO); |
1494 | } | 1521 | } |
1522 | + | ||
1523 | + | ||
1524 | + /* Contêm atualizações da versao 1.2.0 do módulo */ | ||
1525 | + protected function instalarV1200() | ||
1526 | + { | ||
1527 | + //altera o parâmetro da versão de banco | ||
1528 | + $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance()); | ||
1529 | + $objInfraParametroDTO = new InfraParametroDTO(); | ||
1530 | + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO); | ||
1531 | + $objInfraParametroDTO->setStrValor('1.2.0'); | ||
1532 | + $objInfraParametroBD->alterar($objInfraParametroDTO); | ||
1533 | + } | ||
1495 | } | 1534 | } |
sip_atualizar_versao_modulo_pen.php
@@ -9,9 +9,10 @@ set_include_path(implode(PATH_SEPARATOR, array( | @@ -9,9 +9,10 @@ set_include_path(implode(PATH_SEPARATOR, array( | ||
9 | 9 | ||
10 | class PenAtualizarSipRN extends InfraRN { | 10 | class PenAtualizarSipRN extends InfraRN { |
11 | 11 | ||
12 | - protected $versaoMinRequirida = '1.30.0'; | ||
13 | const PARAMETRO_VERSAO_MODULO_ANTIGO = 'PEN_VERSAO_MODULO_SIP'; | 12 | const PARAMETRO_VERSAO_MODULO_ANTIGO = 'PEN_VERSAO_MODULO_SIP'; |
14 | const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN'; | 13 | const PARAMETRO_VERSAO_MODULO = 'VERSAO_MODULO_PEN'; |
14 | + | ||
15 | + protected $versaoMinRequirida = '1.30.0'; | ||
15 | private $arrRecurso = array(); | 16 | private $arrRecurso = array(); |
16 | private $arrMenu = array(); | 17 | private $arrMenu = array(); |
17 | 18 | ||
@@ -99,6 +100,7 @@ class PenAtualizarSipRN extends InfraRN { | @@ -99,6 +100,7 @@ class PenAtualizarSipRN extends InfraRN { | ||
99 | case '1.1.14': $this->instalarV1115(); | 100 | case '1.1.14': $this->instalarV1115(); |
100 | case '1.1.15': $this->instalarV1116(); | 101 | case '1.1.15': $this->instalarV1116(); |
101 | case '1.1.16': $this->instalarV1117(); | 102 | case '1.1.16': $this->instalarV1117(); |
103 | + case '1.1.17': $this->instalarV1200(); | ||
102 | 104 | ||
103 | break; | 105 | break; |
104 | default: | 106 | default: |
@@ -118,6 +120,7 @@ class PenAtualizarSipRN extends InfraRN { | @@ -118,6 +120,7 @@ class PenAtualizarSipRN extends InfraRN { | ||
118 | } | 120 | } |
119 | } | 121 | } |
120 | 122 | ||
123 | + | ||
121 | /** | 124 | /** |
122 | * Finaliza o script informando o tempo de execução. | 125 | * Finaliza o script informando o tempo de execução. |
123 | * | 126 | * |
@@ -1117,6 +1120,21 @@ class PenAtualizarSipRN extends InfraRN { | @@ -1117,6 +1120,21 @@ class PenAtualizarSipRN extends InfraRN { | ||
1117 | $objInfraParametroDTO->setStrValor('1.1.17'); | 1120 | $objInfraParametroDTO->setStrValor('1.1.17'); |
1118 | $objInfraParametroBD->alterar($objInfraParametroDTO); | 1121 | $objInfraParametroBD->alterar($objInfraParametroDTO); |
1119 | } | 1122 | } |
1123 | + | ||
1124 | + /** | ||
1125 | + * Instala/Atualiza os módulo PEN para versão 1.2.0 | ||
1126 | + */ | ||
1127 | + protected function instalarV1200() | ||
1128 | + { | ||
1129 | + //Corrigir a versão do módulo no banco de dados | ||
1130 | + $objInfraParametroDTO = new InfraParametroDTO(); | ||
1131 | + $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO); | ||
1132 | + $objInfraParametroDTO->retTodos(); | ||
1133 | + $objInfraParametroBD = new InfraParametroBD(BancoSip::getInstance()); | ||
1134 | + $objInfraParametroDTO = $objInfraParametroBD->consultar($objInfraParametroDTO); | ||
1135 | + $objInfraParametroDTO->setStrValor('1.2.0'); | ||
1136 | + $objInfraParametroBD->alterar($objInfraParametroDTO); | ||
1137 | + } | ||
1120 | } | 1138 | } |
1121 | 1139 | ||
1122 | try { | 1140 | try { |