CREATE TABLE IF NOT EXISTS grupos_produto (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, empresa_id BIGINT UNSIGNED NOT NULL,
    codigo VARCHAR(20) NOT NULL, descricao VARCHAR(160) NOT NULL,
    desconto_maximo DECIMAL(7,2) NOT NULL DEFAULT 0, comissao_padrao DECIMAL(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 ON UPDATE CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL,
    CONSTRAINT fk_grupos_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id),
    INDEX idx_grupos_empresa_codigo (empresa_id, codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS subgrupos_produto (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, empresa_id BIGINT UNSIGNED NOT NULL, grupo_id BIGINT UNSIGNED NOT NULL,
    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 ON UPDATE CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL,
    CONSTRAINT fk_subgrupos_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id),
    CONSTRAINT fk_subgrupos_grupo FOREIGN KEY (grupo_id) REFERENCES grupos_produto(id), INDEX idx_subgrupos_empresa_codigo (empresa_id, codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS secoes_produto (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, empresa_id BIGINT UNSIGNED NOT NULL, 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 ON UPDATE CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL,
    CONSTRAINT fk_secoes_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id), INDEX idx_secoes_empresa_codigo (empresa_id, codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS linhas_produto (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, empresa_id BIGINT UNSIGNED NOT NULL, 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 ON UPDATE CURRENT_TIMESTAMP, excluido_em TIMESTAMP NULL,
    CONSTRAINT fk_linhas_empresa FOREIGN KEY (empresa_id) REFERENCES empresas(id), INDEX idx_linhas_empresa_codigo (empresa_id, codigo)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
