Dois assuntos que parecem distantes têm a mesma raiz: os dois dependem de campo criado no dicionário do Protheus, e os dois falham de forma confusa quando o campo é criado do jeito errado. Este artigo cobre os campos personalizados, que levam informação própria do cliente entre os sistemas, e a solicitação de compra, que só funciona depois que um campo de identificação existe no ERP.
Índice
A regra de ouro
Campo de dicionário se cria pelo Configurador ou UPDDISTR, em janela de manutenção. Nunca por comando SQL. A integração jamais cria campo.
Essa é a única regra que, se seguida, evita a maior parte dos problemas descritos aqui. Ela vale para campo personalizado, para o campo da solicitação de compra e para qualquer outro campo que a operação precise.
Campos personalizados
Um campo criado pelo cliente no Protheus pode circular pela integração sem nenhuma customização adicional. A condição é simples: o campo precisa existir dos dois lados.
No Protheus: o campo existe no dicionário, criado pelo Configurador.
No Vendelo: o campo está cadastrado em Campos de usuário, no modelo de dados correspondente.
Faltando um dos lados, o campo simplesmente não circula. Não gera erro, não aparece na fila: ele é ignorado. Isso é intencional, mas é a causa número um de “cadastrei o campo e não veio nada”.
No Protheus, o nome a cadastrar no Vendelo é o nome completo do campo, incluindo o prefixo da tabela:
C5_XPRIOR,A1_XSEGMENTO, e assim por diante. Quem vem de outro ERP pode estranhar: lá o cadastro pode usar só o sufixo. Aqui é o nome inteiro, como aparece no dicionário (X3_CAMPO).
Onde os campos personalizados valem
| Modelo de dados no Vendelo | Corresponde a | Tabela no Protheus |
|---|---|---|
| Parceiro de negócio | Campos do cadastro de clientes e de fornecedores | SA1 (prefixo A1_) e SA2 (prefixo A2_) |
| Documento de negócio, por tipo | Campos do cabeçalho do documento, como o pedido de venda | SC5 (prefixo C5_) |
| Item do documento | Campos da linha do documento | SC6 (prefixo C6_) no pedido; SC1 (prefixo C1_) na solicitação de compra |
O mesmo cadastro serve para os ERPs suportados pelo Vendelo, o que evita duplicar configuração em empresas que operam com mais de um.
Os campos circulam nos dois sentidos: entram na sincronização vinda do ERP e são enviados quando o Vendelo grava um documento. Na gravação, as validações do dicionário se aplicam normalmente, inclusive obrigatoriedade e regra de validação do campo.
Tipos e conversão
| Tipo no Protheus | Comportamento |
|---|---|
| Caractere | Texto, com espaços à direita removidos |
| Numérico | Número, respeitando as casas decimais do dicionário |
| Data | Convertido para o formato de data do Vendelo |
| Lógico | Verdadeiro ou falso |
O Protheus não tem um tipo de data com hora. Se a informação precisar de horário, converse com a Vendelo antes de criar o campo: a solução costuma envolver dois campos ou um campo de texto.
A armadilha do campo criado por SQL
Este é o problema mais caro deste artigo, porque o sintoma aparece longe da causa.
Campo de tipo data ou lógico criado por comando SQL faz o dicionário e a tabela discordarem sobre o tipo. A partir daí, toda gravação naquela tabela passa a falhar, mesmo quando o campo novo nem é enviado.
No pedido de venda, o efeito observado é o pior possível para diagnosticar: o pedido passa a ser gravado sem itens. Ninguém associa isso a um campo criado semanas antes, em outra tabela, por outra pessoa.
| Tipo | Criado por SQL |
|---|---|
| Caractere | Sobrevive, mas continua sendo má prática |
| Numérico | Sobrevive, mas continua sendo má prática |
| Data | Quebra a gravação da tabela |
| Lógico | Quebra a gravação da tabela |
Se um cliente relatar pedidos gravando sem itens logo depois de uma mudança no dicionário, comece a investigação por aqui.
Solicitação de compra
A solicitação de compra é o único documento que exige um campo criado especificamente para a integração. O motivo é identidade: a solicitação precisa carregar quem, no Vendelo, a originou.
O campo é o C1_XVDOUID, criado no dicionário, na tabela de solicitações de compra (SC1), como caractere de 32 posições ou mais. A especificação exata acompanha o kit de instalação. Ele não é obrigatório no dicionário, justamente para permitir criá-lo numa tabela que já tem registros.
Execute a atualização em janela de manutenção, em modo exclusivo, e confirme que a coluna física foi criada. Coluna que existe só no dicionário, ou só na tabela, causa problema em toda gravação.
A verificação
Depois de reiniciar o serviço, a preparação da integração informa se a identidade do solicitante está pronta. Essa verificação apenas diagnostica: ela nunca cria o campo.
Enquanto o resultado for negativo, o Vendelo bloqueia a inclusão e a alteração de solicitações de compra. O bloqueio é deliberado: gravar solicitação sem identidade produziria documentos que ninguém consegue rastrear depois.
O solicitante
A solicitação precisa de um solicitante válido do Vendelo. Documento sem essa informação é recusado antes mesmo de chegar ao ERP, com mensagem explícita.
Importar solicitações antigas
Solicitações que já existiam no Protheus antes da integração não têm o C1_XVDOUID preenchido. Para trazê-las, preencha o campo com um identificador de usuário do Vendelo válido, igual em todas as linhas da mesma solicitação.
Linhas da mesma solicitação com identificadores diferentes é o erro clássico dessa migração. Trate a solicitação como um documento só.
Outros campos que a operação pode exigir
Além dos campos personalizados, alguns recursos dependem de campos que precisam já existir no dicionário. A integração nunca os cria, e cabe à implantação confirmar quais existem.
| Recurso | Precisa de | Sem o campo |
|---|---|---|
| Número e item do pedido do cliente na nota fiscal | Dois campos na linha do documento. No dicionário padrão os candidatos são C6_NUMPCOM e C6_ITEMPC | A informação não é enviada |
| Referência do documento | Campo no cabeçalho (prefixo C5_), informado na configuração | Fica apenas no Vendelo |
| Contato do pedido | Campo no cabeçalho (prefixo C5_), criado pelo cliente. Não há equivalente nativo universal | Fica apenas no Vendelo |
| Modalidade de entrega | Campo no cabeçalho (prefixo C5_), informado na configuração | Fica apenas no Vendelo |
Levante isso na configuração, não na homologação. Criar campo exige janela de manutenção, e descobrir a necessidade no dia do teste costuma custar uma semana.
Diagnóstico rápido
| Sintoma | Causa provável |
|---|---|
| Campo personalizado não aparece no Vendelo | Não está cadastrado no Vendelo, ou está com nome diferente do dicionário |
| Campo aparece vazio | Cadastrado nos dois lados, mas sem valor no registro de origem |
| Campo não vai para o ERP na gravação | Modelo de dados errado no cadastro do Vendelo |
| Gravação recusada por validação do campo | Regra de validação do dicionário. Corrigir o valor ou a regra |
| Pedido grava sem itens | Campo data ou lógico criado por SQL em alguma tabela |
| Solicitação de compra bloqueada | Campo de identificação ausente, incompleto ou não confirmado |
| Solicitação recusada por falta de solicitante | Documento sem usuário do Vendelo válido associado |
| Toda gravação falha por campo fora do dicionário | Coluna física sem registro correspondente no dicionário |
Perguntas frequentes
Preciso avisar a Vendelo ao criar um campo personalizado?
Não é obrigatório, mas ajuda. O campo entra sozinho, desde que exista dos dois lados. Avisar evita que uma dúvida vire chamado.
Que nome cadastro no Vendelo?
O nome completo do campo, exatamente como está no dicionário do Protheus, com o prefixo da tabela: C5_XPRIOR, por exemplo, e não apenas XPRIOR. Diferente do SAP Business One, onde se usa apenas o sufixo.
O campo personalizado vai para a nota fiscal?
Só se o ERP o levar. A integração grava o campo no documento; o que a nota carrega é regra fiscal do Protheus.
Criei o campo por SQL e está funcionando. Preciso refazer?
Se for caractere ou numérico, ele tende a funcionar, mas refaça pelo Configurador na próxima janela. Se for data ou lógico, refaça imediatamente: ele derruba a gravação da tabela inteira, mesmo que o problema ainda não tenha aparecido.
Posso usar solicitação de compra sem criar o campo de identificação?
Não. O Vendelo bloqueia inclusão e alteração enquanto a identidade não estiver pronta, para não gerar documento sem rastreabilidade.
A verificação da integração cria o campo se ele não existir?
Não. Ela apenas diagnostica. Criação de campo é etapa de instalação, pelo Configurador ou UPDDISTR.
Um campo personalizado pode ser removido depois?
Pode, pelo Configurador, e o cadastro correspondente deve sair do Vendelo. Remover só de um lado faz o campo parar de circular silenciosamente, o que é difícil de diagnosticar.
Preciso de janela de manutenção para criar campo?
Precisa. A atualização de dicionário roda em modo exclusivo, e o ambiente fica indisponível durante a operação.
Próxima leitura
Da cotação ao faturamento: ciclo do pedido: Acompanhe o pedido de ponta a ponta: da cotação no Vendelo à liberação, ao faturamento e à devolução no Protheus.