DES:Pontus

De Wiki Unioeste NTI
Ir para: navegação, pesquisa

Lançamento da nova versão em Extjs e VRaptor: 16/11/2023

Desenvolvida por Gustavo Antonio Martini

Tabela de conteúdo

Requisitos Funcionais

[Requisito Funcional - 01] Menu Pontus

O sistema permite ao usuário acessar interfaces referentes aos pontos batidos, um funcionário comum tem acesso limitado, supervisores podem visualizar os pontos de setores diretamente abaixo deles.

Dependência: Nenhuma

Prioridade: Alta

[Requisito Funcional - 02] Verificação dos Pontos Batidos

O sistema permite ao usuário verificar os pontos batidos em determinado mês e ano.

Dependência: RF-01

Prioridade: Alta

[Requisito Funcional - 03] Impressão de Espelho do mês

O sistema possibilita ao usuário a impressão do espelho do mês selecionado.

Dependência: RF-01, RF-02

Prioridade: Alta

[Requisito Funcional - 04] Visualização de Escala

O sistema permite ao usuário a visualização da escala de trabalho mensal.

Dependência: RF-01

Prioridade: Alta

[Requisito Funcional - 05] Visualização de Setores

O sistema permite ao usuário, com permissões, visualizar os setores que tem funcionários supervisionados por ele.

Dependência: RF-01

Prioridade: Média

Casos de Uso

[Caso de Uso - 01] Visualizar Batidas de Horário

Objetivo no Contexto: O usuário poderá visualizar os seus pontos a partir de um ano e mês selecionados.

Escopo: Pontus.

Pré-condições: Conexão com a internet, Logado no sistema Pontus, ser funcionário da UNIOESTE.

Condição Final de Sucesso: O usuário consegue visualizar os horários de ponto.

Condição Final de Falha: N/A.

Ator Primário: usuário.


Cenário Principal de Sucesso

Passo 1: O usuário interage com a interface, selecionando a opção de <Ver minhas batidas>.

Passo 2: O sistema carrega quais anos e meses o usuário trabalhou.

Passo 3: O usuário seleciona o ano e mês de desejo para se obter as informações.

Passo 4: O sistema carrega do banco de dados as informações referentes ao mês selecionado.

Passo 5: O sistema exibe a listagem dos pontos batidos no mês/ano selecionado.


Extensões

< Sem casos de mudança de fluxo detectadas >


Informação Relacionada

Prioridade: Alta

Desempenho alvo: menos de um segundo.

Frequência: Entre quatro a oito acessos diários.

Observações: Nenhuma

[Caso de Uso - 02] Visualização do Espelho de horário

Objetivo no Contexto: O usuário poderá imprimir o espelho referente aos pontos batidos do mês selecionado.

Escopo: Pontus.

Pré-condições: Conexão com a internet, Logado no sistema Pontus, ser funcionário da UNIOESTE.

Condição Final de Sucesso: O usuário consegue imprimir o documento dos pontos batidos.

Condição Final de Falha: N/A.

Ator Primário: usuário.


Cenário Principal de Sucesso

Passo 1: O usuário interage com a interface, selecionando a impressão de espelho.

Passo 2: O sistema carrega quais anos e meses o usuário trabalhou.

Passo 3: O usuário seleciona o ano e mês de desejo para se obter as informações.

Passo 4: O sistema carrega do banco de dados as informações referentes ao mês selecionado.

Passo 5: O sistema exibe a listagem dos pontos batidos no mês/ano selecionado.

Passo 6: O usuário solicita ao sistema a impressão do espelho de ponto.

Passo 7: O sistema exibe a página para impressão do espelho de ponto.


Extensões

< Sem casos de mudança de fluxo detectadas >


Informação Relacionada

Prioridade: Alta

Desempenho alvo: um a três segundos.

Frequência: uma vez por semana.

Observações: Gerada pelo Relatum

[Caso de Uso - 03] Visualização de escala

Objetivo no Contexto: O usuário poderá verificar sua escala do seu setor e dos setores filhos ao seu.

Escopo: Pontus.

Pré-condições: Conexão com a internet, Logado no sistema Pontus, ser funcionário da UNIOESTE.

Condição Final de Sucesso: O usuário consegue visualizar sua escala.

Condição Final de Falha: N/A.

Ator Primário: usuário.


Cenário Principal de Sucesso

Passo 1: O usuário interage com a interface, selecionando a opção para visualizar sua escala.

Passo 2: O sistema apresenta uma página para seleção do setor de escala que o usuário deseja.

Passo 3: O usuário seleciona o setor desejado.

Passo 4: O usuário seleciona mês e ano que deseja visualizar a escala.

Passo 5: O sistema gera um relatório com as informações inseridas pelo usuário visualização de escala.

Passo 6: O sistema exibe o documento da escala conforme fora solicitado.


Extensões

< Sem casos de mudança de fluxo detectadas >


Informação Relacionada

Prioridade: Média

Desempenho alvo: quatro a vinte segundos.

Frequência: uma à quatro vezes por semana.

Observações: Gerada pelo Relatum

[Caso de Uso - 04] Visualização de pontos de funcionário subordinado

Objetivo no Contexto: O usuário poderá visualizar os pontos de seus subordinados a partir de um ano e mês selecionados.

Escopo: Pontus.

Pré-condições: Conexão com a internet, Logado no sistema Pontus, ser funcionário da UNIOESTE, o usuário deverá ter cargo que supervisiona outros funcionários.

Condição Final de Sucesso: O usuário consegue visualizar a escala do funcionário selecionado.

Condição Final de Falha: N/A.

Ator Primário: usuário.


Cenário Principal de Sucesso

Passo 1: O usuário interage com a interface, selecionando a opção de listar setores.

Passo 2: O sistema carrega do banco de dados os setores pelo qual o usuário é responsável.

Passo 3: O sistema exibe quais setores o usuário tem comando.

Passo 4: O usuário define qual mês e ano deseja visualizar as informações.

Passo 5: O sistema carrega do banco de dados os funcionários os funcionários subordinados.

Passo 6: O sistema exibe os funcionários do setor.

Passo 7: O usuário seleciona a opção <Ver batidas> do funcionário desejado. «Include» Visualizar Batidas de Horário

Passo 8: O sistema carrega do banco de dados as informações referentes ao mês, ano e funcionário selecionado.

Passo 9: O sistema exibe a listagem dos pontos batidos no mês/ano selecionado.


Extensões

Passo 4.a: O usuário seleciona um setor sobre comando para carregar os funcionários pertencentes.


Informação Relacionada

Prioridade: Média

Desempenho alvo: dois a dez segundos.

Frequência: Não contabilizada

Observações: Nenhuma

[Caso de Uso - 05] Visualização do Espelho de horário de subordinado

Objetivo no Contexto: O usuário poderá visualizar os pontos de seus subordinados a partir de um ano e mês selecionados.

Escopo: Pontus.

Pré-condições: Conexão com a internet, Logado no sistema Pontus, ser funcionário da UNIOESTE, o usuário deverá ter cargo que supervisiona outros funcionários.

Condição Final de Sucesso: O usuário consegue visualizar a escala do funcionário selecionado.

Condição Final de Falha: N/A.

Ator Primário: usuário.


Cenário Principal de Sucesso

Passo 1: O usuário interage com a interface, selecionando a opção de listar setores.

Passo 2: O sistema carrega do banco de dados os setores pelo qual o usuário é responsável.

Passo 3: O sistema exibe quais setores o usuário tem comando.

Passo 4: O usuário define qual mês e ano deseja visualizar as informações.

Passo 5: O sistema carrega do banco de dados os funcionários dos funcionários subordinados.

Passo 6: O sistema exibe os funcionários.

Passo 7: O usuário interage seleciona a impressão de espelho do funcionário selecionado.

Passo 8: O sistema gera o relatório com as informações referentes ao mês, ano e funcionário selecionado.

Passo 9: O sistema exibe o documento do espelho do ponto.


Extensões

Passo 4.a: O usuário seleciona um setor sobre comando para carregar os funcionários pertencentes.


Informação Relacionada

Prioridade: Baixa

Desempenho alvo: quatro a dez segundos.

Frequência: Não estimada

Observações: Gerado pelo Relatum

Características do sistema

Lists

Bilhete (Minhas batidas)

O funcionamento do List difere dos padrões adotados em outros sistemas, para que as batidas sejam listadas está sendo utilizado o método batidas da classe bilheteController. O método utiliza os mesmos parâmetros que o método genérico pesquisa utilizado em outras classes, porém sua construção e resposta são diferentes, batidas precisa de três filtros para funcionar anoBatidas, mesBatidas e cdgBatidas, o último é opcional no caso é utilizado o usuário injetado na classe para obter-se o código, com isto é utilizado um NativeQuery do Hibernates para utilizar a função com valor de tabela bilheteMesFuncionario para responder à consulta. A resposta da função é utilizada para montar o ArrayList que será enviado com JSON para Javascript exibir na tela, a montagem da lista começa criando uma entrada no ArrayList para cada dia do mês, salva exceção para o mês atual no qual se retorna até o dia corrente, após isso é percorrido o retorno da função SQL para ver quais dias serão preenchidos. Os dias a serem preenchidos formam Strings que variam entre negrito falso/verdadeiro (utilizado para demarcar pares), além das marcações das batidas é feita a soma do horário da pessoa e é retornado na mesma linha a quantidade de minutos que a pessoa deveria trabalhar no dia.

No lado do Javascript é feita a soma das horas trabalhadas e feita a apresentação das horas cumpridas e designadas. Ainda, falando sobre o JavaScript, a list do bilhete tem um atributo chamado searcher, seu padrão é true, ele determina a criação das comboboxes de seleção de mês e ano e os botões de imprimir espelho e atualizar, quando esse atributo for declarado como false é preciso atribuir os atributos mes e ano.

Funcionário (Pontos por Setor)

A pesquisa realizada nesta aba é um List comum da tabela funcionario que contém duas colunas com widget button para interações, utiliza as mesmas características que a aba minhas batidas, porém para visualização é aberto um Ext.window para comportar o grid, além disso o filtro de setor para os funcionários é inserido em uma combobox, os parâmetros mês e ano são passados por combobox e seus limites são definidos pelo dia atual e a batida mais antiga (que tem coerência) do sistema.

Setor (Escala por Setor)

A pesquisa realizada nesta aba é um List comum de setor com uma coluna de widget button para exibir a escala mensal, a seleção do mês/ano que se deseja visualizar a escala é feita por duas combobox com limites definidos entre as escalas mais antigas e mais recentes do sistema. A escala é exibida como um relatório, para a geração do relatório é utilizada a função com valor de tabela EscFncSetorPorSemana que retorna colunas baseadas na contagem de um calendário.

Comboboxes

As comboboxes desses sistemas são, em sua maioria, com pesquisa modificada, pois precisam exibir faixas de anos, que não seria permitido utilizando a pesquisa normal, assim no momento de instância a URL do método pesquisa é alterada para outro método que atende a necessidade da combobox.

Relatórios

Todos os relatórios do sistema são chamados somente se a consulta realizada por ele não for nula. Além disso a geração é feita pelo sistema Relatum.

Relatório Mês (GR-1)

Gera as escalas dos funcionários do setor selecionado, inclui os setores filhos, em forma de calendário, além do setor é necessário declarar os parâmetros mês e ano para definir de quando será a escala.

Espelho do ponto (GR-2)

Relatório com 3 níveis, o primeiro é responsável por buscar o cabeçalho do relatório, o segundo cada dia do mês e observações, caso existam, e o último as batidas que ocorreram no dia.

Classes

Classes que não estão relacionadas com o banco de dados, porém são importantes no funcionamento do sistema.

ChaveValor

Esta classe carrega quatro atributos do tipo String, existem dois construtores diferentes, um preenche os atributos chave e valor e o outro os atributos chave, valor, soma e escala. A existência dos valores soma e escala foi necessária para aumentar a quantidade de elementos retornados no JSON para página WEB, que precisa de mais informações para funcionar.

Funções SQL

Funções com Valor Tabela

bilheteMesFuncionario

BDPontusWEB.dbo.bilheteMesFuncionario(@pssfsccodigo int, @mes int, @ano int)

A função retorna uma tabela, que contém todos os dias com batidas do mês do agente, com cinco colunas, sendo, respectivamente, dia, batidas, qtsBatidas, temEscala, minutosDiarios. Para poder iterar sobre o mês a função utiliza um cursor que trabalha sobre o select de batidas com dias distintos do funcionário, assim para cada dia é chamada a função btdDiaAjuste para construir as colunas batidas e qtsBatidas da linha. Além disso para cada dia é chamada a função tmpHrrDiario para a coluna minutosDiarios e a função exsTrnDia para a coluna temEscala.

btdDiaAjuste

BDPontusWEB.dbo.btdDiaAjuste (@pssfsccodigo int, @dia date)

A função organiza as batidas do funcionário, no formato hh:mm|...|hh:mm, para o respectivo dia e soma a quantidade das mesmas, antes de começar a concatenar as batidas é feita uma verificação, que utiliza a função hrrEntSdaTrnNoturno, para o primeiro horário do dia, checando se aquela batida é pertencente à um horário do dia anterior, a aritmética é feita a partir do horário de saída do dia anterior +-60 minutos de diferença, caso verdadeiro o cursor avança antes de inserir o horário no retorno. Além disso, é verificado se a primeira batida do próximo dia, referente à data selecionada, não faz parte do horário, a aritmética utilizada é a mesma para exclusão da primeira batida.

cbcCrtPonto

BDPontusWEB.dbo.cbcCtrPonto (@pssfsccodigo int, @mes int, @ano int)

A função retorna o cabeçalho do relatório do espelho do ponto, evita cálculos feitos no Jasper, inserindo os campos diretamente no relatório.

EscFncSetorPorSemana

BDPontusWEB.dbo.EscFncSetorPorSemana (@cdgStor varchar(100), @prmDiaMes date, @utmDiaMes date)

A função retorna todos os funcionários do setor numa tabela, o formato da tabela é o mesmo da função psqEscFuncionarioPorSemana que é utilizada para cada funcionário do setor.


hrrEntSaida

BDPontusWEB.dbo.hrrEntSaida (@pssfsccodigo int, @dia date)

A função retorna uma tabela, que contém todos os horários do dia para o funcionário, com as colunas entrada, saida, diaHorario, sendo entrada e saída os horários e a última coluna é referente ao dia que o horário se refere.


hrrEntSdaTrnNoturno

BDPontusWEB.dbo.hrrEntSdaTrnNoturno (@pssfsc_codigo int, @dia date)

A função retorna uma tabela, que contém somente os horários que atravessam a meia-noite, com as colunas entrada, saida, diaHorario, sendo entrada e saída os horários e a última coluna é referente ao dia que o horário se refere.


psqEscFuncionarioPorSemana

BDPontusWEB.dbo.psqEscFuncionarioPorSemana (@pssfsc_codigo int, @prmDiaMes date, @utmDiaMes date, @cdgUnidade int)

A função retorna o código de pessoa física, o nome da pessoa e o horário da escala da pessoa para todos os dias possíveis de um mês, assim o retorno cria uma tabela com quarenta colunas. Os dias possíveis do mês são mapeados pensando em um calendário em que todos os dias da semana tem cinco ocorrências, exceto domingo e segunda-feira que tem seis, como no calendário são preenchidos somente dias que ocorreram nos mês e as 'caixas vazias' do calendário retornam null.

Funções com Valor Escalar

exsTrnDia

BDPontusWEB.dbo.exsTrnDia (@pssfsc_codigo int, @dia date)

A função verifica nas tabelas de FncHRRTrbDiario e FncEscTrabalho se o funcionário tem horário de trabalho no dia enviado para a função. Retorna 'S' para dia com trabalho e 'N' para um dia em que não há escala.

hrrDiaFuncionario

BDPontusWEB.dbo.hrrDiaFuncionario(@pssfsc_codigo int, @dia date, @cdgUnidade int)

A função retorna a String com os horários de entrada e saída do funcionário, o código de unidade é um parâmetro pois está função é utilizada como apoio para a função psqEscFuncionarioPorsemana, em que já se calcula o código de unidade, quando o funcionário tem mais que um turno no dia a String é concatenada e separada por quebras de linha (char 10) no SQL. Além disso, são demarcados os horários extras do agente universitário com o caractere E no final da linha, caso o funcionário não tenha nenhum horário no dia o retorno é um ponto ( . ).

tmpHrrDiario

BDPontusWEB.dbo.tmpHrrDiario(@pssfsc_codigo int, @dia date)

A função calcula quantos minutos o funcionário deve executar no dia, retorna o valor inteiro dos minutos designados para trabalho na respectiva data.


vrfUnidade

BDPontusWEB.dbo.vrfUnidade(@pssfsc_codigo int)

A função retorna um inteiro que é referente a qual banco de dados o funcionário está integrado. Necessária para as seleções em locais que a consulta pode gerar duplicidade de resultados quando existirem chaves primárias iguais entre bancos. Além disso, é considerado as cedências para outros setores da pessoa física, nesse caso a pessoa está, provavelmente, presente em mais de um banco.

Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Ferramentas