-- =====================================================================
-- SEEDS — dados iniciais
-- =====================================================================

-- Planos SaaS de referência (limites mensais de notas)
-- (tabela "planos_catalogo" para exibir no frontend; o vínculo real fica em assinaturas)
CREATE TABLE IF NOT EXISTS planos_catalogo (
  codigo plano_tipo PRIMARY KEY,
  nome   VARCHAR(50) NOT NULL,
  preco_mensal NUMERIC(10,2) NOT NULL,
  limite_notas_mes INT,
  recursos JSONB NOT NULL
);

INSERT INTO planos_catalogo (codigo, nome, preco_mensal, limite_notas_mes, recursos) VALUES
('basico',     'Básico',     49.90,   100, '{"api":false,"webhooks":false,"usuarios":1,"suporte":"email"}'),
('pro',        'Pro',       149.90,  2000, '{"api":true,"webhooks":true,"usuarios":5,"suporte":"chat"}'),
('enterprise', 'Enterprise',499.00,  NULL, '{"api":true,"webhooks":true,"usuarios":-1,"suporte":"prioritario","sla":"99.9"}')
ON CONFLICT (codigo) DO NOTHING;

-- =====================================================================
-- CFOPs mais usados (catálogo de referência — opcional)
-- =====================================================================
CREATE TABLE IF NOT EXISTS cfops (
  codigo CHAR(4) PRIMARY KEY,
  descricao TEXT NOT NULL,
  tipo CHAR(1) NOT NULL  -- E=entrada, S=saída
);

INSERT INTO cfops (codigo, descricao, tipo) VALUES
('5101','Venda de produção do estabelecimento (dentro do estado)','S'),
('5102','Venda de mercadoria adquirida ou recebida de terceiros (dentro do estado)','S'),
('5405','Venda de mercadoria adquirida com substituição tributária','S'),
('5910','Remessa em bonificação, doação ou brinde','S'),
('5949','Outra saída de mercadoria não especificada','S'),
('6101','Venda de produção do estabelecimento (fora do estado)','S'),
('6102','Venda de mercadoria adquirida ou recebida de terceiros (fora do estado)','S'),
('6108','Venda de mercadoria a não contribuinte (consumidor final, fora do estado)','S'),
('5933','Prestação de serviço tributada pelo ISSQN','S'),
('1102','Compra para comercialização (dentro do estado)','E'),
('2102','Compra para comercialização (fora do estado)','E')
ON CONFLICT DO NOTHING;

-- =====================================================================
-- ALÍQUOTAS DE REFERÊNCIA — Reforma Tributária (IBS / CBS / IS)
-- ATENÇÃO: valores estimados/preliminares. Ajustar conforme LCs e calibração.
-- =====================================================================
CREATE TABLE IF NOT EXISTS aliquotas_reforma (
  id SERIAL PRIMARY KEY,
  competencia_inicio DATE NOT NULL,
  competencia_fim    DATE,
  cClassTrib VARCHAR(6) NOT NULL,
  descricao TEXT NOT NULL,
  aliq_ibs NUMERIC(7,4) NOT NULL,
  aliq_cbs NUMERIC(7,4) NOT NULL,
  aliq_is  NUMERIC(7,4) NOT NULL DEFAULT 0,
  reducao_base NUMERIC(5,2) NOT NULL DEFAULT 0
);

INSERT INTO aliquotas_reforma
  (competencia_inicio, cClassTrib, descricao, aliq_ibs, aliq_cbs, aliq_is, reducao_base) VALUES
('2026-01-01','000001','Operações em geral — alíquota padrão',                    0.0010, 0.0090, 0.0000, 0.00),
('2027-01-01','000001','Operações em geral — alíquota padrão (estimada)',         0.0850, 0.0780, 0.0000, 0.00),
('2026-01-01','000100','Alimentos da cesta básica (alíquota zero)',               0.0000, 0.0000, 0.0000, 100.00),
('2026-01-01','000200','Saúde — redução de 60%',                                  0.0340, 0.0312, 0.0000, 60.00),
('2026-01-01','000300','Educação — redução de 60%',                               0.0340, 0.0312, 0.0000, 60.00),
('2026-01-01','000400','Medicamentos — redução de 60%',                           0.0340, 0.0312, 0.0000, 60.00),
('2026-01-01','000500','Transporte coletivo de passageiros — redução de 60%',     0.0340, 0.0312, 0.0000, 60.00),
('2026-01-01','000900','Imposto Seletivo — bebidas alcoólicas',                   0.0850, 0.0780, 0.1000, 0.00),
('2026-01-01','000910','Imposto Seletivo — cigarros e fumo',                      0.0850, 0.0780, 0.2500, 0.00),
('2026-01-01','000920','Imposto Seletivo — veículos com alta emissão',            0.0850, 0.0780, 0.0500, 0.00),
('2026-01-01','000930','Imposto Seletivo — bebidas açucaradas',                   0.0850, 0.0780, 0.0300, 0.00);

-- =====================================================================
-- CST IBS/CBS — códigos previstos
-- =====================================================================
CREATE TABLE IF NOT EXISTS cst_ibs_cbs (
  codigo VARCHAR(3) PRIMARY KEY,
  descricao TEXT NOT NULL
);
INSERT INTO cst_ibs_cbs (codigo, descricao) VALUES
('000','Tributação integral'),
('010','Tributação com redução de alíquota'),
('020','Tributação com redução de base de cálculo'),
('030','Diferimento'),
('040','Substituição tributária'),
('050','Crédito presumido'),
('060','Imune'),
('070','Não tributado'),
('080','Suspensão'),
('090','Outros')
ON CONFLICT DO NOTHING;

-- =====================================================================
-- USUÁRIO ADMIN INICIAL (senha: admin123 — TROCAR EM PRODUÇÃO)
-- hash bcrypt cost 10 da string "admin123"
-- =====================================================================
INSERT INTO users (id, email, senha_hash, nome)
VALUES (
  '00000000-0000-0000-0000-000000000001',
  'admin@local.test',
  '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi',
  'Administrador'
) ON CONFLICT (email) DO NOTHING;

-- Tenant DEMO
INSERT INTO tenants (id, razao_social, nome_fantasia, cnpj, crt, regime, plano, ambiente, uf, municipio, municipio_ibge)
VALUES (
  '00000000-0000-0000-0000-0000000000a1',
  'EMPRESA DEMO LTDA','Demo','12345678000199',3,'lucro_presumido','pro','homologacao','SP','São Paulo','3550308'
) ON CONFLICT (cnpj) DO NOTHING;

INSERT INTO tenant_users (tenant_id, user_id, role)
VALUES ('00000000-0000-0000-0000-0000000000a1','00000000-0000-0000-0000-000000000001','owner')
ON CONFLICT DO NOTHING;

-- Numeração inicial
INSERT INTO numeracao_documentos (tenant_id, modelo, serie, proximo_numero) VALUES
('00000000-0000-0000-0000-0000000000a1','nfe',  1, 1),
('00000000-0000-0000-0000-0000000000a1','nfce', 1, 1),
('00000000-0000-0000-0000-0000000000a1','nfse', 1, 1),
('00000000-0000-0000-0000-0000000000a1','cte',  1, 1)
ON CONFLICT DO NOTHING;
