CREATE TABLE IF NOT EXISTS grupos_produto (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, empresa_id BIGINT NOT NULL REFERENCES empresas(id), codigo VARCHAR(20) NOT NULL, descricao VARCHAR(160) NOT NULL, desconto_maximo NUMERIC(7,2) NOT NULL DEFAULT 0, comissao_padrao NUMERIC(7,2) NOT NULL DEFAULT 0, ativo BOOLEAN NOT NULL DEFAULT TRUE, criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL);
CREATE INDEX IF NOT EXISTS idx_grupos_empresa_codigo ON grupos_produto (empresa_id, codigo);
CREATE TABLE IF NOT EXISTS subgrupos_produto (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, empresa_id BIGINT NOT NULL REFERENCES empresas(id), grupo_id BIGINT NOT NULL REFERENCES grupos_produto(id), codigo VARCHAR(20) NOT NULL, descricao VARCHAR(160) NOT NULL, ativo BOOLEAN NOT NULL DEFAULT TRUE, criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL);
CREATE INDEX IF NOT EXISTS idx_subgrupos_empresa_codigo ON subgrupos_produto (empresa_id, codigo);
CREATE TABLE IF NOT EXISTS secoes_produto (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, empresa_id BIGINT NOT NULL REFERENCES empresas(id), codigo VARCHAR(20) NOT NULL, descricao VARCHAR(160) NOT NULL, ativo BOOLEAN NOT NULL DEFAULT TRUE, criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL);
CREATE INDEX IF NOT EXISTS idx_secoes_empresa_codigo ON secoes_produto (empresa_id, codigo);
CREATE TABLE IF NOT EXISTS linhas_produto (id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, empresa_id BIGINT NOT NULL REFERENCES empresas(id), codigo VARCHAR(20) NOT NULL, descricao VARCHAR(160) NOT NULL, ativo BOOLEAN NOT NULL DEFAULT TRUE, criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, atualizado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL);
CREATE INDEX IF NOT EXISTS idx_linhas_empresa_codigo ON linhas_produto (empresa_id, codigo);
