DNATech : : 🔧 **AUTOMAÇÃO DE PROCESSOS NO TOTVS PROTHEUS – Parte 3: Campos Auxiliares, Tabelas de Apoio e Transformações Avançadas**

_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

Postagens mais visitadas