Commit cd67ddcb1649209e2eb22b1d9d7639f45a361110

Authored by Josinaldo Júnior
1 parent c71465bc
Exists in feature-50

Implementação de recebimento de documentos avulsos para homologação

pen_procedimento_estado.php
... ... @@ -208,10 +208,13 @@ try {
208 208  
209 209 $arrAgruparProcedimentoAndamentoDTO = array();
210 210 foreach($arrObjProcedimentoAndamentoDTO as &$objProcedimentoAndamentoDTO){
  211 +// print_r($objProcedimentoAndamentoDTO->getNumTarefa()); die;
211 212 if(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO) == $objProcedimentoAndamentoDTO->getNumTarefa())
212 213 $numIdEstrutura = $objProcedimentoAndamentoDTO->getNumIdEstruturaDestino();
213 214 elseif (ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO) == $objProcedimentoAndamentoDTO->getNumTarefa())
214 215 $numIdEstrutura = $objProcedimentoAndamentoDTO->getNumIdEstruturaOrigem();
  216 + elseif (ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO) == $objProcedimentoAndamentoDTO->getNumTarefa())
  217 + $numIdEstrutura = $objProcedimentoAndamentoDTO->getNumIdEstruturaOrigem();
215 218  
216 219 $key = $objProcedimentoAndamentoDTO->getDblIdTramite() . '-' . $numIdEstrutura . '-' . $objProcedimentoAndamentoDTO->getNumTarefa();
217 220 $arrAgruparProcedimentoAndamentoDTO[$key][] = $objProcedimentoAndamentoDTO;
... ...
rn/ExpedirProcedimentoRN.php
... ... @@ -2178,7 +2178,7 @@ class ExpedirProcedimentoRN extends InfraRN {
2178 2178  
2179 2179 $objAtributoAndamentoDTOUser = new AtributoAndamentoDTO();
2180 2180 $objAtributoAndamentoDTOUser->setStrNome('USUARIO');
2181   - $objAtributoAndamentoDTOUser->setStrIdOrigem(null);
  2181 + $objAtributoAndamentoDTOUser->setStrIdOrigem(SessaoSEI::getInstance()->getNumIdUsuario());
2182 2182 $objAtributoAndamentoDTOUser->setStrValor(SessaoSEI::getInstance()->getStrNomeUsuario());
2183 2183  
2184 2184 $objAtividadeDTO->setArrObjAtributoAndamentoDTO(array($objAtributoAndamentoDTOHora, $objAtributoAndamentoDTOUser));
... ...
rn/PenAtividadeRN.php
... ... @@ -80,6 +80,16 @@ class PenAtividadeRN extends AtividadeRN {
80 80 $objReciboTramiteBD = new ReciboTramiteRecebidoBD($objBancoSEI);
81 81 $objReturn->bolReciboExiste = ($objReciboTramiteBD->contar($objReciboTramiteDTO) > 0) ? true : false;
82 82 break;
  83 + case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO):
  84 + $strMensagem = 'Recebimento do Documento %s remetido por %s';
  85 + $strNome = 'ENTIDADE_ORIGEM';
  86 +
  87 + $objReciboTramiteDTO = new ReciboTramiteRecebidoDTO();
  88 + $objReciboTramiteDTO->setNumIdTramite($numIdTramite);
  89 +
  90 + $objReciboTramiteBD = new ReciboTramiteRecebidoBD($objBancoSEI);
  91 + $objReturn->bolReciboExiste = ($objReciboTramiteBD->contar($objReciboTramiteDTO) > 0) ? true : false;
  92 + break;
83 93 }
84 94  
85 95 $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
... ...
rn/PenAtualizarSeiRN.php
... ... @@ -61,6 +61,7 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
61 61 case '1.1.12': $this->instalarV1113();
62 62 case '1.1.13': $this->instalarV1114();
63 63 case '1.1.14': $this->instalarV1115();
  64 + case '1.1.16': $this->instalarV1115_feature50();
64 65  
65 66 break;
66 67 default:
... ... @@ -1395,4 +1396,48 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
1395 1396 $objInfraParametroDTO->setStrValor('1.1.15');
1396 1397 $objInfraParametroBD->alterar($objInfraParametroDTO);
1397 1398 }
  1399 +
  1400 +
  1401 + protected function instalarV1115_feature50()
  1402 + {
  1403 + print_r('cadastra tarefa');
  1404 +
  1405 + $objBD = new GenericoBD(BancoSEI::getInstance());
  1406 + $objDTO = new TarefaDTO();
  1407 +
  1408 + $fnCadastrar = function($strNome = '', $strHistoricoCompleto = 'N', $strHistoricoCompleto = 'N', $strFecharAndamentosAbertos = 'N', $strLancarAndamentoFechado = 'N', $strPermiteProcessoFechado = 'N', $strIdTarefaModulo = '') use($objDTO, $objBD) {
  1409 +
  1410 + $objDTO->unSetTodos();
  1411 + $objDTO->setStrIdTarefaModulo($strIdTarefaModulo);
  1412 +
  1413 + if ($objBD->contar($objDTO) == 0) {
  1414 +
  1415 + $objUltimaTarefaDTO = new TarefaDTO();
  1416 + $objUltimaTarefaDTO->retNumIdTarefa();
  1417 + $objUltimaTarefaDTO->setNumMaxRegistrosRetorno(1);
  1418 + $objUltimaTarefaDTO->setOrd('IdTarefa', InfraDTO::$TIPO_ORDENACAO_DESC);
  1419 + $objUltimaTarefaDTO = $objBD->consultar($objUltimaTarefaDTO);
  1420 +
  1421 + $objDTO->setNumIdTarefa($objUltimaTarefaDTO->getNumIdTarefa() + 1);
  1422 + $objDTO->setStrNome($strNome);
  1423 + $objDTO->setStrSinHistoricoResumido($strHistoricoCompleto);
  1424 + $objDTO->setStrSinHistoricoCompleto($strHistoricoCompleto);
  1425 + $objDTO->setStrSinFecharAndamentosAbertos($strFecharAndamentosAbertos);
  1426 + $objDTO->setStrSinLancarAndamentoFechado($strLancarAndamentoFechado);
  1427 + $objDTO->setStrSinPermiteProcessoFechado($strPermiteProcessoFechado);
  1428 + $objDTO->setStrIdTarefaModulo($strIdTarefaModulo);
  1429 + $objBD->cadastrar($objDTO);
  1430 + }
  1431 + };
  1432 +
  1433 + $fnCadastrar('Documento recebido da entidade @ENTIDADE_ORIGEM@ - @REPOSITORIO_ORIGEM@ (@PROCESSO@, @ENTIDADE_ORIGEM@, @UNIDADE_DESTINO@, @USUARIO@)', 'S', 'S', 'N', 'S', 'N', 'PEN_DOCUMENTO_AVULSO_RECEBIDO');
  1434 +
  1435 +// //altera o parâmetro da versão de banco
  1436 +// $objInfraParametroBD = new InfraParametroBD(BancoSEI::getInstance());
  1437 +// $objInfraParametroDTO = new InfraParametroDTO();
  1438 +// $objInfraParametroDTO->setStrNome(self::PARAMETRO_VERSAO_MODULO);
  1439 +// $objInfraParametroDTO->setStrValor('1.1.XX');
  1440 +// $objInfraParametroBD->alterar($objInfraParametroDTO);
  1441 + }
  1442 +
1398 1443 }
... ...
rn/ProcessoEletronicoRN.php
... ... @@ -12,6 +12,7 @@ class ProcessoEletronicoRN extends InfraRN {
12 12 public static $TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO = 'PEN_PROCESSO_RECUSADO';
13 13 public static $TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO = 'PEN_OPERACAO_EXTERNA';
14 14 public static $TI_PROCESSO_ELETRONICO_PROCESSO_ABORTADO = 'PEN_EXPEDICAO_PROCESSO_ABORTADA';
  15 + public static $TI_DOCUMENTO_AVULSO_RECEBIDO = 'PEN_DOCUMENTO_AVULSO_RECEBIDO';
15 16  
16 17  
17 18 /* NÍVEL DE SIGILO DE PROCESSOS E DOCUMENTOS */
... ... @@ -558,7 +559,7 @@ class ProcessoEletronicoRN extends InfraRN {
558 559 }
559 560  
560 561 public function cadastrarTramiteDeProcesso($parDblIdProcedimento, $parStrNumeroRegistro, $parNumIdentificacaoTramite, $parStrStaTipoTramite, $parDthRegistroTramite, $parNumIdRepositorioOrigem,
561   - $parNumIdEstruturaOrigem, $parNumIdRepositorioDestino, $parNumIdEstruturaDestino, $parObjProcesso, $parNumTicketComponentesDigitais = null, $parObjComponentesDigitaisSolicitados = null)
  562 + $parNumIdEstruturaOrigem, $parNumIdRepositorioDestino, $parNumIdEstruturaDestino, $parObjProtocolo, $parNumTicketComponentesDigitais = null, $parObjComponentesDigitaisSolicitados = null)
562 563 {
563 564  
564 565 if(!isset($parDblIdProcedimento) || $parDblIdProcedimento == 0) {
... ... @@ -593,7 +594,7 @@ class ProcessoEletronicoRN extends InfraRN {
593 594 throw new InfraException('Parâmetro $parNumIdEstruturaDestino não informado.');
594 595 }
595 596  
596   - if(!isset($parObjProcesso)) {
  597 + if(!isset($parObjProtocolo)) {
597 598 throw new InfraException('Parâmetro $objProcesso não informado.');
598 599 }
599 600  
... ... @@ -603,14 +604,14 @@ class ProcessoEletronicoRN extends InfraRN {
603 604 $objProcessoEletronicoDTO->setDblIdProcedimento($parDblIdProcedimento);
604 605  
605 606 //Montar dados dos procedimentos apensados
606   - if(isset($parObjProcesso->processoApensado)){
607   - if(!is_array($parObjProcesso->processoApensado)){
608   - $parObjProcesso->processoApensado = array($parObjProcesso->processoApensado);
  607 + if(isset($parObjProtocolo->processoApensado)){
  608 + if(!is_array($parObjProtocolo->processoApensado)){
  609 + $parObjProtocolo->processoApensado = array($parObjProtocolo->processoApensado);
609 610 }
610 611  
611 612 $arrObjRelProcessoEletronicoApensadoDTO = array();
612 613 $objRelProcessoEletronicoApensadoDTO = null;
613   - foreach ($parObjProcesso->processoApensado as $objProcessoApensado) {
  614 + foreach ($parObjProtocolo->processoApensado as $objProcessoApensado) {
614 615 $objRelProcessoEletronicoApensadoDTO = new RelProcessoEletronicoApensadoDTO();
615 616 $objRelProcessoEletronicoApensadoDTO->setStrNumeroRegistro($parStrNumeroRegistro);
616 617 $objRelProcessoEletronicoApensadoDTO->setDblIdProcedimentoApensado($objProcessoApensado->idProcedimentoSEI);
... ... @@ -637,7 +638,7 @@ class ProcessoEletronicoRN extends InfraRN {
637 638 $objProcessoEletronicoDTO->setArrObjTramiteDTO(array($objTramiteDTO));
638 639  
639 640 //Monta dados dos componentes digitais
640   - $arrObjComponenteDigitalDTO = $this->montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjComponentesDigitaisSolicitados);
  641 + $arrObjComponenteDigitalDTO = $this->montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados);
641 642  
642 643 $objTramiteDTO->setArrObjComponenteDigitalDTO($arrObjComponenteDigitalDTO);
643 644 $objProcessoEletronicoDTO = $this->cadastrarTramiteDeProcessoInterno($objProcessoEletronicoDTO);
... ... @@ -782,26 +783,31 @@ class ProcessoEletronicoRN extends InfraRN {
782 783 return $strHashConteudo;
783 784 }
784 785  
785   - private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProcesso, $parObjComponentesDigitaisSolicitados)
  786 + private function montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parObjProtocolo, $parObjComponentesDigitaisSolicitados)
786 787 {
787 788 //Monta dados dos componentes digitais
788 789 $arrObjComponenteDigitalDTO = array();
789   - if(!is_array($parObjProcesso->documento)) {
790   - $parObjProcesso->documento = array($parObjProcesso->documento);
791   - }
792 790  
793   - foreach ($parObjProcesso->documento as $objDocumento) {
  791 + $arrObjDocumento = array();
  792 + if(isset($parObjProtocolo->documento)){
  793 + $arrObjDocumento = is_array($parObjProtocolo->documento) ? $parObjProtocolo->documento : array($parObjProtocolo->documento);
  794 + } else {
  795 + $arrObjDocumento = array($parObjProtocolo);
  796 + }
  797 +
  798 +
  799 + foreach ($arrObjDocumento as $objDocumento) {
794 800 $objComponenteDigitalDTO = new ComponenteDigitalDTO();
795 801 $objComponenteDigitalDTO->setStrNumeroRegistro($parStrNumeroRegistro);
796   - $objComponenteDigitalDTO->setDblIdProcedimento($parObjProcesso->idProcedimentoSEI); //TODO: Error utilizar idProcedimentoSEI devido processos apensados
  802 + $objComponenteDigitalDTO->setDblIdProcedimento($parObjProtocolo->idProcedimentoSEI); //TODO: Error utilizar idProcedimentoSEI devido processos apensados
797 803 $objComponenteDigitalDTO->setDblIdDocumento($objDocumento->idDocumentoSEI);
798 804 $objComponenteDigitalDTO->setNumOrdem($objDocumento->ordem);
799 805 $objComponenteDigitalDTO->setNumIdTramite($parNumIdentificacaoTramite);
800   - $objComponenteDigitalDTO->setStrProtocolo($parObjProcesso->protocolo);
  806 + $objComponenteDigitalDTO->setStrProtocolo($parObjProtocolo->protocolo);
801 807  
802 808 //Por enquanto, considera que o documento possui apenas um componente digital
803 809 if(is_array($objDocumento->componenteDigital) && count($objDocumento->componenteDigital) != 1) {
804   - throw new InfraException("Erro processando componentes digitais do processo " . $parObjProcesso->protocolo . "\n Somente é permitido o recebimento de documentos com apenas um Componente Digital.");
  810 + throw new InfraException("Erro processando componentes digitais do processo " . $parObjProtocolo->protocolo . "\n Somente é permitido o recebimento de documentos com apenas um Componente Digital.");
805 811 }
806 812  
807 813 $objComponenteDigital = $objDocumento->componenteDigital;
... ... @@ -838,8 +844,8 @@ class ProcessoEletronicoRN extends InfraRN {
838 844 }
839 845  
840 846 //Chamada recursiva sobre os documentos dos processos apensados
841   - if(isset($parObjProcesso->processoApensado) && count($parObjProcesso->processoApensado)) {
842   - foreach ($parObjProcesso->processoApensado as $objProcessoApensado) {
  847 + if(isset($parObjProtocolo->processoApensado) && count($parObjProtocolo->processoApensado)) {
  848 + foreach ($parObjProtocolo->processoApensado as $objProcessoApensado) {
843 849 $arrObj = $this->montarDadosComponenteDigital($parStrNumeroRegistro, $parNumIdentificacaoTramite, $objProcessoApensado, $parObjComponentesDigitaisSolicitados);
844 850 $arrObjComponenteDigitalDTO = array_merge($arrObjComponenteDigitalDTO, $arrObj);
845 851 }
... ...
rn/ReceberProcedimentoRN.php
... ... @@ -6,6 +6,8 @@ require_once dirname(__FILE__) . '/../../../SEI.php';
6 6 class ReceberProcedimentoRN extends InfraRN
7 7 {
8 8 const STR_APENSACAO_PROCEDIMENTOS = 'Relacionamento representando a apensação de processos recebidos externamente';
  9 + const TIPO_PROTOCOLO_PROCESSO = 'P';
  10 + const TIPO_PROTOCOLO_DOCUMENTO_AVULSO = 'D';
9 11  
10 12 private $objProcessoEletronicoRN;
11 13 private $objInfraParametro;
... ... @@ -63,12 +65,16 @@ class ReceberProcedimentoRN extends InfraRN
63 65 $objDocumento = $objMetadadosProcedimento->metadados->documento;
64 66  
65 67 $objProtocolo = isset($objProcesso) ? $objProcesso : $objDocumento;
  68 + $objProtocolo->staTipoProtocolo = isset($objProcesso) ? self::TIPO_PROTOCOLO_PROCESSO : self::TIPO_PROTOCOLO_DOCUMENTO_AVULSO;
66 69  
67   - $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO));
  70 + $strIdTarefa = isset($objProcesso) ? ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO : ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO;
  71 + $numIdTarefa = ProcessoEletronicoRN::obterIdTarefaModulo($strIdTarefa);
  72 +
  73 + $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, $numIdTarefa);
68 74 $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Iniciando recebimento de processo externo', 'S'));
69 75  
70 76 //Tratamento para evitar o recebimento simultâneo do mesmo procedimento em serviços/processos concorrentes
71   - $this->sincronizarRecebimentoProcessos($strNumeroRegistro, $parNumIdentificacaoTramite);
  77 + $this->sincronizarRecebimentoProcessos($strNumeroRegistro, $parNumIdentificacaoTramite, $numIdTarefa);
72 78  
73 79 //Verifica se processo já foi registrado para esse trâmite
74 80 if($this->tramiteRecebimentoRegistrado($strNumeroRegistro, $parNumIdentificacaoTramite)) {
... ... @@ -148,8 +154,8 @@ class ReceberProcedimentoRN extends InfraRN
148 154 $objProcedimentoDTO = $this->registrarProcesso($strNumeroRegistro, $parNumIdentificacaoTramite, $objProtocolo, $objMetadadosProcedimento);
149 155  
150 156 // @join_tec US008.08 (#23092)
151   - $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO), $objProcedimentoDTO->getDblIdProcedimento());
152   - $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Obtendo metadados do processo', 'S'));
  157 + $this->objProcedimentoAndamentoRN->setOpts($strNumeroRegistro, $parNumIdentificacaoTramite, $numIdTarefa, $objProcedimentoDTO->getDblIdProcedimento());
  158 + $this->objProcedimentoAndamentoRN->cadastrar(ProcedimentoAndamentoDTO::criarAndamento('Obtendo metadados do protocolo', 'S'));
153 159  
154 160 $this->gravarLogDebug("Registrando trâmite externo do processo", 4);
155 161 $objProcessoEletronicoDTO = $this->objProcessoEletronicoRN->cadastrarTramiteDeProcesso(
... ... @@ -162,7 +168,7 @@ class ReceberProcedimentoRN extends InfraRN
162 168 $objMetadadosProcedimento->metadados->remetente->numeroDeIdentificacaoDaEstrutura,
163 169 $objMetadadosProcedimento->metadados->destinatario->identificacaoDoRepositorioDeEstruturas,
164 170 $objMetadadosProcedimento->metadados->destinatario->numeroDeIdentificacaoDaEstrutura,
165   - $objProcesso);
  171 + $objProtocolo);
166 172  
167 173 //Verifica se o tramite se encontra na situação correta
168 174 $arrObjTramite = $this->objProcessoEletronicoRN->consultarTramites($parNumIdentificacaoTramite);
... ... @@ -585,37 +591,6 @@ class ReceberProcedimentoRN extends InfraRN
585 591 return $objProcedimentoDTO;
586 592 }
587 593  
588   - private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento)
589   - {
590   - $objUnidadeDTO = new PenUnidadeDTO();
591   - $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura);
592   - $objUnidadeDTO->setStrSinAtivo('S');
593   - $objUnidadeDTO->retStrDescricao(); //descricao
594   -
595   - $objUnidadeRN = new UnidadeRN();
596   - $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO);
597   -
598   - $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
599   - $objAtributoAndamentoDTO->setStrNome('DESCRICAO');
600   - $objAtributoAndamentoDTO->setStrValor('Processo remetido para a unidade ' . $objUnidadeDTO->getStrDescricao());
601   - $objAtributoAndamentoDTO->setStrIdOrigem($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura);
602   -
603   - $arrObjAtributoAndamentoDTO = array($objAtributoAndamentoDTO);
604   -
605   - $objAtividadeDTO = new AtividadeDTO();
606   - $objAtividadeDTO->setDblIdProtocolo($parNumIdProcedimento);
607   - $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
608   - $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
609   - $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ATUALIZACAO_ANDAMENTO);
610   - $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO);
611   - $objAtividadeDTO->setDthConclusao(null);
612   - $objAtividadeDTO->setNumIdUsuarioConclusao(null);
613   - $objAtividadeDTO->setStrSinInicial('N');
614   -
615   - $objAtividadeRN = new AtividadeRN();
616   - $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
617   - }
618   -
619 594 private function gerarProcedimento($objMetadadosProcedimento, $parObjProtocolo)
620 595 {
621 596 if(!isset($objMetadadosProcedimento)){
... ... @@ -657,9 +632,12 @@ class ReceberProcedimentoRN extends InfraRN
657 632 }
658 633 }
659 634  
660   - $objProtocoloDTO->setStrProtocoloFormatado(utf8_decode($parObjProtocolo->protocolo));
  635 + // O protocolo formatado do novo processo somente deverá reutilizar o número definido pelo Remetente em caso de
  636 + // trâmites de processos. No caso de recebimento de documentos avulsos, o número do novo processo sempre deverá ser
  637 + // gerado pelo destinatário, conforme regras definidas em legislação vigente
  638 + $strProtocoloFormatado = ($parObjProtocolo->staTipoProtocolo == self::TIPO_PROTOCOLO_PROCESSO) ? $parObjProtocolo->protocolo : null;
  639 + $objProtocoloDTO->setStrProtocoloFormatado(utf8_decode($strProtocoloFormatado));
661 640 $objProtocoloDTO->setDtaGeracao($this->objProcessoEletronicoRN->converterDataSEI($parObjProtocolo->dataHoraDeProducao));
662   -// $objProtocoloDTO->setDtaGeracao($this->objProcessoEletronicoRN->converterDataSEI($parObjProtocolo->dataHoraDeProducao));
663 641 $objProtocoloDTO->setArrObjAnexoDTO(array());
664 642 $objProtocoloDTO->setArrObjRelProtocoloAssuntoDTO(array());
665 643 $objProtocoloDTO->setArrObjRelProtocoloProtocoloDTO(array());
... ... @@ -696,7 +674,7 @@ class ReceberProcedimentoRN extends InfraRN
696 674 $objProcedimentoDTO->setDblIdProcedimento(null);
697 675 $objProcedimentoDTO->setObjProtocoloDTO($objProtocoloDTO);
698 676 $objProcedimentoDTO->setDtaGeracaoProtocolo($this->objProcessoEletronicoRN->converterDataSEI($parObjProtocolo->dataHoraDeProducao));
699   - $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado(utf8_decode($parObjProtocolo->protocolo));
  677 + $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado(utf8_decode($strProtocoloFormatado));
700 678 $objProcedimentoDTO->setStrSinGerarPendencia('S');
701 679 $objProcedimentoDTO->setArrObjDocumentoDTO(array());
702 680  
... ... @@ -731,8 +709,19 @@ class ReceberProcedimentoRN extends InfraRN
731 709  
732 710 //TODO: Finalizar criação do procedimento
733 711 $objProcedimentoRN = new ProcedimentoRN();
734   - $objProcedimentoDTOGerado = $objProcedimentoRN->gerarRN0156($objProcedimentoDTO);
  712 +
  713 + try{
  714 + //Alterado contexto de unidade atual para a unidade de destino do processo para que o núcleo do SEI possa
  715 + //gerar o número de processo correto do destino e não o número da unidade de recebimento do processo
  716 + SessaoSEI::getInstance(false)->setNumIdUnidadeAtual($objUnidadeDTO->getNumIdUnidade());
  717 + $objProcedimentoDTOGerado = $objProcedimentoRN->gerarRN0156($objProcedimentoDTO);
  718 + }
  719 + finally{
  720 + SessaoSEI::getInstance(false)->setNumIdUnidadeAtual($objPenParametroRN->getParametro('PEN_UNIDADE_GERADORA_DOCUMENTO_RECEBIDO'));
  721 + }
  722 +
735 723 $objProcedimentoDTO->setDblIdProcedimento($objProcedimentoDTOGerado->getDblIdProcedimento());
  724 + $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($objProcedimentoDTO->getObjProtocoloDTO()->getStrProtocoloFormatado());
736 725  
737 726 $this->registrarAndamentoRecebimentoProcesso($objProcedimentoDTO, $objMetadadosProcedimento);
738 727 $this->atribuirDocumentos($objProcedimentoDTO, $parObjProtocolo, $objUnidadeDTO, $objMetadadosProcedimento);
... ... @@ -749,6 +738,37 @@ class ReceberProcedimentoRN extends InfraRN
749 738 return $objProcedimentoDTO;
750 739 }
751 740  
  741 + private function gerarAndamentoUnidadeReceptora($parNumIdProcedimento)
  742 + {
  743 + $objUnidadeDTO = new PenUnidadeDTO();
  744 + $objUnidadeDTO->setNumIdUnidadeRH($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura);
  745 + $objUnidadeDTO->setStrSinAtivo('S');
  746 + $objUnidadeDTO->retStrDescricao(); //descricao
  747 +
  748 + $objUnidadeRN = new UnidadeRN();
  749 + $objUnidadeDTO = $objUnidadeRN->consultarRN0125($objUnidadeDTO);
  750 +
  751 + $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
  752 + $objAtributoAndamentoDTO->setStrNome('DESCRICAO');
  753 + $objAtributoAndamentoDTO->setStrValor('Processo remetido para a unidade ' . $objUnidadeDTO->getStrDescricao());
  754 + $objAtributoAndamentoDTO->setStrIdOrigem($this->destinatarioReal->numeroDeIdentificacaoDaEstrutura);
  755 +
  756 + $arrObjAtributoAndamentoDTO = array($objAtributoAndamentoDTO);
  757 +
  758 + $objAtividadeDTO = new AtividadeDTO();
  759 + $objAtividadeDTO->setDblIdProtocolo($parNumIdProcedimento);
  760 + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
  761 + $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
  762 + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ATUALIZACAO_ANDAMENTO);
  763 + $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO);
  764 + $objAtividadeDTO->setDthConclusao(null);
  765 + $objAtividadeDTO->setNumIdUsuarioConclusao(null);
  766 + $objAtividadeDTO->setStrSinInicial('N');
  767 +
  768 + $objAtividadeRN = new AtividadeRN();
  769 + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
  770 + }
  771 +
752 772 private function alterarMetadadosProcedimento($parNumIdProcedimento, $parObjMetadadoProcedimento)
753 773 {
754 774 //Realiza a alteração dos metadados do processo(Por hora, apenas do nível de sigilo e hipótese legal)
... ... @@ -797,7 +817,9 @@ class ReceberProcedimentoRN extends InfraRN
797 817 //TODO: Atribuir atributos necessários para formação da mensagem do andamento
798 818 //TODO: Especificar quais andamentos serão registrados
799 819 $objRemetente = $parObjMetadadosProcedimento->metadados->remetente;
800   - $objProcesso = $objMetadadosProcedimento->metadados->processo;
  820 + $objProcesso = $parObjMetadadosProcedimento->metadados->processo;
  821 + $objDocumento = $parObjMetadadosProcedimento->metadados->documento;
  822 + $objProtocolo = isset($objProcesso) ? $objProcesso : $objDocumento;
801 823  
802 824 $arrObjAtributoAndamentoDTO = array();
803 825  
... ... @@ -824,6 +846,32 @@ class ReceberProcedimentoRN extends InfraRN
824 846 $objAtributoAndamentoDTO->setStrIdOrigem($objEstrutura->numeroDeIdentificacaoDaEstrutura);
825 847 $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;
826 848  
  849 + $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
  850 + $objAtributoAndamentoDTO->setStrNome('PROCESSO');
  851 + $objAtributoAndamentoDTO->setStrValor($objProtocolo->protocolo);
  852 + $objAtributoAndamentoDTO->setStrIdOrigem(null);
  853 + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;
  854 +
  855 + $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
  856 + $objAtributoAndamentoDTO->setStrNome('USUARIO');
  857 + $objAtributoAndamentoDTO->setStrValor(SessaoSEI::getInstance()->getStrNomeUsuario());
  858 + $objAtributoAndamentoDTO->setStrIdOrigem(SessaoSEI::getInstance()->getNumIdUsuario());
  859 + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;
  860 +
  861 + //Obtém dados da unidade de destino atribuída anteriormente para o protocolo
  862 + if($objProcedimentoDTO->isSetArrObjUnidadeDTO() && count($objProcedimentoDTO->getArrObjUnidadeDTO()) == 1) {
  863 + $arrObjUnidadesDestinoDTO = $objProcedimentoDTO->getArrObjUnidadeDTO();
  864 + $objUnidadesDestinoDTO = $arrObjUnidadesDestinoDTO[0];
  865 + $objAtributoAndamentoDTO = new AtributoAndamentoDTO();
  866 + $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO');
  867 + $objAtributoAndamentoDTO->setStrValor($objUnidadesDestinoDTO->getStrDescricao());
  868 + $objAtributoAndamentoDTO->setStrIdOrigem($objUnidadesDestinoDTO->getNumIdUnidade());
  869 + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO;
  870 + }
  871 +
  872 +
  873 +
  874 +
827 875 if(isset($objEstrutura->hierarquia)) {
828 876 $arrObjNivel = $objEstrutura->hierarquia->nivel;
829 877  
... ... @@ -862,7 +910,10 @@ class ReceberProcedimentoRN extends InfraRN
862 910 $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento());
863 911 $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
864 912 $objAtividadeDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario());
865   - $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO));
  913 +
  914 + $strIdTarefa = isset($objProcesso) ? ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO : ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO;
  915 +
  916 + $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo($strIdTarefa));
866 917 $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO);
867 918 $objAtividadeDTO->setDthConclusao(null);
868 919 $objAtividadeDTO->setNumIdUsuarioConclusao(null);
... ... @@ -1092,6 +1143,7 @@ class ReceberProcedimentoRN extends InfraRN
1092 1143 $objProcedimentoDTO2->retStrNomeTipoProcedimento();
1093 1144 $objProcedimentoDTO2->adicionarCriterio(array('IdProcedimento','ProtocoloProcedimentoFormatado','ProtocoloProcedimentoFormatadoPesquisa'),
1094 1145 array(InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL,InfraDTO::$OPER_IGUAL),
  1146 + //TODO: Possivelmente, a pesquisa pelos campos ProtocoloProcedimentoFormatado e ProtocoloProcedimentoFormatadoPesquisa está incorreta
1095 1147 array($objDocumentoDTO->getDblIdProcedimento(),$objDocumentoDTO->getDblIdProcedimento(),$objDocumentoDTO->getDblIdProcedimento()),
1096 1148 array(InfraDTO::$OPER_LOGICO_OR,InfraDTO::$OPER_LOGICO_OR));
1097 1149  
... ... @@ -1305,8 +1357,8 @@ class ReceberProcedimentoRN extends InfraRN
1305 1357  
1306 1358 $objProcedimentoDTOApensado = null;
1307 1359 foreach ($objProcedimento->processoApensado as $processoApensado){
1308   - $objProcedimentoDTOApensado = $this->gerarProcedimento($objMetadadosProcedimento, $processoApensado);
1309   - $this->relacionarProcedimentos($objProcedimentoDTOPrincipal, $objProcedimentoDTOApensado);
  1360 + $objProcedimentoDTOApensado = $this->gerarProcedimento($objProcedimento, $processoApensado);
  1361 + $this->relacionarProcedimentos($objProcedimento, $objProcedimentoDTOApensado);
1310 1362 $this->registrarProcedimentoNaoVisualizado($objProcedimentoDTOApensado);
1311 1363 }
1312 1364 }
... ... @@ -1542,8 +1594,6 @@ class ReceberProcedimentoRN extends InfraRN
1542 1594 $objInfraException->lancarValidacao('Unidade de destino do processo não informada.');
1543 1595 }
1544 1596  
1545   - $arrObjUnidadeDTO = $parObjProcedimentoDTO->getArrObjUnidadeDTO();
1546   -
1547 1597 if(count($parObjProcedimentoDTO->getArrObjUnidadeDTO()) > 1) {
1548 1598 $objInfraException->lancarValidacao('Não permitido a indicação de múltiplas unidades de destino para um processo recebido externamente.');
1549 1599 }
... ... @@ -1558,7 +1608,6 @@ class ReceberProcedimentoRN extends InfraRN
1558 1608 $objProcedimentoDTO->retNumIdTipoProcedimento();
1559 1609 $objProcedimentoDTO->retStrNomeTipoProcedimento();
1560 1610 $objProcedimentoDTO->retStrStaNivelAcessoGlobalProtocolo();
1561   - // $objProcedimentoDTO->retStrStaEstadoProtocolo();
1562 1611 $objProcedimentoDTO->setStrProtocoloProcedimentoFormatado($parObjProcedimentoDTO->getStrProtocoloProcedimentoFormatado());
1563 1612  
1564 1613 $objProcedimentoRN = new ProcedimentoRN();
... ... @@ -1722,6 +1771,44 @@ class ReceberProcedimentoRN extends InfraRN
1722 1771 }
1723 1772 }
1724 1773  
  1774 + /**
  1775 + * Método que realiza a validação da extensão dos componentes digitais a serem recebidos
  1776 + *
  1777 + * @param integer $parIdTramite
  1778 + * @param object $parObjProtocolo
  1779 + * @throws InfraException
  1780 + */
  1781 + public function validarExtensaoComponentesDigitais($parIdTramite, $parObjProtocolo)
  1782 + {
  1783 + //Armazena o array de documentos
  1784 + $arrDocumentos = $this->obterDocumentosProtocolo($parObjProtocolo);
  1785 +
  1786 + //Instancia o bd do arquivoExtensão
  1787 + $arquivoExtensaoBD = new ArquivoExtensaoBD($this->getObjInfraIBanco());
  1788 +
  1789 + //Percorre os documentos
  1790 + foreach($arrDocumentos as $documento){
  1791 +
  1792 + //Busca o nome do documento
  1793 + $nomeDocumento = $documento->componenteDigital->nome;
  1794 +
  1795 + //Busca pela extensão do documento
  1796 + $arrNomeDocumento = explode('.', $nomeDocumento);
  1797 + $extDocumento = $arrNomeDocumento[count($arrNomeDocumento) - 1];
  1798 +
  1799 + //Verifica se a extensão do arquivo está cadastrada e ativa
  1800 + $arquivoExtensaoDTO = new ArquivoExtensaoDTO();
  1801 + $arquivoExtensaoDTO->setStrSinAtivo('S');
  1802 + $arquivoExtensaoDTO->setStrExtensao($extDocumento);
  1803 + $arquivoExtensaoDTO->retStrExtensao();
  1804 +
  1805 + if($arquivoExtensaoBD->contar($arquivoExtensaoDTO) == 0){
  1806 + $this->objProcessoEletronicoRN->recusarTramite($parIdTramite, 'Componentes digitais com formato inválido no destinatário. ', ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_FORMATO);
  1807 + throw new InfraException("Processo recusado devido a existência de documento em formato {$extDocumento} não permitido pelo sistema. ");
  1808 + }
  1809 + }
  1810 + }
  1811 +
1725 1812 protected function receberTramiteRecusadoInternoControlado(ReceberTramiteRecusadoDTO $objReceberTramiteRecusadoDTO)
1726 1813 {
1727 1814 //Realiza o desbloqueio do processo
... ... @@ -1776,44 +1863,6 @@ class ReceberProcedimentoRN extends InfraRN
1776 1863 }
1777 1864  
1778 1865 /**
1779   - * Método que realiza a validação da extensão dos componentes digitais a serem recebidos
1780   - *
1781   - * @param integer $parIdTramite
1782   - * @param object $parObjProtocolo
1783   - * @throws InfraException
1784   - */
1785   - public function validarExtensaoComponentesDigitais($parIdTramite, $parObjProtocolo)
1786   - {
1787   - //Armazena o array de documentos
1788   - $arrDocumentos = $this->obterDocumentosProtocolo($parObjProtocolo);
1789   -
1790   - //Instancia o bd do arquivoExtensão
1791   - $arquivoExtensaoBD = new ArquivoExtensaoBD($this->getObjInfraIBanco());
1792   -
1793   - //Percorre os documentos
1794   - foreach($arrDocumentos as $documento){
1795   -
1796   - //Busca o nome do documento
1797   - $nomeDocumento = $documento->componenteDigital->nome;
1798   -
1799   - //Busca pela extensão do documento
1800   - $arrNomeDocumento = explode('.', $nomeDocumento);
1801   - $extDocumento = $arrNomeDocumento[count($arrNomeDocumento) - 1];
1802   -
1803   - //Verifica se a extensão do arquivo está cadastrada e ativa
1804   - $arquivoExtensaoDTO = new ArquivoExtensaoDTO();
1805   - $arquivoExtensaoDTO->setStrSinAtivo('S');
1806   - $arquivoExtensaoDTO->setStrExtensao($extDocumento);
1807   - $arquivoExtensaoDTO->retStrExtensao();
1808   -
1809   - if($arquivoExtensaoBD->contar($arquivoExtensaoDTO) == 0){
1810   - $this->objProcessoEletronicoRN->recusarTramite($parIdTramite, 'Componentes digitais com formato inválido no destinatário. ', ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_FORMATO);
1811   - throw new InfraException("Processo recusado devido a existência de documento em formato {$extDocumento} não permitido pelo sistema. ");
1812   - }
1813   - }
1814   - }
1815   -
1816   - /**
1817 1866 * Método que verifica as permissões de escrita nos diretórios utilizados no recebimento de processos e documentos
1818 1867 *
1819 1868 * @param integer $parIdTramite
... ... @@ -1835,13 +1884,13 @@ class ReceberProcedimentoRN extends InfraRN
1835 1884 }
1836 1885 }
1837 1886  
1838   - private function sincronizarRecebimentoProcessos($parStrNumeroRegistro, $parNumIdentificacaoTramite)
  1887 + private function sincronizarRecebimentoProcessos($parStrNumeroRegistro, $parNumIdentificacaoTramite, $parNumIdTarefa)
1839 1888 {
1840 1889 $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO();
1841 1890 $objProcedimentoAndamentoDTO->retDblIdAndamento();
1842 1891 $objProcedimentoAndamentoDTO->setStrNumeroRegistro($parStrNumeroRegistro);
1843 1892 $objProcedimentoAndamentoDTO->setDblIdTramite($parNumIdentificacaoTramite);
1844   - $objProcedimentoAndamentoDTO->setNumTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO));
  1893 + $objProcedimentoAndamentoDTO->setNumTarefa($parNumIdTarefa);
1845 1894 $objProcedimentoAndamentoDTO->setNumMaxRegistrosRetorno(1);
1846 1895  
1847 1896 $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($this->getObjInfraIBanco());
... ...
rn/ReciboTramiteRN.php
... ... @@ -3,7 +3,7 @@
3 3 require_once dirname(__FILE__) . '/../../../SEI.php';
4 4  
5 5 /**
6   - * Repostório da entidade ReciboTramite
  6 + * Repost�rio da entidade ReciboTramite
7 7 *
8 8 * @author Join Tecnologia
9 9 */
... ... @@ -18,7 +18,7 @@ class ReciboTramiteRN extends InfraRN {
18 18 }
19 19  
20 20 /**
21   - * retorna um array de recibos de tramites ( geralmente é somente um )
  21 + * retorna um array de recibos de tramites ( geralmente � somente um )
22 22 *
23 23 * @param string $strAtividade pode ser RECEBER ou ENVIAR
24 24 * @return array
... ... @@ -44,6 +44,7 @@ class ReciboTramiteRN extends InfraRN {
44 44 break;
45 45  
46 46 case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO):
  47 + case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_DOCUMENTO_AVULSO_RECEBIDO):
47 48 $objReciboTramiteDTO = new ReciboTramiteRecebidoDTO();
48 49 $objReciboTramiteDTO->setNumIdTramite($numIdTramite);
49 50 $objReciboTramiteDTO->retStrNumeroRegistro();
... ...