Add equipment loan feature and USB bulk control
- Add emprestimos (equipment loan) module in Convex with queries/mutations - Create emprestimos page with full CRUD and status tracking - Add USB bulk control to admin devices overview - Fix Portuguese accents in USB policy control component - Fix dead code warnings in Rust agent - Fix tiptap type error in rich text editor
This commit is contained in:
parent
49aa143a80
commit
063c5dfde7
11 changed files with 1448 additions and 26 deletions
|
|
@ -767,4 +767,68 @@ export default defineSchema({
|
|||
_ttl: v.optional(v.number()),
|
||||
})
|
||||
.index("by_key", ["tenantId", "cacheKey"]),
|
||||
|
||||
// ================================
|
||||
// Emprestimo de Equipamentos
|
||||
// ================================
|
||||
emprestimos: defineTable({
|
||||
tenantId: v.string(),
|
||||
reference: v.number(),
|
||||
clienteId: v.id("companies"),
|
||||
clienteSnapshot: v.object({
|
||||
name: v.string(),
|
||||
slug: v.optional(v.string()),
|
||||
}),
|
||||
responsavelNome: v.string(),
|
||||
responsavelContato: v.optional(v.string()),
|
||||
tecnicoId: v.id("users"),
|
||||
tecnicoSnapshot: v.object({
|
||||
name: v.string(),
|
||||
email: v.optional(v.string()),
|
||||
}),
|
||||
equipamentos: v.array(v.object({
|
||||
id: v.string(),
|
||||
tipo: v.string(),
|
||||
marca: v.string(),
|
||||
modelo: v.string(),
|
||||
serialNumber: v.optional(v.string()),
|
||||
patrimonio: v.optional(v.string()),
|
||||
})),
|
||||
quantidade: v.number(),
|
||||
valor: v.optional(v.number()),
|
||||
dataEmprestimo: v.number(),
|
||||
dataFimPrevisto: v.number(),
|
||||
dataDevolucao: v.optional(v.number()),
|
||||
status: v.string(),
|
||||
observacoes: v.optional(v.string()),
|
||||
multaDiaria: v.optional(v.number()),
|
||||
multaCalculada: v.optional(v.number()),
|
||||
createdBy: v.id("users"),
|
||||
updatedBy: v.optional(v.id("users")),
|
||||
createdAt: v.number(),
|
||||
updatedAt: v.number(),
|
||||
})
|
||||
.index("by_tenant", ["tenantId"])
|
||||
.index("by_tenant_status", ["tenantId", "status"])
|
||||
.index("by_tenant_cliente", ["tenantId", "clienteId"])
|
||||
.index("by_tenant_tecnico", ["tenantId", "tecnicoId"])
|
||||
.index("by_tenant_reference", ["tenantId", "reference"])
|
||||
.index("by_tenant_created", ["tenantId", "createdAt"])
|
||||
.index("by_tenant_data_fim", ["tenantId", "dataFimPrevisto"]),
|
||||
|
||||
emprestimoHistorico: defineTable({
|
||||
tenantId: v.string(),
|
||||
emprestimoId: v.id("emprestimos"),
|
||||
tipo: v.string(),
|
||||
descricao: v.string(),
|
||||
alteracoes: v.optional(v.any()),
|
||||
autorId: v.id("users"),
|
||||
autorSnapshot: v.object({
|
||||
name: v.string(),
|
||||
email: v.optional(v.string()),
|
||||
}),
|
||||
createdAt: v.number(),
|
||||
})
|
||||
.index("by_emprestimo", ["emprestimoId"])
|
||||
.index("by_emprestimo_created", ["emprestimoId", "createdAt"]),
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue