
_Créditos da imagem: ChatGPT
🔍 **Integração com IA e Totvs Protheus — Cuidado com valores decimais!**
Durante alguns testes de integração de pedidos de venda via *Inteligência Artificial* no Protheus, me deparei com um problema curioso: mesmo com os totais corretos, o sistema invalidava os pedidos quando o preço dos produtos era fracionário (valores com decimais).
Tentei ajustar a quantidade de casas decimais nos campos, revisei configurações, mas nada resolvia — até encontrar o ponto crítico: uma **configuração específica no `appserver.ini`** que muda completamente a forma como o Protheus lida com cálculos de ponto flutuante.
💡 A solução foi incluir a chave:
```
[General]
FloatingPointPrecise=1
```
📎 Documentação oficial: [https://tdn.totvs.com/display/tec/FloatingPointPrecise](https://tdn.totvs.com/display/tec/FloatingPointPrecise)
Depois disso, os testes passaram a funcionar perfeitamente, sem inconsistências no total.
💬 Acredito que a validação interna do Protheus — especialmente no programa MATA410 e outros, que verifica diferenças de arredondamento no total dos pedidos — poderia ser reavaliada. Em cenários de integração com modelos de linguagem (LLMs), os dados são gerados dinamicamente e podem sofrer pequenas variações nos cálculos. Mesmo quando os valores estão matematicamente corretos, o sistema pode rejeitar o pedido por conta de regras muito rígidas de arredondamento. Esse comportamento reduz a flexibilidade e pode impactar negativamente a automação de processos.
🧪 Exemplo de prompt e cenário de teste (para desenvolvedores que usam LLMs integradas ao Protheus):
```
#PRAGMA @__BEGINPROMPT@
pode inserir o pedido conforme abaixo
Tipo: N, cliente: 1, loja: 1, Tipo do cliente: F, condição de pagamento: 15, Natureza: 1
produto: 000000000000001, quantidade: 3 unidades, Preço Unitário: 2.75, TES: 501, local: 01
produto: 000000000000002, quantidade: 15 unidades, Preço Unitário: 5.50, TES: 501, local: 01
produto: 000000000000003, quantidade: 25 unidades, Preço Unitário: 8.25, TES: 501, local: 01
produto: 4, qtd: 3 unidades, Preço Unitário: 11.00, TES: PRODUTO SEM IMPOSTO, local: 1
produto: 5, 5 unidades, Preço Unitário: 13.75, TES: PRODUTO SEM IMPOSTO, local: 1
produto: 6, quant: 2 unidades, Preço por unidade: 16.50, TES: PRODUTO SEM IMPOSTO, local: 1
...
```
📉 Antes da correção, os erros apresentados eram como:
```
ID:0000000135
AJUDA:TOTAL
Valor total inválido.
Tabela SC5 05/06/2025 07:59:45
Tipo Pedido - C5_TIPO := N
Cliente - C5_CLIENTE := 000001
Loja - C5_LOJACLI := 01
Tipo Cliente - C5_TIPOCLI := F
Cond. Pagto - C5_CONDPAG := 15
Natureza - C5_NATUREZ := 0000000001
Comentario - C5_COMENT := {"ID":"0000000135"}
--------------------------------------------------------------------------------
Tabela SC6 05/06/2025 07:59:45
Erro no Item 2
--------------------------------------------------------------------------------
Item - C6_ITEM := 02
Produto - C6_PRODUTO := 000000000000002
Unidade - C6_UM := UN
Quantidade - C6_QTDVEN := 15
Vlr.Total - C6_VALOR := 75
Tipo Saida - C6_TES := 501
Armazem - C6_LOCAL := 01
Prc Lista - C6_PRUNIT := 5
--------------------------------------------------------------------------------
ID:0000000133
AJUDA:TOTAL
Valor total inválido.
Tabela SC5 05/06/2025 07:48:22
Tipo Pedido - C5_TIPO := N
Cliente - C5_CLIENTE := 000001
Loja - C5_LOJACLI := 01
Tipo Cliente - C5_TIPOCLI := F
Cond. Pagto - C5_CONDPAG := 15
Natureza - C5_NATUREZ := 0000000001
Comentario - C5_COMENT := {"ID":"0000000133"}
--------------------------------------------------------------------------------
Tabela SC6 05/06/2025 07:48:22
Erro no Item 1
--------------------------------------------------------------------------------
Item - C6_ITEM := 01
Produto - C6_PRODUTO := 000000000000001
Unidade - C6_UM := UN
Quantidade - C6_QTDVEN := 3
Vlr.Total - C6_VALOR := 9.3
Tipo Saida - C6_TES := 501
Armazem - C6_LOCAL := 01
Prc Lista - C6_PRUNIT := 3.1
```
💡 Após Configurar a chave :
```json
{ "data": {
"C5_TIPO": "N",
"C5_CLIENTE": "0001",
"C5_LOJACLI": "1",
"C5_TIPOCLI": "F",
"C5_CONDPAG": "15 ",
"C5_NATUREZ": "0000000001",
"SC6": [{
"C6_ITEM": "01",
"C6_PRODUTO": "000000000000001",
"C6_UM": "UN",
"C6_QTDVEN": 3,
"C6_PRUNIT": 2.75,
"C6_VALOR": 7.275,
"C6_TES": "501",
"C6_LOCAL": "01"
}, {
"C6_ITEM": "02",
"C6_PRODUTO": "000000000000002",
"C6_UM": "UN",
"C6_QTDVEN": 15,
"C6_PRUNIT": 5.5,
"C6_VALOR": 82.5,
"C6_TES": "501",
"C6_LOCAL": "01"
}, {
"C6_ITEM": "03",
"C6_PRODUTO": "000000000000003",
"C6_UM": "UN",
"C6_QTDVEN": 25,
"C6_PRUNIT": 8.25,
"C6_VALOR": 206.25,
"C6_TES": "501",
"C6_LOCAL": "01"
}, {
"C6_ITEM": "04",
"C6_PRODUTO": "000000000000004",
"C6_UM": "UN",
"C6_QTDVEN": 3,
"C6_PRUNIT": 11,
"C6_VALOR": 33,
"C6_TES": "501",
"C6_LOCAL": "1"
}, {
"C6_ITEM": "05",
"C6_PRODUTO": "000000000000005",
"C6_UM": "UN",
"C6_QTDVEN": 5,
"C6_PRUNIT": 13.75,
"C6_VALOR": 68.75,
"C6_TES": "501",
"C6_LOCAL": "1"
}, {
"C6_ITEM": "06",
"C6_PRODUTO": "000000000000006",
"C6_UM": "UN",
"C6_QTDVEN": 2,
"C6_PRUNIT": 16.5,
"C6_VALOR": 33,
"C6_TES": "501",
"C6_LOCAL": "1"
}
]
}
}
```
```json
{
"ID": "0000000201",
"C5_NUM": "000110",
"RecNo": 118,
"status": "success",
"message": "Pedido inserido com sucesso conforme especificado."
}
```
Se você também lida com integração de IA ao Protheus, vale revisar esse detalhe. Pequenas configurações fazem grande diferença no sucesso dos testes.
\#Protheus #TOTVS #DNATech #ERP #Integração #IA #LLM #TFW #DevTOTVS #SalesOrder #FloatingPointPrecise #TLMStudio
---

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