Campos personalizados e solicitações de compra no Protheus

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.

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.

  1. No Protheus: o campo existe no dicionário, criado pelo Configurador.

  2. 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 VendeloCorresponde aTabela no Protheus
Parceiro de negócioCampos do cadastro de clientes e de fornecedoresSA1 (prefixo A1_) e SA2 (prefixo A2_)
Documento de negócio, por tipoCampos do cabeçalho do documento, como o pedido de vendaSC5 (prefixo C5_)
Item do documentoCampos da linha do documentoSC6 (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 ProtheusComportamento
CaractereTexto, com espaços à direita removidos
NuméricoNúmero, respeitando as casas decimais do dicionário
DataConvertido para o formato de data do Vendelo
LógicoVerdadeiro 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.

TipoCriado por SQL
CaractereSobrevive, mas continua sendo má prática
NuméricoSobrevive, mas continua sendo má prática
DataQuebra a gravação da tabela
LógicoQuebra 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.

RecursoPrecisa deSem o campo
Número e item do pedido do cliente na nota fiscalDois campos na linha do documento. No dicionário padrão os candidatos são C6_NUMPCOM e C6_ITEMPCA informação não é enviada
Referência do documentoCampo no cabeçalho (prefixo C5_), informado na configuraçãoFica apenas no Vendelo
Contato do pedidoCampo no cabeçalho (prefixo C5_), criado pelo cliente. Não há equivalente nativo universalFica apenas no Vendelo
Modalidade de entregaCampo no cabeçalho (prefixo C5_), informado na configuraçãoFica 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

SintomaCausa provável
Campo personalizado não aparece no VendeloNão está cadastrado no Vendelo, ou está com nome diferente do dicionário
Campo aparece vazioCadastrado nos dois lados, mas sem valor no registro de origem
Campo não vai para o ERP na gravaçãoModelo de dados errado no cadastro do Vendelo
Gravação recusada por validação do campoRegra de validação do dicionário. Corrigir o valor ou a regra
Pedido grava sem itensCampo data ou lógico criado por SQL em alguma tabela
Solicitação de compra bloqueadaCampo de identificação ausente, incompleto ou não confirmado
Solicitação recusada por falta de solicitanteDocumento sem usuário do Vendelo válido associado
Toda gravação falha por campo fora do dicionárioColuna 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.