refactor: update vacation management structure and enhance status handling
- Renamed and refactored vacation-related types and components for clarity, transitioning from 'SolicitacaoFerias' to 'PeriodoFerias'. - Improved the handling of vacation statuses, including the addition of 'EmFérias' to the status options. - Streamlined the vacation request and approval components to better reflect individual vacation periods. - Enhanced data handling in backend queries and schema to support the new structure and ensure accurate status updates. - Improved user experience by refining UI elements related to vacation periods and their statuses.
This commit is contained in:
@@ -208,54 +208,44 @@ export default defineSchema({
|
||||
.index("by_licenca_original", ["licencaOriginalId"])
|
||||
.index("by_funcionario_and_tipo", ["funcionarioId", "tipo"]),
|
||||
|
||||
solicitacoesFerias: defineTable({
|
||||
ferias: defineTable({
|
||||
funcionarioId: v.id("funcionarios"),
|
||||
anoReferencia: v.number(),
|
||||
dataInicio: v.string(),
|
||||
dataFim: v.string(),
|
||||
diasFerias: v.number(),
|
||||
status: v.union(
|
||||
v.literal("aguardando_aprovacao"),
|
||||
v.literal("aprovado"),
|
||||
v.literal("reprovado"),
|
||||
v.literal("data_ajustada_aprovada")
|
||||
),
|
||||
periodos: v.array(
|
||||
v.object({
|
||||
dataInicio: v.string(),
|
||||
dataFim: v.string(),
|
||||
diasCorridos: v.number(),
|
||||
})
|
||||
v.literal("data_ajustada_aprovada"),
|
||||
v.literal("EmFérias")
|
||||
),
|
||||
gestorId: v.optional(v.id("usuarios")),
|
||||
observacao: v.optional(v.string()),
|
||||
motivoReprovacao: v.optional(v.string()),
|
||||
gestorId: v.optional(v.id("usuarios")),
|
||||
dataAprovacao: v.optional(v.number()),
|
||||
dataReprovacao: v.optional(v.number()),
|
||||
diasAbono: v.number(),
|
||||
historicoAlteracoes: v.optional(
|
||||
v.array(
|
||||
v.object({
|
||||
data: v.number(),
|
||||
usuarioId: v.id("usuarios"),
|
||||
acao: v.string(),
|
||||
periodosAnteriores: v.optional(
|
||||
v.array(
|
||||
v.object({
|
||||
dataInicio: v.string(),
|
||||
dataFim: v.string(),
|
||||
diasCorridos: v.number(),
|
||||
})
|
||||
)
|
||||
),
|
||||
})
|
||||
)
|
||||
),
|
||||
})
|
||||
.index("by_funcionario", ["funcionarioId"])
|
||||
.index("by_status", ["status"])
|
||||
.index("by_funcionario_and_ano", ["funcionarioId", "anoReferencia"])
|
||||
.index("by_funcionario_and_status", ["funcionarioId", "status"])
|
||||
.index("by_status", ["status"])
|
||||
.index("by_ano", ["anoReferencia"]),
|
||||
|
||||
notificacoesFerias: defineTable({
|
||||
destinatarioId: v.id("usuarios"),
|
||||
solicitacaoFeriasId: v.id("solicitacoesFerias"),
|
||||
feriasId: v.id("ferias"),
|
||||
tipo: v.union(
|
||||
v.literal("nova_solicitacao"),
|
||||
v.literal("aprovado"),
|
||||
@@ -304,27 +294,6 @@ export default defineSchema({
|
||||
.index("by_destinatario", ["destinatarioId"])
|
||||
.index("by_destinatario_and_lida", ["destinatarioId", "lida"]),
|
||||
|
||||
// Períodos aquisitivos e saldos de férias
|
||||
periodosAquisitivos: defineTable({
|
||||
funcionarioId: v.id("funcionarios"),
|
||||
anoReferencia: v.number(), // Ano do período aquisitivo (ex: 2024)
|
||||
dataInicio: v.string(), // Data de início do período aquisitivo
|
||||
dataFim: v.string(), // Data de fim do período aquisitivo
|
||||
diasDireito: v.number(), // Dias de férias que tem direito (30 ou proporcional)
|
||||
diasUsados: v.number(), // Dias já usados
|
||||
diasPendentes: v.number(), // Dias em solicitações aguardando aprovação
|
||||
diasDisponiveis: v.number(), // Dias disponíveis = direito - usados - pendentes
|
||||
abonoPermitido: v.boolean(), // Se pode vender 1/3 das férias
|
||||
diasAbono: v.number(), // Dias vendidos como abono pecuniário
|
||||
status: v.union(
|
||||
v.literal("ativo"), // Período vigente
|
||||
v.literal("vencido"), // Período vencido (não tirou férias)
|
||||
v.literal("concluido") // Período totalmente utilizado
|
||||
),
|
||||
})
|
||||
.index("by_funcionario", ["funcionarioId"])
|
||||
.index("by_funcionario_and_ano", ["funcionarioId", "anoReferencia"])
|
||||
.index("by_funcionario_and_status", ["funcionarioId", "status"]),
|
||||
|
||||
times: defineTable({
|
||||
nome: v.string(),
|
||||
|
||||
Reference in New Issue
Block a user