F000MFA - Migrador CNPJ Alfanumérico
Esta tela tem como objetivo migrar todos os campos do sistema em que o CNPJ está definido como numérico para o respectivo campo em formato alfanumérico, bem como realizar os ajustes necessários nas tabelas em que o CNPJ numérico é utilizado como chave primária.
Para clientes que possuam middleware, a migração ocorrerá automaticamente por meio do processo agendado Migrador CNPJ Alfa, que será criado automaticamente na atualização do sistema para a versão 5.10.4.97. A migração via processo agendado ocorrerá em pacotes, conforme a disponibilidade do middleware, até que todos os campos estejam migrados.
Para clientes que não possuam middleware, é necessário que a migração seja realizada por meio desta tela.
Importante
É de extrema importância que todos os processamentos sejam efetuados e que não haja pendências para a atualização do ERP na versão trimestral de março/2026. A atualização não pode prosseguir caso a migração não esteja concluída. Recomendamos realizar a migração o quanto antes para evitar impedimentos no processo de atualização.
Além da execução da rotina de migração, é fundamental que a empresa revise e adeque processos internos que utilizam o campo de CNPJ em sua forma numérica anterior, incluindo:
- Regras e customizações: atualizar validações, regras de negócio, relatórios e quaisquer customizações que utilizem o campo numérico de CNPJ. As implementações devem passar a utilizar o novo campo alfanumérico.
- Integrações: adequar integrações via web services, utilizando o novo campo alfanumérico disponibilizado nesses serviços.
A ferramenta de apoio Robô Diagnósticos está habilitada para auxiliar na identificação de customizações possivelmente impactadas.
Caso haja lentidão para carregar os dados da grade na tela, desmarque a caixa de seleção Mostrar CNPJ alfanuméricos pendentes antes de acionar o botão Mostrar.
Quantidade de pacotes
Define a quantidade de pacotes que serão executados durante o processamento. Ao lado de cada item na grade, é apresentado o cálculo da quantidade de pacotes necessários para concluir toda a migração da tabela. Cada pacote representa 50 mil registros. Recomenda-se processar até 50 pacotes por vez.
Grades
Seleção
Marca o registro para ser executado.
Status
Status atual do registro: Pendente, finalizado ou com erro.
Operação
Operação que o registro irá realizar.
Limpeza de chaves inconsistentes
Verifica e corrige inconsistências nas chaves de identificação das notas de recebimento (F000INE). Quando registros filhos possuem chaves vazias ou duplicadas, a chave da nota-mãe é redefinida para permitir sua regeneração correta durante a etapa de atualização de chaves. Este item é obrigatório e impede a atualização da versão enquanto houver pacotes pendentes.
Exclusão de registros antigos
Realiza a limpeza dos registros das notas de recebimento (F000INE) com mais de 4 meses. Este item será impeditivo para a atualização da versão caso existam pacotes pendentes.
Atualização das chaves de tabelas de pré-cadastro de recebimento
Realiza a atualização das chaves das tabelas de pré-cadastro no recebimento (E095FOR_REC/E095ORM_REC/E073TRA_REC).Este item será impeditivo para a atualização da versão caso existam pacotes pendentes.
Atualização das chaves de notas de recebimento e Atualização das chaves de demais tabelas
Efetua a atualização das chaves das tabelas cuja composição inclui o campo de CNPJ numérico, que passará a utilizar um identificador único. Estes itens serão impeditivos para a atualização da versão caso existam pacotes pendentes.
Atualização para CNPJ alfa numérico
Efetua a atualização do campo CNPJ alfa com base no campo de CNPJ numérico nas tabelas e com os campos indicados.
Tabel
Nome da tabela que será atualizada.
Campo Numérico
Nome do campo CNPJ Numérico de origem.
Campo Alfanumérico
Nome do campo CNPJ Alfanumérico de destino.
Tipo Pessoa
Nome do campo que indica o tipo pessoa física ou jurídica do campo que será atualizado.
Raiz
Indica se o campo de CNPJ é raiz.
Qtd. Pacotes Restantes
A quantidade de pacotes pendentes de atualização.
Observação
Irá retornar o tempo médio de execução, ou o log de erro caso ocorra.
Erros durante execução
Possíveis erros podem acontecer nos updates das tabelas por conta de triggers.
Exemplo:
- Campo INSEST não pode ser nulo - Trigger T085CLIU
- Neste caso tem que ser executado o script UPDATE E085CLI SET INSEST = ' ' WHERE INSEST IS NULL
Em caso de erro, será gerado na pasta de logs um arquivo com o prefixo "MIGRADORCNPJ-", contendo os detalhes da ocorrência.
Durante a migração para o CNPJ alfanumérico, alguns registros de Pessoa Física podem ter ficado com o campo de documento (DocIde) gravado com mais de 11 caracteres (tamanho de CNPJ), gerando inconsistências em processos como:
- Emissão de NF-e;
- Validações de cadastro.
A tela F000MFA só preenche o campo DocIde quando ele está vazio (NULL ou em branco). Portanto, para corrigir registros já preenchidos incorretamente, é necessário limpar o campo manualmente e, em seguida, executar a F000MFA para que ela recalcule o valor correto.
Passo a passo
1. Identificar as tabelas com registros inconsistentes
Execute o comando de identificação na base do cliente. Ele percorre todas as tabelas que possuem o campo de documento e retorna:
- O código da tabela;
- O nome do campo de documento (DocIde);
- O campo que indica o tipo de pessoa (Física ou Jurídica);
- A quantidade de registros inválidos.
Somente as tabelas com registros afetados são exibidas no resultado
SELECT * FROM ( SELECT 'E000NFC' AS TABELA, 'DOCIDEADQ' AS CAMPO_DOCUMENTO, 'TIPAEI' AS CAMPO_TIPOPESSOA, COUNT(*) AS QTD FROM E000NFC WHERE TIPAEI = 'F' AND LENGTH(TRIM(DOCIDEADQ)) > 11 UNION ALL SELECT 'E051RNF', 'DOCIDEADV', 'TIPADV', COUNT(*) FROM E051RNF WHERE TIPADV = 'F' AND LENGTH(TRIM(DOCIDEADV)) > 11 UNION ALL SELECT 'E062RET', 'DOCIDERET', 'TIPRET', COUNT(*) FROM E062RET WHERE TIPRET = 'F' AND LENGTH(TRIM(DOCIDERET)) > 11 UNION ALL SELECT 'E073TRA', 'DOCIDETRA', 'TIPTRA', COUNT(*) FROM E073TRA WHERE TIPTRA = 'F' AND LENGTH(TRIM(DOCIDETRA)) > 11 UNION ALL SELECT 'E073TRA_REC', 'DOCIDETRA', 'TIPTRA', COUNT(*) FROM E073TRA_REC WHERE TIPTRA = 'F' AND LENGTH(TRIM(DOCIDETRA)) > 11 UNION ALL SELECT 'E073VTR', 'DOCIDE', 'TIPTRA', COUNT(*) FROM E073VTR WHERE TIPTRA = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E076FAB', 'DOCIDEFAB', 'TIPFAB', COUNT(*) FROM E076FAB WHERE TIPFAB = 'F' AND LENGTH(TRIM(DOCIDEFAB)) > 11 UNION ALL SELECT 'E077FAV', 'DOCIDEFAV', 'TIPFAV', COUNT(*) FROM E077FAV WHERE TIPFAV = 'F' AND LENGTH(TRIM(DOCIDEFAV)) > 11 UNION ALL SELECT 'E085ENT', 'DOCIDEENT', 'TIPENT', COUNT(*) FROM E085ENT WHERE TIPENT = 'F' AND LENGTH(TRIM(DOCIDEENT)) > 11 UNION ALL SELECT 'E085CLI', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E085CLI WHERE TIPCLI = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E085VCL', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E085VCL WHERE TIPCLI = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E086SAC', 'DOCIDESAC', 'TIPSAC', COUNT(*) FROM E086SAC WHERE TIPSAC = 'F' AND LENGTH(TRIM(DOCIDESAC)) > 11 UNION ALL SELECT 'E090REP', 'DOCIDEREP', 'TIPREP', COUNT(*) FROM E090REP WHERE TIPREP = 'F' AND LENGTH(TRIM(DOCIDEREP)) > 11 UNION ALL SELECT 'E090VRE', 'DOCIDEREP', 'TIPREP', COUNT(*) FROM E090VRE WHERE TIPREP = 'F' AND LENGTH(TRIM(DOCIDEREP)) > 11 UNION ALL SELECT 'E095FOR', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E095FOR WHERE TIPFOR = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E095FOR_REC', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E095FOR_REC WHERE TIPFOR = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E095ORM', 'DOCIDEORM', 'TIPORM', COUNT(*) FROM E095ORM WHERE TIPORM = 'F' AND LENGTH(TRIM(DOCIDEORM)) > 11 UNION ALL SELECT 'E095ORM_REC', 'DOCIDE', 'TIPORM', COUNT(*) FROM E095ORM_REC WHERE TIPORM = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E095VFO', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E095VFO WHERE TIPFOR = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E110CLI', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E110CLI WHERE TIPCLI = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E110FOR', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E110FOR WHERE TIPFOR = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E110REP', 'DOCIDE', 'TIPREP', COUNT(*) FROM E110REP WHERE TIPREP = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E110TRA', 'DOCIDE', 'TIPTRA', COUNT(*) FROM E110TRA WHERE TIPTRA = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E113RTC', 'DOCIDE', 'TIPREP', COUNT(*) FROM E113RTC WHERE TIPREP = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E120EAC', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E120EAC WHERE TIPCLI = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E140AUT', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E140AUT WHERE TIPCLI = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E140CCE', 'DOCIDEAUT', 'TIPCAT', COUNT(*) FROM E140CCE WHERE TIPCAT = 'F' AND LENGTH(TRIM(DOCIDEAUT)) > 11 UNION ALL SELECT 'E140CTE', 'DOCIDEDAN', 'DANCLI', COUNT(*) FROM E140CTE WHERE DANCLI = 'F' AND LENGTH(TRIM(DOCIDEDAN)) > 11 UNION ALL SELECT 'E140DCF', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E140DCF WHERE TIPCLI = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E140NFV', 'DOCIDERDE', 'TIPRDE', COUNT(*) FROM E140NFV WHERE TIPRDE = 'F' AND LENGTH(TRIM(DOCIDERDE)) > 11 UNION ALL SELECT 'E445NFC', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E445NFC WHERE TIPFOR = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E445NFP', 'DOCIDEFOR', 'TIPFOR', COUNT(*) FROM E445NFP WHERE TIPFOR = 'F' AND LENGTH(TRIM(DOCIDEFOR)) > 11 UNION ALL SELECT 'E603IMC', 'DOCIDEFOR', 'TIPFOR', COUNT(*) FROM E603IMC WHERE TIPFOR = 'F' AND LENGTH(TRIM(DOCIDEFOR)) > 11 UNION ALL SELECT 'E615CRD', 'DOCIDE', 'TIPPES', COUNT(*) FROM E615CRD WHERE TIPPES = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E660ARV', 'DOCIDE', 'TIPADV', COUNT(*) FROM E660ARV WHERE TIPADV = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E660IRZ', 'DOCIDECLI', 'TIPCLI', COUNT(*) FROM E660IRZ WHERE TIPCLI = 'F' AND LENGTH(TRIM(DOCIDECLI)) > 11 UNION ALL SELECT 'E660NFV', 'DOCIDERDE', 'TIPRDE', COUNT(*) FROM E660NFV WHERE TIPRDE = 'F' AND LENGTH(TRIM(DOCIDERDE)) > 11 UNION ALL SELECT 'E690ARJ', 'DOCIDE', 'TIPADV', COUNT(*) FROM E690ARJ WHERE TIPADV = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E690ARP', 'DOCIDE', 'TIPADV', COUNT(*) FROM E690ARP WHERE TIPADV = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E690ARV', 'DOCIDE', 'TIPADV', COUNT(*) FROM E690ARV WHERE TIPADV = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E690IRE', 'DOCIDE', 'TIPINS', COUNT(*) FROM E690IRE WHERE TIPINS = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 UNION ALL SELECT 'E690RDE', 'DOCIDE', 'TIPINS', COUNT(*) FROM E690RDE WHERE TIPINS = 'F' AND LENGTH(TRIM(DOCIDE)) > 11 ) WHERE QTD > 0 ORDER BY QTD DESC;
SELECT * FROM ( SELECT 'E000NFC' AS TABELA, 'DOCIDEADQ' AS CAMPO_DOCUMENTO, 'TIPAEI' AS CAMPO_TIPOPESSOA, COUNT(*) AS QTD FROM E000NFC WHERE TIPAEI = 'F' AND LEN(LTRIM(RTRIM(DOCIDEADQ))) > 11 UNION ALL SELECT 'E051RNF', 'DOCIDEADV', 'TIPADV', COUNT(*) FROM E051RNF WHERE TIPADV = 'F' AND LEN(LTRIM(RTRIM(DOCIDEADV))) > 11 UNION ALL SELECT 'E062RET', 'DOCIDERET', 'TIPRET', COUNT(*) FROM E062RET WHERE TIPRET = 'F' AND LEN(LTRIM(RTRIM(DOCIDERET))) > 11 UNION ALL SELECT 'E073TRA', 'DOCIDETRA', 'TIPTRA', COUNT(*) FROM E073TRA WHERE TIPTRA = 'F' AND LEN(LTRIM(RTRIM(DOCIDETRA))) > 11 UNION ALL SELECT 'E073TRA_REC', 'DOCIDETRA', 'TIPTRA', COUNT(*) FROM E073TRA_REC WHERE TIPTRA = 'F' AND LEN(LTRIM(RTRIM(DOCIDETRA))) > 11 UNION ALL SELECT 'E073VTR', 'DOCIDE', 'TIPTRA', COUNT(*) FROM E073VTR WHERE TIPTRA = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E076FAB', 'DOCIDEFAB', 'TIPFAB', COUNT(*) FROM E076FAB WHERE TIPFAB = 'F' AND LEN(LTRIM(RTRIM(DOCIDEFAB))) > 11 UNION ALL SELECT 'E077FAV', 'DOCIDEFAV', 'TIPFAV', COUNT(*) FROM E077FAV WHERE TIPFAV = 'F' AND LEN(LTRIM(RTRIM(DOCIDEFAV))) > 11 UNION ALL SELECT 'E085ENT', 'DOCIDEENT', 'TIPENT', COUNT(*) FROM E085ENT WHERE TIPENT = 'F' AND LEN(LTRIM(RTRIM(DOCIDEENT))) > 11 UNION ALL SELECT 'E085CLI', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E085CLI WHERE TIPCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E085VCL', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E085VCL WHERE TIPCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E086SAC', 'DOCIDESAC', 'TIPSAC', COUNT(*) FROM E086SAC WHERE TIPSAC = 'F' AND LEN(LTRIM(RTRIM(DOCIDESAC))) > 11 UNION ALL SELECT 'E090REP', 'DOCIDEREP', 'TIPREP', COUNT(*) FROM E090REP WHERE TIPREP = 'F' AND LEN(LTRIM(RTRIM(DOCIDEREP))) > 11 UNION ALL SELECT 'E090VRE', 'DOCIDEREP', 'TIPREP', COUNT(*) FROM E090VRE WHERE TIPREP = 'F' AND LEN(LTRIM(RTRIM(DOCIDEREP))) > 11 UNION ALL SELECT 'E095FOR', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E095FOR WHERE TIPFOR = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E095FOR_REC', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E095FOR_REC WHERE TIPFOR = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E095ORM', 'DOCIDEORM', 'TIPORM', COUNT(*) FROM E095ORM WHERE TIPORM = 'F' AND LEN(LTRIM(RTRIM(DOCIDEORM))) > 11 UNION ALL SELECT 'E095ORM_REC', 'DOCIDE', 'TIPORM', COUNT(*) FROM E095ORM_REC WHERE TIPORM = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E095VFO', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E095VFO WHERE TIPFOR = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E110CLI', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E110CLI WHERE TIPCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E110FOR', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E110FOR WHERE TIPFOR = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E110REP', 'DOCIDE', 'TIPREP', COUNT(*) FROM E110REP WHERE TIPREP = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E110TRA', 'DOCIDE', 'TIPTRA', COUNT(*) FROM E110TRA WHERE TIPTRA = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E113RTC', 'DOCIDE', 'TIPREP', COUNT(*) FROM E113RTC WHERE TIPREP = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E120EAC', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E120EAC WHERE TIPCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E140AUT', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E140AUT WHERE TIPCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E140CCE', 'DOCIDEAUT', 'TIPCAT', COUNT(*) FROM E140CCE WHERE TIPCAT = 'F' AND LEN(LTRIM(RTRIM(DOCIDEAUT))) > 11 UNION ALL SELECT 'E140CTE', 'DOCIDEDAN', 'DANCLI', COUNT(*) FROM E140CTE WHERE DANCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDEDAN))) > 11 UNION ALL SELECT 'E140DCF', 'DOCIDE', 'TIPCLI', COUNT(*) FROM E140DCF WHERE TIPCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E140NFV', 'DOCIDERDE', 'TIPRDE', COUNT(*) FROM E140NFV WHERE TIPRDE = 'F' AND LEN(LTRIM(RTRIM(DOCIDERDE))) > 11 UNION ALL SELECT 'E445NFC', 'DOCIDE', 'TIPFOR', COUNT(*) FROM E445NFC WHERE TIPFOR = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E445NFP', 'DOCIDEFOR', 'TIPFOR', COUNT(*) FROM E445NFP WHERE TIPFOR = 'F' AND LEN(LTRIM(RTRIM(DOCIDEFOR))) > 11 UNION ALL SELECT 'E603IMC', 'DOCIDEFOR', 'TIPFOR', COUNT(*) FROM E603IMC WHERE TIPFOR = 'F' AND LEN(LTRIM(RTRIM(DOCIDEFOR))) > 11 UNION ALL SELECT 'E615CRD', 'DOCIDE', 'TIPPES', COUNT(*) FROM E615CRD WHERE TIPPES = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E660ARV', 'DOCIDE', 'TIPADV', COUNT(*) FROM E660ARV WHERE TIPADV = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E660IRZ', 'DOCIDECLI', 'TIPCLI', COUNT(*) FROM E660IRZ WHERE TIPCLI = 'F' AND LEN(LTRIM(RTRIM(DOCIDECLI))) > 11 UNION ALL SELECT 'E660NFV', 'DOCIDERDE', 'TIPRDE', COUNT(*) FROM E660NFV WHERE TIPRDE = 'F' AND LEN(LTRIM(RTRIM(DOCIDERDE))) > 11 UNION ALL SELECT 'E690ARJ', 'DOCIDE', 'TIPADV', COUNT(*) FROM E690ARJ WHERE TIPADV = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E690ARP', 'DOCIDE', 'TIPADV', COUNT(*) FROM E690ARP WHERE TIPADV = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E690ARV', 'DOCIDE', 'TIPADV', COUNT(*) FROM E690ARV WHERE TIPADV = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E690IRE', 'DOCIDE', 'TIPINS', COUNT(*) FROM E690IRE WHERE TIPINS = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 UNION ALL SELECT 'E690RDE', 'DOCIDE', 'TIPINS', COUNT(*) FROM E690RDE WHERE TIPINS = 'F' AND LEN(LTRIM(RTRIM(DOCIDE))) > 11 ) T WHERE QTD > 0 ORDER BY QTD DESC;
2. Analisar os registros individualmente
Após identificar as tabelas com problema, execute o select detalhado para visualizar os registros afetados. Substitua {TABELA}, {CAMPO_TIPOPESSOA} e {CAMPO_DOCUMENTO} pelos valores retornados no passo 1.
SELECT * FROM {TABELA}
WHERE {CAMPO_TIPOPESSOA} = 'F'
AND LENGTH(TRIM({CAMPO_DOCUMENTO})) > 11;
SELECT * FROM {TABELA}
WHERE {CAMPO_TIPOPESSOA} = 'F'
AND LEN(LTRIM(RTRIM({CAMPO_DOCUMENTO}))) > 11;
3. Realizar o UPDATE para limpar o campo de documento
Uma vez confirmada a inconsistência, execute o UPDATE para definir o campo de documento como NULL.
UPDATE {TABELA}
SET {CAMPO_DOCUMENTO} = NULL
WHERE {CAMPO_TIPOPESSOA} = 'F'
AND LENGTH(TRIM({CAMPO_DOCUMENTO})) > 11;
UPDATE {TABELA}
SET {CAMPO_DOCUMENTO} = NULL
WHERE {CAMPO_TIPOPESSOA} = 'F'
AND LEN(LTRIM(RTRIM({CAMPO_DOCUMENTO}))) > 11;
4. Executar a tela F000MFA
Após realizar o UPDATE nas tabelas afetadas, acesse a tela F000MFA e processe as tabelas. A MFA irá recalcular e preencher corretamente o campo de documento com o valor adequado:
- 11 dígitos para CPF;
- 14 dígitos para CNPJ.
Importante
- A F000MFA só preenche campos que estão vazios (NULL ou em branco). Campos já preenchidos não são alterados pela MFA.
- Caso o parâmetro UsaEntOri esteja ativo e impeça alterações, desative-o temporariamente, processe a F000MFA e reative-o em seguida.
- Sempre realize backup antes de executar os comandos de UPDATE em ambiente de produção.
English
Español
English
Español


