[firebase-br] RES: RES: OFF-Topic - Modelagem e Cálculo de Horas
Rodrigo
rodrigo em digibyte.com.br
Qua Jul 1 11:24:31 -03 2015
Complementando, os minutos eu gravaria usando uma trigger
-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Rodrigo
Enviada em: quarta-feira, 1 de julho de 2015 11:21
Para: 'FireBase'
Assunto: [firebase-br] RES: OFF-Topic - Modelagem e Cálculo de Horas
Estava justamente trabalhando com algo praticamente igual esses dias.
De uma olhada no comando DateDiff do firebird, acho que o melhor é gravar os minutos entre a entrada e saída e posteriormente somar tudo e fazer o cálculo convertendo em horas.
http://www.firebirdsql.org/refdocs/langrefupd21-intfunc-datediff.html
Um grande problema é: como você vai saber se a batida é de entrada ou saída?
Está sendo informado manual ou vem de uma catraca por exemplo? Se for manual é fácil, tá resolvido ...
Creio que ficaria assim:
pk | id_funcionario | entrada | saida | minutos
-----------------------------------------------
01 | 1 | 05:00 | 11:00 | 360 |
02 | 1 | 12:00 | 15:00 | 180 |
03 | 2 | 08:00 | 12:00 | 240 |
04 | 3 | 07:30 | 12:00 | 270 |
Um select sum(minutos) where id_funcionario = 1 te retornaria 540 minutos, depois é só dividir por 60 e fazer o tratamento de horas que quiser, apresentando em decimal ou horas/minutos.
Pra separar pode dia é só por o critério no where, entrada e saída teriam que ser datetime.
Rodrigo Buschmann
-----Mensagem original-----
De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Marcelo Geyer Enviada em: terça-feira, 30 de junho de 2015 18:42
Para: FireBase
Assunto: Re: [firebase-br] OFF-Topic - Modelagem e Cálculo de Horas
Boa tarde,
Como você mencionou que não sabem quantos intervalos cada funcionário fará, a melhor abordagem é usar um campo de identificação do funcionário, um campo "datetime" para entrada e outro para saída. O cálculo de horas você fará na aplicação.
Em 30 de junho de 2015 16:27, Ricardo Borges Zancanaro <rbzancanaro em gmail.com> escreveu:
> Meu nome é Ricardo, durante a graduação acompanhava a lista
> diariamente, porém tomei outros rumos e me afastei da área de TI, hoje
> trabalho
>
> em uma Prefeitura no interior de Santa Catarina e durante o
> aniversário da cidade me surgiu uma necessidade que acabei resolvendo
> com
>
> planilhas do excel já que não tinha tempo hábil para desenvolver uma
> solução, mas quero me preparar para a próxima. Como não me
> descadastrei
>
> da lista resolvi pedir ajuda.
>
> No aniversário do municipal é realizada uma Expofeira com 5 dias de
> duração, começando na quarta-feira até domingo.
> Desses 5 dias 3 podem ter expediente normal para os funcionários, pode
> ocorrer um feriado entre quarta e sexta.
> No feriado, sábado e domingo todas as horas trabalhadas são pagas.
> Nos dias de expediente normal deve-se analizar o horário de cada
> funcionário, se trabalhou fora do expediente pagam-se as horas.
> São vários os horários de expediente, conforme exemplo:
>
> pk | entrada | saida | entrada2 | saida2
> ----------------------------------------
> 01 | 05:00 | 11:00 | |
> 02 | 08:00 | 12:00 | 14:00 | 17:00
> 03 | 07:30 | 12:00 | 13:30 | 17:30
>
> pk | nomefunc | fkhorario
> -------------------------
> 11 | FuncA | 01
> 22 | FuncB | 02
> 33 | FuncC | 03
> 44 | FuncD | 02
>
> Durante o evento os funcionários podem trabalhar sem pausa ou realizar
> mais de uma pausa durante o período.
>
> pk | entrada | saida | entrada2 | saida2 | entrada3 | saida3 | fkfunc
> ---------------------------------------------------------------------
> 01 | 10:00 | 14:00 | | | | | 11
> 02 | 07:00 | 12:30 | 13:00 | 20:00 | 20:30 | 24:00 | 22
> 03 | 07:00 | 23:00 | | | | | 33
> 04 | 08:00 | 12:00 | 14:00 | 17:00 | | | 44
>
> Que resulta o pagamento:
>
> pk | horaspagas | fkfunc
> ------------------------
> 01 | 3 | 11
> 02 | 9 | 22
> 03 | 7,5 | 33
> 04 | 0 | 44
>
> Considerando somente os dias em que há expediente, a modelagem inicial
> ficou assim:
> Horarios(pk, entrada, saida, entrada2, saida2) Pessoa(pk, nomefunc,
> fkhorario) Batidas(pk, entrada, saida, totalhoraspagas, fkfunc)
>
> Como não sabemos quantos intervalos cada um fará pensei que o melhor
> seria deixar uma entrada e saida nas batidas, podendo ter mais de uma
>
> para cada funcionário no dia, bem como no momento do registro
> verificar o quanto dessas horas serão pagas.
>
> Minhas dúvidas são:
> 1) A modelagem é a ideal? O que pode ser diferente?
> 2) Qual a melhor abordagem para o cálculo de horas? Aqui sinceramente
> eu empaquei.
>
> Agradeço desde já
> Ricardo Zancanaro
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas:
> http://www.firebase.com.br/pesquisa_lista.html
--
Marcelo E. Geyer
Standard Net Tecnologia e Informação
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br Para
saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas:
http://www.firebase.com.br/pesquisa_lista.html
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html
Mais detalhes sobre a lista de discussão lista