CREATE TABLE IF NOT EXISTS grupos_produto (id INTEGER PRIMARY KEY AUTOINCREMENT, empresa_id INTEGER NOT NULL, codigo TEXT NOT NULL, descricao TEXT NOT NULL, desconto_maximo NUMERIC NOT NULL DEFAULT 0, comissao_padrao NUMERIC NOT NULL DEFAULT 0, ativo INTEGER NOT NULL DEFAULT 1, criado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TEXT, FOREIGN KEY (empresa_id) REFERENCES empresas(id));
CREATE INDEX IF NOT EXISTS idx_grupos_empresa_codigo ON grupos_produto (empresa_id, codigo);
CREATE TABLE IF NOT EXISTS subgrupos_produto (id INTEGER PRIMARY KEY AUTOINCREMENT, empresa_id INTEGER NOT NULL, grupo_id INTEGER NOT NULL, codigo TEXT NOT NULL, descricao TEXT NOT NULL, ativo INTEGER NOT NULL DEFAULT 1, criado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TEXT, FOREIGN KEY (empresa_id) REFERENCES empresas(id), FOREIGN KEY (grupo_id) REFERENCES grupos_produto(id));
CREATE INDEX IF NOT EXISTS idx_subgrupos_empresa_codigo ON subgrupos_produto (empresa_id, codigo);
CREATE TABLE IF NOT EXISTS secoes_produto (id INTEGER PRIMARY KEY AUTOINCREMENT, empresa_id INTEGER NOT NULL, codigo TEXT NOT NULL, descricao TEXT NOT NULL, ativo INTEGER NOT NULL DEFAULT 1, criado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TEXT, FOREIGN KEY (empresa_id) REFERENCES empresas(id));
CREATE INDEX IF NOT EXISTS idx_secoes_empresa_codigo ON secoes_produto (empresa_id, codigo);
CREATE TABLE IF NOT EXISTS linhas_produto (id INTEGER PRIMARY KEY AUTOINCREMENT, empresa_id INTEGER NOT NULL, codigo TEXT NOT NULL, descricao TEXT NOT NULL, ativo INTEGER NOT NULL DEFAULT 1, criado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TEXT, FOREIGN KEY (empresa_id) REFERENCES empresas(id));
CREATE INDEX IF NOT EXISTS idx_linhas_empresa_codigo ON linhas_produto (empresa_id, codigo);
