From a88d67fd325a954fa3c7b7b0268f4188f9d153c6 Mon Sep 17 00:00:00 2001 From: eduardo.praxedes Date: Mon, 12 Dec 2016 16:53:30 -0200 Subject: [PATCH] Correção no e-mail e adaptação nas chamadas do serviço de consultar trâmite, presentes no cancelamento do processo --- dto/TramiteDTO.php | 2 ++ rn/ExpedirProcedimentoRN.php | 56 +++++++++++++++++++++++++++++++++++++++++++++++++------- rn/ProcessoEletronicoRN.php | 89 ++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------- 3 files changed, 97 insertions(+), 50 deletions(-) diff --git a/dto/TramiteDTO.php b/dto/TramiteDTO.php index 1fc997d..d3229de 100644 --- a/dto/TramiteDTO.php +++ b/dto/TramiteDTO.php @@ -18,11 +18,13 @@ class TramiteDTO extends InfraDTO { $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUsuario', 'nome', 'usuario'); $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUnidade', 'nome', 'unidade'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_NUM, 'IdProcedimento', 'id_procedimento', 'md_pen_processo_eletronico'); $this->configurarPK('NumeroRegistro', InfraDTO::$TIPO_PK_INFORMADO); $this->configurarPK('IdTramite', InfraDTO::$TIPO_PK_INFORMADO); $this->configurarFK('NumeroRegistro', 'md_pen_tramite', 'numero_registro', InfraDTO::$TIPO_FK_OBRIGATORIA); + $this->configurarFK('NumeroRegistro', 'md_pen_processo_eletronico pe', 'pe.numero_registro'); $this->configurarFK('IdUsuario', 'usuario u', 'u.id_usuario'); $this->configurarFK('IdUnidade', 'unidade u', 'u.id_unidade'); } diff --git a/rn/ExpedirProcedimentoRN.php b/rn/ExpedirProcedimentoRN.php index 56027da..ca9fdee 100644 --- a/rn/ExpedirProcedimentoRN.php +++ b/rn/ExpedirProcedimentoRN.php @@ -1016,7 +1016,7 @@ class ExpedirProcedimentoRN extends InfraRN { $idSerieEmail = $objInfraParametro->getValor('ID_SERIE_EMAIL'); $docEmailEnviado = $objDocumentoDTO->getNumIdSerie() == $idSerieEmail && $objDocumentoDTO->getStrStaDocumento() == DocumentoRN::$TD_FORMULARIO_AUTOMATICO ? true : false; - if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_GERADO && !$docEmailEnviado) { + if($objDocumentoDTO->getStrStaDocumento() == DocumentoRN::$TD_EDITOR_INTERNO) { $objEditorDTO = new EditorDTO(); $objEditorDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); @@ -1036,8 +1036,8 @@ class ExpedirProcedimentoRN extends InfraRN { $arrInformacaoArquivo['MIME_TYPE'] = 'text/html'; $arrInformacaoArquivo['ID_ANEXO'] = null; - } else if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO || $docEmailEnviado) { - + } else if($objDocumentoDTO->getStrStaProtocoloProtocolo() == ProtocoloRN::$TP_DOCUMENTO_RECEBIDO) { + $objAnexoDTO = $this->consultarAnexo($objDocumentoDTO->getDblIdDocumento()); if(!isset($objAnexoDTO)){ @@ -1086,8 +1086,23 @@ class ExpedirProcedimentoRN extends InfraRN { $arrInformacaoArquivo['ID_ANEXO'] = $objAnexoDTO->getNumIdAnexo(); $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'] = $strDadosComplementaresDoTipoDeArquivo; - } else { - throw new InfraException('Procedência do documento inválida.'); + } + else { + + $objDocumentoDTO2 = new DocumentoDTO(); + $objDocumentoDTO2->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); + $objDocumentoDTO2->setObjInfraSessao(SessaoSEI::getInstance()); + $objDocumentoDTO2->setStrLinkDownload('controlador.php?acao=documento_download_anexo'); + + $objDocumentoRN = new DocumentoRN(); + $strResultado = $objDocumentoRN->consultarHtmlFormulario($objDocumentoDTO2); + + $arrInformacaoArquivo['NOME'] = $strProtocoloDocumentoFormatado . ".html"; + $arrInformacaoArquivo['CONTEUDO'] = $strResultado; + $arrInformacaoArquivo['TAMANHO'] = strlen($strResultado); + $arrInformacaoArquivo['MIME_TYPE'] = 'text/html'; + $arrInformacaoArquivo['ID_ANEXO'] = null; + } return $arrInformacaoArquivo; @@ -2043,11 +2058,38 @@ class ExpedirProcedimentoRN extends InfraRN { protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocolo) { + //Obtem o id_rh que representa a unidade no barramento + $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); + $numIdRespositorio = $objInfraParametro->getValor('PEN_ID_REPOSITORIO_ORIGEM'); + + //Obtem os dados da unidade + $objPenUnidadeDTO = new PenUnidadeDTO(); + $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objPenUnidadeDTO->retNumIdUnidadeRH(); + + $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); + $objPenUnidadeDTO = $objGenericoBD->consultar($objPenUnidadeDTO); + + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdProcedimento($objDtoProtocolo->retDblIdProtocolo()); + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteDTO->setNumMaxRegistrosRetorno(1); + $objTramiteDTO->retNumIdTramite(); + + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); + + if(!$arrObjTramiteDTO){ + return false; + } + + $objTramiteDTO = $arrObjTramiteDTO[0]; + //Armazena o id do protocolo $dblIdProcedimento = $objDtoProtocolo->getDblIdProtocolo(); - $tramites = $this->objProcessoEletronicoRN->consultarTramitesProtocolo($objDtoProtocolo->getStrProtocoloFormatado()); - $tramite = $tramites ? array_pop($tramites) : null; + $tramites = $this->objProcessoEletronicoRN->consultarTramites($objTramiteDTO->getNumIdTramite(), null, $objPenUnidadeDTO->getNumIdUnidadeRH(), null, null, $numIdRespositorio); + $tramite = $tramites ? $tramites[0] : null; if (!$tramite) { throw new InfraException('Trâmite não encontrado para esse processo. '); diff --git a/rn/ProcessoEletronicoRN.php b/rn/ProcessoEletronicoRN.php index 774cfb6..e9a5eab 100644 --- a/rn/ProcessoEletronicoRN.php +++ b/rn/ProcessoEletronicoRN.php @@ -861,46 +861,7 @@ class ProcessoEletronicoRN extends InfraRN { } } - /** - * Consulta os tramites recusados - * - * @return array - */ - public function consultarTramitesRecusados($parNumIdRespositorio, $parNumIdEstrutura) { - try { - - $parametro = (object)array( - 'filtroDeConsultaDeTramites' => (object)array( - 'situacaoAtual' => 9, - 'remetente' => (object)array( - 'identificacaoDoRepositorioDeEstruturas' => $parNumIdRespositorio, - 'numeroDeIdentificacaoDaEstrutura' => $parNumIdEstrutura - ) - ) - ); - - $objTramitesEncontrados = $this->getObjPenWs()->consultarTramites($parametro); - - $arrObjTramite = array(); - - if (isset($objTramitesEncontrados->tramitesEncontrados)) { - - $arrObjTramite = $objTramitesEncontrados->tramitesEncontrados->tramite; - - if(!is_array($arrObjTramite)) { - $arrObjTramite = array($objTramitesEncontrados->tramitesEncontrados->tramite); - } - } - - return $arrObjTramite; - } - catch (\SoapFault $fault) { - throw new InfraException(InfraString::formatarJavaScript($this->tratarFalhaWebService($fault)), $fault); - } - catch (\Exception $e) { - throw new InfraException("Error Processing Request", $e); - } - } + public function consultarTramites($parNumIdTramite = null, $parNumeroRegistro = null, $parNumeroUnidadeRemetente = null, $parNumeroUnidadeDestino = null, $parProtocolo = null, $parNumeroRepositorioEstruturas = null) { @@ -916,11 +877,13 @@ class ProcessoEletronicoRN extends InfraRN { } if(!is_null($parNumeroUnidadeRemetente) && !is_null($parNumeroRepositorioEstruturas)){ + $parametro->filtroDeConsultaDeTramites->remetente = new stdClass(); $parametro->filtroDeConsultaDeTramites->remetente->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; $parametro->filtroDeConsultaDeTramites->remetente->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeRemetente; } if(!is_null($parNumeroUnidadeDestino) && !is_null($parNumeroRepositorioEstruturas)){ + $parametro->filtroDeConsultaDeTramites->destinatario = new stdClass(); $parametro->filtroDeConsultaDeTramites->destinatario->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; $parametro->filtroDeConsultaDeTramites->destinatario->numeroDeIdentificacaoDaEstrutura = $parNumeroUnidadeDestino; } @@ -1027,9 +990,24 @@ class ProcessoEletronicoRN extends InfraRN { throw new InfraException(utf8_encode('O processo não esta com o estado com "Em Processamento" ou "Bloqueado"')); } + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->retDblIdProtocolo()); + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteDTO->setNumMaxRegistrosRetorno(1); + $objTramiteDTO->retNumIdTramite(); + + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); + + if(!$arrObjTramiteDTO){ + throw new InfraException('Trâmite não encontrado'); + } + + $objTramiteDTO = $arrObjTramiteDTO[0]; + $objFiltro = new stdClass(); $objFiltro->filtroDeConsultaDeTramites = new stdClass(); - $objFiltro->filtroDeConsultaDeTramites->protocolo = $objProtocoloDTO->getStrProtocoloFormatado(); + $objFiltro->filtroDeConsultaDeTramites->IDT = $objTramiteDTO->getNumIdTramite(); $objResultado = $this->getObjPenWs()->consultarTramites($objFiltro); @@ -1392,9 +1370,11 @@ class ProcessoEletronicoRN extends InfraRN { public function isDisponivelCancelarTramite($strProtocolo = ''){ + //Obtem o id_rh que representa a unidade no barramento $objInfraParametro = new InfraParametro($this->inicializarObjInfraIBanco()); $numIdRespositorio = $objInfraParametro->getValor('PEN_ID_REPOSITORIO_ORIGEM'); + //Obtem os dados da unidade $objPenUnidadeDTO = new PenUnidadeDTO(); $objPenUnidadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objPenUnidadeDTO->retNumIdUnidadeRH(); @@ -1402,15 +1382,38 @@ class ProcessoEletronicoRN extends InfraRN { $objGenericoBD = new GenericoBD($this->inicializarObjInfraIBanco()); $objPenUnidadeDTO = $objGenericoBD->consultar($objPenUnidadeDTO); + //Obtem os dados do último trâmite desse processo no barramento + $objProtocoloDTO = new ProtocoloDTO(); + $objProtocoloDTO->setStrProtocoloFormatado($strProtocolo); + $objProtocoloDTO->retDblIdProtocolo(); + + $objProtocoloRN = new ProtocoloRN(); + $objProtocoloDTO = $objProtocoloRN->consultarRN0186($objProtocoloDTO); + + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdProcedimento($objProtocoloDTO->retDblIdProtocolo()); + $objTramiteDTO->setOrd('Registro', InfraDTO::$TIPO_ORDENACAO_DESC); + $objTramiteDTO->setNumMaxRegistrosRetorno(1); + $objTramiteDTO->retNumIdTramite(); + + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); + $arrObjTramiteDTO = $objTramiteBD->listar($objTramiteDTO); + + if(!$arrObjTramiteDTO){ + return false; + } + + $objTramiteDTO = $arrObjTramiteDTO[0]; + try { $parametro = (object)array( 'filtroDeConsultaDeTramites' => (object)array( + 'IDT' => $objTramiteDTO->getNumIdTramite(), 'remetente' => (object)array( 'identificacaoDoRepositorioDeEstruturas' => $numIdRespositorio, 'numeroDeIdentificacaoDaEstrutura' => $objPenUnidadeDTO->getNumIdUnidadeRH() ), - 'protocolo' => $strProtocolo ) ); @@ -1422,7 +1425,7 @@ class ProcessoEletronicoRN extends InfraRN { $arrObjMetaTramite = !is_array($objMeta->tramitesEncontrados->tramite) ? array($objMeta->tramitesEncontrados->tramite) : $objMeta->tramitesEncontrados->tramite; - $objMetaTramite = array_pop($arrObjMetaTramite); + $objMetaTramite = $arrObjMetaTramite[0]; switch($objMetaTramite->situacaoAtual){ -- libgit2 0.21.2