diff --git a/README.md b/README.md index 109172a..dfa1a11 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,16 @@ # Módulo SEI Correios ## Requisitos -- SEI 4.0.9 instalado/atualizado (Não é compatível com o SEI 3.1.x). +- Requisito Mínimo é o SEI 4.0.12 instalado/atualizado - Não é compatível com versões anteriores e em versões mais recentes é necessário conferir antes se possui compatibilidade. - Verificar valor da constante de versão no arquivo /sei/web/SEI.php ou, após logado no sistema, parando o mouse sobre a logo do SEI no canto superior esquerdo. - Antes de executar os scripts de instalação/atualização, o usuário de acesso aos bancos de dados do SEI e do SIP, constante nos arquivos ConfiguracaoSEI.php e ConfiguracaoSip.php, deverá ter permissão de acesso total ao banco de dados, permitindo, por exemplo, criação e exclusão de tabelas. - Os códigos-fonte do Módulo podem ser baixados a partir do link a seguir, devendo sempre utilizar a versão mais recente: [https://github.com/anatelgovbr/mod-sei-correios/releases](https://github.com/anatelgovbr/mod-sei-correios/releases "Clique e acesse") +- Se já tiver instalado a versão principal com a execução dos scripts de banco do módulo no SEI e no SIP, então basta sobrescrever os códigos e não precisa executar os scripts de banco novamente. + - Atualizações apenas de código são identificadas com o incremento apenas do terceiro dígito da versão (p. ex. v4.1.1, v4.1.2) e não envolve execução de scripts de banco. ## Procedimentos para Instalação -1. Antes, fazer backup dos bancos de dados do SEI e do SIP. -2. Carregar no servidor os arquivos do módulo localizados na pasta "/sei/web/modulos/correios" e os scripts de instalação/atualização "/sip/scripts/sip_atualizar_versao_modulo_correios.php" e "/sei/scripts/sei_atualizar_versao_modulo_correios.php". +1. Fazer backup dos bancos de dados do SEI e do SIP. +2. Carregar no servidor os arquivos do módulo nas pastas correspondentes nos servidores do SEI e do SIP. - **Caso se trate de atualização de versão anterior do Módulo**, antes de copiar os códigos-fontes para a pasta "/sei/web/modulos/correios", é necessário excluir os arquivos anteriores pré existentes na mencionada pasta, para não manter arquivos de códigos que foram renomeados ou descontinuados. 3. Editar o arquivo "/sei/config/ConfiguracaoSEI.php", tomando o cuidado de usar editor que não altere o charset do arquivo, para adicionar a referência à classe de integração do módulo e seu caminho relativo dentro da pasta "/sei/web/modulos" na array 'Modulos' da chave 'SEI': @@ -35,9 +37,9 @@ 9. Após a execução com sucesso, com um usuário com permissão de Administrador no SEI, seguir os passos dispostos no tópico "Orientações Negociais" mais abaixo. 10. Para o funcionamento correto do Módulo SEI Correios é necessária a instalação da biblioteca PHP "ImageMagick" e "ImageMagick-devel" em cada nó de aplicação do SEI, conforme comandos abaixo: - Execute a linha de comando "yum install -y ImageMagick ImageMagick-devel" - Execute a linha de comando "pecl install imagick" - Modifique o arquvivo "/etc/php.ini", incluindo a linha "extension=imagick.so" no final da seção "Dynamic Extensions" + Execute a linha de comando "yum install -y ImageMagick ImageMagick-devel" + Execute a linha de comando "pecl install imagick" + Modifique o arquvivo "/etc/php.ini", incluindo a linha "extension=imagick.so" no final da seção "Dynamic Extensions" ## Orientações Negociais @@ -101,4 +103,4 @@ - Iniciar Processo > Ofício > Solicitar Expedição pelos Correios: - Solicitar Expedição pelos Correios: - Após iniciar um Processo e vincular um documento do tipo "Ofício" é realizar a assinatura do documento será exibido o icone "Solicitar Expedição pelos Correios". - - Na tela de "Solicitar Expedição pelos Correios" é possível alterar os dados dos "Documentos Expedidos" e preencher o "Formato de Expedição dos Documentos" é incluir uma "Observação". \ No newline at end of file + - Na tela de "Solicitar Expedição pelos Correios" é possível alterar os dados dos "Documentos Expedidos" e preencher o "Formato de Expedição dos Documentos" é incluir uma "Observação". diff --git a/sei/scripts/sei_atualizar_versao_modulo_correios.php b/sei/scripts/sei_atualizar_versao_modulo_correios.php index 9bae008..6a5204b 100644 --- a/sei/scripts/sei_atualizar_versao_modulo_correios.php +++ b/sei/scripts/sei_atualizar_versao_modulo_correios.php @@ -66,6 +66,15 @@ private function finalizar($strMsg = null, $bolErro = false) die; } + protected function normalizaVersao($versao) + { + $ultimoPonto = strrpos($versao, '.'); + if ($ultimoPonto !== false) { + $versao = substr($versao, 0, $ultimoPonto) . substr($versao, $ultimoPonto + 1); + } + return $versao; + } + protected function atualizarVersaoConectado() { @@ -80,11 +89,8 @@ protected function atualizarVersaoConectado() } //testando versao do framework - $numVersaoInfraRequerida = '1.612.3'; - $versaoInfraFormatada = (int)str_replace('.', '', VERSAO_INFRA); - $versaoInfraReqFormatada = (int)str_replace('.', '', $numVersaoInfraRequerida); - - if ($versaoInfraFormatada < $versaoInfraReqFormatada) { + $numVersaoInfraRequerida = '2.0.18'; + if ($this->normalizaVersao(VERSAO_INFRA) < $this->normalizaVersao($numVersaoInfraRequerida)) { $this->finalizar('VERSÃO DO FRAMEWORK PHP INCOMPATÍVEL (VERSÃO ATUAL ' . VERSAO_INFRA . ', SENDO REQUERIDA VERSÃO IGUAL OU SUPERIOR A ' . $numVersaoInfraRequerida . ')', true); } diff --git a/sei/web/modulos/correios/README.md b/sei/web/modulos/correios/README.md index 109172a..dfa1a11 100644 --- a/sei/web/modulos/correios/README.md +++ b/sei/web/modulos/correios/README.md @@ -1,14 +1,16 @@ # Módulo SEI Correios ## Requisitos -- SEI 4.0.9 instalado/atualizado (Não é compatível com o SEI 3.1.x). +- Requisito Mínimo é o SEI 4.0.12 instalado/atualizado - Não é compatível com versões anteriores e em versões mais recentes é necessário conferir antes se possui compatibilidade. - Verificar valor da constante de versão no arquivo /sei/web/SEI.php ou, após logado no sistema, parando o mouse sobre a logo do SEI no canto superior esquerdo. - Antes de executar os scripts de instalação/atualização, o usuário de acesso aos bancos de dados do SEI e do SIP, constante nos arquivos ConfiguracaoSEI.php e ConfiguracaoSip.php, deverá ter permissão de acesso total ao banco de dados, permitindo, por exemplo, criação e exclusão de tabelas. - Os códigos-fonte do Módulo podem ser baixados a partir do link a seguir, devendo sempre utilizar a versão mais recente: [https://github.com/anatelgovbr/mod-sei-correios/releases](https://github.com/anatelgovbr/mod-sei-correios/releases "Clique e acesse") +- Se já tiver instalado a versão principal com a execução dos scripts de banco do módulo no SEI e no SIP, então basta sobrescrever os códigos e não precisa executar os scripts de banco novamente. + - Atualizações apenas de código são identificadas com o incremento apenas do terceiro dígito da versão (p. ex. v4.1.1, v4.1.2) e não envolve execução de scripts de banco. ## Procedimentos para Instalação -1. Antes, fazer backup dos bancos de dados do SEI e do SIP. -2. Carregar no servidor os arquivos do módulo localizados na pasta "/sei/web/modulos/correios" e os scripts de instalação/atualização "/sip/scripts/sip_atualizar_versao_modulo_correios.php" e "/sei/scripts/sei_atualizar_versao_modulo_correios.php". +1. Fazer backup dos bancos de dados do SEI e do SIP. +2. Carregar no servidor os arquivos do módulo nas pastas correspondentes nos servidores do SEI e do SIP. - **Caso se trate de atualização de versão anterior do Módulo**, antes de copiar os códigos-fontes para a pasta "/sei/web/modulos/correios", é necessário excluir os arquivos anteriores pré existentes na mencionada pasta, para não manter arquivos de códigos que foram renomeados ou descontinuados. 3. Editar o arquivo "/sei/config/ConfiguracaoSEI.php", tomando o cuidado de usar editor que não altere o charset do arquivo, para adicionar a referência à classe de integração do módulo e seu caminho relativo dentro da pasta "/sei/web/modulos" na array 'Modulos' da chave 'SEI': @@ -35,9 +37,9 @@ 9. Após a execução com sucesso, com um usuário com permissão de Administrador no SEI, seguir os passos dispostos no tópico "Orientações Negociais" mais abaixo. 10. Para o funcionamento correto do Módulo SEI Correios é necessária a instalação da biblioteca PHP "ImageMagick" e "ImageMagick-devel" em cada nó de aplicação do SEI, conforme comandos abaixo: - Execute a linha de comando "yum install -y ImageMagick ImageMagick-devel" - Execute a linha de comando "pecl install imagick" - Modifique o arquvivo "/etc/php.ini", incluindo a linha "extension=imagick.so" no final da seção "Dynamic Extensions" + Execute a linha de comando "yum install -y ImageMagick ImageMagick-devel" + Execute a linha de comando "pecl install imagick" + Modifique o arquvivo "/etc/php.ini", incluindo a linha "extension=imagick.so" no final da seção "Dynamic Extensions" ## Orientações Negociais @@ -101,4 +103,4 @@ - Iniciar Processo > Ofício > Solicitar Expedição pelos Correios: - Solicitar Expedição pelos Correios: - Após iniciar um Processo e vincular um documento do tipo "Ofício" é realizar a assinatura do documento será exibido o icone "Solicitar Expedição pelos Correios". - - Na tela de "Solicitar Expedição pelos Correios" é possível alterar os dados dos "Documentos Expedidos" e preencher o "Formato de Expedição dos Documentos" é incluir uma "Observação". \ No newline at end of file + - Na tela de "Solicitar Expedição pelos Correios" é possível alterar os dados dos "Documentos Expedidos" e preencher o "Formato de Expedição dos Documentos" é incluir uma "Observação". diff --git a/sei/web/modulos/correios/int/MdCorContatoINT.php b/sei/web/modulos/correios/int/MdCorContatoINT.php index 3ac8290..f987fe7 100644 --- a/sei/web/modulos/correios/int/MdCorContatoINT.php +++ b/sei/web/modulos/correios/int/MdCorContatoINT.php @@ -65,6 +65,47 @@ public static function listarContato($params) return $xml; } + public static function _isDadoAlterado( $idContato , $idMdCorExpedSolic ){ + try { + $arrAtributos = ['Nome','Endereco','Cep','Complemento','Bairro','StaNatureza','NomeCidade','SiglaUf','StaGenero','IdTipoContato','ExpressaoTratamentoCargo','ExpressaoCargo','NomeTipoContato']; + $objContato = self::getInfoContato($idContato); + $objMdCorContato = self::getinfoMdCorContato($idContato, $idMdCorExpedSolic); + + $isTeveRegistroAlterado = false; + foreach ( $arrAtributos as $atributo ) { + if ( $objContato->get($atributo) != $objMdCorContato->get($atributo) ) { + $isTeveRegistroAlterado = true; + $objMdCorContato->set($atributo,$objContato->get($atributo)); + } + } + + return ['objMdCorContato' => $objMdCorContato , 'isRegAlterado' => $isTeveRegistroAlterado]; + } catch (Exception $e) { + throw new InfraException('Não foi possível comparar dados modificados do Contato no Módulo dos Correios',$e); + } + } + + private static function getInfoContato( $idContato ){ + $objContatoDTO = new ContatoDTO(); + $objContatoRN = new ContatoRN(); + + $objContatoDTO->setNumIdContato($idContato); + $objContatoDTO->retTodos(true); + + return $objContatoRN->consultarRN0324($objContatoDTO); + } + + private static function getinfoMdCorContato( $idContato , $idMdCorExpedSolic ){ + $objMdCorContatoDTO = new MdCorContatoDTO(); + $objMdCorContatoRN = new MdCorContatoRN(); + + $objMdCorContatoDTO->setNumIdContato($idContato); + $objMdCorContatoDTO->setNumIdMdCorExpedicaoSolicitada($idMdCorExpedSolic); + $objMdCorContatoDTO->retTodos(true); + + return $objMdCorContatoRN->consultar($objMdCorContatoDTO); + } + } ?> \ No newline at end of file diff --git a/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaINT.php b/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaINT.php index c114d1c..306a70a 100644 --- a/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaINT.php +++ b/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaINT.php @@ -589,7 +589,6 @@ public static function validarDestinatarioIntimacaoEletronica($contatoDTO, $bolE } } }else{ - $arrIdContato = [$contatoDTO->getNumIdContatoAssociado()]; $arrObjMdPetVinculoDTO = self::validarPetVinculoUsuarioExterno($arrIdContato); @@ -647,7 +646,6 @@ public static function validarPetVinculoUsuarioExterno( $arrIdContato ){ $objMdPetVinculoDTO = new MdPetVinculoDTO(); $objMdPetVinculoDTO->retNumIdContato(); $objMdPetVinculoDTO->setNumIdContato($arrIdContato, InfraDTO::$OPER_IN); - $objMdPetVinculoDTO->setStrSinAtivoRepresentante('S'); $objMdPetVinculoDTO->setStrStaEstado(MdPetVincRepresentantRN::$RP_ATIVO); $objMdPetVinculoRN = new MdPetVinculoRN(); diff --git a/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaProtocoloAnexoINT.php b/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaProtocoloAnexoINT.php index 2d54a85..641674e 100644 --- a/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaProtocoloAnexoINT.php +++ b/sei/web/modulos/correios/int/MdCorExpedicaoSolicitadaProtocoloAnexoINT.php @@ -65,20 +65,30 @@ public static function retornaTipoMidiaExiste($idProtocolo, $bolRetornarXML = tr $arrObjMdCorExtensaoMidiaDTO = $mdCorExtensaoMidiaRN->listar($objMdCorExtensaoMidiaDTO); $anexoRN = new AnexoRN(); - $objAnexoDTO = new AnexoDTO(); - $objAnexoDTO->setDblIdProtocolo($idProtocolo); - $objAnexoDTO->retStrNome(); - $objAnexoDTO = $anexoRN->consultarRN0736($objAnexoDTO); + $listaAnexoDTO = new AnexoDTO(); + $listaAnexoDTO->setDblIdProtocolo($idProtocolo); + $listaAnexoDTO->retNumIdAnexo(); + $listaAnexoDTO = $anexoRN->listarRN0218($listaAnexoDTO); $existeExtensao = 'false'; - if($objAnexoDTO) { - $arrDocumento = explode('.', $objAnexoDTO->getStrNome()); - foreach ($arrObjMdCorExtensaoMidiaDTO as $objMdCorExtensaoMidiaDTO) { - if ($objMdCorExtensaoMidiaDTO->getStrNomeExtensao() == end($arrDocumento)) - $existeExtensao = 'true'; - } + foreach($listaAnexoDTO as $anexoDTO) { + $anexoRN = new AnexoRN(); + $objAnexoDTO = new AnexoDTO(); + $objAnexoDTO->setNumIdAnexo($anexoDTO->getNumIdAnexo()); + $objAnexoDTO->retStrNome(); + $objAnexoDTO = $anexoRN->consultarRN0736($objAnexoDTO); + + if($objAnexoDTO) { + $arrDocumento = explode('.', $objAnexoDTO->getStrNome()); + foreach ($arrObjMdCorExtensaoMidiaDTO as $objMdCorExtensaoMidiaDTO) { + if ($objMdCorExtensaoMidiaDTO->getStrNomeExtensao() == end($arrDocumento)) + $existeExtensao = 'true'; + + } + } } + $strRetorno = $bolRetornarXML ? '' . $existeExtensao . '' : $existeExtensao; return $strRetorno; } diff --git a/sei/web/modulos/correios/md_cor_expedicao_solicitada_cadastro.php b/sei/web/modulos/correios/md_cor_expedicao_solicitada_cadastro.php index 52e1aa9..e9a2925 100644 --- a/sei/web/modulos/correios/md_cor_expedicao_solicitada_cadastro.php +++ b/sei/web/modulos/correios/md_cor_expedicao_solicitada_cadastro.php @@ -27,6 +27,7 @@ $chkNecessitaRecebimentoAR = "checked"; $chkPossuiAnexo = ""; $id_doc = $_GET['id_doc']; + $id_destinatario_aux = null; switch ($_GET['acao']) { @@ -219,6 +220,9 @@ $dto->setDistinct(true); $dto = $rn->consultar($dto); + $idMdCorExpedSolic = $dto->getNumIdMdCorExpedicaoSolicitada(); + $idMdCorContatoDest = $dto->getNumIdContatoDestinatario(); + if ($dto->getNumIdUnidade() == SessaoSEI::getInstance()->getNumIdUnidadeAtual()) { $chkAviso = $_POST['chkAvisoRecebimento']; @@ -374,8 +378,11 @@ $objSeiRN = new SeiRN(); $objSeiRN->lancarAndamento($objEntradaLancarAndamentoAPI); - if ($_POST['hdnContatoIdentificador'] != "") { + $arrObjMdCorContato = MdCorContatoINT::_isDadoAlterado( $idMdCorContatoDest , $idMdCorExpedSolic ); + + if ( $_POST['hdnContatoIdentificador'] == "" && $arrObjMdCorContato['isRegAlterado'] ) $_POST['hdnContatoIdentificador'] = $idMdCorContatoDest; + if ( $_POST['hdnContatoIdentificador'] != "" ) { $contatoRN = new ContatoRN(); $objContatoDTO = new ContatoDTO(); $objContatoDTO->retTodos(true); @@ -811,6 +818,7 @@ //obtendo informações do destinatario + /* $objMdCorContatoDTO = new MdCorContatoDTO(); $objMdCorContatoDTO->retTodos(); @@ -820,8 +828,17 @@ $objMdCorContatoRN = new MdCorContatoRN(); $arrObjMdCorContatoDTO = $objMdCorContatoRN->consultar($objMdCorContatoDTO); + */ + + $arrObjMdCorContato = MdCorContatoINT::_isDadoAlterado( $dto->getNumIdContatoDestinatario() , $dto->getNumIdMdCorExpedicaoSolicitada() ); + + $arrObjMdCorContatoDTO = $arrObjMdCorContato['objMdCorContato']; $id_destinatario = $arrObjMdCorContatoDTO->getNumIdContato(); + + //criado para ser usado na modal que atualiza dados do contato ou se houve mudança no contato pelo CORE do SEI + $id_destinatario_aux = $arrObjMdCorContato['isRegAlterado'] ? $id_destinatario : null; + $nome_destinatario = $arrObjMdCorContatoDTO->getStrNome(); $cargo_destinatario = $arrObjMdCorContatoDTO->getStrExpressaoCargo(); @@ -1042,7 +1059,7 @@ class="infraLabelOpcional">     + name="hdnContatoIdentificador" value=""/>