98 lines
4.1 KiB
SQL
98 lines
4.1 KiB
SQL
-- =============================================
|
|
-- CORRIGIR TABELAS FALTANTES
|
|
-- =============================================
|
|
|
|
-- Criar tabela de configurações se não existir
|
|
CREATE TABLE IF NOT EXISTS configuracoes (
|
|
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
chave VARCHAR(255) NOT NULL UNIQUE,
|
|
valor TEXT,
|
|
descricao TEXT,
|
|
tipo VARCHAR(50) DEFAULT 'string',
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Inserir configurações padrão
|
|
INSERT INTO configuracoes (chave, valor, descricao, tipo) VALUES
|
|
('evolution_api_url', '', 'URL da API Evolution', 'string'),
|
|
('evolution_api_key', '', 'Chave da API Evolution', 'string'),
|
|
('evolution_instance_name', '', 'Nome da instância Evolution', 'string'),
|
|
('chatgpt_api_key', '', 'Chave da API ChatGPT', 'string'),
|
|
('whatsapp_alertas_ativo', 'false', 'Ativar alertas WhatsApp', 'boolean'),
|
|
('whatsapp_primeiro_alerta_dias', '3', 'Dias antes para primeiro alerta', 'number'),
|
|
('whatsapp_segundo_alerta_dias', '0', 'Dias antes para segundo alerta', 'number'),
|
|
('whatsapp_alerta_pos_vencimento_dias', '3', 'Dias após vencimento para alerta', 'number')
|
|
ON CONFLICT (chave) DO NOTHING;
|
|
|
|
-- Verificar se a tabela emprestimos existe, se não criar
|
|
CREATE TABLE IF NOT EXISTS emprestimos (
|
|
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
cliente_id UUID REFERENCES clientes(id),
|
|
data_emprestimo DATE NOT NULL,
|
|
data_devolucao_prevista DATE NOT NULL,
|
|
data_devolucao_real DATE,
|
|
observacoes TEXT,
|
|
status VARCHAR(20) DEFAULT 'ativo' CHECK (status IN ('ativo', 'devolvido', 'cancelado')),
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Criar tabela de itens de empréstimo se não existir
|
|
CREATE TABLE IF NOT EXISTS emprestimo_itens (
|
|
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
emprestimo_id UUID REFERENCES emprestimos(id) ON DELETE CASCADE,
|
|
produto_id UUID REFERENCES produtos(id),
|
|
produto_variacao_id UUID REFERENCES produto_variacoes(id),
|
|
quantidade INTEGER NOT NULL,
|
|
observacoes TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Verificar se a tabela devolucoes existe, se não criar
|
|
CREATE TABLE IF NOT EXISTS devolucoes (
|
|
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
venda_id UUID REFERENCES vendas(id),
|
|
tipo VARCHAR(20) DEFAULT 'devolucao' CHECK (tipo IN ('devolucao', 'troca')),
|
|
motivo TEXT,
|
|
data_devolucao DATE NOT NULL,
|
|
valor_devolvido DECIMAL(10,2),
|
|
observacoes TEXT,
|
|
status VARCHAR(20) DEFAULT 'processada' CHECK (status IN ('pendente', 'processada', 'cancelada')),
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Criar tabela de itens de devolução se não existir
|
|
CREATE TABLE IF NOT EXISTS devolucao_itens (
|
|
id UUID DEFAULT uuid_generate_v4() PRIMARY KEY,
|
|
devolucao_id UUID REFERENCES devolucoes(id) ON DELETE CASCADE,
|
|
venda_item_id UUID REFERENCES venda_itens(id),
|
|
quantidade INTEGER NOT NULL,
|
|
motivo TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Verificar se existe a coluna foto_principal na tabela produtos
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'produtos' AND column_name = 'foto_principal') THEN
|
|
ALTER TABLE produtos ADD COLUMN foto_principal TEXT;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Criar índices para melhor performance
|
|
CREATE INDEX IF NOT EXISTS idx_configuracoes_chave ON configuracoes(chave);
|
|
CREATE INDEX IF NOT EXISTS idx_emprestimos_cliente ON emprestimos(cliente_id);
|
|
CREATE INDEX IF NOT EXISTS idx_emprestimos_status ON emprestimos(status);
|
|
CREATE INDEX IF NOT EXISTS idx_devolucoes_venda ON devolucoes(venda_id);
|
|
CREATE INDEX IF NOT EXISTS idx_devolucoes_data ON devolucoes(data_devolucao);
|
|
|
|
-- Verificar se as tabelas foram criadas
|
|
SELECT 'Tabelas verificadas/criadas:' as status;
|
|
SELECT table_name FROM information_schema.tables
|
|
WHERE table_schema = 'public'
|
|
AND table_name IN ('configuracoes', 'emprestimos', 'emprestimo_itens', 'devolucoes', 'devolucao_itens')
|
|
ORDER BY table_name;
|