As modificações são:
- a substituição das colunas dia, mês e ano por data que agrupa as três informações;
- pergunta se é um dia útil. Se a resposta for negativa, a forma como a variável saldo é calculada muda para diferenciar a quantidade de horas extras.
  A seguir está a descrição da tabela de acordo com o comando do MySQL describe ponto;
id | int(11) | NO | PRI | NULL | auto_increment |
in1 | time | YES | NULL | ||
out1 | time | YES | NULL | ||
in2 | time | YES | NULL | ||
out2 | time | YES | NULL | ||
tempo | time | YES | NULL | ||
saldo | time | YES | NULL | ||
data | varchar(11) | YES | NULL | ||
comment | text | YES | NULL |
  O script encontra-se abaixo bem como seus comentários para facilitar o entedimento das instruções.
#!/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`
   data=$dia/$mes/$ano
else
  read -p "dia " dia
  read -p "mes " mes
  read -p "ano " ano
  data=$dia/$mes/$ano
fi
# 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`
read -p "Dia útil? [Y/n] " dia_util
if [ "$dia_util" = Y -o "$resp" = y -o "$resp" = S -o "$resp" = s -o ! -n "$dia_util" ]
  then # saldo de horas trabalhadas para dia útil
   saldo_horas=`echo $tempo_add | awk '{printf "%s\n",$2}'`
  else # saldo de horas trabalhadas para sábados, domingo e feriados
   saldo_horas="$tempo"
fi
read -p "Comentário? " comment
echo "$in1" "$out1" "$in2" "$out2" "$tempo" "$saldo_horas" "$data" "$comment"
cmd=`/usr/bin/mysql -uroot -psenha << SQL
   use imf
   insert into ponto (in1, out1, in2, out2, tempo, saldo, data, comment) values
    ("$in1", "$out1", "$in2", "$out2", "$tempo", "$saldo_horas", "$data", "$comment");
  quit
  SQL`
  Através do comando
select * from ponto where id > numero;
sendo numero o id que corresponde a uma data que procuro, o MySQL devolve a listagem de um determinado intervalo que através da ferramenta txt2tags crio as células que são facilmente portáveis para o Excel com um simples CTRL + C e CTRL + V.
Nenhum comentário:
Postar um comentário