Commit a6016a7f5744ec5f6ff217e13585f58d83d656cf

Authored by Eduardo Heinske
1 parent e4fa2a7c

Correções na validação de assinatura digital, cancelar trâmite e validação de ta…

…manho de arquivo na expedição
rn/ExpedirProcedimentoRN.php
... ... @@ -173,12 +173,9 @@ class ExpedirProcedimentoRN extends InfraRN {
173 173  
174 174 $objTramite = $novoTramite->dadosTramiteDeProcessoCriado;
175 175  
176   -
177 176 $this->objProcedimentoAndamentoRN->setOpts($dblIdProcedimento, $objTramite->IDT, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO));
178   -
179 177 try {
180 178  
181   -
182 179 $this->objProcedimentoAndamentoRN->cadastrar('Envio do metadados do processo', 'S');
183 180  
184 181 $idAtividadeExpedicao = $this->bloquearProcedimentoExpedicao($objExpedirProcedimentoDTO, $objProcesso->idProcedimentoSEI);
... ... @@ -239,7 +236,7 @@ class ExpedirProcedimentoRN extends InfraRN {
239 236 }
240 237 catch (\Exception $e) {
241 238 $this->desbloquearProcessoExpedicao($objProcesso->idProcedimentoSEI);
242   - $this->registrarAndamentoExpedicaoAbortada($objProtocolo->idProcedimentoSEI);
  239 + $this->registrarAndamentoExpedicaoAbortada($objProcesso->idProcedimentoSEI);
243 240  
244 241 // @join_tec US008.06 (#23092)
245 242 $this->objProcedimentoAndamentoRN->cadastrar('Concluído envio dos componentes do processo', 'N');
... ... @@ -1046,6 +1043,11 @@ class ExpedirProcedimentoRN extends InfraRN {
1046 1043 if(!isset($objAnexoDTO)){
1047 1044 throw new InfraException("Componente digital do documento {$strProtocoloDocumentoFormatado} não pode ser localizado.");
1048 1045 }
  1046 +
  1047 + //VALIDAÇÃO DE TAMANHO DE DOCUMENTOS EXTERNOS PARA A EXPEDIÇÃO
  1048 + if($objAnexoDTO->getNumTamanho() > ($objInfraParametro->getValor('PEN_TAMANHO_MAXIMO_DOCUMENTO_EXPEDIDO') * 1024 * 1024) ){
  1049 + throw new InfraException("O tamanho do documento {$objAnexoDTO->getStrProtocoloFormatadoProtocolo()} é maior que os {$objInfraParametro->getValor('PEN_TAMANHO_MAXIMO_DOCUMENTO_EXPEDIDO')} MB permitidos para a expedição de documentos externos.");
  1050 + }
1049 1051  
1050 1052 //Obtenção do conteudo do documento externo
1051 1053 //TODO: Particionar o documento em tamanho menor caso ultrapasse XX megabytes
... ... @@ -1251,6 +1253,7 @@ class ExpedirProcedimentoRN extends InfraRN {
1251 1253 $objAnexoDTO->retDblIdProtocolo();
1252 1254 $objAnexoDTO->retDthInclusao();
1253 1255 $objAnexoDTO->retNumTamanho();
  1256 + $objAnexoDTO->retStrProtocoloFormatadoProtocolo();
1254 1257 $objAnexoDTO->setDblIdProtocolo($dblIdDocumento);
1255 1258  
1256 1259 return $this->objAnexoRN->consultarRN0736($objAnexoDTO);
... ... @@ -2024,99 +2027,98 @@ class ExpedirProcedimentoRN extends InfraRN {
2024 2027 */
2025 2028 public function cancelarTramite($dblIdProcedimento) {
2026 2029  
2027   - $objDTOFiltro = new ProcessoEletronicoDTO();
2028   - $objDTOFiltro->setDblIdProcedimento($dblIdProcedimento);
2029   - $objDTOFiltro->retStrNumeroRegistro();
2030   - $objDTOFiltro->setNumMaxRegistrosRetorno(1);
2031   -
2032   - $objBD = new ProcessoEletronicoBD($this->getObjInfraIBanco());
2033   - $objProcessoEletronicoDTO = $objBD->consultar($objDTOFiltro);
2034   -
2035   - if(empty($objProcessoEletronicoDTO)) {
2036   - throw new InfraException('Não foi Encontrado o Processo pelo ID '. $dblIdProcedimento);
2037   - }
2038   -
  2030 + //Busca os dados do protocolo
2039 2031 $objDtoProtocolo = new ProtocoloDTO();
2040 2032 $objDtoProtocolo->retStrProtocoloFormatado();
  2033 + $objDtoProtocolo->retDblIdProtocolo();
2041 2034 $objDtoProtocolo->setDblIdProtocolo($dblIdProcedimento);
2042 2035  
2043 2036 $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco());
2044 2037 $objDtoProtocolo = $objProtocoloBD->consultar($objDtoProtocolo);
2045   -
2046 2038  
2047   -// $objDTOFiltro = new TramiteDTO();
2048   -// $objDTOFiltro->setStrNumeroRegistro($objProcessoEletronicoDTO->getStrNumeroRegistro());
2049   -// $objDTOFiltro->setNumMaxRegistrosRetorno(1);
2050   -// $objDTOFiltro->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC);
2051   -// $objDTOFiltro->retTodos();
2052   -//
2053   -// $objTramiteBD = new TramiteBD($this->getObjInfraIBanco());
2054   -// $objTramiteDTO = $objTramiteBD->consultar($objDTOFiltro);
2055   -//
2056   -// if(empty($objTramiteDTO)) {
2057   -// throw new InfraException('Não foi Encontrado Trâmite para Esse Processo!');
2058   -// }
  2039 + $this->cancelarTramiteInternoControlado($objDtoProtocolo);
2059 2040  
2060   -
2061   - $arrObjMetaTramite = $this->objProcessoEletronicoRN->consultarTramitesProtocolo($objDtoProtocolo->getStrProtocoloFormatado());
  2041 + }
  2042 +
  2043 + protected function cancelarTramiteInternoControlado(ProtocoloDTO $objDtoProtocolo) {
2062 2044  
2063   - if(empty($arrObjMetaTramite)) {
2064   - throw new InfraException('Não foi Encontrado Trâmite para Esse Processo!');
  2045 + //Armazena o id do protocolo
  2046 + $dblIdProcedimento = $objDtoProtocolo->getDblIdProtocolo();
  2047 +
  2048 + $tramites = $this->objProcessoEletronicoRN->consultarTramitesProtocolo($objDtoProtocolo->getStrProtocoloFormatado());
  2049 + $tramite = $tramites ? array_pop($tramites) : null;
  2050 +
  2051 + if (!$tramite) {
  2052 + throw new InfraException('Trâmite não encontrado para esse processo. ');
2065 2053 }
2066   -
2067   - $numSituacaoAtual = 0;
2068   -
2069   - // Se o barramento possui alguma situação do tramite verificamos se o precedimento
2070   - // já esta em recebimento
2071   - if(!empty($arrObjMetaTramite)) {
2072   -
2073   - $objMetaTramite = array_pop($arrObjMetaTramite);
2074   -
2075   - switch($objMetaTramite->situacaoAtual) {
2076   - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO:
2077   - throw new InfraException("O sistema destinatário já iniciou o recebimento desse processo, portanto não é possivel realizar o cancelamento");
2078   - break;
2079   - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE:
2080   - throw new InfraException("O sistema destinatário já recebeu esse processo, portanto não é possivel realizar o cancelamento");
2081   - break;
2082   - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO:
2083   - throw new InfraException("O processo já se encontra cancelado");
2084   - break;
2085   - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO:
2086   - throw new InfraException("O processo se encontra recusado");
2087   - break;
2088   - }
2089   - $numSituacaoAtual = $objMetaTramite->situacaoAtual;
  2054 +
  2055 + //Verifica se o trâmite está com o status de iniciado
  2056 + if ($tramite->situacaoAtual == ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO) {
  2057 + $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT);
  2058 +
  2059 + return true;
2090 2060 }
2091 2061  
2092   - $this->objProcessoEletronicoRN->cancelarTramite($objMetaTramite->IDT);
  2062 + //Busca o processo eletrônico
  2063 + $objDTOFiltro = new ProcessoEletronicoDTO();
  2064 + $objDTOFiltro->setDblIdProcedimento($dblIdProcedimento);
  2065 + $objDTOFiltro->retStrNumeroRegistro();
  2066 + $objDTOFiltro->setNumMaxRegistrosRetorno(1);
  2067 +
  2068 + $objBD = new ProcessoEletronicoBD($this->getObjInfraIBanco());
  2069 + $objProcessoEletronicoDTO = $objBD->consultar($objDTOFiltro);
  2070 +
  2071 + if (empty($objProcessoEletronicoDTO)) {
  2072 + throw new InfraException('Não foi Encontrado o Processo pelo ID ' . $dblIdProcedimento);
  2073 + }
  2074 +
  2075 + //Armazena a situação atual
  2076 + $numSituacaoAtual = $tramite->situacaoAtual;
  2077 +
  2078 + //Valida os status
  2079 + switch ($numSituacaoAtual) {
  2080 + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO:
  2081 + throw new InfraException("O sistema destinatário já iniciou o recebimento desse processo, portanto não é possivel realizar o cancelamento");
  2082 + break;
  2083 + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE:
  2084 + throw new InfraException("O sistema destinatário já recebeu esse processo, portanto não é possivel realizar o cancelamento");
  2085 + break;
  2086 + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO:
  2087 + throw new InfraException("O processo já se encontra cancelado");
  2088 + break;
  2089 + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO:
  2090 + throw new InfraException("O processo se encontra recusado");
  2091 + break;
  2092 + }
  2093 +
  2094 + $this->objProcessoEletronicoRN->cancelarTramite($tramite->IDT);
2093 2095  
2094 2096 //Desbloqueia o processo
2095 2097 $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI();
2096   - $objEntradaDesbloquearProcessoAPI->setIdProcedimento($dblIdProcedimento);
  2098 + $objEntradaDesbloquearProcessoAPI->setIdProcedimento($dblIdProcedimento);
  2099 +
2097 2100 $objSeiRN = new SeiRN();
2098 2101 $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI);
2099   -
  2102 +
2100 2103 $objDTOFiltro = new TramiteDTO();
2101   - $objDTOFiltro->setNumIdTramite($objMetaTramite->IDT);
  2104 + $objDTOFiltro->setNumIdTramite($tramite->IDT);
2102 2105 $objDTOFiltro->setNumMaxRegistrosRetorno(1);
2103 2106 $objDTOFiltro->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC);
2104 2107 $objDTOFiltro->retNumIdTramite();
2105 2108 $objDTOFiltro->retStrNumeroRegistro();
2106   -
  2109 +
2107 2110 $objTramiteBD = new TramiteBD($this->getObjInfraIBanco());
2108 2111 $objTramiteDTO = $objTramiteBD->consultar($objDTOFiltro);
2109 2112  
2110 2113 $objTramiteDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO);
2111 2114 $objTramiteDTO = $objTramiteBD->alterar($objTramiteDTO);
2112   -
  2115 +
2113 2116 //Cria o Objeto que registrará a Atividade de cancelamento
2114 2117 $objAtividadeDTO = new AtividadeDTO();
2115 2118 $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimento);
2116 2119 $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
2117 2120 $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO));
2118 2121  
2119   -
2120 2122 //Seta os atributos do tamplate de descrição dessa atividade
2121 2123 $objAtributoAndamentoDTOHora = new AtributoAndamentoDTO();
2122 2124 $objAtributoAndamentoDTOHora->setStrNome('DATA_HORA');
... ... @@ -2132,13 +2134,8 @@ class ExpedirProcedimentoRN extends InfraRN {
2132 2134  
2133 2135 $objAtividadeRN = new AtividadeRN();
2134 2136 $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO);
2135   -
2136   -
2137 2137 }
2138 2138  
2139   -
2140   -
2141   -
2142 2139 // // private function validarStrSinGerarPendenciaRN0901(ProcedimentoDTO $objProcedimentoDTO, InfraException $objInfraException){
2143 2140 // // if (InfraString::isBolVazia($objProcedimentoDTO->getStrSinGerarPendencia())){
2144 2141 // // $objInfraException->adicionarValidacao('Sinalizador de geração de andamento automático não informado.');
... ...
rn/PenAtualizadorRN.php
... ... @@ -12,7 +12,8 @@ abstract class PenAtualizadorRN extends InfraRN {
12 12 const VER_003 = '0.0.3';
13 13 const VER_004 = '0.0.4';
14 14 const VER_005 = '0.0.5';
15   -
  15 + const VER_006 = '0.0.6';
  16 +
16 17 protected $sei_versao;
17 18  
18 19 /**
... ...
rn/PenAtualizarSeiRN.php
... ... @@ -893,4 +893,11 @@ class PenAtualizarSeiRN extends PenAtualizadorRN {
893 893 $fnAtualizar('PEN_PROCESSO_RECEBIDO', 'Processo recebido da unidade externa @ENTIDADE_ORIGEM@ - @ENTIDADE_ORIGEM_HIRARQUIA@ - @REPOSITORIO_ORIGEM@');
894 894 $fnAtualizar('PEN_OPERACAO_EXTERNA', 'Tramitação externa do processo @PROTOCOLO_FORMATADO@ concluída com sucesso. Recebido em @UNIDADE_DESTINO@ - @UNIDADE_DESTINO_HIRARQUIA@ - @REPOSITORIO_DESTINO@');
895 895 }
  896 +
  897 + protected function instalarV006R004S004WI001() {
  898 + $objInfraParametro = new InfraParametro($this->getObjInfraIBanco());
  899 + $objInfraParametro->setValor('PEN_TAMANHO_MAXIMO_DOCUMENTO_EXPEDIDO', 50);
  900 +
  901 + }
  902 +
896 903 }
897 904 \ No newline at end of file
... ...
rn/ProcedimentoAndamentoRN.php
... ... @@ -75,36 +75,17 @@ class ProcedimentoAndamentoRN extends InfraRN {
75 75 $hash = md5($this->dblIdProcedimento.$strMensagem);
76 76  
77 77 $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO();
  78 + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
  79 + $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s'));
  80 + $objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento);
  81 + $objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit);
  82 + $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
  83 + $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem);
78 84 $objProcedimentoAndamentoDTO->setStrHash($hash);
79   - $objProcedimentoAndamentoDTO->retTodos();
80   -
81   - $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($objInfraIBanco);
82   - $objProcedimentoAndamentoDTO = $objProcedimentoAndamentoBD->consultar($objProcedimentoAndamentoDTO);
83   -
  85 + $objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa);
84 86  
85   - // achou um registro, então atualiza o log
86   - /* if(!empty($objProcedimentoAndamentoDTO)) {
87   -
88   - $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
89   - $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s'));
90   -
91   - $objProcedimentoAndamentoBD->alterar($objProcedimentoAndamentoDTO);
92   - }
93   - // Senão cadastra um novo log
94   - else { */
95   -
96   - $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO();
97   - $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
98   - $objProcedimentoAndamentoDTO->setDthData(date('d/m/Y H:i:s'));
99   - $objProcedimentoAndamentoDTO->setDblIdProcedimento($this->dblIdProcedimento);
100   - $objProcedimentoAndamentoDTO->setDblIdTramite($this->dblIdTramit);
101   - $objProcedimentoAndamentoDTO->setStrSituacao($strSituacao);
102   - $objProcedimentoAndamentoDTO->setStrMensagem($strMensagem);
103   - $objProcedimentoAndamentoDTO->setStrHash($hash);
104   - $objProcedimentoAndamentoDTO->setNumTarefa($this->numTarefa);
105   -
106   - $objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO);
107   - // }
  87 + $objProcedimentoAndamentoBD = new ProcedimentoAndamentoBD($objInfraIBanco);
  88 + $objProcedimentoAndamentoBD->cadastrar($objProcedimentoAndamentoDTO);
108 89  
109 90 $objInfraIBanco->confirmarTransacao();
110 91 }
... ...