From 98a213521de656603d374dd5977edb09881b210d Mon Sep 17 00:00:00 2001 From: Thiago Farias Date: Tue, 19 Dec 2017 17:53:07 -0200 Subject: [PATCH] Sprint 5 --- pen_procedimento_expedir.php | 6 +++++- rn/ExpedirProcedimentoRN.php | 8 +++----- rn/ProcessoEletronicoRN.php | 11 +++++++---- rn/ReceberProcedimentoRN.php | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------- 4 files changed, 77 insertions(+), 19 deletions(-) diff --git a/pen_procedimento_expedir.php b/pen_procedimento_expedir.php index c48326f..9f034d9 100644 --- a/pen_procedimento_expedir.php +++ b/pen_procedimento_expedir.php @@ -99,7 +99,11 @@ try { $objUnidadeRN = new UnidadeRN(); $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); - + + if (!$objUnidadeDTO) { + throw new InfraException("A unidade atual não foi mapeada."); + } + $numIdUnidadeOrigem = $objUnidadeDTO->getNumIdUnidadeRH(); $numIdProcedimento = $_POST['hdnIdProcedimento']; $strProtocoloProcedimentoFormatado = $_POST['txtProtocoloExibir']; diff --git a/rn/ExpedirProcedimentoRN.php b/rn/ExpedirProcedimentoRN.php index 50a6538..8fd785a 100644 --- a/rn/ExpedirProcedimentoRN.php +++ b/rn/ExpedirProcedimentoRN.php @@ -1651,7 +1651,6 @@ class ExpedirProcedimentoRN extends InfraRN { $objPenRelHipoteseLegalEnvioRN = new PenRelHipoteseLegalEnvioRN(); foreach($arrDocumentoDTO as $objDocumentoDTO) { - $objDocMapDTO->unSetTodos(); $objDocMapDTO->setNumIdSerie($objDocumentoDTO->getNumIdSerie()); @@ -1675,7 +1674,7 @@ class ExpedirProcedimentoRN extends InfraRN { $objHipoteseLegalRN = new HipoteseLegalRN(); $dados = $objHipoteseLegalRN->consultar($objHipoteseLegalDTO); - $objInfraException->adicionarValidacao('Hipótese Legal "'.$dados->getStrNome().'" do Documento Não foi Mapeada', $strAtributoValidacao); + $objInfraException->adicionarValidacao('Hipótese Legal "'.$dados->getStrNome().'" do Documento '.$objDocumentoDTO->getStrNomeSerie(). ' ' . $objDocumentoDTO->getStrProtocoloDocumentoFormatado() .' Não foi Mapeada', $strAtributoValidacao); } } } @@ -1723,7 +1722,6 @@ class ExpedirProcedimentoRN extends InfraRN { if (empty($objProcedimentoDTO->getNumIdHipoteseLegalProtocolo())) { $objInfraException->adicionarValidacao('Não é possível expedir processo de nível restrito sem a hipótese legal mapeada.', $strAtributoValidacao); } - } } @@ -2309,10 +2307,10 @@ class ExpedirProcedimentoRN extends InfraRN { throw new InfraException("O sistema destinatário já recebeu esse processo, portanto não é possivel realizar o cancelamento"); break; case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO: - throw new InfraException("O processo já se encontra cancelado"); + throw new InfraException("O trâmite externo para esse processo já se encontra cancelado."); break; case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO: - throw new InfraException("O processo se encontra recusado"); + throw new InfraException("O trâmite externo para esse processo se encontra recusado."); break; } diff --git a/rn/ProcessoEletronicoRN.php b/rn/ProcessoEletronicoRN.php index 03830a0..14b9350 100644 --- a/rn/ProcessoEletronicoRN.php +++ b/rn/ProcessoEletronicoRN.php @@ -402,10 +402,13 @@ class ProcessoEletronicoRN extends InfraRN { //error_log("PARAMETROS:" . print_r($parametros, true)); return $this->getObjPenWs()->enviarProcesso($parametros); } catch (\SoapFault $fault) { - //error_log("REQUEST:" . $this->getObjPenWs()->__getLastRequest()); - //error_log("ERROR:" . print_r($fault, true)); - $mensagem = $this->tratarFalhaWebService($fault); - + + + if (!empty($fault->detail->interoperabilidadeException->codigoErro) && $fault->detail->interoperabilidadeException->codigoErro == '0005') { + $mensagem = 'O código mapeado para a unidade ' . utf8_decode($parametros->novoTramiteDeProcesso->processo->documento[0]->produtor->unidade->nome) . ' está incorreto.'; + } else { + $mensagem = $this->tratarFalhaWebService($fault); + } //TODO: Remover formatação do javascript após resolução do BUG enviado para Mairon //relacionado ao a renderização de mensagens de erro na barra de progresso error_log($mensagem); diff --git a/rn/ReceberProcedimentoRN.php b/rn/ReceberProcedimentoRN.php index 724ce66..5da92c6 100644 --- a/rn/ReceberProcedimentoRN.php +++ b/rn/ReceberProcedimentoRN.php @@ -11,6 +11,8 @@ class ReceberProcedimentoRN extends InfraRN private $objInfraParametro; private $objProcedimentoAndamentoRN; private $documentosRetirados = array(); + + public $destinatarioReal = null; public function __construct() { @@ -90,9 +92,16 @@ class ReceberProcedimentoRN extends InfraRN if (!isset($parNumIdentificacaoTramite)) { throw new InfraException('Parâmetro $parNumIdentificacaoTramite não informado.'); } - + + //TODO: Urgente: Verificar o status do trâmite e verificar se ele já foi salvo na base de dados $objMetadadosProcedimento = $this->objProcessoEletronicoRN->solicitarMetadados($parNumIdentificacaoTramite); + + //!Substituir a unidade destinatária para a receptora (!1!) + if (isset($objMetadadosProcedimento->metadados->unidadeReceptora)) { + $this->destinatarioReal = $objMetadadosProcedimento->metadados->destinatario->numeroDeIdentificacaoDaEstrutura; + $objMetadadosProcedimento->metadados->destinatario = $objMetadadosProcedimento->metadados->unidadeReceptora; + } if (isset($objMetadadosProcedimento)) { @@ -453,8 +462,6 @@ class ReceberProcedimentoRN extends InfraRN if(!isset($objMetadadosProcedimento)){ throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.'); } - - $objDestinatario = $objMetadadosProcedimento->metadados->destinatario; //TODO: Refatorar código para criar método de pesquisa do procedimento e reutilizá-la @@ -489,7 +496,6 @@ class ReceberProcedimentoRN extends InfraRN $numIdUnidade = $objAtividadeDTO->getNumIdUnidade(); } - $objSeiRN = new SeiRN(); $objAtividadeDTO = new AtividadeDTO(); @@ -528,7 +534,7 @@ class ReceberProcedimentoRN extends InfraRN $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI(); $objEntradaDesbloquearProcessoAPI->setIdProcedimento($parDblIdProcedimento); $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); - + //TODO: Obter código da unidade através de mapeamento entre SEI e Barramento $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario); @@ -612,9 +618,25 @@ class ReceberProcedimentoRN extends InfraRN $strDescricao .= $objProcesso->observacao; $objObservacaoDTO = new ObservacaoDTO(); - $objObservacaoDTO->setStrDescricao($strDescricao); - $objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO)); + + //!Criação da observação de aviso para qual é a real unidade emitida (!2!) + if ($this->destinatarioReal) { + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal); + $objUnidadeDTO->setStrSinAtivo('S'); + $objUnidadeDTO->retStrDescricao(); + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + $objObservacaoDTO->setStrDescricao($strDescricao . PHP_EOL .'Processo remetido para a unidade ' . $objUnidadeDTO->getStrDescricao()); + } else { + $objObservacaoDTO->setStrDescricao($strDescricao); + } + + //throw new InfraException(var_export($objObservacaoDTO, true)); + + $objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO)); + //Atribuição de dados do procedimento //TODO: Validar cada uma das informações de entrada do webservice $objProcedimentoDTO = new ProcedimentoDTO(); @@ -768,6 +790,7 @@ class ReceberProcedimentoRN extends InfraRN $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; } + $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); @@ -780,7 +803,37 @@ class ReceberProcedimentoRN extends InfraRN $objAtividadeRN = new AtividadeRN(); $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); - + + + //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!) + if ($this->destinatarioReal) { + $objUnidadeDTO = new PenUnidadeDTO(); + $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal); + $objUnidadeDTO->setStrSinAtivo('S'); + $objUnidadeDTO->retStrDescricao(); //descricao + $objUnidadeRN = new UnidadeRN(); + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); + + $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTO->setStrNome('DESCRICAO'); + $objAtributoAndamentoDTO->setStrValor('Processo remetido para a unidade ' . $objUnidadeDTO->getStrDescricao()); + $objAtributoAndamentoDTO->setStrIdOrigem($objNivel->numeroDeIdentificacaoDaEstrutura); + + $arrObjAtributoAndamentoDTO = array($objAtributoAndamentoDTO); + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ATUALIZACAO_ANDAMENTO); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); + $objAtividadeDTO->setDthConclusao(null); + $objAtividadeDTO->setNumIdUsuarioConclusao(null); + $objAtividadeDTO->setStrSinInicial('N'); + + $objAtividadeRN = new AtividadeRN(); + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); + } } @@ -879,7 +932,7 @@ class ReceberProcedimentoRN extends InfraRN } protected function atribuirDadosUnidade(ProcedimentoDTO $objProcedimentoDTO, $objDestinatario){ - + if(!isset($objDestinatario)){ throw new InfraException('Parâmetro $objDestinatario não informado.'); } -- libgit2 0.21.2