SELECT codigo_unidade, nome, sigla,nome_capa FROM comum.unidade WHERE organizacional = true AND id_tipo_organizacional = 7 AND id_gestora = 1424 AND id_classificacao_unidade = 4
AND id_nivel_organizacional = 2 AND id_unidade NOT IN (
SELECT id_unidade FROM comum.unidade WHERE id_unidade IN
(SELECT DISTINCT u.id_unidade FROM comum.unidade u, comum.usuario us, comum.permissao pe, comum.papel pa
WHERE us.id_unidade = u.id_unidade AND pe.id_usuario = us.id_usuario AND pa.id = pe.id_papel AND pa.id = 6
union SELECT DISTINCT u.id_unidade FROM comum.unidade u, comum.usuario_unidade us, comum.permissao pe, comum.papel pa
WHERE us.id_unidade = u.id_unidade AND pe.id_usuario = us.id_usuario AND pa.id = pe.id_papel AND pa.id = 6 AND u.organizacional = true ) )
Pra saber o radical correto que o sistema informará ao documento, primeiro devemos saber se o parâmetro NUMERO_RADICAL_PADRAO_PROTOCOLO está presente no sistema, para isso usamos a consulta:
SELECT p.nome, p.valor AS radical
FROM comum.parametro p
WHERE p.nome = 'NUMERO_RADICAL_PADRAO_PROTOCOLO'
Onde seu valor será o radical a ser associado ao documento pelo sistema. Caso este não esteja presente, devemos saber a unidade do usuário que realiza o cadastro. Sabendo isso, podemos procurar a unidade protocolizadora responsável por esta unidade, usando recursivamente a consulta:
SELECT u.radical, u.nome, u.codigo_unidade, u.unidade_responsavel, u.id_unidade
FROM comum.unidade u
WHERE u.id_unidade =
O valor recursivo será o identificador da unidade responsável.
As condições de parada são:
- A coluna radical não esteja nula, cujo valor será o radical correto para o processo.
- A coluna radical esteja nula e o identificador da unidade seja igual ao identificador da unidade responsável. Nesse caso, o usuário é encaminhado para uma página de erro de negocio onde será informado que para prosseguir a unidade do usuário deverá ser ou apresentar uma unidade responsável protocolizadora.
Para saber o identificador da unidade do usuário, podemos usar:
SELECT u.id_unidade, u.codigo_unidade, u.nome
FROM comum.unidade u
WHERE u.codigo_unidade =
O radical de uma unidade pode ser cadastrado pelo SIGAdim, no [[desenvolvimento:especificacoes:sigadmin:casos_de_uso:gestao:unidades_administrativas_academicas:cadastrar_unidade | cadastro/alteração de unidades]].
Para a **RN02**, podemos usar:
* Para encontrar usuários com a permissão de cadastrar protocolo e que apresentam mais de uma unidade, usamos :
SELECT pa.nome, u.login
FROM comum.usuario_unidade uu
JOIN comum.usuario u ON u.id_usuario = uu.id_usuario
JOIN comum.pessoa p ON p.id_pessoa = u.id_pessoa
JOIN comum.unidade un ON un.id_unidade = uu.id_unidade
JOIN comum.permissao pe ON pe.id_usuario = u.id_usuario
JOIN comum.papel pa ON pa.id = pe.id_papel
WHERE pe.id_papel = 6
GROUP BY pe.id_unidade_papel, pa.nome, u.login, uu.id_usuario
ORDER BY u.login
* Para saber quais das unidades o usuário tem permissão de cadastrar protocolo, usamos:
SELECT pa.nome, u.login, un.codigo_unidade, un.nome
FROM comum.usuario u
JOIN comum.permissao pe ON pe.id_usuario = u.id_usuario
JOIN comum.papel pa ON pa.id = pe.id_papel
JOIN comum.unidade un ON un.id_unidade = pe.id_unidade_papel
WHERE u.login like ''
AND pe.id_papel = 6
Para alterar os parâmetros da **RN03** podemos usar:
UPDATE comum.parametro SET valor = 'true' WHERE nome = 'UTILIZA_CLASSIFICACAO_CONARQ'
Para alterar os parâmetros da **RN05** podemos usar:
UPDATE comum.parametro SET valor = 'true' WHERE nome = 'PERMITE_SUPORTE_PROTOCOLO'