DES:Pontus

De Wiki Unioeste NTI
(Diferença entre revisões)
Ir para: navegação, pesquisa
(Funções com Valor Escalar)
(Bilhete (Minhas batidas))
 
(35 edições intermediárias de um usuário não apresentadas)
Linha 3: Linha 3:
 
Desenvolvida por Gustavo Antonio Martini
 
Desenvolvida por Gustavo Antonio Martini
  
 +
= Requisitos Funcionais =
  
= Funções com Valor Tabela =
+
=== [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.
  
= Funções com Valor Escalar =
+
Dependência: Nenhuma
  
== exsTrnDia ==
+
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 [[DES:Relatum|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 [[DES:Relatum|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 [[DES:Relatum|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 [https://docs.jboss.org/hibernate/orm/5.6/javadocs/org/hibernate/query/NativeQuery.html NativeQuery] do [https://hibernate.org/ Hibernates] para utilizar a função com valor de tabela ''bilheteMesFuncionario'' para responder à consulta. A resposta da função é utilizada para montar o [https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html ArrayList] que será enviado com ''JSON'' para ''Javascript'' exibir na tela, a montagem da lista começa criando uma entrada no [https://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html 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 [[DES:Relatum|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)''
 
''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.
 
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 ==
+
=== hrrDiaFuncionario ===
 
''BDPontusWEB.dbo.hrrDiaFuncionario(@pssfsc_codigo int, @dia date, @cdgUnidade int)''
 
''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 cálcula 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 ('' . '').
+
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 ==
+
=== tmpHrrDiario ===
 
''BDPontusWEB.dbo.tmpHrrDiario(@pssfsc_codigo int, @dia date)''
 
''BDPontusWEB.dbo.tmpHrrDiario(@pssfsc_codigo int, @dia date)''
  
A função cálcula quantos minutos o funcionário deve executar no dia, retorna o valor inteiro dos minutos designados para trabalho na respectiva data.
+
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 ==
+
=== vrfUnidade ===
 
''BDPontusWEB.dbo.vrfUnidade(@pssfsc_codigo int)''
 
''BDPontusWEB.dbo.vrfUnidade(@pssfsc_codigo int)''
  
A função retorna um inteiro que é referente a qual banco de dados o funcionário esta 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.
+
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.

Edição atual tal como 13h36min de 12 de dezembro de 2023

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

Desenvolvida por Gustavo Antonio Martini

Tabela de conteúdo

[editar] Requisitos Funcionais

[editar] [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

[editar] [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

[editar] [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

[editar] [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

[editar] [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

[editar] Casos de Uso

[editar] [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

[editar] [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

[editar] [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

[editar] [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

[editar] [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

[editar] Características do sistema

[editar] Lists

[editar] 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.

[editar] 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.

[editar] 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.

[editar] 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.

[editar] 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.

[editar] 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.

[editar] 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.

[editar] Classes

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

[editar] 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.

[editar] Funções SQL

[editar] Funções com Valor Tabela

[editar] 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.

[editar] 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.

[editar] 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.

[editar] 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.


[editar] 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.


[editar] 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.


[editar] 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.

[editar] Funções com Valor Escalar

[editar] 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.

[editar] 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 ( . ).

[editar] 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.


[editar] 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