diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 6b58321d4..5aa848f3a 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -1078,7 +1078,7 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $numIdTipoProcedimento = $this->objPenParametroRN->getParametro('PEN_TIPO_PROCESSO_EXTERNO'); $remetente = $objMetadadosProcedimento->metadados->remetente; $destinatario = $objMetadadosProcedimento->metadados->destinatario; - $this->atribuirTipoProcedimento( + $alterouTipoProcesso = $this->atribuirTipoProcedimento( $objProcedimentoDTO, $remetente, $destinatario, @@ -1113,6 +1113,10 @@ private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo) $objInfraParametro->setValor('SEI_FEDERACAO_NUMERO_PROCESSO', 0); $objProcedimentoDTOGerado = $objProcedimentoRN->gerarRN0156($objProcedimentoDTO); + if ($alterouTipoProcesso) { + $this->atribuirTipoProcedimentoRelacinado($objProcedimentoDTO->getNumIdTipoProcedimento(), $objProcedimentoDTOGerado->getDblIdProcedimento(), $strProcessoNegocio); + } + $objProcedimentoDTO->setDblIdProcedimento($objProcedimentoDTOGerado->getDblIdProcedimento()); $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($objProcedimentoDTO->getObjProtocoloDTO()->getStrProtocoloFormatado()); @@ -1462,11 +1466,13 @@ private function obterTipoProcessoPeloNomeOrgaoUnidade($strNomeTipoProcesso, $nu * @param \stdClass $destinatario * @param string|int $numIdTipoProcedimento * @param string|int $strProcessoNegocio - * @return ProcedimentoDTO + * @return bool * @throws InfraException */ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $remetente, $destinatario, $numIdTipoProcedimento, $strProcessoNegocio) { + + $dblAlterouTipoProcesso = false; if(!empty(trim($strProcessoNegocio))){ // Verifica se existe relacionamento entre orgãos $objTipoProcedimentoDTO = $this->obterMapeamentoTipoProcesso($remetente, $destinatario, $strProcessoNegocio); @@ -1478,11 +1484,14 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $ SessaoSEI::getInstance()->getNumIdOrgaoUnidadeAtual(), SessaoSEI::getInstance()->getNumIdUnidadeAtual() ); + } else { + $dblAlterouTipoProcesso = true; } } if(is_null($objTipoProcedimentoDTO)){ // Verifica tipo de processo padrão cadastrado + $dblAlterouTipoProcesso = true; $objTipoProcedimentoDTO = $this->obterTipoProcessoPadrao($numIdTipoProcedimento); } @@ -1511,6 +1520,8 @@ private function atribuirTipoProcedimento(ProcedimentoDTO $objProcedimentoDTO, $ } $objProcedimentoDTO->getObjProtocoloDTO()->setArrObjRelProtocoloAssuntoDTO($arrObjAssuntoDTO); + + return $dblAlterouTipoProcesso; } /** @@ -2892,4 +2903,38 @@ private static function validaTamanhoMaximoAnexo($nomeArquivo, $nrTamanhMegaByte } } } + + + private function atribuirTipoProcedimentoRelacinado($numIdTipoProcedimento, $numIdProcedimento, $strProcessoNegocio) { + + $objAtributoAndamentoDTOAnterior = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTOAnterior->setStrNome('TIPO_PROCESSO_ANTERIOR'); + $objAtributoAndamentoDTOAnterior->setStrValor($strProcessoNegocio); + $objAtributoAndamentoDTOAnterior->setStrIdOrigem($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTOAnterior; + + $objTipoProcedimentoRN = new TipoProcedimentoRN(); + $objTipoProcedimentoDTO = new TipoProcedimentoDTO(); + $objTipoProcedimentoDTO->setBolExclusaoLogica(false); + $objTipoProcedimentoDTO->retNumIdTipoProcedimento(); + $objTipoProcedimentoDTO->retStrNome(); + $objTipoProcedimentoDTO->setNumIdTipoProcedimento($numIdTipoProcedimento); + $objTipoProcedimentoDTO = $objTipoProcedimentoRN->consultarRN0267($objTipoProcedimentoDTO); + + $objAtributoAndamentoDTOAtual = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTOAtual->setStrNome('TIPO_PROCESSO_ATUAL'); + $objAtributoAndamentoDTOAtual->setStrValor($objTipoProcedimentoDTO->getStrNome()); + $objAtributoAndamentoDTOAtual->setStrIdOrigem($objTipoProcedimentoDTO->getNumIdTipoProcedimento()); + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTOAtual; + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($numIdProcedimento); + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ALTERACAO_TIPO_PROCESSO); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); + + // Gerar a atividade + $objAtividadeRN = new AtividadeRN(); + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); + } }