ALTER TABLE empresas
    ADD COLUMN codigo VARCHAR(20) NULL,
    ADD COLUMN grupo_empresarial VARCHAR(160) NULL,
    ADD COLUMN tipo_empresa VARCHAR(10) NOT NULL DEFAULT 'matriz',
    ADD COLUMN matriz_id BIGINT UNSIGNED NULL,
    ADD COLUMN cnpj VARCHAR(14) NULL,
    ADD COLUMN inscricao_estadual VARCHAR(20) NULL,
    ADD COLUMN inscricao_municipal VARCHAR(20) NULL,
    ADD COLUMN regime_tributario VARCHAR(30) NOT NULL DEFAULT 'simples_nacional',
    ADD COLUMN cnae_principal VARCHAR(10) NULL,
    ADD COLUMN suframa VARCHAR(20) NULL,
    ADD COLUMN cep VARCHAR(8) NULL,
    ADD COLUMN logradouro VARCHAR(160) NULL,
    ADD COLUMN numero VARCHAR(20) NULL,
    ADD COLUMN complemento VARCHAR(80) NULL,
    ADD COLUMN bairro VARCHAR(80) NULL,
    ADD COLUMN municipio VARCHAR(100) NULL,
    ADD COLUMN codigo_ibge VARCHAR(7) NULL,
    ADD COLUMN uf CHAR(2) NULL,
    ADD COLUMN telefone VARCHAR(20) NULL,
    ADD COLUMN email VARCHAR(160) NULL,
    ADD COLUMN site VARCHAR(160) NULL,
    ADD COLUMN responsavel VARCHAR(120) NULL,
    ADD COLUMN ambiente_fiscal VARCHAR(15) NOT NULL DEFAULT 'homologacao',
    ADD COLUMN timezone VARCHAR(60) NOT NULL DEFAULT 'America/Manaus',
    ADD COLUMN excluido_em TIMESTAMP NULL;
UPDATE empresas SET codigo = CAST(id AS CHAR), grupo_empresarial = COALESCE(NULLIF(nome_fantasia, ''), razao_social) WHERE codigo IS NULL;
ALTER TABLE empresas MODIFY codigo VARCHAR(20) NOT NULL, MODIFY grupo_empresarial VARCHAR(160) NOT NULL;
CREATE UNIQUE INDEX idx_empresas_codigo ON empresas (codigo);
CREATE UNIQUE INDEX idx_empresas_cnpj ON empresas (cnpj);
CREATE INDEX idx_empresas_matriz ON empresas (matriz_id);
ALTER TABLE empresas ADD CONSTRAINT fk_empresas_matriz FOREIGN KEY (matriz_id) REFERENCES empresas(id);
