From 142cd32a5a04bd1004aa37fda4512b80e2b40815 Mon Sep 17 00:00:00 2001 From: eduardo.praxedes Date: Fri, 11 Nov 2016 15:54:02 -0200 Subject: [PATCH] Adaptação da Recusa, cancelamento e correção do bug no NRE --- PENIntegracao.php | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------- bd/TramiteBD.php | 2 +- dto/ProcessoExpedidoDTO.php | 4 ++-- dto/ReceberTramiteRecusadoDTO.php | 16 ++++++++++------ dto/TramiteDTO.php | 19 +++++++++++++------ pen_procedimento_estado.php | 2 +- pen_procedimento_expedido_listar.php | 418 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- rn/ExpedirProcedimentoRN.php | 46 ++++++++++++++++++++++++---------------------- rn/PenAtividadeRN.php | 6 +++--- rn/PenAtualizarSeiRN.php | 12 ++++++++---- rn/PendenciasTramiteRN.php | 5 +++-- rn/ProcessarPendenciasRN.php | 5 +++-- rn/ProcessoEletronicoRN.php | 49 ++++++++++++++++++++++++++++++++++++------------- rn/ProcessoExpedidoRN.php | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ rn/ReceberProcedimentoRN.php | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------- rn/ReceberReciboTramiteRN.php | 16 ++++++++++++---- 16 files changed, 617 insertions(+), 436 deletions(-) create mode 100644 rn/ProcessoExpedidoRN.php diff --git a/PENIntegracao.php b/PENIntegracao.php index 6a8080f..09e7b04 100644 --- a/PENIntegracao.php +++ b/PENIntegracao.php @@ -17,14 +17,14 @@ class PENIntegracao extends SeiIntegracao { } public function montarBotaoProcesso(ProcedimentoAPI $objSeiIntegracaoDTO) { - + $objProcedimentoDTO = new ProcedimentoDTO(); $objProcedimentoDTO->setDblIdProcedimento($objSeiIntegracaoDTO->getIdProcedimento()); $objProcedimentoDTO->retTodos(); $objProcedimentoRN = new ProcedimentoRN(); $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); - + $objSessaoSEI = SessaoSEI::getInstance(); $objPaginaSEI = PaginaSEI::getInstance(); $strAcoesProcedimento = ""; @@ -32,7 +32,8 @@ class PENIntegracao extends SeiIntegracao { $dblIdProcedimento = $objProcedimentoDTO->getDblIdProcedimento(); $numIdUsuario = SessaoSEI::getInstance()->getNumIdUsuario(); $numIdUnidadeAtual = SessaoSEI::getInstance()->getNumIdUnidadeAtual(); - + $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + //Verifica se o processo encontra-se aberto na unidade atual $objAtividadeRN = new AtividadeRN(); $objPesquisaPendenciaDTO = new PesquisaPendenciaDTO(); @@ -43,64 +44,38 @@ class PENIntegracao extends SeiIntegracao { $arrObjProcedimentoDTO = $objAtividadeRN->listarPendenciasRN0754($objPesquisaPendenciaDTO); $bolFlagAberto = count($arrObjProcedimentoDTO) == 1; - //Verificação da Restrição de Acesso à Funcionalidade $bolAcaoExpedirProcesso = $objSessaoSEI->verificarPermissao('pen_procedimento_expedir'); - // ExpedirProcedimentoRN::__construct() criar a instância do ProcessoEletronicoRN - // e este pode lançar exceções caso alguma configuração dele não estaja correta - // invalidando demais ações na tela do Controle de Processo, então ecapsulamos - // no try/catch para prevenir o erro em tela adicionamos no log - // try { - - $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); - $objProcedimentoDTO = $objExpedirProcedimentoRN->consultarProcedimento($dblIdProcedimento); - - /* $bolProcessoEstadoNormal = !in_array($objProcedimentoDTO->getStrStaEstadoProtocolo(), array( - ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO, - ProtocoloRN::$TE_EM_PROCESSAMENTO, - ProtocoloRn::$TE_BLOQUEADO - ));*/ - - //TODO: Não apresentar - //$bolFlagAberto && $bolAcaoProcedimentoEnviar && $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo()!=ProtocoloRN::$NA_SIGILOSO - // if ($bolFlagAberto && $bolAcaoExpedirProcesso && $bolProcessoEstadoNormal && $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_SIGILOSO) { - $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); - $strAcoesProcedimento .= 'Expedir Processo'; - //} - - /* if ($objProcedimentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_EM_PROCESSAMENTO) { + $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); + $objProcedimentoDTO = $objExpedirProcedimentoRN->consultarProcedimento($dblIdProcedimento); - $objProcessoEletronicoRN = new ProcessoEletronicoRN(); + $bolProcessoEstadoNormal = !in_array($objProcedimentoDTO->getStrStaEstadoProtocolo(), array( + ProtocoloRN::$TE_PROCEDIMENTO_SOBRESTADO, + ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO + )); - if ($objProcessoEletronicoRN->isDisponivelCancelarTramite($objProcedimentoDTO->getStrProtocoloProcedimentoFormatado())) { - $strAcoesProcedimento .= ''; - $strAcoesProcedimento .= 'Cancelar Expedição'; - $strAcoesProcedimento .= ''; - } - } - $objProcedimentoAndamentoDTO = new ProcedimentoAndamentoDTO(); - $objProcedimentoAndamentoDTO->setDblIdProcedimento($dblIdProcedimento); - - $objGenericoBD = new GenericoBD(BancoSEI::getInstance()); - - if ($objGenericoBD->contar($objProcedimentoAndamentoDTO) > 0) { - - $strAcoesProcedimento .= ''; - $strAcoesProcedimento .= 'Consultar Recibos'; - $strAcoesProcedimento .= ''; - } - - /* } catch (InfraException $e) { - LogSEI::getInstance()->gravar($e->getStrDescricao()); - } catch (Exception $e) { - LogSEI::getInstance()->gravar($e->getMessage()); - }*/ + //Apresenta o botão de expedir processo + if ($bolFlagAberto && $bolAcaoExpedirProcesso && $bolProcessoEstadoNormal && $objProcedimentoDTO->getStrStaNivelAcessoGlobalProtocolo() != ProtocoloRN::$NA_SIGILOSO) { + $numTabBotao = $objPaginaSEI->getProxTabBarraComandosSuperior(); + $strAcoesProcedimento .= 'Expedir Processo'; + } + //Apresenta o botão da página de recibos + $strAcoesProcedimento .= ''; + $strAcoesProcedimento .= 'Consultar Recibos'; + $strAcoesProcedimento .= ''; + + //Apresenta o botão de cancelar trâmite + if ($objProcessoEletronicoRN->isDisponivelCancelarTramite($objProcedimentoDTO->getStrProtocoloProcedimentoFormatado())) { + $strAcoesProcedimento .= ''; + $strAcoesProcedimento .= 'Cancelar Expedição'; + $strAcoesProcedimento .= ''; + } + return array($strAcoesProcedimento); } - public function montarIconeControleProcessos($arrObjProcedimentoAPI = array()) { $arrStrIcone = array(); @@ -123,23 +98,18 @@ class PENIntegracao extends SeiIntegracao { foreach ($arrObjProcedimentoDTO as $objProcedimentoDTO) { $dblIdProcedimento = $objProcedimentoDTO->getDblIdProcedimento(); + $objPenProtocoloDTO = new PenProtocoloDTO(); + $objPenProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); + $objPenProtocoloDTO->retStrSinObteveRecusa(); + $objPenProtocoloDTO->setNumMaxRegistrosRetorno(1); - if ($objProcedimentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO) { - $arrStrIcone[$dblIdProcedimento] = array(''); - } else { - $objPenProtocoloDTO = new PenProtocoloDTO(); - $objPenProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); - $objPenProtocoloDTO->retStrSinObteveRecusa(); - $objPenProtocoloDTO->setNumMaxRegistrosRetorno(1); - - $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); - - if (!empty($objPenProtocoloDTO) && $objPenProtocoloDTO->getStrSinObteveRecusa() == 'S') { + $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); + $objPenProtocoloDTO = $objProtocoloBD->consultar($objPenProtocoloDTO); - $arrStrIcone[$dblIdProcedimento] = array(''); - } + if (!empty($objPenProtocoloDTO) && $objPenProtocoloDTO->getStrSinObteveRecusa() == 'S') { + $arrStrIcone[$dblIdProcedimento] = array(''); } + } } @@ -154,43 +124,52 @@ class PENIntegracao extends SeiIntegracao { return static::getDiretorio() . '/imagens'; } - public function montarMensagemSituacaoProcedimento(ProcedimentoDTO $objProcedimentoDTO) { - if ($objProcedimentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_EM_PROCESSAMENTO || $objProcedimentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_BLOQUEADO) { + public function montarMensagemProcesso(ProcedimentoAPI $objProcedimentoAPI) { + + $objProcedimentoDTO = new ProcedimentoDTO(); + $objProcedimentoDTO->setDblIdProcedimento($objProcedimentoAPI->getIdProcedimento()); + $objProcedimentoDTO->retStrStaEstadoProtocolo(); + $objProcedimentoDTO->retDblIdProcedimento(); + + $objProcedimentoRN = new ProcedimentoRN(); + $objProcedimentoDTO = $objProcedimentoRN->consultarRN0201($objProcedimentoDTO); + + if ($objProcedimentoDTO->getStrStaEstadoProtocolo() == ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO) { + $objAtividadeDTO = new AtividadeDTO(); $objAtividadeDTO->setDblIdProtocolo($objProcedimentoDTO->getDblIdProcedimento()); + $objAtividadeDTO->setNumIdTarefa( + array(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), + ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO)), + InfraDTO::$OPER_IN); + $objAtividadeDTO->setNumMaxRegistrosRetorno(1); + $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); $objAtividadeDTO->retNumIdAtividade(); - + $objAtividadeDTO->retNumIdTarefa(); + $objAtividadeRN = new AtividadeRN(); $arrAtividadeDTO = (array) $objAtividadeRN->listarRN0036($objAtividadeDTO); - if (empty($arrAtividadeDTO)) { - - throw new InfraException('Não foi possivel localizar as atividades executadas nesse procedimento'); - } - - $objFiltroAtributoAndamentoDTO = new AtributoAndamentoDTO(); - $objFiltroAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); - $objFiltroAtributoAndamentoDTO->retStrValor(); - $objFiltroAtributoAndamentoDTO->setOrdNumIdAtributoAndamento(InfraDTO::$TIPO_ORDENACAO_DESC); - - $objAtributoAndamentoRN = new AtributoAndamentoRN(); - $objAtributoAndamentoFinal = null; - - foreach ($arrAtividadeDTO as $objAtividadeDTO) { - - $objFiltroAtributoAndamentoDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade()); - $objAtributoAndamentoDTO = $objAtributoAndamentoRN->consultarRN1366($objFiltroAtributoAndamentoDTO); - - if (!empty($objAtributoAndamentoDTO)) { - $objAtributoAndamentoFinal = $objAtributoAndamentoDTO; + if (isset($arrAtividadeDTO[0])) { + $objAtividadeDTO = $arrAtividadeDTO[0]; + + if($objAtividadeDTO->getNumIdTarefa() == ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)){ + + $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); + $objAtributoAndamentoDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade()); + $objAtributoAndamentoDTO->retStrValor(); + + $objAtributoAndamentoRN = new AtributoAndamentoRN(); + $objAtributoAndamentoDTO = $objAtributoAndamentoRN->consultarRN1366($objAtributoAndamentoDTO); + + return sprintf('Processo em trâmite externo para "%s".', $objAtributoAndamentoDTO->getStrValor()); + + } + } - $objAtributoAndamentoDTO = $objAtributoAndamentoFinal; - - //@TODOJOIN: Retirar esse array_pop(array_pop) pois a versão 5.6 não permite realizar esse tipo de aninhamento. - $strUnidadeDestino = array_pop(array_pop(PaginaSEI::getInstance()->getArrOptionsSelect($objAtributoAndamentoDTO->getStrValor()))); - return "
" . sprintf('Processo em trâmite externo para "%s".', $strUnidadeDestino); } } diff --git a/bd/TramiteBD.php b/bd/TramiteBD.php index 8af5e6d..82f3a9e 100644 --- a/bd/TramiteBD.php +++ b/bd/TramiteBD.php @@ -1,4 +1,4 @@ -configurarFK('IdUsuario', 'usuario', 'id_usuario'); $this->configurarFK('IdAtividade', 'atributo_andamento', 'id_atividade'); - $this->setStrStaEstado(ProtocoloRN::$TE_BLOQUEADO); - $this->setNumTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); + //$this->setStrStaEstado(ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO); + //$this->setNumTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); $this->setOrd('Expedido', InfraDTO::$TIPO_ORDENACAO_DESC); } } diff --git a/dto/ReceberTramiteRecusadoDTO.php b/dto/ReceberTramiteRecusadoDTO.php index 6b1c823..00ff0a7 100644 --- a/dto/ReceberTramiteRecusadoDTO.php +++ b/dto/ReceberTramiteRecusadoDTO.php @@ -1,18 +1,22 @@ adicionarAtributo(InfraDTO::$PREFIXO_DBL, 'IdTramite', 'id_tramite'); - $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'Registro', 'numero_registro'); - $this->configurarPK('IdTramite', InfraDTO::$TIPO_PK_INFORMADO); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdTramite', 'id_tramite'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdProtocolo', 'id_protocolo'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdUnidadeOrigem', 'id_unidade_origem'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_NUM, 'IdTarefa', 'id_tarefa'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'MotivoRecusa', 'motivo_recusa'); + $this->adicionarAtributo(InfraDTO::$PREFIXO_STR, 'NomeUnidadeDestino', 'nome_unidade_destino'); + } + } diff --git a/dto/TramiteDTO.php b/dto/TramiteDTO.php index 4f87b68..1fc997d 100644 --- a/dto/TramiteDTO.php +++ b/dto/TramiteDTO.php @@ -2,22 +2,29 @@ class TramiteDTO extends InfraDTO { - public function getStrNomeTabela() { - return 'md_pen_tramite'; - } + public function getStrNomeTabela() { + return 'md_pen_tramite'; + } - public function montar() { + public function montar() { $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'NumeroRegistro', 'numero_registro'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdTramite', 'id_tramite'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'TicketEnvioComponentes', 'ticket_envio_componentes'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_DTH, 'Registro', 'dth_registro'); $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdAndamento', 'id_andamento'); - + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'id_usuario'); + $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade'); $this->adicionarAtributo(InfraDTO::$PREFIXO_ARR, 'ObjComponenteDigitalDTO'); - + + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUsuario', 'nome', 'usuario'); + $this->adicionarAtributoTabelaRelacionada(InfraDTO::$PREFIXO_STR, 'NomeUnidade', 'nome', 'unidade'); + $this->configurarPK('NumeroRegistro', InfraDTO::$TIPO_PK_INFORMADO); $this->configurarPK('IdTramite', InfraDTO::$TIPO_PK_INFORMADO); + $this->configurarFK('NumeroRegistro', 'md_pen_tramite', 'numero_registro', InfraDTO::$TIPO_FK_OBRIGATORIA); + $this->configurarFK('IdUsuario', 'usuario u', 'u.id_usuario'); + $this->configurarFK('IdUnidade', 'unidade u', 'u.id_unidade'); } } diff --git a/pen_procedimento_estado.php b/pen_procedimento_estado.php index 3041a0a..2b78897 100644 --- a/pen_procedimento_estado.php +++ b/pen_procedimento_estado.php @@ -211,7 +211,7 @@ try { // @join_tec US008.03 (#23092) | @join_tec US008.13 (#23092) - if($numTarefa == ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO){ + if($numTarefa == ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)){ $strResultado .= 'Recibo de Confirmação de Envio'; } // @join_tec US008.01 (#23092) diff --git a/pen_procedimento_expedido_listar.php b/pen_procedimento_expedido_listar.php index 1479b08..3c05b84 100644 --- a/pen_procedimento_expedido_listar.php +++ b/pen_procedimento_expedido_listar.php @@ -1,217 +1,201 @@ -validarLink(); - $objSessaoSEI->validarPermissao($_GET['acao']); - $arrComandos = array(); - - $strTitulo = 'Processos Expedidos'; - - $objFiltroDTO = new ProtocoloDTO(); - $objFiltroDTO->setStrStaEstado(ProtocoloRN::$TE_BLOQUEADO); - $objFiltroDTO->setNumIdTarefaAtividade(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO); - // $objFiltroDTO->setDistinct(true); - $objFiltroDTO->retDblIdProtocolo(); - $objFiltroDTO->retStrProtocoloFormatado(); - - // Verificar no DTO sobre funções de agragação para clausula DISTINCT - if(get_parent_class(BancoSEI::getInstance()) != 'InfraMySqli') { - $objFiltroDTO->retDthConclusaoAtividade(); - } - $objPaginaSEI->prepararPaginacao($objFiltroDTO, 10); - $objPaginaSEI->prepararOrdenacao($objFiltroDTO, 'ConclusaoAtividade', InfraDTO::$TIPO_ORDENACAO_DESC); - - BancoSEI::getInstance()->abrirConexao(); - - $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $arrObjFiltroDTO = $objProtocoloBD->listar($objFiltroDTO); - - $arrObjProcessoExpedidoDTO = array(); - $numRegistros = 0; - - if(!empty($arrObjFiltroDTO)) { - - $arrIdProtocolo = InfraArray::converterArrInfraDTO($arrObjFiltroDTO, 'IdProtocolo'); - - $objProcessoExpedido = new ProcessoExpedidoDTO(); - $objProcessoExpedido->setDblIdProtocolo($arrIdProtocolo, InfraDTO::$OPER_IN); - $objProcessoExpedido->retTodos(); - - $objGenericoBD = new ProcessoExpedidoBD(BancoSEI::getInstance()); - $arrObjProcessoExpedidoDTO = $objGenericoBD->listar($objProcessoExpedido); - - if(!empty($arrObjProcessoExpedidoDTO)) { - - $arrObjProcessoExpedidoDTO = InfraArray::distinctArrInfraDTO($arrObjProcessoExpedidoDTO, 'IdProtocolo'); - - $numRegistros = count($arrObjProcessoExpedidoDTO); - } - } - - $objPaginaSEI->processarPaginacao($objFiltroDTO); - - if (!empty($arrObjProcessoExpedidoDTO)) { - - $arrComandos[] = ''; - - $strSumarioTabela = 'Tabela de Processos.'; - $strCaptionTabela = 'Processos'; - - $strResultado .= '' . "\n"; - $strResultado .= ''; - $strResultado .= ''; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strResultado .= '' . "\n"; - $strCssTr = ''; - - $numIndice = 1; - - foreach($arrObjProcessoExpedidoDTO as $objProcessoExpedidoDTO) { - - $strCssTr = ($strCssTr == '') ? '' : ''; - $strResultado .= $strCssTr; - - $strResultado .= ''."\n"; - $strResultado .= '' . "\n"; - $strResultado .= ''; - $strResultado .= ''; - $strResultado .= '' . "\n"; - - $numIndice++; - } - $strResultado .= '
' . $objPaginaSEI->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPaginaSEI->getThCheck() . 'ProcessoUsuárioData de ExpediçãoUnidade Destino
'.$objPaginaSEI->getTrCheck($numIndice,$objProcessoExpedidoDTO->getDblIdProtocolo(),$objProcessoExpedidoDTO->getStrProtocoloFormatado()).''.$objProcessoExpedidoDTO->getStrProtocoloFormatado().'' . $objProcessoExpedidoDTO->getStrNomeUsuario() . '' . $objProcessoExpedidoDTO->getDthExpedido() . '' . $objProcessoExpedidoDTO->getStrDestino(); - - - if ($bolAcaoRemoverSobrestamento) { - $strResultado .= 'Remover Sobrestamento '; - } - - $strResultado .= '
'; - } -} -catch (Exception $e) { - $objPaginaSEI->processarExcecao($e); -} - - - -$objPaginaSEI->montarDocType(); -$objPaginaSEI->abrirHtml(); -$objPaginaSEI->abrirHead(); -$objPaginaSEI->montarMeta(); -$objPaginaSEI->montarTitle(':: ' . $objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo . ' ::'); -$objPaginaSEI->montarStyle(); -?> - -montarJavaScript(); ?> - -fecharHead(); -$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); -?> -
-montarBarraComandosSuperior($arrComandos); - $objPaginaSEI->montarAreaTabela($strResultado, $numRegistros, true); - $objPaginaSEI->montarBarraComandosInferior($arrComandos); -?> -
-fecharBody(); -$objPaginaSEI->fecharHtml(); \ No newline at end of file +validarLink(); + $objSessaoSEI->validarPermissao($_GET['acao']); + $arrComandos = array(); + + $strTitulo = 'Processos Expedidos'; + + $objFiltroDTO = new ProtocoloDTO(); + $objFiltroDTO->setStrStaEstado(ProtocoloRN::$TE_PROCEDIMENTO_BLOQUEADO); + $objFiltroDTO->retDblIdProtocolo(); + $objFiltroDTO->retStrProtocoloFormatado(); + + // Verificar no DTO sobre funções de agragação para clausula DISTINCT + if(get_parent_class(BancoSEI::getInstance()) != 'InfraMySqli') { + $objFiltroDTO->retDthConclusaoAtividade(); + } + $objPaginaSEI->prepararPaginacao($objFiltroDTO, 10); + + BancoSEI::getInstance()->abrirConexao(); + + $objProcessoExpedidoRN = new ProcessoExpedidoRN(); + $arrObjProcessoExpedidoDTO = $objProcessoExpedidoRN->listarProcessoExpedido($objFiltroDTO); + + $numRegistros = 0; + + if(!empty($arrObjProcessoExpedidoDTO)) { + + $arrObjProcessoExpedidoDTO = InfraArray::distinctArrInfraDTO($arrObjProcessoExpedidoDTO, 'IdProtocolo'); + + $numRegistros = count($arrObjProcessoExpedidoDTO); + } + + $objPaginaSEI->processarPaginacao($objFiltroDTO); + + if (!empty($arrObjProcessoExpedidoDTO)) { + + $arrComandos[] = ''; + + $strSumarioTabela = 'Tabela de Processos.'; + $strCaptionTabela = 'Processos'; + + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strResultado .= '' . "\n"; + $strCssTr = ''; + + $numIndice = 1; + + foreach($arrObjProcessoExpedidoDTO as $objProcessoExpedidoDTO) { + + $strCssTr = ($strCssTr == '') ? '' : ''; + $strResultado .= $strCssTr; + + $strResultado .= ''."\n"; + $strResultado .= '' . "\n"; + $strResultado .= ''; + $strResultado .= ''; + $strResultado .= '' . "\n"; + + $numIndice++; + } + $strResultado .= '
' . $objPaginaSEI->gerarCaptionTabela($strCaptionTabela, $numRegistros) . '
' . $objPaginaSEI->getThCheck() . 'ProcessoUsuárioData de ExpediçãoUnidade Destino
'.$objPaginaSEI->getTrCheck($numIndice,$objProcessoExpedidoDTO->getDblIdProtocolo(),$objProcessoExpedidoDTO->getStrProtocoloFormatado()).''.$objProcessoExpedidoDTO->getStrProtocoloFormatado().'' . $objProcessoExpedidoDTO->getStrNomeUsuario() . '' . $objProcessoExpedidoDTO->getDthExpedido() . '' . $objProcessoExpedidoDTO->getStrDestino(); + + + if ($bolAcaoRemoverSobrestamento) { + $strResultado .= 'Remover Sobrestamento '; + } + + $strResultado .= '
'; + } +} +catch (Exception $e) { + $objPaginaSEI->processarExcecao($e); +} + + + +$objPaginaSEI->montarDocType(); +$objPaginaSEI->abrirHtml(); +$objPaginaSEI->abrirHead(); +$objPaginaSEI->montarMeta(); +$objPaginaSEI->montarTitle(':: ' . $objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo . ' ::'); +$objPaginaSEI->montarStyle(); +?> + +montarJavaScript(); ?> + +fecharHead(); +$objPaginaSEI->abrirBody($strTitulo, 'onload="inicializar();"'); +?> +
+montarBarraComandosSuperior($arrComandos); + $objPaginaSEI->montarAreaTabela($strResultado, $numRegistros, true); + $objPaginaSEI->montarBarraComandosInferior($arrComandos); +?> +
+fecharBody(); +$objPaginaSEI->fecharHtml(); diff --git a/rn/ExpedirProcedimentoRN.php b/rn/ExpedirProcedimentoRN.php index 1b270c9..6779716 100644 --- a/rn/ExpedirProcedimentoRN.php +++ b/rn/ExpedirProcedimentoRN.php @@ -238,9 +238,6 @@ class ExpedirProcedimentoRN extends InfraRN { $this->receberReciboDeEnvio($objTramite->IDT); } catch (\Exception $e) { - echo "
";
-            var_dump($e);
-            die("
"); $this->desbloquearProcessoExpedicao($objProcesso->idProcedimentoSEI); $this->registrarAndamentoExpedicaoAbortada($objProtocolo->idProcedimentoSEI); @@ -343,7 +340,7 @@ class ExpedirProcedimentoRN extends InfraRN { // Consultar se processo eletrônico existe no PEN algum trâmite CANCELADO, caso // sim deve ser gerada uma nova NRE, pois a atual será recusada pelo PEN quando // for enviado - if(!InfraString::isBolVazia($strNumeroRegistro)) { + /* if(!InfraString::isBolVazia($strNumeroRegistro)) { $arrObjTramite = $this->objProcessoEletronicoRN->consultarTramites(null, $strNumeroRegistro); if(!empty($arrObjTramite) && is_array($arrObjTramite) && count($arrObjTramite) === 1) { $objTramite = current($arrObjTramite); @@ -351,8 +348,9 @@ class ExpedirProcedimentoRN extends InfraRN { $strNumeroRegistro = null; } } - } + } */ + return $this->objProcessoEletronicoRN->construirCabecalho( //TODO: Desabilitado consulta do NRE para questões de teste $strNumeroRegistro, @@ -1367,7 +1365,7 @@ class ExpedirProcedimentoRN extends InfraRN { if(!isset($strProtocolo)){ throw new InfraException('Parâmetro $strProtocolo não informado.'); } - + //Obter dados dos componetes digitais $objComponenteDigitalBD = new ComponenteDigitalBD($this->getObjInfraIBanco()); $objComponenteDigitalDTO = new ComponenteDigitalDTO(); @@ -1377,7 +1375,7 @@ class ExpedirProcedimentoRN extends InfraRN { $objComponenteDigitalDTO->setOrdNumOrdem(InfraDTO::$TIPO_ORDENACAO_ASC); $objComponenteDigitalDTO->retDblIdDocumento(); $objComponenteDigitalDTO->retNumTicketEnvioComponentes(); - $objComponenteDigitalDTO->retStrConteudoAssinaturaDocumento(); + // $objComponenteDigitalDTO->retStrConteudoAssinaturaDocumento(); $objComponenteDigitalDTO->retStrProtocoloDocumentoFormatado(); $objComponenteDigitalDTO->retStrHashConteudo(); $objComponenteDigitalDTO->retStrProtocolo(); @@ -1385,11 +1383,12 @@ class ExpedirProcedimentoRN extends InfraRN { $objComponenteDigitalDTO->retDblIdProcedimento(); $arrComponentesDigitaisDTO = $objComponenteDigitalBD->listar($objComponenteDigitalDTO); - + if (isset($arrComponentesDigitaisDTO) && count($arrComponentesDigitaisDTO) > 0) { //TODO: Valida inconsistência da quantidade de documentos solicitados e aqueles cadastrados no SEI - + + //Construir objeto Componentes digitais foreach ($arrComponentesDigitaisDTO as $objComponenteDigitalDTO) { @@ -1420,7 +1419,7 @@ class ExpedirProcedimentoRN extends InfraRN { $parametros = new stdClass(); $parametros->dadosDoComponenteDigital = $dadosDoComponenteDigital; $result = $this->objProcessoEletronicoRN->enviarComponenteDigital($parametros); - + //Bloquea documento para atualização, já que ele foi visualizado $this->objDocumentoRN->bloquearConteudo($objDocumentoDTO); // @join_tec US008.05 (#23092) @@ -1571,7 +1570,7 @@ class ExpedirProcedimentoRN extends InfraRN { // Se o documento não tem assinatura e não foi cancelado então // cai na regra de validação - if($objAssinaturaRN->contarRN1324($objAssinaturaDTO) == 0 && $objDocumentoDTO->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_CANCELADO){ + if($objAssinaturaRN->contarRN1324($objAssinaturaDTO) == 0 && $objDocumentoDTO->getStrStaEstadoProtocolo() != ProtocoloRN::$TE_DOCUMENTO_CANCELADO){ //$bolAssinaturaCorretas = false; } @@ -2059,7 +2058,7 @@ class ExpedirProcedimentoRN extends InfraRN { } $numSituacaoAtual = 0; - + // Se o barramento possui alguma situação do tramite verificamos se o precedimento // já esta em recebimento if(!empty($arrObjMetaTramite)) { @@ -2085,27 +2084,30 @@ class ExpedirProcedimentoRN extends InfraRN { $this->objProcessoEletronicoRN->cancelarTramite($objMetaTramite->IDT); - // Muda o Status o procedimento para NORMAL - $objProcesso = (object)array('idProcedimentoSEI' => $dblIdProcedimento); - ExpedirProcedimentoRN::mudarEstadoProcedimentoNormal($objProcesso, ProtocoloRN::$TE_NORMAL); - + //Desbloqueia o processo + $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI(); + $objEntradaDesbloquearProcessoAPI->setIdProcedimento($dblIdProcedimento); + $objSeiRN = new SeiRN(); + $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); + $objDTOFiltro = new TramiteDTO(); $objDTOFiltro->setNumIdTramite($objMetaTramite->IDT); $objDTOFiltro->setNumMaxRegistrosRetorno(1); $objDTOFiltro->setOrdNumIdTramite(InfraDTO::$TIPO_ORDENACAO_DESC); - $objDTOFiltro->retTodos(); - + $objDTOFiltro->retNumIdTramite(); + $objDTOFiltro->retStrNumeroRegistro(); + $objTramiteBD = new TramiteBD($this->getObjInfraIBanco()); $objTramiteDTO = $objTramiteBD->consultar($objDTOFiltro); $objTramiteDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO); - $objTramiteBD->alterar($objTramiteDTO); - + $objTramiteDTO = $objTramiteBD->alterar($objTramiteDTO); + //Cria o Objeto que registrará a Atividade de cancelamento $objAtividadeDTO = new AtividadeDTO(); - $objAtividadeDTO->setDblIdProtocolo($objProcesso->idProcedimentoSEI); + $objAtividadeDTO->setDblIdProtocolo($dblIdProcedimento); $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO); + $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_CANCELADO)); //Seta os atributos do tamplate de descrição dessa atividade diff --git a/rn/PenAtividadeRN.php b/rn/PenAtividadeRN.php index f53262d..6c60d86 100644 --- a/rn/PenAtividadeRN.php +++ b/rn/PenAtividadeRN.php @@ -397,7 +397,7 @@ class PenAtividadeRN extends AtividadeRN { } switch($numIdTarefa){ - case ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO: + case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO): $strMensagem = 'Expedição do Processo %s para %s'; $strNome = 'UNIDADE_DESTINO'; @@ -409,7 +409,7 @@ class PenAtividadeRN extends AtividadeRN { $objReturn->bolReciboExiste = ($objReciboTramiteBD->contar($objReciboTramiteDTO) > 0) ? true : false; break; - case ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO: + case ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO): $strMensagem = 'Recebimento do Processo %s remetido por %s'; $strNome = 'ENTIDADE_ORIGEM'; @@ -431,7 +431,7 @@ class PenAtividadeRN extends AtividadeRN { $arrAtributoAndamentoDTO = $objAtributoAndamentoBD->listar($objAtributoAndamentoDTO); $objAtributoAndamentoDTO = current($arrAtributoAndamentoDTO); - + $obProtocoloDTO = new ProtocoloDTO(); $obProtocoloDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); $obProtocoloDTO->retStrProtocoloFormatado(); diff --git a/rn/PenAtualizarSeiRN.php b/rn/PenAtualizarSeiRN.php index bfa69ed..170addb 100644 --- a/rn/PenAtualizarSeiRN.php +++ b/rn/PenAtualizarSeiRN.php @@ -42,12 +42,16 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { 'id_tramite'=> array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO), 'ticket_envio_componentes'=> array($objMetaBD->tipoTextoGrande(), PenMetaBD::SNULLO), 'dth_registro'=> array($objMetaBD->tipoDataHora(), PenMetaBD::SNULLO), - 'id_andamento'=> array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO) + 'id_andamento'=> array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'id_usuario'=> array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO), + 'id_unidade'=> array($objMetaBD->tipoNumero(), PenMetaBD::SNULLO) ), 'pk' => array('id_tramite'), 'uk' => array('numero_registro', 'id_tramite'), 'fks' => array( - 'md_pen_processo_eletronico' => array('numero_registro', 'numero_registro') + 'md_pen_processo_eletronico' => array('numero_registro', 'numero_registro'), + 'usuario' => array('id_usuario', 'id_usuario'), + 'unidade' => array('id_unidade', 'id_unidade') ) )); @@ -110,14 +114,14 @@ class PenAtualizarSeiRN extends PenAtualizadorRN { ) )); - $objMetaBD->criarTabela(array( + /* $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_tramite_recusado', 'cols' => array( 'numero_registro'=> array($objMetaBD->tipoTextoFixo(16), PenMetaBD::NNULLO), 'id_tramite' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO) ), 'pk' => array('id_tramite') - )); + ));*/ $objMetaBD->criarTabela(array( 'tabela' => 'md_pen_recibo_tramite', diff --git a/rn/PendenciasTramiteRN.php b/rn/PendenciasTramiteRN.php index 3170f65..86e3577 100644 --- a/rn/PendenciasTramiteRN.php +++ b/rn/PendenciasTramiteRN.php @@ -74,7 +74,7 @@ class PendenciasTramiteRN extends InfraRN { $objPendenciaDTO = $this->obterPendenciasTramite($numIdTramiteRecebido); if(isset($objPendenciaDTO)) { - + if($numIdTramiteRecebido != $objPendenciaDTO->getNumIdentificacaoTramite()) { $numIdTramiteRecebido = $objPendenciaDTO->getNumIdentificacaoTramite(); @@ -133,8 +133,9 @@ class PendenciasTramiteRN extends InfraRN { $resultado = null; $curl = $this->configurarRequisicao(); - try{ + try{ + if(isset($parNumIdTramiteRecebido)) { curl_setopt($curl, CURLOPT_URL, $this->strEnderecoServicoPendencias . "?idTramiteDaPendenciaRecebido=" . $parNumIdTramiteRecebido); } diff --git a/rn/ProcessarPendenciasRN.php b/rn/ProcessarPendenciasRN.php index c91b92d..8e86c4f 100644 --- a/rn/ProcessarPendenciasRN.php +++ b/rn/ProcessarPendenciasRN.php @@ -148,9 +148,10 @@ class ProcessarPendenciasRN extends InfraAgendamentoTarefa { $this->objGearmanWorker->addFunction("receberTramitesRecusados", function ($job) { InfraDebug::getInstance()->gravar("[".date("d/m/Y H:i:s")."] Processando tarefa [receberRecusaTramite] " . $job->workload()); - + $numIdentificacaoTramite = intval($job->workload()); + $objReceberProcedimentoRN = new ReceberProcedimentoRN(); - $objReceberProcedimentoRN->receberTramitesRecusados(); + $objReceberProcedimentoRN->receberTramitesRecusados($numIdentificacaoTramite); }); //Processamento de pendências de recebimento dos componentes digitais do processo diff --git a/rn/ProcessoEletronicoRN.php b/rn/ProcessoEletronicoRN.php index a565294..774cfb6 100644 --- a/rn/ProcessoEletronicoRN.php +++ b/rn/ProcessoEletronicoRN.php @@ -34,7 +34,8 @@ class ProcessoEletronicoRN extends InfraRN { public static $STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO = 5; // Recibo de conclusão do trâmite enviado pelo destinatário do processo public static $STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE = 6; // Recibo de conclusão do trâmite recebido pelo remetente do processo public static $STA_SITUACAO_TRAMITE_CANCELADO = 7; // Trâmite do processo ou documento cancelado pelo usuário (Qualquer situação diferente de 5 e 6) - public static $STA_SITUACAO_TRAMITE_RECUSADO = 9; // Trâmite do processo recusado pelo destinatário (Situações 2, 3, 4) + public static $STA_SITUACAO_TRAMITE_RECUSADO = 8; // Trâmite do processo recusado pelo destinatário (Situações 2, 3, 4) + public static $STA_SITUACAO_TRAMITE_CIENCIA_RECUSA = 9; // Remetente ciente da recusa do trâmite /* OPERAÇÕES DO HISTÓRICO DO PROCESSO */ // 02 a 18 estão registrados na tabela rel_tarefa_operacao @@ -147,7 +148,7 @@ class ProcessoEletronicoRN extends InfraRN { if($this->objPenWs == null) { $this->testaUrl($this->strWSDL, $this->options['local_cert']); - // try { + try { $objConfig = ConfiguracaoSEI::getInstance(); @@ -159,12 +160,9 @@ class ProcessoEletronicoRN extends InfraRN { $this->objPenWs = new BeSimple\SoapClient\SoapClient($this->strWSDL, $this->options); } - /* } catch (Exception $e) { - echo "
";
-          var_dump($e->getMessage());
-          die("
"); + } catch (Exception $e) { throw new InfraException('Erro acessando serviço.', $e); - }*/ + } } return $this->objPenWs; @@ -611,7 +609,9 @@ class ProcessoEletronicoRN extends InfraRN { $objTramiteDTO->setStrNumeroRegistro($parStrNumeroRegistro); $objTramiteDTO->setNumIdTramite($parNumIdentificacaoTramite); $objTramiteDTO->setNumTicketEnvioComponentes($parNumTicketComponentesDigitais); - $objTramiteDTO->setDthRegistro($this->converterDataSEI($parDthRegistroTramite)); + $objTramiteDTO->setDthRegistro($this->converterDataSEI($parDthRegistroTramite)); + $objTramiteDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objTramiteDTO->setNumIdUsuario(SessaoSEI::getInstance()->getNumIdUsuario()); $objProcessoEletronicoDTO->setArrObjTramiteDTO(array($objTramiteDTO)); //Monta dados dos componentes digitais @@ -798,7 +798,7 @@ class ProcessoEletronicoRN extends InfraRN { $objComponenteDigitalDTO->setStrTipoConteudo($objComponenteDigital->tipoDeConteudo); $objComponenteDigitalDTO->setStrMimeType($objComponenteDigital->mimeType); $objComponenteDigitalDTO->setStrDadosComplementares($objComponenteDigital->dadosComplementaresDoTipoDeArquivo); - + //Registrar componente digital necessita ser enviado pelo trâmite espefífico //TODO: Teste $parObjComponentesDigitaisSolicitados aqui if(isset($parObjComponentesDigitaisSolicitados)){ $arrObjItensSolicitados = is_array($parObjComponentesDigitaisSolicitados->processo) ? $parObjComponentesDigitaisSolicitados->processo : array($parObjComponentesDigitaisSolicitados->processo); @@ -910,7 +910,10 @@ class ProcessoEletronicoRN extends InfraRN { $parametro = new stdClass(); $parametro->filtroDeConsultaDeTramites = new stdClass(); $parametro->filtroDeConsultaDeTramites->IDT = $parNumIdTramite; - $parametro->filtroDeConsultaDeTramites->NRE = $parNumeroRegistro; + + if(!is_null($parNumeroRegistro)){ + $parametro->filtroDeConsultaDeTramites->NRE = $parNumeroRegistro; + } if(!is_null($parNumeroUnidadeRemetente) && !is_null($parNumeroRepositorioEstruturas)){ $parametro->filtroDeConsultaDeTramites->remetente->identificacaoDoRepositorioDeEstruturas = $parNumeroRepositorioEstruturas; @@ -977,6 +980,24 @@ class ProcessoEletronicoRN extends InfraRN { } } + public function cienciaRecusa($parNumIdTramite) + { + try + { + $parametro = new stdClass(); + $parametro->IDT = $parNumIdTramite; + + return $this->getObjPenWs()->cienciaRecusa($parametro); + + } catch (\SoapFault $fault) { + $mensagem = $this->tratarFalhaWebService($fault); + throw new InfraException(InfraString::formatarJavaScript($mensagem), $fault); + + } catch (\Exception $e) { + throw new InfraException("Error Processing Request", $e); + } + } + /** * Retorna o estado atual do procedimento no api-pen * @@ -1192,7 +1213,7 @@ class ProcessoEletronicoRN extends InfraRN { try { $parametro = new stdClass(); $parametro->IDT = $parNumIdTramite; - + $resultado = $this->getObjPenWs()->receberReciboDeEnvio($parametro); if ($resultado && $resultado->conteudoDoReciboDeEnvio) { @@ -1305,6 +1326,7 @@ class ProcessoEletronicoRN extends InfraRN { //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->filtroDeConsultaDeTramites = new stdClass() //Faz a consulta do tramite $paramConsultaTramite = new stdClass(); + $paramConsultaTramite->filtroDeConsultaDeTramites = new stdClass(); $paramConsultaTramite->filtroDeConsultaDeTramites->IDT = $idTramite; $dadosTramite = $this->getObjPenWs()->consultarTramites($paramConsultaTramite); @@ -1334,6 +1356,7 @@ class ProcessoEletronicoRN extends InfraRN { //@TODOJOIN: Adicionar a seguinte linha abaixo dessa : $parametros->recusaDeTramite = new stdClass() $parametros = new stdClass(); + $parametros->recusaDeTramite = new stdClass(); $parametros->recusaDeTramite->IDT = $idTramite; $parametros->recusaDeTramite->justificativa = utf8_encode($justificativa); $parametros->recusaDeTramite->motivo = $motivo; @@ -1416,10 +1439,10 @@ class ProcessoEletronicoRN extends InfraRN { return false; } catch(SoapFault $e) { - throw new InfraException($e->getMessage()); + return false; } catch(Exception $e) { - throw new InfraException($e->getMessage()); + return false; } } } diff --git a/rn/ProcessoExpedidoRN.php b/rn/ProcessoExpedidoRN.php new file mode 100644 index 0000000..5dc1021 --- /dev/null +++ b/rn/ProcessoExpedidoRN.php @@ -0,0 +1,98 @@ +getStrStaEstado() . " + AND + a.id_tarefa = ". ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO) ." + AND + ptra.dth_registro = (SELECT MAX(pt.dth_registro) dth_registro FROM md_pen_tramite pt WHERE pt.numero_registro = pe.numero_registro) + AND + NOT EXISTS ( + SELECT at2.* FROM atividade as at2 + WHERE at2.id_protocolo = p.id_protocolo + AND at2.id_tarefa = ". ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO) ." + AND at2.dth_abertura > a.dth_abertura ) + GROUP BY + p.id_protocolo, p.protocolo_formatado, a.id_unidade , atd.valor , us.id_usuario, us.nome, a.dth_abertura ORDER BY a.dth_abertura DESC LIMIT ".$objProtocoloDTO->getNumPaginaAtual() * $objProtocoloDTO->getNumMaxRegistrosRetorno().",".$objProtocoloDTO->getNumMaxRegistrosRetorno()." "; + + + $sqlCount = "SELECT + count(*) total + FROM protocolo p + INNER JOIN atividade a ON a.id_protocolo = p.id_protocolo + INNER JOIN atributo_andamento atd ON a.id_atividade = atd.id_atividade AND atd.nome = 'UNIDADE_DESTINO' + INNER JOIN md_pen_processo_eletronico pe ON pe.id_procedimento = p.id_protocolo + INNER JOIN md_pen_tramite ptra ON ptra.numero_registro = pe.numero_registro + INNER JOIN usuario us ON ptra.id_usuario = us.id_usuario + WHERE + p.sta_estado = " . $objProtocoloDTO->getStrStaEstado() . " + AND + a.id_tarefa = ". ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_EXTERNO) ." + AND + ptra.dth_registro = (SELECT MAX(pt.dth_registro) dth_registro FROM md_pen_tramite pt WHERE pt.numero_registro = pe.numero_registro) + AND + NOT EXISTS ( + SELECT at2.* FROM atividade as at2 + WHERE at2.id_protocolo = p.id_protocolo + AND at2.id_tarefa = ". ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_RECEBIDO) ." + AND at2.dth_abertura > a.dth_abertura ) "; + + + + $pag = $this->getObjInfraIBanco()->consultarSql($sql); + $count = $this->getObjInfraIBanco()->consultarSql($sqlCount); + $total = $count ? $count[0]['total'] : 0; + + $arrProcessosExpedidos = array(); + + $objProtocoloDTO->setNumTotalRegistros($total); + $objProtocoloDTO->setNumRegistrosPaginaAtual(count($pag)); + + foreach ($pag as $res) { + $data = new \DateTime($res['dth_abertura']); + $objProcessoExpedidoDTO = new ProcessoExpedidoDTO(); + $objProcessoExpedidoDTO->setDblIdProtocolo($res['id_protocolo']); + $objProcessoExpedidoDTO->setStrProtocoloFormatado($res['protocolo_formatado']); + $objProcessoExpedidoDTO->setStrNomeUsuario($res['nome_usuario']); + $objProcessoExpedidoDTO->setDthExpedido($data->format('d/m/Y H:i:s')); + $objProcessoExpedidoDTO->setStrDestino($res['unidade_destino']); + + + + + $arrProcessosExpedidos[] = $objProcessoExpedidoDTO; + } + + return $arrProcessosExpedidos; + } + +} diff --git a/rn/ReceberProcedimentoRN.php b/rn/ReceberProcedimentoRN.php index a9ae713..b32a684 100644 --- a/rn/ReceberProcedimentoRN.php +++ b/rn/ReceberProcedimentoRN.php @@ -468,12 +468,33 @@ class ReceberProcedimentoRN extends InfraRN //$objProcedimentoDTO = $arrObjProcedimentoDTO[0]; - //REALIZA O DESBLOQUEIO DO PROCESSO + $objSeiRN = new SeiRN(); + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->retDthConclusao(); + $objAtividadeDTO->setDblIdProtocolo($parDblIdProcedimento); + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + + $objAtividadeRN = new AtividadeRN(); + $arrObjAtividadeDTO = $objAtividadeRN->listarRN0036($objAtividadeDTO); + $flgReabrir = true; + + foreach ($arrObjAtividadeDTO as $objAtividadeDTO) { + if ($objAtividadeDTO->getDthConclusao() == null) { + $flgReabrir = false; + } + } + + if($flgReabrir){ + $objEntradaReabrirProcessoAPI = new EntradaReabrirProcessoAPI(); + $objEntradaReabrirProcessoAPI->setIdProcedimento($parDblIdProcedimento); + $objSeiRN->reabrirProcesso($objEntradaReabrirProcessoAPI); + } + $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI(); - $objEntradaDesbloquearProcessoAPI->setIdProcedimento($parDblIdProcedimento); - - $objSeiRN = new SeiRN(); + $objEntradaDesbloquearProcessoAPI->setIdProcedimento($parDblIdProcedimento); $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); + $objProcedimentoDTO = new ProcedimentoDTO(); @@ -1462,76 +1483,125 @@ class ReceberProcedimentoRN extends InfraRN return $numOrdemDocumento1 - $numOrdemDocumento2; } - /**/ - protected function receberTramitesRecusados($parNumIdentificacaoTramite) { + + public function receberTramitesRecusados($parNumIdentificacaoTramite) { - if(empty($parNumIdentificacaoTramite)) { + if (empty($parNumIdentificacaoTramite)) { throw new InfraException('Parâmetro $parNumIdentificacaoTramite não informado.'); } - - $objInfraParametro = new InfraParametro(BancoSEI::getInstance()); - $parNumIdRespositorio = $objInfraParametro->getValor('PEN_ID_REPOSITORIO_ORIGEM'); - $parNumIdEstrutura = SessaoSEI::getInstance()->getNumIdUnidadeAtual(); - $arrObjTramite = (array)$this->objProcessoEletronicoRN->consultarTramitesRecusados($parNumIdRespositorio, $parNumIdEstrutura); + //Busca os dados do trâmite no barramento + $tramite = $this->objProcessoEletronicoRN->consultarTramites($parNumIdentificacaoTramite); - if(empty($arrObjTramite)) { - return null; + if(!isset($tramite[0])){ + throw new InfraException("Não foi encontrado o trâmite de número {$parNumIdentificacaoTramite} para realizar a ciência da recusa"); } - foreach($arrObjTramite as $objTramite) { - - $strNumeroRegistro = $objTramite->NRE; - - if(empty($strNumeroRegistro)) { - throw new InfraException('Falha ao consultar número do registro na lista de tramites recusados'); - } - - $objReceberTramiteRecusadoDTO = new ReceberTramiteRecusadoDTO(); - $objReceberTramiteRecusadoDTO->retTodos(); - $objReceberTramiteRecusadoDTO->setNumRegistro($strNumeroRegistro); - - $objReceberTramiteRecusadoBD = new ReceberTramiteRecusadoBD(BancoSEI::getInstance()); - if($objReceberTramiteRecusadoBD->contar($objReceberTramiteRecusadoDTO) > 0){ - // Já foi cadastrado no banco de dados, então já foi modificado para normal - continue; - } - - // Muda o estado de em processamento para bloqueado - try { - $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); - $objProcessoEletronicoDTO->setStrNumeroRegistro($strNumeroRegistro); - $objProcessoEletronicoDTO->retDblIdProcedimento(); + $tramite = $tramite[0]; + + $objTramiteDTO = new TramiteDTO(); + $objTramiteDTO->setNumIdTramite($parNumIdentificacaoTramite); + $objTramiteDTO->retNumIdUnidade(); + + $objTramiteBD = new TramiteBD(BancoSEI::getInstance()); + $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); + + SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $objTramiteDTO->getNumIdUnidade()); + + //Busca os dados do procedimento + $objProcessoEletronicoDTO = new ProcessoEletronicoDTO(); + $objProcessoEletronicoDTO->setStrNumeroRegistro($tramite->NRE); + $objProcessoEletronicoDTO->retDblIdProcedimento(); - $objProcessoEletronicoDB = new ProcessoEletronicoBD(BancoSEI::getInstance()); - $objProcessoEletronicoDTO = $objProcessoEletronicoDB->consultar($objProcessoEletronicoDTO); + $objProcessoEletronicoBD = new ProcessoEletronicoBD($this->getObjInfraIBanco()); + $objProcessoEletronicoDTO = $objProcessoEletronicoBD->consultar($objProcessoEletronicoDTO); + + //Busca a última atividade de expedição + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); + $objAtividadeDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO)); + $objAtividadeDTO->setNumMaxRegistrosRetorno(1); + $objAtividadeDTO->setOrdDthAbertura(InfraDTO::$TIPO_ORDENACAO_DESC); + $objAtividadeDTO->retNumIdAtividade(); - $objProtocoloDTO = new ProtocoloDTO(); - $objProtocoloDTO->retTodos(); - $objProtocoloDTO->setDblIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); + $objAtividadeBD = new AtividadeBD($this->getObjInfraIBanco()); + $objAtividadeDTO = $objAtividadeBD->consultar($objAtividadeDTO); + + //Busca a unidade de destino + $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTO->setNumIdAtividade($objAtividadeDTO->getNumIdAtividade()); + $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); + $objAtributoAndamentoDTO->retStrValor(); - $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO); + $objAtributoAndamentoBD = new AtributoAndamentoBD($this->getObjInfraIBanco()); + $objAtributoAndamentoDTO = $objAtributoAndamentoBD->consultar($objAtributoAndamentoDTO); + + //Monta o DTO de receber tramite recusado + $objReceberTramiteRecusadoDTO = new ReceberTramiteRecusadoDTO(); + $objReceberTramiteRecusadoDTO->setNumIdTramite($parNumIdentificacaoTramite); + $objReceberTramiteRecusadoDTO->setNumIdProtocolo($objProcessoEletronicoDTO->getDblIdProcedimento()); + $objReceberTramiteRecusadoDTO->setNumIdUnidadeOrigem(null); + $objReceberTramiteRecusadoDTO->setNumIdTarefa(ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_TRAMITE_RECUSADO)); + $objReceberTramiteRecusadoDTO->setStrMotivoRecusa(ProcessoEletronicoRN::$MOTIVOS_RECUSA[$tramite->motivoDaRecusa]); + $objReceberTramiteRecusadoDTO->setStrNomeUnidadeDestino($objAtributoAndamentoDTO->getStrValor()); + + //Faz o tratamento do processo e do trâmite recusado + $this->receberTramiteRecusadoInterno($objReceberTramiteRecusadoDTO); + + + } - $objProtocoloDTO->setStrStaProtocolo(ProtocoloRN::$TE_NORMAL); - $objProtocoloBD->alterar($objProtocoloDTO); - - // Cadastra na tabela de histórico de - $objReceberTramiteRecusadoDTO = new ReceberTramiteRecusadoDTO(); - $objReceberTramiteRecusadoDTO->setNumRegistro($strNumeroRegistro); - $objReceberTramiteRecusadoDTO->setDblIdTramite($objTramite->IDT); + protected function receberTramiteRecusadoInternoControlado(ReceberTramiteRecusadoDTO $objReceberTramiteRecusadoDTO){ + + + //Realiza o desbloqueio do processo + $objEntradaDesbloquearProcessoAPI = new EntradaDesbloquearProcessoAPI(); + $objEntradaDesbloquearProcessoAPI->setIdProcedimento($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); + + $objSeiRN = new SeiRN(); + $objSeiRN->desbloquearProcesso($objEntradaDesbloquearProcessoAPI); + + //Adiciona um andamento para o trâmite recusado + $arrObjAtributoAndamentoDTO = array(); - $objReceberTramiteRecusadoBD->cadastrar($objReceberTramiteRecusadoDTO); - } - catch(Exception $e) { + $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTO->setStrNome('MOTIVO'); + $objAtributoAndamentoDTO->setStrValor($objReceberTramiteRecusadoDTO->getStrMotivoRecusa()); + $objAtributoAndamentoDTO->setStrIdOrigem($objReceberTramiteRecusadoDTO->getNumIdUnidadeOrigem()); + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; + + + $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); + $objAtributoAndamentoDTO->setStrNome('UNIDADE_DESTINO'); + $objAtributoAndamentoDTO->setStrValor($objReceberTramiteRecusadoDTO->getStrNomeUnidadeDestino()); + $objAtributoAndamentoDTO->setStrIdOrigem($objReceberTramiteRecusadoDTO->getNumIdUnidadeOrigem()); + $arrObjAtributoAndamentoDTO[] = $objAtributoAndamentoDTO; - $strMessage = 'Falha ao mudar o estado do procedimento ao receber a lista de tramites recusados.'; + + $objAtividadeDTO = new AtividadeDTO(); + $objAtividadeDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); + $objAtividadeDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objAtividadeDTO->setNumIdTarefa($objReceberTramiteRecusadoDTO->getNumIdTarefa()); + $objAtividadeDTO->setArrObjAtributoAndamentoDTO($arrObjAtributoAndamentoDTO); + + $objAtividadeRN = new AtividadeRN(); + $objAtividadeRN->gerarInternaRN0727($objAtividadeDTO); + + //Sinaliza na PenProtocolo que o processo obteve recusa + $objProtocolo = new PenProtocoloDTO(); + $objProtocolo->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); + $objProtocolo->setStrSinObteveRecusa('S'); + + $objProtocoloBD = new ProtocoloBD($this->getObjInfraIBanco()); + $objProtocoloBD->alterar($objProtocolo); + + + $this->objProcessoEletronicoRN->cienciaRecusa($objReceberTramiteRecusadoDTO->getNumIdTramite()); + - LogSEI::getInstance()->gravar($strMessage.PHP_EOL.$e->getMessage().PHP_EOL.$e->getTraceAsString()); - throw new InfraException($strMessage, $e); - } - } } + + /** * Método que realiza a validação da extensão dos componentes digitais a serem recebidos diff --git a/rn/ReceberReciboTramiteRN.php b/rn/ReceberReciboTramiteRN.php index a7d405f..cfe0b42 100644 --- a/rn/ReceberReciboTramiteRN.php +++ b/rn/ReceberReciboTramiteRN.php @@ -28,7 +28,7 @@ class ReceberReciboTramiteRN extends InfraRN $objSeiRN = new SeiRN(); $objSeiRN->concluirProcesso($objEntradaConcluirProcessoAPI); - + $arrObjAtributoAndamentoDTO = array(); $objAtributoAndamentoDTO = new AtributoAndamentoDTO(); @@ -111,7 +111,8 @@ class ReceberReciboTramiteRN extends InfraRN } protected function receberReciboDeTramiteConectado($parNumIdTramite) { - + + if (!isset($parNumIdTramite)) { throw new InfraException('Parâmetro $parNumIdTramite não informado.'); } @@ -125,9 +126,14 @@ class ReceberReciboTramiteRN extends InfraRN //Verifica se o trâmite do processo se encontra devidamente registrado no sistema $objTramiteDTO = new TramiteDTO(); $objTramiteDTO->setNumIdTramite($parNumIdTramite); + $objTramiteDTO->retNumIdUnidade(); + $objTramiteBD = new TramiteBD(BancoSEI::getInstance()); if ($objTramiteBD->contar($objTramiteDTO) > 0) { + + $objTramiteDTO = $objTramiteBD->consultar($objTramiteDTO); + SessaoSEI::getInstance(false)->simularLogin('SEI', null, null, $objTramiteDTO->getNumIdUnidade()); $objReciboTramiteDTOExistente = new ReciboTramiteDTO(); $objReciboTramiteDTOExistente->setNumIdTramite($parNumIdTramite); @@ -172,6 +178,9 @@ class ReceberReciboTramiteRN extends InfraRN //Registra o recbimento do recibo no histórico e realiza a conclusão do processo $this->registrarRecebimentoRecibo($objProtocoloDTO->getDblIdProtocolo(), $objProtocoloDTO->getStrProtocoloFormatado(), $parNumIdTramite); + $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_RECIBO); + $objPenTramiteProcessadoRN->setRecebido($parNumIdTramite); + } catch (Exception $e) { $strMessage = 'Falha o modificar o estado do procedimento para bloqueado.'; @@ -182,7 +191,6 @@ class ReceberReciboTramiteRN extends InfraRN } } - $objPenTramiteProcessadoRN = new PenTramiteProcessadoRN(PenTramiteProcessadoRN::STR_TIPO_RECIBO); - $objPenTramiteProcessadoRN->setRecebido($parNumIdTramite); + } } \ No newline at end of file -- libgit2 0.21.2