|
|
|
|
@@ -39,8 +39,8 @@
|
|
|
|
|
const configQuery = useQuery(api.configuracaoPonto.obterConfiguracao, {});
|
|
|
|
|
|
|
|
|
|
// Query para histórico e saldo do dia
|
|
|
|
|
const funcionarioId = $derived(currentUser?.data?.funcionarioId ?? null);
|
|
|
|
|
const dataHoje = $derived(new Date().toISOString().split('T')[0]!);
|
|
|
|
|
let funcionarioId = $derived(currentUser?.data?.funcionarioId ?? null);
|
|
|
|
|
let dataHoje = $derived(new Date().toISOString().split('T')[0]!);
|
|
|
|
|
|
|
|
|
|
// Usar refreshKey para forçar atualização após registro
|
|
|
|
|
const registrosHojeQuery = useQuery(api.pontos.listarRegistrosDia, {
|
|
|
|
|
@@ -80,10 +80,10 @@
|
|
|
|
|
null
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const registrosHoje = $derived(registrosHojeQuery?.data || []);
|
|
|
|
|
const config = $derived(configQuery?.data);
|
|
|
|
|
let registrosHoje = $derived(registrosHojeQuery?.data || []);
|
|
|
|
|
let config = $derived(configQuery?.data);
|
|
|
|
|
|
|
|
|
|
const proximoTipo = $derived.by(() => {
|
|
|
|
|
let proximoTipo = $derived.by(() => {
|
|
|
|
|
if (registrosHoje.length === 0) {
|
|
|
|
|
return 'entrada';
|
|
|
|
|
}
|
|
|
|
|
@@ -91,7 +91,7 @@
|
|
|
|
|
return getProximoTipoRegistro(ultimoRegistro?.tipo || null);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const tipoLabel = $derived.by(() => {
|
|
|
|
|
let tipoLabel = $derived.by(() => {
|
|
|
|
|
if (config) {
|
|
|
|
|
return getTipoRegistroLabel(proximoTipo, {
|
|
|
|
|
nomeEntrada: config.nomeEntrada,
|
|
|
|
|
@@ -820,12 +820,12 @@
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const dispensaAtiva = $derived(dispensaQuery?.data);
|
|
|
|
|
const estaDispensado = $derived(dispensaAtiva?.dispensado ?? false);
|
|
|
|
|
const motivoDispensa = $derived(dispensaAtiva?.motivo ?? null);
|
|
|
|
|
const temFuncionarioAssociado = $derived(funcionarioId !== null);
|
|
|
|
|
let dispensaAtiva = $derived(dispensaQuery?.data);
|
|
|
|
|
let estaDispensado = $derived(dispensaAtiva?.dispensado ?? false);
|
|
|
|
|
let motivoDispensa = $derived(dispensaAtiva?.motivo ?? null);
|
|
|
|
|
let temFuncionarioAssociado = $derived(funcionarioId !== null);
|
|
|
|
|
|
|
|
|
|
const podeRegistrar = $derived.by(() => {
|
|
|
|
|
let podeRegistrar = $derived.by(() => {
|
|
|
|
|
return (
|
|
|
|
|
!registrando &&
|
|
|
|
|
!coletandoInfo &&
|
|
|
|
|
@@ -875,7 +875,7 @@
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const mapaHorarios = $derived.by(() => {
|
|
|
|
|
let mapaHorarios = $derived.by(() => {
|
|
|
|
|
if (!config) return [];
|
|
|
|
|
|
|
|
|
|
const horarios = [
|
|
|
|
|
@@ -927,8 +927,8 @@
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Dados do histórico e saldo
|
|
|
|
|
const historicoSaldo = $derived(historicoSaldoQuery?.data);
|
|
|
|
|
const registrosOrdenados = $derived.by(() => {
|
|
|
|
|
let historicoSaldo = $derived(historicoSaldoQuery?.data);
|
|
|
|
|
let registrosOrdenados = $derived.by(() => {
|
|
|
|
|
if (!historicoSaldo?.registros) return [];
|
|
|
|
|
return [...historicoSaldo.registros].sort((a, b) => {
|
|
|
|
|
const minutosA = a.hora * 60 + a.minuto;
|
|
|
|
|
@@ -938,7 +938,7 @@
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Formatação do saldo
|
|
|
|
|
const saldoFormatado = $derived.by(() => {
|
|
|
|
|
let saldoFormatado = $derived.by(() => {
|
|
|
|
|
if (!historicoSaldo) return null;
|
|
|
|
|
const minutos = historicoSaldo.saldoMinutos;
|
|
|
|
|
const horas = Math.floor(Math.abs(minutos) / 60);
|
|
|
|
|
@@ -947,7 +947,7 @@
|
|
|
|
|
return `${sinal}${horas}h ${mins}min`;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const saldoPositivo = $derived(historicoSaldo ? historicoSaldo.saldoMinutos >= 0 : false);
|
|
|
|
|
let saldoPositivo = $derived(historicoSaldo ? historicoSaldo.saldoMinutos >= 0 : false);
|
|
|
|
|
|
|
|
|
|
// Posicionamento dos modais baseado no texto "Registrar Ponto"
|
|
|
|
|
let modalPosition = $state<{ top: number; left: number } | null>(null);
|
|
|
|
|
|