From 82dbf88c8199d15d51d1e82e712dec0e9f92ed75 Mon Sep 17 00:00:00 2001 From: Thiago Farias Date: Mon, 11 Dec 2017 14:40:53 -0200 Subject: [PATCH] Ajustes para multiplos documentos --- rn/ExpedirProcedimentoRN.php | 53 +++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/rn/ExpedirProcedimentoRN.php b/rn/ExpedirProcedimentoRN.php index 5dbd8fd..50a6538 100644 --- a/rn/ExpedirProcedimentoRN.php +++ b/rn/ExpedirProcedimentoRN.php @@ -1015,7 +1015,7 @@ class ExpedirProcedimentoRN extends InfraRN { //TODO: Revisar tal implementação para atender a geração de hash de arquivos grandes $strAlgoritmoHash = self::ALGORITMO_HASH_DOCUMENTO; $strConteudoAssinatura = $arrInformacaoArquivo['CONTEUDO']; - $hashDoComponenteDigital = hash($strAlgoritmoHash, $strConteudoAssinatura, true); + $hashDoComponenteDigital = hash($strAlgoritmoHash, $strConteudoAssinatura, true); $hashDoComponenteDigital = base64_encode($hashDoComponenteDigital); $objDocumento->componenteDigital = new stdClass(); @@ -1031,7 +1031,6 @@ class ExpedirProcedimentoRN extends InfraRN { // -------------------------- INICIO DA TAREFA US074 -------------------------------/ - $objDocumento = $this->atribuirDadosAssinaturaDigital($objDocumentoDTO, $objDocumento, $hashDoComponenteDigital); // -------------------------- FIM TAREFA US074 -------------------------------// @@ -1052,6 +1051,8 @@ class ExpedirProcedimentoRN extends InfraRN { } public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objDocumento, $strHashDocumento) { + + //Busca as Tarjas $objDocumentoDTOTarjas = new DocumentoDTO(); $objDocumentoDTOTarjas->retDblIdDocumento(); @@ -1087,39 +1088,39 @@ class ExpedirProcedimentoRN extends InfraRN { $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); + $objAssinaturaDTO = new AssinaturaDTO(); + $objAssinaturaDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento()); + $objAssinaturaDTO->retNumIdAtividade(); + $objAssinaturaDTO->retStrP7sBase64(); + $objAssinaturaRN = new AssinaturaRN(); + $resAssinatura = $objAssinaturaRN->listarRN1323($objAssinaturaDTO); + $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); - + foreach ($resAssinatura as $keyOrder => $assinatura) { + + //Busca data da assinatura + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setNumIdAtividade($assinatura->getNumIdAtividade()); + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ASSINATURA_DOCUMENTO); + $objAtividadeDTO->retDthAbertura(); + $objAtividadeDTO->retNumIdAtividade(); + $objAtividadeRN = new AtividadeRN(); + $objAtividade = $objAtividadeRN->consultarRN0033($objAtividadeDTO); + $objAssinaturaDigital = new stdClass(); - - $objAssinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($atividade->getDthAbertura()); - + $objAssinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($objAtividade->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]); + $objAssinaturaDigital->cadeiaDoCertificado = new SoapVar(''.($assinatura->getStrP7sBase64() ? $assinatura->getStrP7sBase64() : 'null').'', XSD_ANYXML); + $objAssinaturaDigital->razao = utf8_encode($dataTarjas[$keyOrder]); + $objAssinaturaDigital->observacao = utf8_encode($dataTarjas[count($dataTarjas) - 1]); $objDocumento->componenteDigital->assinaturaDigital[] = $objAssinaturaDigital; } + + return $objDocumento; } -- libgit2 0.21.2