Ir para o conteúdo

Plugin Integração TOTVS CRM

01. Visão Geral

1. Visão Geral

Webservice para integração entre o ERP Protheus x TOTVS CRM

A plataforma de SFA da TOTVS CRM tem a característca que os dados/grupo de informações necessários para efetuar a integração com o Protheus é parametrizado diretamente na plataforma da TOTVS CRM.

A plataforma da TOTVS CRM consome um WebService onde é disponibilizado uma rotina genérica que dá acesso a diversas informações.

A chamada para o consumo do WebService é feita pelo lado da plataforma da TOTVS CRM

Este ADD-ON tem por objetivo permitir a integração da Plataforma de SFA da TOTVS CRM com o Protheus, permitindo a troca de informações entre as plataformas.

Disponibiliza função genérica de busca de dados na base do cliente para que a plataforma da TOTVS CRM tenha possibilidade de ter acesso a várias informações como:

  • Consultar Cidade
  • Consultar Condicao Pagamento
  • Consultar Cliente
  • Consultar Cliente x Contato
  • Consultar Estoque
  • Consultar Filial
  • Consultar Grupo Produto
  • Consultar Nota Fiscal
  • Consultar Nota Fiscal x Produto
  • Consultar Pais
  • Consultar Pedido
  • Consultar Pedido x Produto
  • Consultar Produto
  • Consultar Tabela Preco
  • Consultar Tabela Preco x Produto
  • Consultar Titulo Receber
  • Consultar Unidade Federativa
  • Consultar Unidade Medida
  • Consultar Vendedor
  • Consultar Vendedor Cliente
  • Consultar Tipo Cliente
  • Consultar Tipo Nota Fiscal
  • Consultar Tipo Frete Pedido
  • Consultar Tipo Operacao x Item Pedido
  • Consultar Tipo Titulo
  • Consultar TES
  • Consultar Metas Vendas
  • Consultar Nota Fiscal Devolução
  • Consultar Nota Fiscal Devolução x Produto
  • Consultar Categoria Produto
  • Consultar Categoria Produto x Produtos ou Grupos
  • Consultar Veiculo Oficina
  • Consultar Ordem Servico Oficina
  • Consultar Contrato Parceria
  • Consultar Transportadora
  • Consultar Regra Negocio
  • Consultar Documento Carga GFE
  • Consultar Emitente GFE
  • Consultar Frete GFE
02. Menu

2. Menu

A plataforma da TOTVS CRM consome um WebService onde é disponibilizado uma rotina genérica que dá acesso a diversas informações.

03. Fluxo Operacional

3. Fluxo Operacional

Fluxo Operacional

04. Rotinas personalizadas específicas do Pacote

4. Rotinas personalizadas específicas do Pacote

Funções personalizadas contidas no pacote:

Função Descrição
C011A01 Rotina Automática para INCLUSÃO de Contratos de Parceria.
M011A01 Rotina para reprocessar Pedidos B2B que nao geraram financeiro.
P011A01 Rotina centralizadora para implementação de Pontos de Entrada do ADD-ON de Integração SFA TOTVS CRM
S011A01 WebService para integração com sistema Força de Vendas x Protheus - Exportação de Cadastros
S011A02 WebService para integração com sistema Força de Vendas x Protheus - Importação de: Pedido Venda / Pedidi Venda Exportação / Contrato de Parceria / Cliente / Contato /
S011A03 WebService para integração com sistema Força de Vendas x Protheus - GetImposto / Consulta Genérica
S011A04 WebService para integração com sistema Força de Vendas x Protheus - Incluir Orçamento
S011A05 WebService REST para integração com sistema Força de Vendas x Protheus - Incluir Pedido de Venda
S011A06 WebService REST para integração com sistema Força de Vendas x Protheus - Consulta XML
UPD011AT Compatibilizar Triggers especificas
X011A01 Rotina centralizadora das funções customizadas referente ao
UPD011A Programa compatibilizador do Dicionário de Dados para aplicação do ADD-ON.
05.Pontos de entradas disponiveis para desenvolvimento

5. Pontos de entradas disponiveis para desenvolvimento

Nome PES011A1
Descrição Webservice de exportação dos cadastros
Ponto de entrada para filtro de dados chamado em todos os métodos que retornam dados de cadastros do ERP.
Programa Fonte TODOS
Parâmetros cMetodo: nome do método que está sendo executado, exemplo: “GetProduto”
Retorno cExp: expressão de filtro em sintaxe SQL que será inserido na cláusula WHERE para filtro dos dados.
Exemplo
ADVPL PES011A1

User Function PES011A1()

Local cMetodo := Upper( PARAMIXB[1] )
Local cRet := ""

Do Case
Case cMetodo == "GETCIDADE"
   cRet := "CC2_EST IN ('PR','SP')"
Case cMetodo == "GETPRODUTO"
   cRet := "B1_TIPO <> 'GG' "
EndCase

Return(cRet)
Nome PES011A3
Descrição Webservice de exportação dos cadastros
Ponto de entrada para filtro de dados chamado em todos os métodos que retornam dados de cadastros do ERP.
Programa Fonte TODOS
Parâmetros cMetodo: nome do método que está sendo executado, exemplo: “GetProduto”
Retorno Array: deve retornar um array bi-dimensional no formato CAMPO e CONTEUDO.
Exemplo
ADVPL PES011A3

User Function PES011A3()

Local aRet := {}
Local cMetodo := PARAMIXB[1]

If Upper(Alltrim(cMetodo)) == "GETPEDIDO"
    aAdd( aRet, { "C5_X_CPO1", Alltrim(SC5->C5_X_CPO1) } )
    aAdd( aRet, { "C5_X_CPO2", SC5->C5_X_CPO2 } )
    aAdd( aRet, { "C5_X_CPO3", dDatabase } )
Endif

Return(aRet)
Nome PES011A4
Descrição Webservice de exportação dos cadastros
Ponto de entrada para alterar e manipular os dados retornados pelos métodos.
OBS: inicialmente atende somente o método GETTIPOPEDIDO.
Programa Fonte TODOS
Parâmetros PARAMIXB[1]: nome do método que está sendo executado, exemplo: “GetProduto”
PARAMIXB[2]: referência ao array aDADOS já populado pelo método.
Retorno Array: deve retornar um array bi-dimensional no formato cCODIGO, cCONTEUDO.
Exemplo
ADVPL PES011A4

User Function PES011A4()

Local cMetodo := PARAMIXB[1]
Local aDados  := PARAMIXB[2]

Do Case
Case Upper(Alltrim(cMetodo)) == "GETTIPOPEDIDO"

   aDados := {} // Limpa os dados padroes para adicionar os específicos
   aAdd( aDados, { "VC", "VENDA"       } )
   aAdd( aDados, { "BO", "BONIFICACAO" } )
EndCase

Return(aDados)
Nome PES011A6
Descrição Webservice de exportação dos cadastros
Ponto de entrada para alterar as TAGs do XML antes de exportar, executado para cada registro posicionado.
A tabela do método já está posicionada no registro, não desposicionar.
O conteúdo das TAGs do objeto XML pode ser alterado diretamente.
Programa Fonte TODOS
Parâmetros PARAMIXB[1]: Nome do método que chamou o PE, exemplo: “GetCliente”
PARAMIXB[2]: Objeto XML do registro posicionado
Retorno Nil
Exemplo
ADVPL PES011A6

User Function PES011A6()

Local cMetodo := PARAMIXB[1] // Nome do método que chamou o PE
Local oXML    := PARAMIXB[2] // Objeto XML do registro posicionado

If Upper(Alltrim(cMetodo)) == "GETCLIENTE"
   If SA1->A1_X_ATIVO == "N"
      oXML:A1_MSBLQL := "1"
   Endif
Endif

Return
Nome PES011A2
Descrição Webservice de Inclusão do Pedido
Ponto de entrada chamado em três locais distintos do método/rotina de inclusão do pedido de venda, utilizando os seguintes identificadores: - VLDANTES: início da rotina para validar se continua ou não.
- ACABEC: após preencher o vetor aCabec (cabeçalho do pedido) para tratamento complementar sobre os campos do vetor. - AITEM: após preencher o vetor aItem (itens do pedido) para tratamento complementar sobre os campos do vetor, disparado para cada item.
Programa Fonte TODOS
Parâmetros PARAMIXB[1]: identificador do local que está chamando o ponto de entrada, sendo: "VLDANTES", "ACABEC", "AITEM", "APOSPEDIDO".

"VLDANTES":
  • PARAMIXB[2]: ponteiro para a estrutura de entrada (INPedido)
  • PARAMIXB[3]: ponteiro para o vetor de mensagens (aMsg), sendo:
    1. aMsg[1]: Tipo da mensagem;
    2. aMsg[2]: Código do campo ou validação que gerou o erro;
    3. aMsg[3]: Mensagem detalhada do erro;
"ACABEC"
PARAMIXB[2]: ponteiro para a estrutura vetor do cabeçalho (aCabec)
"AITEM"

PARAMIXB[2]: ponteiro para a estrutura vetor dos itnes (aItem)
"APOSPEDIDO": PARAMIXB[2]: número do pedido incluído (C5_NUM)
Retorno Nil
Exemplo
ADVPL PES011A2

User Function PES011A2()

Local cOrigem := Upper( PARAMIXB[1] )
Local INPedido := nil
Local aCabec := nil
Local aItem := nil
Local aMsg := nil

Do Case
Case cOrigem == "VLDANTES"
   INPedido := PARAMIXB[2]
   aMsg     := PARAMIXB[3]

   // Executa regras de validação e retorna mensagem em caso de erro
   // Exemplo:
   // If INPedido:C5_VEND1 == "999999"
   //    aAdd(aMsg,{"P","Vendedor","Vendedor inválido: 999999 "})
   // Endif

Case cOrigem == "ACABEC"
   aCabec   := PARAMIXB[2]

   // Adiciona campos específicos do cliente no cabeçalho do pedido
   // Exemplo:
   // aAdd(aCabec, {"C5_X_CAMPO", "TESTE CABEC" ,NIL} )

Case cOrigem == "AITEM"
   aItem    := PARAMIXB[2]

   // Adiciona campos específicos do cliente no Item do Pedido
   // Exemplo:
   // aAdd(aItem, {"C6_X_CAMPO", "TESTE ITEM"   ,NIL} )

Case cOrigem == "APOSPEDIDO"
   cNumPed  := PARAMIXB[2]

   // Complemento após inclusão do Pedido
   // Exemplo:
   // dbSelectArea("SC5")
   // RecLock("SC5",.F.)
   // C5_X_CPO01 := "ABC"
   // msUnlock()

EndCase

Return
Nome PES011A5
Descrição Webservice de Inclusão do Pedido
Ponto de entrada para alterar a situação do Pedido.
OBS: inicialmente atende somente o método GETPEDIDO.
Programa Fonte TODOS
Parâmetros PARAMIXB[1]: nome do método que está sendo executado, exemplo: “GetPedido”
PARAMIXB[2]: situação atual do Pedido
Retorno Caracter: deve retornar a nova situação do Pedido
Exemplo
ADVPL PES011A5

User Function PES011A5()

Local cMetodo := PARAMIXB[1]
Local cRet    := PARAMIXB[2]

If Upper(Alltrim(cMetodo)) == "GETPEDIDO"
   Do Case
      Case Alltrim(SC5->C5_NOTA) <> "" .and. ! SC5->(Deleted()) // FATURADO
         cRet := "PF"

      Case SC5->(Deleted()) // CANCELADO
         cRet := "PC"

      Case Alltrim(SC5->C5_NOTA) == "" .and. ! SC5->(Deleted()) // ABERTO
         cRet := "PA"   
   End Case
Endif

Return(cRet)
Nome PES011A7
Descrição Webservice de Inclusão de Vendas – Venda Assistida
Ponto de entrada chamado em três locais distintos do método/rotina de inclusão do pedido de venda, utilizando os seguintes identificadores:
  • VLDANTES: início da rotina para validar se continua ou não.
  • ACABEC: após preencher o vetor aCabec (cabeçalho do pedido) para tratamento complementar sobre os campos do vetor.
  • AITEM: após preencher o vetor aItem (itens do pedido) para tratamento complementar sobre os campos do vetor, disparado para cada item.
  • AFORMA: após preencher o vetor aForma (formas de pagamentos da venda) para tratamento complementar sobre os campos do vetor, disparado para forma de pagamento considerada.
Programa Fonte TODOS
Parâmetros PARAMIXB[1]: identificador do local que está chamando o ponto de entrada, sendo: "VLDANTES", "ACABEC", "AITEM", ”AFORMA”, "APOSVENDA".

Se for "VLDANTES":
  • PARAMIXB[2]: ponteiro para a estrutura de entrada (INVENDAASSISTIDA)
  • PARAMIXB[3]: ponteiro para o vetor de mensagens (aMsg), sendo:
    1. aMsg[1]: Tipo da mensagem;
    2. aMsg[2]: Código do campo ou validação que gerou o erro;
    3. aMsg[3]: Mensagem detalhada do erro;
Se for "ACABEC":
  • PARAMIXB[2]: ponteiro para a estrutura vetor do cabeçalho (aCabec)
Se for "AITEM":
  • PARAMIXB[2]: ponteiro para a estrutura vetor dos itens (aItem)
Se for "AFORMA":
  • PARAMIXB[2]: ponteiro para a estrutura vetor das formas de pagamento (aForma)
Se for "APOSVENDA":
  • PARAMIXB[2]: número da Venda/Orçamento (L1_NUM/LQ_NUM)
Retorno Nil
Exemplo
ADVPL PES011A7

User Function PES011A7()

Local cOrigem := Upper( PARAMIXB[1] )
Local INVenda := nil
Local aCabec := nil
Local aItem := nil
Local aForma := nil
Local aMsg := nil

Do Case
Case cOrigem == "VLDANTES"
   INVenda := PARAMIXB[2]
   aMsg     := PARAMIXB[3]

   // Executa regras de validação e retorna mensagem em caso de erro
   // Exemplo:
   // If INVenda:LQ_NUM == "999999"
   //    aAdd(aMsg,{"P","Vendedor","Vendedor inválido: 999999 "})
   // Endif

Case cOrigem == "ACABEC"
   aCabec   := PARAMIXB[2]

   // Adiciona campos específicos do cliente no cabeçalho do pedido
   // Exemplo:
   // aAdd(aCabec, {"LQ_X_CAMPO", "TESTE CABEC" ,NIL} )

Case cOrigem == "AITEM"
   aItem    := PARAMIXB[2]

   // Adiciona campos específicos do cliente no Item da Venda
   // Exemplo:
   // aAdd(aItem, {"LQ_X_CAMPO", "TESTE ITEM"   ,NIL} )

Case cOrigem == "APOSVENDA"
   cNumVen  := PARAMIXB[2]

   // Complemento após inclusão da Venda
   // Exemplo:
   // dbSelectArea("SL1")
   // RecLock("SL1",.F.)
   // L1_X_CPO01 := "ABC"
   // msUnlock()

EndCase

Return
06. Pontos de entradas padrões

2. Pontos de entradas padrões

Não se aplica.

07. Campos (SX3)

7. Campos (SX3)

Campo B1_X_SIM3G

SB1 - CADASTRO DE PRODUTOS

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto Real Propriedade Alterar Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G.

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador "S"
Ini. Browse -
Campo BM_X_SIM3G

SB1 - CADASTRO DE PRODUTOS

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto Real Propriedade Alterar Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G.

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador -
Ini. Browse "S"
Campo A1_X_SIM3G

SA1 - CADASTRO DE CLIENTES

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato -
Contexto Real Propriedade Alterar Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G.

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador -
Ini. Browse -
Campo A3_X_SIM3G

SA3 - CADASTRO DE VENDEDORES

Tipo c Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto R Propriedade A Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G.

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador "S"
Ini. Browse -
Campo E4_X_SIM3G

SE4 - CONDIÇÕES DE PAGAMENTO

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto R Propriedade A Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador "S"
Ini. Browse -
Campo DA0_X_SIM3

DA0 - TABELA DE PREÇOS

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto Real Propriedade Alterar Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador "S"
Ini. Browse -
Campo DA1_X_SIM3

DA1 - ITEM TABELA DE PREÇOS

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto Real Propriedade Alterar Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador "S"
Ini. Browse -
Campo NNR_X_SIM3

NNR – LOCAIS/ARMAZÉNS DE ESTOQUE

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto Real Propriedade Alterar Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador "S"
Ini. Browse -
Campo A4_X_SIM3G

SA4 - CADASTRO DE TRANSPORTADORA

Tipo C Ordem [última] Tamanho 1 Decimal 0 Formato @!
Contexto Real Propriedade Alterar Obrigatório N Browse N
Título Integ. SIM3G?
Descrição Integração com SIM3G?

Help

Define se o cadastro será disponibilizado na integração com SIM3G

Configurações adicionais

F3 -
Modo Edição -
Val. Usuário -
Lista Opções S=Sim;N=Não;
Inicializador "S"
Ini. Browse -
Campo C5_X_PVSIM

SC5 - PEDIDOS DE VENDA

Tipo C Ordem [última] Tamanho 6 Decimal 0 Formato @!
Contexto Real Propriedade Visualizar Obrigatório N Browse N
Título Ped. SIM3G
Descrição Numero do Pedido no SIM3G

Help

ID do pedido de venda importado do SIM3G

Configurações adicionais

F3 -
Modo Edição .F.
Val. Usuário -
Lista Opções -
Inicializador -
Ini. Browse -
Campo C5_X_PVSIM

SC5 - PEDIDOS DE VENDA

Tipo C Ordem [última] Tamanho 6 Decimal 0 Formato @!
Contexto Real Propriedade Visualizar Obrigatório N Browse N
Título Ped. SIM3G
Descrição Numero do Pedido no SIM3G

Help

ID do pedido de venda importado do SIM3G

Configurações adicionais

F3 -
Modo Edição .F.
Val. Usuário -
Lista Opções -
Inicializador -
Ini. Browse -
Campo L1_X_PVSIM

SL1 – VENDA ASSISTIDA

Tipo C Ordem [última] Tamanho 6 Decimal 0 Formato @!
Contexto Real Propriedade Visualizar Obrigatório N Browse N
Título Ped. SIM3G
Descrição Numero do Pedido no SIM3G

Help

ID do pedido de venda importado do SIM3G.

Configurações adicionais

F3 -
Modo Edição .F.
Val. Usuário -
Lista Opções -
Inicializador -
Ini. Browse -
Campo LQ_X_PVSIM

SLQ – VENDA ASSISTIDA

Tipo C Ordem [última] Tamanho 6 Decimal 0 Formato @!
Contexto Real Propriedade Visualizar Obrigatório N Browse N
Título Ped. SIM3G
Descrição Numero do Pedido no SIM3G

Help

ID do pedido de venda importado do SIM3G.

Configurações adicionais

F3 -
Modo Edição .F.
Val. Usuário -
Lista Opções -
Inicializador -
Ini. Browse -
Campo ADA_X_NSIM

ADA - CONTRATOS DE PARCERIA

Tipo N Ordem [última] Tamanho 6 Decimal 0 Formato @!
Contexto Real Propriedade Visualizar Obrigatório N Browse N
Título Num. SIM3G
Descrição Numero do Contrato no SIM3G

Help

ID do contrato importado do SIM3G.

Configurações adicionais

F3 -
Modo Edição .F.
Val. Usuário -
Lista Opções -
Inicializador -
Ini. Browse -
08. Parâmetros (SX6)

8. Parâmetros (SX6)

Não se aplica.

09. Gatilhos (SX7)

9. Gatilhos (SX7)

Não se aplica.

10. Índices (SIX)

10. Índices (SIX)

Indice Ordem Chave Descrição NickName
SC5 [próxima disponível] C5_FILIAL+C5_X_PVSIM Ped. SIM3G SC5PVSIM3G
ADA [próxima disponível] ADA_FILIAL+ADA_X_NSIM Num. SIM3G ADANRSIM3G
SL1 [próxima disponível] L1_FILIAL+L1_X_PVSIM Ped. SIM3G SL1PVSIM3G
SLQ [próxima disponível] LQ_FILIAL+LQ_X_PVSIM Ped. SIM3G SL1PVSIM3G
11. Consulta Padrão (SXB)

11. Consulta Padrão (SXB)

Não se aplica.

12. Manual de operação

12. Manual de operação

1. Aplicação patch

Aplicar as especificações de dicionário descritas no manual e aplicar o patch no Webservice de processaento do TOTVS CRM