Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmentos - TOTVS CRM Automação e Força de Vendas (SFA) - WEB - Integração - Ajustar Variáveis de Integração com API Nativa Protheus

time.png Tempo aproximado para leitura: 00:05:00 min

Dúvida
Como exportar campos customizáveis do Protheus referente a pedido e clientes, via variáveis de integração?


Ambiente
Cross Segmentos - TOTVS CRM Automação e Força de Vendas (SFA) - WEB - Integração - A partir da versão 12

Solução

Na integração padrão do Protheus, é possível enviar campos customizáveis durante a exportação de clientes e pedidos.

Para configurar essa funcionalidade, siga os passos abaixo:

  • Acessa o ambiente WEB do SFA

  • Navegue até o menu: Configuração / Integração / Variáveis de integração

 

 

Na coluna ERP, existem três parâmetros distintos, cada um responsável por uma parte específica da exportação: cliente, cabeçalho do pedido e itens do pedido. Os parâmetros são:

  • EXPORTACAO_CAMPOCUSTOM_CLIENTE
  • EXPORTACAO_CAMPOCUSTOM_CABECALHO_PEDIDO
  • EXPORTACAO_CAMPOCUSTOM_ITENS_PEDIDO

Abaixo está a lista de campos padrão que podem ser sobrescritos na API Nativa:

Clientes:

Campo Adapter EAI

Campo ERP

Campo SFA

Observação

CompanyId GRUPOEMPRESA SPLIT_PART(USUARIO.CODIGOERP,'#',1) TenantId ou Grupo de empresa
BranchId A1_FILIAL LOCALFILIAL.IDLOCAL OU SPLIT_PART(USUARIO.CODIGOERP,'#',3) Tenta enviar o localfilial caso esteja preenchido, senão, envia a filial do Usuario. Caso o cadastro do usuario for compartilhado, envia  a primeira filial que encontrar do grupo.
Name A1_NOME PARCEIRO.NOMEPARCEIRO Se o campo Parceiro.NomeParceiro for vazio, envia o Parceiro.NomeParceiroFantasia. Removida acentuação e todos os caracteres são enviados como maiúsculos
ShortName A1_NREDUZ PARCEIRO.NOMEPARCEIROFANTASIA Se o Parceiro.NomeParceiroFantasia for vazio, envia o Parceiro.NomeParceiro. Removida acentuação e todos os caracteres são enviados como maiúsculos
HomePage A1_HPAGE PARCEIRO.HOMEPAGE  
StrategicCustomerType A1_TIPO COALESCE(CLASSIFICACAOPARCEIRO.CODIGOERP,CLASSIFICACAOPARCEIRO.SGLCLASSIFICACAO) Se o campo ClassificacaoParceiro.CodigoERP for nulo, envia o valor do campo ClassificacaoParceiro.SglCassificacao
FreightTypeCode A1_TPFRET VALOR FIXO = ‘F’ Enviado Fixo = F
FreightTypeDescription A1_TPFRET VALOR FIXO = ‘FOB’ Enviado Fixo = FOB
EntityType A1_PESSOA CASE WHEN PARCEIRO.SGLTIPOPESSOA = ‘PF’ THEN 1 ELSE 2 END Se o tipo de pessoa for PF, envia 1, senão 2
CpfCnpj A1_CGC CASE WHEN PARCEIRO.SGLTIPOPESSOA = ‘PF’ THEN PESSOAFISICA.DOCUMENTOIDENTIFICACAO ELSE PESSOAJURIDICA.DOCUMENTOIDENTIFICACAO END Se o tipo de pessoa for PF, envia o documento da tabela pessoafisica, senão, da pessoajuridica
CpfCnpjDescription A1_CGC CASE WHEN PARCEIRO.SGLTIPOPESSOA = ‘PF’ THEN 'CPF' ELSE 'CNPJ' END Se o tipo de pessoa for PF, envia o valor CPF, senão, CNPJ
InscricaoEstadual A1_INSCR LOCALIDENTIFICACAO.DOCUMENTOIDENTIFICACAO WHERE TIPOIDENTIFICACAO = ‘INSCRICAOESTADUAL’ Envia o documento vinculado ao tipo de identificação INSCRICAOESTADUAL
InscricaoMunicipal A1_INSCRM LOCALIDENTIFICACAO.DOCUMENTOIDENTIFICACAO WHERE TIPOIDENTIFICACAO = ‘INSCRICAOMUNICIPAL’ Envia o documento vinculado ao tipo de identificação INSCRICAOMUNICIPAL
Suframa A1_SUFRAMA LOCALIDENTIFICACAO.DOCUMENTOIDENTIFICACAO WHERE TIPOIDENTIFICACAO = ‘CARTAOPRODUTOR’ Envia o documento vinculado ao tipo de identificação CARTAOPRODUTOR
InscricaoRural A1_INSCRUR LOCALIDENTIFICACAO.DOCUMENTOIDENTIFICACAO WHERE TIPOIDENTIFICACAO = ‘INSCRICAOSUFRAMA’ Envia o documento vinculado ao tipo de identificação INSCRICAOSUFRAMA
Taxpayer A1_CONTRIB CASE WHEN PARCEIRO.IDNCONTRIBUINTE = 1 THEN ‘1’ ELSE ‘2’ END Se o campo Parceiro.Idncontribuinte for igual a 1, envia ‘1’, senão ‘2’
RegisterDate A1_DTNASC PESSOAFISICA: ANO||’-’||MES||’-’||DIA
PESSOAJURIDICA: DATAFUNDACAO
PessoaFisica: Ano + ‘-’ + Mes + ‘-’ + Dia
PessoaJuridica: DataFundacao
Address A1_END LOCAL.LOGRADOURO WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’ Removida acentuação e todos os caracteres são enviados como maiúsculos
District A1_BAIRRO LOCAL.BAIRRO WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’ Removida acentuação e todos os caracteres são enviados como maiúsculos
ZIPCode A1_CEP LOCAL.CEP WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’ Envia apenas números
StateCode A1_EST COALESCE(UNIDADEFEDERATIVA.CODIGO,UNIDADEFEDERATIVA.SIGLA) WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’ Se o campo UnidadeFederativa.Codigo for nulo, envia o campo UnidadeFederativa.Sigla
CityCode A1_COD_MUN CIDADE.CODIGO WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’  
CityDescription A1_MUN CIDADE.DESCRICAO WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’  
Complement A1_COMPLEM LOCAL.COMPLEMENTO WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’ Removida acentuação e todos os caracteres são enviados como maiúsculos
RegionCode A1_REGIAO REGIAO.CODIGOERP WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’  
CountryDescription A1_PAIS PAIS.DESCRICAO WHERE TIPOLOCAL.SGLTIPOLOCAL=’PRI’ Envia fixo o valor Brasil, caso seja nulo ou vazio. A String também é enviada capitalizada e sem acentuação
Segment1 A1_SATIV1 SEGMENTO.CODIGERP Enviado o primeiro registro encontrado
Email A1_EMAIL LOCALEMAIL.EMAIL Enviado o primeiro registro encontrado
PriceListHeaderItemCode A1_TABELA SPLIT_PART(TABELAPRECO.CODIGOERP,'#',2) Código com valor de referência de Tabela de Preço (DA0).
PaymentConditionCode A1_COND SPLIT_PART(CONDICAOPAGAMENTO.CODIGOERP,'#',2) Código com valor de referência de Condição de Pagamento (SE4).
CreditLimit A1_LC LOCAL.LIMITESUGERIDO  
VendorCode A1_VEND SPLIT_PART(USUARIO.CODIGOERP,'#',2) Código com valor de referência de Usuário (SA3).
DiallingCode A1_DDD SUBSTRING(LOCALTELEFONE.TELEFONE,0,3) Enviado o primeiro DDD, ordenado pelo campo LocalTelefone.IdLocalTelefone
PhoneNumber A1_TEL SUBSTRING(LOCALTELEFONE.TELEFONE,3) Enviado o primeiro numero de telefone, ordenado pelo campo LocalTelefone.IdLocalTelefone
FaxNumber A1_FAX SUBSTRING(LOCALTELEFONE.TELEFONE,3) Enviado o segundo numero de telefone, ordenado pelo campo LocalTelefone.IdLocalTelefone
BillingAddress A1_ENDCOB LOCAL.LOGRADOURO WHERE TIPOLOCAL.SGLTIPOLOCAL=’COB’ Removida acentuação e todos os caracteres são enviados como maiúsculos
BillingDistrict A1_BAIRROC LOCAL.BAIRRO WHERE TIPOLOCAL.SGLTIPOLOCAL=’COB’ Removida acentuação e todos os caracteres são enviados como maiúsculos
BillingZIPCode A1_CEPC LOCAL.CEP WHERE TIPOLOCAL.SGLTIPOLOCAL=’COB’ Envia apenas números
BillingCityCode A1_COD_MUNC CIDADE.CODIGO WHERE TIPOLOCAL.SGLTIPOLOCAL=’COB’  
BillingCityDescription A1_MUNC CIDADE.DESCRICAO WHERE TIPOLOCAL.SGLTIPOLOCAL=’COB’  
BillingStateCode A1_ESTC COALESCE(UNIDADEFEDERATIVA.CODIGO,UNIDADEFEDERATIVA.SIGLA) WHERE TIPOLOCAL.SGLTIPOLOCAL=’COB’ Se o campo UnidadeFederativa.Codigo for nulo, envia o campo UnidadeFederativa.Sigla
ShippingAddress A1_ENDENT LOCAL.LOGRADOURO WHERE TIPOLOCAL.SGLTIPOLOCAL=’COB’ Removida acentuação e todos os caracteres são enviados como maiúsculos
ShippingComplement A1_COMPENT LOCAL.COMPLEMENTO WHERE TIPOLOCAL.SGLTIPOLOCAL=’ENT’ Removida acentuação e todos os caracteres são enviados como maiúsculos
ShippingDistrict A1_BAIRROE LOCAL.BAIRRO WHERE TIPOLOCAL.SGLTIPOLOCAL=’ENT’ Removida acentuação e todos os caracteres são enviados como maiúsculos
ShippingZIPCode A1_CEPE LOCAL.CEP WHERE TIPOLOCAL.SGLTIPOLOCAL=’ENT’ Envia apenas números
ShippingCityCode A1_CODMUNE CIDADE.CODIGO WHERE TIPOLOCAL.SGLTIPOLOCAL=’ENT’  
ShippingCityDescription A1_MUNE CIDADE.DESCRICAO WHERE TIPOLOCAL.SGLTIPOLOCAL=’ENT’  
ShippingStateCode A1_ESTE COALESCE(UNIDADEFEDERATIVA.CODIGO,UNIDADEFEDERATIVA.SIGLA) WHERE TIPOLOCAL.SGLTIPOLOCAL=’ENT’ Se o campo UnidadeFederativa.Codigo for nulo, envia o campo UnidadeFederativa.Sigla

Cabeçalho do Pedido:

Campo Adapter EAI

Campo ERP

Campo SFA

Observação

RegisterDate C5_EMISSAO COALESCE(PEDIDO.DATAFINALIZADO,PEDIDO.DATAPEDIDO) Se a variável EXPORTACAO_DATAEMISSAO_PEDIDO estivar ativa, o campo PEDIDO.DATAFINALIZADO vai ser atualizado com a data de envio do pedido. Formato esperado no envio para o Protheus: 2024-12-31T09:55:41Z
CustomerCode A1_COD + A1_LOJA SPLIT_PART(PARCEIRO.CODIGOERP,'#',2)+SPLIT_PART(PARCEIRO.CODIGOERP,'#',3) Código referente ao registro Protheus A1_COD+A1_LOJA, sem caracter de concatenção
PaymentTermCode C5_CONDPAG SPLIT_PART(CONDICAOPAGAMENTO.CODIGOERP,'#',2) Código com valor de referência de Condição de Pagamento (SE4).
FreightType C5_TPFRETE

CASE
    WHEN CAST(TIPOFRETE.SGLTIPOFRETE AS VARCHAR) = 'C' THEN '1'

    WHEN CAST(TIPOFRETE.SGLTIPOFRETE AS VARCHAR) = 'F' THEN '2'

    WHEN CAST(TIPOFRETE.SGLTIPOFRETE AS VARCHAR) = 'S' THEN '3'

    ELSE '1'

END

Referência:
1 – CIF
2 – FOB
3 – SFT
CarrierCode C5_TRANSP SPLIT_PART(PARCEIRO.CODIGOERP,'#',2) Código com valor de referência de Transportadora (SA4).
InvoiceMessage C5_MENNOTA PEDEDIDO.OBSERVACAONOTAFISCAL

Mensagem da nota

FreightValue C5_FRETE ROUND(COALESCE(PEDIDOENTREGA.VALORFRETE,0),2) Valor do Frete
GrossWeight C5_PBRUTO ROUND(COALESCE((SELECT SUM(PP.PESOBRUTO * PP.QUANTIDADE) FROM PEDIDOPRODUTO PP WHERE PP.IDPEDIDO = PED.IDPEDIDO),0),2)

Peso Bruto

InsuranceValue C5_SEGURO ROUND(COALESCE(PEDEN.VALORSEGURO,0),2)

Valor do Seguro

SellerIdCode C5_VEND1 SPLIT_PART(USUARIO.CODIGOERP,'#',2)

Código com valor de referência de Vendedores (SA3).

PriceTableIdCode C5_TABELA SPLIT_PART(TABELAPRECO.CODIGOERP,'#',2) Código com valor de referência de Tabela de Preços (DA0).

Itens do Pedido:

Campo Adapter EAI

Campo ERP

Campo SFA

Observação

 
ItemCode C6_PRODUTO SPLIT_PART(PRODUTO.CODIGOERP,'#',2) Código com valor de referência de Produto (SB1).  
WarehouseInternalId C6_LOCAL SPLIT_PART(TIPOESTOQUE.CODIGOERP,'#',2) O campo é preenchido com valor de referência do Armazém (NRR). É verificado primeiro se existe vinculo por cabeçalho (PEDIDO.IDTIPOESTOQUE), caso não exista, é enviado o valor referente aos itens (PEDIDOPRODUTO.IDTIPOESTOQUE)  
Quantity C6_QTDVEN ROUND(COALESCE(PEDIDOPRODUTO.QUANTIDADE,0),2) Quantidade  
UnityPrice C6_PRCVEN ROUND(COALESCE(PEDIDOPRODUTO.PRECOORIGINAL,0),2) Preço unitário, sem desconto  
ItemDiscount C6_VALDESC ROUND(COALESCE(PEDIDOPRODUTO.QUANTIDADE,0)*COALESCE(PEDIDOPRODUTO.VALORDESCONTO,0),2) Realiza cálculo com base no valor total de cada item e adiciona no campo C6_VALDESC (valor de desconto para cada item).  
DeliveryDate C6_ENTREG CAST(COALESCE(CAST(COALESCE(PE.DATAENTREGA,PP.DATAENTREGA) AS VARCHAR),CURRENT_DATE) AS VARCHAR) Caso a data de entrega na pedidoentrega esteja nula, envia a data de entrega da pedidoproduto, se esta também estiver nula, envia a data atual. Formato esperado no envio para o Protheus: 2024-12-31T09:55:41Z  
TypeOperation C6_OPER OU C6_TES COALESCE(TIPOPEDIDO_ITEM.CODIGO,TIPOPEDIDO_CABECALHO.CODIGO) Se menor que 3 será tratado como C6_OPER, caso contrario será tratado como C6_TES. Envia primeiro o tipo e pedido por item, caso seja nulo, envia por cabeçalho  
CustomerOrderNumber C6_PEDCLI CAST(COALESCE(P.NUMEROPEDIDOCLIENTE,'') AS VARCHAR) Número do Pedido do Cliente  

 

Importante!

A sobrescrita ou adição de campos na API Nativa, requer o envio de três campos principais:

  • CAMPO: Nome do campo adicional ou do campo que será sobrescrito. Qualquer campo que não esteja presente no JSON de saída padrão da exportação é considerado um campo adicional. Caso seja uma sobrescrita, o campo deve ser declarado exatamente como aparece no JSON de saída (sensível a maiúsculas e minúsculas - case sensitive).

  • VALOR: Valor correspondente à chave CAMPO. Este valor deve ser, obrigatoriamente, do tipo VARCHAR.

  • TIPO: Tipo de dado que será enviado. Existem três opções possíveis: STRING, NUMERIC e BOOLEAN. Campos do tipo DATE devem ser declarados como STRING, pois são enviados entre aspas duplas. A responsabilidade de garantir o formato correto da data recai sobre a pessoa que configura a variável.

Exemplos:
Envio de Campos Não Padrão. Qualquer campo que não seja padrão pode ser enviado conforme a necessidade, desde que previamente haja pontos de entrada desenvolvidos e disponibilizados. A declaração desses campos segue o mesmo formato dos campos padrão. Basicamente, basta enviar a chave, o valor e o tipo do dado para que sejam inseridos ou substituídos na exportação. Veja os exemplos a seguir:

Exemplo 1: Envio de Valores Fixos em Campos Adicionais para o Protheus
1

2

3

4

5
(SELECT 'C5_NATUREZ' AS CAMPO, COALESCE('1.01.001', ' ') AS VALOR, 'STRING' AS TIPO)

UNION

(SELECT 'C5_ZDTSAI' AS CAMPO, COALESCE('2022-01-01', ' ') AS VALOR, 'STRING' AS TIPO)

UNION

(SELECT 'Discounts' AS CAMPO, CAST(0 AS VARCHAR) AS VALOR, 'NUMERIC' AS TIPO)
Observação: A cláusula UNION separa os campos, permitindo a adição de mais campos conforme necessário.
Exemplo 2: Envio de Campos através de uma Busca no SFA
1

2

3

4

5

6

7

8

9
(SELECT 'WarehouseInternalId' AS CAMPO, COALESCE(

    CASE WHEN L.NUMEROMATRICULA IN ('01','08') THEN '04' ELSE '01' END, ' ')

    AS VALOR, 'STRING' AS TIPO

    FROM PEDIDOPRODUTO PP

    INNER JOIN PEDIDO P ON P.IDPEDIDO = PP.IDPEDIDO

    INNER JOIN LOCAL L ON L.IDLOCAL = P.IDLOCALFILIALVENDA

    WHERE PP.IDPEDIDOPRODUTO = ? LIMIT 1)

UNION

(SELECT 'ItemDiscount' AS CAMPO, CAST(0 AS VARCHAR) AS VALOR, 'NUMERIC' AS TIPO)  

 

Atenção!

  • Uso de ? no WHERE: Certifique-se de usar a comparação com ? na cláusula WHERE para que a consulta retorne corretamente.

  • Parênteses entre UNION: Sempre utilize parênteses ao redor de cada SELECT ao usar UNION, por exemplo:

 

Exemplo 1: Envio de Valores Fixos em Campos Adicionais para o Protheus
1
2
3
(SELECT 'C5_NATUREZ' AS CAMPO, COALESCE('1.01.001', ' ') AS VALOR , 'STRING' AS TIPO WHERE IDPARCEIRO = ?)
UNION
(SELECT 'C5_ZDTSAI' AS CAMPO, COALESCE('2022-01-01', ' ') AS VALOR, 'STRING' AS TIPO)

 

  • Uso de LIMIT 1 ou equivalente, em Subconsultas: Para garantir que apenas um registro seja retornado por linha, utilize o LIMIT 1 em subconsultas.

  • Padronização de Parametrização: Por convenção, mantenha o SELECT em uma única linha para padronizar a parametrização.

 

Exemplo de Substituição de Valores Padrão na Exportação
1
SELECT 'PaymentTermCode', '01', 'STRING' LIMIT 1

No exemplo acima, a condição de pagamento padrão está sendo substituída por um valor fixo (01).

Exemplo de Substituição de Campos Padrão com Consultas do SFA
1
2
3
4
5
SELECT 'UnityPrice', COALESCE(CAST(SUM(PP.quantidadefaturada * PP.precofaturado) AS VARCHAR), ' '), 'NUMERIC' AS TIPO
FROM PEDIDO P
INNER JOIN PEDIDOPRODUTO PP ON P.IDPEDIDO = PP.IDPEDIDO
WHERE P.IDPEDIDO = ?
GROUP BY P.IDPEDIDO  

 

No SFA, a SQL criada ou ajustada será colocada na coluna VALOR, correspondente ao CAMPO que define o contexto da variável, uma vez que seja finalizado a configuração no campo é importante clicar no campo GRAVAR, para salvar as informações adicionadas:

 

 

Importante!
Recomendamos testar esta configuração primeiramente em seu ambiente de homologação e após os testes necessários, replicar para o ambiente de produção.

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _