Inquiridor
Registro horas trabalhas e hora extra

Discussão Geral
-
Pessoal boa noite,
Gostaria de fazer um aplicativo utilizando BD Access para registrar diariamente horario entrada e saida e hora extra acumulada (caso trabalhe mais de 8 horas) ou hora devida (caso trabalhe menos de 8 horas) e que possa por meio de um botão calcular a soma destes acumulados e devedores para cada mês (poderia ser uma data b inicial e final utilizando datetimepicker).
Alguem poderia me ajudar com a lógica e comandos.?
Na verdade eu até já consegui avançar em um projeto que quase me atende. O único problema é que enrosquei na parte de fazer a conta de horas extras totais do mês, pois eu preciso estipular uma data inicial e final de soma e realiazar a operação. Cara, não consigo. Lembrando que o aplicativo que quero desenvolver é só para controle, o funcionário mesmo digita o horaio (eu e alguns colegas) com total flexibilidade para alterar. De forma resumida, meu projeto está assim:
TENHO UM bANCO DADOS ACCESS com uma tabela e os seguintes colunas
data (texto curto)
hora entrada (texto curto)
saida almoço (texto curto)
retorno almoço (texto curto)
saída trabalho (texto curto)
hora extra (texto curto)
tenho 4 datetimepiker para inserir os 4 pontos de entrada e saída e 01 textbox para apresentar a hora extra do dia.
Há também um datagridview que permite visualizar os registros atuais e anteriores.
para calcular as diferenças de horas e hora extra, criei variáveis como timespan e utilizei subtract e add. A hora extra pode ser positiva (trabalhou mais) e pode ser negativa (faltou hora) pois podemos compensar dentro do mês.
há também um reportviwer que apresenta todos os dados de registro para cada dia (data), porém sem separar por mês, pois não consegui fazer esta separação por diferentes meses.
Isto á está funcional, tudo legal, só não consegui fazer a tal soma de horas extras em um intervalo pré determinado, tipo data inicio 01/01/2015 e data final 31/01/2015. Já queimei a cabeça e não consigo. Eu pensei em colocar dois datetimepicker para inserir a data inicial e final e um botão para calcular e mostras o resultado numa textbox.
Você poderia me dar uma orientação- Editado Fernando Baliani sábado, 20 de fevereiro de 2016 13:06
- Tipo Alterado Marcos SJ segunda-feira, 22 de fevereiro de 2016 12:40 Threads de "How to" serão modificadas para discussão geral
Todas as Respostas
-
Ola, bom esses controles de ponto são um pouco "chatos" digamos assim, mas para você iniciar esse processo, não sei as informações que você levara em consideração na construção do aplicativo, mas você tem que lembrar que você poderá ter mais do que 4 registros (1E - 1S - 2E - 2S) onde: 1E = primeira entrada, 1S=primaiera saida e assim por diante. Outro ponto para você conseguir calcular você tera que verficar quantas marcações você tem para fazer os joguinhos duplos de marcação por exemplo
1E - 08:00
1S - 12:00
2E - 14:00
2s - 18:00
Para que você tenha 12:00 - 8:00 = 4:00h e 18:00 - 14:00 = 4:00h, lembre também que tera que se preparar para controlar marcações impar pois o funcionário poderá ter essa situação.
Para calcular horas extras indevidas e horas extras lembre-se que você deve ter um cadastro de carga horaria onde sera indicada a quantidade de horas mês de cada funcionario / pessoa ou seja 180h, 220h e etc esses valores serão comparados no ato do seu fechamento de ponto por exemplo usando também o calculo das marcações 1E-1S-2E-2S dia a dia para ir se acumulando as horas trabalhadas dia a dia para se ter esse montante calculado no final do seu mês ou periodo de fechamentoEm questões de tabela de Banco de Dados, você poderia ter uma tabela
CODFUNC
DATAMARCACAO
HORAMARCACAO, aqui você pode armazenar como HORA mesmo ou como numerico ex: 8:00 08 8,00
POSICAOMARCACAO - 1E,1S,2E,2S e etc ..... pois pode ocorrer de haver mais marcaçõesEm sua rotina de leitura dos dados do ponto faça a leitura dos registros em um periodo fechado de datas por exemplo de 01/02/2016 a 29/02/2016 faça a leitura dia a dia verificando se a quantidade de registros é PAR ou IMPAR para montar sua rotina de calculo pois tera que considerar isso para realizar o calculo de tras para a frente digamos assim 1E - 2E ou calcular na sequencia que elas estejam e deixar seu resultado positivo pois se vc ficar 8 - 12 = -4
Outro ponto a ser considerado é seu funcionario / pessoa entrou para trabalhar dia 02/02/2016 e saiu dia 03/02/2016 tera que considerar isso você tera que saber se aquela marcação do dia 03/02 é referente ao dia 02/02
Ex:
02/02 - 20:00
02/02 - 00:00
03/02 - 02:00
03/02 - 06:00
Todas essas marcações são do dia 02/02 lembre-se de considerar isso, para isso crie em sua tabela uma outra coluna de DATA referente a data que aquela marcação foi apontadaNão sei se escrevi muito mas espero ter ajudado com algumas informações seu projeto
Junior
-
Junior obrigado pelas considerações.
Na verdade eu até já consegui avançar em um projeto que quase me atende. O único problema é que enrosquei na parte de fazer a conta de horas extras totais do mês, pois eu preciso estipular uma data inicial e final de soma e realiazar a operação. Cara, não consigo. Lembrando que o aplicativo que quero desenvolver é só para controle, o funcionário mesmo digita o horaio (eu e alguns colegas) com total flexibilidade para alterar. De forma resumida, meu projeto está assim:
TENHO UM bANCO DADOS ACCESS com uma tabela e os seguintes colunas
data (texto curto)
hora entrada (texto curto)
saida almoço (texto curto)
retorno almoço (texto curto)
saída trabalho (texto curto)
hora extra (texto curto)
tenho 4 datetimepiker para inserir os 4 pontos de entrada e saída e 01 textbox para apresentar a hora extra do dia.
Há também um datagridview que permite visualizar os registros atuais e anteriores.
para calcular as diferenças de horas e hora extra, criei variáveis como timespan e utilizei subtract e add. A hora extra pode ser positiva (trabalhou mais) e pode ser negativa (faltou hora) pois podemos compensar dentro do mês.
há também um reportviwer que apresenta todos os dados de registro para cada dia (data), porém sem separar por mês, pois não consegui fazer esta separação por diferentes meses.
Isto á está funcional, tudo legal, só não consegui fazer a tal soma de horas extras em um intervalo pré determinado, tipo data inicio 01/01/2015 e data final 31/01/2015. Já queimei a cabeça e não consigo. Eu pensei em colocar dois datetimepicker para inserir a data inicial e final e um botão para calcular e mostras o resultado numa textbox.
Você poderia me dar uma orientação
-
Bom vamos ver se te ajudo nisso, espero que a sentença abaixo ajude:
Criei um tabela para teste
Tabela Horario com um campo Hora do Tipo DateTime, inseri alguns horarios dentro
HORARIO Código HORA 1 08:00 2 12:00 3 06:30 4 04:50 E usei a sentença SQL abaixo para somar as horas
SELECT
IIF(SUM(MID(HORARIO.HORA,4,2)) < 60 , SUM(MID(HORARIO.HORA,4,2)) , SUM(MID(HORARIO.HORA,1,2)) + 1)
& ':' &
IIF(SUM(MID(HORARIO.HORA,4,2)) - 60 < 0 , SUM(MID(HORARIO.HORA,4,2)) - 60 * (-1) , SUM(MID(HORARIO.HORA,4,2)) - 60)
FROM HORARIO;Espero ter ajudado
Junior
-
Júnior boa tarde,
Ainda estou apanhando na soma de horas extras. Estou ficando louco, só falta este detalhe para finalizar. Você teria algum contato do tipo Skype, para que possa tirar as dúvidas de maneira mais objetica, isso se você puder me atender.
Trata-se de uma aplicação para uso pessoal e não visa comércio.
Grato
-
Bom vamos ver se te ajudo nisso, espero que a sentença abaixo ajude:
Criei um tabela para teste
<tfoot></tfoot>
Tabela Horario com um campo Hora do Tipo DateTime, inseri alguns horarios dentro
HORARIO Código HORA 1 08:00 2 12:00 3 06:30 4 04:50 E usei a sentença SQL abaixo para somar as horas
SELECT
IIF(SUM(MID(HORARIO.HORA,4,2)) < 60 , SUM(MID(HORARIO.HORA,4,2)) , SUM(MID(HORARIO.HORA,1,2)) + 1)
& ':' &
IIF(SUM(MID(HORARIO.HORA,4,2)) - 60 < 0 , SUM(MID(HORARIO.HORA,4,2)) - 60 * (-1) , SUM(MID(HORARIO.HORA,4,2)) - 60)
FROM HORARIO;Espero ter ajudado
Junior
Júnior boa tarde,
Ainda estou apanhando na soma de horas extras. Estou ficando louco, só falta este detalhe para finalizar. Você teria algum contato do tipo Skype, para que possa tirar as dúvidas de maneira mais objetica, isso se você puder me atender.
Trata-se de uma aplicação para uso pessoal e não visa comércio.
Grato
-
-