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 624  
625 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 630 public function registrarAndamentoExpedicaoAbortada($dblIdProtocolo)
638 631 {
639 632 //Seta todos os atributos do histrico de aborto da expedio
... ... @@ -2209,7 +2202,7 @@ class ExpedirProcedimentoRN extends InfraRN {
2209 2202 $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco());
2210 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 2247 //Verifica se o trâmite est com o status de iniciado
2255 2248 if ($tramite->situacaoAtual == ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO) {
2256 2249 $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT);
2257   -
2258 2250 return true;
2259 2251 }
2260 2252  
... ... @@ -2293,11 +2285,7 @@ class ExpedirProcedimentoRN extends InfraRN {
2293 2285 }
2294 2286  
2295 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 2290 $objDTOFiltro = new TramiteDTO();
2303 2291 $objDTOFiltro->setNumIdTramite($tramite->IDT);
... ...
rn/ProcessarPendenciasRN.php
... ... @@ -112,9 +112,13 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa
112 112 catch(Exception $e){
113 113 $this->gravarLogDebug(InfraException::inspecionar($e), 0, true);
114 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 1 <?php
  2 +
  3 +
  4 +class ProcessoNaoPodeSerDesbloqueadoException extends Exception {}
  5 +
2 6 //@TODOJOIN: VERIFICAR SE NÃO EXISTEM TRY CATCH QUE OCULTAM ERROS. CASO EXISTAM CATCH COM EXEPTION DO PHP, RETIRALOS
3 7 class ProcessoEletronicoRN extends InfraRN {
4 8  
... ... @@ -1254,15 +1258,8 @@ class ProcessoEletronicoRN extends InfraRN {
1254 1258 * @throws Exception|InfraException
1255 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 1263 //Requisita o cancelamento
1267 1264 $parametros = new stdClass();
1268 1265 $parametros->IDT = $idTramite;
... ... @@ -1288,7 +1285,6 @@ class ProcessoEletronicoRN extends InfraRN {
1288 1285 */
1289 1286 public function recusarTramite($idTramite, $justificativa, $motivo) {
1290 1287 try {
1291   -
1292 1288 //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->recusaDeTramite = new stdClass()
1293 1289 $parametros = new stdClass();
1294 1290 $parametros->recusaDeTramite = new stdClass();
... ... @@ -1426,6 +1422,19 @@ class ProcessoEletronicoRN extends InfraRN {
1426 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 30 return $arrObjPendencias;
31 31 }
32 32  
33   -
34 33 protected function receberProcedimentoControlado($parNumIdentificacaoTramite)
35 34 {
36 35 try {
... ... @@ -186,6 +185,8 @@ class ReceberProcedimentoRN extends InfraRN
186 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 190 if(count($arrayHashPendentes) > 0){
190 191 //Obter dados dos componetes digitais
191 192 $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4);
... ... @@ -553,14 +554,12 @@ class ReceberProcedimentoRN extends InfraRN
553 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 558 if ($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura) {
558 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 564 //TODO: Obter código da unidade através de mapeamento entre SEI e Barramento
566 565 $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario);
... ... @@ -616,8 +615,8 @@ class ReceberProcedimentoRN extends InfraRN
616 615 return $numIdUnidade;
617 616 }
618 617  
619   - private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento) {
620   -
  618 + private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento)
  619 + {
621 620 $objUnidadeDTO = new PenUnidadeDTO();
622 621 $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura);
623 622 $objUnidadeDTO->setStrSinAtivo('S');
... ... @@ -647,8 +646,8 @@ class ReceberProcedimentoRN extends InfraRN
647 646 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
648 647 }
649 648  
650   - private function gerarProcedimento($objMetadadosProcedimento, $objProcesso){
651   -
  649 + private function gerarProcedimento($objMetadadosProcedimento, $objProcesso)
  650 + {
652 651 if(!isset($objMetadadosProcedimento)){
653 652 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.');
654 653 }
... ... @@ -1022,12 +1021,10 @@ class ReceberProcedimentoRN extends InfraRN
1022 1021 return $objUnidadeDTOEnvio;
1023 1022 }
1024 1023  
1025   -
1026 1024 //TODO: Grande parte da regra de negócio se baseou em SEIRN:199 - incluirDocumento.
1027 1025 //Avaliar a refatoração para impedir a duplicação de código
1028 1026 private function atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $parObjMetadadosProcedimento)
1029 1027 {
1030   -
1031 1028 if(!isset($objProcesso)) {
1032 1029 throw new InfraException('Parâmetro $objProcesso não informado.');
1033 1030 }
... ... @@ -1067,397 +1064,358 @@ class ReceberProcedimentoRN extends InfraRN
1067 1064 $objSeiRN = new SeiRN();
1068 1065  
1069 1066 $arrObjDocumentoDTO = array();
1070   -
1071 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 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 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 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 1173 //TODO: Analisar se o modelo de dados do PEN possui destinatários específicos para os documentos
1185 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 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 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 1284 //TODO: Método deverá poderá ser transferido para a classe responsável por fazer o recebimento dos componentes digitais
1318 1285 private function atribuirComponentesDigitais(DocumentoDTO $parObjDocumentoDTO, $parArrObjComponentesDigitais)
1319 1286 {
1320 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 1291 //TODO: Aplicar mesmas validações realizadas no momento do upload de um documento InfraPagina::processarUpload
1325 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 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 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 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 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 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 1419 $objSerieDTO = null;
1462 1420  
1463 1421 $objMapDTO = new PenRelTipoDocMapRecebidoDTO();
... ... @@ -1468,377 +1426,368 @@ private function obterUnidadeMapeada($numIdentificacaoDaEstrutura)
1468 1426 $objMapDTO = $objGenericoBD->consultar($objMapDTO);
1469 1427  
1470 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 1465 //TODO: Método identico ao localizado na classe SeiRN:2214
1508 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 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 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 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 1824 $this->objProcessoEletronicoRN->recusarTramite($parIdTramite, 'Componentes digitais com formato inválido no destinatário. ', ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_FORMATO);
1876 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  
... ...