diff --git a/src/PENIntegracao.php b/src/PENIntegracao.php
index bd324c286..bc13607ff 100755
--- a/src/PENIntegracao.php
+++ b/src/PENIntegracao.php
@@ -1,7 +1,7 @@
0) {
$xml = self::gerarXMLItensArrInfraDTOAutoCompletar($arrObjEstruturaDTO, 'NumeroDeIdentificacaoDaEstrutura', 'Nome');
} else {
- return ' ';
+ return ' ';
}
break;
diff --git a/src/bd/PenRestricaoEnvioComponentesDigitaisBD.php b/src/bd/PenRestricaoEnvioComponentesDigitaisBD.php
new file mode 100755
index 000000000..7be430f30
--- /dev/null
+++ b/src/bd/PenRestricaoEnvioComponentesDigitaisBD.php
@@ -0,0 +1,10 @@
+adicionarAtributoTabela(InfraDTO::$PREFIXO_DBL, 'Id', 'id');
+ $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdEstrutura', 'id_estrutura');
+ $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'StrEstrutura', 'str_estrutura');
+ $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidadeRh', 'id_unidade_rh');
+ $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_STR, 'StrUnidadeRh', 'str_unidade_rh');
+ $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUsuario', 'id_usuario');
+ $this->adicionarAtributoTabela(InfraDTO::$PREFIXO_NUM, 'IdUnidade', 'id_unidade');
+
+ $this->configurarPK('Id', InfraDTO::$TIPO_PK_NATIVA);
+
+ $this->configurarFK('IdUsuario', 'usuario', 'id_usuario');
+ $this->configurarFK('IdUnidade', 'unidade', 'id_unidade');
+ }
+}
diff --git a/src/pen_map_restricao_envio_comp_digitais_cadastrar.php b/src/pen_map_restricao_envio_comp_digitais_cadastrar.php
new file mode 100755
index 000000000..98e86d2d2
--- /dev/null
+++ b/src/pen_map_restricao_envio_comp_digitais_cadastrar.php
@@ -0,0 +1,501 @@
+setBolLigado(true);
+//InfraDebug::getInstance()->setBolDebugInfra(true);
+//InfraDebug::getInstance()->limpar();
+//////////////////////////////////////////////////////////////////////////////
+
+$objSessaoSEI = SessaoSEI::getInstance();
+$objPaginaSEI = PaginaSEI::getInstance();
+$objDebug = InfraDebug::getInstance();
+$objInfraException = new InfraException();
+
+try {
+ $objSessaoSEI->validarLink();
+ $objSessaoSEI->validarPermissao('pen_map_restricao_envio_comp_digitais_listar');
+
+ $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN();
+
+ $strLinkValidacao = $objPaginaSEI->formatarXHTML($objSessaoSEI->assinarLink(
+ 'controlador.php?acao=pen_map_restricao_envio_comp_digitais_salvar&acao_='
+ . $_GET['acao']
+ . $strParametros
+ ));
+
+ $disabilitarVisualizar = "";
+ switch ($_GET['acao']) {
+ case 'pen_map_restricao_envio_comp_digitais_salvar':
+ $acao = !empty($id) ?
+ 'pen_map_restricao_envio_comp_digitais_atualizar' :
+ 'pen_map_restricao_envio_comp_digitais_cadastrar';
+
+ if (empty($_POST['selRepositorioEstruturas']) || empty($_POST['txtRepositorioEstruturas']) || $_POST['txtRepositorioEstruturas'] == "0") {
+ $objPaginaSEI->adicionarMensagem('O Repositório de Estruturas Organizacionais não foi selecionado', InfraPagina::$TIPO_MSG_AVISO);
+ header('Location: '.$objSessaoSEI->assinarLink('controlador.php?acao='.$acao.'&acao_='.$_GET['acao_']));
+ exit(0);
+ }
+ if (empty($_POST['hdnIdUnidade']) || empty($_POST['txtUnidade']) || $_POST['txtUnidade'] == "0") {
+ $objPaginaSEI->adicionarMensagem('O Órgao não foi selecionado.', InfraPagina::$TIPO_MSG_AVISO);
+ header('Location: '.$objSessaoSEI->assinarLink('controlador.php?acao='.$acao.'&acao_='.$_GET['acao_']));
+ exit(0);
+ }
+
+ $numIdUnidadeRh = $_POST['hdnIdUnidade'];
+ $strUnidadeRh = $_POST['txtUnidade'];
+ $numIdRepositorio = $_POST['selRepositorioEstruturas'];
+ $txtRepositorioEstruturas = $_POST['txtRepositorioEstruturas'];
+
+ $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
+ $objDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual());
+ $objDTO->setNumIdEstrutura($numIdRepositorio);
+ $objDTO->setNumIdUnidadeRh($numIdUnidadeRh);
+ if (!empty($id)) {
+ $objDTO->setDblId(array($id), InfraDTO::$OPER_NOT_IN);
+ }
+ $objDTO->setNumMaxRegistrosRetorno(1);
+
+ $objDTO = $objPenRestricaoEnvioComponentesDigitaisRN->contar($objDTO);
+ if ($objDTO > 0) {
+ $objPaginaSEI->adicionarMensagem(
+ 'Cadastro de relacionamento entre órgãos já existente', InfraPagina::$TIPO_MSG_ERRO
+ );
+ header('Location: '
+ . $objSessaoSEI->assinarLink(
+ 'controlador.php?acao=pen_map_restricao_envio_comp_digitais_cadastrar&acao_='.$_GET['acao_']
+ )
+ );
+ exit(0);
+ }
+
+ $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
+ $objDTO->setNumIdUnidade($objSessaoSEI->getNumIdUnidadeAtual());
+ $objDTO->setNumIdUsuario($objSessaoSEI->getNumIdUsuario());
+ $objDTO->setNumIdEstrutura($numIdRepositorio);
+ $objDTO->setStrStrEstrutura($txtRepositorioEstruturas);
+ $objDTO->setNumIdUnidadeRh($numIdUnidadeRh);
+ $objDTO->setStrStrUnidadeRh($strUnidadeRh);
+
+ if (!is_null($id)) {
+ $objDTO->setDblId($id);
+ $objPenRestricaoEnvioComponentesDigitaisRN->alterar($objDTO);
+ $objPaginaSEI->adicionarMensagem(
+ 'Relacionamento atualizado com sucesso.', InfraPagina::$TIPO_MSG_INFORMACAO
+ );
+ } else {
+ $objPenRestricaoEnvioComponentesDigitaisRN->cadastrar($objDTO);
+ $objPaginaSEI->adicionarMensagem(
+ 'Relacionamento cadastrado com sucesso.', InfraPagina::$TIPO_MSG_INFORMACAO
+ );
+ }
+ header('Location: '
+ . $objSessaoSEI->assinarLink(
+ 'controlador.php?acao=pen_map_restricao_envio_comp_digitais_listar&acao_='.$_GET['acao_']
+ )
+ );
+ exit(0);
+ break;
+ case 'pen_map_restricao_envio_comp_digitais_visualizar':
+ case 'pen_map_restricao_envio_comp_digitais_atualizar':
+ case 'pen_map_restricao_envio_comp_digitais_cadastrar':
+ if (array_key_exists('Id', $_GET) && !empty($_GET['Id'])) {
+ $nomeTitle = 'Editar';
+ if ($_GET['acao'] == 'pen_map_restricao_envio_comp_digitais_visualizar') {
+ $nomeTitle = 'Visualizar';
+ }
+ $strTitulo = $nomeTitle . ' Mapeamento de Restrição de Envio de Componentes Digitais';
+ } else {
+ $strTitulo = 'Novo Mapeamento de Restrição de Envio de Componentes Digitais';
+ }
+
+ //Monta os botões do topo
+ if (
+ $_GET['acao'] != 'pen_map_restricao_envio_comp_digitais_visualizar'
+ && $objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_cadastrar')
+ && $objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_atualizar')
+ ) {
+ $arrComandos[] = '';
+ $arrComandos[] = '';
+ } else {
+ $disabilitarVisualizar = " disabled='disabled' ";
+ $arrComandos[] = '';
+ }
+
+ //Preparação dos dados para montagem da tela de expedição de processos
+ $objExpedirProcedimentosRN = new ExpedirProcedimentoRN();
+ $repositorios = $objExpedirProcedimentosRN->listarRepositoriosDeEstruturas();
+
+ if (array_key_exists('Id', $_GET) && !empty($_GET['Id'])) {
+ $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retDblId();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdEstrutura();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrEstrutura();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidadeRh();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrUnidadeRh();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUsuario();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidade();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->setDblId($_GET['Id']);
+
+ $objPenRestricaoEnvioComponentesDigitaisDTO =
+ $objPenRestricaoEnvioComponentesDigitaisRN->consultar($objPenRestricaoEnvioComponentesDigitaisDTO);
+
+ if(!is_null($objPenRestricaoEnvioComponentesDigitaisDTO)) {
+ $numIdRepositorio = $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdEstrutura();
+ $hdnIdUnidade = $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdUnidadeRh();
+ $strNomeUnidade = $objPenRestricaoEnvioComponentesDigitaisDTO->getStrStrUnidadeRh();
+ }
+ }
+
+ $idRepositorioSelecionado = (isset($numIdRepositorio)) ? $numIdRepositorio : '';
+ $strItensSelRepositorioEstruturas = InfraINT::montarSelectArray(
+ '', 'Selecione', $idRepositorioSelecionado, $repositorios
+ );
+
+ $strLinkAjaxProcedimentoApensado = $objSessaoSEI->assinarLink(
+ 'controlador_ajax.php?acao_ajax=pen_apensados_auto_completar_expedir_procedimento'
+ );
+ $strLinkUnidadesAdministrativasSelecao = $objSessaoSEI->assinarLink(
+ 'controlador.php?acao=pen_unidades_administrativas_externas_selecionar_expedir_procedimento'
+ . '&tipo_pesquisa=1&id_object=objLupaUnidadesAdministrativas&idRepositorioEstrutura=1'
+ );
+ break;
+ default:
+ throw new InfraException("Ação '" . $_GET['acao'] . "' não reconhecida.");
+ }
+
+ $strLinkAjaxUnidade = $objSessaoSEI->assinarLink('controlador_ajax.php?acao_ajax=pen_unidade_auto_completar_expedir_procedimento&acao=' . $_GET['acao']);
+} catch (Exception $e) {
+ $objPaginaSEI->adicionarMensagem(
+ 'Falha no cadastro do relacionamento. Consulte o log do SEI para mais informações.', InfraPagina::$TIPO_MSG_ERRO
+ );
+ throw new InfraException("Erro processando requisição de envio externo de processo", $e);
+}
+
+$objPaginaSEI->montarDocType();
+$objPaginaSEI->abrirHtml();
+$objPaginaSEI->abrirHead();
+$objPaginaSEI->montarMeta();
+$objPaginaSEI->montarTitle(':: ' . $objPaginaSEI->getStrNomeSistema() . ' - ' . $strTitulo . ' ::');
+$objPaginaSEI->montarStyle();
+
+?>
+
+montarJavaScript();
+?>
+
+fecharHead();
+$objPaginaSEI->abrirBody($strTitulo, 'onload="infraEfeitoTabelas(); inicializar();"');
+?>
+
+montarAreaDebug();
+$objPaginaSEI->fecharBody();
+$objPaginaSEI->fecharHtml();
+?>
\ No newline at end of file
diff --git a/src/pen_map_restricao_envio_comp_digitais_listar.php b/src/pen_map_restricao_envio_comp_digitais_listar.php
new file mode 100755
index 000000000..b29060db9
--- /dev/null
+++ b/src/pen_map_restricao_envio_comp_digitais_listar.php
@@ -0,0 +1,357 @@
+setBolLigado(false);
+InfraDebug::getInstance()->setBolDebugInfra(true);
+InfraDebug::getInstance()->limpar();
+
+$objPaginaSEI = PaginaSEI::getInstance();
+$objSessaoSEI = SessaoSEI::getInstance();
+
+$strProprioLink = 'controlador.php?acao='
+ . $_GET['acao']
+ . '&acao_origem='
+ . $_GET['acao_origem']
+ . '&acao_retorno='
+ . $_GET['acao_retorno'];
+
+try {
+ $objSessaoSEI->validarLink();
+ $objSessaoSEI->validarPermissao('pen_map_restricao_envio_comp_digitais_listar');
+
+ $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN();
+
+ //--------------------------------------------------------------------------
+ // Ações
+ if (array_key_exists('acao', $_GET)) {
+ $arrParam = array_merge($_GET, $_POST);
+ switch ($_GET['acao']) {
+ case 'pen_map_restricao_envio_comp_digitais_excluir':
+ if (array_key_exists('hdnInfraItensSelecionados', $arrParam) && !empty($arrParam['hdnInfraItensSelecionados'])) {
+ if (is_array($arrParam['hdnInfraItensSelecionados'])) {
+ $ids = explode(',', $arrParam['hdnInfraItensSelecionados']);
+ foreach ($ids as $key => $id) {
+ $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
+ $objDTO->setDblId($id);
+ $objPenRestricaoEnvioComponentesDigitaisRN->excluir($objDTO);
+ }
+ } else {
+ $objDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
+ $objDTO->setDblId($arrParam['hdnInfraItensSelecionados']);
+ $objPenRestricaoEnvioComponentesDigitaisRN->excluir($objDTO);
+ }
+ $objPaginaSEI->adicionarMensagem('Mapeamento excluído com sucesso.', InfraPagina::$TIPO_MSG_INFORMACAO);
+ header('Location: ' . SessaoSEI::getInstance()->assinarLink('controlador.php?acao=' . $_GET['acao_retorno'] . '&acao_origem=' . $_GET['acao_origem']));
+ exit(0);
+ } else {
+ throw new InfraException('Nenhum Registro foi selecionado para executar esta ação');
+ }
+ break;
+
+ case 'pen_map_restricao_envio_comp_digitais_listar':
+ // Ação padrão desta tela
+ break;
+
+ default:
+ throw new InfraException('Ação não permitida nesta tela');
+ }
+ }
+ //--------------------------------------------------------------------------
+
+ $strTitulo = 'Lista dos Mapeamentos de Restrição de Envio de Componentes Digitais';
+
+ $strBotaoEspeciePadrao = "";
+ if (SessaoSEI::getInstance()->verificarPermissao('pen_map_restricao_envio_comp_digitais_consultar')) {
+ $strBotaoEspeciePadrao = '';
+ }
+
+ if (SessaoSEI::getInstance()->verificarPermissao('pen_map_restricao_envio_comp_digitais_atribuir')) {
+ $bolPadraoNaoAtribuido = empty((new PenParametroRN())->getParametro("PEN_ESPECIE_DOCUMENTAL_PADRAO_ENVIO"));
+ $strClassePendencia = ($bolPadraoNaoAtribuido) ? "pendencia" : "";
+ $strAltPendencia = ($bolPadraoNaoAtribuido) ? "Pendente atribuição de espécie documental padrão para envio de processos" : "";
+ $strBotaoEspeciePadrao = '';
+ }
+
+ $arrComandos = array();
+ $btnPesquisar = '';
+ $btnNovo = '';
+ $btnExcluir = '';
+ $btnImprimir = '';
+
+ $arrComandos = array($btnPesquisar, $strBotaoEspeciePadrao, $btnNovo, $btnExcluir, $btnImprimir);
+ $arrComandosFinal = array($btnNovo, $btnExcluir, $btnImprimir);
+
+ $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retTodos(true);
+ $objPenRestricaoEnvioComponentesDigitaisDTO->setOrdDblId(InfraDTO::$TIPO_ORDENACAO_ASC);
+
+ if (array_key_exists('nome_estrutura', $_POST) && !empty($_POST['nome_estrutura'])) {
+ $objPenRestricaoEnvioComponentesDigitaisDTO->setStrStrEstrutura('%' . $_POST['nome_estrutura'] . '%', InfraDTO::$OPER_LIKE);
+ }
+
+ if (array_key_exists('nome_unidade', $_POST) && !empty($_POST['nome_unidade'])) {
+ $objPenRestricaoEnvioComponentesDigitaisDTO->setStrStrUnidadeRh('%' . $_POST['nome_unidade'] . '%', InfraDTO::$OPER_LIKE);
+ }
+
+ $objPaginaSEI->prepararOrdenacao(
+ $objPenRestricaoEnvioComponentesDigitaisDTO,
+ 'Id',
+ InfraDTO::$TIPO_ORDENACAO_ASC
+ );
+ $objPaginaSEI->prepararPaginacao($objPenRestricaoEnvioComponentesDigitaisDTO);
+
+ $arrObjPenRestricaoEnvioComponentesDigitaisDTO = $objPenRestricaoEnvioComponentesDigitaisRN->listar(
+ $objPenRestricaoEnvioComponentesDigitaisDTO
+ );
+
+ $objPaginaSEI->processarPaginacao($objPenRestricaoEnvioComponentesDigitaisDTO);
+ $numRegistros = count($arrObjPenRestricaoEnvioComponentesDigitaisDTO);
+
+ if (!empty($arrObjPenRestricaoEnvioComponentesDigitaisDTO)) {
+
+ $strResultado = '';
+ $strResultado .= '' . "\n";
+ $strResultado .= ''
+ . $objPaginaSEI->gerarCaptionTabela('estados do processo', $numRegistros)
+ . '';
+ $strResultado .= '';
+ $strResultado .= '' . $objPaginaSEI->getThCheck() . ' | ' . "\n";
+ $strResultado .= 'ID do Repositório | ' . "\n";
+ $strResultado .= 'Nome do Repositório | ' . "\n";
+ $strResultado .= 'ID da Unidade | ' . "\n";
+ $strResultado .= 'Nome da Unidade | ' . "\n";
+ $strResultado .= 'Ações | ' . "\n";
+ $strResultado .= '
' . "\n";
+ $strCssTr = '';
+
+ $index = 0;
+ foreach ($arrObjPenRestricaoEnvioComponentesDigitaisDTO as $objPenRestricaoEnvioComponentesDigitaisDTO) {
+
+ $strCssTr = ($strCssTr == 'infraTrClara') ? 'infraTrEscura' : 'infraTrClara';
+
+ $strResultado .= '';
+ $strResultado .= ''
+ . $objPaginaSEI->getTrCheck(
+ $index,
+ $objPenRestricaoEnvioComponentesDigitaisDTO->getDblId(),
+ ''
+ ) . ' | ';
+
+ $strResultado .= ''
+ . $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdEstrutura()
+ . ' | ';
+ $strResultado .= ''
+ . $objPenRestricaoEnvioComponentesDigitaisDTO->getStrStrEstrutura()
+ . ' | ';
+
+ $strResultado .= ''
+ . $objPenRestricaoEnvioComponentesDigitaisDTO->getNumIdUnidadeRh()
+ . ' | ';
+ $strResultado .= ''
+ . $objPenRestricaoEnvioComponentesDigitaisDTO->getStrStrUnidadeRh()
+ . ' | ';
+ $strResultado .= '';
+
+ if ($objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_visualizar')) {
+ $strResultado .= ' ';
+ }
+ if ($objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_atualizar')) {
+ $strResultado .= ' ';
+ }
+ if ($objSessaoSEI->verificarPermissao('pen_map_restricao_envio_comp_digitais_excluir')) {
+ $strResultado .= ' ';
+ }
+
+ $strResultado .= ' | ';
+ $strResultado .= '
' . "\n";
+
+ $index++;
+ }
+ $strResultado .= '
';
+ }
+} catch (InfraException $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();"');
+?>
+
+fecharBody(); ?>
+fecharHtml(); ?>
\ No newline at end of file
diff --git a/src/rn/ExpedirProcedimentoRN.php b/src/rn/ExpedirProcedimentoRN.php
index 8153c3eeb..fea3e4200 100755
--- a/src/rn/ExpedirProcedimentoRN.php
+++ b/src/rn/ExpedirProcedimentoRN.php
@@ -506,6 +506,30 @@ private function construirCabecalho(ExpedirProcedimentoDTO $objExpedirProcedimen
private function enviarApenasComponentesDigitaisPendentes($numIdRepositorioDestino, $numIdUnidadeDestino){
+ if (InfraUtil::compararVersoes(VERSAO_MODULO_PEN, ">=", "3.3.3")) {
+ $objPenRestricaoEnvioComponentesDigitaisDTO = new PenRestricaoEnvioComponentesDigitaisDTO();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retDblId();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdEstrutura();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrEstrutura();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidadeRh();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retStrStrUnidadeRh();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUsuario();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->retNumIdUnidade();
+ $objPenRestricaoEnvioComponentesDigitaisDTO->setNumIdEstrutura($numIdRepositorioDestino);
+ $objPenRestricaoEnvioComponentesDigitaisDTO->setNumIdUnidade(SessaoSEI::getInstance()->getNumIdUnidadeAtual());
+
+ $objPenRestricaoEnvioComponentesDigitaisRN = new PenRestricaoEnvioComponentesDigitaisRN();
+ $arrObjPenRestricaoEnvioComponentesDigitaisDTO =
+ $objPenRestricaoEnvioComponentesDigitaisRN->listar($objPenRestricaoEnvioComponentesDigitaisDTO);
+ if (!is_null($arrObjPenRestricaoEnvioComponentesDigitaisDTO) && count($arrObjPenRestricaoEnvioComponentesDigitaisDTO) > 0) {
+ $arrIdUnidadesParaEnvioPendentes = array();
+ foreach ($arrObjPenRestricaoEnvioComponentesDigitaisDTO as $value) {
+ $arrIdUnidadesParaEnvioPendentes[] = $value->getNumIdUnidadeRh();
+ }
+
+ return in_array($numIdUnidadeDestino, $arrIdUnidadesParaEnvioPendentes);
+ }
+ }
$bolResultado = false;
$arrObjEnviarDocumentosPendentes = ConfiguracaoModPEN::getInstance()->getValor("PEN", "EnviarApenasComponentesDigitaisPendentes", false);
$objParamEnviarDocumentosPendentes = !is_null($arrObjEnviarDocumentosPendentes) ? $arrObjEnviarDocumentosPendentes : false;
diff --git a/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php
new file mode 100755
index 000000000..3ea9f4409
--- /dev/null
+++ b/src/rn/PenRestricaoEnvioComponentesDigitaisRN.php
@@ -0,0 +1,146 @@
+validarAuditarPermissao(
+ 'pen_map_restricao_envio_comp_digitais_listar',
+ __METHOD__,
+ $objDTO
+ );
+ $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->getObjInfraIBanco());
+ return $objBD->listar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro listando Unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para consulta de dados.
+ * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function consultarControlado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao(
+ 'pen_map_restricao_envio_comp_digitais_visualizar',
+ __METHOD__,
+ $objDTO
+ );
+ $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance());
+ return $objBD->consultar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro consultar mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para alteração de dados.
+ * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function alterarControlado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao(
+ 'pen_map_restricao_envio_comp_digitais_atualizar',
+ __METHOD__,
+ $objDTO
+ );
+ $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance());
+ return $objBD->alterar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro alterando mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para cadastro de dados.
+ * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function cadastrarConectado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao(
+ 'pen_map_restricao_envio_comp_digitais_salvar',
+ __METHOD__,
+ $objDTO
+ );
+ $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance());
+ return $objBD->cadastrar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro cadastrando mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para exclusão de dados.
+ * @param PenRestricaoEnvioComponentesDigitaisDTO $objDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function excluirControlado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ SessaoSEI::getInstance()->validarAuditarPermissao(
+ 'pen_map_restricao_envio_comp_digitais_excluir',
+ __METHOD__,
+ $objDTO
+ );
+ $objBD = new PenRestricaoEnvioComponentesDigitaisBD(BancoSEI::getInstance());
+ return $objBD->excluir($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro excluindo mapeamento de unidades.', $e);
+ }
+ }
+
+ /**
+ * Método utilizado para contagem de unidades mapeadas
+ * @param PenRestricaoEnvioComponentesDigitaisDTO $objUnidadeDTO
+ * @return array
+ * @throws InfraException
+ */
+ protected function contarConectado(PenRestricaoEnvioComponentesDigitaisDTO $objDTO)
+ {
+ try {
+ //Valida Permissao
+ $objBD = new PenRestricaoEnvioComponentesDigitaisBD($this->getObjInfraIBanco());
+ return $objBD->contar($objDTO);
+ } catch (Exception $e) {
+ throw new InfraException('Erro contando mapeamento de unidades.', $e);
+ }
+ }
+}
diff --git a/src/scripts/sei_atualizar_versao_modulo_pen.php b/src/scripts/sei_atualizar_versao_modulo_pen.php
index 00a3d0cc2..7c4b27526 100755
--- a/src/scripts/sei_atualizar_versao_modulo_pen.php
+++ b/src/scripts/sei_atualizar_versao_modulo_pen.php
@@ -267,6 +267,8 @@ protected function atualizarVersaoConectado()
$this->instalarV3031();
case '3.3.1':
$this->instalarV3032();
+ case '3.3.2':
+ $this->instalarV3033();
break; // Ausência de [break;] proposital para realizar a atualização incremental de versões
@@ -2527,11 +2529,55 @@ protected function instalarV3030() {
protected function instalarV3031() {
$this->atualizarNumeroVersao("3.3.1");
+ }
+
+
+ protected function instalarV3032() {
+ $this->atualizarNumeroVersao("3.3.2");
+ }
+
+ protected function instalarV3033()
+ {
+ $objInfraBanco = BancoSEI::getInstance();
+ $objMetaBD = $this->objMeta;
+
+ $objMetaBD->criarTabela(array(
+ 'tabela' => 'md_pen_envio_comp_digitais',
+ 'cols' => array(
+ 'id' => array($objMetaBD->tipoNumeroGrande(), PenMetaBD::NNULLO),
+ 'id_estrutura' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'str_estrutura' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO),
+ 'id_unidade_rh' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'str_unidade_rh' => array($objMetaBD->tipoTextoGrande(), PenMetaBD::NNULLO),
+ 'id_usuario' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO),
+ 'id_unidade' => array($objMetaBD->tipoNumero(), PenMetaBD::NNULLO)
+ ),
+ 'pk' => array('cols' => array('id')),
+ 'uk' => array('id_estrutura', 'id_unidade_rh', 'id_unidade'),
+ 'fks' => array(
+ 'usuario' => array('id_usuario', 'id_usuario'),
+ 'unidade' => array('id_unidade', 'id_unidade'),
+ )
+ ));
+
+ # Criar sequencia para tramite em bloco
+
+ $objInfraSequenciaRN = new InfraSequenciaRN();
+ $objInfraSequenciaDTO = new InfraSequenciaDTO();
+
+ //Sequência: md_pen_seq_tramita_em_bloco
+ $rs = BancoSEI::getInstance()->consultarSql('select max(id) as total from md_pen_envio_comp_digitais');
+ $numMaxId = isset($rs[0]['total']) ? $rs[0]['total'] : 0;
+
+ BancoSEI::getInstance()->criarSequencialNativa('md_pen_seq_envio_comp_digitais', $numMaxId + 1);
+ $objInfraSequenciaDTO->setStrNome('md_pen_envio_comp_digitais');
+ $objInfraSequenciaDTO->retStrNome();
+ $arrObjInfraSequenciaDTO = $objInfraSequenciaRN->listar($objInfraSequenciaDTO);
+ $objInfraSequenciaRN->excluir($arrObjInfraSequenciaDTO);
+
+ $this->atualizarNumeroVersao("3.3.3");
}
-protected function instalarV3032() {
- $this->atualizarNumeroVersao("3.3.2");
-}
}
diff --git a/src/scripts/sip_atualizar_versao_modulo_pen.php b/src/scripts/sip_atualizar_versao_modulo_pen.php
index 055aa3887..1dd480f16 100755
--- a/src/scripts/sip_atualizar_versao_modulo_pen.php
+++ b/src/scripts/sip_atualizar_versao_modulo_pen.php
@@ -286,7 +286,10 @@ protected function atualizarVersaoConectado()
$this->instalarV3031();
case '3.3.1':
$this->instalarV3032();
-
+ case '3.3.2':
+ $this->instalarV3033();
+
+
break; // Ausência de [break;] proposital para realizar a atualização incremental de versões
default:
$this->finalizar('VERSAO DO MÓDULO JÁ CONSTA COMO ATUALIZADA');
@@ -1825,6 +1828,54 @@ protected function instalarV3032()
{
$this->atualizarNumeroVersao("3.3.2");
}
+
+ public function instalarV3033()
+ {
+ /* Corrige nome de menu de trâmite de documentos */
+ $objItemMenuBD = new ItemMenuBD(BancoSip::getInstance());
+
+ $numIdSistema = $this->getNumIdSistema('SEI');
+ $numIdMenu = $this->getNumIdMenu('Principal', $numIdSistema);
+
+ $objItemMenuDTO = new ItemMenuDTO();
+ $objItemMenuDTO->setNumIdSistema($numIdSistema);
+ $objItemMenuDTO->setNumIdMenu($numIdMenu);
+ $objItemMenuDTO->setStrRotulo('Administração');
+ $objItemMenuDTO->setNumMaxRegistrosRetorno(1);
+ $objItemMenuDTO->retNumIdItemMenu();
+
+ $objItemMenuDTO = $objItemMenuBD->consultar($objItemMenuDTO);
+
+ if (empty($objItemMenuDTO)) {
+ throw new InfraException('Menu "Administração" não foi localizado');
+ }
+
+ // Adicionar submenu
+ $this->logar('Atribuição de permissões do módulo ao perfil do SEI');
+
+ $numIdItemMenu = $this->criarMenu('Mapeamento de Envio Parcial', 40, $objItemMenuDTO->getNumIdItemMenu(), $numIdMenu, null, $numIdSistema);
+ $numIdRecurso = $this->criarRecurso('pen_map_restricao_envio_comp_digitais_listar', 'Listar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema);
+ $this->criarMenu('Restrição de Envio de Componentes Digitais', 20, $numIdItemMenu, $numIdMenu, $numIdRecurso, $numIdSistema);
+
+
+ $this->criarRecurso('pen_map_restricao_envio_comp_digitais_salvar', 'Salvar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema);
+ $this->criarRecurso('pen_map_restricao_envio_comp_digitais_excluir', 'Excluir Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema);
+ $this->criarRecurso('pen_map_restricao_envio_comp_digitais_cadastrar', 'Cadastro de Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema);
+ $this->criarRecurso('pen_map_restricao_envio_comp_digitais_atualizar', 'Atualizar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema);
+ $this->criarRecurso('pen_map_restricao_envio_comp_digitais_visualizar', 'Visualizar Mapeamentos de Restrição de Envio de Componentes Digitais', $numIdSistema);
+
+ $numIdSistemaSei = $this->getNumIdSistema('SEI');
+ $numIdPerfilSeiBasico = ScriptSip::obterIdPerfil($numIdSistemaSei, "Básico");
+ ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_listar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_salvar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_cadastrar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_atualizar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_visualizar');
+ ScriptSip::adicionarRecursoPerfil($numIdSistemaSei, $numIdPerfilSeiBasico, 'pen_map_restricao_envio_comp_digitais_excluir');
+
+ // Nova versão
+ $this->atualizarNumeroVersao("3.3.3");
+ }
}
diff --git a/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php b/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php
new file mode 100644
index 000000000..e94a83b9f
--- /dev/null
+++ b/tests_super/funcional/src/paginas/PaginaCadastroMapEnvioCompDigitais.php
@@ -0,0 +1,97 @@
+selectRepositorio('RE CGPRO');
+ $this->selectUnidade('Fabrica-org1');
+ $this->salvar();
+ }
+
+ /**
+ * Seleciona repositório por sigla
+ *
+ * @param string $siglaRepositorio
+ * @return string
+ */
+ private function selectRepositorio($siglaRepositorio)
+ {
+ $this->repositorioSelect = $this->test->select($this->test->byId('selRepositorioEstruturas'));
+
+ if(isset($siglaRepositorio)){
+ $this->repositorioSelect->selectOptionByLabel($siglaRepositorio);
+ }
+
+ return $this->test->byId('selRepositorioEstruturas')->value();
+ }
+
+ /**
+ * Seleciona unidade por nome
+ *
+ * @param string $nomeUnidade
+ * @param ?string $hierarquia
+ * @return string
+ */
+ private function selectUnidade($nomeUnidade, $hierarquia = null)
+ {
+ $this->unidadeInput = $this->test->byId('txtUnidade');
+ $this->unidadeInput->value($nomeUnidade);
+ $this->test->keys(Keys::ENTER);
+ $this->test->waitUntil(function($testCase) use($hierarquia) {
+ $bolExisteAlerta=null;
+ $nomeUnidade = $testCase->byId('txtUnidade')->value();
+ if(!empty($hierarquia)){
+ $nomeUnidade .= ' - ' . $hierarquia;
+ }
+
+ try{
+ $bolExisteAlerta=$this->alertTextAndClose();
+ if($bolExisteAlerta!=null)$this->test->keys(Keys::ENTER);
+ }catch(Exception $e){}
+
+ $testCase->byPartialLinkText($nomeUnidade)->click();
+ return true;
+ }, PEN_WAIT_TIMEOUT);
+
+ return $this->unidadeInput->value();
+ }
+
+ /**
+ * Description
+ * @return void
+ */
+ public function novoMap()
+ {
+ $this->test->byId("btnNovo")->click();
+ }
+
+ /**
+ * Description
+ * @return void
+ */
+ private function salvar()
+ {
+ $this->test->byId("btnSalvar")->click();
+ }
+}
\ No newline at end of file
diff --git a/tests_super/funcional/tests/CenarioBaseTestCase.php b/tests_super/funcional/tests/CenarioBaseTestCase.php
index 82cf70203..1304ec818 100755
--- a/tests_super/funcional/tests/CenarioBaseTestCase.php
+++ b/tests_super/funcional/tests/CenarioBaseTestCase.php
@@ -38,6 +38,7 @@ class CenarioBaseTestCase extends Selenium2TestCase
protected $paginaAnexarProcesso = null;
protected $paginaCancelarDocumento = null;
protected $paginaTramitarProcessoEmLote = null;
+ protected $paginaCadastroMapEnvioCompDigitais = null;
public function setUpPage(): void
{
@@ -56,6 +57,7 @@ public function setUpPage(): void
$this->paginaCancelarDocumento = new PaginaCancelarDocumento($this);
$this->paginaMoverDocumento = new PaginaMoverDocumento($this);
$this->paginaTramitarProcessoEmLote = new PaginaTramitarProcessoEmLote($this);
+ $this->paginaCadastroMapEnvioCompDigitais = new PaginaCadastroMapEnvioCompDigitais($this);
$this->currentWindow()->maximize();
}
@@ -221,6 +223,18 @@ protected function acessarSistema($url, $siglaUnidade, $login, $senha)
$this->url($url);
PaginaLogin::executarAutenticacao($this, $login, $senha);
PaginaTeste::selecionarUnidadeContexto($this, $siglaUnidade);
+ $this->url($url);
+ }
+
+ protected function navegarPara($acao)
+ {
+ $this->frame(null);
+ $acao = "acao={$acao}";
+ $xpath = "//a[contains(@href, '$acao')]";
+ $link = $this->byXPath($xpath);
+ $url = $link->attribute('href');
+
+ $this->url($url);
}
protected function selecionarUnidadeInterna($unidadeDestino)
diff --git a/tests_super/funcional/tests/MapeamentoRestricaoEnvioComponentesDigitaisTest.php b/tests_super/funcional/tests/MapeamentoRestricaoEnvioComponentesDigitaisTest.php
new file mode 100644
index 000000000..ef961b71c
--- /dev/null
+++ b/tests_super/funcional/tests/MapeamentoRestricaoEnvioComponentesDigitaisTest.php
@@ -0,0 +1,42 @@
+definirContextoTeste(CONTEXTO_ORGAO_A);
+
+ $this->acessarSistema(
+ self::$remetente['URL'],
+ self::$remetente['SIGLA_UNIDADE'],
+ self::$remetente['LOGIN'],
+ self::$remetente['SENHA']
+ );
+
+ $this->navegarPara('pen_map_restricao_envio_comp_digitais_listar');
+ $this->paginaCadastroMapEnvioCompDigitais->novoMap();
+ sleep(5);
+ $this->paginaCadastroMapEnvioCompDigitais->novo();
+ sleep(5);
+
+ $this->assertTrue(true);
+ }
+}
\ No newline at end of file