Commit 0864e14e69d9dcbb1869bfdfc2211ba20f8f80ab

Authored by Thiago Farias
1 parent 550b522e

Ajustes + US074

pen_procedimento_expedir_validar.php
... ... @@ -17,7 +17,7 @@ $objInfraException = new InfraException();
17 17  
18 18  
19 19 try {
20   -
  20 +
21 21 if(!array_key_exists('id_procedimento', $_GET) || empty($_GET['id_procedimento'])) {
22 22 throw new InfraException('Nenhum procedimento foi informado', 'Desconhecido');
23 23 }
... ... @@ -34,6 +34,35 @@ try {
34 34 // Utilizamos o protocolo para criar um indice para separar os erros entre o
35 35 // processo e os seus processos apensados
36 36 $strProtocoloFormatado = $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado();
  37 +
  38 + $objRelProtocoloProtocoloRN = new RelProtocoloProtocoloRN();
  39 +
  40 + //Consulta do ID Pai
  41 + $objRelProtocoloProtocoloDTO1 = new RelProtocoloProtocoloDTO();
  42 + $objRelProtocoloProtocoloDTO1->setDblIdProtocolo1($dblIdProcedimento);
  43 + $objRelProtocoloProtocoloDTO1->setStrStaAssociacao(RelProtocoloProtocoloRN ::$TA_PROCEDIMENTO_ANEXADO);
  44 + $objRelProtocoloProtocoloDTO1->retDblIdProtocolo1();
  45 +
  46 + //Consulta do ID Filhos
  47 + $objRelProtocoloProtocoloDTO2 = new RelProtocoloProtocoloDTO();
  48 + $objRelProtocoloProtocoloDTO2->setDblIdProtocolo2($dblIdProcedimento);
  49 + $objRelProtocoloProtocoloDTO2->setStrStaAssociacao(RelProtocoloProtocoloRN ::$TA_PROCEDIMENTO_ANEXADO);
  50 + $objRelProtocoloProtocoloDTO2->retDblIdProtocolo2();
  51 +
  52 + $numCount1 = $objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO1);
  53 + $numCount2 = $objRelProtocoloProtocoloRN->contarRN0843($objRelProtocoloProtocoloDTO2);
  54 +
  55 + if ($numCount1 > 0 && $numCount2 > 0) {
  56 + $objInfraException->adicionarValidacao('Esse processo está anexado a outro processo e possui outros em anexo, portanto não pode ser tramitado.', $strProtocoloFormatado);
  57 + } else {
  58 + if ($numCount1 > 0) {
  59 + $objInfraException->adicionarValidacao('Esse processo possuí outros em anexo, portanto não pode ser tramitado externamente.', $strProtocoloFormatado);
  60 + }
  61 +
  62 + if ($numCount2 > 0) {
  63 + $objInfraException->adicionarValidacao('Esse processo está anexado a outro processo, portanto não pode ser tramitado.', $strProtocoloFormatado);
  64 + }
  65 + }
37 66  
38 67 if(!array_key_exists('txtProtocoloExibir', $_POST) || empty($_POST['txtProtocoloExibir'])) {
39 68 $objInfraException->adicionarValidacao('Informe o Protocolo', $strProtocoloFormatado);
... ...
rn/ExpedirProcedimentoRN.php
... ... @@ -892,7 +892,6 @@ class ExpedirProcedimentoRN extends InfraRN {
892 892 //Identificação do documento
893 893 $this->atribuirNumeracaoDocumento($documento, $documentoDTO);
894 894  
895   -
896 895 if($documento->retirado === true){
897 896  
898 897 $penComponenteDigitalDTO = new ComponenteDigitalDTO();
... ... @@ -915,14 +914,23 @@ class ExpedirProcedimentoRN extends InfraRN {
915 914 $documento->componenteDigital->tipoDeConteudo = $componenteDigital->getStrTipoConteudo();
916 915 $documento->componenteDigital->idAnexo = $componenteDigital->getNumIdAnexo();
917 916  
  917 +
  918 +
  919 + // -------------------------- INICIO DA TAREFA US074 -------------------------------//
  920 + $documento = $this->atribuirDadosAssinaturaDigital($documentoDTO, $documento, $componenteDigital->getStrHashConteudo());
  921 + // -------------------------- FIM TAREFA US074 -------------------------------//
  922 +
  923 +
918 924 if($componenteDigital->getStrMimeType() == 'outro'){
919 925 $documento->componenteDigital->dadosComplementaresDoTipoDeArquivo = 'outro';
920 926 }
921 927  
922 928 }else{
923 929 $this->atribuirComponentesDigitais($documento, $documentoDTO);
  930 +
924 931 }
925 932  
  933 +
926 934 }else{
927 935 $this->atribuirComponentesDigitais($documento, $documentoDTO);
928 936 }
... ... @@ -1021,6 +1029,13 @@ class ExpedirProcedimentoRN extends InfraRN {
1021 1029 $objDocumento->componenteDigital->mimeType = $arrInformacaoArquivo['MIME_TYPE'];
1022 1030 $objDocumento->componenteDigital->tipoDeConteudo = $this->obterTipoDeConteudo($arrInformacaoArquivo['MIME_TYPE']);
1023 1031  
  1032 +
  1033 + // -------------------------- INICIO DA TAREFA US074 -------------------------------/
  1034 +
  1035 + $objDocumento = $this->atribuirDadosAssinaturaDigital($objDocumentoDTO, $objDocumento, $hashDoComponenteDigital);
  1036 + // -------------------------- FIM TAREFA US074 -------------------------------//
  1037 +
  1038 +
1024 1039 if($arrInformacaoArquivo['MIME_TYPE'] == 'outro'){
1025 1040 $objDocumento->componenteDigital->dadosComplementaresDoTipoDeArquivo = $arrInformacaoArquivo['dadosComplementaresDoTipoDeArquivo'];
1026 1041 }
... ... @@ -1035,12 +1050,82 @@ class ExpedirProcedimentoRN extends InfraRN {
1035 1050 $objDocumento->componenteDigital->idAnexo = $arrInformacaoArquivo['ID_ANEXO'];
1036 1051 return $objDocumento;
1037 1052 }
  1053 +
  1054 + public function atribuirDadosAssinaturaDigital($objDocumentoDTO, $objDocumento, $strHashDocumento) {
  1055 + //Busca as Tarjas
  1056 + $objDocumentoDTOTarjas = new DocumentoDTO();
  1057 + $objDocumentoDTOTarjas->retDblIdDocumento();
  1058 + $objDocumentoDTOTarjas->retStrNomeSerie();
  1059 + $objDocumentoDTOTarjas->retStrProtocoloDocumentoFormatado();
  1060 + $objDocumentoDTOTarjas->retStrProtocoloProcedimentoFormatado();
  1061 + $objDocumentoDTOTarjas->retStrCrcAssinatura();
  1062 + $objDocumentoDTOTarjas->retStrQrCodeAssinatura();
  1063 + $objDocumentoDTOTarjas->retObjPublicacaoDTO();
  1064 + $objDocumentoDTOTarjas->retNumIdConjuntoEstilos();
  1065 + $objDocumentoDTOTarjas->retStrSinBloqueado();
  1066 + $objDocumentoDTOTarjas->retStrStaDocumento();
  1067 + $objDocumentoDTOTarjas->retStrStaProtocoloProtocolo();
  1068 + $objDocumentoDTOTarjas->retNumIdUnidadeGeradoraProtocolo();
  1069 + $objDocumentoDTOTarjas->retStrDescricaoTipoConferencia();
  1070 + $objDocumentoDTOTarjas->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento());
  1071 + $objDocumentoRN = new DocumentoRN();
  1072 + $objDocumentoDTOTarjas = $objDocumentoRN->consultarRN0005($objDocumentoDTOTarjas);
  1073 + $objAssinaturaRN = new AssinaturaRN();
  1074 + $tarjas = $objAssinaturaRN->montarTarjas($objDocumentoDTOTarjas);
  1075 +
  1076 +
  1077 + //Remove todos os 12 espaços padrões após remover as tags.
  1078 + $dataTarjas = explode(' ', strip_tags($tarjas));
  1079 + foreach ($dataTarjas as $key => $content) {
  1080 + $contentTrim = trim($content); //Limpa os espaços no inicio e fim de cada texto.
  1081 + if (empty($contentTrim)) {
  1082 + unset($dataTarjas[$key]);
  1083 + } else {
  1084 + $dataTarjas[$key] = html_entity_decode($contentTrim); //Decodifica por causa do strip_tags
  1085 + }
  1086 + }
  1087 +
  1088 + $dataTarjas = array_values($dataTarjas); //Reseta os valores da array
  1089 +
  1090 + //Busca data da assinatura
  1091 + $objAtividadeDTO = new AtividadeDTO();
  1092 + $objAtividadeDTO->setDblIdProtocolo($objDocumentoDTO->getDblIdProcedimento());
  1093 + $objAtividadeDTO->setNumIdTarefa(TarefaRN::$TI_ASSINATURA_DOCUMENTO);
  1094 + $objAtividadeDTO->retDthAbertura();
  1095 + $objAtividadeDTO->retNumIdAtividade();
  1096 + $objAtividadeRN = new AtividadeRN();
  1097 + $objAtividade = $objAtividadeRN->listarRN0036($objAtividadeDTO);
  1098 +
  1099 + $objDocumento->componenteDigital->assinaturaDigital = array();
  1100 + //Para cada assinatura
  1101 + foreach ($objAtividade as $keyOrder => $atividade) {
  1102 +
  1103 + //Busca outros dados da assinatura
  1104 + $objAssinaturaDTO = new AssinaturaDTO();
  1105 + $objAssinaturaDTO->setDblIdDocumento($objDocumentoDTO->getDblIdDocumento());
  1106 + $objAssinaturaDTO->setNumIdAtividade($atividade->getNumIdAtividade());
  1107 + $objAssinaturaDTO->retStrP7sBase64();
  1108 + $objAssinaturaRN = new AssinaturaRN();
  1109 + $objAssinatura = $objAssinaturaRN->consultarRN1322($objAssinaturaDTO);
  1110 +
  1111 + $objAssinaturaDigital = new stdClass();
  1112 +
  1113 + $objAssinaturaDigital->dataHora = $this->objProcessoEletronicoRN->converterDataWebService($atividade->getDthAbertura());
  1114 +
  1115 + $objAssinaturaDigital->hash = new SoapVar("<hash algoritmo='".self::ALGORITMO_HASH_ASSINATURA."'>{$strHashDocumento}</hash>", XSD_ANYXML);
  1116 + $objAssinaturaDigital->cadeiaDoCertificado = new SoapVar('<cadeiaDoCertificado formato="PKCS7">'.($objAssinatura->getStrP7sBase64() ? $objAssinatura->getStrP7sBase64() : 'null').'</cadeiaDoCertificado>', XSD_ANYXML);
  1117 + $objAssinaturaDigital->razao = utf8_encode($dataTarjas[$keyOrder]);
  1118 + $objAssinaturaDigital->observacao = utf8_encode($dataTarjas[count($dataTarjas) - 1]);
  1119 +
  1120 + $objDocumento->componenteDigital->assinaturaDigital[] = $objAssinaturaDigital;
  1121 + }
  1122 +
  1123 + return $objDocumento;
  1124 + }
1038 1125  
1039 1126 private function obterDadosArquivo(DocumentoDTO $objDocumentoDTO)
1040 1127 {
1041 1128  
1042   -
1043   -
1044 1129 if(!isset($objDocumentoDTO)){
1045 1130 throw new InfraException('Parâmetro $objDocumentoDTO não informado.');
1046 1131 }
... ...
rn/PenTramiteProcessadoRN.php
... ... @@ -108,7 +108,6 @@ class PenTramiteProcessadoRN extends InfraRN {
108 108 $objDTO = $objBD->consultar($objDTO);
109 109  
110 110 if(empty($objDTO)) {
111   -
112 111 throw new InfraException(sprintf('ID do tramite %s não foi localizado', $dblIdTramite));
113 112 }
114 113  
... ...