Commit 216d35ac09559c4315ffbbd3bd5ecc7318a3e704
1 parent
8b36b7ea
Exists in
master
and in
3 other branches
[Fixed #43] Componente digital do documento XYZ não pode ser localizado
Showing
2 changed files
with
53 additions
and
42 deletions
Show diff stats
rn/ExpedirProcedimentoRN.php
| ... | ... | @@ -1108,6 +1108,7 @@ class ExpedirProcedimentoRN extends InfraRN { |
| 1108 | 1108 | //$this->atribuirAssinaturaEletronica($objDocumento->componenteDigital, $objDocumentoDTO); |
| 1109 | 1109 | |
| 1110 | 1110 | $objDocumento->componenteDigital->idAnexo = $arrInformacaoArquivo['ID_ANEXO']; |
| 1111 | + | |
| 1111 | 1112 | return $objDocumento; |
| 1112 | 1113 | } |
| 1113 | 1114 | |
| ... | ... | @@ -1238,52 +1239,61 @@ class ExpedirProcedimentoRN extends InfraRN { |
| 1238 | 1239 | |
| 1239 | 1240 | $objAnexoDTO = $this->consultarAnexo($objDocumentoDTO->getDblIdDocumento()); |
| 1240 | 1241 | |
| 1241 | - if(!isset($objAnexoDTO)){ | |
| 1242 | - throw new InfraException("Componente digital do documento {$strProtocoloDocumentoFormatado} não pode ser localizado."); | |
| 1243 | - } | |
| 1244 | - | |
| 1245 | - //VALIDAO DE TAMANHO DE DOCUMENTOS EXTERNOS PARA A EXPEDIO | |
| 1246 | - $objPenParametroRN = new PenParametroRN(); | |
| 1247 | - if($objAnexoDTO->getNumTamanho() > ($objPenParametroRN->getParametro('PEN_TAMANHO_MAXIMO_DOCUMENTO_EXPEDIDO') * 1024 * 1024) && $objDocumentoDTO->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){ | |
| 1248 | - $strTamanhoFormatado = round(($objAnexoDTO->getNumTamanho() / 1024) / 1024,2); | |
| 1249 | - throw new InfraException("O tamanho do documento {$strTamanhoFormatado} MB é maior que os {$objPenParametroRN->getParametro('PEN_TAMANHO_MAXIMO_DOCUMENTO_EXPEDIDO')} MB permitidos para trâmite externo de documentos."); | |
| 1250 | - } | |
| 1242 | + if(isset($objAnexoDTO)){ | |
| 1243 | + //VALIDAO DE TAMANHO DE DOCUMENTOS EXTERNOS PARA A EXPEDIO | |
| 1244 | + $objPenParametroRN = new PenParametroRN(); | |
| 1245 | + if($objAnexoDTO->getNumTamanho() > ($objPenParametroRN->getParametro('PEN_TAMANHO_MAXIMO_DOCUMENTO_EXPEDIDO') * 1024 * 1024) && $objDocumentoDTO->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){ | |
| 1246 | + $strTamanhoFormatado = round(($objAnexoDTO->getNumTamanho() / 1024) / 1024,2); | |
| 1247 | + throw new InfraException("O tamanho do documento {$strTamanhoFormatado} MB é maior que os {$objPenParametroRN->getParametro('PEN_TAMANHO_MAXIMO_DOCUMENTO_EXPEDIDO')} MB permitidos para trâmite externo de documentos."); | |
| 1248 | + } | |
| 1251 | 1249 | |
| 1252 | - //Obtenção do conteúdo do documento externo | |
| 1253 | - //TODO: Particionar o documento em tamanho menor caso ultrapasse XX megabytes | |
| 1254 | - $strCaminhoAnexo = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); | |
| 1255 | - | |
| 1256 | - $fp = fopen($strCaminhoAnexo, "rb"); | |
| 1257 | - try { | |
| 1258 | - $strConteudoAssinatura = fread($fp, filesize($strCaminhoAnexo)); | |
| 1259 | - fclose($fp); | |
| 1260 | - } catch(Exception $e) { | |
| 1261 | - fclose($fp); | |
| 1262 | - throw new InfraException("Erro obtendo conteúdo do anexo do documento {$strProtocoloDocumentoFormatado}", $e); | |
| 1263 | - } | |
| 1250 | + //Obtenção do conteúdo do documento externo | |
| 1251 | + $strCaminhoAnexo = $this->objAnexoRN->obterLocalizacao($objAnexoDTO); | |
| 1264 | 1252 | |
| 1265 | - $finfo = finfo_open(FILEINFO_MIME_TYPE); | |
| 1266 | - try { | |
| 1267 | - $strMimeType = finfo_file($finfo, $strCaminhoAnexo); | |
| 1268 | - $strDadosComplementaresDoTipoDeArquivo = ""; | |
| 1269 | - if(!array_search($strMimeType, $this->arrPenMimeTypes)){ | |
| 1270 | - $strDadosComplementaresDoTipoDeArquivo = $strMimeType; | |
| 1271 | - $strMimeType = 'outro'; | |
| 1253 | + $fp = fopen($strCaminhoAnexo, "rb"); | |
| 1254 | + try { | |
| 1255 | + $strConteudoAssinatura = fread($fp, filesize($strCaminhoAnexo)); | |
| 1256 | + fclose($fp); | |
| 1257 | + } catch(Exception $e) { | |
| 1258 | + fclose($fp); | |
| 1259 | + throw new InfraException("Erro obtendo conteúdo do anexo do documento {$strProtocoloDocumentoFormatado}", $e); | |
| 1272 | 1260 | } |
| 1273 | 1261 | |
| 1274 | - finfo_close($finfo); | |
| 1275 | - } catch(Exception $e) { | |
| 1276 | - finfo_close($finfo); | |
| 1277 | - throw new InfraException("Erro obtendo informações do anexo do documento {$strProtocoloDocumentoFormatado}", $e); | |
| 1278 | - } | |
| 1262 | + $finfo = finfo_open(FILEINFO_MIME_TYPE); | |
| 1263 | + try { | |
| 1264 | + $strMimeType = finfo_file($finfo, $strCaminhoAnexo); | |
| 1265 | + $strDadosComplementaresDoTipoDeArquivo = ""; | |
| 1266 | + if(!array_search($strMimeType, $this->arrPenMimeTypes)){ | |
| 1267 | + $strDadosComplementaresDoTipoDeArquivo = $strMimeType; | |
| 1268 | + $strMimeType = 'outro'; | |
| 1269 | + } | |
| 1279 | 1270 | |
| 1280 | - $arrInformacaoArquivo['NOME'] = $objAnexoDTO->getStrNome(); | |
| 1281 | - $arrInformacaoArquivo['CONTEUDO'] = $strConteudoAssinatura; | |
| 1282 | - $arrInformacaoArquivo['TAMANHO'] = $objAnexoDTO->getNumTamanho(); | |
| 1283 | - $arrInformacaoArquivo['MIME_TYPE'] = $strMimeType; | |
| 1284 | - $arrInformacaoArquivo['ID_ANEXO'] = $objAnexoDTO->getNumIdAnexo(); | |
| 1285 | - $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'] = $strDadosComplementaresDoTipoDeArquivo; | |
| 1286 | 1271 | |
| 1272 | + finfo_close($finfo); | |
| 1273 | + } catch(Exception $e) { | |
| 1274 | + finfo_close($finfo); | |
| 1275 | + throw new InfraException("Erro obtendo informações do anexo do documento {$strProtocoloDocumentoFormatado}", $e); | |
| 1276 | + } | |
| 1277 | + | |
| 1278 | + $arrInformacaoArquivo['NOME'] = $objAnexoDTO->getStrNome(); | |
| 1279 | + $arrInformacaoArquivo['CONTEUDO'] = $strConteudoAssinatura; | |
| 1280 | + $arrInformacaoArquivo['TAMANHO'] = $objAnexoDTO->getNumTamanho(); | |
| 1281 | + $arrInformacaoArquivo['MIME_TYPE'] = $strMimeType; | |
| 1282 | + $arrInformacaoArquivo['ID_ANEXO'] = $objAnexoDTO->getNumIdAnexo(); | |
| 1283 | + $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'] = $strDadosComplementaresDoTipoDeArquivo; | |
| 1284 | + | |
| 1285 | + } elseif ($objDocumentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_DOCUMENTO_CANCELADO) { | |
| 1286 | + //Quando não é localizado um Anexo para um documento cancelado, os dados de componente digital precisam ser enviados | |
| 1287 | + //pois o Barramento considera o componente digital do documento de forma obrigatória | |
| 1288 | + $arrInformacaoArquivo['NOME'] = 'cancelado.html'; | |
| 1289 | + $arrInformacaoArquivo['CONTEUDO'] = "[documento cancelado]"; | |
| 1290 | + $arrInformacaoArquivo['TAMANHO'] = 0; | |
| 1291 | + $arrInformacaoArquivo['ID_ANEXO'] = null; | |
| 1292 | + $arrInformacaoArquivo['MIME_TYPE'] = 'text/html'; | |
| 1293 | + $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'] = 'outro'; | |
| 1294 | + } else { | |
| 1295 | + throw new InfraException("Componente digital do documento {$strProtocoloDocumentoFormatado} não pode ser localizado."); | |
| 1296 | + } | |
| 1287 | 1297 | } |
| 1288 | 1298 | else { |
| 1289 | 1299 | $objDocumentoDTO2 = new DocumentoDTO(); | ... | ... |
rn/ReceberProcedimentoRN.php
| ... | ... | @@ -1799,8 +1799,9 @@ class ReceberProcedimentoRN extends InfraRN |
| 1799 | 1799 | $arquivoExtensaoDTO->retStrExtensao(); |
| 1800 | 1800 | |
| 1801 | 1801 | if($arquivoExtensaoBD->contar($arquivoExtensaoDTO) == 0){ |
| 1802 | - $this->objProcessoEletronicoRN->recusarTramite($parIdTramite, 'Componentes digitais com formato inválido no destinatário. ', ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_FORMATO); | |
| 1803 | - throw new InfraException("Processo recusado devido a existência de documento em formato {$extDocumento} não permitido pelo sistema. "); | |
| 1802 | + $strMensagem = "Processo recusado devido a existência de documento em formato {$extDocumento} não permitido pelo sistema."; | |
| 1803 | + $this->objProcessoEletronicoRN->recusarTramite($parIdTramite, $strMensagem, ProcessoEletronicoRN::MTV_RCSR_TRAM_CD_FORMATO); | |
| 1804 | + throw new InfraException($strMensagem); | |
| 1804 | 1805 | } |
| 1805 | 1806 | } |
| 1806 | 1807 | } | ... | ... |