From 0864e14e69d9dcbb1869bfdfc2211ba20f8f80ab Mon Sep 17 00:00:00 2001 From: Thiago Farias Date: Thu, 7 Dec 2017 17:24:53 -0200 Subject: [PATCH] Ajustes + US074 --- pen_procedimento_expedir_validar.php | 31 ++++++++++++++++++++++++++++++- rn/ExpedirProcedimentoRN.php | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- rn/PenTramiteProcessadoRN.php | 1 - 3 files changed, 118 insertions(+), 5 deletions(-) diff --git a/pen_procedimento_expedir_validar.php b/pen_procedimento_expedir_validar.php index c86046d..51e1d3b 100644 --- a/pen_procedimento_expedir_validar.php +++ b/pen_procedimento_expedir_validar.php @@ -17,7 +17,7 @@ $objInfraException = new InfraException(); try { - + if(!array_key_exists('id_procedimento', $_GET) || empty($_GET['id_procedimento'])) { throw new InfraException('Nenhum procedimento foi informado', 'Desconhecido'); } @@ -34,6 +34,35 @@ try { // Utilizamos o protocolo para criar um indice para separar os erros entre o // processo e os seus processos apensados $strProtocoloFormatado = $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(); + + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN(); + + //Consulta do ID Pai + $objRelProtocoloProtocoloDTO1 = new RelProtocoloProtocoloDTO(); + $objRelProtocoloProtocoloDTO1->setDblIdProtocolo1($dblIdProcedimento); + $objRelProtocoloProtocoloDTO1->setStrStaAssociacao(RelProtocoloProtocoloRN ::$TA_PROCEDIMENTO_ANEXADO); + $objRelProtocoloProtocoloDTO1->retDblIdProtocolo1(); + + //Consulta do ID Filhos + $objRelProtocoloProtocoloDTO2 = new RelProtocoloProtocoloDTO(); + $objRelProtocoloProtocoloDTO2->setDblIdProtocolo2($dblIdProcedimento); + $objRelProtocoloProtocoloDTO2->setStrStaAssociacao(RelProtocoloProtocoloRN ::$TA_PROCEDIMENTO_ANEXADO); + $objRelProtocoloProtocoloDTO2->retDblIdProtocolo2(); + + $numCount1 = $objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO1); + $numCount2 = $objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO2); + + if ($numCount1 > 0 && $numCount2 > 0) { + $objInfraException->adicionarValidacao('Esse processo está anexado a outro processo e possui outros em anexo, portanto não pode ser tramitado.', $strProtocoloFormatado); + } else { + if ($numCount1 > 0) { + $objInfraException->adicionarValidacao('Esse processo possuí outros em anexo, portanto não pode ser tramitado externamente.', $strProtocoloFormatado); + } + + if ($numCount2 > 0) { + $objInfraException->adicionarValidacao('Esse processo está anexado a outro processo, portanto não pode ser tramitado.', $strProtocoloFormatado); + } + } if(!array_key_exists('txtProtocoloExibir', $_POST) || empty($_POST['txtProtocoloExibir'])) { $objInfraException->adicionarValidacao('Informe o Protocolo', $strProtocoloFormatado); diff --git a/rn/ExpedirProcedimentoRN.php b/rn/ExpedirProcedimentoRN.php index 27d2f67..5dbd8fd 100644 --- a/rn/ExpedirProcedimentoRN.php +++ b/rn/ExpedirProcedimentoRN.php @@ -892,7 +892,6 @@ class ExpedirProcedimentoRN extends InfraRN { //Identificação do documento $this->atribuirNumeracaoDocumento($documento, $documentoDTO); - if($documento->retirado === true){ $penComponenteDigitalDTO = new ComponenteDigitalDTO(); @@ -915,14 +914,23 @@ class ExpedirProcedimentoRN extends InfraRN { $documento->componenteDigital->tipoDeConteudo = $componenteDigital->getStrTipoConteudo(); $documento->componenteDigital->idAnexo = $componenteDigital->getNumIdAnexo(); + + + // -------------------------- INICIO DA TAREFA US074 -------------------------------// + $documento = $this->atribuirDadosAssinaturaDigital($documentoDTO, $documento, $componenteDigital->getStrHashConteudo()); + // -------------------------- FIM TAREFA US074 -------------------------------// + + if($componenteDigital->getStrMimeType() == 'outro'){ $documento->componenteDigital->dadosComplementaresDoTipoDeArquivo = 'outro'; } }else{ $this->atribuirComponentesDigitais($documento, $documentoDTO); + } + }else{ $this->atribuirComponentesDigitais($documento, $documentoDTO); } @@ -1021,6 +1029,13 @@ class ExpedirProcedimentoRN extends InfraRN { $objDocumento->componenteDigital->mimeType = $arrInformacaoArquivo['MIME_TYPE']; $objDocumento->componenteDigital->tipoDeConteudo = $this->obterTipoDeConteudo($arrInformacaoArquivo['MIME_TYPE']); + + // -------------------------- INICIO DA TAREFA US074 -------------------------------/ + + $objDocumento = $this->atribuirDadosAssinaturaDigital($objDocumentoDTO, $objDocumento, $hashDoComponenteDigital); + // -------------------------- FIM TAREFA US074 -------------------------------// + + if($arrInformacaoArquivo['MIME_TYPE'] == 'outro'){ $objDocumento->componenteDigital->dadosComplementaresDoTipoDeArquivo = $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo']; } @@ -1035,12 +1050,82 @@ class ExpedirProcedimentoRN extends InfraRN { $objDocumento->componenteDigital->idAnexo = $arrInformacaoArquivo['ID_ANEXO']; return $objDocumento; } + + public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objDocumento, $strHashDocumento) { + //Busca as Tarjas + $objDocumentoDTOTarjas = new DocumentoDTO(); + $objDocumentoDTOTarjas->retDblIdDocumento(); + $objDocumentoDTOTarjas->retStrNomeSerie(); + $objDocumentoDTOTarjas->retStrProtocoloDocumentoFormatado(); + $objDocumentoDTOTarjas->retStrProtocoloProcedimentoFormatado(); + $objDocumentoDTOTarjas->retStrCrcAssinatura(); + $objDocumentoDTOTarjas->retStrQrCodeAssinatura(); + $objDocumentoDTOTarjas->retObjPublicacaoDTO(); + $objDocumentoDTOTarjas->retNumIdConjuntoEstilos(); + $objDocumentoDTOTarjas->retStrSinBloqueado(); + $objDocumentoDTOTarjas->retStrStaDocumento(); + $objDocumentoDTOTarjas->retStrStaProtocoloProtocolo(); + $objDocumentoDTOTarjas->retNumIdUnidadeGeradoraProtocolo(); + $objDocumentoDTOTarjas->retStrDescricaoTipoConferencia(); + $objDocumentoDTOTarjas->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); + $objDocumentoRN = new DocumentoRN(); + $objDocumentoDTOTarjas = $objDocumentoRN->consultarRN0005($objDocumentoDTOTarjas); + $objAssinaturaRN = new AssinaturaRN(); + $tarjas = $objAssinaturaRN->montarTarjas($objDocumentoDTOTarjas); + + + //Remove todos os 12 espaços padrões após remover as tags. + $dataTarjas = explode(' ', strip_tags($tarjas)); + foreach ($dataTarjas as $key => $content) { + $contentTrim = trim($content); //Limpa os espaços no inicio e fim de cada texto. + if (empty($contentTrim)) { + unset($dataTarjas[$key]); + } else { + $dataTarjas[$key] = html_entity_decode($contentTrim); //Decodifica por causa do strip_tags + } + } + + $dataTarjas = array_values($dataTarjas); //Reseta os valores da array + + //Busca data da assinatura + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento()); + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ASSINATURA_DOCUMENTO); + $objAtividadeDTO->retDthAbertura(); + $objAtividadeDTO->retNumIdAtividade(); + $objAtividadeRN = new AtividadeRN(); + $objAtividade = $objAtividadeRN->listarRN0036($objAtividadeDTO); + + $objDocumento->componenteDigital->assinaturaDigital = array(); + //Para cada assinatura + foreach ($objAtividade as $keyOrder => $atividade) { + + //Busca outros dados da assinatura + $objAssinaturaDTO = new AssinaturaDTO(); + $objAssinaturaDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); + $objAssinaturaDTO->setNumIdAtividade($atividade->getNumIdAtividade()); + $objAssinaturaDTO->retStrP7sBase64(); + $objAssinaturaRN = new AssinaturaRN(); + $objAssinatura = $objAssinaturaRN->consultarRN1322($objAssinaturaDTO); + + $objAssinaturaDigital = new stdClass(); + + $objAssinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($atividade->getDthAbertura()); + + $objAssinaturaDigital->hash = new SoapVar("{$strHashDocumento}", XSD_ANYXML); + $objAssinaturaDigital->cadeiaDoCertificado = new SoapVar(''.($objAssinatura->getStrP7sBase64() ? $objAssinatura->getStrP7sBase64() : 'null').'', XSD_ANYXML); + $objAssinaturaDigital->razao = utf8_encode($dataTarjas[$keyOrder]); + $objAssinaturaDigital->observacao = utf8_encode($dataTarjas[count($dataTarjas) - 1]); + + $objDocumento->componenteDigital->assinaturaDigital[] = $objAssinaturaDigital; + } + + return $objDocumento; + } private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO) { - - if(!isset($objDocumentoDTO)){ throw new InfraException('Parâmetro $objDocumentoDTO não informado.'); } diff --git a/rn/PenTramiteProcessadoRN.php b/rn/PenTramiteProcessadoRN.php index 71933a6..b37b431 100644 --- a/rn/PenTramiteProcessadoRN.php +++ b/rn/PenTramiteProcessadoRN.php @@ -108,7 +108,6 @@ class PenTramiteProcessadoRN extends InfraRN { $objDTO = $objBD->consultar($objDTO); if(empty($objDTO)) { - throw new InfraException(sprintf('ID do tramite %s não foi localizado', $dblIdTramite)); } -- libgit2 0.21.2