~~ODT~~
Dimensionar Força de Trabalho
Este caso de uso está tratado em Força de Trabalho.
Os responsáveis por uma unidade de lotação terão acesso a esse caso de uso.
Principais Regras de Negócio
- RN01 - Quando o usuário é um gestor organizacional, a busca por Unidade Gestora só irá exibir as unidades gestoras que contenham unidades filhas com servidores lotados. (60945 - v4.9.0)
Plano de Teste
Sistema: SIGRH
Módulo: Portal do Servidor
Link(s): Chefia de Unidade → Dimensionamento → Força de Trabalho
Usuário: mirian, alc
Papel que usuário deve ter: SigrhPapeis.GESTOR_DIMENSIONAMENTO, SipacPapeis.GESTOR_ORGANIZACIONAL
Cenários de Teste
Alterar a localização de um servidor neste UC e em seguida averiguar se a localização foi corretamente alterada em:
- Menu Servidor → Chefia de Unidade → Dimensionamento → Localização → Localizar servidor
O seguinte link é importante para realizar os testes:
- Menu Servidor → Chefia da Unidade → Dimensionamento → Força do Trabalho
- Chefia da Unidade → Outros → Dimensionamento → Força do Trabalho
- Dimensionamento → Operações → Força do Trabalho
Para validar a RN03, realize o cadastro do plano individual de trabalho para um servidor (Menu Servidor → Planejamento → Plano Individual de Trabalho), após o cadastro realize o dimensionamento do servidor (Menu Servidor → Localização → Localizar Servidor) e altere a localização ao qual foi feito o plano individual de trabalho do servidor. Esta regra de negócio é válida apenas para dimensionamento com localização vinculada ao processo de avaliação.
Dados para o Teste
No cadastro de pessoal terceirizado, o combo contrato é populado a partir da unidade gestora e da unidade de lotação subordinada selecionadas no formulário anterior a este formulário. Então, caso não tenha nenhum contrato para a unidade selecionada, o combo contrato estará vazio. Para consultar as unidades em que existe contrato, use a consulta sql:
SELECT DISTINCT c.id, c.numero AS "N°", c.ano AS "Ano", c.data_inicio AS "Data de Início", c.data_fim AS "Data de Término" , u.nome AS "Unidade de Lotação Subordinada", u.id_unidade AS "ID Unidade de Lotação Subordinada", ug.nome AS "Unidade Gestora", mc.id_mao_obra_contratada AS "ID Mão de Obra Contratada" FROM contratos.contrato c JOIN contratos.mao_obra_contratada mc ON c.id=mc.id_contrato LEFT JOIN contratos.mao_obra_unidade_beneficiada m USING(id_mao_obra_contratada) LEFT JOIN contratos.unidade_beneficiada ub ON ub.id=m.id_unidade_beneficiada LEFT JOIN comum.unidade u ON ub.id_unidade = u.id_unidade LEFT JOIN comum.unidade ug ON c.id_unidade_gestora = ug.id_unidade WHERE (c.id_sub_tipo=3 OR c.id_sub_tipo=5);
Para considerar apenas os contratos vigentes:
SELECT DISTINCT c.id, c.numero AS "N°", c.ano AS "Ano", c.data_inicio AS "Data de Início", c.data_fim AS "Data de Término" , u.nome AS "Unidade de Lotação Subordinada", u.id_unidade AS "ID Unidade de Lotação Subordinada", ug.nome AS "Unidade Gestora", mc.id_mao_obra_contratada AS "ID Mão de Obra Contratada" FROM contratos.contrato c JOIN contratos.mao_obra_contratada mc ON c.id=mc.id_contrato LEFT JOIN contratos.mao_obra_unidade_beneficiada m USING(id_mao_obra_contratada) LEFT JOIN contratos.unidade_beneficiada ub ON ub.id=m.id_unidade_beneficiada LEFT JOIN comum.unidade u ON ub.id_unidade = u.id_unidade LEFT JOIN comum.unidade ug ON c.id_unidade_gestora = ug.id_unidade WHERE (c.id_sub_tipo=3 OR c.id_sub_tipo=5) AND c.data_fim>= now();
Para consultar os contratos com as quantidades de vagas:
SELECT mb.id_mao_obra_contratada AS "ID Mão de ObraContratada", mb.quantidade AS "Quant. Vagas Para Contrato", u.id_unidade AS "ID Unidade", u.nome AS "Unidade de Lotação" FROM contratos.mao_obra_unidade_beneficiada mb INNER JOIN contratos.unidade_beneficiada ub ON mb.id_unidade_beneficiada=ub.id INNER JOIN comum.unidade u ON ub.id_unidade=u.id_unidade INNER JOIN contratos.mao_obra_contratada mc ON mb.id_mao_obra_contratada=mc.id_mao_obra_contratada;
Para consultar a quantidade de vagas estipulada no contrato a partir da mão de obra e unidade selecionadas (Substitua os ? respectivamente pelo ID da mão de obra contratada e ID da unidade de lotação subordinada na qual será feita o dimensionamento):
SELECT mb.id_mao_obra_contratada AS "ID Mão de ObraContratada", mb.quantidade AS "Quant. Vagas Para Contrato", u.id_unidade AS "ID Unidade", u.nome AS "Unidade de Lotação" FROM contratos.mao_obra_unidade_beneficiada mb INNER JOIN contratos.unidade_beneficiada ub ON mb.id_unidade_beneficiada=ub.id INNER JOIN comum.unidade u ON ub.id_unidade=u.id_unidade INNER JOIN contratos.mao_obra_contratada mc ON mb.id_mao_obra_contratada=mc.id_mao_obra_contratada WHERE mc.id_mao_obra_contratada=? AND u.id_unidade=?;
Consulta de servidores não ativos:
SELECT * FROM rh.servidor WHERE id_ativo != 1
Consulta de unidades sem servidores alocados:
SELECT DISTINCT u.* FROM comum.unidade u EXCEPT SELECT DISTINCT u.* FROM comum.unidade u JOIN rh.servidor s ON (s.id_unidade=u.id_unidade)
Consulta de unidades com servidores alocados:
SELECT * FROM comum.unidade u JOIN rh.servidor s ON (s.id_unidade=u.id_unidade)