Commit 7d9fa19dd734705063ecc50d513ddf2268fbef12

Authored by Guilherme Andrade Del Cantoni
1 parent e31e693e

[Fixed #96] Impedir recusa de recebimento de processo caso este já esteja aberto no órgão

rn/ExpedirProcedimentoRN.php
@@ -624,16 +624,9 @@ class ExpedirProcedimentoRN extends InfraRN { @@ -624,16 +624,9 @@ class ExpedirProcedimentoRN extends InfraRN {
624 624
625 public function desbloquearProcessoExpedicao($numIdProcedimento) 625 public function desbloquearProcessoExpedicao($numIdProcedimento)
626 { 626 {
627 - //Intancia o objeto de desbloqueio da API do SEI  
628 - $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI();  
629 - $objEntradaDesbloquearProcessoAPI->setIdProcedimento($numIdProcedimento);  
630 -  
631 - //Solicita o Desbloqueio do Processo  
632 - $objSeiRN = new SeiRN();  
633 - $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); 627 + ProcessoEletronicoRN::desbloquearProcesso($numIdProcedimento);
634 } 628 }
635 629
636 -  
637 public function registrarAndamentoExpedicaoAbortada($dblIdProtocolo) 630 public function registrarAndamentoExpedicaoAbortada($dblIdProtocolo)
638 { 631 {
639 //Seta todos os atributos do histrico de aborto da expedio 632 //Seta todos os atributos do histrico de aborto da expedio
@@ -2209,7 +2202,7 @@ class ExpedirProcedimentoRN extends InfraRN { @@ -2209,7 +2202,7 @@ class ExpedirProcedimentoRN extends InfraRN {
2209 $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); 2202 $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco());
2210 $objDtoProtocolo = $objProtocoloBD->consultar($objDtoProtocolo); 2203 $objDtoProtocolo = $objProtocoloBD->consultar($objDtoProtocolo);
2211 2204
2212 - $this->cancelarTramiteInternoControlado($objDtoProtocolo); 2205 + $this->cancelarTramiteInterno($objDtoProtocolo);
2213 2206
2214 } 2207 }
2215 2208
@@ -2254,7 +2247,6 @@ class ExpedirProcedimentoRN extends InfraRN { @@ -2254,7 +2247,6 @@ class ExpedirProcedimentoRN extends InfraRN {
2254 //Verifica se o trâmite est com o status de iniciado 2247 //Verifica se o trâmite est com o status de iniciado
2255 if ($tramite->situacaoAtual == ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO) { 2248 if ($tramite->situacaoAtual == ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO) {
2256 $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT); 2249 $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT);
2257 -  
2258 return true; 2250 return true;
2259 } 2251 }
2260 2252
@@ -2293,11 +2285,7 @@ class ExpedirProcedimentoRN extends InfraRN { @@ -2293,11 +2285,7 @@ class ExpedirProcedimentoRN extends InfraRN {
2293 } 2285 }
2294 2286
2295 //Desbloqueia o processo 2287 //Desbloqueia o processo
2296 - $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI();  
2297 - $objEntradaDesbloquearProcessoAPI->setIdProcedimento($dblIdProcedimento);  
2298 -  
2299 - $objSeiRN = new SeiRN();  
2300 - $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); 2288 + ProcessoEletronicoRN::desbloquearProcesso($dblIdProcedimento);
2301 2289
2302 $objDTOFiltro = new TramiteDTO(); 2290 $objDTOFiltro = new TramiteDTO();
2303 $objDTOFiltro->setNumIdTramite($tramite->IDT); 2291 $objDTOFiltro->setNumIdTramite($tramite->IDT);
rn/ProcessarPendenciasRN.php
@@ -112,9 +112,13 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa @@ -112,9 +112,13 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa
112 catch(Exception $e){ 112 catch(Exception $e){
113 $this->gravarLogDebug(InfraException::inspecionar($e), 0, true); 113 $this->gravarLogDebug(InfraException::inspecionar($e), 0, true);
114 LogSEI::getInstance()->gravar(InfraException::inspecionar($e)); 114 LogSEI::getInstance()->gravar(InfraException::inspecionar($e));
115 - $objProcessoEletronicoRN = new ProcessoEletronicoRN();  
116 - $strMensagem = ($e instanceof InfraException) ? $e->__toString() : $e->getMessage();  
117 - $objProcessoEletronicoRN->recusarTramite($numIdentificacaoTramite, $strMensagem, ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_OUTROU); 115 +
  116 + //Não recusa trâmite caso o processo atual não possa ser desbloqueado, evitando que o processo fique aberto em dois sistemas ao mesmo tempo
  117 + if($e instanceof InfraException && $e->getObjException() != null && !($e->getObjException() instanceof ProcessoNaoPodeSerDesbloqueadoException)) {
  118 + $objProcessoEletronicoRN = new ProcessoEletronicoRN();
  119 + $strMensagem = ($e instanceof InfraException) ? $e->__toString() : $e->getMessage();
  120 + $objProcessoEletronicoRN->recusarTramite($numIdentificacaoTramite, $strMensagem, ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_OUTROU);
  121 + }
118 } 122 }
119 }); 123 });
120 124
rn/ProcessoEletronicoRN.php
1 <?php 1 <?php
  2 +
  3 +
  4 +class ProcessoNaoPodeSerDesbloqueadoException extends Exception {}
  5 +
2 //@TODOJOIN: VERIFICAR SE NÃO EXISTEM TRY CATCH QUE OCULTAM ERROS. CASO EXISTAM CATCH COM EXEPTION DO PHP, RETIRALOS 6 //@TODOJOIN: VERIFICAR SE NÃO EXISTEM TRY CATCH QUE OCULTAM ERROS. CASO EXISTAM CATCH COM EXEPTION DO PHP, RETIRALOS
3 class ProcessoEletronicoRN extends InfraRN { 7 class ProcessoEletronicoRN extends InfraRN {
4 8
@@ -1254,15 +1258,8 @@ class ProcessoEletronicoRN extends InfraRN { @@ -1254,15 +1258,8 @@ class ProcessoEletronicoRN extends InfraRN {
1254 * @throws Exception|InfraException 1258 * @throws Exception|InfraException
1255 * @return null 1259 * @return null
1256 */ 1260 */
1257 - public function cancelarTramite($idTramite) {  
1258 -  
1259 - //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->filtroDeConsultaDeTramites = new stdClass()  
1260 - //Faz a consulta do tramite  
1261 - //$paramConsultaTramite = new stdClass();  
1262 - //$paramConsultaTramite->filtroDeConsultaDeTramites = new stdClass();  
1263 - //$paramConsultaTramite->filtroDeConsultaDeTramites->IDT = $idTramite;  
1264 - //$dadosTramite = $this->getObjPenWs()->consultarTramites($paramConsultaTramite);  
1265 - 1261 + public function cancelarTramite($idTramite)
  1262 + {
1266 //Requisita o cancelamento 1263 //Requisita o cancelamento
1267 $parametros = new stdClass(); 1264 $parametros = new stdClass();
1268 $parametros->IDT = $idTramite; 1265 $parametros->IDT = $idTramite;
@@ -1288,7 +1285,6 @@ class ProcessoEletronicoRN extends InfraRN { @@ -1288,7 +1285,6 @@ class ProcessoEletronicoRN extends InfraRN {
1288 */ 1285 */
1289 public function recusarTramite($idTramite, $justificativa, $motivo) { 1286 public function recusarTramite($idTramite, $justificativa, $motivo) {
1290 try { 1287 try {
1291 -  
1292 //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->recusaDeTramite = new stdClass() 1288 //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->recusaDeTramite = new stdClass()
1293 $parametros = new stdClass(); 1289 $parametros = new stdClass();
1294 $parametros->recusaDeTramite = new stdClass(); 1290 $parametros->recusaDeTramite = new stdClass();
@@ -1426,6 +1422,19 @@ class ProcessoEletronicoRN extends InfraRN { @@ -1426,6 +1422,19 @@ class ProcessoEletronicoRN extends InfraRN {
1426 throw new InfraException($mensagem, $e, $detalhes); 1422 throw new InfraException($mensagem, $e, $detalhes);
1427 } 1423 }
1428 } 1424 }
  1425 +
  1426 + public static function desbloquearProcesso($parDblIdProcedimento)
  1427 + {
  1428 + try{
  1429 + $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI();
  1430 + $objEntradaDesbloquearProcessoAPI->setIdProcedimento($parDblIdProcedimento);
  1431 +
  1432 + $objSeiRN = new SeiRN();
  1433 + $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI);
  1434 + } catch (InfraException $e) {
  1435 + throw new ProcessoNaoPodeSerDesbloqueadoException("Erro ao desbloquear processo", 1, $e);
  1436 + }
  1437 + }
1429 } 1438 }
1430 1439
1431 1440
rn/ReceberProcedimentoRN.php
@@ -30,7 +30,6 @@ class ReceberProcedimentoRN extends InfraRN @@ -30,7 +30,6 @@ class ReceberProcedimentoRN extends InfraRN
30 return $arrObjPendencias; 30 return $arrObjPendencias;
31 } 31 }
32 32
33 -  
34 protected function receberProcedimentoControlado($parNumIdentificacaoTramite) 33 protected function receberProcedimentoControlado($parNumIdentificacaoTramite)
35 { 34 {
36 try { 35 try {
@@ -186,6 +185,8 @@ class ReceberProcedimentoRN extends InfraRN @@ -186,6 +185,8 @@ class ReceberProcedimentoRN extends InfraRN
186 throw new InfraException("Desconsiderando recebimento do processo devido a situação de trâmite inconsistente: " . $objTramite->situacaoAtual); 185 throw new InfraException("Desconsiderando recebimento do processo devido a situação de trâmite inconsistente: " . $objTramite->situacaoAtual);
187 } 186 }
188 187
  188 +//return ;
  189 +
189 if(count($arrayHashPendentes) > 0){ 190 if(count($arrayHashPendentes) > 0){
190 //Obter dados dos componetes digitais 191 //Obter dados dos componetes digitais
191 $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4); 192 $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4);
@@ -553,14 +554,12 @@ class ReceberProcedimentoRN extends InfraRN @@ -553,14 +554,12 @@ class ReceberProcedimentoRN extends InfraRN
553 $objSeiRN->reabrirProcesso($objEntradaReabrirProcessoAPI); 554 $objSeiRN->reabrirProcesso($objEntradaReabrirProcessoAPI);
554 } 555 }
555 556
556 - //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!) 557 + //Cadastro das atividades para quando o destinatário é desviado pelo receptor (!3!)
557 if ($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) { 558 if ($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) {
558 $this->gerarAndamentoUnidadeReceptora($parDblIdProcedimento); 559 $this->gerarAndamentoUnidadeReceptora($parDblIdProcedimento);
559 } 560 }
560 561
561 - $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI();  
562 - $objEntradaDesbloquearProcessoAPI->setIdProcedimento($parDblIdProcedimento);  
563 - $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); 562 + ProcessoEletronicoRN::desbloquearProcesso($parDblIdProcedimento);
564 563
565 //TODO: Obter código da unidade através de mapeamento entre SEI e Barramento 564 //TODO: Obter código da unidade através de mapeamento entre SEI e Barramento
566 $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario); 565 $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario);
@@ -616,8 +615,8 @@ class ReceberProcedimentoRN extends InfraRN @@ -616,8 +615,8 @@ class ReceberProcedimentoRN extends InfraRN
616 return $numIdUnidade; 615 return $numIdUnidade;
617 } 616 }
618 617
619 - private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento) {  
620 - 618 + private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento)
  619 + {
621 $objUnidadeDTO = new PenUnidadeDTO(); 620 $objUnidadeDTO = new PenUnidadeDTO();
622 $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura); 621 $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura);
623 $objUnidadeDTO->setStrSinAtivo('S'); 622 $objUnidadeDTO->setStrSinAtivo('S');
@@ -647,8 +646,8 @@ class ReceberProcedimentoRN extends InfraRN @@ -647,8 +646,8 @@ class ReceberProcedimentoRN extends InfraRN
647 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); 646 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
648 } 647 }
649 648
650 - private function gerarProcedimento($objMetadadosProcedimento, $objProcesso){  
651 - 649 + private function gerarProcedimento($objMetadadosProcedimento, $objProcesso)
  650 + {
652 if(!isset($objMetadadosProcedimento)){ 651 if(!isset($objMetadadosProcedimento)){
653 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.'); 652 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.');
654 } 653 }
@@ -1022,12 +1021,10 @@ class ReceberProcedimentoRN extends InfraRN @@ -1022,12 +1021,10 @@ class ReceberProcedimentoRN extends InfraRN
1022 return $objUnidadeDTOEnvio; 1021 return $objUnidadeDTOEnvio;
1023 } 1022 }
1024 1023
1025 -  
1026 //TODO: Grande parte da regra de negócio se baseou em SEIRN:199 - incluirDocumento. 1024 //TODO: Grande parte da regra de negócio se baseou em SEIRN:199 - incluirDocumento.
1027 //Avaliar a refatoração para impedir a duplicação de código 1025 //Avaliar a refatoração para impedir a duplicação de código
1028 private function atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $parObjMetadadosProcedimento) 1026 private function atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $parObjMetadadosProcedimento)
1029 { 1027 {
1030 -  
1031 if(!isset($objProcesso)) { 1028 if(!isset($objProcesso)) {
1032 throw new InfraException('Parâmetro $objProcesso não informado.'); 1029 throw new InfraException('Parâmetro $objProcesso não informado.');
1033 } 1030 }
@@ -1067,397 +1064,358 @@ class ReceberProcedimentoRN extends InfraRN @@ -1067,397 +1064,358 @@ class ReceberProcedimentoRN extends InfraRN
1067 $objSeiRN = new SeiRN(); 1064 $objSeiRN = new SeiRN();
1068 1065
1069 $arrObjDocumentoDTO = array(); 1066 $arrObjDocumentoDTO = array();
1070 -  
1071 foreach($arrObjDocumentos as $objDocumento){ 1067 foreach($arrObjDocumentos as $objDocumento){
1072 1068
1073 - // @join_tec US027 (#3498)  
1074 - if(isset($objDocumento->retirado) && $objDocumento->retirado === true) {  
1075 - //$strHashConteudo = ProcessoEletronicoRN::getHashFromMetaDados($objDocumento->componenteDigital->hash);  
1076 - // Caso já esteja cadastrado, de um reenvio anterior, então move para bloqueado  
1077 - if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)) { 1069 + if(isset($objDocumento->retirado) && $objDocumento->retirado === true) {
  1070 +
  1071 + if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)) {
1078 1072
1079 //Busca o ID do protocolo 1073 //Busca o ID do protocolo
1080 - //$dblIdProtocolo = $arrStrHashConteudo[$strHashConteudo];  
1081 - $objComponenteIndexado = $arrObjComponenteDigitalDTOIndexado[$objDocumento->ordem];  
1082 - $dblIdProtocolo = $objComponenteIndexado->getDblIdDocumento(); 1074 + $objComponenteIndexado = $arrObjComponenteDigitalDTOIndexado[$objDocumento->ordem];
  1075 + $dblIdProtocolo = $objComponenteIndexado->getDblIdDocumento();
1083 1076
1084 //Instancia o DTO do protocolo 1077 //Instancia o DTO do protocolo
1085 - $objProtocoloDTO = new ProtocoloDTO();  
1086 - $objProtocoloDTO->setDblIdProtocolo($dblIdProtocolo);  
1087 - $objProtocoloDTO->retStrStaEstado(); 1078 + $objProtocoloDTO = new ProtocoloDTO();
  1079 + $objProtocoloDTO->setDblIdProtocolo($dblIdProtocolo);
  1080 + $objProtocoloDTO->retStrStaEstado();
1088 1081
1089 - $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO); 1082 + $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO);
1090 1083
1091 - if($objProtocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){  
1092 - //Instancia o DTO do protocolo  
1093 - $objEntradaCancelarDocumentoAPI = new EntradaCancelarDocumentoAPI();  
1094 - $objEntradaCancelarDocumentoAPI->setIdDocumento($dblIdProtocolo);  
1095 - $objEntradaCancelarDocumentoAPI->setMotivo('Cancelado pelo remetente');  
1096 -  
1097 - $objSeiRN->cancelarDocumento($objEntradaCancelarDocumentoAPI); 1084 + if($objProtocoloDTO->getStrStaEstado() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){
  1085 + $objEntradaCancelarDocumentoAPI = new EntradaCancelarDocumentoAPI();
  1086 + $objEntradaCancelarDocumentoAPI->setIdDocumento($dblIdProtocolo);
  1087 + $objEntradaCancelarDocumentoAPI->setMotivo('Cancelado pelo remetente');
  1088 + $objSeiRN->cancelarDocumento($objEntradaCancelarDocumentoAPI);
  1089 + }
1098 1090
1099 - }  
1100 - continue;  
1101 - }  
1102 - } 1091 + continue;
  1092 + }
  1093 + }
1103 1094
1104 - if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)){  
1105 - $objComponenteDigitalDTO = $arrObjComponenteDigitalDTOIndexado[$objDocumento->ordem];  
1106 - $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento);  
1107 - continue;  
1108 - } 1095 + if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)){
  1096 + $objComponenteDigitalDTO = $arrObjComponenteDigitalDTOIndexado[$objDocumento->ordem];
  1097 + $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento);
  1098 + $objDocumento->idDocumentoSEI = $objComponenteDigitalDTO->getDblIdDocumento();
  1099 + continue;
  1100 + }
1109 1101
1110 //Validação dos dados dos documentos 1102 //Validação dos dados dos documentos
1111 - if(!isset($objDocumento->especie)){  
1112 - throw new InfraException('Espécie do documento ['.$objDocumento->descricao.'] não informada.');  
1113 -} 1103 + if(!isset($objDocumento->especie)){
  1104 + throw new InfraException('Espécie do documento ['.$objDocumento->descricao.'] não informada.');
  1105 + }
1114 1106
1115 -//--------------------------------------------------------------------------------------------------- 1107 + $objDocumentoDTO = new DocumentoDTO();
  1108 + $objDocumentoDTO->setDblIdDocumento(null);
  1109 + $objDocumentoDTO->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento());
1116 1110
1117 -$objDocumentoDTO = new DocumentoDTO();  
1118 -$objDocumentoDTO->setDblIdDocumento(null);  
1119 -$objDocumentoDTO->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento()); 1111 + $objSerieDTO = $this->obterSerieMapeada($objDocumento->especie->codigo);
1120 1112
1121 -$objSerieDTO = $this->obterSerieMapeada($objDocumento->especie->codigo); 1113 + if ($objSerieDTO==null){
  1114 + throw new InfraException('Tipo de documento [Espécie '.$objDocumento->especie->codigo.'] não encontrado.');
  1115 + }
1122 1116
1123 -if ($objSerieDTO==null){  
1124 - throw new InfraException('Tipo de documento [Espécie '.$objDocumento->especie->codigo.'] não encontrado.');  
1125 -} 1117 + if (InfraString::isBolVazia($objDocumento->dataHoraDeProducao)) {
  1118 + $objInfraException->lancarValidacao('Data do documento não informada.');
  1119 + }
1126 1120
1127 -if (InfraString::isBolVazia($objDocumento->dataHoraDeProducao)) {  
1128 - $objInfraException->lancarValidacao('Data do documento não informada.');  
1129 -} 1121 + $objProcedimentoDTO2 = new ProcedimentoDTO();
  1122 + $objProcedimentoDTO2->retDblIdProcedimento();
  1123 + $objProcedimentoDTO2->retNumIdUsuarioGeradorProtocolo();
  1124 + $objProcedimentoDTO2->retNumIdTipoProcedimento();
  1125 + $objProcedimentoDTO2->retStrStaNivelAcessoGlobalProtocolo();
  1126 + $objProcedimentoDTO2->retStrProtocoloProcedimentoFormatado();
  1127 + $objProcedimentoDTO2->retNumIdTipoProcedimento();
  1128 + $objProcedimentoDTO2->retStrNomeTipoProcedimento();
  1129 + $objProcedimentoDTO2->adicionarCriterio(array('IdProcedimento','ProtocoloProcedimentoFormatado','ProtocoloProcedimentoFormatadoPesquisa'),
  1130 + array(InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL),
  1131 + array($objDocumentoDTO->getDblIdProcedimento(),$objDocumentoDTO->getDblIdProcedimento(),$objDocumentoDTO->getDblIdProcedimento()),
  1132 + array(InfraDTO::$OPER_LOGICO_OR,InfraDTO::$OPER_LOGICO_OR));
1130 1133
1131 -$objProcedimentoDTO2 = new ProcedimentoDTO();  
1132 -$objProcedimentoDTO2->retDblIdProcedimento();  
1133 -$objProcedimentoDTO2->retNumIdUsuarioGeradorProtocolo();  
1134 -$objProcedimentoDTO2->retNumIdTipoProcedimento();  
1135 -$objProcedimentoDTO2->retStrStaNivelAcessoGlobalProtocolo();  
1136 -$objProcedimentoDTO2->retStrProtocoloProcedimentoFormatado();  
1137 -$objProcedimentoDTO2->retNumIdTipoProcedimento();  
1138 -$objProcedimentoDTO2->retStrNomeTipoProcedimento();  
1139 -$objProcedimentoDTO2->adicionarCriterio(array('IdProcedimento','ProtocoloProcedimentoFormatado','ProtocoloProcedimentoFormatadoPesquisa'),  
1140 - array(InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL),  
1141 - array($objDocumentoDTO->getDblIdProcedimento(),$objDocumentoDTO->getDblIdProcedimento(),$objDocumentoDTO->getDblIdProcedimento()),  
1142 - array(InfraDTO::$OPER_LOGICO_OR,InfraDTO::$OPER_LOGICO_OR));  
1143 -  
1144 -$objProcedimentoRN = new ProcedimentoRN();  
1145 -$objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO2);  
1146 -  
1147 -if ($objProcedimentoDTO==null){  
1148 - throw new InfraException('Processo ['.$objDocumentoDTO->getDblIdProcedimento().'] não encontrado.');  
1149 -} 1134 + $objProcedimentoRN = new ProcedimentoRN();
  1135 + $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO2);
1150 1136
1151 -$objDocumentoDTO->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento());  
1152 -$objDocumentoDTO->setNumIdSerie($objSerieDTO->getNumIdSerie());  
1153 -$objDocumentoDTO->setStrNomeSerie($objSerieDTO->getStrNome());  
1154 -  
1155 -$objDocumentoDTO->setDblIdDocumentoEdoc(null);  
1156 -$objDocumentoDTO->setDblIdDocumentoEdocBase(null);  
1157 -$objDocumentoDTO->setNumIdUnidadeResponsavel($objUnidadeDTO->getNumIdUnidade());  
1158 -$objDocumentoDTO->setNumIdTipoConferencia(null);  
1159 -$objDocumentoDTO->setStrConteudo(null);  
1160 -$objDocumentoDTO->setStrStaDocumento(DocumentoRN::$TD_EXTERNO);  
1161 - // $objDocumentoDTO->setNumVersaoLock(0);  
1162 -  
1163 -$objProtocoloDTO = new ProtocoloDTO();  
1164 -$objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO);  
1165 -$objProtocoloDTO->setDblIdProtocolo(null);  
1166 -$objProtocoloDTO->setStrStaProtocolo(ProtocoloRN::$TP_DOCUMENTO_RECEBIDO);  
1167 -  
1168 -if($objDocumento->descricao != '***'){  
1169 - $objProtocoloDTO->setStrDescricao(utf8_decode($objDocumento->descricao));  
1170 - $objDocumentoDTO->setStrNumero(utf8_decode($objDocumento->descricao));  
1171 -}else{  
1172 - $objProtocoloDTO->setStrDescricao("");  
1173 - $objDocumentoDTO->setStrNumero("");  
1174 -}  
1175 - //TODO: Avaliar regra de formação do número do documento 1137 + if ($objProcedimentoDTO==null){
  1138 + throw new InfraException('Processo ['.$objDocumentoDTO->getDblIdProcedimento().'] não encontrado.');
  1139 + }
1176 1140
1177 -$objProtocoloDTO->setStrStaNivelAcessoLocal($this->obterNivelSigiloSEI($objDocumento->nivelDeSigilo));  
1178 -$objProtocoloDTO->setDtaGeracao($this->objProcessoEletronicoRN->converterDataSEI($objDocumento->dataHoraDeProducao));  
1179 -$objProtocoloDTO->setArrObjAnexoDTO(array());  
1180 -$objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array());  
1181 -$objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO(array());  
1182 -$objProtocoloDTO->setArrObjParticipanteDTO(array()); 1141 + $objDocumentoDTO->setDblIdProcedimento($objProcedimentoDTO->getDblIdProcedimento());
  1142 + $objDocumentoDTO->setNumIdSerie($objSerieDTO->getNumIdSerie());
  1143 + $objDocumentoDTO->setStrNomeSerie($objSerieDTO->getStrNome());
  1144 +
  1145 + $objDocumentoDTO->setDblIdDocumentoEdoc(null);
  1146 + $objDocumentoDTO->setDblIdDocumentoEdocBase(null);
  1147 + $objDocumentoDTO->setNumIdUnidadeResponsavel($objUnidadeDTO->getNumIdUnidade());
  1148 + $objDocumentoDTO->setNumIdTipoConferencia(null);
  1149 + $objDocumentoDTO->setStrConteudo(null);
  1150 + $objDocumentoDTO->setStrStaDocumento(DocumentoRN::$TD_EXTERNO);
  1151 +
  1152 + $objProtocoloDTO = new ProtocoloDTO();
  1153 + $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO);
  1154 + $objProtocoloDTO->setDblIdProtocolo(null);
  1155 + $objProtocoloDTO->setStrStaProtocolo(ProtocoloRN::$TP_DOCUMENTO_RECEBIDO);
  1156 +
  1157 + if($objDocumento->descricao != '***'){
  1158 + $objProtocoloDTO->setStrDescricao(utf8_decode($objDocumento->descricao));
  1159 + $objDocumentoDTO->setStrNumero(utf8_decode($objDocumento->descricao));
  1160 + }else{
  1161 + $objProtocoloDTO->setStrDescricao("");
  1162 + $objDocumentoDTO->setStrNumero("");
  1163 + }
  1164 +
  1165 + //TODO: Avaliar regra de formação do número do documento
  1166 + $objProtocoloDTO->setStrStaNivelAcessoLocal($this->obterNivelSigiloSEI($objDocumento->nivelDeSigilo));
  1167 + $objProtocoloDTO->setDtaGeracao($this->objProcessoEletronicoRN->converterDataSEI($objDocumento->dataHoraDeProducao));
  1168 + $objProtocoloDTO->setArrObjAnexoDTO(array());
  1169 + $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array());
  1170 + $objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO(array());
  1171 + $objProtocoloDTO->setArrObjParticipanteDTO(array());
1183 1172
1184 //TODO: Analisar se o modelo de dados do PEN possui destinatários específicos para os documentos 1173 //TODO: Analisar se o modelo de dados do PEN possui destinatários específicos para os documentos
1185 //caso não possua, analisar o repasse de tais informações via parãmetros adicionais 1174 //caso não possua, analisar o repasse de tais informações via parãmetros adicionais
  1175 + $objObservacaoDTO = new ObservacaoDTO();
  1176 + $objObservacaoDTO->setStrDescricao("Número SEI do Documento na Origem: ".$objDocumento->produtor->numeroDeIdentificacao);
  1177 + $objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO));
1186 1178
1187 -$objObservacaoDTO = new ObservacaoDTO();  
1188 -$objObservacaoDTO->setStrDescricao("Número SEI do Documento na Origem: ".$objDocumento->produtor->numeroDeIdentificacao);  
1189 -$objProtocoloDTO->setArrObjObservacaoDTO(array($objObservacaoDTO));  
1190 -  
1191 -  
1192 -$bolReabriuAutomaticamente = false;  
1193 -if ($objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_PUBLICO || $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_RESTRITO) {  
1194 -  
1195 - $objAtividadeDTO = new AtividadeDTO();  
1196 - $objAtividadeDTO->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());  
1197 - $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); 1179 + $bolReabriuAutomaticamente = false;
  1180 + if ($objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_PUBLICO || $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_RESTRITO) {
  1181 + $objAtividadeDTO = new AtividadeDTO();
  1182 + $objAtividadeDTO->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());
  1183 + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
1198 1184
1199 //TODO: Possivelmente, essa regra é desnecessária já que o processo pode ser enviado para outra unidade do órgão através da expedição 1185 //TODO: Possivelmente, essa regra é desnecessária já que o processo pode ser enviado para outra unidade do órgão através da expedição
1200 - $objAtividadeRN = new AtividadeRN();  
1201 - if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {  
1202 - throw new InfraException('Unidade '.$objUnidadeDTO->getStrSigla().' não possui acesso ao Procedimento '.$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'.');  
1203 - }  
1204 -  
1205 - $objAtividadeDTO = new AtividadeDTO();  
1206 - $objAtividadeDTO->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());  
1207 - $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1208 - $objAtividadeDTO->setDthConclusao(null);  
1209 -  
1210 - if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {  
1211 - //reabertura automática  
1212 - $objReabrirProcessoDTO = new ReabrirProcessoDTO();  
1213 - $objReabrirProcessoDTO->setDblIdProcedimento($objDocumentoDTO->getDblIdProcedimento());  
1214 - $objReabrirProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1215 - $objReabrirProcessoDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());  
1216 - $objProcedimentoRN->reabrirRN0966($objReabrirProcessoDTO);  
1217 - $bolReabriuAutomaticamente = true;  
1218 - }  
1219 -} 1186 + $objAtividadeRN = new AtividadeRN();
  1187 + if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {
  1188 + throw new InfraException('Unidade '.$objUnidadeDTO->getStrSigla().' não possui acesso ao Procedimento '.$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'.');
  1189 + }
1220 1190
1221 - //$objOperacaoServicoDTO = new OperacaoServicoDTO();  
1222 - //$this->adicionarCriteriosUnidadeProcessoDocumento ($objOperacaoServicoDTO,$objUnidadeDTO,$objProcedimentoDTO,$objDocumentoDTO);  
1223 - //$objOperacaoServicoDTO->setNumStaOperacaoServico(OperacaoServicoRN::$TS_INCLUIR_DOCUMENTO);  
1224 - //$objOperacaoServicoDTO->setNumIdServico($objServicoDTO->getNumIdServico());  
1225 -  
1226 - //$objOperacaoServicoRN = new OperacaoServicoRN();  
1227 - //if ($objOperacaoServicoRN->contar($objOperacaoServicoDTO)==0){  
1228 - // $objInfraException->lancarValidacao('Nenhuma operação configurada para inclusão de documento do Tipo ['.$objSerieDTO->getStrNome().'] no Tipo de Processo ['.$objProcedimentoDTO->getStrNomeTipoProcedimento().'] na Unidade ['.$objUnidadeDTO->getStrSigla().'] pelo Serviço ['.$objServicoDTO->getStrIdentificacao().'] do Sistema ['.$objServicoDTO->getStrSiglaUsuario().'].');  
1229 - //}  
1230 -  
1231 -$objTipoProcedimentoDTO = new TipoProcedimentoDTO();  
1232 -$objTipoProcedimentoDTO->retStrStaNivelAcessoSugestao();  
1233 -$objTipoProcedimentoDTO->retStrStaGrauSigiloSugestao();  
1234 -$objTipoProcedimentoDTO->retNumIdHipoteseLegalSugestao();  
1235 -$objTipoProcedimentoDTO->setNumIdTipoProcedimento($objProcedimentoDTO->getNumIdTipoProcedimento());  
1236 -  
1237 -$objTipoProcedimentoRN = new TipoProcedimentoRN();  
1238 -$objTipoProcedimentoDTO = $objTipoProcedimentoRN->consultarRN0267($objTipoProcedimentoDTO);  
1239 -  
1240 -if (InfraString::isBolVazia($objDocumentoDTO->getObjProtocoloDTO()->getStrStaNivelAcessoLocal()) || $objDocumentoDTO->getObjProtocoloDTO()->getStrStaNivelAcessoLocal()==$objTipoProcedimentoDTO->getStrStaNivelAcessoSugestao()) {  
1241 - $objDocumentoDTO->getObjProtocoloDTO()->setStrStaNivelAcessoLocal($objTipoProcedimentoDTO->getStrStaNivelAcessoSugestao());  
1242 - $objDocumentoDTO->getObjProtocoloDTO()->setStrStaGrauSigilo($objTipoProcedimentoDTO->getStrStaGrauSigiloSugestao());  
1243 - $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($objTipoProcedimentoDTO->getNumIdHipoteseLegalSugestao());  
1244 -} 1191 + $objAtividadeDTO = new AtividadeDTO();
  1192 + $objAtividadeDTO->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());
  1193 + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1194 + $objAtividadeDTO->setDthConclusao(null);
  1195 +
  1196 + if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {
  1197 + $objReabrirProcessoDTO = new ReabrirProcessoDTO();
  1198 + $objReabrirProcessoDTO->setDblIdProcedimento($objDocumentoDTO->getDblIdProcedimento());
  1199 + $objReabrirProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1200 + $objReabrirProcessoDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  1201 + $objProcedimentoRN->reabrirRN0966($objReabrirProcessoDTO);
  1202 + $bolReabriuAutomaticamente = true;
  1203 + }
  1204 + }
1245 1205
1246 -if ($this->obterNivelSigiloSEI($objDocumento->nivelDeSigilo) == ProtocoloRN::$NA_RESTRITO) {  
1247 - $objHipoteseLegalRecebido = new PenRelHipoteseLegalRecebidoRN();  
1248 - $objPenParametroRN = new PenParametroRN();  
1249 - $numIdHipoteseLegalPadrao = $objPenParametroRN->getParametro('HIPOTESE_LEGAL_PADRAO'); 1206 + $objTipoProcedimentoDTO = new TipoProcedimentoDTO();
  1207 + $objTipoProcedimentoDTO->retStrStaNivelAcessoSugestao();
  1208 + $objTipoProcedimentoDTO->retStrStaGrauSigiloSugestao();
  1209 + $objTipoProcedimentoDTO->retNumIdHipoteseLegalSugestao();
  1210 + $objTipoProcedimentoDTO->setNumIdTipoProcedimento($objProcedimentoDTO->getNumIdTipoProcedimento());
1250 1211
1251 - if (!isset($objDocumento->hipoteseLegal) || (isset($objDocumento->hipoteseLegal) && empty($objDocumento->hipoteseLegal->identificacao))) {  
1252 - $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($numIdHipoteseLegalPadrao);  
1253 - } else { 1212 + $objTipoProcedimentoRN = new TipoProcedimentoRN();
  1213 + $objTipoProcedimentoDTO = $objTipoProcedimentoRN->consultarRN0267($objTipoProcedimentoDTO);
1254 1214
1255 - $numIdHipoteseLegal = $objHipoteseLegalRecebido->getIdHipoteseLegalSEI($objDocumento->hipoteseLegal->identificacao);  
1256 - if (empty($numIdHipoteseLegal)) {  
1257 - $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($numIdHipoteseLegalPadrao);  
1258 - } else {  
1259 - $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($numIdHipoteseLegal);  
1260 - }  
1261 - }  
1262 -} 1215 + if (InfraString::isBolVazia($objDocumentoDTO->getObjProtocoloDTO()->getStrStaNivelAcessoLocal()) || $objDocumentoDTO->getObjProtocoloDTO()->getStrStaNivelAcessoLocal()==$objTipoProcedimentoDTO->getStrStaNivelAcessoSugestao()) {
  1216 + $objDocumentoDTO->getObjProtocoloDTO()->setStrStaNivelAcessoLocal($objTipoProcedimentoDTO->getStrStaNivelAcessoSugestao());
  1217 + $objDocumentoDTO->getObjProtocoloDTO()->setStrStaGrauSigilo($objTipoProcedimentoDTO->getStrStaGrauSigiloSugestao());
  1218 + $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($objTipoProcedimentoDTO->getNumIdHipoteseLegalSugestao());
  1219 + }
1263 1220
1264 -$objDocumentoDTO->getObjProtocoloDTO()->setArrObjParticipanteDTO($this->prepararParticipantes($objDocumentoDTO->getObjProtocoloDTO()->getArrObjParticipanteDTO())); 1221 + if ($this->obterNivelSigiloSEI($objDocumento->nivelDeSigilo) == ProtocoloRN::$NA_RESTRITO) {
  1222 + $objHipoteseLegalRecebido = new PenRelHipoteseLegalRecebidoRN();
  1223 + $objPenParametroRN = new PenParametroRN();
  1224 + $numIdHipoteseLegalPadrao = $objPenParametroRN->getParametro('HIPOTESE_LEGAL_PADRAO');
1265 1225
1266 -$objDocumentoRN = new DocumentoRN(); 1226 + if (!isset($objDocumento->hipoteseLegal) || (isset($objDocumento->hipoteseLegal) && empty($objDocumento->hipoteseLegal->identificacao))) {
  1227 + $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($numIdHipoteseLegalPadrao);
  1228 + } else {
1267 1229
1268 -$strConteudoCodificado = $objDocumentoDTO->getStrConteudo();  
1269 -$objDocumentoDTO->setStrConteudo(null);  
1270 - //$objDocumentoDTO->setStrSinFormulario('N'); 1230 + $numIdHipoteseLegal = $objHipoteseLegalRecebido->getIdHipoteseLegalSEI($objDocumento->hipoteseLegal->identificacao);
  1231 + if (empty($numIdHipoteseLegal)) {
  1232 + $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($numIdHipoteseLegalPadrao);
  1233 + } else {
  1234 + $objDocumentoDTO->getObjProtocoloDTO()->setNumIdHipoteseLegal($numIdHipoteseLegal);
  1235 + }
  1236 + }
  1237 + }
1271 1238
1272 -$objDocumentoDTO->getObjProtocoloDTO()->setNumIdUnidadeGeradora(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1273 -$objDocumentoDTO->setStrSinBloqueado('S'); 1239 + $objDocumentoDTO->getObjProtocoloDTO()->setArrObjParticipanteDTO($this->prepararParticipantes($objDocumentoDTO->getObjProtocoloDTO()->getArrObjParticipanteDTO()));
1274 1240
1275 - //TODO: Fazer a atribuição dos componentes digitais do processo a partir desse ponto  
1276 -$this->atribuirComponentesDigitais($objDocumentoDTO, $objDocumento->componenteDigital);  
1277 -$objDocumentoDTOGerado = $objDocumentoRN->cadastrarRN0003($objDocumentoDTO); 1241 + $objDocumentoRN = new DocumentoRN();
  1242 + $strConteudoCodificado = $objDocumentoDTO->getStrConteudo();
  1243 + $objDocumentoDTO->setStrConteudo(null);
  1244 + $objDocumentoDTO->getObjProtocoloDTO()->setNumIdUnidadeGeradora(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1245 + $objDocumentoDTO->setStrSinBloqueado('S');
1278 1246
1279 -$objAtividadeDTOVisualizacao = new AtividadeDTO();  
1280 -$objAtividadeDTOVisualizacao->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());  
1281 -$objAtividadeDTOVisualizacao->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); 1247 + //TODO: Fazer a atribuição dos componentes digitais do processo a partir desse ponto
  1248 + $this->atribuirComponentesDigitais($objDocumentoDTO, $objDocumento->componenteDigital);
  1249 + $objDocumentoDTOGerado = $objDocumentoRN->cadastrarRN0003($objDocumentoDTO);
1282 1250
1283 -if (!$bolReabriuAutomaticamente){  
1284 - $objAtividadeDTOVisualizacao->setNumTipoVisualizacao(AtividadeRN::$TV_ATENCAO);  
1285 -}else{  
1286 - $objAtividadeDTOVisualizacao->setNumTipoVisualizacao(AtividadeRN::$TV_NAO_VISUALIZADO | AtividadeRN::$TV_ATENCAO);  
1287 -} 1251 + $objAtividadeDTOVisualizacao = new AtividadeDTO();
  1252 + $objAtividadeDTOVisualizacao->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());
  1253 + $objAtividadeDTOVisualizacao->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
1288 1254
1289 -$objAtividadeRN = new AtividadeRN();  
1290 -$objAtividadeRN->atualizarVisualizacaoUnidade($objAtividadeDTOVisualizacao); 1255 + if (!$bolReabriuAutomaticamente){
  1256 + $objAtividadeDTOVisualizacao->setNumTipoVisualizacao(AtividadeRN::$TV_ATENCAO);
  1257 + }else{
  1258 + $objAtividadeDTOVisualizacao->setNumTipoVisualizacao(AtividadeRN::$TV_NAO_VISUALIZADO | AtividadeRN::$TV_ATENCAO);
  1259 + }
1291 1260
1292 -$objDocumento->idDocumentoSEI = $objDocumentoDTO->getDblIdDocumento();  
1293 -$arrObjDocumentoDTO[] = $objDocumentoDTO; 1261 + $objAtividadeRN = new AtividadeRN();
  1262 + $objAtividadeRN->atualizarVisualizacaoUnidade($objAtividadeDTOVisualizacao);
1294 1263
1295 -if(isset($objDocumento->retirado) && $objDocumento->retirado === true) {  
1296 - $this->documentosRetirados[] = $objDocumento->idDocumentoSEI;  
1297 -} 1264 + $objDocumento->idDocumentoSEI = $objDocumentoDTO->getDblIdDocumento();
  1265 + $arrObjDocumentoDTO[] = $objDocumentoDTO;
1298 1266
1299 -} 1267 + if(isset($objDocumento->retirado) && $objDocumento->retirado === true) {
  1268 + $this->documentosRetirados[] = $objDocumento->idDocumentoSEI;
  1269 + }
  1270 + }
1300 1271
1301 -foreach($this->documentosRetirados as $documentoCancelado){ 1272 + foreach($this->documentosRetirados as $documentoCancelado){
1302 //Instancia o DTO do protocolo 1273 //Instancia o DTO do protocolo
1303 - $objEntradaCancelarDocumentoAPI = new EntradaCancelarDocumentoAPI();  
1304 - $objEntradaCancelarDocumentoAPI->setIdDocumento($documentoCancelado);  
1305 - $objEntradaCancelarDocumentoAPI->setMotivo('Cancelado pelo remetente');  
1306 - $objSeiRN = new SeiRN();  
1307 - $objSeiRN->cancelarDocumento($objEntradaCancelarDocumentoAPI);  
1308 -}  
1309 -  
1310 -$objProcedimentoDTO->setArrObjDocumentoDTO($arrObjDocumentoDTO); 1274 + $objEntradaCancelarDocumentoAPI = new EntradaCancelarDocumentoAPI();
  1275 + $objEntradaCancelarDocumentoAPI->setIdDocumento($documentoCancelado);
  1276 + $objEntradaCancelarDocumentoAPI->setMotivo('Cancelado pelo remetente');
  1277 + $objSeiRN = new SeiRN();
  1278 + $objSeiRN->cancelarDocumento($objEntradaCancelarDocumentoAPI);
  1279 + }
1311 1280
1312 - /* if($numIdUnidadeAtual != $numIdUnidadeGeradora){  
1313 - SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $numIdUnidadeAtual);  
1314 - } */ 1281 + $objProcedimentoDTO->setArrObjDocumentoDTO($arrObjDocumentoDTO);
1315 } 1282 }
1316 1283
1317 //TODO: Método deverá poderá ser transferido para a classe responsável por fazer o recebimento dos componentes digitais 1284 //TODO: Método deverá poderá ser transferido para a classe responsável por fazer o recebimento dos componentes digitais
1318 private function atribuirComponentesDigitais(DocumentoDTO $parObjDocumentoDTO, $parArrObjComponentesDigitais) 1285 private function atribuirComponentesDigitais(DocumentoDTO $parObjDocumentoDTO, $parArrObjComponentesDigitais)
1319 { 1286 {
1320 if(!isset($parArrObjComponentesDigitais)) { 1287 if(!isset($parArrObjComponentesDigitais)) {
1321 - throw new InfraException('Componentes digitais do documento não informado.');  
1322 - } 1288 + throw new InfraException('Componentes digitais do documento não informado.');
  1289 + }
1323 1290
1324 //TODO: Aplicar mesmas validações realizadas no momento do upload de um documento InfraPagina::processarUpload 1291 //TODO: Aplicar mesmas validações realizadas no momento do upload de um documento InfraPagina::processarUpload
1325 //TODO: Avaliar a refatoração do código abaixo para impedir a duplicação de regras de negócios 1292 //TODO: Avaliar a refatoração do código abaixo para impedir a duplicação de regras de negócios
1326 1293
1327 1294
1328 - $arrObjAnexoDTO = array();  
1329 - if($parObjDocumentoDTO->getObjProtocoloDTO()->isSetArrObjAnexoDTO()) {  
1330 - $arrObjAnexoDTO = $parObjDocumentoDTO->getObjProtocoloDTO()->getArrObjAnexoDTO();  
1331 - } 1295 + $arrObjAnexoDTO = array();
  1296 + if($parObjDocumentoDTO->getObjProtocoloDTO()->isSetArrObjAnexoDTO()) {
  1297 + $arrObjAnexoDTO = $parObjDocumentoDTO->getObjProtocoloDTO()->getArrObjAnexoDTO();
  1298 + }
1332 1299
1333 - if (!is_array($parArrObjComponentesDigitais)) {  
1334 - $parArrObjComponentesDigitais = array($parArrObjComponentesDigitais);  
1335 - } 1300 + if (!is_array($parArrObjComponentesDigitais)) {
  1301 + $parArrObjComponentesDigitais = array($parArrObjComponentesDigitais);
  1302 + }
1336 1303
1337 //TODO: Tratar a ordem dos componentes digitais 1304 //TODO: Tratar a ordem dos componentes digitais
1338 //... 1305 //...
1339 1306
  1307 + $parObjDocumentoDTO->getObjProtocoloDTO()->setArrObjAnexoDTO($arrObjAnexoDTO);
  1308 + }
1340 1309
1341 - $parObjDocumentoDTO->getObjProtocoloDTO()->setArrObjAnexoDTO($arrObjAnexoDTO);  
1342 - }  
1343 -  
1344 - private function atribuirAssunto(ProtocoloDTO $objProtocoloDTO, $numIdAssunto)  
1345 - {  
1346 - //TODO: Removido. Serão utilizados os tipos de procedimento enviados atribuídos ao tipo de processo externo (PEN_TIPO_PROCESSO_EXTERNO)  
1347 - }  
1348 1310
1349 - private function atribuirProcessosApensados(ProcedimentoDTO $objProtocoloDTO, $objProcedimento)  
1350 - {  
1351 - if(isset($objProcedimento->processoApensado)) {  
1352 - if(!is_array($objProcedimento->processoApensado)){  
1353 - $objProcedimento->processoApensado = array($objProcedimento->processoApensado);  
1354 - } 1311 + private function atribuirProcessosApensados(ProcedimentoDTO $objProtocoloDTO, $objProcedimento)
  1312 + {
  1313 + if(isset($objProcedimento->processoApensado)) {
  1314 + if(!is_array($objProcedimento->processoApensado)){
  1315 + $objProcedimento->processoApensado = array($objProcedimento->processoApensado);
  1316 + }
1355 1317
1356 - $objProcedimentoDTOApensado = null;  
1357 - foreach ($objProcedimento->processoApensado as $processoApensado) {  
1358 - $objProcedimentoDTOApensado = $this->gerarProcedimento($objMetadadosProcedimento, $processoApensado);  
1359 - $this->relacionarProcedimentos($objProcedimentoDTOPrincipal, $objProcedimentoDTOApensado);  
1360 - $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTOApensado); 1318 + $objProcedimentoDTOApensado = null;
  1319 + foreach ($objProcedimento->processoApensado as $processoApensado) {
  1320 + $objProcedimentoDTOApensado = $this->gerarProcedimento($objMetadadosProcedimento, $processoApensado);
  1321 + $this->relacionarProcedimentos($objProcedimentoDTOPrincipal, $objProcedimentoDTOApensado);
  1322 + $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTOApensado);
  1323 + }
1361 } 1324 }
1362 } 1325 }
1363 -}  
1364 1326
1365 1327
1366 -private function validarDadosDestinatario(InfraException $objInfraException, $objMetadadosProcedimento)  
1367 -{  
1368 - if(isset($objDestinatario)){  
1369 - throw new InfraException("Parâmetro $objDestinatario não informado.");  
1370 - } 1328 + private function validarDadosDestinatario(InfraException $objInfraException, $objMetadadosProcedimento)
  1329 + {
  1330 + if(isset($objDestinatario)){
  1331 + throw new InfraException("Parâmetro $objDestinatario não informado.");
  1332 + }
1371 1333
1372 - $objDestinatario = $objMetadadosProcedimento->metadados->destinatario; 1334 + $objDestinatario = $objMetadadosProcedimento->metadados->destinatario;
1373 1335
1374 - $objPenParametroRN = new PenParametroRN();  
1375 - $numIdRepositorioOrigem = $objPenParametroRN->getParametro('PEN_ID_REPOSITORIO_ORIGEM');  
1376 - $numIdRepositorioDestinoProcesso = $objDestinatario->identificacaoDoRepositorioDeEstruturas;  
1377 - $numeroDeIdentificacaoDaEstrutura = $objDestinatario->numeroDeIdentificacaoDaEstrutura; 1336 + $objPenParametroRN = new PenParametroRN();
  1337 + $numIdRepositorioOrigem = $objPenParametroRN->getParametro('PEN_ID_REPOSITORIO_ORIGEM');
  1338 + $numIdRepositorioDestinoProcesso = $objDestinatario->identificacaoDoRepositorioDeEstruturas;
  1339 + $numeroDeIdentificacaoDaEstrutura = $objDestinatario->numeroDeIdentificacaoDaEstrutura;
1378 1340
1379 //Validação do repositório de destino do processo 1341 //Validação do repositório de destino do processo
1380 - if($numIdRepositorioDestinoProcesso != $numIdRepositorioOrigem){  
1381 - $objInfraException->adicionarValidacao("Identificação do repositório de origem do processo [$numIdRepositorioDestinoProcesso] não reconhecida.");  
1382 - } 1342 + if($numIdRepositorioDestinoProcesso != $numIdRepositorioOrigem){
  1343 + $objInfraException->adicionarValidacao("Identificação do repositório de origem do processo [$numIdRepositorioDestinoProcesso] não reconhecida.");
  1344 + }
1383 1345
1384 //Validação do unidade de destino do processo 1346 //Validação do unidade de destino do processo
1385 - $objUnidadeDTO = new PenUnidadeDTO();  
1386 - $objUnidadeDTO->setNumIdUnidadeRH($numeroDeIdentificacaoDaEstrutura);  
1387 - $objUnidadeDTO->setStrSinAtivo('S');  
1388 - $objUnidadeDTO->retNumIdUnidade(); 1347 + $objUnidadeDTO = new PenUnidadeDTO();
  1348 + $objUnidadeDTO->setNumIdUnidadeRH($numeroDeIdentificacaoDaEstrutura);
  1349 + $objUnidadeDTO->setStrSinAtivo('S');
  1350 + $objUnidadeDTO->retNumIdUnidade();
1389 1351
1390 - $objUnidadeRN = new UnidadeRN();  
1391 - $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO); 1352 + $objUnidadeRN = new UnidadeRN();
  1353 + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO);
1392 1354
1393 - if(!isset($objUnidadeDTO)){  
1394 - $objInfraException->adicionarValidacao("Unidade [Estrutura: {$numeroDeIdentificacaoDaEstrutura}] não configurada para receber processos externos no sistema de destino.");  
1395 - }  
1396 -} 1355 + if(!isset($objUnidadeDTO)){
  1356 + $objInfraException->adicionarValidacao("Unidade [Estrutura: {$numeroDeIdentificacaoDaEstrutura}] não configurada para receber processos externos no sistema de destino.");
  1357 + }
  1358 + }
1397 1359
1398 -private function validarDadosRemetente(InfraException $objInfraException, $objMetadadosProcedimento){ 1360 + private function validarDadosRemetente(InfraException $objInfraException, $objMetadadosProcedimento){
1399 1361
1400 -} 1362 + }
1401 1363
1402 -private function validarDadosProcesso(InfraException $objInfraException, $objMetadadosProcedimento){ 1364 + private function validarDadosProcesso(InfraException $objInfraException, $objMetadadosProcedimento){
1403 1365
1404 -} 1366 + }
1405 1367
1406 -private function validarDadosDocumentos(InfraException $objInfraException, $objMetadadosProcedimento){ 1368 + private function validarDadosDocumentos(InfraException $objInfraException, $objMetadadosProcedimento){
1407 1369
1408 -} 1370 + }
1409 1371
1410 -private function obterNivelSigiloSEI($strNivelSigiloPEN) {  
1411 - switch ($strNivelSigiloPEN) {  
1412 -  
1413 - case ProcessoEletronicoRN::$STA_SIGILO_PUBLICO: return ProtocoloRN::$NA_PUBLICO;  
1414 - break;  
1415 - case ProcessoEletronicoRN::$STA_SIGILO_RESTRITO: return ProtocoloRN::$NA_RESTRITO;  
1416 - break;  
1417 - case ProcessoEletronicoRN::$STA_SIGILO_SIGILOSO: return ProtocoloRN::$NA_SIGILOSO;  
1418 - break;  
1419 - default:  
1420 - break;  
1421 - }  
1422 -} 1372 + private function obterNivelSigiloSEI($strNivelSigiloPEN) {
  1373 + switch ($strNivelSigiloPEN) {
  1374 +
  1375 + case ProcessoEletronicoRN::$STA_SIGILO_PUBLICO: return ProtocoloRN::$NA_PUBLICO;
  1376 + break;
  1377 + case ProcessoEletronicoRN::$STA_SIGILO_RESTRITO: return ProtocoloRN::$NA_RESTRITO;
  1378 + break;
  1379 + case ProcessoEletronicoRN::$STA_SIGILO_SIGILOSO: return ProtocoloRN::$NA_SIGILOSO;
  1380 + break;
  1381 + default:
  1382 + break;
  1383 + }
  1384 + }
1423 1385
1424 -private function obterHipoteseLegalSEI($parNumIdHipoteseLegalPEN) { 1386 + private function obterHipoteseLegalSEI($parNumIdHipoteseLegalPEN) {
1425 //Atribuí a hipótese legal 1387 //Atribuí a hipótese legal
1426 - $objHipoteseLegalRecebido = new PenRelHipoteseLegalRecebidoRN();  
1427 - $objPenParametroRN = new PenParametroRN();  
1428 - $numIdHipoteseLegalPadrao = $objPenParametroRN->getParametro('HIPOTESE_LEGAL_PADRAO'); 1388 + $objHipoteseLegalRecebido = new PenRelHipoteseLegalRecebidoRN();
  1389 + $objPenParametroRN = new PenParametroRN();
  1390 + $numIdHipoteseLegalPadrao = $objPenParametroRN->getParametro('HIPOTESE_LEGAL_PADRAO');
1429 1391
1430 - $numIdHipoteseLegal = $objHipoteseLegalRecebido->getIdHipoteseLegalSEI($parNumIdHipoteseLegalPEN); 1392 + $numIdHipoteseLegal = $objHipoteseLegalRecebido->getIdHipoteseLegalSEI($parNumIdHipoteseLegalPEN);
1431 1393
1432 - if (empty($numIdHipoteseLegal)) {  
1433 - return $numIdHipoteseLegalPadrao;  
1434 - } else {  
1435 - return $numIdHipoteseLegal; 1394 + if (empty($numIdHipoteseLegal)) {
  1395 + return $numIdHipoteseLegalPadrao;
  1396 + } else {
  1397 + return $numIdHipoteseLegal;
  1398 + }
1436 } 1399 }
1437 -}  
1438 1400
1439 //TODO: Implementar o mapeamento entre as unidade do SEI e Barramento de Serviços (Secretaria de Saúde: 218794) 1401 //TODO: Implementar o mapeamento entre as unidade do SEI e Barramento de Serviços (Secretaria de Saúde: 218794)
1440 -private function obterUnidadeMapeada($numIdentificacaoDaEstrutura)  
1441 -{  
1442 - $objUnidadeDTO = new PenUnidadeDTO();  
1443 - $objUnidadeDTO->setNumIdUnidadeRH($numIdentificacaoDaEstrutura);  
1444 - $objUnidadeDTO->setStrSinAtivo('S');  
1445 - $objUnidadeDTO->retNumIdUnidade();  
1446 - $objUnidadeDTO->retNumIdOrgao();  
1447 - $objUnidadeDTO->retStrSigla();  
1448 - $objUnidadeDTO->retStrDescricao();  
1449 -  
1450 - $objUnidadeRN = new UnidadeRN();  
1451 - return $objUnidadeRN->consultarRN0125($objUnidadeDTO);  
1452 -} 1402 + private function obterUnidadeMapeada($numIdentificacaoDaEstrutura)
  1403 + {
  1404 + $objUnidadeDTO = new PenUnidadeDTO();
  1405 + $objUnidadeDTO->setNumIdUnidadeRH($numIdentificacaoDaEstrutura);
  1406 + $objUnidadeDTO->setStrSinAtivo('S');
  1407 + $objUnidadeDTO->retNumIdUnidade();
  1408 + $objUnidadeDTO->retNumIdOrgao();
  1409 + $objUnidadeDTO->retStrSigla();
  1410 + $objUnidadeDTO->retStrDescricao();
  1411 +
  1412 + $objUnidadeRN = new UnidadeRN();
  1413 + return $objUnidadeRN->consultarRN0125($objUnidadeDTO);
  1414 + }
1453 1415
1454 1416
1455 - /**  
1456 - *  
1457 - * @return SerieDTO  
1458 - */  
1459 - private function obterSerieMapeada($numCodigoEspecie)  
1460 - { 1417 + private function obterSerieMapeada($numCodigoEspecie)
  1418 + {
1461 $objSerieDTO = null; 1419 $objSerieDTO = null;
1462 1420
1463 $objMapDTO = new PenRelTipoDocMapRecebidoDTO(); 1421 $objMapDTO = new PenRelTipoDocMapRecebidoDTO();
@@ -1468,377 +1426,368 @@ private function obterUnidadeMapeada($numIdentificacaoDaEstrutura) @@ -1468,377 +1426,368 @@ private function obterUnidadeMapeada($numIdentificacaoDaEstrutura)
1468 $objMapDTO = $objGenericoBD->consultar($objMapDTO); 1426 $objMapDTO = $objGenericoBD->consultar($objMapDTO);
1469 1427
1470 if(empty($objMapDTO)) { 1428 if(empty($objMapDTO)) {
1471 - $objMapDTO = new PenRelTipoDocMapRecebidoDTO();  
1472 - $objMapDTO->retNumIdSerie();  
1473 - $objMapDTO->setStrPadrao('S');  
1474 - $objMapDTO->setNumMaxRegistrosRetorno(1);  
1475 - $objMapDTO = $objGenericoBD->consultar($objMapDTO);  
1476 - }  
1477 -  
1478 - if(!empty($objMapDTO)) {  
1479 - $objSerieDTO = new SerieDTO();  
1480 - $objSerieDTO->retStrNome();  
1481 - $objSerieDTO->retNumIdSerie();  
1482 - $objSerieDTO->setNumIdSerie($objMapDTO->getNumIdSerie());  
1483 -  
1484 - $objSerieRN = new SerieRN();  
1485 - $objSerieDTO = $objSerieRN->consultarRN0644($objSerieDTO);  
1486 - }  
1487 -  
1488 - return $objSerieDTO;  
1489 - }  
1490 -  
1491 - private function relacionarProcedimentos($objProcedimentoDTO1, $objProcedimentoDTO2)  
1492 - {  
1493 - if(!isset($objProcedimentoDTO1) || !isset($objProcedimentoDTO1)) {  
1494 - throw new InfraException('Parâmetro $objProcedimentoDTO não informado.');  
1495 - }  
1496 -  
1497 - $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO();  
1498 - $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($objProcedimentoDTO2->getDblIdProcedimento());  
1499 - $objRelProtocoloProtocoloDTO->setDblIdProtocolo2($objProcedimentoDTO1->getDblIdProcedimento());  
1500 - $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_RELACIONADO);  
1501 - $objRelProtocoloProtocoloDTO->setStrMotivo(self::STR_APENSACAO_PROCEDIMENTOS);  
1502 -  
1503 - $objProcedimentoRN = new ProcedimentoRN();  
1504 - $objProcedimentoRN->relacionarProcedimentoRN1020($objRelProtocoloProtocoloDTO);  
1505 -} 1429 + $objMapDTO = new PenRelTipoDocMapRecebidoDTO();
  1430 + $objMapDTO->retNumIdSerie();
  1431 + $objMapDTO->setStrPadrao('S');
  1432 + $objMapDTO->setNumMaxRegistrosRetorno(1);
  1433 + $objMapDTO = $objGenericoBD->consultar($objMapDTO);
  1434 + }
  1435 +
  1436 + if(!empty($objMapDTO)) {
  1437 + $objSerieDTO = new SerieDTO();
  1438 + $objSerieDTO->retStrNome();
  1439 + $objSerieDTO->retNumIdSerie();
  1440 + $objSerieDTO->setNumIdSerie($objMapDTO->getNumIdSerie());
  1441 +
  1442 + $objSerieRN = new SerieRN();
  1443 + $objSerieDTO = $objSerieRN->consultarRN0644($objSerieDTO);
  1444 + }
  1445 +
  1446 + return $objSerieDTO;
  1447 + }
  1448 +
  1449 + private function relacionarProcedimentos($objProcedimentoDTO1, $objProcedimentoDTO2)
  1450 + {
  1451 + if(!isset($objProcedimentoDTO1) || !isset($objProcedimentoDTO1)) {
  1452 + throw new InfraException('Parâmetro $objProcedimentoDTO não informado.');
  1453 + }
  1454 +
  1455 + $objRelProtocoloProtocoloDTO = new RelProtocoloProtocoloDTO();
  1456 + $objRelProtocoloProtocoloDTO->setDblIdProtocolo1($objProcedimentoDTO2->getDblIdProcedimento());
  1457 + $objRelProtocoloProtocoloDTO->setDblIdProtocolo2($objProcedimentoDTO1->getDblIdProcedimento());
  1458 + $objRelProtocoloProtocoloDTO->setStrStaAssociacao(RelProtocoloProtocoloRN::$TA_PROCEDIMENTO_RELACIONADO);
  1459 + $objRelProtocoloProtocoloDTO->setStrMotivo(self::STR_APENSACAO_PROCEDIMENTOS);
  1460 +
  1461 + $objProcedimentoRN = new ProcedimentoRN();
  1462 + $objProcedimentoRN->relacionarProcedimentoRN1020($objRelProtocoloProtocoloDTO);
  1463 + }
1506 1464
1507 //TODO: Método identico ao localizado na classe SeiRN:2214 1465 //TODO: Método identico ao localizado na classe SeiRN:2214
1508 //Refatorar código para evitar problemas de manutenção 1466 //Refatorar código para evitar problemas de manutenção
1509 -private function prepararParticipantes($arrObjParticipanteDTO)  
1510 -{  
1511 - $objContatoRN = new ContatoRN();  
1512 - $objUsuarioRN = new UsuarioRN(); 1467 + private function prepararParticipantes($arrObjParticipanteDTO)
  1468 + {
  1469 + $objContatoRN = new ContatoRN();
  1470 + $objUsuarioRN = new UsuarioRN();
  1471 +
  1472 + foreach($arrObjParticipanteDTO as $objParticipanteDTO) {
1513 1473
1514 - foreach($arrObjParticipanteDTO as $objParticipanteDTO) { 1474 + $objContatoDTO = new ContatoDTO();
  1475 + $objContatoDTO->retNumIdContato();
1515 1476
1516 - $objContatoDTO = new ContatoDTO();  
1517 - $objContatoDTO->retNumIdContato(); 1477 + if (!InfraString::isBolVazia($objParticipanteDTO->getStrSiglaContato()) && !InfraString::isBolVazia($objParticipanteDTO->getStrNomeContato())) {
  1478 + $objContatoDTO->setStrSigla($objParticipanteDTO->getStrSiglaContato());
  1479 + $objContatoDTO->setStrNome($objParticipanteDTO->getStrNomeContato());
1518 1480
1519 - if (!InfraString::isBolVazia($objParticipanteDTO->getStrSiglaContato()) && !InfraString::isBolVazia($objParticipanteDTO->getStrNomeContato())) {  
1520 - $objContatoDTO->setStrSigla($objParticipanteDTO->getStrSiglaContato());  
1521 - $objContatoDTO->setStrNome($objParticipanteDTO->getStrNomeContato()); 1481 + } else if (!InfraString::isBolVazia($objParticipanteDTO->getStrSiglaContato())) {
  1482 + $objContatoDTO->setStrSigla($objParticipanteDTO->getStrSiglaContato());
1522 1483
1523 - } else if (!InfraString::isBolVazia($objParticipanteDTO->getStrSiglaContato())) {  
1524 - $objContatoDTO->setStrSigla($objParticipanteDTO->getStrSiglaContato()); 1484 + } else if (!InfraString::isBolVazia($objParticipanteDTO->getStrNomeContato())) {
  1485 + $objContatoDTO->setStrNome($objParticipanteDTO->getStrNomeContato());
  1486 + } else {
  1487 + if ($objParticipanteDTO->getStrStaParticipacao()==ParticipanteRN::$TP_INTERESSADO) {
  1488 + throw new InfraException('Interessado vazio ou nulo.');
  1489 + }
  1490 + else if ($objParticipanteDTO->getStrStaParticipacao()==ParticipanteRN::$TP_REMETENTE) {
  1491 + throw new InfraException('Remetente vazio ou nulo.');
  1492 + }
  1493 + else if ($objParticipanteDTO->getStrStaParticipacao()==ParticipanteRN::$TP_DESTINATARIO) {
  1494 + throw new InfraException('Destinatário vazio ou nulo.');
  1495 + }
  1496 + }
1525 1497
1526 - } else if (!InfraString::isBolVazia($objParticipanteDTO->getStrNomeContato())) {  
1527 - $objContatoDTO->setStrNome($objParticipanteDTO->getStrNomeContato());  
1528 - } else {  
1529 - if ($objParticipanteDTO->getStrStaParticipacao()==ParticipanteRN::$TP_INTERESSADO) {  
1530 - throw new InfraException('Interessado vazio ou nulo.');  
1531 - }  
1532 - else if ($objParticipanteDTO->getStrStaParticipacao()==ParticipanteRN::$TP_REMETENTE) {  
1533 - throw new InfraException('Remetente vazio ou nulo.');  
1534 - }  
1535 - else if ($objParticipanteDTO->getStrStaParticipacao()==ParticipanteRN::$TP_DESTINATARIO) {  
1536 - throw new InfraException('Destinatário vazio ou nulo.');  
1537 - }  
1538 - } 1498 + $arrObjContatoDTO = $objContatoRN->listarRN0325($objContatoDTO);
  1499 + if (count($arrObjContatoDTO)) {
  1500 + $objContatoDTO = null;
1539 1501
1540 - $arrObjContatoDTO = $objContatoRN->listarRN0325($objContatoDTO); 1502 + //preferencia para contatos que representam usuarios
  1503 + foreach($arrObjContatoDTO as $dto) {
  1504 + $objUsuarioDTO = new UsuarioDTO();
  1505 + $objUsuarioDTO->setBolExclusaoLogica(false);
  1506 + $objUsuarioDTO->setNumIdContato($dto->getNumIdContato());
  1507 +
  1508 + if ($objUsuarioRN->contarRN0492($objUsuarioDTO)) {
  1509 + $objContatoDTO = $dto;
  1510 + break;
  1511 + }
  1512 + }
1541 1513
1542 - if (count($arrObjContatoDTO)) { 1514 + //nao achou contato de usuario pega o primeiro retornado
  1515 + if ($objContatoDTO==null) {
  1516 + $objContatoDTO = $arrObjContatoDTO[0];
  1517 + }
  1518 + } else {
  1519 + $objContatoDTO = $objContatoRN->cadastrarContextoTemporario($objContatoDTO);
  1520 + }
1543 1521
1544 - $objContatoDTO = null; 1522 + $objParticipanteDTO->setNumIdContato($objContatoDTO->getNumIdContato());
  1523 + }
1545 1524
1546 - //preferencia para contatos que representam usuarios  
1547 - foreach($arrObjContatoDTO as $dto) { 1525 + return $arrObjParticipanteDTO;
  1526 + }
1548 1527
1549 - $objUsuarioDTO = new UsuarioDTO();  
1550 - $objUsuarioDTO->setBolExclusaoLogica(false);  
1551 - $objUsuarioDTO->setNumIdContato($dto->getNumIdContato()); 1528 + private function registrarProcedimentoNaoVisualizado(ProcedimentoDTO $parObjProcedimentoDTO)
  1529 + {
  1530 + $objAtividadeDTOVisualizacao = new AtividadeDTO();
  1531 + $objAtividadeDTOVisualizacao->setDblIdProtocolo($parObjProcedimentoDTO->getDblIdProcedimento());
  1532 + $objAtividadeDTOVisualizacao->setNumTipoVisualizacao(AtividadeRN::$TV_NAO_VISUALIZADO);
1552 1533
1553 - if ($objUsuarioRN->contarRN0492($objUsuarioDTO)) {  
1554 - $objContatoDTO = $dto;  
1555 - break; 1534 + $objAtividadeRN = new AtividadeRN();
  1535 + $objAtividadeRN->atualizarVisualizacao($objAtividadeDTOVisualizacao);
1556 } 1536 }
1557 -}  
1558 1537
1559 - //nao achou contato de usuario pega o primeiro retornado  
1560 -if ($objContatoDTO==null) {  
1561 - $objContatoDTO = $arrObjContatoDTO[0];  
1562 -}  
1563 -} else {  
1564 - $objContatoDTO = $objContatoRN->cadastrarContextoTemporario($objContatoDTO);  
1565 -} 1538 + private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDTO, $retransmissao = false)
  1539 + {
  1540 + $objAtividadeRN = new PenAtividadeRN();
  1541 + $objInfraException = new InfraException();
1566 1542
1567 -$objParticipanteDTO->setNumIdContato($objContatoDTO->getNumIdContato());  
1568 -} 1543 + if(!$parObjProcedimentoDTO->isSetArrObjUnidadeDTO() || count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) == 0) {
  1544 + $objInfraException->lancarValidacao('Unidade de destino do processo não informada.');
  1545 + }
1569 1546
1570 -return $arrObjParticipanteDTO;  
1571 -} 1547 + $arrObjUnidadeDTO = $parObjProcedimentoDTO->getArrObjUnidadeDTO();
1572 1548
1573 -private function registrarProcedimentoNaoVisualizado(ProcedimentoDTO $parObjProcedimentoDTO)  
1574 -{  
1575 - $objAtividadeDTOVisualizacao = new AtividadeDTO();  
1576 - $objAtividadeDTOVisualizacao->setDblIdProtocolo($parObjProcedimentoDTO->getDblIdProcedimento());  
1577 - $objAtividadeDTOVisualizacao->setNumTipoVisualizacao(AtividadeRN::$TV_NAO_VISUALIZADO); 1549 + if(count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) > 1) {
  1550 + $objInfraException->lancarValidacao('Não permitido a indicação de múltiplas unidades de destino para um processo recebido externamente.');
  1551 + }
1578 1552
1579 - $objAtividadeRN = new AtividadeRN();  
1580 - $objAtividadeRN->atualizarVisualizacao($objAtividadeDTOVisualizacao);  
1581 -} 1553 + $arrObjUnidadeDTO = array_values($parObjProcedimentoDTO->getArrObjUnidadeDTO());
  1554 + $objUnidadeDTO = $arrObjUnidadeDTO[0];
1582 1555
1583 -private function enviarProcedimentoUnidade(ProcedimentoDTO $parObjProcedimentoDTO, $retransmissao = false)  
1584 -{  
1585 - $objAtividadeRN = new PenAtividadeRN();  
1586 - $objInfraException = new InfraException();  
1587 -  
1588 - if(!$parObjProcedimentoDTO->isSetArrObjUnidadeDTO() || count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) == 0) {  
1589 - $objInfraException->lancarValidacao('Unidade de destino do processo não informada.');  
1590 - }  
1591 -  
1592 - $arrObjUnidadeDTO = $parObjProcedimentoDTO->getArrObjUnidadeDTO();  
1593 -  
1594 - if(count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) > 1) {  
1595 - $objInfraException->lancarValidacao('Não permitido a indicação de múltiplas unidades de destino para um processo recebido externamente.');  
1596 - }  
1597 -  
1598 - $arrObjUnidadeDTO = array_values($parObjProcedimentoDTO->getArrObjUnidadeDTO());  
1599 - $objUnidadeDTO = $arrObjUnidadeDTO[0];  
1600 -  
1601 - $objProcedimentoDTO = new ProcedimentoDTO();  
1602 - $objProcedimentoDTO->retDblIdProcedimento();  
1603 - $objProcedimentoDTO->retNumIdTipoProcedimento();  
1604 - $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado();  
1605 - $objProcedimentoDTO->retNumIdTipoProcedimento();  
1606 - $objProcedimentoDTO->retStrNomeTipoProcedimento();  
1607 - $objProcedimentoDTO->retStrStaNivelAcessoGlobalProtocolo();  
1608 -// $objProcedimentoDTO->retStrStaEstadoProtocolo();  
1609 - $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($parObjProcedimentoDTO->getStrProtocoloProcedimentoFormatado());  
1610 -  
1611 - $objProcedimentoRN = new ProcedimentoRN();  
1612 - $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO);  
1613 -  
1614 - if ($objProcedimentoDTO == null || $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_SIGILOSO) {  
1615 - $objInfraException->lancarValidacao('Processo ['.$parObjProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'] não encontrado.');  
1616 - }  
1617 -  
1618 - if ($objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_RESTRITO) {  
1619 - $objAcessoDTO = new AcessoDTO();  
1620 - $objAcessoDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());  
1621 - $objAcessoDTO->setNumIdUnidade($objUnidadeDTO->getNumIdUnidade());  
1622 -  
1623 - $objAcessoRN = new AcessoRN();  
1624 - if ($objAcessoRN->contar($objAcessoDTO)==0) {  
1625 - // AVALIAR $objInfraException->adicionarValidacao('Unidade ['.$objUnidadeDTO->getStrSigla().'] não possui acesso ao processo ['.$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'].');  
1626 - }  
1627 - }  
1628 -  
1629 - $objPesquisaPendenciaDTO = new PesquisaPendenciaDTO();  
1630 - $objPesquisaPendenciaDTO->setDblIdProtocolo(array($objProcedimentoDTO->getDblIdProcedimento()));  
1631 - $objPesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());  
1632 - $objPesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1633 -  
1634 - if($retransmissao){  
1635 - $objAtividadeRN->setStatusPesquisa(false); 1556 + $objProcedimentoDTO = new ProcedimentoDTO();
  1557 + $objProcedimentoDTO->retDblIdProcedimento();
  1558 + $objProcedimentoDTO->retNumIdTipoProcedimento();
  1559 + $objProcedimentoDTO->retStrProtocoloProcedimentoFormatado();
  1560 + $objProcedimentoDTO->retNumIdTipoProcedimento();
  1561 + $objProcedimentoDTO->retStrNomeTipoProcedimento();
  1562 + $objProcedimentoDTO->retStrStaNivelAcessoGlobalProtocolo();
  1563 + $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($parObjProcedimentoDTO->getStrProtocoloProcedimentoFormatado());
1636 1564
1637 -} 1565 + $objProcedimentoRN = new ProcedimentoRN();
  1566 + $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO);
1638 1567
1639 -$objAtividadeDTO2 = new AtividadeDTO();  
1640 -$objAtividadeDTO2->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());  
1641 -$objAtividadeDTO2->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1642 -$objAtividadeDTO2->setDthConclusao(null); 1568 + if ($objProcedimentoDTO == null || $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_SIGILOSO) {
  1569 + $objInfraException->lancarValidacao('Processo ['.$parObjProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'] não encontrado.');
  1570 + }
1643 1571
  1572 + if ($objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()==ProtocoloRN::$NA_RESTRITO) {
  1573 + $objAcessoDTO = new AcessoDTO();
  1574 + $objAcessoDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());
  1575 + $objAcessoDTO->setNumIdUnidade($objUnidadeDTO->getNumIdUnidade());
1644 1576
1645 -if ($objAtividadeRN->contarRN0035($objAtividadeDTO2) == 0) {  
1646 - //reabertura automática  
1647 - $objReabrirProcessoDTO = new ReabrirProcessoDTO();  
1648 - $objReabrirProcessoDTO->setDblIdProcedimento($objAtividadeDTO2->getDblIdProtocolo());  
1649 - $objReabrirProcessoDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());  
1650 - $objReabrirProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1651 - $objProcedimentoRN->reabrirRN0966($objReabrirProcessoDTO);  
1652 -} 1577 + $objAcessoRN = new AcessoRN();
  1578 + if ($objAcessoRN->contar($objAcessoDTO)==0) {
  1579 + // AVALIAR $objInfraException->adicionarValidacao('Unidade ['.$objUnidadeDTO->getStrSigla().'] não possui acesso ao processo ['.$objProcedimentoDTO->getStrProtocoloProcedimentoFormatado().'].');
  1580 + }
  1581 + }
  1582 +
  1583 + $objPesquisaPendenciaDTO = new PesquisaPendenciaDTO();
  1584 + $objPesquisaPendenciaDTO->setDblIdProtocolo(array($objProcedimentoDTO->getDblIdProcedimento()));
  1585 + $objPesquisaPendenciaDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  1586 + $objPesquisaPendenciaDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1587 +
  1588 + if($retransmissao){
  1589 + $objAtividadeRN->setStatusPesquisa(false);
  1590 + }
  1591 +
  1592 + $objAtividadeDTO2 = new AtividadeDTO();
  1593 + $objAtividadeDTO2->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());
  1594 + $objAtividadeDTO2->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1595 + $objAtividadeDTO2->setDthConclusao(null);
  1596 +
  1597 + if ($objAtividadeRN->contarRN0035($objAtividadeDTO2) == 0) {
  1598 + //reabertura automática
  1599 + $objReabrirProcessoDTO = new ReabrirProcessoDTO();
  1600 + $objReabrirProcessoDTO->setDblIdProcedimento($objAtividadeDTO2->getDblIdProtocolo());
  1601 + $objReabrirProcessoDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  1602 + $objReabrirProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1603 + $objProcedimentoRN->reabrirRN0966($objReabrirProcessoDTO);
  1604 + }
1653 1605
1654 //$objPenAtividadeRN = new PenAtividadeRN(); 1606 //$objPenAtividadeRN = new PenAtividadeRN();
1655 -$arrObjProcedimentoDTO = $objAtividadeRN->listarPendenciasRN0754($objPesquisaPendenciaDTO); 1607 + $arrObjProcedimentoDTO = $objAtividadeRN->listarPendenciasRN0754($objPesquisaPendenciaDTO);
1656 1608
1657 -$objInfraException->lancarValidacoes(); 1609 + $objInfraException->lancarValidacoes();
1658 1610
1659 1611
1660 -$objEnviarProcessoDTO = new EnviarProcessoDTO();  
1661 -$objEnviarProcessoDTO->setArrAtividadesOrigem($arrObjProcedimentoDTO[0]->getArrObjAtividadeDTO()); 1612 + $objEnviarProcessoDTO = new EnviarProcessoDTO();
  1613 + $objEnviarProcessoDTO->setArrAtividadesOrigem($arrObjProcedimentoDTO[0]->getArrObjAtividadeDTO());
1662 1614
1663 -$objAtividadeDTO = new AtividadeDTO();  
1664 -$objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());  
1665 -$objAtividadeDTO->setNumIdUsuario(null);  
1666 -$objAtividadeDTO->setNumIdUsuarioOrigem(SessaoSEI::getInstance()->getNumIdUsuario());  
1667 -$objAtividadeDTO->setNumIdUnidade($objUnidadeDTO->getNumIdUnidade());  
1668 -$objAtividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1669 -$objEnviarProcessoDTO->setArrAtividades(array($objAtividadeDTO)); 1615 + $objAtividadeDTO = new AtividadeDTO();
  1616 + $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());
  1617 + $objAtividadeDTO->setNumIdUsuario(null);
  1618 + $objAtividadeDTO->setNumIdUsuarioOrigem(SessaoSEI::getInstance()->getNumIdUsuario());
  1619 + $objAtividadeDTO->setNumIdUnidade($objUnidadeDTO->getNumIdUnidade());
  1620 + $objAtividadeDTO->setNumIdUnidadeOrigem(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1621 + $objEnviarProcessoDTO->setArrAtividades(array($objAtividadeDTO));
1670 1622
1671 -$objPenParametroRN = new PenParametroRN(); 1623 + $objPenParametroRN = new PenParametroRN();
1672 1624
1673 -$objEnviarProcessoDTO->setStrSinManterAberto('N');  
1674 -$strEnviaEmailNotificacao = $objPenParametroRN->getParametro('PEN_ENVIA_EMAIL_NOTIFICACAO_RECEBIMENTO');  
1675 -$objEnviarProcessoDTO->setStrSinEnviarEmailNotificacao($strEnviaEmailNotificacao);  
1676 -$objEnviarProcessoDTO->setStrSinRemoverAnotacoes('S');  
1677 -$objEnviarProcessoDTO->setDtaPrazo(null);  
1678 -$objEnviarProcessoDTO->setNumDias(null);  
1679 -$objEnviarProcessoDTO->setStrSinDiasUteis('N'); 1625 + $objEnviarProcessoDTO->setStrSinManterAberto('N');
  1626 + $strEnviaEmailNotificacao = $objPenParametroRN->getParametro('PEN_ENVIA_EMAIL_NOTIFICACAO_RECEBIMENTO');
  1627 + $objEnviarProcessoDTO->setStrSinEnviarEmailNotificacao($strEnviaEmailNotificacao);
  1628 + $objEnviarProcessoDTO->setStrSinRemoverAnotacoes('S');
  1629 + $objEnviarProcessoDTO->setDtaPrazo(null);
  1630 + $objEnviarProcessoDTO->setNumDias(null);
  1631 + $objEnviarProcessoDTO->setStrSinDiasUteis('N');
1680 1632
1681 -$objAtividadeRN->enviarRN0023($objEnviarProcessoDTO); 1633 + $objAtividadeRN->enviarRN0023($objEnviarProcessoDTO);
1682 1634
1683 -} 1635 + }
1684 1636
1685 -/* Essa é a função estática de comparação */  
1686 -static function comparacaoOrdemDocumentos($parDocumento1, $parDocumento2)  
1687 -{  
1688 - $numOrdemDocumento1 = strtolower($parDocumento1->ordem);  
1689 - $numOrdemDocumento2 = strtolower($parDocumento2->ordem);  
1690 - return $numOrdemDocumento1 - $numOrdemDocumento2;  
1691 -} 1637 + /* Essa é a função estática de comparação */
  1638 + static function comparacaoOrdemDocumentos($parDocumento1, $parDocumento2)
  1639 + {
  1640 + $numOrdemDocumento1 = strtolower($parDocumento1->ordem);
  1641 + $numOrdemDocumento2 = strtolower($parDocumento2->ordem);
  1642 + return $numOrdemDocumento1 - $numOrdemDocumento2;
  1643 + }
1692 1644
1693 1645
1694 -protected function receberTramitesRecusadosControlado($parNumIdentificacaoTramite)  
1695 -{  
1696 - try {  
1697 - if (empty($parNumIdentificacaoTramite)) {  
1698 - throw new InfraException('Parâmetro $parNumIdentificacaoTramite não informado.');  
1699 - } 1646 + protected function receberTramitesRecusadosControlado($parNumIdentificacaoTramite)
  1647 + {
  1648 + try {
  1649 + if (empty($parNumIdentificacaoTramite)) {
  1650 + throw new InfraException('Parâmetro $parNumIdentificacaoTramite não informado.');
  1651 + }
1700 1652
1701 //Busca os dados do trâmite no barramento 1653 //Busca os dados do trâmite no barramento
1702 - $tramite = $this->objProcessoEletronicoRN->consultarTramites($parNumIdentificacaoTramite); 1654 + $tramite = $this->objProcessoEletronicoRN->consultarTramites($parNumIdentificacaoTramite);
1703 1655
1704 - if(!isset($tramite[0])){  
1705 - throw new InfraException("Não foi encontrado no PEN o trâmite de número {$parNumIdentificacaoTramite} para realizar a ciência da recusa");  
1706 - } 1656 + if(!isset($tramite[0])){
  1657 + throw new InfraException("Não foi encontrado no PEN o trâmite de número {$parNumIdentificacaoTramite} para realizar a ciência da recusa");
  1658 + }
1707 1659
1708 - $tramite = $tramite[0]; 1660 + $tramite = $tramite[0];
  1661 +
  1662 + $objTramiteDTO = new TramiteDTO();
  1663 + $objTramiteDTO->setNumIdTramite($parNumIdentificacaoTramite);
  1664 + $objTramiteDTO->retNumIdUnidade();
  1665 +
  1666 + $objTramiteBD = new TramiteBD(BancoSEI::getInstance());
  1667 + $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO);
  1668 +
  1669 + if(isset($objTramiteDTO)){
  1670 + //throw new InfraException("Não foi encontrado no sistema o trâmite de número {$parNumIdentificacaoTramite} para realizar a ciência da recusa");
  1671 + SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $objTramiteDTO->getNumIdUnidade());
  1672 +
  1673 + //Busca os dados do procedimento
  1674 + $this->gravarLogDebug("Buscando os dados de procedimento com NRE " . $tramite->NRE, 2);
  1675 + $objProcessoEletronicoDTO = new ProcessoEletronicoDTO();
  1676 + $objProcessoEletronicoDTO->setStrNumeroRegistro($tramite->NRE);
  1677 + $objProcessoEletronicoDTO->retDblIdProcedimento();
  1678 + $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->getObjInfraIBanco());
  1679 + $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO);
  1680 +
  1681 + //Busca a última atividade de trâmite externo
  1682 + $this->gravarLogDebug("Buscando última atividade de trâmite externo do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento(), 2);
  1683 + $objAtividadeDTO = new AtividadeDTO();
  1684 + $objAtividadeDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento());
  1685 + $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO));
  1686 + $objAtividadeDTO->setNumMaxRegistrosRetorno(1);
  1687 + $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC);
  1688 + $objAtividadeDTO->retNumIdAtividade();
  1689 + $objAtividadeBD = new AtividadeBD($this->getObjInfraIBanco());
  1690 + $objAtividadeDTO = $objAtividadeBD->consultar($objAtividadeDTO);
  1691 +
  1692 + //Busca a unidade de destino
  1693 + $this->gravarLogDebug("Buscando informações sobre a unidade de destino", 2);
  1694 + $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
  1695 + $objAtributoAndamentoDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade());
  1696 + $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO');
  1697 + $objAtributoAndamentoDTO->retStrValor();
  1698 + $objAtributoAndamentoBD = new AtributoAndamentoBD($this->getObjInfraIBanco());
  1699 + $objAtributoAndamentoDTO = $objAtributoAndamentoBD->consultar($objAtributoAndamentoDTO);
  1700 +
  1701 + //Monta o DTO de receber tramite recusado
  1702 + $this->gravarLogDebug("Preparando recebimento de trâmite " . $parNumIdentificacaoTramite . " recusado", 2);
  1703 + $objReceberTramiteRecusadoDTO = new ReceberTramiteRecusadoDTO();
  1704 + $objReceberTramiteRecusadoDTO->setNumIdTramite($parNumIdentificacaoTramite);
  1705 + $objReceberTramiteRecusadoDTO->setNumIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento());
  1706 + $objReceberTramiteRecusadoDTO->setNumIdUnidadeOrigem(null);
  1707 + $objReceberTramiteRecusadoDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO));
  1708 + $objReceberTramiteRecusadoDTO->setStrMotivoRecusa(utf8_decode($tramite->justificativaDaRecusa));
  1709 + $objReceberTramiteRecusadoDTO->setStrNomeUnidadeDestino($objAtributoAndamentoDTO->getStrValor());
  1710 +
  1711 + //Faz o tratamento do processo e do trâmite recusado
  1712 + $this->gravarLogDebug("Atualizando dados do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento() ." e do trâmite recusado " . $parNumIdentificacaoTramite, 2);
  1713 + $this->receberTramiteRecusadoInterno($objReceberTramiteRecusadoDTO);
  1714 + }
1709 1715
1710 - $objTramiteDTO = new TramiteDTO();  
1711 - $objTramiteDTO->setNumIdTramite($parNumIdentificacaoTramite);  
1712 - $objTramiteDTO->retNumIdUnidade(); 1716 + $this->gravarLogDebug("Notificando serviços do PEN sobre ciência da recusa do trâmite " . $parNumIdentificacaoTramite, 4);
  1717 + $this->objProcessoEletronicoRN->cienciaRecusa($parNumIdentificacaoTramite);
1713 1718
1714 - $objTramiteBD = new TramiteBD(BancoSEI::getInstance());  
1715 - $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); 1719 + } catch (Exception $e) {
  1720 + $mensagemErro = InfraException::inspecionar($e);
  1721 + $this->gravarLogDebug($mensagemErro);
  1722 + LogSEI::getInstance()->gravar($mensagemErro);
  1723 + throw $e;
  1724 + }
  1725 + }
1716 1726
1717 - if(isset($objTramiteDTO)){  
1718 - //throw new InfraException("Não foi encontrado no sistema o trâmite de número {$parNumIdentificacaoTramite} para realizar a ciência da recusa");  
1719 - SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $objTramiteDTO->getNumIdUnidade());  
1720 1727
1721 - //Busca os dados do procedimento  
1722 - $this->gravarLogDebug("Buscando os dados de procedimento com NRE " . $tramite->NRE, 2);  
1723 - $objProcessoEletronicoDTO = new ProcessoEletronicoDTO();  
1724 - $objProcessoEletronicoDTO->setStrNumeroRegistro($tramite->NRE);  
1725 - $objProcessoEletronicoDTO->retDblIdProcedimento();  
1726 - $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->getObjInfraIBanco());  
1727 - $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO); 1728 + protected function receberTramiteRecusadoInternoControlado(ReceberTramiteRecusadoDTO $objReceberTramiteRecusadoDTO)
  1729 + {
  1730 + //Verifica se processo está fechado, reabrindo-o caso necessário
  1731 + $objAtividadeDTO = new AtividadeDTO();
  1732 + $objAtividadeDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());
  1733 + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1734 + $objAtividadeDTO->setDthConclusao(null);
  1735 + $objAtividadeRN = new AtividadeRN();
  1736 + if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {
  1737 + $this->gravarLogDebug("Reabrindo automaticamente o processo", 4);
  1738 + $objReabrirProcessoDTO = new ReabrirProcessoDTO();
  1739 + $objReabrirProcessoDTO->setDblIdProcedimento($objReceberTramiteRecusadoDTO->getNumIdProtocolo());
  1740 + $objReabrirProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1741 + $objReabrirProcessoDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  1742 + $objProcedimentoRN = new ProcedimentoRN();
  1743 + $objProcedimentoRN->reabrirRN0966($objReabrirProcessoDTO);
  1744 + }
1728 1745
1729 - //Busca a última atividade de trâmite externo  
1730 - $this->gravarLogDebug("Buscando última atividade de trâmite externo do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento(), 2);  
1731 - $objAtividadeDTO = new AtividadeDTO();  
1732 - $objAtividadeDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento());  
1733 - $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO));  
1734 - $objAtividadeDTO->setNumMaxRegistrosRetorno(1);  
1735 - $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC);  
1736 - $objAtividadeDTO->retNumIdAtividade();  
1737 - $objAtividadeBD = new AtividadeBD($this->getObjInfraIBanco());  
1738 - $objAtividadeDTO = $objAtividadeBD->consultar($objAtividadeDTO);  
1739 -  
1740 - //Busca a unidade de destino  
1741 - $this->gravarLogDebug("Buscando informações sobre a unidade de destino", 2);  
1742 - $objAtributoAndamentoDTO = new AtributoAndamentoDTO();  
1743 - $objAtributoAndamentoDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade());  
1744 - $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO');  
1745 - $objAtributoAndamentoDTO->retStrValor();  
1746 - $objAtributoAndamentoBD = new AtributoAndamentoBD($this->getObjInfraIBanco());  
1747 - $objAtributoAndamentoDTO = $objAtributoAndamentoBD->consultar($objAtributoAndamentoDTO);  
1748 -  
1749 - //Monta o DTO de receber tramite recusado  
1750 - $this->gravarLogDebug("Preparando recebimento de trâmite " . $parNumIdentificacaoTramite . " recusado", 2);  
1751 - $objReceberTramiteRecusadoDTO = new ReceberTramiteRecusadoDTO();  
1752 - $objReceberTramiteRecusadoDTO->setNumIdTramite($parNumIdentificacaoTramite);  
1753 - $objReceberTramiteRecusadoDTO->setNumIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento());  
1754 - $objReceberTramiteRecusadoDTO->setNumIdUnidadeOrigem(null);  
1755 - $objReceberTramiteRecusadoDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO));  
1756 - $objReceberTramiteRecusadoDTO->setStrMotivoRecusa(utf8_decode($tramite->justificativaDaRecusa));  
1757 - $objReceberTramiteRecusadoDTO->setStrNomeUnidadeDestino($objAtributoAndamentoDTO->getStrValor());  
1758 -  
1759 - //Faz o tratamento do processo e do trâmite recusado  
1760 - $this->gravarLogDebug("Atualizando dados do processo " . $objProcessoEletronicoDTO->getDblIdProcedimento() ." e do trâmite recusado " . $parNumIdentificacaoTramite, 2);  
1761 - $this->receberTramiteRecusadoInterno($objReceberTramiteRecusadoDTO); 1746 + //Realiza o desbloqueio do processo
  1747 + $this->gravarLogDebug("Realizando o desbloqueio do processo", 4);
  1748 + $objProtocoloDTO = new ProtocoloDTO();
  1749 + $objProtocoloDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());
  1750 + $objProtocoloDTO->setStrStaEstado(ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO);
  1751 + $objProtocoloRN = new ProtocoloRN();
  1752 + if($objProtocoloRN->contarRN0667($objProtocoloDTO) != 0) {
  1753 + ProcessoEletronicoRN::desbloquearProcesso($objReceberTramiteRecusadoDTO->getNumIdProtocolo());
  1754 + } else {
  1755 + $this->gravarLogDebug("Processo " . $objReceberTramiteRecusadoDTO->getNumIdProtocolo() . " já se encontra desbloqueado!", 6);
1762 } 1756 }
1763 1757
1764 - $this->gravarLogDebug("Notificando serviços do PEN sobre ciência da recusa do trâmite " . $parNumIdentificacaoTramite, 4);  
1765 - $this->objProcessoEletronicoRN->cienciaRecusa($parNumIdentificacaoTramite); 1758 + //Adiciona um andamento para o trâmite recusado
  1759 + $this->gravarLogDebug("Adicionando andamento para registro da recusa do trâmite", 4);
  1760 + $arrObjAtributoAndamentoDTO = array();
  1761 + $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
  1762 + $objAtributoAndamentoDTO->setStrNome('MOTIVO');
  1763 + $objAtributoAndamentoDTO->setStrValor($objReceberTramiteRecusadoDTO->getStrMotivoRecusa());
  1764 + $objAtributoAndamentoDTO->setStrIdOrigem($objReceberTramiteRecusadoDTO->getNumIdUnidadeOrigem());
  1765 + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;
1766 1766
1767 - } catch (Exception $e) {  
1768 - $mensagemErro = InfraException::inspecionar($e);  
1769 - $this->gravarLogDebug($mensagemErro);  
1770 - LogSEI::getInstance()->gravar($mensagemErro);  
1771 - throw $e;  
1772 - }  
1773 -} 1767 + $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
  1768 + $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO');
  1769 + $objAtributoAndamentoDTO->setStrValor($objReceberTramiteRecusadoDTO->getStrNomeUnidadeDestino());
  1770 + $objAtributoAndamentoDTO->setStrIdOrigem($objReceberTramiteRecusadoDTO->getNumIdUnidadeOrigem());
  1771 + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;
1774 1772
  1773 + $objAtividadeDTO = new AtividadeDTO();
  1774 + $objAtividadeDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());
  1775 + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  1776 + $objAtividadeDTO->setNumIdTarefa($objReceberTramiteRecusadoDTO->getNumIdTarefa());
  1777 + $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO);
1775 1778
1776 -protected function receberTramiteRecusadoInternoControlado(ReceberTramiteRecusadoDTO $objReceberTramiteRecusadoDTO)  
1777 -{  
1778 - //Verifica se processo está fechado, reabrindo-o caso necessário  
1779 - $objAtividadeDTO = new AtividadeDTO();  
1780 - $objAtividadeDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());  
1781 - $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1782 - $objAtividadeDTO->setDthConclusao(null);  
1783 - $objAtividadeRN = new AtividadeRN();  
1784 - if ($objAtividadeRN->contarRN0035($objAtividadeDTO) == 0) {  
1785 - $this->gravarLogDebug("Reabrindo automaticamente o processo", 4);  
1786 - $objReabrirProcessoDTO = new ReabrirProcessoDTO();  
1787 - $objReabrirProcessoDTO->setDblIdProcedimento($objReceberTramiteRecusadoDTO->getNumIdProtocolo());  
1788 - $objReabrirProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1789 - $objReabrirProcessoDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());  
1790 - $objProcedimentoRN = new ProcedimentoRN();  
1791 - $objProcedimentoRN->reabrirRN0966($objReabrirProcessoDTO);  
1792 - } 1779 + $objAtividadeRN = new AtividadeRN();
  1780 + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
1793 1781
1794 - //Realiza o desbloqueio do processo  
1795 - $this->gravarLogDebug("Realizando o desbloqueio do processo", 4);  
1796 - $objProtocoloDTO = new ProtocoloDTO();  
1797 - $objProtocoloDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());  
1798 - $objProtocoloDTO->setStrStaEstado(ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO);  
1799 - $objProtocoloRN = new ProtocoloRN();  
1800 - if($objProtocoloRN->contarRN0667($objProtocoloDTO) != 0) {  
1801 - $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI();  
1802 - $objEntradaDesbloquearProcessoAPI->setIdProcedimento($objReceberTramiteRecusadoDTO->getNumIdProtocolo());  
1803 - $objSeiRN = new SeiRN();  
1804 - $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI);  
1805 - } else {  
1806 - $this->gravarLogDebug("Processo " . $objReceberTramiteRecusadoDTO->getNumIdProtocolo() . " já se encontra desbloqueado!", 6); 1782 + //Sinaliza na PenProtocolo que o processo obteve recusa
  1783 + $this->gravarLogDebug("Atualizando protocolo sobre obtenção da ciência de recusa", 4);
  1784 + $objProtocolo = new PenProtocoloDTO();
  1785 + $objProtocolo->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());
  1786 + $objProtocolo->setStrSinObteveRecusa('S');
  1787 + $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco());
  1788 + $objProtocoloBD->alterar($objProtocolo);
1807 } 1789 }
1808 1790
1809 - //Adiciona um andamento para o trâmite recusado  
1810 - $this->gravarLogDebug("Adicionando andamento para registro da recusa do trâmite", 4);  
1811 - $arrObjAtributoAndamentoDTO = array();  
1812 - $objAtributoAndamentoDTO = new AtributoAndamentoDTO();  
1813 - $objAtributoAndamentoDTO->setStrNome('MOTIVO');  
1814 - $objAtributoAndamentoDTO->setStrValor($objReceberTramiteRecusadoDTO->getStrMotivoRecusa());  
1815 - $objAtributoAndamentoDTO->setStrIdOrigem($objReceberTramiteRecusadoDTO->getNumIdUnidadeOrigem());  
1816 - $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;  
1817 -  
1818 - $objAtributoAndamentoDTO = new AtributoAndamentoDTO();  
1819 - $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO');  
1820 - $objAtributoAndamentoDTO->setStrValor($objReceberTramiteRecusadoDTO->getStrNomeUnidadeDestino());  
1821 - $objAtributoAndamentoDTO->setStrIdOrigem($objReceberTramiteRecusadoDTO->getNumIdUnidadeOrigem());  
1822 - $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;  
1823 -  
1824 - $objAtividadeDTO = new AtividadeDTO();  
1825 - $objAtividadeDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());  
1826 - $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());  
1827 - $objAtividadeDTO->setNumIdTarefa($objReceberTramiteRecusadoDTO->getNumIdTarefa());  
1828 - $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO);  
1829 -  
1830 - $objAtividadeRN = new AtividadeRN();  
1831 - $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);  
1832 -  
1833 - //Sinaliza na PenProtocolo que o processo obteve recusa  
1834 - $this->gravarLogDebug("Atualizando protocolo sobre obtenção da ciência de recusa", 4);  
1835 - $objProtocolo = new PenProtocoloDTO();  
1836 - $objProtocolo->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo());  
1837 - $objProtocolo->setStrSinObteveRecusa('S');  
1838 - $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco());  
1839 - $objProtocoloBD->alterar($objProtocolo);  
1840 -}  
1841 -  
1842 1791
1843 /** 1792 /**
1844 * Método que realiza a validação da extensão dos componentes digitais a serem recebidos 1793 * Método que realiza a validação da extensão dos componentes digitais a serem recebidos
@@ -1875,8 +1824,6 @@ protected function receberTramiteRecusadoInternoControlado(ReceberTramiteRecusad @@ -1875,8 +1824,6 @@ protected function receberTramiteRecusadoInternoControlado(ReceberTramiteRecusad
1875 $this->objProcessoEletronicoRN->recusarTramite($parIdTramite, 'Componentes digitais com formato inválido no destinatário. ', ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_FORMATO); 1824 $this->objProcessoEletronicoRN->recusarTramite($parIdTramite, 'Componentes digitais com formato inválido no destinatário. ', ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_FORMATO);
1876 throw new InfraException("Processo recusado devido a existência de documento em formato {$extDocumento} não permitido pelo sistema. "); 1825 throw new InfraException("Processo recusado devido a existência de documento em formato {$extDocumento} não permitido pelo sistema. ");
1877 } 1826 }
1878 -  
1879 -  
1880 } 1827 }
1881 } 1828 }
1882 1829