Commit f1cd004f37de163bc3f7500189f87586530e7c56

Authored by Guilherme Andrade Del Cantoni
1 parent 7d9fa19d

Ajuste parcial para adaptação do recebimento de processos no SEI 3.1

rn/ProcessarPendenciasRN.php
... ... @@ -114,7 +114,8 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa
114 114 LogSEI::getInstance()->gravar(InfraException::inspecionar($e));
115 115  
116 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)) {
  117 + $bolDeveRecusarTramite = !($e instanceof InfraException && $e->getObjException() != null && $e->getObjException() instanceof ProcessoNaoPodeSerDesbloqueadoException);
  118 + if($bolDeveRecusarTramite) {
118 119 $objProcessoEletronicoRN = new ProcessoEletronicoRN();
119 120 $strMensagem = ($e instanceof InfraException) ? $e->__toString() : $e->getMessage();
120 121 $objProcessoEletronicoRN->recusarTramite($numIdentificacaoTramite, $strMensagem, ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_OUTROU);
... ...
rn/ProcessoEletronicoRN.php
... ... @@ -1435,6 +1435,33 @@ class ProcessoEletronicoRN extends InfraRN {
1435 1435 throw new ProcessoNaoPodeSerDesbloqueadoException("Erro ao desbloquear processo", 1, $e);
1436 1436 }
1437 1437 }
  1438 +
  1439 + /**
  1440 + * Busca a unidade ao qual o processo foi anteriormente expedido.
  1441 + * Caso seja o primeiro trâmite, considera a unidade atual
  1442 + *
  1443 + * @return integer Id da unidade
  1444 + */
  1445 + public static function obterUnidadeParaRegistroDocumento($parDblIdProcedimento)
  1446 + {
  1447 + $objAtividadeDTO = new AtividadeDTO();
  1448 + $objAtividadeDTO->setStrIdTarefaModuloTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO);
  1449 + $objAtividadeDTO->setDblIdProcedimentoProtocolo($parDblIdProcedimento);
  1450 + $objAtividadeDTO->setOrd('Conclusao', InfraDTO::$TIPO_ORDENACAO_DESC);
  1451 + $objAtividadeDTO->setNumMaxRegistrosRetorno(1);
  1452 + $objAtividadeDTO->retNumIdUnidade();
  1453 +
  1454 + $objAtividadeRN = new AtividadeRN();
  1455 + $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO);
  1456 + $numIdUnidade = SessaoSEI::getInstance()->getNumIdUnidadeAtual();
  1457 +
  1458 + //if(!empty($arrObjAtividadeDTO)){
  1459 + // $objAtividadeDTO = $arrObjAtividadeDTO[0];
  1460 + // $numIdUnidade = $objAtividadeDTO->getNumIdUnidade();
  1461 + //}
  1462 +
  1463 + return $numIdUnidade;
  1464 + }
1438 1465 }
1439 1466  
1440 1467  
... ...
rn/ReceberComponenteDigitalRN.php
... ... @@ -142,15 +142,8 @@ class ReceberComponenteDigitalRN extends InfraRN
142 142  
143 143 $objDocumentoDTO->setObjProtocoloDTO($objProtocoloDTO);
144 144 $objProtocoloDTO->setArrObjAnexoDTO(array($parObjAnexoDTO));
145   - $objDocumentoDTO = $objDocumentoRN->alterarRN0004($objDocumentoDTO);
146   -
147   - // @join_tec US029 (#3790)
148   - /*$objObservacaoDTO = new ObservacaoDTO();
149   - $objObservacaoDTO->setDblIdProtocolo($objProtocoloDTO->getDblIdProtocolo());
150   - $objObservacaoDTO->setStrDescricao(sprintf('Número SEI do Documento na Origem: %s', $strProtocoloFormatado));
151   - $objObservacaoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
152 145  
153   - $objObservacaoBD = new ObservacaoRN();
154   - $objObservacaoBD->cadastrarRN0222($objObservacaoDTO);*/
  146 + $objDocumentoDTO->setStrSinBloqueado('S');
  147 + $objDocumentoDTO = $objDocumentoRN->alterarRN0004($objDocumentoDTO);
155 148 }
156 149 }
... ...
rn/ReceberProcedimentoRN.php
... ... @@ -17,6 +17,7 @@ class ReceberProcedimentoRN extends InfraRN
17 17 $this->objInfraParametro = new InfraParametro(BancoSEI::getInstance());
18 18 $this->objProcessoEletronicoRN = new ProcessoEletronicoRN();
19 19 $this->objProcedimentoAndamentoRN = new ProcedimentoAndamentoRN();
  20 + $this->objReceberComponenteDigitalRN = new ReceberComponenteDigitalRN();
20 21 }
21 22  
22 23 protected function inicializarObjInfraIBanco()
... ... @@ -91,8 +92,6 @@ class ReceberProcedimentoRN extends InfraRN
91 92 $this->verificarPermissoesDiretorios($parNumIdentificacaoTramite);
92 93  
93 94 $this->gravarLogDebug("Obtendo metadados dos componentes digitais do processo", 4);
94   - $arrStrNomeDocumento = $this->listarMetaDadosComponentesDigitais($objProcesso);
95   - $receberComponenteDigitalRN = new ReceberComponenteDigitalRN();
96 95 $arrAnexosComponentes = array();
97 96 $arrayHash = array();
98 97 $arrayHashPendentes = array();
... ... @@ -127,12 +126,12 @@ class ReceberProcedimentoRN extends InfraRN
127 126 //Obter os dados do componente digital
128 127 $this->gravarLogDebug("Baixando componente digital $numOrdemComponente", 6);
129 128 $objComponenteDigital = $this->objProcessoEletronicoRN->receberComponenteDigital($parNumIdentificacaoTramite, $componentePendente, $objTramite->protocolo);
130   - $arrAnexosComponentes[$key][$componentePendente] = $receberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital);
  129 + $arrAnexosComponentes[$key][$componentePendente] = $this->objReceberComponenteDigitalRN->copiarComponenteDigitalPastaTemporaria($objComponenteDigital);
131 130 $arrAnexosComponentes[$key]['recebido'] = false;
132 131  
133 132 //Valida a integridade do hash
134 133 $this->gravarLogDebug("Validando integridade de componente digital $numOrdemComponente", 6);
135   - $receberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente], $componentePendente, $parNumIdentificacaoTramite);
  134 + $this->objReceberComponenteDigitalRN->validarIntegridadeDoComponenteDigital($arrAnexosComponentes[$key][$componentePendente], $componentePendente, $parNumIdentificacaoTramite);
136 135 } else {
137 136 $this->gravarLogDebug("Componente digital $numOrdemComponente desconsiderado por já fazer parte do processo", 6);
138 137 }
... ... @@ -140,7 +139,7 @@ class ReceberProcedimentoRN extends InfraRN
140 139 }
141 140  
142 141 if(count($arrAnexosComponentes) > 0){
143   - $receberComponenteDigitalRN->setArrAnexos($arrAnexosComponentes);
  142 + $this->objReceberComponenteDigitalRN->setArrAnexos($arrAnexosComponentes);
144 143 }
145 144  
146 145 #############################TERMINA O RECEBIMENTO DOS COMPONENTES DIGITAIS US010################################################
... ... @@ -155,7 +154,13 @@ class ReceberProcedimentoRN extends InfraRN
155 154 }
156 155  
157 156 $this->gravarLogDebug("Persistindo/atualizando dados do processo com NRE " . $strNumeroRegistro, 4);
158   - $objProcedimentoDTO = $this->registrarProcesso($strNumeroRegistro, $parNumIdentificacaoTramite, $objProcesso, $objMetadadosProcedimento);
  157 + $objProcedimentoDTO = $this->registrarProcesso(
  158 + $strNumeroRegistro,
  159 + $parNumIdentificacaoTramite,
  160 + $objProcesso,
  161 + $objMetadadosProcedimento,
  162 + $arrayHash,
  163 + $arrayHashPendentes);
159 164  
160 165 // @join_tec US008.08 (#23092)
161 166 $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), $objProcedimentoDTO->getDblIdProcedimento());
... ... @@ -185,70 +190,20 @@ class ReceberProcedimentoRN extends InfraRN
185 190 throw new InfraException("Desconsiderando recebimento do processo devido a situação de trâmite inconsistente: " . $objTramite->situacaoAtual);
186 191 }
187 192  
188   -//return ;
189   -
190   - if(count($arrayHashPendentes) > 0){
191   - //Obter dados dos componetes digitais
192   - $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4);
193   - $objComponenteDigitalDTO = new ComponenteDigitalDTO();
194   - $objComponenteDigitalDTO->setStrNumeroRegistro($strNumeroRegistro);
195   - $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite);
196   - $objComponenteDigitalDTO->setStrHashConteudo($arrayHash, InfraDTO::$OPER_IN);
197   - $objComponenteDigitalDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_ASC);
198   - $objComponenteDigitalDTO->retDblIdDocumento();
199   - $objComponenteDigitalDTO->retNumTicketEnvioComponentes();
200   - $objComponenteDigitalDTO->retStrProtocoloDocumentoFormatado();
201   - $objComponenteDigitalDTO->retStrHashConteudo();
202   - $objComponenteDigitalDTO->retStrProtocolo();
203   - $objComponenteDigitalDTO->retStrNumeroRegistro();
204   - $objComponenteDigitalDTO->retNumIdTramite();
205   - $objComponenteDigitalDTO->retStrNome();
206   - $objComponenteDigitalDTO->retStrStaEstadoProtocolo();
207   -
208   - $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco());
209   - $arrObjComponentesDigitaisDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO);
210   -
211   - if ($objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0) {
212   - $objReceberComponenteDigitalRN = $receberComponenteDigitalRN;
213   -
214   - //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
215   - $numIdUnidade = $this->obterUnidadeParaRegistroDocumento($objProcedimentoDTO->getDblIdProcedimento());
216   - SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
217   -
218   - try{
219   - foreach($arrObjComponentesDigitaisDTO as $objComponenteDigitalDTOEnviado) {
220   - if($objComponenteDigitalDTOEnviado->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){
221   - $strHash = $objComponenteDigitalDTOEnviado->getStrHashConteudo();
222   - $strNomeDocumento = (array_key_exists($strHash, $arrStrNomeDocumento)) ? $arrStrNomeDocumento[$strHash]['especieNome'] : '[Desconhecido]';
223   - $objReceberComponenteDigitalRN->receberComponenteDigital($objComponenteDigitalDTOEnviado);
224   -
225   - $strMensagemRecebimento = sprintf('Recebendo %s %s', $strNomeDocumento, $objComponenteDigitalDTOEnviado->getStrProtocoloDocumentoFormatado());
226   - $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento($strMensagemRecebimento, 'S'));
227   - $this->gravarLogDebug($strMensagemRecebimento, 6);
228   - }
229   - }
230   - } finally {
231   - $objPenParametroRN = new PenParametroRN();
232   - $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
233   - SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
234   - }
235   -
236   - // @join_tec US008.10 (#23092)
237   - $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Todos os componentes digitais foram recebidos', 'S'));
238   - }else{
239   - $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Nenhum componente digital para receber', 'S'));
240   - }
241   - }
242   - }
  193 + //Atribui componentes digitais baixados anteriormente aos documentos do processo
  194 + $this->atribuirComponentesDigitaisAosDocumentos($objProcedimentoDTO, $strNumeroRegistro, $parNumIdentificacaoTramite, $arrayHash, $arrayHashPendentes);
243 195  
244   - $this->gravarLogDebug("Enviando recibo de conclusão do trâmite $parNumIdentificacaoTramite", 6);
245   - $objEnviarReciboTramiteRN = new EnviarReciboTramiteRN();
246   - $objEnviarReciboTramiteRN->enviarReciboTramiteProcesso($parNumIdentificacaoTramite, $arrayHash);
  196 + //Finalizar o envio do documento para a respectiva unidade
  197 + $this->enviarProcedimentoUnidade($objProcedimentoDTO);
247 198  
248   - $this->gravarLogDebug("Registrando a conclusão do recebimento do trâmite $parNumIdentificacaoTramite", 6);
249   - $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_PROCESSO);
250   - $objPenTramiteProcessadoRN->setRecebido($parNumIdentificacaoTramite);
  199 + $this->gravarLogDebug("Enviando recibo de conclusão do trâmite $parNumIdentificacaoTramite", 6);
  200 + $objEnviarReciboTramiteRN = new EnviarReciboTramiteRN();
  201 + $objEnviarReciboTramiteRN->enviarReciboTramiteProcesso($parNumIdentificacaoTramite, $arrayHash);
251 202  
  203 + $this->gravarLogDebug("Registrando a conclusão do recebimento do trâmite $parNumIdentificacaoTramite", 6);
  204 + $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_PROCESSO);
  205 + $objPenTramiteProcessadoRN->setRecebido($parNumIdentificacaoTramite);
  206 + }
252 207 } catch (Exception $e) {
253 208 $mensagemErro = InfraException::inspecionar($e);
254 209 $this->gravarLogDebug($mensagemErro);
... ... @@ -258,6 +213,71 @@ class ReceberProcedimentoRN extends InfraRN
258 213 }
259 214  
260 215 /**
  216 + * Método responsável por atribuir a lista de componentes digitais baixados do PEN aos seus respectivos documentos no SEI
  217 + *
  218 + * @param ProcedimentoDTO $parObjProcedimentoDTO Protocolo que está sendo recebido pelo SEI
  219 + * @param Array $parArrHashComponentesPendentes Lista de componentes pendentes para vinculação aos documentos
  220 + * @return [type] [description]
  221 + */
  222 + private function atribuirComponentesDigitaisAosDocumentos(ProcedimentoDTO $parObjProcedimentoDTO, $parStrNumeroRegistro, $parNumIdentificacaoTramite,
  223 + $parArrHashComponentes, $parArrHashComponentesPendentes)
  224 + {
  225 + if(count($parArrHashComponentesPendentes) > 0){
  226 + //Obter dados dos componetes digitais
  227 + $this->gravarLogDebug("Iniciando o recebimento dos componentes digitais pendentes", 4);
  228 + $objComponenteDigitalDTO = new ComponenteDigitalDTO();
  229 + $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro);
  230 + $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite);
  231 + $objComponenteDigitalDTO->setStrHashConteudo($parArrHashComponentes, InfraDTO::$OPER_IN);
  232 + $objComponenteDigitalDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_ASC);
  233 + $objComponenteDigitalDTO->retDblIdDocumento();
  234 + $objComponenteDigitalDTO->retNumTicketEnvioComponentes();
  235 + $objComponenteDigitalDTO->retStrProtocoloDocumentoFormatado();
  236 + $objComponenteDigitalDTO->retStrHashConteudo();
  237 + $objComponenteDigitalDTO->retStrProtocolo();
  238 + $objComponenteDigitalDTO->retStrNumeroRegistro();
  239 + $objComponenteDigitalDTO->retNumIdTramite();
  240 + $objComponenteDigitalDTO->retStrNome();
  241 + $objComponenteDigitalDTO->retStrStaEstadoProtocolo();
  242 +
  243 + $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco());
  244 + $arrObjComponentesDigitaisDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO);
  245 +
  246 + if ($objComponenteDigitalBD->contar($objComponenteDigitalDTO) > 0) {
  247 + //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
  248 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parObjProcedimentoDTO->getDblIdProcedimento());
  249 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
  250 +
  251 + try{
  252 + $arrStrNomeDocumento = $this->listarMetaDadosComponentesDigitais($objProcesso);
  253 + foreach($arrObjComponentesDigitaisDTO as $objComponenteDigitalDTOEnviado) {
  254 + if($objComponenteDigitalDTOEnviado->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){
  255 + $strHash = $objComponenteDigitalDTOEnviado->getStrHashConteudo();
  256 + $strNomeDocumento = array_key_exists($strHash, $arrStrNomeDocumento) ? $arrStrNomeDocumento[$strHash]['especieNome'] : '[Desconhecido]';
  257 +
  258 + //Todo: Parei aqui: Verificar se documento já foi recebido anteriormente para poder registrar
  259 + //Alterar somente de documentos não bloqueados
  260 + $this->objReceberComponenteDigitalRN->receberComponenteDigital($objComponenteDigitalDTOEnviado);
  261 + $strMensagemRecebimento = sprintf('Recebendo %s %s', $strNomeDocumento, $objComponenteDigitalDTOEnviado->getStrProtocoloDocumentoFormatado());
  262 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento($strMensagemRecebimento, 'S'));
  263 + $this->gravarLogDebug($strMensagemRecebimento, 6);
  264 + }
  265 + }
  266 + } finally {
  267 + $objPenParametroRN = new PenParametroRN();
  268 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  269 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
  270 + }
  271 +
  272 + // @join_tec US008.10 (#23092)
  273 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Todos os componentes digitais foram recebidos', 'S'));
  274 + }else{
  275 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Nenhum componente digital para receber', 'S'));
  276 + }
  277 + }
  278 + }
  279 +
  280 + /**
261 281 * Método para recuperar a lista de todos os hashs dos componentes digitais presentes no protocolo recebido
262 282 *
263 283 * @return Array Lista de hashs dos componentes digitais
... ... @@ -418,7 +438,8 @@ class ReceberProcedimentoRN extends InfraRN
418 438 }
419 439  
420 440  
421   - private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjMetadadosProcedimento)
  441 + private function registrarProcesso($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjMetadadosProcedimento,
  442 + $parArrHashComponentes, $parArrHashComponentesPendentes)
422 443 {
423 444 // Validação dos dados do processo recebido
424 445 $objInfraException = new InfraException();
... ... @@ -434,10 +455,10 @@ class ReceberProcedimentoRN extends InfraRN
434 455 $dblIdProcedimento = $this->consultarProcedimentoExistente($parStrNumeroRegistro, $parObjProcesso->protocolo);
435 456  
436 457 if(isset($dblIdProcedimento)){
437   - $objProcedimentoDTO = $this->atualizarProcedimento($dblIdProcedimento, $parObjMetadadosProcedimento, $parObjProcesso);
  458 + $objProcedimentoDTO = $this->atualizarProcedimento($dblIdProcedimento, $parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite, $parArrHashComponentes, $parArrHashComponentesPendentes);
438 459 }
439 460 else {
440   - $objProcedimentoDTO = $this->gerarProcedimento($parObjMetadadosProcedimento, $parObjProcesso);
  461 + $objProcedimentoDTO = $this->gerarProcedimento($parObjMetadadosProcedimento, $parObjProcesso, $parNumIdentificacaoTramite, $parArrHashComponentes, $parArrHashComponentesPendentes);
441 462 }
442 463  
443 464 //TODO: Fazer o envio de cada um dos procedimentos apensados (Processo principal e seus apensados, caso exista)
... ... @@ -499,7 +520,7 @@ class ReceberProcedimentoRN extends InfraRN
499 520 return $dblIdProcedimento;
500 521 }
501 522  
502   - private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProcedimento, $objProcesso)
  523 + private function atualizarProcedimento($parDblIdProcedimento, $objMetadadosProcedimento, $objProcesso, $parNumIdTramite, $parArrHashComponentes, $parArrHashComponentesPendentes)
503 524 {
504 525 if(!isset($parDblIdProcedimento)){
505 526 throw new InfraException('Parâmetro $parDblIdProcedimento não informado.');
... ... @@ -518,7 +539,7 @@ class ReceberProcedimentoRN extends InfraRN
518 539  
519 540 //Busca a unidade em ao qual o processo foi anteriormente expedido
520 541 //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
521   - $numIdUnidade = $this->obterUnidadeParaRegistroDocumento($parDblIdProcedimento);
  542 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parDblIdProcedimento);
522 543 SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
523 544  
524 545 try {
... ... @@ -565,6 +586,7 @@ class ReceberProcedimentoRN extends InfraRN
565 586 $objUnidadeDTO = $this->atribuirDadosUnidade($objProcedimentoDTO, $objDestinatario);
566 587  
567 588 $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento);
  589 +
568 590 $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTO);
569 591  
570 592 //TODO: Avaliar necessidade de restringir referência circular entre processos
... ... @@ -576,7 +598,7 @@ class ReceberProcedimentoRN extends InfraRN
576 598 $this->alterarMetadadosProcedimento($objProcedimentoDTO->getDblIdProcedimento(), $objProcesso);
577 599  
578 600 //Finaliza o envio do documento para a respectiva unidade
579   - $this->enviarProcedimentoUnidade($objProcedimentoDTO, true);
  601 + //$this->enviarProcedimentoUnidade($objProcedimentoDTO, true);
580 602  
581 603 return $objProcedimentoDTO;
582 604  
... ... @@ -588,32 +610,7 @@ class ReceberProcedimentoRN extends InfraRN
588 610 }
589 611  
590 612  
591   - /**
592   - * Busca a unidade ao qual o processo foi anteriormente expedido.
593   - * Caso seja o primeiro trâmite, considera a unidade atual
594   - *
595   - * @return integer Id da unidade
596   - */
597   - private function obterUnidadeParaRegistroDocumento($parDblIdProcedimento)
598   - {
599   - $objAtividadeDTO = new AtividadeDTO();
600   - $objAtividadeDTO->setStrIdTarefaModuloTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO);
601   - $objAtividadeDTO->setDblIdProcedimentoProtocolo($parDblIdProcedimento);
602   - $objAtividadeDTO->setOrd('Conclusao', InfraDTO::$TIPO_ORDENACAO_DESC);
603   - $objAtividadeDTO->setNumMaxRegistrosRetorno(1);
604   - $objAtividadeDTO->retNumIdUnidade();
605   -
606   - $objAtividadeRN = new AtividadeRN();
607   - $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO);
608   - $numIdUnidade = SessaoSEI::getInstance()->getNumIdUnidadeAtual();
609 613  
610   - if(!empty($arrObjAtividadeDTO)){
611   - $objAtividadeDTO = $arrObjAtividadeDTO[0];
612   - $numIdUnidade = $objAtividadeDTO->getNumIdUnidade();
613   - }
614   -
615   - return $numIdUnidade;
616   - }
617 614  
618 615 private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento)
619 616 {
... ... @@ -646,7 +643,7 @@ class ReceberProcedimentoRN extends InfraRN
646 643 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
647 644 }
648 645  
649   - private function gerarProcedimento($objMetadadosProcedimento, $objProcesso)
  646 + private function gerarProcedimento($objMetadadosProcedimento, $objProcesso, $parNumIdTramite, $parArrHashComponentes, $parArrHashComponentesPendentes)
650 647 {
651 648 if(!isset($objMetadadosProcedimento)){
652 649 throw new InfraException('Parâmetro $objMetadadosProcedimento não informado.');
... ... @@ -769,14 +766,15 @@ class ReceberProcedimentoRN extends InfraRN
769 766  
770 767 $this->registrarAndamentoRecebimentoProcesso($objProcedimentoDTO, $objMetadadosProcedimento);
771 768 $this->atribuirDocumentos($objProcedimentoDTO, $objProcesso, $objUnidadeDTO, $objMetadadosProcedimento);
  769 +
772 770 $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTOGerado);
773 771  
774 772 //TODO: Avaliar necessidade de restringir referência circular entre processos
775 773 //TODO: Registrar que o processo foi recebido com outros apensados. Necessário para posterior reenvio
776 774 $this->atribuirProcessosApensados($objProcedimentoDTO, $objProcesso->processoApensado);
777 775  
778   - //TODO: Finalizar o envio do documento para a respectiva unidade
779   - $this->enviarProcedimentoUnidade($objProcedimentoDTO);
  776 + //Finalizar o envio do documento para a respectiva unidade
  777 + //$this->enviarProcedimentoUnidade($objProcedimentoDTO);
780 778  
781 779 //$this->removerAndamentosProcedimento($objProcedimentoDTO);
782 780 return $objProcedimentoDTO;
... ... @@ -793,11 +791,22 @@ class ReceberProcedimentoRN extends InfraRN
793 791 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoProcedimento->hipoteseLegal->identificacao));
794 792 }
795 793  
796   - $objProtocoloRN = new ProtocoloRN();
797   - $objProtocoloRN->alterarRN0203($objProtocoloDTO);
  794 + //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
  795 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parNumIdProcedimento);
  796 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
  797 +
  798 + try{
  799 + $objProtocoloRN = new ProtocoloRN();
  800 + $objProtocoloRN->alterarRN0203($objProtocoloDTO);
  801 + } finally {
  802 + $objPenParametroRN = new PenParametroRN();
  803 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  804 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
  805 + }
798 806 }
799 807  
800   - private function alterarMetadadosDocumento($parNumIdDocumento, $parObjMetadadoDocumento){
  808 + private function alterarMetadadosDocumento($parNumIdProcedimento, $parNumIdDocumento, $parObjMetadadoDocumento)
  809 + {
801 810 //Realiza a alteração dos metadados do documento(Por hora, apenas do nível de sigilo e hipótese legal)
802 811 $objProtocoloDTO = new ProtocoloDTO();
803 812 $objProtocoloDTO->setDblIdProtocolo($parNumIdDocumento);
... ... @@ -807,8 +816,18 @@ class ReceberProcedimentoRN extends InfraRN
807 816 $objProtocoloDTO->setNumIdHipoteseLegal($this->obterHipoteseLegalSEI($parObjMetadadoDocumento->hipoteseLegal->identificacao));
808 817 }
809 818  
810   - $objProtocoloRN = new ProtocoloRN();
811   - $objProtocoloRN->alterarRN0203($objProtocoloDTO);
  819 + //Esta unidade deverá ser considerada para posterior desbloqueio do processo e reabertura
  820 + $numIdUnidade = ProcessoEletronicoRN::obterUnidadeParaRegistroDocumento($parNumIdProcedimento);
  821 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numIdUnidade);
  822 +
  823 + try{
  824 + $objProtocoloRN = new ProtocoloRN();
  825 + $objProtocoloRN->alterarRN0203($objProtocoloDTO);
  826 + } finally {
  827 + $objPenParametroRN = new PenParametroRN();
  828 + $numUnidadeReceptora = $objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO');
  829 + SessaoSEI::getInstance()->setNumIdUnidadeAtual($numUnidadeReceptora);
  830 + }
812 831 }
813 832  
814 833  
... ... @@ -1051,6 +1070,7 @@ class ReceberProcedimentoRN extends InfraRN
1051 1070 //Obter dados dos documentos já registrados no sistema
1052 1071 $objComponenteDigitalDTO = new ComponenteDigitalDTO();
1053 1072 $objComponenteDigitalDTO->retNumOrdem();
  1073 + $objComponenteDigitalDTO->retDblIdProcedimento();
1054 1074 $objComponenteDigitalDTO->retDblIdDocumento();
1055 1075 $objComponenteDigitalDTO->retStrHashConteudo();
1056 1076 $objComponenteDigitalDTO->setStrNumeroRegistro($strNumeroRegistro);
... ... @@ -1094,7 +1114,7 @@ class ReceberProcedimentoRN extends InfraRN
1094 1114  
1095 1115 if(array_key_exists($objDocumento->ordem, $arrObjComponenteDigitalDTOIndexado)){
1096 1116 $objComponenteDigitalDTO = $arrObjComponenteDigitalDTOIndexado[$objDocumento->ordem];
1097   - $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento);
  1117 + $this->alterarMetadadosDocumento($objComponenteDigitalDTO->getDblIdProcedimento(), $objComponenteDigitalDTO->getDblIdDocumento(), $objDocumento);
1098 1118 $objDocumento->idDocumentoSEI = $objComponenteDigitalDTO->getDblIdDocumento();
1099 1119 continue;
1100 1120 }
... ... @@ -1242,7 +1262,7 @@ class ReceberProcedimentoRN extends InfraRN
1242 1262 $strConteudoCodificado = $objDocumentoDTO->getStrConteudo();
1243 1263 $objDocumentoDTO->setStrConteudo(null);
1244 1264 $objDocumentoDTO->getObjProtocoloDTO()->setNumIdUnidadeGeradora(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
1245   - $objDocumentoDTO->setStrSinBloqueado('S');
  1265 + $objDocumentoDTO->setStrSinBloqueado('N');
1246 1266  
1247 1267 //TODO: Fazer a atribuição dos componentes digitais do processo a partir desse ponto
1248 1268 $this->atribuirComponentesDigitais($objDocumentoDTO, $objDocumento->componenteDigital);
... ...