AJUDA COM LOGICA E RACIOCINIO

MARCELO.TREZE 26/07/2012 20:44:33
#406676
Bom pessoal venho eu agora humildemente pedir ajuda dos senhores não consigo chegar a uma conclusão do que preciso, bom vamos lá:

estou desenvolvendo um sistema onde irei gerar escalas conferir presenças calcular extras, etc, e isso tudo depende de uma unica coisa uma tabela dos plantões de serviço.

assim, aqui temos plantões com horários variados, tipo: 12 X 36 ( a pessoa trabalha 12 e folga 36 horas), temos administrativo, (segunda a sexta 8 horas diárias) temos o melhor, rs a pessoa trabalha 8 horas, da seguinte maneira:
1º dia 07 as 15 horas
2º dia 15 as 23 horas
3º dia 23 as 07 horas
4º folga
5º folga

e começa de novo, ta fácil né, rs, agora que vem o meu problema, que é como criar uma tabela que seja dinâmica o suficiente para incluir, ou alterar estes plantões baseado nas horas trabalhadas horas de folgas, e uma data inicial?

exemplo:
se eu tivesse apenas o plantão 12X36, poderia (posso) criar uma tabela com a seguinte estrutura:

id_do_turno, nome, data_inicial, hora_inicial, hora_final, hora_folga

e os dados incluiria os dados assim:

01 - turma A - 01/01/2012 - 07:00 - 19:00 - 36
02 - turma B - 02/01/2012 - 07:00 - 19:00 - 36
03 - turma C - 01/01/2012 - 19:00 - 07:00 - 36
04 - turma D - 02/01/2012 - 19:00 - 07:00 - 36

pronto ta feito, isso foi facin, facin... da maneira acima daqui a 01 ano se eu abrir a escala do dia saberei quem está trabalhando, se a pessoa estiver trabalhando fora da escala saberei que está de extra, se não compareceu tal dia saberei se é folga ou falta, porém como eu havia dito quero deixa-la mais dinâmica, ai vem o problema como poderia incluir os demais horários das escala nesta tabela? ou como poderia criar uma estrutura que me atende-se?

pois o plantão postado acima trabalha sabados, domingos e feriados, porém quem trabalha administrativamente é diferente, ou seja trabalha de segunda a sexta, o que me furou a tabela acima, os outros trabalham 8 horas com horários alternados o que fura a tabela acima, bom pra finalizar, eu não gostaria de criar uma tabela para cada plantão pois amanhã este plantão pode não existir ou o horário pode ser diferente.

e...não, eu não posso pedir para o cliente organizar isto, uma vez que se trata de uma Prefeitura, e o serviço é essencial, rs

se alguém tiver pelo menos uma ideia que me encaminhe para resolução do meu problema eu agradeceria.



JLAUROSOUZA 26/07/2012 21:21:23
#406677
Grande MARCELO-TREZE, vamos lá...

Você já pensou em colocar no cadastro do funcionário o tipo de turmo dele, daí vc poderia criar uma tabela de turno onde seria cadastrado os turnos e ai liga-las ao funcionário e colocar na tabela já criada um campo tipo [Ô]id_turno[Ô], onde ficaria indicado o tipo e turno do funcionário.

Bem Amigo Marcelo, espera ter ajudado de alguma forma, abraço.
MARCELO.TREZE 26/07/2012 22:09:19
#406680
Colega primeira obrigado por responder, sem duvida o cadastro de turno tera uma ligação com a ficha do funcionário mas a questao é como fazer cadastro de turno.
JLAUROSOUZA 26/07/2012 22:46:16
#406684
Marcelo, fazer uma Tebela de turno e uma tela para cadastra os tipos de turno, imagino q seja algo assim...

vc esta entendendo onde quero chegar?
CASSIOJFF 26/07/2012 23:13:13
#406686
Marcelo, e se a sua grade fosse por dia, como o exemplo abaixo nao sei se funcionaria mas com ela vc pode controlar por dia o horario fazendo os plantoes, fazendo o horario administrativo normal e assim por diante
CASTELO 27/07/2012 10:02:31
#406701
Resposta escolhida
Opa, é sempre bom poder ajudar.

Vou compartilhar minha dificuldade e a solução adotada.

Tenho trabalhado arduamente e ainda tenho algumas questões a resolver em um Sistema de Administração Escolar, pois bem, por se tratar de escola pública e conforme a exigência da Secretaria de Educação aqui do estado, é obrigatório o uso de fichas de avaliação.

Até que pode seria simples, criar uma tabela com os campos definidos para cada [Ô]tipo[Ô] de avaliação e pronto, estaria resolvido. Porém [Ô]idêntico[Ô] ao problema do Marcelo, e se os ATUAIS conceitos mudarem, a tabela estaria FURADA, buscando resolver esta situação, criei um cadastro simples de Conceitos e sua abreviação para cada ANO, e uma tabela que receberia os lançamentos das notas para cada conceito.

Assim, preencho uma flexgrid com a listagem de alunos, crio as colunas conforme a quantidade de Conceitos cadastrados para o ano letivo, e ao ser atribuido um valor pelo professor, este é lançado na tabela, algo como: aluno (matricula),nota(valor),disciplina(id),turma(id),professor(id),conceito(id),ano(ano).

Ah, quase ia esquecendo, ao preencher o flexgrid, conforme a seleção da turma e disciplina, busco as notas (conceitos) previamente lançadas.

Assim, por mais que o sistema mude ou [Ô]deixe[Ô] de existir a ficha de avaliação, não preciso mexer na tabela ela é dinâmica.

FFCOUTO 27/07/2012 11:25:11
#406713
Marcelo, fiz um pequeno exemplo num banco access para te dar uma luz. Pois passei por uma situação quase parecida mas era com tarifa por horário, dia,e outras variáveis.

Bem, vamos ao que interessa.

Nesse banco tem 2 tabelas, a primeira tabela é apenas para identifica o plantão e a segunda com as regras. Obs. Só não adicionei a data de inicio e término.

A estrutra das tabelas é bem simples. A primeira contem apenas o ID e a Descrição do plantão ex. 12x36, Administrativo, etc.

A estrutura da segunda tem uma regra por linha. Você terá o dia da semana (1 a 7) para aplicar a regra e 0 quando o dia for variável, no caso de escalas. Tem o campo situação que indica se o funcionário Trabalha ou Folga.

Se o funcionário Folga, você determina isso usando o campo hora_trab, e, caso Trabalha, você utilizar a hora_inicio e soma a hora_trab para determinar a hora de término.

A lógica é você ler a tabela de regras linha a linha na sequencia. Por exemplo o plantão 12x36.

Linha 1: dia_semana = 0 (variável); situação T (trabalha); hora_inicio = 07:00; hora_trab = 12
Linha 2: dia_semana = 0 (variável); situação F (folga); hora_trab = 36

Exemplo:

Do While not rsRegras.EOF
if dia_semana = 0 then
dia_atual = date
end if

if situacao = [Ô]T[Ô] then
dh_inicio = cdate(format(dia_atual, [Ô]dd/mm/yyyy[Ô]) & [Ô] [Ô] & rsRegras(hora_inicio))
dh_fim = DateAdd([Ô]h[Ô], hr_inicio, rsRegras([Ô]hora_trab[Ô])
else if situacao = [Ô]F[Ô] then
dh_inicio = hr_fim
dh_fim = DateAdd([Ô]h[Ô], rsRegras([Ô]hora_inicio[Ô]), rsRegras([Ô]hora_trab[Ô]))
end if

rsRegras.MoveNext
Loop


Não sei se conseguir explicar bem, mas, qualquer dúvida, entre em contato.


MARCELO.TREZE 27/07/2012 17:22:23
#406743
Castelo, acredito que seu seguir sua lógica consigo fazer o que prentendo

FFCouto, chegando em casa verei seu exemplo e vou ver se ele se adapta a minha necessidade.

Cassiojff, essa maneira me leva a metade do caminho ja pensei nisto também, porém terei outros problemas

enfim vou verificar as propostas acima chegando em casa,s e eu conseguir chegar onde desejo coloco a aqui a solução, mas desde ja agradeco a todos que estão respondendo.

MARCELO.TREZE 01/08/2012 11:42:02
#407002
Bom galera venho aqui agradecer a ajuda de todos, usei a lógica do colega castelo, e resolveu meu problema, realmente o objetivo é não mexer na tabela, e usando esta logica pude criar os plantões aqui fica fácil, mais uma vez obrigado a todos.

Tópico encerrado , respostas não são mais permitidas