Skip to content

Commit

Permalink
feat: correção de bug de envio parcial
Browse files Browse the repository at this point in the history
Correção de mapemaneto de hipoteses legais; Correção de envio parcial para mapeamento de repositorios; Correção de recebimento de tramite evolução do tramite em bloco
  • Loading branch information
Mauro Costa committed Jun 7, 2024
1 parent 3612868 commit af9e1aa
Show file tree
Hide file tree
Showing 5 changed files with 344 additions and 145 deletions.
186 changes: 186 additions & 0 deletions src/int/ProcessoEletronicoINT.php
Original file line number Diff line number Diff line change
Expand Up @@ -260,4 +260,190 @@ public static function getCssCompatibilidadeSEI4($arquivo)

return $arquivo;
}

/**
* Monta a regra de restrição do tramite.gov.br
*
* @param string $idUnidade
* @param string $strCss
* @param string $strHtml
* @param string $strJsGlobal
* @param string $strJsicializar
* @return string
*/
public static function montarRestricaoTramitaGovBr($idUnidade, &$strCss, &$strHtml, &$strJsGlobal, &$strJsInicializar)
{
try {
$objPenUnidadeRestricaoDTO = new PenUnidadeRestricaoDTO();
$objPenUnidadeRestricaoDTO->setNumIdUnidade($idUnidade);
$objPenUnidadeRestricaoDTO->retTodos();

$objPenUnidadeRestricaoRN = new PenUnidadeRestricaoRN();
$arrObjPenUnidadeRestricaoDTO = $objPenUnidadeRestricaoRN->listar($objPenUnidadeRestricaoDTO);
$items = array();
$arrayKeys = array();
$arrObjPenUnidadeDTO = array();
$itemsUnidades = array();
$hdnRepoEstruturas = array();
$strHtmlRepoEstruturasUnidades = "";
foreach ($arrObjPenUnidadeRestricaoDTO as $item) {
if (!in_array($item->getNumIdUnidadeRestricao(), $arrayKeys)) {
//IdUnidadeRestricao NomeUnidadeRestricao
$arrayKeys[] = $item->getNumIdUnidadeRestricao();
$items[] = array($item->getNumIdUnidadeRestricao(), $item->getStrNomeUnidadeRestricao());
//$strHtmlRepoEstruturasUnidades .= '<input type="hidden" id="hdnRepoEstruturas' . $item->getNumIdUnidadeRestricao() . '" name="hdnRepoEstruturas' . $item->getNumIdUnidadeRestricao() . '" value="" />' . "\n";
$hdnRepoEstruturas[$item->getNumIdUnidadeRestricao()] = array();
}
if ($item->getNumIdUnidadeRHRestricao() != null) {
$arrObjPenUnidadeDTO[] = $item;
$itemsUnidades[] = array($item->getNumIdUnidadeRHRestricao(), $item->getStrNomeUnidadeRHRestricao());
$hdnRepoEstruturas[$item->getNumIdUnidadeRestricao()][] = $item->getNumIdUnidadeRHRestricao() . '±' . $item->getStrNomeUnidadeRHRestricao();
}
}
foreach ($hdnRepoEstruturas as $key => $unidades) {
$value = implode('¥', $unidades);
$strHtmlRepoEstruturasUnidades .= '<input type="hidden" id="hdnRepoEstruturas' . $key
. '" name="hdnRepoEstruturas' . $key . '" value="' . $value . '" />' . "\n";
}
$arrRepoEstruturasSelecionados = PaginaSEI::getInstance()->gerarItensLupa($items);
$arrUnidadesSelecionadas = PaginaSEI::getInstance()->gerarItensLupa($itemsUnidades);
$strItensSelRepoEstruturasRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjPenUnidadeRestricaoDTO, 'IdUnidadeRestricao', 'NomeUnidadeRestricao');
$strItensSelUnidadesRestricao = parent::montarSelectArrInfraDTO(null, null, null, $arrObjPenUnidadeDTO, 'IdUnidadeRHRestricao', 'NomeUnidadeRHRestricao');

$strCss = ''
. ' #lblRepoEstruturas {position:absolute;left:0%;top:0%;width:20%;}'
. ' #txtRepoEstruturas {position:absolute;left:0%;top:13%;width:19.5%;}'
. ' #selRepoEstruturas {position:absolute;left:0%;top:29%;width:20%;}'
. ' #divOpcoesRepoEstruturas {position:absolute;left:21%;top:29%;}'
. ' '
. ' #lblUnidades {position:absolute;left:25%;top:0%;}'
. ' #txtUnidade {position:absolute;left:25%;top:13%;width:54.5%;}'
. ' #selUnidades {position:absolute;left:25%;top:29%;width:55%;}'
. ' #divOpcoesUnidades {position:absolute;left:81%;top:29%;}';

$strJsGlobal = ''
. ' var objLupaRepositoriosEstruturas = null;'
. ' var objAutoCompletarOrgao = null;'
. ' var objLupaUnidades = null;'
. ' var objAutoCompletarUnidade = null;'
. ' '
. ' function trocarOrgaoRestricao(){'
. ' document.getElementById(\'hdnUnidades\').value = document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;'
. ' objLupaUnidades.montar();'
. ' };';

$strJsInicializar = ''
. ' objLupaRepositoriosEstruturas = new infraLupaSelect(\'selRepoEstruturas\',\'hdnRepoEstruturas\',\'' . /*SessaoSEI::getInstance()->assinarLink('controlador.php?acao=orgao_selecionar&tipo_selecao=2&id_object=objLupaRepositoriosEstruturas') .*/ '\');'
. ' objLupaRepositoriosEstruturas.processarRemocao = function(itens){'
. ' objLupaUnidades.limpar();'
. ' for(var i=0;i < itens.length;i++){'
. ' document.getElementById(\'hdnRepoEstruturas\' + itens[i].value).value = \'\';'
. ' }'
. ' return true;'
. ' };'
. ' '
. ' objLupaRepositoriosEstruturas.finalizarSelecao = function(){'
. ' objLupaUnidades.limpar();'
. ' };'
. ' '
. ' objAutoCompletarRepoEstruturas = new infraAjaxAutoCompletar(\'hdnIdRepoEstruturas\',\'txtRepoEstruturas\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=pen_listar_repositorios_estruturas_auto_completar') . '\');'
. ' objAutoCompletarRepoEstruturas.limparCampo = true;'
. ' objAutoCompletarRepoEstruturas.prepararExecucao = function(){'
. ' return \'palavras_pesquisa=\'+document.getElementById(\'txtRepoEstruturas\').value;'
. ' };'
. ' '
. ' objAutoCompletarRepoEstruturas.processarResultado = function(id,descricao,complemento){'
. ' if (id!=\'\'){ '
. ' objLupaRepositoriosEstruturas.adicionar(id,descricao,document.getElementById(\'txtRepoEstruturas\'));'
. ' objLupaUnidades.limpar();'
. ' hdnRepoEst = document.getElementById("hdnRepoEstruturas" + id); '
. ' if (hdnRepoEst == null) { '
. ' html = document.createElement(\'input\'); '
. ' html.type = \'hidden\'; '
. ' html.id=\'hdnRepoEstruturas\' + id;'
. ' html.name= \'hdnRepoEstruturas\'+ id;'
. ' divRestricao = document.getElementById(\'divRestricao\');'
. ' divRestricao.appendChild(html);'
. ' };'
. ' };'
. ' };'
. ' '
. ' objLupaUnidades = new infraLupaSelect(\'selUnidades\',\'hdnUnidades\',\'\');'
. ' objLupaUnidades.validarSelecionar = function(){'
. ' if (document.getElementById(\'selOrgaos\').selectedIndex==-1){'
. ' alert(\'Nenhum Repositório de Estruturas selecionado.\');'
. ' return false;'
. ' }'
. ' objLupaUnidades.url = document.getElementById(\'lnkRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;'
. ' return true;'
. ' };'
. ' '
. ' objLupaUnidades.finalizarRemocao = function(){'
. ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = document.getElementById(\'hdnUnidades\').value;'
. ' return true;'
. ' };'
. ' '
. ' objLupaUnidades.finalizarSelecao = function(){'
. ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = document.getElementById(\'hdnUnidades\').value;'
. ' };'
. ' '
. ' objAutoCompletarUnidade = new infraAjaxAutoCompletar(\'hdnIdUnidade\',\'txtUnidade\',\'' . SessaoSEI::getInstance()->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_expedir_procedimento') . '\');'
. ' objAutoCompletarUnidade.limparCampo = true;'
. ' objAutoCompletarUnidade.prepararExecucao = function(){'
. ' if (document.getElementById(\'selRepoEstruturas\').selectedIndex==-1){'
. ' alert(\'Nenhum Repositório de Estruturas selecionado.\');'
. ' return false;'
. ' }'
. ' return \'palavras_pesquisa=\'+document.getElementById(\'txtUnidade\').value+\'&id_repositorio=\'+document.getElementById(\'selRepoEstruturas\').value;'
. ' };'
. ' '
. ' objAutoCompletarUnidade.processarResultado = function(id,descricao,complemento){'
. ' if (id!=\'\'){ '
. ' objLupaUnidades.adicionar(id,descricao,document.getElementById(\'txtUnidade\'));'
. ' repo = document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value;'
. ' repo += (repo != \'\' ? "¥" : "") + id + "±" + descricao;'
. ' document.getElementById(\'hdnRepoEstruturas\' + document.getElementById(\'selRepoEstruturas\').value).value = repo;'
. ' }'
. ' };'
. ' '
. ' if (document.getElementById(\'selRepoEstruturas\').options.length){'
. ' document.getElementById(\'selRepoEstruturas\').disabled = false;'
. ' document.getElementById(\'selRepoEstruturas\').options[0].selected = true;'
. ' trocarRepoEstruturasRestricao();'
. ' };';


$strHtml = ''
. ' <div id="divRestricao" class="infraAreaDados" style="height:16em;">'
. ' <label id="lblRepoEstruturas" for="selRepoEstruturas" class="infraLabelOpcional">Restringir as Estruturas Organizacionais:</label>'
. ' <input type="text" id="txtRepoEstruturas" name="txtRepoEstruturas" class="infraText" />'
. ' <input type="hidden" id="hdnIdRepoEstruturas" name="hdnIdRepoEstruturas" class="infraText" value="" />'
. ' <select id="selRepoEstruturas" name="selRepoEstruturas" size="6" multiple="multiple" class="infraSelect" onchange="trocarRepoEstruturasRestricao()" >'
. ' ' . $strItensSelRepoEstruturasRestricao . ''
. ' </select>'
. ' <div id="divOpcoesRepoEstruturas">'
// . ' <img id="imgLupaOrgaos" onclick="objLupaRepositoriosEstruturas.selecionar(700,500);" src="' . PaginaSEI::getInstance()->getIconePesquisar() . '" alt="Selecionar Órgãos" title="Selecionar Órgãos" class="infraImgNormal" />'
// . ' <br />'
. ' <img id="imgExcluirRepoEstruturas" onclick="objLupaRepositoriosEstruturas.remover();" src="' . PaginaSEI::getInstance()->getIconeRemover() . '" alt="Remover Estruturas Selecionados" title="Remover Estruturas Selecionadas" class="infraImgNormal" />'
. ' </div>'
. ' <input type="hidden" id="hdnRepoEstruturas" name="hdnRepoEstruturas" value="'.$arrRepoEstruturasSelecionados.'" />'
. ' <label id="lblUnidades" for="selUnidades" class="infraLabelOpcional">Restringir às Unidades:</label>'
. ' <input type="text" id="txtUnidade" name="txtUnidade" class="infraText" />'
. ' <input type="hidden" id="hdnIdUnidade" name="hdnIdUnidade" class="infraText" value="" />'
. ' <select id="selUnidades" name="selUnidades" size="6" multiple="multiple" class="infraSelect" >'
. ' ' . $strItensSelUnidadesRestricao . ''
. ' </select>'
. ' <div id="divOpcoesUnidades">'
// . ' <img id="imgLupaUnidades" onclick="objLupaUnidades.selecionar(700,500);" src="' . PaginaSEI::getInstance()->getIconePesquisar() . '" alt="Selecionar Unidades" title="Selecionar Unidades" class="infraImg" />'
// . ' <br />'
. ' <img id="imgExcluirUnidades" onclick="objLupaUnidades.remover();" src="' . PaginaSEI::getInstance()->getIconeRemover() . '" alt="Remover Unidades Selecionadas" title="Remover Unidades Selecionadas" class="infraImg" />'
. ' </div>'
. ' <input type="hidden" id="hdnUnidades" name="hdnUnidades" value="'.$arrUnidadesSelecionadas.'" />'
. ' ' . $strHtmlRepoEstruturasUnidades . ''
. ' </div>';

} catch (Exception $e) {
// não grava nada e não retorna objeto restrição mapeamento de unidades
}
}
}
7 changes: 6 additions & 1 deletion src/pen_map_envio_parcial_cadastrar.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,9 +74,14 @@
$objDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
$objDTO->setNumIdEstrutura($numIdRepositorio);
$objDTO->setStrStrEstrutura($txtRepositorioEstruturas);

if (!empty($numIdUnidadePen)) {
$objDTO->setNumIdUnidadePen($numIdUnidadePen);
$objDTO->setStrStrUnidadePen($strUnidadePen);
}

if (empty($numIdUnidadePen)) {
$objDTO->setNumIdUnidadePen(null);
}

$messagem = TITULO_PAGINA . " cadastrado com sucesso.";
Expand All @@ -92,7 +97,7 @@
}
$objPenRestricaoEnvioComponentesDigitaisRN->cadastrar($objDTO);
}
$objPaginaSEI->adicionarMensagem($messagem, InfraPagina::$TIPO_MSG_AVISO);
$objPaginaSEI->adicionarMensagem($messagem, 5);
header('Location: ' . $objSessaoSEI->assinarLink(
'controlador.php?acao=pen_map_envio_parcial_listar&acao_=' . $_GET['acao_']
));
Expand Down
41 changes: 30 additions & 11 deletions src/rn/ExpedirProcedimentoRN.php
Original file line number Diff line number Diff line change
Expand Up @@ -513,26 +513,45 @@ private function construirCabecalho(ExpedirProcedimentoDTO $objExpedirProcedimen
);
}

/**
* Verifica se a unidade tem mapeamento de apenas envio de componentes digitais pendentes
*
* @param $numIdRepositorioDestino
* @param $numIdUnidadeDestino
* @return bool
*/
private function enviarApenasComponentesDigitaisPendentes($numIdRepositorioDestino, $numIdUnidadeDestino)
{
$objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
$objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidadePen();
$objPenRestricaoEnvioComponentesDigitaisDTO->setNumIdEstrutura($numIdRepositorioDestino);
$objEnvioParcialDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
$objEnvioParcialDTO->retNumIdEstrutura();
$objEnvioParcialDTO->retNumIdUnidadePen();
$objEnvioParcialDTO->setNumIdEstrutura($numIdRepositorioDestino);
$objEnvioParcialDTO->setNumIdUnidadePen(null);

$objEnvioParcialRN = new PenRestricaoEnvioComponentesDigitaisRN();
$objEnvioParcialDTO = $objEnvioParcialRN->consultar($objEnvioParcialDTO);
if (!is_null($objEnvioParcialDTO)) {
return true;
}

$objEnvioParcialDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
$objEnvioParcialDTO->retNumIdEstrutura();
$objEnvioParcialDTO->retNumIdUnidadePen();
$objEnvioParcialDTO->setNumIdEstrutura($numIdRepositorioDestino);

$objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN();
$arrObjPenRestricaoEnvioComponentesDigitaisDTO =
$objPenRestricaoEnvioComponentesDigitaisRN->listar($objPenRestricaoEnvioComponentesDigitaisDTO);
$objEnvioParcialRN = new PenRestricaoEnvioComponentesDigitaisRN();
$arrObjEnvioParcialDTO = $objEnvioParcialRN->listar($objEnvioParcialDTO);

if (!is_null($arrObjPenRestricaoEnvioComponentesDigitaisDTO) && count($arrObjPenRestricaoEnvioComponentesDigitaisDTO) > 0) {
if (count($arrObjPenRestricaoEnvioComponentesDigitaisDTO) > 1) {
if (!is_null($arrObjEnvioParcialDTO) && count($arrObjEnvioParcialDTO) > 0) {
if (count($arrObjEnvioParcialDTO) > 1) {
$arrIdUnidadesParaEnvioPendentes = array();
foreach ($arrObjPenRestricaoEnvioComponentesDigitaisDTO as $value) {
foreach ($arrObjEnvioParcialDTO as $value) {
$arrIdUnidadesParaEnvioPendentes[] = $value->getNumIdUnidadePen();
}

return in_array($numIdUnidadeDestino, $arrIdUnidadesParaEnvioPendentes);
} elseif (!empty($arrObjPenRestricaoEnvioComponentesDigitaisDTO[0]->getNumIdUnidadePen())) {
return $arrObjPenRestricaoEnvioComponentesDigitaisDTO[0]->getNumIdUnidadePen() == $numIdUnidadeDestino;
} elseif (!empty($arrObjEnvioParcialDTO[0]->getNumIdUnidadePen())) {
return $arrObjEnvioParcialDTO[0]->getNumIdUnidadePen() == $numIdUnidadeDestino;
}

return true;
Expand Down
52 changes: 40 additions & 12 deletions src/rn/PenHipoteseLegalRN.php
Original file line number Diff line number Diff line change
@@ -1,28 +1,56 @@
<?php

require_once DIR_SEI_WEB.'/SEI.php';
require_once DIR_SEI_WEB . '/SEI.php';

/**
* Description of PenHipoteseLegalRN
*
* @author michael
*/
class PenHipoteseLegalRN extends InfraRN
class PenHipoteseLegalRN extends InfraRN
{

protected function inicializarObjInfraIBanco(){
return BancoSEI::getInstance();
/**
* Inicializador de banco de dados
*
* @return object
*/
protected function inicializarObjInfraIBanco()
{
return BancoSEI::getInstance();
}


/**
* Listar hipoteses legais
*
* @param PenHipoteseLegalDTO $objDTO
* @return array
* @throws InfraException
*/
protected function listarConectado(PenHipoteseLegalDTO $objDTO)
{
{
try {
$objBD = new GenericoBD($this->inicializarObjInfraIBanco());
return $objBD->listar($objDTO);
} catch (Exception $e) {
throw new InfraException('Erro listando hipotese legal.', $e);
}
}

/**
* Consultar hipotese legal
*
* @param PenHipoteseLegalDTO $objDTO
* @return PenHipoteseLegalDTO
* @throws InfraException
*/
protected function consultarControlado(PenHipoteseLegalDTO $objDTO)
{
try {
//SessaoSEI::getInstance()->validarAuditarPermissao('email_sistema_excluir', __METHOD__, $arrObjEmailSistemaDTO);
$objBD = new GenericoBD($this->inicializarObjInfraIBanco());
return $objBD->listar($objDTO);
}
catch (Exception $e) {
throw new InfraException('Erro excluindo E-mail do Sistema.', $e);
$objBD = new GenericoBD($this->inicializarObjInfraIBanco());
return $objBD->consultar($objDTO);
} catch (Exception $e) {
throw new InfraException('Erro consultando hipotese legal.', $e);
}
}
}
Loading

0 comments on commit af9e1aa

Please sign in to comment.