Integrator → ERP Voalle

Do Integrator para o ERP Voalle — Guia Completo de Migração de Dados

Este documento explica, em linguagem acessível e com mapeamento técnico coluna a coluna, como cada informação do sistema Integrator é reorganizada durante a migração para o ERP Voalle. O objetivo é que qualquer pessoa que conheça o Integrator consiga entender onde seus dados "pousam" no novo sistema — e um analista consiga reproduzir ou depurar qualquer transformação.


Mapa Geral — Tudo que migra

Entidade no IntegratorTabela(s) origemEntidade no ERP VoallePrefixo do código
Filiais / empresasempresasLocais de faturamentoCP_
Grupos de clientesgrupo_clientesGrupos de PessoasPG_
Grupos de serviçosgrupos_servicosGrupos de ServiçosSPG_
Formas de cobrança / bancosforma_cobrancas + bancos + conf_boletosTipos de CobrançaFCT_
Grupos de IPs(estático — sem tabela no legado)Grupos de IPsIP_FIXO, EQP, POOL
IPs dos clientesipIPs (grupo IP_FIXO)IP_
IPs de equipamentos (NAS, AP, OLT)radios + olt_fibra + nas_radiusIPs (grupo EQP)IP_IPNAS_, IPAP_, IP_, IP_RAD_
Concentradores / NASnas_radius + radiosConcentradoresCE_
OLTs de fibraolt_fibraPontos de AcessoOLT_
CondomínioscondominiosCondomíniosCND
Clientesclientes + observacoesPessoa (cliente=true)CLI_
FornecedoresfornecedoresPessoa (fornecedor=true)FOR_
Contatos dos clientescontatos_clientePessoa (contato vinculado)CNT_
Prospects / LeadsprospectPessoa (situação=Prospect)PROSP_
Usuários do sistemausuariosPessoa (colaborador)USU_
Telefones / emails adicionaiscontatos_clienteComunicações da PessoaCON_
Endereço de cobrançaendereco_cli + clientesEndereço (tipo cobrança)(sem prefixo próprio)
Plano contratadoservicos_cliContratoCNT_{codcli}_{codsercli}
Serviço principal do planoservicos_cli + servicosItem de ContratoCNTIT_
Serviços extrasservicos_cli_extras + servicos_extrasItem de Contrato (extra)CNTIT_..._EXTRA
Ramal VoIP / Telefoniaterminal_vozItem de Contrato (VoIP)CNTIT_{codtvoz}
Pacote de TVpacotes_sc + pacotesItem de Contrato (TV)CNTIT_{codpsc}
Histórico de situação do planohistorico_clienteEvento do ContratoHIS_CNT_
Conexão PPPoE / Hotspotlogin_radius + ip + onu_fibra + ...ConexãoCNX_{codlrad}
Conexão IP Fixo (sem PPPoE)ip + servicos_cliConexãoCNX_{codsercli}
Fatura (boleto agrupador)faturas + contas_recFaturaFAT_
Fatura recebida (boleto pago)faturas + mov_bancario + descontosFatura RecebidaFAT_REC_
Título a recebercontas_recConta a ReceberTIT_
Título recebido (quitado)contas_rec + mov_bancario + descontosConta RecebidaTIT_REC_
Conta a pagarcontas_pagConta a PagarTIT_
Conta pagacontas_pag + razao + mov_bancarioConta PagaTIT_..._RZ_
Lançamento bancário (pagamentos)razao + mov_bancarioLançamento Caixa/BancoPST_
Lançamento bancário (recebimentos)mov_bancarioLançamento Caixa/BancoPST_
Patrimônio / equipamentomovimentos_pat + patrimonio + produtosPatrimônioPAT_
Ordens de serviço / Ocorrênciasocorrencias + ordem_servicoSolicitações VinculadasAT_..._OS_
Comentários e histórico de OScomentarios + historico_ocorrencias + ...RelatosREL_
Encaminhamentos de OSencaminhamentosEncaminhamentosENC_

Não migrado: fotografias (fotografias_local) e arquivos (arquivos) não são migrados nesta versão dos scripts (bloco 99_Anexos.sql completamente comentado).


1. Como funciona a migração em 3 etapas

Para quem vem do Integrator, o processo de migração opera assim:

INTEGRATOR (legado)
   Dados exatamente como estão hoje no sistema

         | Cópia dos dados para o servidor Voalle
         v

CONNECTOR (área intermediária)
   Os dados são reorganizados e enriquecidos.
   É aqui que acontecem todas as transformações:
   unificação de tabelas, mapeamentos, cálculos de valor.

         | Consolidação — importação para o ERP
         v

ERP VOALLE
   Os dados chegam no formato final,
   prontos para serem usados no sistema.

Ideia central: o Integrator armazena informações de forma fragmentada — cada tipo de dado em uma tabela separada. O ERP Voalle adota uma visão unificada. O melhor exemplo é a Conexão: no Integrator ela está espalhada por 10+ tabelas; no ERP é um único registro.


2. Empresas / Filiais → Locais de Faturamento

No Integrator, a tabela empresas guarda as filiais e unidades do provedor (CNPJ, regime tributário, endereço). No ERP Voalle isso se chama Local (companies_places).

Integrator:  empresas  |  codemp = '01'  |  nome_emp = 'Provedor Sede'
                  |
                  v
ERP Voalle:  Local  |  erp_code = 'Integrator_CP_01'  |  razao_social = 'Provedor Sede'

Script: Cadastros/01.01-Locais.sql


3. Configurações e Tabelas Auxiliares

3.1 Grupos de Clientes → Grupos de Pessoas

No Integrator, grupo_clientes agrupa clientes por categorias (ex: Residencial, Empresarial). No ERP viram Grupos de Pessoas, com o mesmo propósito.

Script: Cadastros/03.01-GrupoPessoas.sql

Integrator (grupo_clientes)ERP (grupos_pessoas)
codgrupoerp_code = prefix('PG_' + codgrupo)
nome_grupodescricao

3.2 Grupos de Serviços

No Integrator, grupos_servicos categoriza os planos de internet (ex: Fibra, Rádio, TV). No ERP viram Grupos de Serviços.

Script: Cadastros/04.01-GruposServicos.sql

Integrator (grupos_servicos)ERP (grupos_servicos)
codgrupoerp_code = prefix('SPG_' + codgrupo)
nome_grupodescricao

3.3 Tipos de Cobrança (Formas de Pagamento)

No Integrator, a forma de cobrança é definida em forma_cobrancas, com as regras de juros e multa em conf_boletos e o banco em bancos. No ERP tudo isso se une em um único Tipo de Cobrança.

Script: Cadastros/02.02-TiposCobranca.sql

IntegratorERP (tipos_cobranca)Regra
forma_cobrancas.codcoberp_codeprefix('FCT_' + codcob)
forma_cobrancas.desc_cobdescricaoDireto
bancos.codbanerp_code_caixas_contasprefix('BA_' + codban)
forma_cobrancas.tipo = 'carne'forma_cobranca3 (Carnê)
forma_cobrancas.tipo = 'C'forma_cobranca5 (Cartão)
forma_cobrancas.tipo = 'N'forma_cobranca1 (Normal/Boleto)
forma_cobrancas.tipo = 'D'forma_cobranca2 (Débito Automático)
conf_boletos.jurosjurosPercentual direto
conf_boletos.multamultaPercentual direto
conf_boletos.descontodescontoPercentual direto
conf_boletos.diasprotestodias_protestoDireto

4. Infraestrutura de Rede

4.1 Grupos de IPs

Três grupos são criados automaticamente pelo script — não existem como tabela no legado, são inseridos fixos na migração:

Código no ERPFinalidade
prefix('IP_FIXO')IPs fixos alocados a clientes
prefix('EQP')IPs de equipamentos de rede (NAS, AP, OLT)
prefix('POOL')Pool de IPs dinâmicos (DHCP)

Script: Cadastros/08.02-GrupoIPs.sql

4.2 Endereços IP

Os endereços IP do legado vêm de 5 origens diferentes, cada uma com um prefixo distinto:

Origem no IntegratorTipoGrupo de IPsPrefixo
ip.nro_ipIP fixo de clienteIP_FIXOIP_
radios.ip onde nas = 'S'IP de rádio NASEQPIP_IPNAS_
radios.ip onde nas = 'N'IP de access pointEQPIPAP_
olt_fibra.ipIP de OLT de fibraEQPIP_
nas_radius.hostIP de servidor RADIUSEQPIP_RAD_

Script: Cadastros/08.03-IPs.sql

4.3 Concentradores (NAS e Rádios)

No Integrator, os equipamentos de autenticação ficam em nas_radius (servidores RADIUS) e radios (access points que funcionam como NAS). No ERP viram Concentradores.

Um concentrador de migração padrão (MIG_999) é inserido diretamente no ERP para receber conexões que não tiverem concentrador identificado no legado.

Script: Cadastros/08.04-Concentradores.sql

Origemerp_codeTipo
nas_radiusprefix('CE_' + host)1 (RADIUS)
radios (NAS)prefix('CE_' + codrad)2 (AP / Hotspot)
(fixo)'MIG_999'Padrão de migração

4.4 Pontos de Acesso (OLTs de Fibra)

As OLTs do Integrator (olt_fibra) viram Pontos de Acesso no ERP, com o fabricante mapeado pelo código codtolt.

Um ponto de acesso padrão (MIG_999) é criado para conexões sem OLT identificada.

Script: Cadastros/08.05-PontodeAcesso.sql

Integrator (olt_fibra)ERP (pontos_acesso)Regra
codolterp_codeprefix('OLT_' + codolt)
descri_oltnomeDireto
codoltcodigoDireto
iperp_code_ipprefix('IP_' + ip)
codtolt = 'HUAWEI'codigo_fabricante5
codtolt = 'DATACOM'codigo_fabricante9
codtolt = 'ZTE'codigo_fabricante8
codtolt = 'FIBERHOME'codigo_fabricante6
codtolt = 'NOKIA'codigo_fabricante14
codtolt = 'PARKS'codigo_fabricante4
ativo = 'N'ativoFALSE — senão TRUE
loginusuarioDireto
senhasenhaDireto
(fixo)tipo4 (OLT)

4.5 Condomínios

Condomínios do Integrator são mantidos como entidade separada no ERP.

Script: Cadastros/08.07-Condominios.sql

Integrator (condominios)ERP (condominios)Regra
codconerp_codeprefix('CND' + codcon)
nome_condescricaoDireto
cepcepDireto
enderecoendereco / numeroSeparados por função
bairrobairroDireto
cidadecidadeVia maintenance.code_cities
tipo_ponto_roteamento.descritipoDescrição do tipo de roteamento

5. Pessoas — cinco cadastros viram um

Esta é uma das grandes unificações da migração. No Integrator existem cinco tabelas de cadastro de pessoas completamente separadas. No ERP Voalle todas se tornam registros na mesma entidade Pessoa, diferenciadas apenas por flags e situação.

Origem no IntegratorPrefixoFlag / Situação no ERP
clientesCLI_cliente = true, situação = 3 (Cliente)
fornecedoresFOR_fornecedor = true, situação = 3
contatos_clienteCNT_Vinculado como contato da pessoa-cliente
prospectPROSP_situação = 5 (Prospect)
usuariosUSU_colaborador = true

5.1 Clientes

Script: Operacional/03.02-Pessoas.sql (bloco Clientes)

Integrator (clientes)ERP (pessoas)Regra
codclierp_codeprefix('CLI_' + codcli)
tipo_cliente = 'F'tipo_pessoa2 (Física)
tipo_cliente = 'J'tipo_pessoa1 (Jurídica)
ativo = 'S'status1 (Normal)
ativo = 'N'status0 (Inativa)
cpf (PF)documentoRemove formatação
cnpj (PJ)documentoRemove formatação
nome_clirazao_social_nomeDireto
nome_cli (PF) / nome_fan (PJ)nome_fantasia_apelidoCondicional
cepcep_principalDireto
enderecoendereco_principalRemove o número
endereconumero_principalExtrai somente o número
bairrobairro_principalDireto
cidade (código)codigo_ibge_endereco_principalVia erp.code_cities
cidade (código)cidade_principalNome da cidade
(via cidade)uf_principalSigla do estado
referenciareferencia_endereco_principalDireto
e_mailemail + email_NFEMesmo valor nos dois campos
ddd + fonetelefoneConcatenados
celularcelularDireto
rg (PF)identidadeDireto; NULL se PJ
data_nacdata_nascimentoNULL se '0000-00-00'
data_caddata_cadastroCast DATE
icminscricao_estadualDireto
ic_muninscricao_municipalDireto
obsobservacoes_tecnicasDireto
observacoes.obs (todas)observacoes_administrativasConcatenadas com data, separadas por \n
simples_nacional = 'S' e PJregime_tributario1 (Simples Nacional)
simples_nacional = 'N' e PJregime_tributario2 (Lucro Presumido/Real)
funcionario = 'S'colaboradorTRUE
codgclierp_code_grupo_pessoasprefix('PG_' + codgcli)
latitude / longitudelatitude_end_principal / longitude_end_principalDireto
(fixo)clienteTRUE
(fixo)fornecedorFALSE
(fixo)situacao3 (Cliente)

5.2 Fornecedores

Script: Operacional/03.02-Pessoas.sql (bloco Fornecedores)

Integrator (fornecedores)ERP (pessoas)Regra
codforerp_codeprefix('FOR_' + codfor)
tipo_pesso = 'F' / 'J'tipo_pessoa2 / 1
cpf / cnpjdocumentoRemove formatação
nome_forrazao_social_nomeDireto
nome_fannome_fantasia_apelidoDireto
cepcep_principalDireto
enderecoendereco_principal / numero_principalSeparados por função
cidadecidade_principal / uf_principalVia maintenance.code_cities
e_mailemail + email_NFEMesmo valor
ddd + fonetelefoneConcatenados
celularcelularDireto
rg (PF)identidadeNULL se PJ
icminscricao_estadualDireto
obs + contatoobservacoes_administrativasConcatenados
(fixo)fornecedorTRUE
(fixo)clienteFALSE
(fixo)situacao3
(fixo)status1 (Normal)
(fixo)erp_code_grupo_pessoasprefix('FORNECEDORES')

5.3 Contatos dos Clientes

No Integrator, contatos_cliente guarda pessoas de contato vinculadas a um cliente (ex: gerente, técnico, cônjuge). No ERP viram Pessoas com vínculo de contato.

Script: Operacional/03.02-Pessoas.sql (bloco Contatos)

Integrator (contatos_cliente)ERP (pessoas)Regra
codcontatoerp_codeprefix('CNT_' + codcontato)
nomerazao_social_nomeDireto
cpfdocumentoRemove formatação
e_mailemailDireto
ddd + fonetelefoneConcatenados
celularcelularDireto
obsobservacoes_administrativasDireto
codcli(vínculo)Referencia o cliente pai
(fixo)tipo_pessoa2 (Física)
(fixo)status1 (Normal)
(fixo)situacao3

5.4 Prospects (Leads)

No Integrator, prospect são clientes em potencial que ainda não assinaram um plano. No ERP viram Pessoas com situação Prospect.

Script: Operacional/03.02-Pessoas.sql (bloco Prospects)

Integrator (prospect)ERP (pessoas)Regra
codprosperp_codeprefix('PROSP_' + codprosp)
nomerazao_social_nomeDireto
cpf / cnpjdocumentoRemove formatação
e_mailemailDireto
ddd + fonetelefoneConcatenados
celularcelularDireto
cepcep_principalDireto
enderecoendereco_principal / numero_principalSeparados por função
(fixo)situacao5 (Prospect)
(fixo)status1 (Normal)

5.5 Usuários do Sistema

No Integrator, usuarios são as contas de acesso ao sistema (atendentes, técnicos, gerentes). No ERP viram Pessoas com flag de colaborador.

Script: Operacional/03.02-Pessoas.sql (bloco Usuários)

Integrator (usuarios)ERP (pessoas)Regra
codusuerp_codeprefix('USU_' + codusu)
nome_usurazao_social_nomeDireto
e_mailemailDireto
cpfdocumentoRemove formatação
(fixo)colaboradorTRUE
(fixo)status1 (Normal)
(fixo)situacao3

5.6 Meios de Contato (Comunicações)

Além do cadastro principal, os contatos adicionais de cada cliente são migrados para pessoas_comunicacao. Cada registro em contatos_cliente pode gerar múltiplos meios de contato no ERP.

Script: Operacional/03.03-Comunicacoes.sql

Integrator (contatos_cliente)ERP (pessoas_comunicacao)Regra
codcontatoerp_codeprefix('CON_' + codcontato)
codclierp_code_pessoaprefix('CLI_' + codcli)
fone (com DDD)contatoTipo 1 (Telefone)
e_mailcontatoTipo 2 (E-mail)
celularcontatoTipo 3 (Celular)
faxcontatoTipo 6 (Fax)
nomecomplementoNome do contato

5.7 Endereços de Cobrança

O endereço de cobrança é migrado separadamente do endereço principal. O script busca primeiro em endereco_cli com tipo 'COBRANÇA'; se não encontrar, usa o endereço do próprio cadastro do cliente.

Script: Operacional/03.04-Enderecos.sql

OrigemERP (enderecos)Regra
endereco_cli.cep ou clientes.cepcepPrioridade: endereco_cli
endereco_cli.endereco ou clientes.enderecologradouro / numeroSeparados por função
endereco_cli.bairro ou clientes.bairrobairroFallback para clientes
endereco_cli.cidade ou clientes.cidadecidade / ufVia maintenance.code_cities
(fixo)tipo_endereco2 (Cobrança)
endereco_cli.codclierp_code_pessoaprefix('CLI_' + codcli)

6. Contratos e Serviços — a transformação central

6.1 O codsercli: a chave do Integrator

No Integrator, servicos_cli é a tabela central de serviços contratados. Cada linha representa um plano assinado por um cliente e tem um codsercli único.

servicos_cli:
  codsercli = ABC123  |  codcli = 100001  |  serviço = Internet 100MB Fibra
  codsercli = DEF456  |  codcli = 100001  |  serviço = Telefone VoIP

O cliente 100001 tem 2 planos → 2 linhas em servicos_cli → 2 codsercli distintos.

6.2 Passo 1 — Cada codsercli vira 1 contrato

O script 05.01-Contratos.sql cria 1 contrato no conector para cada codsercli:

codsercli ABC123, codcli 100001  →  contrato  CNT_100001_ABC123
codsercli DEF456, codcli 100001  →  contrato  CNT_100001_DEF456

O codsercli também é gravado no campo Observações do contrato no formato:

codsercli.: (nro_plano) - ABC123
Isso garante o rastreamento da origem mesmo após o agrupamento.

Mapeamento de situação (codestsituacao):

Código no IntegratorDescriçãoSituação no ERP
Código do status "Habilitado"Serviço habilitado (normal)1 — Normal
Habilitado + desconto >= 100%Cortesia3 — Cortesia
Código de "Suspenso Débito"Suspenso por inadimplência6 — Bloqueio Financeiro
Código de "Inativo"Inativo5 — Suspenso
Código de "Cancelado"Cancelado4 — Cancelado
Código de "Suspensão Temporária"Suspenso a pedido temporariamente7 — Bloqueio Administrativo
Código de "Suspenso a Pedido"Suspenso a pedido permanente5 — Suspenso
Demais códigosAguardando instalação / outros1 — Normal

6.3 Passo 2 — Os itens do contrato

O script 05.02-ItensContrato.sql adiciona os itens a cada contrato. Um único codsercli pode gerar vários itens no ERP:

Tipo de itemOrigem no IntegratorPrefixo do item
Serviço principalservicos_cli + servicosCNTIT_{codsercli}
Serviço extraservicos_cli_extras + servicos_extrasCNTIT_{codsercliex}_EXTRA
Ramal VoIP / Telefoniaterminal_vozCNTIT_{codtvoz}
Pacote de TVpacotes_sc + pacotesCNTIT_{codpsc}

Um plano de "Internet + Telefone + TV" no Integrator vira 1 contrato com 3 itens no ERP.

O script 05.03-ValoresDosContratos.sql aplica as regras de negócio e calcula o valor final de cada item (descontos, tolerâncias, valor mínimo, etc.).

6.4 Agrupamento de Contratos (Passo 3 — Script 11.01)

A pergunta central: "Esses planos saem no mesmo boleto?"

Se dois ou mais codsercli do mesmo cliente atenderem todos os critérios abaixo, eles são unificados em 1 único contrato no ERP:

CritérioCampo no IntegratorRegra
Mesmo clientecodcliDeve ser igual
Mesma forma de cobrançacodcobDeve ser igual
Mesmo dia de vencimentovencimentos.diaDeve ser igual
Pagamento mensaltipo_pagNão pode ser 'A' (anual)
Boleto juntoboleto_separadoNão pode ser 'S'
NF juntonf_separadoNão pode ser 'S'
Tem valorvalor_planoDeve ser > 0
Situação compatívelcodestNormal, Cortesia ou Bloqueio Financeiro

Atenção — boleto_separado e nf_separado: no Integrator o valor padrão desses campos é 'N' ou vazio/nulo. Apenas quando explicitamente marcado como 'S' o plano é excluído do agrupamento. Campos nulos ou vazios são tratados como "pode agrupar".

Antes do agrupamento:

Contrato A  →  codsercli ABC123  |  cliente 100001  |  cobrança BB001  |  vence dia 10
Contrato B  →  codsercli DEF456  |  cliente 100001  |  cobrança BB001  |  vence dia 10
→ Mesma combinação cliente + cobrança + vencimento → AGRUPAM

Depois do agrupamento:

Contrato UNIFICADO  |  cliente 100001  |  NOVO erp_code (diferente de todos os originais)
  Item 1: Internet 100MB Fibra   (veio do codsercli ABC123)
  Item 2: Telefone VoIP          (veio do codsercli DEF456)

O cliente recebe 1 único boleto com ambos os serviços.

O que acontece tecnicamente no agrupamento

O script 11.01-Agrupar_Planos.sql executa os seguintes passos internamente:

  1. Identifica todos os grupos de contratos que compartilham a mesma chave (codcli + codcob + dia_vencimento + situacao)
  2. Cria a tabela connector.migraco_integrator_de_para_contratos mapeando cada erp_code original para o novo código unificado
  3. Atualiza todas as tabelas do connector que referenciam contratos (faturas, títulos, conexões, encaminhamentos etc.) para apontar para o novo código
  4. De todos os contratos que seriam agrupados, apenas 1 sobrevive fisicamente — o que tem o maior id interno. Ele recebe um erp_code novo, diferente de todos os codsercli originais
  5. Os demais contratos são deletados do connector
  6. O valor de desconto total é somado no contrato sobrevivente

Consequência crítica para rastreamento: após o agrupamento, o campo Observações do contrato unificado contém apenas o codsercli do contrato eleito como principal (maior id interno). Os demais codsercli do grupo não ficam registrados nas Observações. Para rastrear todos os codsercli que foram agrupados, use a tabela connector.migraco_integrator_de_para_contratos — veja seção 6.6.

O que NÃO agrupa (permanece como contrato separado no ERP):

SituaçãoMotivo
boleto_separado = 'S'Boleto explicitamente separado
nf_separado = 'S'NF explicitamente separada
tipo_pag = 'A'Contrato anual — não entra no agrupamento mensal
CanceladoSituação = Cancelado não é agrupável
Inativo / Suspenso / Suspensão Temporária / Bloqueio Adm.Situações incompatíveis com agrupamento
valor_plano = 0Planos sem valor financeiro não agrupam
Único plano com aquela combinaçãoNão há com quem agrupar

6.5 Histórico de Eventos do Contrato

O histórico de movimentações do plano no Integrator (historico_cliente) é migrado como eventos do contrato no ERP.

Script: Operacional/05.04-EventosContratos.sql

Integrator (historico_cliente)ERP (contratos_eventos)Regra
codcli + codsercli + sequênciaerp_codeprefix('HIS_CNT_' + ...)
codcli + codserclierp_code_contratoprefix('CNT_' + codcli + '_' + codsercli)
data_altdata_eventoCast DATE
desc_alt / obsdescricaoTexto do histórico
(fixo)tipo_evento'MIG_0999' (identificador de migração)

6.6 Como rastrear um codsercli no ERP após a migração

Após a migração e o agrupamento, há 3 formas de localizar a origem de um contrato no ERP:

Método 1 — Campo Observações do contrato

Durante o Passo 1 (script 05.01-Contratos.sql), o codsercli é gravado nas Observações:

codsercli.: (nro_plano) - ABC123

Este campo sobrevive ao agrupamento no contrato eleito como principal (maior id). Os demais codsercli do grupo não aparecem nas Observações do contrato unificado.

Método 2 — Tabela DE/PARA de contratos

A tabela connector.migraco_integrator_de_para_contratos é criada pelo script 11.01 e mapeia cada erp_code original para o código do contrato destino no ERP:

SELECT * FROM connector.migraco_integrator_de_para_contratos
WHERE erp_code_origem = 'Integrator_CNT_100001_ABC123';
-- retorna o erp_code do contrato unificado onde ABC123 foi absorvido

Esta é a única forma de rastrear codsercli que não ficaram no campo Observações.

Método 3 — Número do contrato no ERP

O campo numero_contrato no ERP é preenchido com codcli-nro_plano do legado:

100001-1   →  primeiro plano do cliente 100001
100001-2   →  segundo plano do cliente 100001

Útil para localizar o contrato diretamente na tela do ERP sem precisar do erp_code.

6.7 Ajustes Finais que afetam contratos

Após o agrupamento, dois scripts de Ajustes Finais complementam as regras de contrato:

ScriptPastaO que faz
03.02-Contratos_Anuais.sqlAjustes_Finais_Integrator/Ajusta a periodicidade dos contratos com tipo_pag = 'A' para anual no ERP
03.01-Ajustar_Agrupador_Fat_para_CIS.sqlAjustes_Finais_Integrator/Muda o agrupador de faturamento para CIS nos contratos com imprime_nf = 'N'

7. Conexões — a grande consolidação de rede

Esta é a transformação mais visível para quem vem do Integrator: dados que ficavam em 10 ou mais tabelas chegam ao ERP como 1 único registro de Conexão.

No Integrator — informações fragmentadas

Para saber "como esse cliente está conectado", era necessário consultar:

servicos_cli      → qual o codsercli do cliente
login_radius      → login e senha PPPoE
ip                → endereço IP, MAC address, tipo de interface
interfaces_radios → tipo de conexão (PPPoE, DHCP, Hotspot)
radios            → qual rádio AP conecta o cliente
nas_radius        → qual NAS/RADIUS gerencia a autenticação
onu_fibra         → número de série da ONU, login/senha de gestão, SSID Wi-Fi
olt_fibra         → qual OLT atende aquela ONU
pon_slot          → porta PON dentro da OLT
slot_olt          → slot da OLT
condominios       → se a conexão é em um condomínio
endereco_cli      → endereço de instalação

No ERP — 1 registro unificado

Tudo isso se torna 1 registro na tabela de Conexões por cliente.

Script: Operacional/08.07-Conexoes.sql

Dois tipos de conexão migrados:

TipoIdentificação no IntegratorPrefixo
PPPoE / HotspotTem registro em login_radiusCNX_{codlrad}
IP Fixo sem PPPoETem IP em ip mas sem login PPPoECNX_{codsercli}

Pontos de Acesso (OLTs e APs):


8. Financeiro — faturas, títulos e recebimentos

8.1 Estrutura do Financeiro no Integrator

O financeiro de recebimento opera em dois níveis no Integrator:

faturas           → boleto/agrupador: 1 fatura pode conter vários títulos
contas_rec        → título individual a receber por cliente (codcrec)
detalhe_faturas   → de-para entre faturas e contas_rec (N:N)
descontos         → descontos aplicados por codcrec
juros_contas_rec  → juros e multa cobrados por codcrec
razao             → registro contábil vinculando contas_rec/contas_pag a mov_bancario
mov_bancario      → movimentação bancária real (data e banco do recebimento/pagamento)

O recebimento de um boleto fica registrado tanto na faturas (status Q/B) quanto na contas_rec (data_bai preenchida, valor_pag >= valor_lan). São dois níveis distintos que o ERP também preserva.

8.2 Como os dados chegam ao ERP

Integrator (fonte)ConnectorERP Voalle
faturas + contas_recconnector.faturasFatura (boleto agrupador)
contas_recconnector.contas_receberTítulo a Receber
faturas (não excluídas) + contas_rec + mov_bancario + descontos + jurosconnector.faturas_recebidasRecebimento no nível do boleto
contas_rec onde data_bai IS NOT NULL e valor_pag >= valor_lan + mov_bancario + descontosconnector.contas_recebidasRecebimento no nível do título
contas_pagconnector.contas_pagarTítulo a Pagar
contas_pag onde valor_pag > 0 + razao + mov_bancarioconnector.contas_pagasPagamento realizado
razao + mov_bancarioconnector.lancamento_caixa_bancoLançamento Caixa/Banco

Por que dois registros de recebimento? O Integrator registra a baixa no nível do boleto (faturas) e no nível do título (contas_rec). O ERP preserva essa separação: faturas_recebidas é o recebimento do boleto como documento; contas_recebidas é o recebimento de cada título individual que compõe aquele boleto.

8.3 Status das Faturas — o que é migrado

Status no IntegratorSignificadoMigrado?
E, PPendente de envio ao bancoSim (em aberto)
NEnviado ao banco (remessa)Sim (em remessa)
I, MEnviado ao clienteSim (em aberto)
B, XBaixa em retorno / remessa de baixaSim
QConta quitadaSim (baixado/liquidado)
DExcluídaNÃO
RCom rejeição bancáriaSim (em aberto)
GEnviado ao gatewaySim (em aberto)
ADébito não acatadoSim (em aberto)

Faturas com parcelamento = 'S' (renegociações/parcelamentos) são migradas separadamente com tratamento específico.


9. Patrimônios (Equipamentos)

Equipamentos do legado (patrimonio) são migrados como Patrimônios no ERP. O script migra dois grupos: equipamentos alocados a clientes e equipamentos disponíveis em estoque.

Script: Operacional/09.02_Patrimonios.sql

IntegratorERP (patrimonios)Regra
patrimonio.codpaterp_codeprefix('PAT_' + codpat)
produtos.codproderp_code_produtoprefix('PROD_' + codprod)
produtos.descri_proddescricaoDireto
patrimonio.nro_serienumero_serieDireto
patrimonio.macmacDireto
patrimonio.obsobservacoesDireto
servicos_cli.codclierp_code_pessoaprefix('CLI_' + codcli) — se alocado
servicos_cli.codserclierp_code_contratoprefix('CNT_' + codcli + '_' + codsercli)
movimentos_pat.data_movdata_alocacaoCast DATE
(sem cliente)(disponível)Alocado como disponível em estoque

10. Atendimento ao Cliente

10.1 Solicitações (Ordens de Serviço e Ocorrências)

No Integrator, o atendimento ao cliente é dividido em ocorrencias (chamados gerais) e ordem_servico (ordens de serviço técnicas). No ERP viram Solicitações Vinculadas.

Script: Operacional/10.05-Solicitacoes_vinculos.sql

IntegratorERP (solicitacoes_vinculadas)Regra
ocorrencias.codocoerp_codeprefix('AT_' + codoco + 'OS_' + codords)
ocorrencias.codclierp_code_pessoaprefix('CLI_' + codcli)
ordem_servico.codordserp_code_solicitacaoReferencia a OS
ocorrencias.data_ocodata_aberturaCast DATE
ocorrencias.statusstatusMapeado

10.2 Relatos / Histórico de Atendimento

Todo o histórico de comunicação e notas de atendimento é migrado como Relatos. Seis origens diferentes alimentam essa entidade:

Script: Operacional/10.06-Relatos.sql

Origem no IntegratorPrefixo do erp_codeConteúdo
comentariosREL_C_Comentários adicionados às ocorrências
historico_ocorrenciasREL_H_Histórico de alterações das ocorrências
tarefas_ocoREL_T_Tarefas associadas às ocorrências
ordem_servico.obs_retREL_O_Observações de retorno das OS
ocorrencias.descricaoREL_AT_O_Descrição original da ocorrência
encaminhamentosREL_ENC_Encaminhamentos como relatos

10.3 Encaminhamentos

Os encaminhamentos internos de ocorrências são migrados como Encaminhamentos no ERP.

Script: Operacional/10.07-Encaminhamentos.sql

IntegratorERP (encaminhamentos)Regra
encaminhamentos.codencerp_codeprefix('ENC_' + codenc)
ocorrencias.codocoerp_code_solicitacaoReferencia a ocorrência
usuarios.codusuerp_code_responsavelprefix('USU_' + codusu)
cargos.nome_cargocargo_responsavelDescrição do cargo
encaminhamentos.data_encdata_encaminhamentoCast DATE
encaminhamentos.obsdescricaoTexto do encaminhamento

11. O que NÃO é migrado

EntidadeMotivo
fotografias_localScript 99_Anexos.sql completamente comentado — não implementado
arquivos (anexos)Mesmo motivo acima
Parcelamentos/renegociações (parcelamento = 'S')Tratamento especial — não seguem o fluxo padrão de faturas recebidas
Faturas excluídas (status = 'D')Não há informação útil a migrar
Contratos anuais no agrupamentotipo_pag = 'A' são excluídos do agrupamento (ficam como contratos separados)

12. Rastreamento — como encontrar qualquer dado após a migração

Cada registro migrado ganha um código de rastreamento composto por um prefixo de origem + o código original do legado.

O que procurarNo IntegratorComo encontrar no ERP
Um clientecodcli = 100001Pessoa com código de origem CLI_100001
Um fornecedorcodfor = 50Pessoa com código FOR_50
Um plano / contratocodsercli = ABC123Contrato com codsercli.: ... - ABC123 em Observações
Uma empresa / filialcodemp = '01'Local com código CP_01
Uma forma de cobrançacodcob = 'BB01'Tipo de Cobrança FCT_BB01
Uma fatura (boleto)codfat = 999Fatura com código FAT_999
Um título a recebercodcrec = 555Conta a Receber TIT_555
Um título pagocodcrec = 555Conta Recebida TIT_REC_555
Uma conta a pagarcodcpag = 88Conta a Pagar TIT_88
Uma conexão PPPoEcodlrad = XConexão CNX_X
Uma conexão IP fixocodsercli = ABC123Conexão CNX_ABC123
Uma OLTcodolt = '01'Ponto de Acesso OLT_01
Um condomíniocodcon = '10'Condomínio CND10
Um patrimôniocodpat = 'EQP01'Patrimônio PAT_EQP01
Uma ocorrência / OScodoco = 100Solicitação AT_100_OS_...

Para contratos agrupados: após o agrupamento (script 11.01), os erp_codes individuais (CNT_codcli_codsercli) são substituídos por um novo código unificado. O rastreamento só é possível pelo campo Observações do contrato. Consulte também a tabela connector.migraco_integrator_de_para_contratos.


13. Índice de Scripts por Ordem de Execução

Ajustes Iniciais

Scripts 02.XX — limpeza de dados do legado (TRIM em todas as tabelas).

Cadastros

ScriptO que migra
01.01-Locais.sqlEmpresas → Locais de Faturamento
02.02-TiposCobranca.sqlFormas de cobrança + bancos → Tipos de Cobrança
03.01-GrupoPessoas.sqlGrupos de clientes → Grupos de Pessoas
04.01-GruposServicos.sqlGrupos de serviços
04.04-RegrasFaturamento.sqlCiclos e regras de faturamento
06.01-CentroDeResultados.sqlCentro de resultados
08.02-GrupoIPs.sqlGrupos de IPs (3 grupos fixos)
08.03-IPs.sqlIPs dos clientes e equipamentos (5 origens)
08.04-Concentradores.sqlConcentradores / NAS / Rádios
08.05-PontodeAcesso.sqlOLTs → Pontos de Acesso
08.07-Condominios.sqlCondomínios

Operacional

ScriptO que migra
03.02-Pessoas.sqlClientes, fornecedores, contatos, prospects, usuários → Pessoas
03.03-Comunicacoes.sqlEmails e telefones adicionais → Comunicações
03.04-Enderecos.sqlEndereços de cobrança
05.01-Contratos.sqlservicos_cli → Contratos (1 por codsercli)
05.02-ItensContrato.sqlItens de cada contrato (serviço principal + extras + VoIP + TV)
05.03-ValoresDosContratos.sqlValores e regras de negócio dos itens
05.04-EventosContratos.sqlHistórico de situação dos planos → Eventos do Contrato
06.01-Faturas.sqlFaturas (boletos — cabeçalho)
06.02-FaturasRecebidas.sqlFaturas recebidas (boletos pagos)
06.03-ContasReceber.sqlTítulos a receber (por codcrec)
06.04-ContasRecebidas.sqlTítulos recebidos (quitados)
06.05-Contas_Pagar.sqlContas a pagar
06.06-Contas_Pagas.sqlContas pagas
07.03-LancamentosCaixaBanco.sqlLançamentos de caixa e banco
08.07-Conexoes.sqlConexões dos clientes (dados de rede unificados)
09.02_Patrimonios.sqlPatrimônios / equipamentos
10.05-Solicitacoes_vinculos.sqlOcorrências + OS → Solicitações Vinculadas
10.06-Relatos.sqlHistórico de atendimento → Relatos (6 origens)
10.07-Encaminhamentos.sqlEncaminhamentos de atendimento
11.01-Agrupar_Planos.sqlAgrupamento de contratos (mesmo cliente/cobrança/vencimento)
99_Anexos.sqlFotos e arquivos — NÃO MIGRADO (comentado)

13.1 — Ajustes Finais Integrator (Pós-Consolidação)

Esta etapa é executada depois de toda a consolidação padrão — quando os dados já estão no ERP Voalle. São correções e complementos exclusivos para migrações do Integrator que resolvem diferenças estruturais entre os dois sistemas: coisas que o fluxo genérico não cobre porque só fazem sentido no contexto do Integrator.

Todos os scripts verificam automaticamente se a base é uma migração Integrator (via tabela connector.prefixos_migrados). Se não for Integrator, o script é ignorado sem executar nada.

Visão geral dos scripts ativos:

ScriptÁreaO que resolve
01.03-Ajuste_Tabela_ICMS_Servicos.sqlFiscalAlíquotas de ICMS soltas no legado → tabela de alíquotas do ERP
01.04-Ajusta_Dados_Venda_Produtos.sqlFiscalDados fiscais padrão para produtos vendáveis sem ICMS
01.05-Ajuste_Naturezas_Fin.sqlFinanceiroHierarquia (parent_id) das naturezas financeiras
01.06-DePara_Cargos_Ocupacionais.sqlPessoasCargo do contato no legado → Função CRM no ERP
01.07-Importa_Servico_e_Modelos_de_Email.sqlE-mailServidores SMTP e templates de e-mail
01.09-Ajuste_Series_por_Local.sqlFiscalSérie fiscal própria por filial
02.01-Unificacao_Contatos.sqlPessoasPessoas sem CPF/CNPJ duplicadas com quem já existe no ERP
03.01_Ajustar_Agrupador_Fat_para_CIS.sqlContratosimprime_nf = 'N' → agrupador CIS
03.02-Contratos_Anuais.sqlContratostipo_pag = 'A' → periodicidade anual no ERP
04.01_Migrar_Confg_Adicionais_PA.sqlRedeConfiguração de slots/portas das OLTs
05.01_Ajustar_Desconto_Adimplencia_em_Faturas.sqlFinanceiroDesconto por adimplência nas faturas
05.02_Refazer_titulos.sqlFinanceiroRecriar títulos desatualizados após mudança de agrupador
07.01_Inativar_Matrizes_Migradas.sqlAtendimentoInativar matrizes do legado após migração

Scripts comentados (não executam): 01.01, 01.02, 01.08, 02.02, 07.02 — preservados para referência futura ou restritos a ambientes específicos.


01.03 — Alíquotas de ICMS nos Serviços

Por que existe: O Integrator guarda a alíquota de ICMS como um número solto em cada serviço (ex: 7.00, 12.00, 0.00). O ERP Voalle não aceita alíquotas soltas — cada serviço precisa estar vinculado a um registro na tabela de alíquotas cadastradas. Sem esse ajuste, os serviços migrados ficam sem classificação fiscal de ICMS.

O que faz:

  1. Lê todas as alíquotas distintas presentes nos serviços migrados do legado
  2. Cria um registro na tabela de alíquotas do ERP para cada valor novo encontrado (ex: cria "Outros (Regime Normal) — 7%")
  3. Vincula cada serviço/produto migrado à alíquota correspondente
  4. Serviços sem alíquota no legado recebem o id=4 como padrão

Tabelas afetadas no ERP:


01.04 — Dados Fiscais de Venda dos Produtos

Por que existe: Produtos físicos que são "vendáveis" (podem ser vendidos avulso, não apenas como item de contrato) precisam ter dados fiscais completos para emissão de NF-e. O Integrator não exige esse nível de detalhe. Sem esse script, produtos migrados sem ICMS causariam erro ao tentar emitir NF.

O que faz: Para produtos vendáveis sem ICMS preenchido após a migração, aplica valores fiscais padrão de segurança:

CampoValor aplicado
Alíquota ICMSRegime Normal — Isenta
CFOP5102 (Venda de mercadoria adquirida de terceiros)
Origem do produtoNacional com mais de 70% de importação
PISCódigo 99 (Outras Operações)
COFINSCódigo 99 (Outras Operações)

Tabelas afetadas no ERP:


01.05 — Hierarquia das Naturezas Financeiras

Por que existe: O Integrator organiza as naturezas financeiras (plano de contas) em uma árvore hierárquica com códigos no formato 1.01.02 — onde 1.01.02 é filha de 1.01, que é filha de 1. Após a carga, o campo parent_id que representa essa hierarquia pode não estar preenchido, deixando todas as naturezas no mesmo nível sem estrutura de árvore.

O que faz: Reconstrói automaticamente a hierarquia lendo o código de cada natureza e preenchendo o parent_id correto:

Código "1"       → parent_id = NULL (raiz)
Código "1.01"    → parent_id = natureza com código "1"
Código "1.01.02" → parent_id = natureza com código "1.01"

Tabelas afetadas no ERP:


01.06 — DE/PARA de Cargos para Função CRM

Por que existe: No Integrator, os contatos de clientes têm um campo de tipo/cargo com valores como FINANCEIRO, TECNICO, COMERCIAL, ADMINISTRA. No ERP Voalle esse conceito se chama "Função CRM" e usa uma codificação própria. Sem esse ajuste, todos os contatos migrados ficam sem função definida.

O que faz: Aplica o mapeamento abaixo em todos os contatos migrados:

Cargo no IntegratorFunção CRM no ERPCódigo
FINANCEIROFinanceiro1.03
ADMINISTRAAdministração1.51
TECNICOTécnico1.34
COMERCIALComercial1.53

Tabelas afetadas no ERP:


01.07 — Servidores SMTP e Templates de E-mail

Por que existe: O Integrator tem seu próprio módulo de disparo de e-mail com servidores SMTP e templates para boletos, avisos de bloqueio etc. Esses dados precisam migrar para que o ERP continue enviando e-mails pelos mesmos servidores e com os mesmos templates — evitando que o cliente precise recadastrar tudo manualmente.

O que faz:

  1. Servidores SMTP: importa cada servidor de e-mail do legado (remetente, login, senha, endereço do servidor, porta — fixada em 587)
  2. Templates de e-mail: importa cada modelo (assunto, conteúdo, remetente) vinculando ao servidor correspondente

Não duplica: verifica existência antes de inserir.

Tabelas afetadas no ERP:


01.09 — Séries Fiscais por Filial

Por que existe: Quando o cliente tem múltiplas filiais (locais de faturamento), cada filial precisa ter sua própria série fiscal de NF para que a numeração seja independente por CNPJ emissor. O processo padrão de migração cria as séries de forma genérica — este script garante a correta separação por local.

O que faz:

  1. Identifica todas as combinações de local + operação financeira + série fiscal existentes
  2. Renomeia séries genéricas adicionando o código do local (ex: NF-001NF-001 [FIL01])
  3. Cria novas séries fiscais para locais que ainda não têm série própria (cópia da série original)
  4. Cria o sequencial de numeração para as novas séries
  5. Corrige os vínculos entre operações financeiras e séries — garante que cada local use a série do seu próprio local
  6. Remove vínculos incorretos (operação de um local apontando para série de outro local)

Tabelas afetadas no ERP:


02.01 — Unificação de Pessoas Sem CPF/CNPJ Duplicadas

Por que existe: É muito comum no Integrator que clientes não tenham CPF/CNPJ cadastrado. Se essa pessoa já existe no ERP Voalle com o mesmo nome e com CPF/CNPJ preenchido (cadastro anterior à migração), o processo de migração gera um registro duplicado — a mesma pessoa aparece duas vezes no ERP. Este script resolve isso de forma segura e com auditoria completa.

O que faz:

  1. Identifica pessoas migradas sem documento que têm um "gêmeo" no ERP com mesmo nome e com CPF/CNPJ
  2. Valida que a pessoa duplicada não tem contratos ativos, títulos a receber nem contas a pagar (segurança para não perder dados)
  3. Marca a pessoa duplicada como deletada, registrando o motivo e o id da pessoa original nas observações
  4. Redireciona todos os vínculos de contato (people_contacts) para a pessoa original (com documento)
  5. Remove contatos que ficariam duplicados após a unificação

Este script não é destrutivo — preserva histórico completo em tabelas de auditoria no schema maintenance. Toda alteração fica registrada e pode ser rastreada.

Tabelas afetadas no ERP:


03.01 — Agrupador CIS para imprime_nf = 'N'

Por que existe: No Integrator, o campo imprime_nf = 'N' em um serviço significa que aquele contrato não deve gerar Nota Fiscal — o faturamento vai para o agrupador CIS (Comunicação de Informações de Serviços) em vez do agrupador padrão com emissão de NF. A migração padrão não distingue isso automaticamente: todos os contratos chegam com o agrupador padrão.

O que faz:

  1. Busca no legado todos os serviços com imprime_nf = 'N'
  2. Localiza os contratos correspondentes no ERP — tanto pelo erp_code direto quanto pela tabela de DE/PARA de contratos (connector.migraco_integrator_de_para_contratos), cobrindo também os contratos que foram agrupados
  3. Atualiza o agrupador de faturamento (contract_configuration_billings) para a operação CIS
  4. Atualiza também a capa do contrato (contracts.operation_id)
  5. Registra um evento de auditoria no contrato documentando a alteração

Tabelas afetadas no ERP:


03.02 — Contratos Anuais (tipo_pag = 'A')

Por que existe: No Integrator, planos com tipo_pag = 'A' são cobrados anualmente, não mensalmente. A migração padrão cria todos os contratos como mensais. Sem este ajuste, o ERP tentaria gerar faturas mensais para contratos que deveriam ser faturados uma vez ao ano.

O que faz:

  1. Busca no legado todos os serviços com tipo_pag = 'A'
  2. Localiza os contratos correspondentes no ERP
  3. Atualiza o tipo de faturamento para anual (billing_type = 2) e o tipo de fatura para avulsa (invoice_type = 1)
  4. Remove os meses de faturamento mensal eventualmente cadastrados
  5. Insere o mês correto de faturamento anual conforme o mês de vencimento registrado no legado

Tabelas afetadas no ERP:


04.01 — Configuração de Slots e Portas das OLTs

Por que existe: O Integrator armazena a configuração técnica detalhada das OLTs (equipamentos de fibra óptica): quais slots existem, quantas portas PON cada slot tem, qual VLAN de dados e de voz está configurada em cada porta, gemport etc. Essas informações não entram no fluxo padrão de migração de conexões — precisam de um script específico.

O que faz: Para cada OLT migrada, monta um JSON estruturado com a configuração completa de cada slot e porta e grava no ponto de acesso correspondente no ERP, incluindo o número total de slots e portas.

Se ocorrer qualquer erro (ex: tabela legada inexistente na versão do cliente), o script registra uma notificação mas não interrompe a migração.

Tabelas afetadas no ERP:


05.01 — Desconto de Adimplência nas Faturas

Por que existe: O Integrator tem um módulo de desconto por adimplência — um desconto automático para clientes que pagam em dia. Esse desconto fica registrado no legado e precisa ser transferido para as faturas correspondentes no ERP, garantindo que o valor apresentado ao cliente esteja correto.

O que faz: Busca no legado os descontos vinculados a cada fatura e atualiza os campos de desconto por adimplência na fatura do ERP, marcando que o desconto deve ser aplicado conforme configuração do contrato.

Tabelas afetadas no ERP:


05.02 — Recriar Títulos das Faturas

Por que existe: Uma fatura (FAT) no ERP pode ter vários títulos abaixo dela — um por agrupador de faturamento do contrato. O script 03.01 muda o agrupador de alguns contratos para CIS depois de as faturas já terem sido criadas. Isso deixa os títulos dessas faturas apontando para o agrupador antigo — desatualizados e incorretos para a geração de cobrança.

O que faz:

  1. Identifica todas as faturas migradas cujos títulos estão desatualizados (agrupador mudou após a criação)
  2. Salva o histórico completo dos títulos antigos como ocorrência de auditoria na própria fatura
  3. Deleta (soft-delete) os títulos desatualizados
  4. Recria os títulos distribuindo os valores proporcionalmente entre os agrupadores de faturamento atuais
  5. Ajusta arredondamentos de centavos para garantir que a soma dos títulos bata com o valor total da fatura
  6. Se uma fatura ficar com valor inconsistente após a recriação, desfaz as alterações nela individualmente (rollback por fatura) e registra o caso para revisão manual
  7. Registra eventos de auditoria em todas as faturas e títulos processados

Este é o script de maior impacto desta etapa — toca diretamente em dados financeiros de cobrança. Por isso valida consistência antes e depois de cada fatura e tem mecanismo de rollback individual. Faturas não alteradas por inconsistência ficam registradas em maintenance.migracao_integrator_undo_receivable_titles para revisão manual.

Tabelas afetadas no ERP:


07.01 — Inativar Matrizes de Atendimento Migradas

Por que existe: As matrizes de atendimento do Integrator (categorias de abertura de chamado) são migradas para o ERP para preservar o histórico das solicitações. Porém, após a migração, essas matrizes do legado devem ser inativadas para que a interface do ERP exiba apenas as matrizes ativas do novo ambiente, sem poluição com registros obsoletos que não fazem mais parte do processo do cliente.

O que faz: Localiza todas as matrizes que vieram da migração (identificadas pelo erp_code com prefixo do cliente) e marca como deletadas.

Tabelas afetadas no ERP:


14. DE/PARA Técnico — Mapeamento Coluna a Coluna

Esta seção detalha o mapeamento exato entre as colunas do Integrator, a camada intermediária (connector) e o destino final no ERP Voalle. O campo Coluna ERP Voalle indica a tabela e coluna exata onde o dado persiste após a consolidação.


14.1 Empresas → Locais

Fonte: legado.empresas Destino: connector.locaiserp.companies_places Script: Cadastros/01.01-Locais.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codemperp_codeerp.companies_places.erp_codeprefix('CP_' + codemp)
nome_emprazao_socialerp.companies_places.descriptionDireto
nome_fannome_fantasiaerp.companies_places.name_2Se vazio, usa nome_emp
cnpjdocumentoerp.companies_places.tx_idRemove formatação (só dígitos)
icminscricao_estadualerp.companies_places.state_registrationNULLIF se vazio
cidade (código)cidade / uf_estadoerp.companies_places.city_code, .city, .stateVia maintenance.code_cities
crt = '1'optante_simpleserp.companies_places.simple_optingTRUE se crt = '1', senão FALSE

14.2 Grupos de Pessoas

Fonte: legado.grupo_clientes Destino: connector.grupos_pessoaserp.people_groups Script: Cadastros/03.01-GrupoPessoas.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codgrupoerp_codeerp.people_groups.erp_codeprefix('PG_' + codgrupo)
nome_grupodescricaoerp.people_groups.titleDireto

14.3 Grupos de Serviços

Fonte: legado.grupos_servicos Destino: connector.grupos_servicoserp.service_product_groups Script: Cadastros/04.01-GruposServicos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codgrupoerp_codeerp.service_product_groups.erp_codeprefix('SPG_' + codgrupo)
nome_grupodescricaoerp.service_product_groups.titleDireto

14.4 Tipos de Cobrança

Fonte: legado.forma_cobrancas + legado.bancos + legado.conf_boletos Destino: connector.tipos_cobrancaerp.financial_collection_types Script: Cadastros/02.02-TiposCobranca.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
forma_cobrancas.codcoberp_codeerp.financial_collection_types.erp_codeprefix('FCT_' + codcob)
forma_cobrancas.desc_cobdescricaoerp.financial_collection_types.titleDireto
bancos.codbanerp_code_caixas_contaserp.financial_collection_types.bank_account_idprefix('BA_' + codban)
forma_cobrancas.tipo = 'carne'forma_cobrancaerp.financial_collection_types.scriptural_billing3 (Carnê)
forma_cobrancas.tipo = 'C'forma_cobrancaerp.financial_collection_types.scriptural_billing5 (Cartão)
forma_cobrancas.tipo = 'N'forma_cobrancaerp.financial_collection_types.scriptural_billing1 (Normal/Boleto)
forma_cobrancas.tipo = 'D'forma_cobrancaerp.financial_collection_types.scriptural_billing2 (Débito Automático)
conf_boletos.jurosjuroserp.financial_collection_types.interestPercentual direto
conf_boletos.multamultaerp.financial_collection_types.finePercentual direto
conf_boletos.descontodescontoerp.financial_collection_types.discount_valuePercentual direto
conf_boletos.diasprotestodias_protestoerp.financial_collection_types.protest_daysDireto

14.5 Grupos de IPs (dados fixos)

Fonte: Nenhuma — inseridos estaticamente Destino: connector.grupos_ipserp.authentication_ip_groups Script: Cadastros/08.02-GrupoIPs.sql

erp_codeDescriçãoFinalidade
prefix('IP_FIXO')IPs Fixos de ClientesIPs alocados diretamente a clientes
prefix('EQP')Equipamentos de RedeIPs de NAS, AP, OLT, RADIUS
prefix('POOL')Pool DinâmicoIPs distribuídos via DHCP

14.6 IPs (5 origens)

Destino: connector.ipserp.authentication_ips Script: Cadastros/08.03-IPs.sql

Origemerp_codeerp_code_grupo_ipCampos migrados
ip.nro_ip (IP de cliente)prefix('IP_' + nro_ip)prefix('IP_FIXO')nro_ip, mascara, gateway, dns
radios.ip onde nas = 'S' (rádio NAS)prefix('IP_IPNAS_' + ip)prefix('EQP')ip do rádio NAS
radios.ip onde nas = 'N' (access point)prefix('IPAP_' + ip)prefix('EQP')ip do AP
olt_fibra.ip (IP da OLT)prefix('IP_' + ip)prefix('EQP')ip da OLT
nas_radius.host (RADIUS)prefix('IP_RAD_' + host)prefix('EQP')host/IP do RADIUS

Mapeamento de colunas (erp.authentication_ips):

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
ip.nro_ip / radios.ip / etc.endereco_iperp.authentication_ips.ipDireto
ip.mascara / etc.mascaraerp.authentication_ips.netmaskDireto
(fixo/derivado)erp_code_grupo_iperp.authentication_ips.authentication_ip_group_idReferência ao grupo
ip.nro_iperp_codeerp.authentication_ips.erp_codeprefix('IP_' + nro_ip)
ip.tipotipoerp.authentication_ips.typeDireto
ip.motivo_reservamotivo_reservaerp.authentication_ips.descriptionDireto
ip.privado_publicoprivado_publicoerp.authentication_ips.priority1=público, 2=privado

14.7 Concentradores

Fonte: legado.nas_radius + legado.radios Destino: connector.concentradoreserp.authentication_concentrators Script: Cadastros/08.04-Concentradores.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
nas_radius.hosterp_codeerp.authentication_concentrators.erp_codeprefix('CE_' + host)
nas_radius.descricaonomeerp.authentication_concentrators.titleDireto
nas_radius.hosterp_code_iperp.authentication_concentrators.codeprefix('IP_RAD_' + host)
(fixo para NAS)tipoerp.authentication_concentrators.type1 (RADIUS)
radios.codraderp_codeerp.authentication_concentrators.erp_codeprefix('CE_' + codrad)
radios.descri_radnomeerp.authentication_concentrators.titleDireto
(fixo para rádios)tipoerp.authentication_concentrators.type2 (Access Point)
(fixo — sem legado)erp_code = 'MIG_999'erp.authentication_concentrators.erp_codeInserido direto no ERP

14.8 Pontos de Acesso (OLTs)

Fonte: legado.olt_fibra Destino: connector.pontos_acessoerp.authentication_access_points Script: Cadastros/08.05-PontodeAcesso.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codolterp_codeerp.authentication_access_points.erp_codeprefix('OLT_' + codolt)
descri_oltnomeerp.authentication_access_points.titleDireto
codoltcodigoerp.authentication_access_points.codeDireto
iperp_code_iperp.authentication_access_points.authentication_ip_idprefix('IP_' + ip)
codtolt = 'HUAWEI'codigo_fabricanteerp.authentication_access_points.manufacturer_code5
codtolt = 'DATACOM'codigo_fabricanteerp.authentication_access_points.manufacturer_code9
codtolt = 'ZTE'codigo_fabricanteerp.authentication_access_points.manufacturer_code8
codtolt = 'FIBERHOME'codigo_fabricanteerp.authentication_access_points.manufacturer_code6
codtolt = 'NOKIA'codigo_fabricanteerp.authentication_access_points.manufacturer_code14
codtolt = 'PARKS'codigo_fabricanteerp.authentication_access_points.manufacturer_code4
ativo = 'N'ativoerp.authentication_access_points.activeFALSE — senão TRUE
loginusuarioerp.authentication_access_points.userDireto
senhasenhaerp.authentication_access_points.passwordDireto
(fixo)tipoerp.authentication_access_points.type4 (OLT)
(fixo — sem legado)'MIG_999'erp.authentication_access_points.erp_codePonto de acesso padrão de migração

14.9 Condomínios

Fonte: legado.condominios + legado.tipo_ponto_roteamento Destino: connector.condominioserp.authentication_access_points (type=5) Script: Cadastros/08.07-Condominios.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codconerp_codeerp.authentication_access_points.erp_codeprefix('CND' + codcon)
nome_condescricaoerp.authentication_access_points.titleDireto
cepceperp.authentication_access_points.postal_codeDireto
enderecoendereco / numeroerp.authentication_access_points.street, .street_numberSeparados por função
bairrobairroerp.authentication_access_points.neighborhoodDireto
cidadecidadeerp.authentication_access_points.cityVia maintenance.code_cities
tipo_ponto_roteamento.descritipoerp.authentication_access_points.type5 (Condomínio)

14.10 Clientes → Pessoas

Fonte: legado.clientes + legado.observacoes Destino: connector.pessoaserp.people Script: Operacional/03.02-Pessoas.sql (bloco Clientes)

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codclierp_codeerp.people.erp_codeprefix('CLI_' + codcli)
tipo_cliente = 'F'tipo_pessoaerp.people.type_tx_id2 (Física)
tipo_cliente = 'J'tipo_pessoaerp.people.type_tx_id1 (Jurídica)
ativo = 'S' / 'N'statuserp.people.status1 (Normal) / 0 (Inativa)
cpf (PF)documentoerp.people.tx_idRemove formatação
cnpj (PJ)documentoerp.people.tx_idRemove formatação
nome_clirazao_social_nomeerp.people.name_2Nome legal completo
nome_cli (PF) / nome_fan (PJ)nome_fantasia_apelidoerp.people.nameNome curto / fantasia
cepcep_principalerp.people.postal_codeDireto
enderecoendereco_principalerp.people.streetRemove o número
endereconumero_principalerp.people.numberExtrai somente o número
bairrobairro_principalerp.people.neighborhoodDireto
cidade (código)codigo_ibge_endereco_principalerp.people.city_codeVia erp.code_cities
cidade (código)cidade_principalerp.people.cityNome da cidade
(via cidade)uf_principalerp.people.stateSigla do estado
referenciareferencia_endereco_principalerp.people.address_referenceDireto
e_mailemail + email_NFEerp.people.emailMesmo valor nos dois campos
ddd + fonetelefoneerp.people.phoneConcatenados
celularcelularerp.people.cell_phoneDireto
rg (PF)identidadeerp.people.identity_numberDireto; NULL se PJ
data_nacdata_nascimentoerp.people.birth_dateNULL se '0000-00-00'
data_caddata_cadastroerp.people.createdCast DATE
icminscricao_estadualerp.people.state_registrationDireto
ic_muninscricao_municipalerp.people.municipal_registrationDireto
obsobservacoes_tecnicaserp.people.technical_observationDireto
observacoes.obs (todas)observacoes_administrativaserp.people.administrative_observationConcatenadas com data
simples_nacional = 'S' e PJregime_tributarioerp.people.tax_regime1 (Simples Nacional)
simples_nacional = 'N' e PJregime_tributarioerp.people.tax_regime2 (Lucro Presumido/Real)
funcionario = 'S'colaboradorerp.people.collaboratorTRUE
codgclierp_code_grupo_pessoaserp.people.people_group_idprefix('PG_' + codgcli)
latitude / longitudelatitude_end_principal / longitude_end_principalerp.people.lat / .lngDireto
(fixo)clienteerp.people.clientTRUE
(fixo)fornecedorerp.people.supplierFALSE
(fixo)situacaoerp.people.situation3 (Cliente)

14.11 Fornecedores → Pessoas

Fonte: legado.fornecedores Destino: connector.pessoaserp.people Script: Operacional/03.02-Pessoas.sql (bloco Fornecedores)

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codforerp_codeerp.people.erp_codeprefix('FOR_' + codfor)
tipo_pesso = 'F' / 'J'tipo_pessoaerp.people.type_tx_id2 / 1
cpf / cnpjdocumentoerp.people.tx_idRemove formatação
nome_forrazao_social_nomeerp.people.name_2Direto
nome_fannome_fantasia_apelidoerp.people.nameDireto
cepcep_principalerp.people.postal_codeDireto
enderecoendereco_principal / numero_principalerp.people.street / .numberSeparados por função
cidadecidade_principal / uf_principalerp.people.city / .stateVia maintenance.code_cities
e_mailemail + email_NFEerp.people.emailMesmo valor
ddd + fonetelefoneerp.people.phoneConcatenados
celularcelularerp.people.cell_phoneDireto
rg (PF)identidadeerp.people.identity_numberNULL se PJ
icminscricao_estadualerp.people.state_registrationDireto
obs + contatoobservacoes_administrativaserp.people.administrative_observationConcatenados
(fixo)fornecedorerp.people.supplierTRUE
(fixo)clienteerp.people.clientFALSE
(fixo)situacaoerp.people.situation3
(fixo)statuserp.people.status1 (Normal)
(fixo)erp_code_grupo_pessoaserp.people.people_group_idprefix('FORNECEDORES')

14.12 Contatos → Pessoas

Fonte: legado.contatos_cliente Destino: connector.pessoaserp.people Script: Operacional/03.02-Pessoas.sql (bloco Contatos)

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codcontatoerp_codeerp.people.erp_codeprefix('CNT_' + codcontato)
nomerazao_social_nomeerp.people.name_2Direto
cpfdocumentoerp.people.tx_idRemove formatação
e_mailemailerp.people.emailDireto
ddd + fonetelefoneerp.people.phoneConcatenados
celularcelularerp.people.cell_phoneDireto
obsobservacoes_administrativaserp.people.administrative_observationDireto
codcli(vínculo para cliente pai)erp.people_contacts.person_idReferencia a pessoa CLI_
(fixo)tipo_pessoaerp.people.type_tx_id2 (Física)
(fixo)statuserp.people.status1 (Normal)
(fixo)situacaoerp.people.situation3

14.13 Prospects → Pessoas

Fonte: legado.prospect Destino: connector.pessoaserp.people Script: Operacional/03.02-Pessoas.sql (bloco Prospects)

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codprosperp_codeerp.people.erp_codeprefix('PROSP_' + codprosp)
nomerazao_social_nomeerp.people.name_2Direto
cpf / cnpjdocumentoerp.people.tx_idRemove formatação
e_mailemailerp.people.emailDireto
ddd + fonetelefoneerp.people.phoneConcatenados
celularcelularerp.people.cell_phoneDireto
cepcep_principalerp.people.postal_codeDireto
enderecoendereco_principal / numero_principalerp.people.street / .numberSeparados por função
(fixo)situacaoerp.people.situation5 (Prospect)
(fixo)statuserp.people.status1 (Normal)

14.14 Usuários → Pessoas

Fonte: legado.usuarios Destino: connector.pessoaserp.people Script: Operacional/03.02-Pessoas.sql (bloco Usuários)

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codusuerp_codeerp.people.erp_codeprefix('USU_' + codusu)
nome_usurazao_social_nomeerp.people.name_2Direto
e_mailemailerp.people.emailDireto
cpfdocumentoerp.people.tx_idRemove formatação
(fixo)colaboradorerp.people.collaboratorTRUE
(fixo)statuserp.people.status1 (Normal)
(fixo)situacaoerp.people.situation3

14.15 Comunicações (Meios de Contato)

Fonte: legado.contatos_cliente Destino: connector.pessoas_comunicacaoerp.communications_people Script: Operacional/03.03-Comunicacoes.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codcontatoerp_codeerp.communications_people.erp_codeprefix('CON_' + codcontato)
codclierp_code_pessoaerp.communications_people.person_idprefix('CLI_' + codcli)
ddd + fonecontatoerp.communications_people.contactConcatenados — tipo 1 (Telefone)
e_mailcontatoerp.communications_people.contactDireto — tipo 2 (E-mail)
celularcontatoerp.communications_people.contactDireto — tipo 3 (Celular)
faxcontatoerp.communications_people.contactDireto — tipo 6 (Fax)
nomecomplementoerp.communications_people.complementNome do contato como complemento

14.16 Endereços de Cobrança

Fonte: legado.endereco_cli (tipo COBRANÇA) → fallback: legado.clientes Destino: connector.enderecoserp.people_addresses Script: Operacional/03.04-Enderecos.sql

OrigemColuna ConnectorColuna ERP VoalleRegra
endereco_cli.cep ou clientes.cepceperp.people_addresses.postal_codePrioriza endereco_cli
endereco_cli.endereco ou clientes.enderecologradouro / numeroerp.people_addresses.street / .numberSeparados por função
endereco_cli.bairro ou clientes.bairrobairroerp.people_addresses.neighborhoodFallback clientes
endereco_cli.cidadecidade / uferp.people_addresses.city / .stateVia maintenance.code_cities
endereco_cli.codclierp_code_pessoaerp.people_addresses.person_idprefix('CLI_' + codcli)
(fixo)tipo_enderecoerp.people_addresses.type2 (Cobrança)

14.17 servicos_cli → Contratos

Fonte: legado.servicos_cli + legado.clientes + legado.vencimentos + legado.forma_cobrancas + legado.bancos Destino: connector.contratoserp.contracts Script: Operacional/05.01-Contratos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codcli + codserclierp_codeerp.contracts.erp_codeprefix('CNT_' + codcli + '_' + codsercli)
tipo_cliente + carne + descontocode_tipo_contratoerp.contracts.codePF boleto=1.01 / PF carnê=1.02 / PJ boleto=2.01 / PJ carnê=2.02 / Cortesia=3.01
sip.codemp ou b.codemperp_code_localerp.contracts.company_place_idprefix('CP_' + codemp)
codpoperp_code_unidade_negocioerp.contracts.company_place_business_unit_idprefix('UNN_' + codpop)
codclierp_code_clienteerp.contracts.client_idprefix('CLI_' + codcli)
codcfop + tipo_clientetipo_clienteerp.contracts.client_type5301→6, 5302→2, 5303→1, 5307→3(PF)/99
codcli + nro_planonumero_contratoerp.contracts.contract_numberConcatenados com -
codcli + nro_planodescricaoerp.contracts.descriptionMesmo valor
data_landata_criacaoerp.contracts.dateCast DATE
nunca_suspender = 'N'bloqueio_automatico(config. contrato)TRUE
enviar_aviso = 'S'alerta_cobranca(config. contrato)TRUE
obs + descri_ser + codsercliobservacoeserp.contracts.observationConcatenados + sufixo codsercli.: (nro_plano) - codsercli
observacoes.obs (tipo FINANCEI)observacoes_faturamentoerp.contracts.observation_billingData + texto
desconto >= 100tipo_faturamentoerp.contracts.invoice_type5 (Cortesia)
(outros)tipo_faturamentoerp.contracts.invoice_type4 (Antecipado)
antecipada = 'N'vencimento_boletoerp.contracts.billing_type1 (Mês seguinte)
antecipada = 'S'vencimento_boletoerp.contracts.billing_type0 (Mês atual)
vencimentos.diadia_vencimentoerp.contracts.collection_dayDefault 15 se nulo
vencimentos.dia_fdia_corteerp.contracts.cut_dayDefault 30 se nulo
data_ini ou data_caddata_inicio_vigenciaerp.contracts.beginning_datePrioriza data_ini
(fixo)data_final_vigenciaerp.contracts.final_date2049-12-31
data_con + validade (meses)data_reajuste + data_fidelizacaoerp.contracts.next_adjustment_date / erp.contracts.billing_final_datedata_con + validade meses
validadeduracao_fidelizacaoerp.contracts.months_durationDireto (meses)
codcoberp_code_tipo_cobrancaerp.contracts.financial_collection_type_idprefix('FCT_' + codcob)
servicos.codctacode_natureza_financeiraerp.contracts.financer_nature_idprefix('PC_' + codcta)
c.imprime_nf = 'S'code_operacao_financeiraerp.contracts.operation_id'1.01' (com NF)
c.imprime_nf = 'N'code_operacao_financeiraerp.contracts.operation_id'1.31' (CIS, sem NF)
codvenerp_code_vendedorerp.contracts.seller_1_idDireto
codestsituacaoerp.contracts.statusVer tabela de situações abaixo
data_candata_finalizacaoerp.contracts.cancellation_dateCast DATE
codcanmotivo_finalizacao(campo auxiliar)Direto

Mapeamento de situação (codestsituacao):

Código IntegratorDescrição IntegratorSituação ERPValor
Código "Habilitado"Serviço habilitadoNormal1
Habilitado + desconto >= 100%CortesiaCortesia3
Código "Suspenso por Débito"InadimplenteBloqueio Financeiro6
Código "Inativo"InativoSuspenso5
Código "Cancelado"CanceladoCancelado4
Código "Suspensão Temporária"Suspensão temp.Bloqueio Administrativo7
Código "Suspenso a Pedido"Suspenso a pedidoSuspenso5
DemaisAguardando, outrosNormal1

14.18 Itens de Contrato (4 origens)

Destino: connector.itens_contratoerp.contract_items Script: Operacional/05.02-ItensContrato.sql

Serviço principal

Fonte: legado.servicos_cli + legado.servicos

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codserclierp_codeerp.contract_items.erp_codeprefix('CNTIT_' + codsercli)
codcli + codserclierp_code_contratoerp.contract_items.contract_idprefix('CNT_' + codcli + '_' + codsercli)
servicos.codsererp_code_servicoerp.contract_items.service_product_idprefix('SRV_' + codser)
servicos.descri_serdescricao_itemerp.contract_items.descriptionDireto
(fixo)quantidadeerp.contract_items.units1.00
valor_planovalor_unitarioerp.contract_items.unit_amountDireto
codserclietiquetaerp.contract_items.service_tagPara rastreamento pós-migração

Serviço extra

Fonte: legado.servicos_cli_extras + legado.servicos_extras

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codsercliexerp_codeerp.contract_items.erp_codeprefix('CNTIT_' + codsercliex + '_EXTRA')
servicos_extras.codserexerp_code_servicoerp.contract_items.service_product_idprefix('SRV_EXTRA_' + codserex)
servicos_extras.descri_serexdescricao_itemerp.contract_items.descriptionDireto
servicos_cli_extras.valorvalor_unitarioerp.contract_items.unit_amount0.00 se tipo_cob = 'U' (por uso)

Telefonia VoIP

Fonte: legado.terminal_voz

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
terminal_voz.codtvozerp_codeerp.contract_items.erp_codeprefix('CNTIT_' + codtvoz)
terminal_voz.prefixoddderp.contract_items.telephone_ddd2 dígitos do DDD
terminal_voz.prefixo + terminal_idtelefoneerp.contract_items.telephoneNúmero completo
(fixo)valor_unitarioerp.contract_items.unit_amount0.00
(fixo)code_grupo_telefone(grupo de telefonia)'MIG'

Pacote de TV

Fonte: legado.pacotes_sc + legado.pacotes

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
pacotes_sc.codpscerp_codeerp.contract_items.erp_codeprefix('CNTIT_' + codpsc)
pacotes.codpacerp_code_servicoerp.contract_items.service_product_idprefix('SRV_TV_' + codpac)
pacotes.descri_pacdescricao_itemerp.contract_items.descriptionDireto
(fixo)valor_unitarioerp.contract_items.unit_amount0.00

14.19 Eventos do Contrato

Fonte: legado.historico_cliente Destino: connector.contratos_eventoserp.contract_events Script: Operacional/05.04-EventosContratos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
codcli + codsercli + sequênciaerp_codeerp.contract_events.erp_codeprefix('HIS_CNT_' + ...)
codcli + codserclierp_code_contratoerp.contract_events.contract_idprefix('CNT_' + codcli + '_' + codsercli)
data_altdata_eventoerp.contract_events.dateCast DATE
desc_alt / obsdescricaoerp.contract_events.descriptionTexto do histórico
(fixo)tipo_eventoerp.contract_events.contract_event_type_id'MIG_0999'

14.20 Conexões — PPPoE / Hotspot

Fonte: legado.login_radius + legado.ip + legado.onu_fibra + legado.olt_fibra + legado.pon_slot + legado.interfaces_radios + legado.condominios + legado.endereco_cli + legado.clientes Destino: connector.conexoeserp.authentication_contracts Script: Operacional/08.07-Conexoes.sql (bloco PPPoE/Hotspot)

OrigemColuna ConnectorColuna ERP VoalleTransformação / Regra
login_radius.codlraderp_codeerp.authentication_contracts.erp_codeprefix('CNX_' + codlrad)
servicos_cli.codserclierp_code_item_contratoerp.authentication_contracts.contract_item_idprefix('CNTIT_' + codsercli)
login_radius.loginusuario_pppoeerp.authentication_contracts.userDireto
login_radius.senhasenha_pppoeerp.authentication_contracts.passwordDireto
onu_fibra.ger_loginusuario_equipamentoerp.authentication_contracts.equipment_userLogin de gestão da ONU
onu_fibra.ger_senhasenha_equipamentoerp.authentication_contracts.equipment_passwordSenha de gestão da ONU
onu_fibra.mac ou ip.macadress1macerp.authentication_contracts.macNormalizado XX-XX-XX-XX-XX-XX maiúsculo
ip.wpa2senha_wpaerp.authentication_contracts.mac_passwordDireto
condominios.nome_coninfo_complementar_conerp.authentication_contracts.complementNome do condomínio
condominios.codconerp_code_condominioerp.authentication_contracts.condominium_idprefix('CND' + codcon)
olt_fibra.codolterp_code_ponto_de_acessoerp.authentication_contracts.authentication_access_point_idprefix('OLT_' + codolt) — fallback 'MIG_999'
ip.nro_ip (se válido)erp_code_iperp.authentication_contracts.ip_authentication_idprefix('IP_' + nro_ip)
ip.nro_ip (se válido)erp_code_grupo_iperp.authentication_contracts.authentication_ip_group_idprefix('IP_FIXO')
ip.nro_ip (se válido)tipo_iperp.authentication_contracts.ip_type1 (Fixo) — senão 2 (Dinâmico)
interfaces_radios.codtintr = 'PPPOE'tipo_conexaoerp.authentication_contracts.connection_type1 (PPPoE)
ip.hotspot = 'S'tipo_conexaoerp.authentication_contracts.connection_type3 (Hotspot)
endereco_cli.cep ou clientes.cepceperp.authentication_contracts.postal_codePrioriza endereço de instalação
endereco_cli.enderecoendereco / numeroerp.authentication_contracts.street / .street_numberSeparados; fallback clientes
endereco_cli.bairrobairroerp.authentication_contracts.neighborhoodFallback clientes.bairro
code_cities.citycidadeerp.authentication_contracts.cityVia código IBGE
code_cities.state_abbreviationuferp.authentication_contracts.stateVia código IBGE
onu_fibra.nro_serieserialerp.authentication_contracts.equipment_serial_numberNúmero de série da ONU
pon_slot.ponid (3o segmento)porta_olterp.authentication_contracts.port_oltEx: gpon-0/1/2 → porta 2
pon_slot.ponid (2o segmento)slot_olterp.authentication_contracts.slot_oltEx: gpon-0/1/2 → slot 1
onu_fibra.ssid_wrlswifi_ssiderp.authentication_contracts.wifi_nameSSID da rede Wi-Fi da ONU
onu_fibra.senha_wrlswifi_senhaerp.authentication_contracts.wifi_passwordSenha Wi-Fi da ONU
onu_fibra.vlan_portvlanerp.authentication_contracts.vlanVLAN configurada na ONU
ip.ip_secundarioip_valido_lanerp.authentication_contracts.valid_lan_ipIP da rede LAN
ip.clase_secmascara_lanerp.authentication_contracts.valid_lan_ip_classMáscara da rede LAN
(fixo)porta_weberp.authentication_contracts.api_port80

14.21 Conexões — IP Fixo sem PPPoE

Script: Operacional/08.07-Conexoes.sql (bloco IP Fixo)

OrigemColuna ConnectorColuna ERP VoalleTransformação / Regra
servicos_cli.codserclierp_codeerp.authentication_contracts.erp_codeprefix('CNX_' + codsercli)
servicos_cli.codserclierp_code_item_contratoerp.authentication_contracts.contract_item_idprefix('CNTIT_' + codsercli)
ip.nro_iperp_code_iperp.authentication_contracts.ip_authentication_idprefix('IP_' + nro_ip)
interfaces_radios.codraderp_code_ponto_de_acessoerp.authentication_contracts.authentication_access_point_idprefix('AP_' + codrad)
ip.macadress1macerp.authentication_contracts.macMaiúsculo
(fixo)tipo_conexaoerp.authentication_contracts.connection_type2 (IP Fixo)

14.22 Faturas (Boletos)

Fonte: legado.faturas + legado.contas_rec + legado.bancos + legado.servicos_cli + legado.clientes Destino: connector.faturaserp.financial_receivable_titles (origin=8) Script: Operacional/06.01-Faturas.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
faturas.codfaterp_codeerp.financial_receivable_titles.erp_code_bill_titleprefix('FAT_' + codfat)
bancos.codemperp_code_localerp.financial_receivable_titles.company_place_idprefix('CP_' + codemp)
contas_rec.codclierp_code_clienteerp.financial_receivable_titles.client_idprefix('CLI_' + codcli)
contas_rec.codcli + codserclierp_code_contratoerp.financial_receivable_titles.contract_idprefix('CNT_' + codcli + '_' + codsercli)
faturas.codcoberp_code_tipo_cobrancaerp.financial_receivable_titles.financial_collection_type_idprefix('FCT_' + codcob)
servicos.codctacode_natureza_financeiraerp.financial_receivable_titles.financer_nature_idprefix('PC_' + codcta)
clientes.imprime_nf = 'S'code_operacao_financeiraerp.financial_receivable_titles.financial_operation_id'1.01'
clientes.imprime_nf = 'N'code_operacao_financeiraerp.financial_receivable_titles.financial_operation_id'1.31' (CIS)
faturas.codfatnumero_faturaerp.financial_receivable_titles.titleDireto
faturas.nro_bolnosso_numeroerp.financial_receivable_titles.bank_title_numberDireto
faturas.status IN ('B','Q','X','D')baixadoerp.financial_receivable_titles.finishedTRUE
faturas.data_baidata_baixaerp.financial_receivable_titles.finished_dateCast DATE
faturas.data_emidata_emissaoerp.financial_receivable_titles.issue_dateCast DATE
faturas.data_vendata_vencimentoerp.financial_receivable_titles.expiration_dateCast DATE
faturas.data_refcompetenciaerp.financial_receivable_titles.competenceCast DATE
faturas.status IN ('N','B','X')em_remessaerp.financial_receivable_titles.financial_remittance_idTRUE
faturas.status = 'Q'liquidado(saldo zerado no título)TRUE

14.23 Faturas Recebidas (Boletos Pagos)

Fonte: legado.faturas (status != 'D', parcelamento='N') + legado.contas_rec + legado.detalhe_faturas + legado.mov_bancario + legado.descontos + legado.juros_contas_rec Destino: connector.faturas_recebidaserp.financial_receipt_titles Script: Operacional/06.02-FaturasRecebidas.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
faturas.codfaterp_codeerp.financial_receipt_titles.erp_codeprefix('FAT_REC_' + codfat + '_N')
faturas.codfaterp_code_faturaerp.financial_receipt_titles.financial_receivable_title_idprefix('FAT_' + codfat)
contas_rec.codclierp_code_pessoaerp.financial_receipt_titles.client_idprefix('CLI_' + codcli)
mov_bancario.codban ou forma_cobrancas.codbanerp_code_caixas_contaserp.financial_receipt_titles.bank_account_idprefix('BA_' + codban)
contas_rec.valor_pag + descontos.valor_desvalor_recebidoerp.financial_receipt_titles.amountValor pago + desconto aplicado
juros_contas_rec.valor_jurosjuroserp.financial_receipt_titles.increase_amountJuros cobrados
juros_contas_rec.valor_multamultaerp.financial_receipt_titles.fine_amountMulta cobrada
descontos.valor_desdescontoerp.financial_receipt_titles.discount_valueDesconto aplicado
mov_bancario.data_ven ou faturas.data_baidata_recebimentoerp.financial_receipt_titles.receipt_dateData efetiva do recebimento
contas_rec.data_bai ou mov_bancario.data_landata_pagamentoerp.financial_receipt_titles.client_paid_dateData do pagamento
contas_rec.histo_reccomplementoerp.financial_receipt_titles.complementHistórico do recebimento

14.24 Contas a Receber (Títulos)

Fonte: legado.contas_rec + legado.detalhe_faturas + legado.faturas + legado.imp_contas_rec + legado.det_nota_fiscal Destino: connector.contas_recebererp.financial_receivable_titles Script: Operacional/06.03-ContasReceber.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
contas_rec.codcrecerp_codeerp.financial_receivable_titles.erp_codeprefix('TIT_' + codcrec)
contas_rec.codemperp_code_localerp.financial_receivable_titles.company_place_idprefix('CP_' + codemp)
detalhe_faturas.codfaterp_code_faturaerp.financial_receivable_titles.bill_title_idprefix('FAT_' + codfat) — NULL se pago parcialmente
contas_rec.codclierp_code_clienteerp.financial_receivable_titles.client_idprefix('CLI_' + codcli)
contas_rec.codcli + codserclierp_code_contratoerp.financial_receivable_titles.contract_idprefix('CNT_' + codcli + '_' + codsercli)
contas_rec.codcoberp_code_tipo_cobrancaerp.financial_receivable_titles.financial_collection_type_idprefix('FCT_' + codcob)
plano_cta.codctacode_natureza_financeiraerp.financial_receivable_titles.financer_nature_idprefix('PC_' + codcta)
codtnf = 'MODELO21'code_operacao_financeiraerp.financial_receivable_titles.financial_operation_id'1.01'
codtnf = 'MODELO22'code_operacao_financeiraerp.financial_receivable_titles.financial_operation_id'1.02'
codtnf = 'MODELO55'code_operacao_financeiraerp.financial_receivable_titles.financial_operation_id'7.03'
codtnf IN ('FATURA','NOTASERVIC')code_operacao_financeiraerp.financial_receivable_titles.financial_operation_id'1.21'
codtnf (demais)code_operacao_financeiraerp.financial_receivable_titles.financial_operation_id'1.31'
contas_rec.codcrecnumero_tituloerp.financial_receivable_titles.titleDireto
contas_rec.nro_bolnosso_numeroerp.financial_receivable_titles.bank_title_numberDireto
contas_rec.valor_lanvalor_documento / valor_tituloerp.financial_receivable_titles.document_amount / .title_amountDireto
contas_rec.data_landata_emissaoerp.financial_receivable_titles.issue_dateCast DATE
contas_rec.data_vendata_vencimentoerp.financial_receivable_titles.expiration_dateCast DATE
contas_rec.data_refcompetenciaerp.financial_receivable_titles.competenceCast DATE
faturas.status IN ('B','Q','X')baixadoerp.financial_receivable_titles.finishedTRUE
contas_rec.data_baidata_baixaerp.financial_receivable_titles.finished_dateCast DATE
faturas.status = 'Q'liquidado(saldo zerado no título)TRUE
faturas.status IN ('N','B','X')em_remessaerp.financial_receivable_titles.financial_remittance_idTRUE

14.25 Contas Recebidas (Títulos Quitados)

Fonte: legado.contas_rec WHERE valor_lan <= valor_pag AND data_bai IS NOT NULL + legado.mov_bancario + legado.descontos + legado.juros_contas_rec Destino: connector.contas_recebidaserp.financial_receipt_titles Script: Operacional/06.04-ContasRecebidas.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
contas_rec.codcrecerp_codeerp.financial_receipt_titles.erp_codeprefix('TIT_REC_' + codcrec)
contas_rec.codcrecerp_code_conta_recebererp.financial_receipt_titles.financial_receivable_title_idprefix('TIT_' + codcrec)
mov_bancario.codban ou forma_cobrancas.codbanerp_code_caixas_contaserp.financial_receipt_titles.bank_account_idprefix('BA_' + codban)
contas_rec.valor_pag + descontos.valor_desvalor_recebidoerp.financial_receipt_titles.amountValor pago + desconto
juros_contas_rec.valor_jurosjuroserp.financial_receipt_titles.increase_amountJuros cobrados
juros_contas_rec.valor_multamultaerp.financial_receipt_titles.fine_amountMulta cobrada
descontos.valor_desdescontoerp.financial_receipt_titles.discount_valueDesconto aplicado
mov_bancario.data_ven ou faturas.data_bai ou mov_bancario.data_conci ou contas_rec.data_landata_recebimentoerp.financial_receipt_titles.receipt_dateCOALESCE nessa ordem de prioridade
contas_rec.data_bai ou mov_bancario.data_lan ou contas_rec.data_landata_pagamentoerp.financial_receipt_titles.client_paid_dateCOALESCE nessa ordem
contas_rec.histo_reccomplementoerp.financial_receipt_titles.complementHistórico do recebimento

14.26 Contas a Pagar

Fonte: legado.contas_pag + legado.bancos + legado.det_contas_pag Destino: connector.contas_pagarerp.financial_payable_titles Script: Operacional/06.05-Contas_Pagar.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
contas_pag.codcpagerp_codeerp.financial_payable_titles.erp_codeprefix('TIT_' + codcpag)
det_contas_pag.codemp ou bancos.codemperp_code_localerp.financial_payable_titles.company_place_idprefix('CP_' + codemp) — fallback 'MIG_999'
contas_pag.codforerp_code_fornecedorerp.financial_payable_titles.supplier_idprefix('FOR_' + codfor)
contas_pag.codbanerp_code_caixas_contaserp.financial_payable_titles.bank_account_idprefix('BA_' + codban)
contas_pag.codctacode_natureza_financeiraerp.financial_payable_titles.financer_nature_idprefix('PC_' + codcta) — fallback 'MIG_9999'
(fixo)code_operacao_financeiraerp.financial_payable_titles.financial_operation_id'2.01'
nro_nta_fiscal ILIKE '%PREVIS%'tipoerp.financial_payable_titles.type1 (Provisório) — senão 2 (Definitivo)
contas_pag.codcpagnumero_tituloerp.financial_payable_titles.titleDireto
contas_pag.valor_lanvalor_tituloerp.financial_payable_titles.title_amountDireto
data_fat ou data_lan ou data_vendata_emissaoerp.financial_payable_titles.issue_datePrioridade nesta ordem
contas_pag.data_landata_entradaerp.financial_payable_titles.entry_dateCast DATE
contas_pag.data_vendata_vencimentoerp.financial_payable_titles.expiration_dateCast DATE
contas_pag.codcompcompetenciaerp.financial_payable_titles.competenceConverte formato MMAA para DATE
histo_pag + nro_nta_fiscalcomplementoerp.financial_payable_titles.complementConcatenados
(fixo)origemerp.financial_payable_titles.origin1 (Financeiro)

14.27 Contas Pagas

Fonte: legado.contas_pag WHERE valor_pag > 0 + legado.razao + legado.mov_bancario Destino: connector.contas_pagaserp.financial_paid_titles Script: Operacional/06.06-Contas_Pagas.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
contas_pag.codcpag + razao.codrazerp_codeerp.financial_paid_titles.erp_codeprefix('TIT_' + codcpag + '_RZ_' + codraz)
contas_pag.codcpagerp_code_conta_pagarerp.financial_paid_titles.financial_payable_title_idprefix('TIT_' + codcpag)
mov_bancario.codbanerp_code_caixas_contaserp.financial_paid_titles.bank_account_idprefix('BA_' + codban)
contas_pag.valor_pagvalor_pagoerp.financial_paid_titles.amountDireto
mov_bancario.data_ven ou mov_bancario.data_landata_pagamentoerp.financial_paid_titles.payment_dateCOALESCE nessa ordem
contas_pag.data_baidata_baixa(campo auxiliar)Cast DATE
(fixo)forma_pagamentoerp.financial_paid_titles.financer_nature_id'007' (Boleto)

14.28 Lançamentos em Caixa/Banco

Destino: connector.lancamento_caixa_bancoerp.financial_postings Script: Operacional/07.03-LancamentosCaixaBanco.sql

Dois tipos de lançamento são migrados:

Parte 1 — Pagamentos de contas a pagar (via razão)

Fonte: legado.razao (tipo CPA) + legado.mov_bancario + legado.bancos

IntegratorConnectorColuna ERP VoalleRegra
mov_bancario.codmov + razao.codrazerp_codeerp.financial_postings.erp_codeprefix('PST_' + codmov + '_RZ_' + codraz)
bancos.codbanerp_code_caixas_contaserp.financial_postings.bank_account_idprefix('BA_' + codban)
mov_bancario.tipo = 'CPA'tipoerp.financial_postings.signalDébito (pagamento)
mov_bancario.valorvalorerp.financial_postings.amountDireto
mov_bancario.data_landata_lancamentoerp.financial_postings.dateCast DATE
mov_bancario.descricaodescricaoerp.financial_postings.complementDireto

Parte 2 — Recebimentos bancários (movimentação direta)

Fonte: legado.mov_bancario (tipo CR, sem lançamento CPA correspondente)

IntegratorConnectorColuna ERP VoalleRegra
mov_bancario.codmoverp_codeerp.financial_postings.erp_codeprefix('PST_' + codmov)
bancos.codbanerp_code_caixas_contaserp.financial_postings.bank_account_idprefix('BA_' + codban)
mov_bancario.tipo = 'CR'tipoerp.financial_postings.signalCrédito (recebimento)
mov_bancario.valorvalorerp.financial_postings.amountDireto
mov_bancario.data_landata_lancamentoerp.financial_postings.dateCast DATE
mov_bancario.descricaodescricaoerp.financial_postings.complementDireto

14.29 Patrimônios

Fonte: legado.movimentos_pat (atual='S') + legado.patrimonio + legado.produtos + legado.servicos_cli Destino: connector.patrimonioserp.patrimonies Script: Operacional/09.02_Patrimonios.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
patrimonio.codpaterp_codeerp.patrimonies.erp_codeprefix('PAT_' + codpat)
produtos.codproderp_code_produtoerp.patrimonies.service_product_idprefix('PROD_' + codprod)
produtos.descri_proddescricaoerp.patrimonies.titleDireto
patrimonio.nro_serienumero_serieerp.patrimonies.serial_numberDireto
patrimonio.macmacerp.patrimonies.macDireto
patrimonio.obsobservacoeserp.patrimonies.observationDireto
servicos_cli.codcli (se alocado)erp_code_pessoaerp.patrimonies.client_idprefix('CLI_' + codcli)
servicos_cli.codsercli (se alocado)erp_code_contratoerp.patrimonies.contract_idprefix('CNT_' + codcli + '_' + codsercli)
movimentos_pat.data_movdata_alocacaoerp.patrimonies.purchase_dateCast DATE
(sem cliente)(bloco 2)(estoque)Equipamentos disponíveis em estoque

14.30 Solicitações Vinculadas

Fonte: legado.ocorrencias + legado.ordem_servico Destino: connector.solicitacoes_vinculadaserp.assignment_links Script: Operacional/10.05-Solicitacoes_vinculos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
ocorrencias.codoco + ordem_servico.codordserp_codeerp.assignment_links.erp_codeprefix('AT_' + codoco + 'OS_' + codords)
ocorrencias.codclierp_code_pessoa(referência auxiliar)prefix('CLI_' + codcli)
ordem_servico.codordserp_code_solicitacaoerp.assignment_links.assignment_idReferencia a OS
ocorrencias.data_ocodata_abertura(campo auxiliar)Cast DATE
ocorrencias.statusstatus(campo auxiliar)Mapeado conforme regras do script

14.31 Relatos (6 origens)

Destino: connector.relatoserp.reports Script: Operacional/10.06-Relatos.sql

Origemerp_codeColuna ERP VoalleConteúdo migrado
comentarios (comentários da ocorrência)prefix('REL_C_' + ...)erp.reports.erp_codeTexto do comentário, autor, data
historico_ocorrencias (histórico de alterações)prefix('REL_H_' + ...)erp.reports.erp_codeDescrição da alteração, data
tarefas_oco (tarefas da ocorrência)prefix('REL_T_' + ...)erp.reports.erp_codeDescrição da tarefa, responsável
ordem_servico.obs_ret (obs. de retorno)prefix('REL_O_' + ...)erp.reports.erp_codeObservação de retorno da OS
ocorrencias.descricao (descrição original)prefix('REL_AT_O_' + ...)erp.reports.erp_codeDescrição inicial da ocorrência
encaminhamentos (como relatos)prefix('REL_ENC_' + ...)erp.reports.erp_codeTexto do encaminhamento

Campos comuns a todos os relatos: erp.reports.assignment_id (vínculo à ocorrência), erp.reports.person_id (autor), erp.reports.title, erp.reports.description, erp.reports.beginning_date, erp.reports.final_date.


14.32 Encaminhamentos

Fonte: legado.encaminhamentos + legado.ocorrencias + legado.usuarios + legado.cargos Destino: connector.encaminhamentoserp.assignment_person_routings Script: Operacional/10.07-Encaminhamentos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
encaminhamentos.codencerp_codeerp.assignment_person_routings.erp_codeprefix('ENC_' + codenc)
ocorrencias.codocoerp_code_solicitacaoerp.assignment_person_routings.assignment_idReferencia a ocorrência
usuarios.codusuerp_code_responsavelerp.assignment_person_routings.destination_person_idprefix('USU_' + codusu)
cargos.nome_cargocargo_responsavel(campo auxiliar)Descrição do cargo
encaminhamentos.data_encdata_encaminhamento(campo auxiliar)Cast DATE
encaminhamentos.obsdescricaoerp.assignment_person_routings.report_idTexto do encaminhamento (via relato vinculado)

14.33 Caixas e Contas Bancárias

Fonte: legado.bancos + legado.forma_cobrancas + legado.conf_boletos Destino: connector.caixas_bancoserp.bank_accounts Script: Cadastros/02.01-CaixasBancos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
bancos.codbanerp_codeerp.bank_accounts.erp_codeprefix('BA_' + codban)
bancos.codbancodigoerp.bank_accounts.codeCódigo bruto do banco
(calculado)tipo_contaerp.bank_accounts.type1=Caixa Interno se codban='01CAIXA' ou agência/conta contém 'CAIXA'/'INTERNO'; 2=Banco nos demais casos
bancos.nome_bandescricao_contaerp.bank_accounts.descriptionTRIM
bancos.codemperp_code_localerp.bank_accounts.company_place_idprefix('CP_' + codemp)
bancos.nro_bancodigo_bancoerp.bank_accounts.bank_idNULL se vazio
conf_boletos.nro_age / bancos.nro_agenciaagenciaerp.bank_accounts.agencyParte antes do -; NULL para caixas internos
conf_boletos.nro_age / bancos.nro_agenciadigito_verificador_agenciaerp.bank_accounts.agency_check_digitParte após o -
''operacaoerp.bank_accounts.operationSempre vazio
conf_boletos.nro_cta / bancos.nro_contanumero_contaerp.bank_accounts.accountParte antes do -; NULL para caixas internos
conf_boletos.nro_cta / bancos.nro_contadigito_verificador_contaerp.bank_accounts.account_check_digitParte após o -
bancos.activoativoerp.bank_accounts.active'S' → TRUE; demais → FALSE

Também é inserida uma conta genérica BA_MIGRACAO (Caixa Interno) para lançamentos sem banco identificado no legado.


14.34 Serviços (Planos de Internet, TV e Extras)

Fonte: legado.servicos, legado.servicos_simples, legado.pacotes, legado.servicos_extras, legado.servicos_adicionais Destino: connector.servicoserp.service_products Script: Cadastros/04.02-Serviços.sql

O script popula connector.servicos em 5 blocos distintos:

BlocoOrigemPrefixo erp_codeTipo
1servicos (compostos pai)SRV_codserComposto
2servicos_simples (simples com composição)SRV_codsimpComposto
3servicos_simples (sem composição)SRV_codsimpSimples
4pacotes (TV)SRV_TV_codpacSimples / TV
5servicos_extras + servicos_adicionaisSRV_EXTRA_codserex / SRV_ADD_codsaiSimples / Extra

Campos migrados:

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
servicos.codser / outroserp_codeerp.service_products.erp_codePrefixo conforme bloco acima
servicos.descrdescricaoerp.service_products.titleTRIM
servicos.velocvelocidade_downerp.service_products.download_max_limitVelocidade de download
servicos.veloc_upvelocidade_uperp.service_products.upload_max_limitVelocidade de upload
servicos.vel_burstbursterp.service_products.use_burstHabilita burst se preenchido
servicos.cod_opeoperacao_financeiraerp.service_products.financial_operation_idVia DE/PARA de operação financeira
servicos.codnatnatureza_financeiraerp.service_products.financer_nature_idVia DE/PARA de natureza financeira
(calculado)tipoerp.service_products.type2 = Serviço (todos os blocos)
(calculado)servico_composto(campo auxiliar no connector)TRUE se composto
servicos.activoativoerp.service_products.active'S' → TRUE

14.35 Naturezas Financeiras

Fonte: legado.plano_cta Destino: connector.naturezas_financeiraserp.financers_natures Script: Cadastros/04.03-NaturezasFinanceiras.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
plano_cta.codctaerp_codeerp.financers_natures.erp_codeprefix('PC_' + codcta)
plano_cta.codctacodeerp.financers_natures.codeFormatado (pode incluir pontuação)
plano_cta.descri_ctadescricaoerp.financers_natures.titleTRIM
plano_cta.tipo_ctasinalerp.financers_natures.signal'C' (crédito) → 1; 'D' (débito) → 2
plano_cta.tipo_nattipo_contaerp.financers_natures.type'S' (sintética) → 2; 'A' (analítica) → 1
plano_cta.activoativoerp.financers_natures.active'S' → TRUE

14.36 Regras de Faturamento

Fonte: connector.servicos × connector.locais (cross-join) Destino: connector.servicos_regras_faturamentoerp.service_billing_configurations Script: Cadastros/04.04-RegrasFaturamento.sql

Este script não lê o legado diretamente — gera uma regra de faturamento para cada combinação de serviço × local já carregado no connector.

Coluna Connector (entrada)Coluna Connector (destino)Coluna ERP VoalleTransformação / Regra
servicos.erp_codeerp_code_servicoerp.service_billing_configurations.service_product_idReferência ao serviço
locais.erp_codeerp_code_local_vendaerp.service_billing_configurations.company_place_idLocal de venda
locais.erp_codeerp_code_local_faturaerp.service_billing_configurations.billing_company_place_idLocal de faturamento
servicos.natureza_financeiracode_natureza_financeiraerp.service_billing_configurations.financer_nature_idNatureza financeira do serviço
servicos.operacao_financeiracode_operacao_financeiraerp.service_billing_configurations.financial_operation_idOperação financeira do serviço

14.37 Composições de Serviços

Fonte: connector.servicos (pai e filho) + legado.servicos_tv + legado.servicos_tv_ex Destino: connector.servicos_compostoserp.service_compositions Script: Cadastros/04.05-Composicoes.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
(calculado)erp_codeerp.service_compositions.erp_codeprefix('CMP_' + ...)
servicos.codser (pai)erp_code_composicaoerp.service_compositions.parent_idReferência ao serviço composto pai
servicos.codser (filho)erp_code_servicoerp.service_compositions.service_product_idReferência ao serviço filho
servicos_compostos.precoprecoerp.service_compositions.selling_priceValor do componente no composto
(calculado)porcentagemerp.service_compositions.percentagePercentual em relação ao total do pai

Itens de TV (legado.servicos_tv, legado.servicos_tv_ex) também são incluídos como filhos do pacote de TV correspondente.


14.38 Centro de Resultados

Fonte: legado.dados_pop Destino: connector.centro_de_resultadoserp.financial_cost_centers Script: Cadastros/06.01-CentroDeResultados.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
dados_pop.codpoperp_codeerp.financial_cost_centers.codeprefix('CRT_' + codpop)
dados_pop.nome_popnomeerp.financial_cost_centers.titleTRIM

14.39 Grupos de Produtos

Fonte: legado.categorias + legado.sub_categorias Destino: connector.grupos_produtoserp.service_product_groups Script: Cadastros/09.01-GrupoProdutos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
sub_categorias.codscaterp_codeerp.service_product_groups.erp_codeprefix('SPG_' + codscat + '_P')
sub_categorias.descri_scatcodigoerp.service_product_groups.codeCódigo da subcategoria
sub_categorias.descri_scatnomeerp.service_product_groups.titleNome da subcategoria
categorias.descri_cat + sub_categorias.descri_scatdescricaoerp.service_product_groups.descriptioncat > subcat — hierarquia descritiva
(fixo)ativoerp.service_product_groups.activeTRUE

Também é inserido um grupo genérico SPG_MIG_999_P para produtos sem categoria mapeável no legado.


14.40 Produtos

Fonte: legado.produtos Destino: connector.produtoserp.service_products (type=1 — Produto) Script: Cadastros/09.03-Produtos.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
produtos.codproderp_codeerp.service_products.erp_codeprefix('PRD_' + codprod)
sub_categorias.codscaterp_code_grupoerp.service_products.service_product_group_idReferência ao grupo de produto
produtos.nome_prodnome_produtoerp.service_products.titleTRIM
produtos.ncmcodigo_ncmerp.service_products.ncmCódigo NCM fiscal
produtos.preco_vendapreco_vendaerp.service_products.selling_pricePreço de venda
produtos.estoquecontrola_estoqueerp.service_products.inventory_updateControla estoque?
produtos.imobilizadogera_objetoserp.service_products.generate_patrimony'S' → TRUE (gera patrimônio)
produtos.activoativoerp.service_products.active'S' → TRUE

14.41 Equipes

Fonte: legado.cargos Destino: connector.equipeerp.teams Script: Cadastros/10.02-Equipes.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
cargos.codcarerp_codeerp.teams.erp_codeprefix('TM_' + codcar)
cargos.nome_cartituloerp.teams.titleTRIM

Também é inserida uma equipe genérica TM_MIG_999 para solicitações sem equipe mapeável.


14.42 Tipos de Solicitações

Fonte: legado.oco_padrao + legado.tipo_orden_s Destino: connector.tipos_solicitacaoerp.incident_types Script: Cadastros/10.03-TiposSolicitacoes.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
oco_padrao.codocoperp_codeerp.incident_types.erp_codeprefix('IT_' + codocop + '_O')
tipo_orden_s.codtordserp_codeerp.incident_types.erp_codeprefix('IT_' + codtords + '_OS')
oco_padrao.titulo / tipo_orden_s.titulotituloerp.incident_types.titleTRIM
oco_padrao.codigo / tipo_orden_s.codigocodigoerp.incident_types.codeCódigo interno
(fixo)tipo_solicitacaoerp.incident_types.solicitation_type3 = Ambos (Externo e Interno)
oco_padrao.activo / tipo_orden_s.activoativoerp.incident_types.active'S' → TRUE

oco_padrao gera tipos para ocorrências externas; tipo_orden_s gera tipos para ordens de serviço internas.


14.43 Matrizes de Atendimento

Fonte: legado.oco_padrao + legado.tipo_orden_s Destino: connector.matrizes_atendimentoerp.solicitation_service_categories (categorias) + erp.solicitation_category_matrices Script: Cadastros/10.04-Matrizes.sql

O script constrói a árvore de categorização em até 5 níveis e define o tipo de matriz (Externo=1 ou Interno=2).

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
oco_padrao.codocoperp_codeerp.solicitation_category_matrices.erp_codeprefix('MAT_E_' + ...) — Externo
tipo_orden_s.codtordserp_codeerp.solicitation_category_matrices.erp_codeprefix('MAT_I_' + ...) — Interno
oco_padrao.categoria_Ncategoria_1 .. categoria_5erp.solicitation_service_categories.titleCada valor único de categoria vira um registro em solicitation_service_categories
(calculado)tipo_de_matrizerp.solicitation_category_matrices.matrix_type1=Externo / 2=Interno
oco_padrao.activoativoerp.solicitation_category_matrices.active'S' → TRUE

14.44 Solicitações (Ocorrências e Ordens de Serviço)

Fonte: legado.ocorrencias (bloco 1) + legado.ordem_servico (bloco 2) Destino: connector.solicitacoeserp.assignments Script: Operacional/10.04-Solicitacoes.sql (popula o connector) + Operacional/10.05-Solicitacoes_vinculos.sql (vincula clientes e contratos)

Bloco 1 — Ocorrências (legado.ocorrencias)

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
ocorrencias.codocoerp_codeerp.assignments.erp_codeprefix('AT_' + codoco)
ocorrencias.titulotituloerp.assignments.titleTRIM
ocorrencias.descricaodescricaoerp.assignments.descriptionTexto da ocorrência
ocorrencias.statusstatuserp.assignments.statusMapeamento de status Integrator → ERP
ocorrencias.data_aberturadata_aberturaerp.assignments.beginning_dateCast DATE
ocorrencias.data_fechamentodata_fechamentoerp.assignments.conclusion_dateCast DATE
usuarios.codusuerp_code_responsavelerp.assignments.responsible_idprefix('USU_' + codusu)
ocorrencias.codclierp_code_pessoaerp.assignments.requestor_idprefix('CLI_' + codcli)

Bloco 2 — Ordens de Serviço (legado.ordem_servico)

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
ordem_servico.codordserp_codeerp.assignments.erp_codeprefix('OS_' + codords)
ordem_servico.titulotituloerp.assignments.titleTRIM
ordem_servico.descricaodescricaoerp.assignments.descriptionTexto da OS
ordem_servico.statusstatuserp.assignments.statusMapeamento de status Integrator → ERP
ordem_servico.data_aberturadata_aberturaerp.assignments.beginning_dateCast DATE
ordem_servico.data_fechamentodata_fechamentoerp.assignments.conclusion_dateCast DATE

14.45 Dados PIX das Faturas

Fonte: legado.faturas_pix (somente status_pix = 'ATIVA') Destino: connector.faturas_receber_pix → UPDATE em erp.financial_receivable_titles + INSERT em erp.financial_receivable_title_pix_integrations Script: Operacional/06.01.02-PixFaturas.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
faturas_pix.codfaterp_code_faturaerp.financial_receivable_titles.erp_codeReferência à fatura (FAT- + erp_code)
faturas_pix.pix_tx_idpix_tx_iderp.financial_receivable_title_pix_integrations.transaction_idID da transação PIX
faturas_pix.pix_qr_codepix_qr_codeerp.financial_receivable_titles.pix_qr_code + erp.financial_receivable_title_pix_integrations.qr_codeQR Code do PIX
faturas_pix.data_expiracaodata_expiracaoerp.financial_receivable_title_pix_integrations.pix_expirationData de expiração do PIX
faturas_pix.juros_pixjuros_pixerp.financial_receivable_title_pix_integrations.interest_amountJuros aplicados
faturas_pix.desconto_pixdesconto_pixerp.financial_receivable_title_pix_integrations.discount_amountDesconto aplicado

Apenas registros com status_pix = 'ATIVA' são migrados. A consolidação faz UPDATE no erp.financial_receivable_titles e INSERT em erp.financial_receivable_title_pix_integrations com status=2 (Sucesso) e tipo=2 (Cobrança Vencimento).


14.46 Rateio de Contas a Pagar

Fonte: legado.det_contas_pag Destino: connector.contas_pagar_rateioerp.financial_divide_cost_center_previsions Script: Operacional/06.05.01-Contas_Pagar_Rateio.sql

Coluna IntegratorColuna ConnectorColuna ERP VoalleTransformação / Regra
det_contas_pag.coddcperp_code(campo de rastreamento)prefix('CPR' + coddcp)
det_contas_pag.codcpagerp_code_conta_pagarerp.financial_divide_cost_center_previsions.financial_payable_title_idReferência à conta a pagar
det_contas_pag.codemperp_code_local(campo auxiliar)Referência ao local
det_contas_pag.codbanerp_code_caixas_contas(campo auxiliar)Referência ao caixa/banco
det_contas_pag.codnatcode_natureza_financeiraerp.financial_divide_cost_center_previsions.financer_nature_idNatureza financeira do rateio
det_contas_pag.valorvalorerp.financial_divide_cost_center_previsions.amountValor do rateio
det_contas_pag.porcentagemporcentagemerp.financial_divide_cost_center_previsions.percentagePercentual do rateio
det_contas_pag.pagopago(campo auxiliar)Indica se já estava pago no legado

14.47 Ajuste de Valores dos Contratos

Destino: UPDATE em connector.itens_contrato.valor_unitario Script: Operacional/05.03-ValoresDosContratos.sql

Este script não cria uma nova tabela — chama a procedure connector.valor_contratos_integrator() e depois aplica regras de negócio diretamente sobre connector.itens_contrato, ajustando valor_unitario conforme descontos e tabelas de planos do legado.

AçãoColuna AfetadaRegra
CALL connector.valor_contratos_integrator()connector.itens_contrato.valor_unitarioCalcula o valor base dos itens a partir dos planos do legado
UPDATE descontoconnector.itens_contrato.valor_unitarioAplica descontos de fidelidade e promoções cadastrados no legado

Scripts desativados (sem migração ativa)

Os scripts abaixo estão inteiramente comentados e não executam nenhuma migração:

ScriptMotivo / Observação
Cadastros/04.06-CiclosDeFaturamento.sqlCiclos de faturamento não são migrados; o ERP recalcula a partir dos contratos
Cadastros/08.08-Telefones.sqlRamais telefônicos do legado não têm equivalente mapeado no ERP atual
Cadastros/09.02-UnidadesMedida.sqlUnidades de medida são fixas no ERP; não requer migração do legado
Cadastros/03.05-UsuariosPortal.sqlUsuários do portal do cliente não são migrados automaticamente
Operacional/11.01.02-Agrupar_Planos.sqlVariante alternativa do agrupamento; substituída pelo script 11.01-Agrupar_Planos.sql

15. Guia de Manutenção e Atualização deste Documento

Gatilhos para revisão

SituaçãoO que revisar
Novo campo migrado em clientes ou fornecedoresSeção 5 e tabela 14.10 / 14.11
Novo tipo de serviço ou origem adicionadaMapa Geral + seção 6 + tabela 14.18
Mudança na lógica de agrupamentoSeção 6.4
Nova tabela de rede sendo lidaSeções 4 e 7 + tabelas 14.6 a 14.9 e 14.20
Novo status de fatura tratadoSeção 8.3 (tabela de status)
Novo script de Ajuste InicialSeção 13, lista de scripts
Script renomeado ou removidoSeção 13 + referências nas tabelas
Nova entidade migradaMapa Geral + nova seção + nova tabela em 14.XX
Adição de bloco ao 99_Anexos.sqlSeção 11 (O que NÃO é migrado)

Mapa seção → script(s) para conferir

SeçãoArquivo(s) para comparar
Mapa GeralTodos os scripts em Cadastros/ e Operacional/
2. Empresas → LocaisCadastros/01.01-Locais.sql
3.1 Grupos de PessoasCadastros/03.01-GrupoPessoas.sql
3.2 Grupos de ServiçosCadastros/04.01-GruposServicos.sql
3.3 Tipos de CobrançaCadastros/02.02-TiposCobranca.sql
4.1-4.2 IPs e GruposCadastros/08.02-GrupoIPs.sql, Cadastros/08.03-IPs.sql
4.3 ConcentradoresCadastros/08.04-Concentradores.sql
4.4 Pontos de AcessoCadastros/08.05-PontodeAcesso.sql
4.5 CondomíniosCadastros/08.07-Condominios.sql
5. Pessoas (todos os blocos)Operacional/03.02-Pessoas.sql
5.6 ComunicaçõesOperacional/03.03-Comunicacoes.sql
5.7 EndereçosOperacional/03.04-Enderecos.sql
6.2 ContratosOperacional/05.01-Contratos.sql
6.3 Itens de ContratoOperacional/05.02-ItensContrato.sql
6.3 ValoresOperacional/05.03-ValoresDosContratos.sql
6.4 AgrupamentoOperacional/11.01-Agrupar_Planos.sql + README-codsercli-contratos.md
6.5 EventosOperacional/05.04-EventosContratos.sql
7. ConexõesOperacional/08.07-Conexoes.sql
8.2 FaturasOperacional/06.01-Faturas.sql
8.3 Faturas RecebidasOperacional/06.02-FaturasRecebidas.sql
8.4 Contas a ReceberOperacional/06.03-ContasReceber.sql
8.5 Contas RecebidasOperacional/06.04-ContasRecebidas.sql
8.6 Contas a PagarOperacional/06.05-Contas_Pagar.sql
8.7 Contas PagasOperacional/06.06-Contas_Pagas.sql
8.8 LançamentosOperacional/07.03-LancamentosCaixaBanco.sql
9. PatrimôniosOperacional/09.02_Patrimonios.sql
10.1 SolicitaçõesOperacional/10.05-Solicitacoes_vinculos.sql
10.2 RelatosOperacional/10.06-Relatos.sql
10.3 EncaminhamentosOperacional/10.07-Encaminhamentos.sql
11. Não migradosOperacional/99_Anexos.sql

Checklist de revisão rápida

Como pedir uma revisão ao assistente de IA

Revise o documento README-integrator-para-erp.md comparando com os scripts atuais
em Legados_Postgres/Integrator/Atual/. Verifique se alguma seção ficou desatualizada
e aponte o que mudou, seção por seção.

O assistente lerá os scripts atuais e comparará com o conteúdo deste arquivo, apontando as divergências encontradas.