É preciso um certo conhecimento do banco de dados MySQL. Qualquer dúvida, consulte Introdução ao banco de dados MySQL.
Primeiro passo é criar a database:
create database industria;
Em seguida, cria-se a tabela com as colunas:
create table horarios (id int AUTO_INCREMENT, in1 time, out1 time, in2 time, out2 time, tempo tempo, saldo tempo, dia int(20), mes int(2), ano int(2), comment TEXT, PRIMARY KEY (id));
Explicando cada coluna:
Coluna | Tipo | Explicação |
id | PRIMARY KEY | número distinto |
in1 | time | entrada de manhã |
out1 | time | saída de manhã |
in2 | time | entrada à tarde |
out2 | time | saída à tarde |
tempo | time | horas trabalhadas no dia somando manhã e tarde |
saldo | time | saldo de horas |
dia | int(20) | dia trabalhado |
mes | int(2) | mês trabalhado |
ano | int(2) | ano trabalhado |
comment | TEXT | espaço para anotações do tipo "consulta médica" etc |
O banco de dados está pronto.
Justificando por separar dia, mês e ano. Uma situação comum é fazer o levamento das horas trabalhadas de um determinado mês. Um select do tipo:
select * from horarios where mes=9 and ano=2011;
devolve todas as informações sobre o mês de setembro de 2011.
A seguir disponibilizo o script que lê as informações introduzidas pelo usuário, executa somas e subtrações de horários e armazena no banco de dados.
#!/bin/bash
# Entrada dos horários
read -p "Entrada manhã: " in1
read -p "Saída almoço: " out1
read -p "Entrada tarde: " in2
read -p "Saída tarde: " out2
read -p "Data de hoje? [Y/n] " resp
# Entende que Y, y, S, s ou Enter signifiquem uma resposta a data de hoje
if [ "$resp" = Y -o "$resp" = y -o "$resp" = S -o "$resp" = s -o ! -n "$resp" ]
then
dia=`date +%d`
mes=`date +%m`
ano=`date +%Y`
else
read -p "dia " dia
read -p "mes " mes
read -p "ano " ano
fi
read -p "Comentário? " comment
# Subtrai o horário da manhã
manhaSQL=`mysql -uroot -psenha << SQL
SELECT SUBTIME('$out1','$in1');
QUIT
SQL`
# Filtra a resposta anterior ficando apenas um valor do tipo HH:MM:SS
manha=`echo $manhaSQL | awk '{printf "%s\n",$2}'`
# Subtrai o horário da tarde
tardeSQL=`mysql -uroot -psenha << SQL
SELECT SUBTIME('$out2','$in2');
QUIT
SQL`
# Filtra a resposta anterior ficando apenas um valor do tipo HH:MM:SS
tarde=`echo $tardeSQL | awk '{printf "%s\n",$2}'`
# Soma o horário da manhã e da tarde
tempoSQL=`mysql -uroot -psenha << SQL
SELECT ADDTIME('$manha','$tarde');
QUIT
SQL`
# Filtra a resposta anterior ficando apenas um valor do tipo HH:MM:SS
# Tempo total do dia (manhã + tarde)
tempo=`echo $tempoSQL | awk '{printf "%s\n",$2}'`
# Horas trabalhadas menos 9h para calcular o saldo de horas
tempo_add=`mysql -uroot -psenha << SQL
SELECT SUBTIME('$tempo','09:00:00');
QUIT
SQL`
# saldo de horas trabalhadas
saldo_horas=`echo $tempo_add | awk '{printf "%s\n",$2}'`
# insere no banco de dados os valores armazenados nas variaveis
cmd=`/usr/bin/mysql -uroot -psenha << SQL
use industria
insert into horarios (in1, out1, in2, out2, tempo, saldo, dia, mes, ano, comment) values
("$in1", "$out1", "$in2", "$out2", "$tempo", "$saldo_horas", "$dia", "$mes", "$ano", "$comment");
quit
SQL`
Nenhum comentário:
Postar um comentário