[firebase-br] OFF-Topic - Modelagem e Cálculo de Horas

Ricardo Borges Zancanaro rbzancanaro em gmail.com
Ter Jun 30 16:27:43 -03 2015


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



Mais detalhes sobre a lista de discussão lista