
_Créditos da imagem: NaldoDJ e ChatGPT
Na migração de dados entre ERPs, especialmente entre sistemas distintos como o **DATASUL** e o **TOTVS Protheus**, nem sempre os modelos de dados são compatíveis diretamente. Para garantir uma integração inteligente e flexível, utilizamos três recursos fundamentais no processo de automação:
---
### 📌 1. Campos Auxiliares Temporários
O Protheus possui estruturas bem definidas. Quando os dados do sistema de origem não se encaixam diretamente, usamos **campos temporários**, criados apenas na estrutura intermediária de importação.
**Exemplo – Tabela SRQ (Pensão Alimentícia):**
No DATASUL, os eventos de pensão estão distribuídos em múltiplos campos:
```ini
[SRQ_addTmpField]
TmpFields=RQ_PDNOR,RQ_PDFER,RQ_PD13O,RQ_PDDNOR,RQ_PDDFER,RQ_PDD13O
```
Esses dados são processados e consolidados no campo `RQ_VERBAS` do Protheus.
**Outros exemplos:**
```ini
[SPJ_addTmpField]
TmpFields=PJ_XJNTRAB
[SPJORNTRAB_addTmpField]
TmpFields=PJ_XJNTRAB,PJENTRA1,PJSAIDA2,PJHRSINT1,PJXDIASEG,PJSAIDA1,PJENTRA2,PJHORMAIS,PJHORMENO
```
Esses campos não existem na estrutura final, mas são cruciais durante a montagem dos registros para a carga no Protheus.
---
### 📌 2. Tabelas Auxiliares
Além dos campos temporários, também utilizamos **tabelas auxiliares de conversão**, que mapeiam códigos legados para seus equivalentes no Protheus.
As tabelas são definidas dentro do `.ini` ou em arquivos separados com prefixo `Tabela*.ini`.
🔗 Acesse os exemplos reais:
[GitHub – Tabelas Auxiliares](https://github.com/naldodj/naldodj-DataSul2TotvsProtheus/tree/main/datasul2Protheus/ini)
**Como funcionam?**
A função de conversão de valores entre códigos do sistema de origem e destino é feita pela função: `findInTable`
```harbour
dna.tech.DataSul2Protheus.findInTable(oTFIni, "TabelaAfastaMentoVerbasR8_PD", "052", .T.)
```
A função percorre:
1. Cache (Procura o valor em cache (melhora performance))
2. Arquivo auxiliar (Carrega o .ini auxiliar, se necessário)
3. Valor default `__DFV__` se não encontrar correspondência (Aplica valor default (__DFV__) caso o código não esteja mapeado)
4. Retorna o valor convertido, pronto para o Protheus
Essa abordagem reduz erros e assegura consistência com os padrões do sistema de destino promovendo baixa manutenção e alta reusabilidade.
---
### 🧠 3. Transformações Avançadas de Dados
Um dos grandes diferenciais dessa automação está nas **funções de transformação aplicadas diretamente no `.ini`**, sem necessidade de alterar o código-fonte.
Um exemplo clássico é o ajuste de nomes e textos para que respeitem o limite de tamanho de campos no Protheus:
```ini
[RA_APELIDO]
Transform={|RA_APELIDO|dna.tech.cTools():TruncateName(allTrim(RA_APELIDO),getSX3Cache("RA_APELIDO","X3_TAMANHO"))}
[RA_NOME]
Transform={|RA_NOME|dna.tech.cTools():TruncateName(allTrim(RA_NOME),getSX3Cache("RA_NOME","X3_TAMANHO"))}
[RA_NOMECMP]
Transform={|RA_NOMECMP|dna.tech.cTools():TruncateName(allTrim(RA_NOMECMP),getSX3Cache("RA_NOMECMP","X3_TAMANHO"))}
[RA_NSOCIAL]
Transform={|RA_NSOCIAL|dna.tech.cTools():TruncateName(allTrim(RA_NSOCIAL),getSX3Cache("RA_NSOCIAL","X3_TAMANHO"))}
```
Essas transformações garantem:
* Corte seguro de strings sem quebra de palavras
* Evita truncamentos automáticos e perda de dados
* Garante conformidade com o dicionário de dados do Protheus
---
### ✅ Conclusão
* **Campos auxiliares** tratam diferenças estruturais
* **Tabelas auxiliares** garantem consistência sem hardcode
* **Transformações avançadas** adaptam dados com inteligência
Essas técnicas **potencializam a flexibilidade da automação e reduzem drasticamente a necessidade de retrabalho**.
---
🔜 No próximo post, vamos explorar o arquivo `fulltablesdefinition.txt`, que contém os **metadados das tabelas DATASUL** e como isso alimenta dinamicamente o mapeamento para o Protheus.
---
\#TOTVS #DNATech #Protheus #Automação #MigraçãoDeDados #CamposAuxiliares #TransformaçãoDeDados #INIfile #ERP #DataMigration #LowCodeIntegration
---

Torne-se um Sponsor:
🥊(дави)={0.5x[(Налдо)+(Алине)]}🥊
Comentários
Postar um comentário