[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