From c7b66fa733705463e5841c12cc369fe82742495d Mon Sep 17 00:00:00 2001 From: Mauro Costa <83025710+Mauro1706@users.noreply.github.com> Date: Wed, 18 Sep 2024 16:54:59 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20atualiza=C3=A7=C3=A3o=20para=20remocer?= =?UTF-8?q?=20conclu=C3=ADdo=20parcial=20de=20bloco=20de=20tramite=20(#630?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Mauro Costa --- src/pen_procedimento_cancelar_expedir.php | 24 +-- src/pen_tramita_em_bloco_protocolo_listar.php | 37 +--- src/pen_tramite_bloco_listar.php | 6 - ...en_tramite_processo_em_bloco_cadastrar.php | 18 +- src/rn/ExpedirProcedimentoRN.php | 4 +- src/rn/PenBlocoProcessoRN.php | 173 +++++------------- src/rn/ProcessarPendenciasRN.php | 69 +++---- src/rn/ReceberProcedimentoRN.php | 19 +- src/rn/ReceberReciboTramiteRN.php | 22 ++- src/rn/TramitaEmBlocoProtocoloRN.php | 71 ++----- .../sei_atualizar_versao_modulo_pen.php | 11 -- 11 files changed, 161 insertions(+), 293 deletions(-) diff --git a/src/pen_procedimento_cancelar_expedir.php b/src/pen_procedimento_cancelar_expedir.php index be95e382d..d46616286 100755 --- a/src/pen_procedimento_cancelar_expedir.php +++ b/src/pen_procedimento_cancelar_expedir.php @@ -29,11 +29,19 @@ $objTramiteEmBlocoProtocoloDTO = new PenBlocoProcessoDTO(); $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($idProcedimento); - $objTramiteEmBlocoProtocoloDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objTramiteEmBlocoProtocoloDTO->setOrdNumIdBloco(InfraDTO::$TIPO_ORDENACAO_DESC); $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); $objTramiteEmBlocoProtocoloDTO->retNumIdBloco(); - $objTramiteEmBlocoProtocoloDTO->setNumIdAtividade(array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE), InfraDTO::$OPER_NOT_IN); + $objTramiteEmBlocoProtocoloDTO->setNumIdAtividade( + array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE + ), + InfraDTO::$OPER_NOT_IN + ); $objTramiteEmBlocoProtocoloDTO->setNumMaxRegistrosRetorno(1); $objTramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); @@ -41,16 +49,8 @@ if ($tramiteEmBlocoProtocoloDTO != null) { // TODO: tratar atualização a partir de um metodo - $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoProtocoloDTO->getNumIdBloco()); - $objTramiteEmBlocoDTO->retTodos(); - // Consultar se o bloco esta como concluído - $objTramiteEmBlocoRN = new TramiteEmBlocoRN(); - $retObjTramiteEmBlocoDTO = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO); - if ($retObjTramiteEmBlocoDTO != null && $retObjTramiteEmBlocoDTO->getStrStaEstado() != TramiteEmBlocoRN::$TE_CONCLUIDO) { - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); - $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); - } + $objTramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); + $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($tramiteEmBlocoProtocoloDTO->getNumIdBloco()); } $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); diff --git a/src/pen_tramita_em_bloco_protocolo_listar.php b/src/pen_tramita_em_bloco_protocolo_listar.php index 832e2d39e..173ec2ac4 100755 --- a/src/pen_tramita_em_bloco_protocolo_listar.php +++ b/src/pen_tramita_em_bloco_protocolo_listar.php @@ -11,14 +11,14 @@ switch ($_GET['acao']) { case 'pen_tramita_em_bloco_protocolo_excluir': - $arrExcluidos = array(); + $arrExcluidos = array(); try { $objTramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); $arrStrIds = $objPaginaSEI->getArrStrItensSelecionados(); $arrObjTramiteBlocoProtocoloDTO = array(); if (count($arrStrIds) > 0) { - for ($i = 0; $i < count($arrStrIds); $i++) { + for ($i = 0; $i < count($arrStrIds); $i++) { $arrStrIdComposto = explode('-', $arrStrIds[$i]); $objTramiteEmBlocoProtocoloDTO = new PenBlocoProcessoDTO(); $objTramiteEmBlocoProtocoloDTO->setNumIdBlocoProcesso($arrStrIdComposto[0]); @@ -40,13 +40,11 @@ } $contemValidacoes = $objTramitaEmBlocoProtocoloRN->verificarExclusaoBloco($arrObjTramiteBlocoProtocoloDTO); - // print_r($arrObjTramiteBlocoProtocoloDTO); $arrExcluidos = $objTramitaEmBlocoProtocoloRN->excluir($arrObjTramiteBlocoProtocoloDTO); if (!empty($arrExcluidos)) { $dblIdBloco = $arrObjTramiteBlocoProtocoloDTO[0]->getNumIdBloco(); $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); $objTramiteEmBlocoDTO->setNumId($dblIdBloco); - // $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); $objTramiteEmBlocoDTO->retNumId(); $objTramiteEmBlocoDTO->retStrStaEstado(); $objTramiteEmBlocoDTO->retNumOrdem(); @@ -66,12 +64,12 @@ $tramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); $arrObjTramiteEmBlocoProtocoloDTO = $tramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); if (count($arrObjTramiteEmBlocoProtocoloDTO) > 0) { - $concluido = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE; - $parcialmenteConcluido = array( + $concluido = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE ); $emAndamento = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, @@ -83,14 +81,11 @@ foreach ($arrObjTramiteEmBlocoProtocoloDTO as $objDTO) { if ( in_array($objDTO->getNumIdAndamento(), $emAndamento) - && $idAndamentoBloco != TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE + && $idAndamentoBloco != TramiteEmBlocoRN::$TE_CONCLUIDO ) { $idAndamentoBloco = TramiteEmBlocoRN::$TE_DISPONIBILIZADO; } - if (in_array($objDTO->getNumIdAndamento(), $parcialmenteConcluido)) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE; - } - if ($objDTO->getNumIdAndamento() == $concluido + if (in_array($objDTO->getNumIdAndamento(), $concluido) && ( $idAndamentoBloco == TramiteEmBlocoRN::$TE_CONCLUIDO || $idAndamentoBloco == TramiteEmBlocoRN::$TE_ABERTO @@ -235,8 +230,6 @@ $strResultado .= str_repeat('' . "\n", 3); } - - // print_r($objTramitaEmBlocoProtocoloDTO->getNumIdAndamento()); die('asas'); $strResultado .= '' . "\n"; switch ($objTramitaEmBlocoProtocoloDTO->getNumIdAndamento()) { case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO: @@ -257,7 +250,7 @@ case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE: $strResultado .= ''; break; - case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO: + case ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO: if(is_null($objTramitaEmBlocoProtocoloDTO->getNumIdAndamento())){ $strResultado .= 'Em aberto'; break; @@ -272,22 +265,10 @@ $strResultado .= ''. "\n"; - $estadosBloqueados = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_ENVIADOS_REMETENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_METADADOS_RECEBIDO_DESTINATARIO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO - ); if ( $objTramitaEmBlocoProtocoloDTO->getNumIdUnidadeBloco() == SessaoSEI::getInstance()->getNumIdUnidadeAtual() - && ( - !in_array($objTramitaEmBlocoProtocoloDTO->getNumIdAndamento(), $estadosBloqueados) - || is_null($objTramitaEmBlocoProtocoloDTO->getNumIdAndamento()) - ) - ) { + && $objTramitaEmBlocoProtocoloDTO->getNumIdAndamento() === null + ) { $strResultado .= 'Excluir processo '; } diff --git a/src/pen_tramite_bloco_listar.php b/src/pen_tramite_bloco_listar.php index ad683b5e6..3694c799f 100644 --- a/src/pen_tramite_bloco_listar.php +++ b/src/pen_tramite_bloco_listar.php @@ -83,7 +83,6 @@ $checkboxesEstados = [ 'chkSinEstadoGerado' => TramiteEmBlocoRN::$TE_ABERTO, 'chkSinEstadoDisponibilizado' => TramiteEmBlocoRN::$TE_DISPONIBILIZADO, - 'chkSinEstadoConcluidoParcialmente' => TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE, 'chkSinEstadoConcluido' => TramiteEmBlocoRN::$TE_CONCLUIDO ]; @@ -503,11 +502,6 @@ function onClickBtnExcluir() { -
- name="chkSinEstadoConcluidoParcialmente" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoConcluidoParcialmente) ?> tabindex="getProxTabDados() ?>" /> - -
-
name="chkSinEstadoConcluido" class="infraCheckbox CheckboxEstado" setCheckbox($strSinEstadoConcluido) ?> tabindex="getProxTabDados() ?>" /> diff --git a/src/pen_tramite_processo_em_bloco_cadastrar.php b/src/pen_tramite_processo_em_bloco_cadastrar.php index dace1474d..885156940 100755 --- a/src/pen_tramite_processo_em_bloco_cadastrar.php +++ b/src/pen_tramite_processo_em_bloco_cadastrar.php @@ -64,7 +64,6 @@ $dblIdBloco = $arrObjPenBlocoProcessoDTO[0]->getNumIdBloco(); $objTramiteEmBlocoDTO = new TramiteEmBlocoDTO(); $objTramiteEmBlocoDTO->setNumId($dblIdBloco); - // $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); $objTramiteEmBlocoDTO->retNumId(); $objTramiteEmBlocoDTO->retStrStaEstado(); $objTramiteEmBlocoDTO->retNumOrdem(); @@ -85,12 +84,12 @@ $tramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); $arrObjTramiteEmBlocoProtocoloDTO = $tramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); if (count($arrObjTramiteEmBlocoProtocoloDTO) > 0) { - $concluido = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE; - $parcialmenteConcluido = array( + $concluido = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE ); $emAndamento = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, @@ -102,14 +101,11 @@ foreach ($arrObjTramiteEmBlocoProtocoloDTO as $objDTO) { if ( in_array($objDTO->getNumIdAndamento(), $emAndamento) - && $idAndamentoBloco != TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE + && $idAndamentoBloco != TramiteEmBlocoRN::$TE_CONCLUIDO ) { $idAndamentoBloco = TramiteEmBlocoRN::$TE_DISPONIBILIZADO; } - if (in_array($objDTO->getNumIdAndamento(), $parcialmenteConcluido)) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE; - } - if ($objDTO->getNumIdAndamento() == $concluido + if (in_array($objDTO->getNumIdAndamento(), $concluido) && ( $idAndamentoBloco == TramiteEmBlocoRN::$TE_CONCLUIDO || $idAndamentoBloco == TramiteEmBlocoRN::$TE_ABERTO @@ -177,7 +173,6 @@ $objPenBlocoProcessoDTO->setNumIdBloco($idBlocoExterno); $dthRegistro = date('d/m/Y H:i:s'); $objPenBlocoProcessoDTO->setDthRegistro($dthRegistro); - // $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); $objPenBlocoProcessoDTO->setDthAtualizado($dthRegistro); $objPenBlocoProcessoDTO->setNumIdUsuario($objSessaoSEI->getNumIdUsuario()); $objPenBlocoProcessoDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual()); @@ -245,7 +240,7 @@ header('Location: '.SessaoSEI::getInstance()->assinarLink('controlador.php?acao='.$_GET['acao'].'&acao_origem='.$_GET['acao'])); exit(0); - } + } foreach ($arrProtocolosOrigemProtocolo as $idItensSelecionados) { $bolInclusaoErro = false; @@ -254,7 +249,6 @@ $objPenBlocoProcessoDTO->setNumIdBloco($idBlocoExterno); $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); $objPenBlocoProcessoDTO->retNumIdBloco(); - // $objPenBlocoProcessoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_NAO_INICIADO); $dtRegistro = date('d/m/Y H:i:s'); $objPenBlocoProcessoDTO->setDthRegistro($dtRegistro); $objPenBlocoProcessoDTO->setDthAtualizado($dtRegistro); @@ -265,7 +259,7 @@ if ($validarPreCondicoesIncluir != false) { $bolInclusaoErro = true; - $arrMensagensErros[] = $validarPreCondicoesIncluir; + $arrMensagensErros[] = $validarPreCondicoesIncluir; }else{ $objInfraException = new InfraException(); $objExpedirProcedimentosRN = new ExpedirProcedimentoRN(); diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php index ab10da6ff..a188b1553 100755 --- a/src/rn/ExpedirProcedimentoRN.php +++ b/src/rn/ExpedirProcedimentoRN.php @@ -177,7 +177,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe } $this->gravarLogDebug(sprintf('Erro durante validação dos dados do processo %s.', $objProcedimentoDTO->getStrProtocoloProcedimentoFormatado(), $arrErros), 2); - $objLoteProcedimentoRN->desbloquearProcessoLote($dblIdProcedimento); + $objLoteProcedimentoRN->desbloquearProcessoBloco($dblIdProcedimento); return false; } } @@ -326,7 +326,7 @@ protected function expedirProcedimentoControlado(ExpedirProcedimentoDTO $objExpe } catch (\Exception $e) { $this->gravarLogDebug("Erro processando envio de processo: $e", 0, true); if($bolSinProcessamentoEmLote){ - $objLoteProcedimentoRN->desbloquearProcessoLote($dblIdProcedimento); + $objLoteProcedimentoRN->desbloquearProcessoBloco($dblIdProcedimento); } else { throw new InfraException('Falha de comunicação com o serviços de integração. Por favor, tente novamente mais tarde.', $e); } diff --git a/src/rn/PenBlocoProcessoRN.php b/src/rn/PenBlocoProcessoRN.php index 345da4e19..42019d00a 100755 --- a/src/rn/PenBlocoProcessoRN.php +++ b/src/rn/PenBlocoProcessoRN.php @@ -35,16 +35,9 @@ public function verificarExclusaoBloco(array $arrObjDTO) $objPenLoteProcedimentoBD = new PenLoteProcedimentoBD($this->getObjInfraIBanco()); $objPenLoteProcedimentoDTO = $objPenLoteProcedimentoBD->consultar($objPenLoteProcedimentoDTO); - $situacaoPodeExcluir = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE , - ); if ( $objPenLoteProcedimentoDTO != null - && !is_null($objPenLoteProcedimentoDTO->getNumIdAndamento()) - && !in_array($objPenLoteProcedimentoDTO->getNumIdAndamento(), $situacaoPodeExcluir) + && $objPenLoteProcedimentoDTO->getNumIdAndamento() !== null ) { $messagem .= "\n - {$objPenLoteProcedimentoDTO->getStrProtocoloFormatadoProtocolo()}"; $podeExcluir = false; @@ -84,10 +77,9 @@ protected function obterPendenciasLoteControlado(PenBlocoProcessoDTO $objPenLote } } - protected function desbloquearProcessoLoteControlado($dblIdProcedimento) + protected function desbloquearProcessoBlocoControlado($dblIdProcedimento) { try { - $objPenLoteProcedimentoDTO = new PenBlocoProcessoDTO(); $objPenLoteProcedimentoDTO->retTodos(); $objPenLoteProcedimentoDTO->setDblIdProtocolo($dblIdProcedimento); @@ -100,21 +92,8 @@ protected function desbloquearProcessoLoteControlado($dblIdProcedimento) $this->alterar($objPenLoteProcedimentoDTO); - // Atualizar Bloco para concluido parcialmente - $objTramiteEmBlocoProtocoloDTO = new PenBlocoProcessoDTO(); - $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($dblIdProcedimento); - $objTramiteEmBlocoProtocoloDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); - $objTramiteEmBlocoProtocoloDTO->setOrdNumIdBlocoProcesso(InfraDTO::$TIPO_ORDENACAO_DESC); - $objTramiteEmBlocoProtocoloDTO->retDblIdProtocolo(); - $objTramiteEmBlocoProtocoloDTO->retNumIdBloco(); - - $objTramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN(); - $tramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); - - if ($tramiteEmBlocoProtocolo != null) { - $idBloco = $tramiteEmBlocoProtocolo[0]->getNumIdBloco(); - $this->atualizarEstadoDoBloco($idBloco); - } + $idBloco = $$objPenLoteProcedimentoDTO->getNumIdBloco(); + $this->atualizarEstadoDoBloco($idBloco); } //Desbloqueia o processo @@ -325,13 +304,6 @@ protected function excluirControlado(array $arrayObjDTO) $arrExcluido = array(); - $arrPodeExcluir = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ); - foreach ($arrayObjDTO as $objDTO) { $objBD = new PenBlocoProcessoBD(BancoSEI::getInstance()); @@ -354,15 +326,14 @@ protected function excluirControlado(array $arrayObjDTO) $objPenProtocoloDTO->setDblIdProtocolo($objDTO->getDblIdProtocolo()); $objPenProtocoloDTO->retNumIdAndamento(); $objPenProtocoloDTO->retDblIdProtocolo(); - $objPenProtocoloDTO->setNumIdAndamento($arrPodeExcluir, InfraDTO::$OPER_IN); $objPenProtocoloDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objPenProtocoloDTO = $this->consultar($objPenProtocoloDTO); - if ($objPenProtocoloDTO != null) { + if ($objPenProtocoloDTO != null && $objPenProtocoloDTO->getNumIdAndamento() === null) { $arrExcluido[] = $objBD->excluir($objDTO); continue; - } + } } return $arrExcluido; @@ -433,35 +404,38 @@ protected function validarBlocoDeTramiteControlado($idProtocolo) $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); $objPenBlocoProcessoDTO->retNumIdBlocoProcesso(); $objPenBlocoProcessoDTO->setDblIdProtocolo($idProtocolo); - $objPenBlocoProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); $objPenBlocoProcessoDTO->retNumIdBloco(); $objPenBlocoProcessoDTO->retDblIdProtocolo(); + $objPenBlocoProcessoDTO->retNumIdAndamento(); $objPenBlocoProcessoDTO->retStrProtocoloFormatadoProtocolo(); - $arrTramitaEmBloco = $this->listar($objPenBlocoProcessoDTO); + $concluidos = array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE + ); - foreach ($arrTramitaEmBloco as $tramitaEmBloco) { - $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $tramiteEmBlocoDTO->setNumId($tramitaEmBloco->getNumIdBloco()); - $tramiteEmBlocoDTO->setStrStaEstado([ - TramiteEmBlocoRN::$TE_ABERTO, - ], InfraDTO::$OPER_IN); - $tramiteEmBlocoDTO->retStrDescricao(); - $tramiteEmBlocoDTO->retStrStaEstado(); - $tramiteEmBlocoDTO->retNumId(); - $tramiteEmBlocoDTO->retNumOrdem(); + $arrTramitaEmBloco = $this->listar($objPenBlocoProcessoDTO); + if (!is_null($arrTramitaEmBloco) && count($arrTramitaEmBloco) > 0) { + foreach ($arrTramitaEmBloco as $tramitaEmBloco) { + if ($tramitaEmBloco->getNumIdAndamento() !== null && in_array($tramitaEmBloco->getNumIdAndamento(), $concluidos)) { + continue; + } - $tramiteEmBlocoRN = new TramiteEmBlocoRN(); - $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); + $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); + $tramiteEmBlocoDTO->setNumId($tramitaEmBloco->getNumIdBloco()); + $tramiteEmBlocoDTO->retStrDescricao(); + $tramiteEmBlocoDTO->retStrStaEstado(); + $tramiteEmBlocoDTO->retStrSiglaUnidade(); + $tramiteEmBlocoDTO->retNumId(); + $tramiteEmBlocoDTO->retNumOrdem(); - if (!empty($tramiteEmBloco)) { - return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrProtocoloFormatadoProtocolo()} encontra-se inserido no bloco {$tramiteEmBloco->getNumOrdem()} - {$tramiteEmBloco->getStrDescricao()}. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; - } + $tramiteEmBlocoRN = new TramiteEmBlocoRN(); + $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); - $arrPermitirInclusaoConcluidos = [TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE, TramiteEmBlocoRN::$TE_DISPONIBILIZADO]; - $bolValidarInclusao = $this->validarInclusaoQuandoProcessoConcluido($tramitaEmBloco->getNumIdBloco(), $idProtocolo, $arrPermitirInclusaoConcluidos); - if ($bolValidarInclusao !== true) { - return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrProtocoloFormatadoProtocolo()} encontra-se inserido no bloco {$bolValidarInclusao->getNumOrdem()} - {$bolValidarInclusao->getStrDescricao()}. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; + return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrProtocoloFormatadoProtocolo()} encontra-se inserido no bloco {$tramiteEmBloco->getNumOrdem()} - {$tramiteEmBloco->getStrDescricao()} da unidade {$tramiteEmBloco->getStrSiglaUnidade()}." + . " Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; } } @@ -479,57 +453,6 @@ protected function validarBlocoDeTramiteControlado($idProtocolo) return false; } - - /** - * Valida a inclusão de um processo quando este é concluído. - * Retorna o objeto TramiteEmBloco se o processo não puder ser incluído - * - * @param int $dblIdbloco - * @param int $idProtocolo - * @param array $arrEstadoBlocos - * - * @return TramiteEmBloco|true - */ - public function validarInclusaoQuandoProcessoConcluido($dblIdbloco, $idProtocolo, $arrEstadoBlocos) - { - $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $tramiteEmBlocoDTO->setNumId($dblIdbloco); - $tramiteEmBlocoDTO->setStrStaEstado($arrEstadoBlocos, InfraDTO::$OPER_IN); - $tramiteEmBlocoDTO->retStrDescricao(); - $tramiteEmBlocoDTO->retStrStaEstado(); - $tramiteEmBlocoDTO->retNumId(); - $tramiteEmBlocoDTO->retNumOrdem(); - - $tramiteEmBlocoRN = new TramiteEmBlocoRN(); - $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); - - if (!empty($tramiteEmBloco)) { - - $arrEstadosDeNaoConclusaoDoProcesso = array( - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, - ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, - ); - - $objPenBlocoProcessoDTO = new PenBlocoProcessoDTO(); - $objPenBlocoProcessoDTO->setDblIdProtocolo($idProtocolo); - $objPenBlocoProcessoDTO->setNumIdBloco($dblIdbloco); - $objPenBlocoProcessoDTO->setNumIdAndamento($arrEstadosDeNaoConclusaoDoProcesso, InfraDTO::$OPER_IN); - $objPenBlocoProcessoDTO->retDblIdProtocolo(); - $objPenBlocoProcessoDTO->retNumIdBloco(); - $objPenBlocoProcessoDTO->retNumIdAndamento(); - - $penBlocoProcessoBD = new PenBlocoProcessoBD(BancoSEI::getInstance()); - $objPenProtocoloDTO = $penBlocoProcessoBD->consultar($objPenBlocoProcessoDTO); - - if ($objPenProtocoloDTO != null) { - return $tramiteEmBloco; - } - } - - return true; - } public function validarQuantidadeDeItensNoBloco($dblIdbloco, $arrProtocolosOrigem) { @@ -625,12 +548,12 @@ private function buscarBlocoProcessos($idBloco) */ private function validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDTO, $idAndamentoBloco) { - $concluido = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE; - $parcialmenteConcluido = array( + $concluido = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE ); $emAndamento = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, @@ -639,27 +562,27 @@ private function validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDT ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO ); + + $qtdProcesos = count($arrObjTramiteEmBlocoProtocoloDTO); + $arrayConcluidos = array(); + $arrayEmAndamento = array(); foreach ($arrObjTramiteEmBlocoProtocoloDTO as $objDTO) { - if ( - in_array($objDTO->getNumIdAndamento(), $emAndamento) - && $idAndamentoBloco != TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE - ) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_DISPONIBILIZADO; - } - if (in_array($objDTO->getNumIdAndamento(), $parcialmenteConcluido)) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE; + if (in_array($objDTO->getNumIdAndamento(), $concluido)) { + $arrayConcluidos[] = $objDTO; } - if ( - $objDTO->getNumIdAndamento() == $concluido - && ( - $idAndamentoBloco == TramiteEmBlocoRN::$TE_CONCLUIDO - || $idAndamentoBloco == TramiteEmBlocoRN::$TE_ABERTO - ) - ) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO; + + if (in_array($objDTO->getNumIdAndamento(), $emAndamento)) { + $arrayEmAndamento[] = $objDTO; } } + if ($qtdProcesos == count($arrayConcluidos)) { + $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO; + } + if (count($arrayEmAndamento) > 0) { + $idAndamentoBloco = TramiteEmBlocoRN::$TE_DISPONIBILIZADO; + } + return $idAndamentoBloco; } } diff --git a/src/rn/ProcessarPendenciasRN.php b/src/rn/ProcessarPendenciasRN.php index 6145a2abc..f1c53304d 100755 --- a/src/rn/ProcessarPendenciasRN.php +++ b/src/rn/ProcessarPendenciasRN.php @@ -251,27 +251,27 @@ public function expedirBloco($idProcedimento) $this->gravarLogDebug("Processando envio de protocolo [expedirProcedimento] com IDProcedimento " . $idProcedimento, 0, true); $numTempoInicialEnvio = microtime(true); - $objPenLoteProcedimentoDTO = new PenBlocoProcessoDTO(); - $objPenLoteProcedimentoDTO->retNumIdRepositorioOrigem(); - $objPenLoteProcedimentoDTO->retNumIdUnidadeOrigem(); - $objPenLoteProcedimentoDTO->retNumIdRepositorioDestino(); - $objPenLoteProcedimentoDTO->retStrRepositorioDestino(); - $objPenLoteProcedimentoDTO->retNumIdUnidadeDestino(); - $objPenLoteProcedimentoDTO->retStrUnidadeDestino(); - $objPenLoteProcedimentoDTO->retDblIdProtocolo(); - $objPenLoteProcedimentoDTO->retNumIdBlocoProcesso(); - $objPenLoteProcedimentoDTO->retNumIdAtividade(); - $objPenLoteProcedimentoDTO->retNumIdBloco(); - $objPenLoteProcedimentoDTO->retNumIdUnidade(); - $objPenLoteProcedimentoDTO->retNumTentativas(); - $objPenLoteProcedimentoDTO->setDblIdProtocolo(intval($idProcedimento)); - $objPenLoteProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); - $objPenLoteProcedimentoDTO->setNumMaxRegistrosRetorno(1); - - $objPenLoteProcedimentoRN = new PenBlocoProcessoRN(); - $objPenLoteProcedimentoDTO = $objPenLoteProcedimentoRN->consultar($objPenLoteProcedimentoDTO); - - if (!is_null($objPenLoteProcedimentoDTO)) { + $objPenBlocoProcedimentoDTO = new PenBlocoProcessoDTO(); + $objPenBlocoProcedimentoDTO->retNumIdRepositorioOrigem(); + $objPenBlocoProcedimentoDTO->retNumIdUnidadeOrigem(); + $objPenBlocoProcedimentoDTO->retNumIdRepositorioDestino(); + $objPenBlocoProcedimentoDTO->retStrRepositorioDestino(); + $objPenBlocoProcedimentoDTO->retNumIdUnidadeDestino(); + $objPenBlocoProcedimentoDTO->retStrUnidadeDestino(); + $objPenBlocoProcedimentoDTO->retDblIdProtocolo(); + $objPenBlocoProcedimentoDTO->retNumIdBlocoProcesso(); + $objPenBlocoProcedimentoDTO->retNumIdAtividade(); + $objPenBlocoProcedimentoDTO->retNumIdBloco(); + $objPenBlocoProcedimentoDTO->retNumIdUnidade(); + $objPenBlocoProcedimentoDTO->retNumTentativas(); + $objPenBlocoProcedimentoDTO->setDblIdProtocolo(intval($idProcedimento)); + $objPenBlocoProcedimentoDTO->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO); + $objPenBlocoProcedimentoDTO->setNumMaxRegistrosRetorno(1); + + $objPenBlocoProcedimentoRN = new PenBlocoProcessoRN(); + $objPenBlocoProcedimentoDTO = $objPenBlocoProcedimentoRN->consultar($objPenBlocoProcedimentoDTO); + + if (!is_null($objPenBlocoProcedimentoDTO)) { // Ajuste na variável global $_SERVER['HTTPS'] para considerar a mesma configuração definida para o SEI // e evitar erros na rotina validaHttps quando em execução por linha de comando @@ -284,35 +284,36 @@ public function expedirBloco($idProcedimento) $objConfiguracaoModPEN = ConfiguracaoModPEN::getInstance(); $numTentativasErroMaximo = $objConfiguracaoModPEN->getValor("PEN", "NumeroTentativasErro", false, ProcessoEletronicoRN::WS_TENTATIVAS_ERRO); $numTentativasErroMaximo = (is_numeric($numTentativasErroMaximo)) ? intval($numTentativasErroMaximo) : ProcessoEletronicoRN::WS_TENTATIVAS_ERRO; - $numTentativasProcesso = $objPenLoteProcedimentoDTO->getNumTentativas() ?: 0; + $numTentativasProcesso = $objPenBlocoProcedimentoDTO->getNumTentativas() ?: 0; if ($numTentativasErroMaximo >= $numTentativasProcesso + 1) { - $objPenLoteProcedimentoRN->registrarTentativaEnvio($objPenLoteProcedimentoDTO); + $objPenBlocoProcedimentoRN->registrarTentativaEnvio($objPenBlocoProcedimentoDTO); $objExpedirProcedimentoDTO = new ExpedirProcedimentoDTO(); - $objExpedirProcedimentoDTO->setNumIdRepositorioOrigem($objPenLoteProcedimentoDTO->getNumIdRepositorioOrigem()); - $objExpedirProcedimentoDTO->setNumIdUnidadeOrigem($objPenLoteProcedimentoDTO->getNumIdUnidadeOrigem()); + $objExpedirProcedimentoDTO->setNumIdRepositorioOrigem($objPenBlocoProcedimentoDTO->getNumIdRepositorioOrigem()); + $objExpedirProcedimentoDTO->setNumIdUnidadeOrigem($objPenBlocoProcedimentoDTO->getNumIdUnidadeOrigem()); - $objExpedirProcedimentoDTO->setNumIdRepositorioDestino($objPenLoteProcedimentoDTO->getNumIdRepositorioDestino()); - $objExpedirProcedimentoDTO->setStrRepositorioDestino($objPenLoteProcedimentoDTO->getStrRepositorioDestino()); - $objExpedirProcedimentoDTO->setNumIdUnidadeDestino($objPenLoteProcedimentoDTO->getNumIdUnidadeDestino()); - $objExpedirProcedimentoDTO->setStrUnidadeDestino($objPenLoteProcedimentoDTO->getStrUnidadeDestino()); + $objExpedirProcedimentoDTO->setNumIdRepositorioDestino($objPenBlocoProcedimentoDTO->getNumIdRepositorioDestino()); + $objExpedirProcedimentoDTO->setStrRepositorioDestino($objPenBlocoProcedimentoDTO->getStrRepositorioDestino()); + $objExpedirProcedimentoDTO->setNumIdUnidadeDestino($objPenBlocoProcedimentoDTO->getNumIdUnidadeDestino()); + $objExpedirProcedimentoDTO->setStrUnidadeDestino($objPenBlocoProcedimentoDTO->getStrUnidadeDestino()); $objExpedirProcedimentoDTO->setArrIdProcessoApensado(null); $objExpedirProcedimentoDTO->setBolSinUrgente(false); - $objExpedirProcedimentoDTO->setDblIdProcedimento($objPenLoteProcedimentoDTO->getDblIdProtocolo()); + $objExpedirProcedimentoDTO->setDblIdProcedimento($objPenBlocoProcedimentoDTO->getDblIdProtocolo()); $objExpedirProcedimentoDTO->setNumIdMotivoUrgencia(null); $objExpedirProcedimentoDTO->setBolSinProcessamentoEmLote(true); - $objExpedirProcedimentoDTO->setNumIdLote($objPenLoteProcedimentoDTO->getNumIdBlocoProcesso()); - $objExpedirProcedimentoDTO->setNumIdAtividade($objPenLoteProcedimentoDTO->getNumIdAtividade()); - $objExpedirProcedimentoDTO->setNumIdUnidade($objPenLoteProcedimentoDTO->getNumIdUnidade()); + $objExpedirProcedimentoDTO->setNumIdLote($objPenBlocoProcedimentoDTO->getNumIdBlocoProcesso()); + $objExpedirProcedimentoDTO->setNumIdAtividade($objPenBlocoProcedimentoDTO->getNumIdAtividade()); + $objExpedirProcedimentoDTO->setNumIdUnidade($objPenBlocoProcedimentoDTO->getNumIdUnidade()); $objExpedirProcedimentoRN = new ExpedirProcedimentoRN(); $objExpedirProcedimentoRN->expedirProcedimento($objExpedirProcedimentoDTO); + $numIDT = $objPenBlocoProcedimentoDTO->getDblIdProtocolo(); $numTempoTotalEnvio = round(microtime(true) - $numTempoInicialEnvio, 2); $this->gravarLogDebug("Finalizado o envio de protocolo com IDProcedimento $numIDT(Tempo total: {$numTempoTotalEnvio}s)", 0, true); } else { - $objPenLoteProcedimentoRN->desbloquearProcessoLote($objPenLoteProcedimentoDTO->getDblIdProtocolo()); + $objPenBlocoProcedimentoRN->desbloquearProcessoBloco($objPenBlocoProcedimentoDTO->getDblIdProtocolo()); } } } catch (\Exception $e) { diff --git a/src/rn/ReceberProcedimentoRN.php b/src/rn/ReceberProcedimentoRN.php index 29016db29..e7a343323 100755 --- a/src/rn/ReceberProcedimentoRN.php +++ b/src/rn/ReceberProcedimentoRN.php @@ -529,7 +529,15 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) // Atualizar Bloco para concluido parcialmente $objTramiteEmBlocoProtocoloDTO = new PenBlocoProcessoDTO(); $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($objReceberTramiteRecusadoDTO->getNumIdProtocolo()); - $objTramiteEmBlocoProtocoloDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual()); + $objTramiteEmBlocoProtocoloDTO->setNumIdAndamento( + array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE + ), + InfraDTO::$OPER_NOT_IN + ); $objTramiteEmBlocoProtocoloDTO->setOrdNumIdBlocoProcesso(InfraDTO::$TIPO_ORDENACAO_DESC); $objTramiteEmBlocoProtocoloDTO->retTodos(); @@ -537,12 +545,17 @@ protected function receberTramitesRecusadosInternoControlado($parObjTramite) $arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); if ($arrTramiteEmBlocoProtocolo != null) { + $blocos = array(); foreach ($arrTramiteEmBlocoProtocolo as $tramiteEmBlocoProtocolo) { $tramiteEmBlocoProtocolo->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA); $objTramitaEmBlocoProtocoloRN->alterar($tramiteEmBlocoProtocolo); + + $blocos[] = $tramiteEmBlocoProtocolo->getNumIdBloco(); + } + + foreach ($blocos as $idBloco) { + $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($idBloco); } - $idBloco = $arrTramiteEmBlocoProtocolo[0]->getNumIdBloco(); - $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($idBloco); } } diff --git a/src/rn/ReceberReciboTramiteRN.php b/src/rn/ReceberReciboTramiteRN.php index c75a500e3..73bd0cae3 100755 --- a/src/rn/ReceberReciboTramiteRN.php +++ b/src/rn/ReceberReciboTramiteRN.php @@ -140,10 +140,18 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $objProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); $objProtocoloDTO = $objProtocoloBD->consultar($objProtocoloDTO); - // Atualizar Bloco para concluido parcialmente + // Atualizar Bloco para concluido $objTramiteEmBlocoProtocoloDTO = new PenBlocoProcessoDTO(); $objTramiteEmBlocoProtocoloDTO->setDblIdProtocolo($objProtocoloDTO->getDblIdProtocolo()); - $objTramiteEmBlocoProtocoloDTO->setNumIdUnidade($objProtocoloDTO->getNumIdUnidadeGeradora()); + $objTramiteEmBlocoProtocoloDTO->setNumIdAndamento( + array( + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE + ), + InfraDTO::$OPER_NOT_IN + ); $objTramiteEmBlocoProtocoloDTO->setOrdNumIdBlocoProcesso(InfraDTO::$TIPO_ORDENACAO_DESC); $objTramiteEmBlocoProtocoloDTO->retTodos(); @@ -151,13 +159,17 @@ protected function receberReciboDeTramiteInternoControlado($objReciboTramite) $arrTramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO); if ($arrTramiteEmBlocoProtocolo != null) { + $blocos = array(); foreach ($arrTramiteEmBlocoProtocolo as $tramiteEmBlocoProtocolo) { $tramiteEmBlocoProtocolo->setNumIdAndamento(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE); $objTramitaEmBlocoProtocoloRN->alterar($tramiteEmBlocoProtocolo); + + $blocos[] = $tramiteEmBlocoProtocolo->getNumIdBloco(); + } + + foreach ($blocos as $idBloco) { + $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($idBloco); } - - $idBloco = $arrTramiteEmBlocoProtocolo[0]->getNumIdBloco(); - $objTramitaEmBlocoProtocoloRN->atualizarEstadoDoBloco($idBloco); } $this->objProcedimentoAndamentoRN->setOpts($objTramiteDTO->getStrNumeroRegistro(), $numIdTramite, ProcessoEletronicoRN::obterIdTarefaModulo(ProcessoEletronicoRN::$TI_PROCESSO_ELETRONICO_PROCESSO_EXPEDIDO), $objProcessoEletronicoDTO->getDblIdProcedimento()); diff --git a/src/rn/TramitaEmBlocoProtocoloRN.php b/src/rn/TramitaEmBlocoProtocoloRN.php index 1b776a63c..ff91ff96d 100644 --- a/src/rn/TramitaEmBlocoProtocoloRN.php +++ b/src/rn/TramitaEmBlocoProtocoloRN.php @@ -319,43 +319,6 @@ protected function validarBlocoDeTramiteControlado($idProtocolo) if (!empty($tramiteEmBloco)) { return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrProtocoloFormatadoProtocolo()} encontra-se inserido no bloco {$tramiteEmBloco->getNumOrdem()} - {$tramiteEmBloco->getStrDescricao()}. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; } - - $processoRecusadoNoBlocoParcial = $this->validarBlocoEstadoConcluidoParcial($tramitaEmBloco->getNumIdBloco(), $idProtocolo); - if ($processoRecusadoNoBlocoParcial !== false) { - return "Prezado(a) usuário(a), o processo {$tramitaEmBloco->getStrProtocoloFormatadoProtocolo()} encontra-se inserido no bloco {$processoRecusadoNoBlocoParcial->getNumOrdem()} - {$processoRecusadoNoBlocoParcial->getStrDescricao()}. Para continuar com essa ação é necessário que o processo seja removido do bloco em questão."; - } - } - - return false; - } - - public function validarBlocoEstadoConcluidoParcial($dblIdbloco, $idProtocolo) - { - $tramiteEmBlocoDTO = new TramiteEmBlocoDTO(); - $tramiteEmBlocoDTO->setNumId($dblIdbloco); - $tramiteEmBlocoDTO->setStrStaEstado([ - TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE, - ], InfraDTO::$OPER_IN); - $tramiteEmBlocoDTO->retStrDescricao(); - $tramiteEmBlocoDTO->retStrStaEstado(); - $tramiteEmBlocoDTO->retNumId(); - - $tramiteEmBlocoRN = new TramiteEmBlocoRN(); - $tramiteEmBloco = $tramiteEmBlocoRN->consultar($tramiteEmBlocoDTO); - - if (!empty($tramiteEmBloco)) { - $objPenProtocolo = new PenProtocoloDTO(); - $objPenProtocolo->setDblIdProtocolo($idProtocolo); - $objPenProtocolo->setStrSinObteveRecusa('S'); - $objPenProtocolo->setNumMaxRegistrosRetorno(1); - $objPenProtocolo->retDblIdProtocolo(); - - $objPenProtocoloBD = new ProtocoloBD(BancoSEI::getInstance()); - $ObjPenProtocoloDTO = $objPenProtocoloBD->consultar($objPenProtocolo); - - if ($ObjPenProtocoloDTO != null) { - return $tramiteEmBloco; - } } return false; @@ -456,12 +419,12 @@ private function buscarBlocoProcessos($idBloco) */ private function validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDTO, $idAndamentoBloco) { - $concluido = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE; - $parcialmenteConcluido = array( + $concluido = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE, + ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE ); $emAndamento = array( ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_INICIADO, @@ -470,27 +433,25 @@ private function validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDT ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_COMPONENTES_RECEBIDOS_DESTINATARIO, ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_ENVIADO_DESTINATARIO ); + $qtdProcesos = count($arrObjTramiteEmBlocoProtocoloDTO); + $arrayConcluidos = array(); + $arrayEmAndamento = array(); foreach ($arrObjTramiteEmBlocoProtocoloDTO as $objDTO) { - if ( - in_array($objDTO->getNumIdAndamento(), $emAndamento) - && $idAndamentoBloco != TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE - ) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_DISPONIBILIZADO; - } - if (in_array($objDTO->getNumIdAndamento(), $parcialmenteConcluido)) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE; + if (in_array($objDTO->getNumIdAndamento(), $concluido)) { + $arrayConcluidos[] = $objDTO; } - if ( - $objDTO->getNumIdAndamento() == $concluido - && ( - $idAndamentoBloco == TramiteEmBlocoRN::$TE_CONCLUIDO - || $idAndamentoBloco == TramiteEmBlocoRN::$TE_ABERTO - ) - ) { - $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO; + + if (in_array($objDTO->getNumIdAndamento(), $emAndamento)) { + $arrayEmAndamento[] = $objDTO; } } + if (count($arrayEmAndamento)) { + $idAndamentoBloco = TramiteEmBlocoRN::$TE_DISPONIBILIZADO; + } elseif ($qtdProcesos == count($arrayConcluidos)) { + $idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO; + } + return $idAndamentoBloco; } } \ No newline at end of file diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php index 07271fb28..ad681b8c1 100755 --- a/src/scripts/sei_atualizar_versao_modulo_pen.php +++ b/src/scripts/sei_atualizar_versao_modulo_pen.php @@ -2964,17 +2964,6 @@ protected function instalarV3070() if ($arrPenBlocoProcessoDTO == null) { $objTramiteEmBlocoRN->excluir(array($tramiteEmBlocoDTO)); } - - //Verificar se todos os processos de um bloco concluído na 3.6.2 foram concluídos - $staEstado = $tramiteEmBlocoDTO->getStrStaEstado(); - if ($staEstado == TramiteEmBlocoRN::$TE_CONCLUIDO) { - $bolVeriicarStatusDiferenteDeSucesso = $this->verificarIdAndamentoConcluido($arrPenBlocoProcessoDTO); - if (!empty($bolVeriicarStatusDiferenteDeSucesso)) { - $objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoDTO->getNumId()); - $objTramiteEmBlocoDTO->setStrStaEstado(TramiteEmBlocoRN::$TE_CONCLUIDO_PARCIALMENTE); - $objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO); - } - } } }