57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import { defineTable } from 'convex/server';
|
|
import { v } from 'convex/values';
|
|
|
|
export const pedidosTables = {
|
|
pedidos: defineTable({
|
|
numeroSei: v.optional(v.string()),
|
|
status: v.union(
|
|
v.literal('em_rascunho'),
|
|
v.literal('aguardando_aceite'),
|
|
v.literal('em_analise'),
|
|
v.literal('precisa_ajustes'),
|
|
v.literal('cancelado'),
|
|
v.literal('concluido')
|
|
),
|
|
// acaoId removed
|
|
criadoPor: v.id('usuarios'),
|
|
criadoEm: v.number(),
|
|
atualizadoEm: v.number()
|
|
})
|
|
.index('by_numeroSei', ['numeroSei'])
|
|
.index('by_status', ['status'])
|
|
.index('by_criadoPor', ['criadoPor']),
|
|
|
|
objetoItems: defineTable({
|
|
pedidoId: v.id('pedidos'),
|
|
objetoId: v.id('objetos'), // was produtoId
|
|
ataId: v.optional(v.id('atas')),
|
|
acaoId: v.optional(v.id('acoes')), // Moved from pedidos
|
|
modalidade: v.union(
|
|
v.literal('dispensa'),
|
|
v.literal('inexgibilidade'),
|
|
v.literal('adesao'),
|
|
v.literal('consumo')
|
|
),
|
|
valorEstimado: v.string(),
|
|
valorReal: v.optional(v.string()),
|
|
quantidade: v.number(),
|
|
adicionadoPor: v.id('funcionarios'),
|
|
criadoEm: v.number()
|
|
})
|
|
.index('by_pedidoId', ['pedidoId'])
|
|
.index('by_objetoId', ['objetoId'])
|
|
.index('by_adicionadoPor', ['adicionadoPor'])
|
|
.index('by_acaoId', ['acaoId']),
|
|
|
|
historicoPedidos: defineTable({
|
|
pedidoId: v.id('pedidos'),
|
|
usuarioId: v.id('usuarios'),
|
|
acao: v.string(), // "criacao", "alteracao_status", "adicao_item", "remocao_item", "edicao_item"
|
|
detalhes: v.optional(v.string()), // JSON string
|
|
data: v.number()
|
|
})
|
|
.index('by_pedidoId', ['pedidoId'])
|
|
.index('by_usuarioId', ['usuarioId'])
|
|
.index('by_data', ['data'])
|
|
};
|