Skip to content

Commit

Permalink
Fix/processo em bloco bloqueado (#585)
Browse files Browse the repository at this point in the history
* fix: correção de atualização de estatus e processo incliudo no bloco bloqueado

* fix: correção de atualização de agendamentos

* fix: correções para bloco processo

* fix: correções para bloco processo

---------

Co-authored-by: Mauro Costa <[email protected]>
  • Loading branch information
Mauro1706 and Mauro Costa authored Aug 16, 2024
1 parent 2d8f316 commit 12237b9
Show file tree
Hide file tree
Showing 6 changed files with 200 additions and 290 deletions.
14 changes: 8 additions & 6 deletions src/pen_tramite_processo_em_bloco_cadastrar.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,19 @@
$objPenBlocoProcessoDTO = new PenBlocoProcessoDTO();
$objPenBlocoProcessoDTO->setDblIdProtocolo($_GET['id_procedimento']);
$objPenBlocoProcessoDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
$objPenBlocoProcessoDTO->setNumIdAndamento(
array(ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE),
InfraDTO::$OPER_NOT_IN
);
$objPenBlocoProcessoDTO->retNumIdAndamento();
$objPenBlocoProcessoDTO->retDblIdProtocolo();
$objPenBlocoProcessoDTO->retNumIdBlocoProcesso();
$objPenBlocoProcessoDTO->retNumIdBloco();

$objPenBlocoProcessoRN = new PenBlocoProcessoRN();
$arrObjPenBlocoProcessoDTO = $objPenBlocoProcessoRN->listar($objPenBlocoProcessoDTO);
$objPenBlocoProcessoRN->excluir($arrObjPenBlocoProcessoDTO);
foreach($arrObjPenBlocoProcessoDTO as $objPenBlocoProcessoDTO){
if($objPenBlocoProcessoDTO->getNumIdAndamento() != ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE){
$objPenBlocoProcessoRN->excluir(array($objPenBlocoProcessoDTO));
}
}

$strMensagem = 'O processo "' . $procedimento->getStrProtocoloProcedimentoFormatado() . '" foi removido com sucesso do bloco de trâmite externo';
} catch (Exception $e) {
$strMensagem = $e->getMessage();
Expand Down
137 changes: 93 additions & 44 deletions src/rn/PenBlocoProcessoRN.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ protected function desbloquearProcessoLoteControlado($dblIdProcedimento)
// 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();
Expand All @@ -111,7 +112,8 @@ protected function desbloquearProcessoLoteControlado($dblIdProcedimento)
$tramiteEmBlocoProtocolo = $objTramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO);

if ($tramiteEmBlocoProtocolo != null) {
$this->atualizarEstadoDoBlocoConcluidoParcialmente($tramiteEmBlocoProtocolo);
$idBloco = $tramiteEmBlocoProtocolo[0]->getNumIdBloco();
$this->atualizarEstadoDoBloco($idBloco);
}
}

Expand Down Expand Up @@ -543,63 +545,110 @@ public function validarQuantidadeDeItensNoBloco($dblIdbloco, $arrProtocolosOrige

/**
* Atualizar Bloco de tramite externo para concluído
*
* @param int $idBloco
* @throws InfraException
*/
public function atualizarEstadoDoBloco(PenBlocoProcessoDTO $tramiteEmBlocoProtocoloDTO, $novoEstadoDoBloco)
public function atualizarEstadoDoBloco($idBloco)
{
// Verificar se tem existe processo recusado dentro de um bloco
$objTramiteEmBlocoProtocoloDTO2 = new PenBlocoProcessoDTO();
$objTramiteEmBlocoProtocoloDTO2->setNumIdBloco($tramiteEmBlocoProtocoloDTO->getNumIdBloco());
$objTramiteEmBlocoProtocoloDTO2->retNumIdBloco();
$objTramiteEmBlocoProtocoloDTO2->retDblIdProtocolo();

$objTramiteEmBlocoProtocoloDTORN = new PenBlocoProcessoRN($objTramiteEmBlocoProtocoloDTO2);
$arrTramiteEmBlocoProtocolo = $objTramiteEmBlocoProtocoloDTORN->listar($objTramiteEmBlocoProtocoloDTO2);

$objPenProtocolo = new PenProtocoloDTO();
$objPenProtocolo->setDblIdProtocolo(InfraArray::converterArrInfraDTO($arrTramiteEmBlocoProtocolo, 'IdProtocolo'), InfraDTO::$OPER_IN);
$objPenProtocolo->setStrSinObteveRecusa('S');
$objPenProtocolo->setNumMaxRegistrosRetorno(1);
$objPenProtocolo->retDblIdProtocolo();

$objPenProtocoloBD = new ProtocoloBD(BancoSEI::getInstance());
$ObjPenProtocoloDTO = $objPenProtocoloBD->consultar($objPenProtocolo);

if ($ObjPenProtocoloDTO != null) {
return null;
$blocoResultado = $this->buscarBloco($idBloco);

if ($blocoResultado != null) {
$arrObjTramiteEmBlocoProtocoloDTO = $this->buscarBlocoProcessos($idBloco);

$objTramiteEmBlocoDTO = new TramiteEmBlocoDTO();
$idAndamentoBloco = TramiteEmBlocoRN::$TE_ABERTO;
if (count($arrObjTramiteEmBlocoProtocoloDTO) > 0) {
$idAndamentoBloco = $this->validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDTO, $idAndamentoBloco);
$objTramiteEmBlocoDTO->setStrStaEstado($idAndamentoBloco);
} else {
$objTramiteEmBlocoDTO->setStrStaEstado($idAndamentoBloco);
}

$objTramiteEmBlocoDTO->setNumId($idBloco);

$objTramiteEmBlocoRN = new TramiteEmBlocoRN();
$objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO);
}
// não atualizar para concluido quando o bloco estiver em concluido parcialmente
}

/**
* Busca um bloco pelo ID
*
* @param int $dblIdBloco
*/
private function buscarBloco($idBloco)
{
$objTramiteEmBlocoDTO = new TramiteEmBlocoDTO();
$objTramiteEmBlocoDTO->setNumId($tramiteEmBlocoProtocoloDTO->getNumIdBloco());
$objTramiteEmBlocoDTO->setStrStaEstado([
TramiteEmBlocoRN::$TE_ABERTO,
TramiteEmBlocoRN::$TE_DISPONIBILIZADO,
], InfraDTO::$OPER_IN);
$objTramiteEmBlocoDTO->setNumId($idBloco);
$objTramiteEmBlocoDTO->retNumId();
$objTramiteEmBlocoDTO->retStrStaEstado();

$objTramiteEmBlocoRN = new TramiteEmBlocoRN();
$objTramiteEmBlocoDTO = $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO);

if ($objTramiteEmBlocoDTO != null) {
$objTramiteEmBlocoDTO->setStrStaEstado($novoEstadoDoBloco);
$objTramiteEmBlocoRN->alterar($objTramiteEmBlocoDTO);
}
return $objTramiteEmBlocoRN->consultar($objTramiteEmBlocoDTO);
}

/**
* Atualizar Bloco de tramite externo para concluído parcialmente
* Busca todos os processos de um bloco
*
* @param int $dblIdBloco
*/
public function atualizarEstadoDoBlocoConcluidoParcialmente($arrTramiteEmBlocoProtocoloDTO)
private function buscarBlocoProcessos($idBloco)
{
$objTramiteEmBlocoDTO = new TramiteEmBlocoDTO();
$objTramiteEmBlocoDTO->setNumId($arrTramiteEmBlocoProtocoloDTO[0]->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);
$objTramiteEmBlocoProtocoloDTO = new PenBlocoProcessoDTO();
$objTramiteEmBlocoProtocoloDTO->setNumIdBloco($idBloco);
$objTramiteEmBlocoProtocoloDTO->retNumIdAndamento();
$objTramiteEmBlocoProtocoloDTO->retNumIdBloco();

$tramitaEmBlocoProtocoloRN = new PenBlocoProcessoRN();

return $tramitaEmBlocoProtocoloRN->listar($objTramiteEmBlocoProtocoloDTO);
}

/**
* Valida o status do processo para o bloco
*
* @param array $arrObjTramiteEmBlocoProtocoloDTO
* @param int $idAndamentoBloco
*/
private function validarStatusProcessoParaBloco($arrObjTramiteEmBlocoProtocoloDTO, $idAndamentoBloco)
{
$concluido = ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECIBO_RECEBIDO_REMETENTE;
$parcialmenteConcluido = array(
ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CIENCIA_RECUSA,
ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_RECUSADO,
ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO,
ProcessoEletronicoRN::$STA_SITUACAO_TRAMITE_CANCELADO_AUTOMATICAMENTE,
);
$emAndamento = 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
);
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 (
$objDTO->getNumIdAndamento() == $concluido
&& (
$idAndamentoBloco == TramiteEmBlocoRN::$TE_CONCLUIDO
|| $idAndamentoBloco == TramiteEmBlocoRN::$TE_ABERTO
)
) {
$idAndamentoBloco = TramiteEmBlocoRN::$TE_CONCLUIDO;
}
}

return $idAndamentoBloco;
}
}
196 changes: 0 additions & 196 deletions src/rn/PenLoteProcedimentoRN.php

This file was deleted.

Loading

0 comments on commit 12237b9

Please sign in to comment.