From b8facc839b8dd4144dd4396f65f3d16f88fb8dab Mon Sep 17 00:00:00 2001 From: higocavalcante Date: Fri, 27 Oct 2023 10:41:15 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20Corre=C3=A7=C3=A3o=20de=20recusa=20por?= =?UTF-8?q?=20motivo:=20Documento=20n=C3=A3o=20foi=20recebido=20pela=20uni?= =?UTF-8?q?dade=20atual=20Close=20#379?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/rn/ReceberProcedimentoRN.php | 59 +++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 20 deletions(-) diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 299076d85..da91e4b04 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -1863,28 +1863,47 @@ private function clonarComponentesJaExistentesNoProcesso($objDocumentoDTO, $dblI * @param array $parArrIdDocumentosCancelamento Lista de documentos que sero cancelados * @return void */ - private function cancelarDocumentosProcesso($parDblIdProcedimento, $parArrIdDocumentosCancelamento) - { - foreach($parArrIdDocumentosCancelamento as $numIdDocumento){ - $objProtocoloDTO = new ProtocoloDTO(); - $objProtocoloDTO->setDblIdProtocolo($numIdDocumento); - $objProtocoloDTO->retStrStaEstado(); - $objProtocoloDTO = $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); + private function cancelarDocumentosProcesso($parDblIdProcedimento, $parArrIdDocumentosCancelamento){ - // Verifica se documento está atualmente associado ao processo e não foi movido para outro - $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO(); - $objRelProtocoloProtocoloDTO->retNumSequencia(); - $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO); - $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($parDblIdProcedimento); - $objRelProtocoloProtocoloDTO->setDblIdProtocolo2($numIdDocumento); - $bolDocumentoMovidoProcesso = $this->objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO) > 0; - - if(!$bolDocumentoMovidoProcesso && ($objProtocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO)){ - $objEntradaCancelarDocumentoAPI = new EntradaCancelarDocumentoAPI(); - $objEntradaCancelarDocumentoAPI->setIdDocumento($numIdDocumento); - $objEntradaCancelarDocumentoAPI->setMotivo('Documento retirado do processo pelo remetente'); - $this->objSeiRN->cancelarDocumento($objEntradaCancelarDocumentoAPI); + try{ + $numIdUnidadeAtual = SessaoSEI::getInstance()->getNumIdUnidadeAtual(); + + foreach($parArrIdDocumentosCancelamento as $numIdDocumento){ + $objProtocoloDTO = new ProtocoloDTO(); + $objProtocoloDTO->setDblIdProtocolo($numIdDocumento); + $objProtocoloDTO->retStrStaEstado(); + $objProtocoloDTO = $this->objProtocoloRN->consultarRN0186($objProtocoloDTO); + + // Verifica se documento está atualmente associado ao processo e não foi movido para outro + $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO(); + $objRelProtocoloProtocoloDTO->retNumSequencia(); + $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_DOCUMENTO_MOVIDO); + $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($parDblIdProcedimento); + $objRelProtocoloProtocoloDTO->setDblIdProtocolo2($numIdDocumento); + $bolDocumentoMovidoProcesso = $this->objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO) > 0; + + if(!$bolDocumentoMovidoProcesso && ($objProtocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO)){ + $objEntradaCancelarDocumentoAPI = new EntradaCancelarDocumentoAPI(); + $objEntradaCancelarDocumentoAPI->setIdDocumento($numIdDocumento); + $objEntradaCancelarDocumentoAPI->setMotivo('Documento retirado do processo pelo remetente'); + + $objDocumentoDTO = new DocumentoDTO(); + $objDocumentoDTO->retNumIdUnidadeGeradoraProtocolo(); + $objDocumentoDTO->setDblIdDocumento($numIdDocumento); + $objDocumentoRN = new DocumentoRN(); + $objDocumentoDTO = $objDocumentoRN->consultarRN0005($objDocumentoDTO); + SessaoSEI::getInstance()->setNumIdUnidadeAtual($objDocumentoDTO->getNumIdUnidadeGeradoraProtocolo()); + + $this->objSeiRN->cancelarDocumento($objEntradaCancelarDocumentoAPI); + } } + } catch(Exception $e) { + $mensagemErro = InfraException::inspecionar($e); + $this->gravarLogDebug($mensagemErro); + LogSEI::getInstance()->gravar($mensagemErro); + throw $e; + }finally{ + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidadeAtual); } }